Choreonoid  1.1
MultiValueSeqGraphView.h
[詳解]
1 
5 #ifndef CNOID_BODYPLUGIN_MULTI_VALUE_SEQ_GRAPH_VIEW_H_INCLUDED
6 #define CNOID_BODYPLUGIN_MULTI_VALUE_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 <boost/signals.hpp>
14 #include <cnoid/Link>
15 #include <cnoid/MultiValueSeqItem>
16 #include <cnoid/View>
17 #include <cnoid/GraphWidget>
18 #include <cnoid/ItemList>
19 #include <cnoid/ConnectionSet>
20 
21 namespace cnoid {
22 
23  class Archive;
24 
29  class MultiValueSeqGraphView : public View, public boost::signals::trackable
30  {
31  public:
32 
35 
36  virtual bool storeState(Archive& archive);
37  virtual bool restoreState(const Archive& archive);
38 
39  protected:
40 
41  virtual QWidget* indicatorOnInfoBar();
42 
43  private:
44 
45  GraphWidget graph;
46  LinkSelectionView* linkSelection;
47 
48  struct ItemInfo
49  {
50  ~ItemInfo(){
51  connections.disconnect();
52  }
53  MultiValueSeqItemPtr item;
54  MultiValueSeqPtr seq;
55  BodyItemPtr bodyItem;
56  ConnectionSet connections;
57  std::vector<GraphDataHandlerPtr> handlers;
58  };
59 
60  std::list<ItemInfo> itemInfos;
61 
62  std::set<BodyItemPtr> bodyItems;
63  ConnectionSet bodyItemConnections;
64 
65  void onItemSelectionChanged(const ItemList<MultiValueSeqItem>& dataItems);
66  void onDataItemDetachedFromRoot(std::list<ItemInfo>::iterator itemInfoIter);
67  void updateBodyItems();
68  void onBodyItemDetachedFromRoot(BodyItemPtr bodyItem);
69  void setupGraphWidget();
70  void addJointTrajectory(std::list<ItemInfo>::iterator itemInfoIter, Link* joint, MultiValueSeqPtr seq);
71  void onDataItemUpdated(std::list<ItemInfo>::iterator itemInfoIter);
72  void onDataRequest(std::list<ItemInfo>::iterator itemInfoIter, int jointId, int frame, int size, double* out_values);
73  void onDataModified(std::list<ItemInfo>::iterator itemInfoIter, int jointId, int frame, int size, double* values);
74 
75  };
76 }
77 
78 #endif
MultiValueSeq::Ptr MultiValueSeqPtr
Definition: MultiValueSeq.h:33
Definition: LinkSelectionView.h:18
virtual bool storeState(Archive &archive)
Definition: MultiValueSeqGraphView.cpp:237
MultiValueSeqGraphView()
Definition: MultiValueSeqGraphView.cpp:24
~MultiValueSeqGraphView()
Definition: MultiValueSeqGraphView.cpp:42
virtual QWidget * indicatorOnInfoBar()
Definition: MultiValueSeqGraphView.cpp:48
Definition: EasyScanner.h:16
boost::intrusive_ptr< BodyItem > BodyItemPtr
Definition: BodyItem.h:25
Definition: MultiValueSeqGraphView.h:29
virtual bool restoreState(const Archive &archive)
Definition: MultiValueSeqGraphView.cpp:243