Choreonoid  1.1
BodyBar.h
[詳解]
1 
5 #ifndef CNOID_BODYPLUGIN_BODY_BAR_H_INCLUDED
6 #define CNOID_BODYPLUGIN_BODY_BAR_H_INCLUDED
7 
8 #include "BodyItem.h"
9 #include <cnoid/ToolBar>
10 #include <cnoid/SignalProxy>
11 #include <cnoid/SpinBox>
12 #include "exportdecl.h"
13 
14 namespace cnoid {
15 
16  class MessageView;
17 
18  class CNOID_EXPORT BodyBar : public ToolBar, public boost::signals::trackable
19  {
20  public:
21 
22  static BodyBar* instance();
23 
24  virtual ~BodyBar();
25 
26  boost::signal<void(const ItemList<BodyItem>& selectedBodyItems)>& sigBodyItemSelectionChanged() {
27  return sigBodyItemSelectionChanged_;
28  }
29 
30  SignalProxy< boost::signal<void(BodyItem* currentBodyItem)> > sigCurrentBodyItemChanged() {
31  return sigCurrentBodyItemChanged_;
32  }
33 
34  inline const ItemList<BodyItem>& selectedBodyItems() {
35  return selectedBodyItems_;
36  }
37 
39  return currentBodyItem_.get();
40  }
41 
42  bool makeSingleSelection(BodyItemPtr bodyItem);
43 
44  protected:
45 
46  virtual bool storeState(Archive& archive);
47  virtual bool restoreState(const Archive& archive);
48 
49  private:
50 
51  BodyBar();
52 
53  MessageView& mes;
54 
55  BodyItemPtr currentBodyItem_;
56  ItemList<BodyItem> selectedBodyItems_;
57  ItemList<BodyItem> targetBodyItems;
58 
59  DoubleSpinBox* stanceWidthSpin;
60 
61  boost::signals::connection connectionOfCurrentBodyItemDetachedFromRoot;
62 
63  boost::signal<void(const ItemList<BodyItem>& selectedBodyItems)> sigBodyItemSelectionChanged_;
64  boost::signal<void(BodyItem* currentBodyItem)> sigCurrentBodyItemChanged_;
65 
66  void onItemSelectionChanged(const ItemList<BodyItem>& bodyItems);
67  void onBodyItemDetachedFromRoot();
68  void onCopyButtonClicked();
69  void onPasteButtonClicked();
70  void onOriginButtonClicked();
71  void onPoseButtonClicked(BodyItem::PresetPoseID id);
72  void onSymmetricCopyButtonClicked(int direction, bool doMirrorCopy);
73  void moveCM(BodyItem::PositionType position);
74  void setZmp(BodyItem::PositionType position);
75  void setStance();
76  };
77 }
78 
79 #endif
BodyItem * currentBodyItem()
Definition: BodyBar.h:38
boost::signal< void(const ItemList< BodyItem > &selectedBodyItems)> & sigBodyItemSelectionChanged()
Definition: BodyBar.h:26
Definition: BodyBar.h:18
const ItemList< BodyItem > & selectedBodyItems()
Definition: BodyBar.h:34
SignalProxy< boost::signal< void(BodyItem *currentBodyItem)> > sigCurrentBodyItemChanged()
Definition: BodyBar.h:30
PresetPoseID
Definition: BodyItem.h:59
boost::intrusive_ptr< BodyItem > BodyItemPtr
Definition: BodyItem.h:25
#define CNOID_EXPORT
Definition: Util/exportdecl.h:13
Definition: BodyItem.h:41
PositionType
Definition: BodyItem.h:174