Choreonoid  1.1
MultiAffine3SeqGraphView.h
[詳解]
1 
5 #ifndef CNOID_BODYPLUGIN_MULTI_AFFINE_SEQ_GRAPH_VIEW_H_INCLUDED
6 #define CNOID_BODYPLUGIN_MULTI_AFFINE_SEQ_GRAPH_VIEW_H_INCLUDED
7 
8 #include "BodyItem.h"
9 #include "LinkSelectionView.h"
10 #include <set>
11 #include <list>
12 #include <vector>
13 #include <QBoxLayout>
14 #include <boost/signals.hpp>
15 #include <cnoid/Button>
16 #include <cnoid/MultiAffine3SeqItem>
17 #include <cnoid/Link>
18 #include <cnoid/View>
19 #include <cnoid/GraphWidget>
20 #include <cnoid/ItemList>
21 #include <cnoid/ConnectionSet>
22 
23 namespace cnoid {
24 
25  class Archive;
26 
31  class MultiAffine3SeqGraphView : public View, public boost::signals::trackable
32  {
33  public:
34 
37 
38  virtual bool storeState(Archive& archive);
39  virtual bool restoreState(const Archive& archive);
40 
41  protected:
42 
43  virtual QWidget* indicatorOnInfoBar();
44 
45  private:
46 
47  GraphWidget graph;
48  LinkSelectionView* linkSelection;
49 
50  ToggleToolButton xyzToggles[3];
51  ToggleToolButton rpyToggles[3];
52 
53  ConnectionSet toggleConnections;
54 
55  struct ItemInfo
56  {
57  ~ItemInfo(){
58  connections.disconnect();
59  }
60  MultiAffine3SeqItemPtr item;
62  BodyItemPtr bodyItem;
63  ConnectionSet connections;
64  std::vector<GraphDataHandlerPtr> handlers;
65  };
66 
67  std::list<ItemInfo> itemInfos;
68 
69  std::set<BodyItemPtr> bodyItems;
70  ConnectionSet bodyItemConnections;
71 
72  void setupElementToggleSet(QBoxLayout* box, ToggleToolButton toggles[], const char* labels[], bool isActive);
73  void onItemSelectionChanged(const ItemList<MultiAffine3SeqItem>& dataItems);
74  void onDataItemDetachedFromRoot(std::list<ItemInfo>::iterator itemInfoIter);
75  void updateBodyItems();
76  void onBodyItemDetachedFromRoot(BodyItemPtr bodyItem);
77  void setupGraphWidget();
78  void addPositionTrajectory(std::list<ItemInfo>::iterator itemInfoIter, Link* link, MultiAffine3SeqPtr seq);
79  void onDataItemUpdated(std::list<ItemInfo>::iterator itemInfoIter);
80 
81  void onDataRequest(
82  std::list<ItemInfo>::iterator itemInfoIter,
83  int linkIndex, int type, int axis, int frame, int size, double* out_values);
84  void onDataModified(
85  std::list<ItemInfo>::iterator itemInfoIter,
86  int linkIndex, int type, int axis, int frame, int size, double* values);
87 
88  };
89 }
90 
91 #endif
~MultiAffine3SeqGraphView()
Definition: MultiAffine3SeqGraphView.cpp:70
Definition: LinkSelectionView.h:18
MultiAffine3SeqGraphView()
Definition: MultiAffine3SeqGraphView.cpp:24
virtual bool storeState(Archive &archive)
Definition: MultiAffine3SeqGraphView.cpp:292
Definition: EasyScanner.h:16
MultiAffine3Seq::Ptr MultiAffine3SeqPtr
Definition: MultiAffine3Seq.h:40
Definition: MultiAffine3SeqGraphView.h:31
boost::intrusive_ptr< BodyItem > BodyItemPtr
Definition: BodyItem.h:25
virtual QWidget * indicatorOnInfoBar()
Definition: MultiAffine3SeqGraphView.cpp:76
virtual bool restoreState(const Archive &archive)
Definition: MultiAffine3SeqGraphView.cpp:312