Choreonoid  1.5
LinkGraphView.h
Go to the documentation of this file.
1 
5 #ifndef CNOID_BODYPLUGIN_LINK_GRAPH_VIEW_H
6 #define CNOID_BODYPLUGIN_LINK_GRAPH_VIEW_H
7 
8 #include "BodyItem.h"
9 #include <cnoid/Buttons>
10 #include <cnoid/MultiSE3SeqItem>
11 #include <cnoid/View>
12 #include <cnoid/GraphWidget>
13 #include <cnoid/ItemList>
14 #include <cnoid/ConnectionSet>
15 #include <QBoxLayout>
16 
17 namespace cnoid {
18 
19 class Archive;
20 class LinkSelectionView;
21 
26 class LinkGraphView : public View
27 {
28 public:
29  static void initializeClass(ExtensionManager* ext);
30 
31  LinkGraphView();
33 
34  virtual bool storeState(Archive& archive);
35  virtual bool restoreState(const Archive& archive);
36 
37 protected:
38 
39  virtual QWidget* indicatorOnInfoBar();
40 
41 private:
42 
43  GraphWidget graph;
44  LinkSelectionView* linkSelection;
45 
46  ToggleToolButton xyzToggles[3];
47  ToggleToolButton rpyToggles[3];
48 
49  ConnectionSet toggleConnections;
50  Connection itemTreeViewConnection;
51 
52  struct ItemInfo
53  {
54  ~ItemInfo(){
55  connections.disconnect();
56  }
57  MultiSE3SeqItemPtr item;
58  MultiSE3SeqPtr seq;
59  BodyItemPtr bodyItem;
60  ConnectionSet connections;
61  std::vector<GraphDataHandlerPtr> handlers;
62  };
63 
64  std::list<ItemInfo> itemInfos;
65 
66  std::set<BodyItemPtr> bodyItems;
67  ConnectionSet bodyItemConnections;
68 
69  void setupElementToggleSet(QBoxLayout* box, ToggleToolButton toggles[], const char* labels[], bool isActive);
70  void onItemSelectionChanged(const ItemList<MultiSE3SeqItem>& dataItems);
71  void onDataItemDetachedFromRoot(std::list<ItemInfo>::iterator itemInfoIter);
72  void updateBodyItems();
73  void onBodyItemDetachedFromRoot(BodyItemPtr bodyItem);
74  void setupGraphWidget();
75  void addPositionTrajectory(std::list<ItemInfo>::iterator itemInfoIter, Link* link, MultiSE3SeqPtr seq);
76  void onDataItemUpdated(std::list<ItemInfo>::iterator itemInfoIter);
77 
78  void onDataRequest(
79  std::list<ItemInfo>::iterator itemInfoIter,
80  int linkIndex, int type, int axis, int frame, int size, double* out_values);
81  void onDataModified(
82  std::list<ItemInfo>::iterator itemInfoIter,
83  int linkIndex, int type, int axis, int frame, int size, double* values);
84 
85 };
86 
87 }
88 
89 #endif
LinkGraphView()
Definition: LinkGraphView.cpp:26
Definition: ItemList.h:14
Definition: Archive.h:21
~LinkGraphView()
Definition: LinkGraphView.cpp:73
virtual bool restoreState(const Archive &archive)
Definition: LinkGraphView.cpp:309
Definition: ExtensionManager.h:26
Definition: ConnectionSet.h:22
void disconnect()
Definition: Signal.h:123
virtual QWidget * indicatorOnInfoBar()
Definition: LinkGraphView.cpp:80
Definition: LinkSelectionView.h:18
Definition: Referenced.h:128
virtual bool storeState(Archive &archive)
Definition: LinkGraphView.cpp:289
MultiSE3Seq::Ptr MultiSE3SeqPtr
Definition: MultiSE3Seq.h:50
Definition: GraphWidget.h:67
Defines the minimum processing for performing pasing file for STL.
Definition: AbstractSceneLoader.h:9
bool isActive() const
Definition: View.cpp:94
Definition: Signal.h:107
Definition: LinkGraphView.h:26
Definition: View.h:28
Definition: Buttons.h:99
static void initializeClass(ExtensionManager *ext)
Definition: LinkGraphView.cpp:19