Choreonoid  1.5
PoseSeqViewBase.h
Go to the documentation of this file.
1 
5 #ifndef CNOID_POSE_SEQ_PLUGIN_POSE_SEQ_VIEW_BASE_H
6 #define CNOID_POSE_SEQ_PLUGIN_POSE_SEQ_VIEW_BASE_H
7 
8 #include "PoseSeqItem.h"
9 #include <cnoid/ItemList>
10 #include <cnoid/View>
11 #include <cnoid/ConnectionSet>
12 #include <cnoid/TimeBar>
13 #include <cnoid/Archive>
14 #include <cnoid/MenuManager>
15 #include <cnoid/Link>
16 #include <cnoid/Buttons>
17 #include <cnoid/CheckBox>
18 #include <cnoid/ButtonGroup>
19 #include <cnoid/SpinBox>
20 #include <cnoid/BodyItem>
21 #include <cnoid/LinkTreeWidget>
22 #include <QBoxLayout>
23 #include <QLabel>
24 #include <boost/function.hpp>
25 #include <boost/dynamic_bitset.hpp>
26 #include <ostream>
27 #include <set>
28 
29 
30 namespace cnoid {
31 
32 class PoseSelectionDialog;
33 class LinkPositionAdjustmentDialog;
34 class YawOrientationRotationDialog;
35 
37 {
38 public:
41 
43  std::ostream& os;
44 
46 
52  double currentTime;
53  double timeScale;
54 
56 
58  bool operator()(const PoseSeq::iterator it1, const PoseSeq::iterator it2) const {
59  return it1->time() < it2->time();
60  }
61  };
62  typedef std::multiset<PoseSeq::iterator, PoseIterTimeComp> PoseIterSet;
63  PoseIterSet selectedPoseIters;
64 
66 
70 
72 
75 
82  boost::dynamic_bitset<> possibleIkLinkFlag;
84 
86 
89 
96 
98  {
100  : validChildExists(false), allChildrenAreValid(true),
101  childWithStationaryPointExists(false), allChildrenAreStationaryPoints(true) { }
106  };
107 
110 
111  PoseSelectionDialog* poseSelectionDialog;
112  LinkPositionAdjustmentDialog* linkPositionAdjustmentDialog;
113  YawOrientationRotationDialog* yawOrientationRotationDialog;
114 
118  PoseIterSet::iterator findPoseIterInSelected(PoseSeq::iterator poseIter);
119  bool toggleSelection(PoseSeq::iterator poseIter, bool adding, bool changeTime);
120  void selectAllPoses();
127  void updateLinkTreeModel();
128  bool deleteSelectedPoses();
129  bool cutSelectedPoses();
130  bool copySelectedPoses();
131  bool pasteCopiedPoses(double timeToPaste);
132  bool moveSelectedPoses(double time0);
133  bool modifyTransitionTimeOfSelectedPoses(double ttime);
134  void popupContextMenu(QMouseEvent* event);
135 
144  void onFlipPosesActivated();
145  void countSelectedKeyPoses();
146  double quantizedTime(double time);
147 
148  virtual void onLinkTreeUpdateRequest(bool isInitialCreation);
149  virtual void setCurrentPoseSeqItem(PoseSeqItemPtr poseSeqItem);
150  virtual void onTimeScaleChanged();
151  virtual void onSelectedPosesModified();
152  virtual void onDeleteButtonClicked();
153  virtual void onPoseInserted(PoseSeq::iterator it, bool isMoving);
154  virtual void onPoseRemoving(PoseSeq::iterator it, bool isMoving);
155  virtual void onPoseModified(PoseSeq::iterator it);
156  virtual bool onTimeChanged(double time) = 0;
157  virtual void onInsertPoseButtonClicked() = 0;
158  virtual bool restoreState(const Archive& archive);
159  virtual bool storeState(Archive& archive);
160 
161  void onViewActivated();
162  void onViewDeactivated();
163  void onTimeSyncCheckToggled();
164  void setupOperationParts();
165  void setupLinkTreeWidget();
166  bool isChecked(LinkTreeItem* item, int column);
167  void setChecked(LinkTreeItem* item, int column, bool checked);
168  void setCheckState(LinkTreeItem* item, int column, Qt::CheckState state);
169  void initializeLinkTree();
171  void initializeLinkTreeTraverse(QTreeWidgetItem* parentItem);
172 
173  void togglePoseAttribute(boost::function<bool(PosePtr& pose)> toggleFunction);
174  void onBaseLinkRadioClicked();
175  bool setBaseLink(PosePtr& pose, Link* link);
176  void onValidPartCheckClicked(LinkTreeItem* item, Qt::CheckState checkState);
177  bool toggleZmp(PosePtr& pose, bool on);
178  bool toggleLink(PosePtr& pose, LinkTreeItem* item, Link* link, bool partOn, bool ikOn);
179  bool togglePart(PosePtr& pose, LinkTreeItem* item, bool on);
180  void onStationaryPointCheckClicked(LinkTreeItem* linkTreeItem, Qt::CheckState checkState);
181  bool toggleZmpStationaryPoint(PosePtr& pose, bool on);
182  bool toggleStationaryPoint(PosePtr& pose, Link* link, bool on);
183  bool togglePartStationaryPoints(PosePtr& pose, LinkTreeItem* item, bool on);
184  void onIkPartCheckClicked(LinkTreeItem* item, Qt::CheckState checkState);
185 
187  void onItemSelectionChanged(const ItemList<PoseSeqItem>& selectedItems);
188 
189  void setCurrentItemName(ItemPtr item);
191  void onUpdateButtonClicked();
192  void setCurrentBodyStateToSelectedPoses(bool onlySelected);
193  bool setCurrentBodyStateToPose(PosePtr& pose, bool onlySelected);
194  bool setCurrentLinkStateToIkLink(Link* link, Pose::LinkInfo* linkInfo);
195  ChildrenState updateLinkTreeModelSub(LinkTreeItem* item, const BodyPtr& body, const Pose& pose);
196 
197 private:
198  void restoreCurrentPoseSeqItem(const Archive& archive);
199 };
200 
201 }
202 
203 #endif
bool pasteCopiedPoses(double timeToPaste)
Definition: PoseSeqViewBase.cpp:1154
Menu popupMenu
Definition: PoseSeqViewBase.h:108
void onLinkPositionAdjustmentDialogAccepted()
Definition: PoseSeqViewBase.cpp:1343
std::multiset< PoseSeq::iterator, PoseIterTimeComp > PoseIterSet
Definition: PoseSeqViewBase.h:62
ToggleToolButton updateAllToggle
Definition: PoseSeqViewBase.h:92
Definition: PoseSeqViewBase.h:97
bool deleteSelectedPoses()
Definition: PoseSeqViewBase.cpp:1113
bool toggleSelection(PoseSeq::iterator poseIter, bool adding, bool changeTime)
Definition: PoseSeqViewBase.cpp:922
void onPoseSelectionDialogAccepted()
Definition: PoseSeqViewBase.cpp:1230
bool operator()(const PoseSeq::iterator it1, const PoseSeq::iterator it2) const
Definition: PoseSeqViewBase.h:58
void onIkPartCheckClicked(LinkTreeItem *item, Qt::CheckState checkState)
Definition: PoseSeqViewBase.cpp:819
std::ostream & os
Definition: PoseSeqViewBase.h:43
bool allChildrenAreStationaryPoints
Definition: PoseSeqViewBase.h:105
void onFlipPosesActivated()
Definition: PoseSeqViewBase.cpp:1408
void setupOperationParts()
Definition: PoseSeqViewBase.cpp:355
void onBaseLinkRadioClicked()
Definition: PoseSeqViewBase.cpp:602
bool isSelectedPoseMoving
Definition: PoseSeqViewBase.h:49
CheckBox timeSyncCheck
Definition: PoseSeqViewBase.h:88
QLabel currentItemLabel
Definition: PoseSeqViewBase.h:87
TimeBar * timeBar
Definition: PoseSeqViewBase.h:73
virtual void onTimeScaleChanged()
Definition: PoseSeqViewBase.cpp:840
Definition: ItemList.h:14
Definition: Archive.h:21
bool validChildExists
Definition: PoseSeqViewBase.h:102
bool modifyTransitionTimeOfSelectedPoses(double ttime)
Definition: PoseSeqViewBase.cpp:1201
void setCheckState(LinkTreeItem *item, int column, Qt::CheckState state)
Definition: PoseSeqViewBase.cpp:458
virtual bool onTimeChanged(double time)=0
void setCurrentBodyStateToSelectedPoses(bool onlySelected)
Definition: PoseSeqViewBase.cpp:1563
void onInterpolationParametersChanged()
Definition: PoseSeqViewBase.cpp:830
void selectAllPosesBeforeCurrentPosition()
Definition: PoseSeqViewBase.cpp:986
void onBodyKinematicStateEdited()
Definition: PoseSeqViewBase.cpp:1450
bool setBaseLink(PosePtr &pose, Link *link)
Definition: PoseSeqViewBase.cpp:614
void onViewActivated()
Definition: PoseSeqViewBase.cpp:318
Definition: ConnectionSet.h:22
virtual bool storeState(Archive &archive)
Definition: PoseSeqViewBase.cpp:1888
void selectAllPosesAfterCurrentPosition()
Definition: PoseSeqViewBase.cpp:974
virtual void onInsertPoseButtonClicked()=0
void onTimeSyncCheckToggled()
Definition: PoseSeqViewBase.cpp:342
Definition: PoseSeqViewBase.h:57
virtual void onPoseInserted(PoseSeq::iterator it, bool isMoving)
Definition: PoseSeqViewBase.cpp:1695
PoseSeqViewBase(View *view)
Definition: PoseSeqViewBase.cpp:256
Connection connectionOfBodyKinematicStateEdited
Definition: PoseSeqViewBase.h:69
bool togglePart(PosePtr &pose, LinkTreeItem *item, bool on)
Definition: PoseSeqViewBase.cpp:716
bool togglePartStationaryPoints(PosePtr &pose, LinkTreeItem *item, bool on)
Definition: PoseSeqViewBase.cpp:800
Definition: TimeBar.h:16
View * view
Definition: PoseSeqViewBase.h:42
Definition: Buttons.h:73
ButtonGroup * baseLinkRadioGroup
Definition: PoseSeqViewBase.h:78
std::list< PoseRef >::iterator iterator
Definition: PoseSeq.h:81
void setCurrentItemName(ItemPtr item)
Definition: PoseSeqViewBase.cpp:1437
LinkPositionAdjustmentDialog * linkPositionAdjustmentDialog
Definition: PoseSeqViewBase.h:112
bool toggleZmpStationaryPoint(PosePtr &pose, bool on)
Definition: PoseSeqViewBase.cpp:764
Definition: Pose.h:64
int validPartColumn
Definition: PoseSeqViewBase.h:79
DoubleSpinBox transitionTimeSpin
Definition: PoseSeqViewBase.h:95
Definition: PoseSeqViewBase.h:36
virtual void onSelectedPosesModified()
Definition: PoseSeqViewBase.cpp:1425
bool setCurrentBodyStateToPose(PosePtr &pose, bool onlySelected)
Definition: PoseSeqViewBase.cpp:1602
QString textForEmptyName
Definition: PoseSeqViewBase.h:45
PoseSeq::iterator insertPoseUnit(PoseUnitPtr poseUnit)
Definition: PoseSeqViewBase.cpp:1536
bool copySelectedPoses()
Definition: PoseSeqViewBase.cpp:1138
Definition: LinkTreeWidget.h:54
void countSelectedKeyPoses()
Definition: PoseSeqViewBase.cpp:1418
double currentTime
Definition: PoseSeqViewBase.h:52
int ikPartColumn
Definition: PoseSeqViewBase.h:81
Definition: LinkTreeWidget.h:23
MenuManager menuManager
Definition: PoseSeqViewBase.h:109
Definition: ButtonGroup.h:14
BodyPtr body
Definition: PoseSeqViewBase.h:51
PoseSeq::iterator insertPronunSymbol()
Definition: PoseSeqViewBase.cpp:1529
void removeSelectedPartsFromKeyPoses()
Definition: PoseSeqViewBase.cpp:1065
ToolButton insertPoseButton
Definition: PoseSeqViewBase.h:90
void onYawOrientationRotationDialogAccepted()
Definition: PoseSeqViewBase.cpp:1306
Definition: SpinBox.h:38
bool allChildrenAreValid
Definition: PoseSeqViewBase.h:103
double quantizedTime(double time)
Definition: PoseSeqViewBase.cpp:1549
ChildrenState()
Definition: PoseSeqViewBase.h:99
int baseLinkColumn
Definition: PoseSeqViewBase.h:77
Connection connectionOfTimeChanged
Definition: PoseSeqViewBase.h:74
void selectPosesHavingSelectedLinks()
Definition: PoseSeqViewBase.cpp:1003
Definition: MenuManager.h:23
void selectPosesJustHavingSelectedLinks()
Definition: PoseSeqViewBase.cpp:1035
Definition: CheckBox.h:14
virtual void setCurrentPoseSeqItem(PoseSeqItemPtr poseSeqItem)
Definition: PoseSeqViewBase.cpp:855
void onAdjustWaistPositionActivated()
Definition: PoseSeqViewBase.cpp:1337
Defines the minimum processing for performing pasing file for STL.
Definition: AbstractSceneLoader.h:9
PoseSeqPtr copiedPoses
Definition: PoseSeqViewBase.h:65
bool cutSelectedPoses()
Definition: PoseSeqViewBase.cpp:1129
void selectAllPoses()
Definition: PoseSeqViewBase.cpp:963
virtual void onLinkTreeUpdateRequest(bool isInitialCreation)
Definition: PoseSeqViewBase.cpp:467
Definition: Signal.h:107
void updateLinkTreeModel()
Definition: PoseSeqViewBase.cpp:1747
bool setCurrentLinkStateToIkLink(Link *link, Pose::LinkInfo *linkInfo)
Definition: PoseSeqViewBase.cpp:1646
bool toggleZmp(PosePtr &pose, bool on)
Definition: PoseSeqViewBase.cpp:654
bool childWithStationaryPointExists
Definition: PoseSeqViewBase.h:104
void onRotateYawOrientationsActivated()
Definition: PoseSeqViewBase.cpp:1300
bool toggleStationaryPoint(PosePtr &pose, Link *link, bool on)
Definition: PoseSeqViewBase.cpp:782
ChildrenState updateLinkTreeModelSub(LinkTreeItem *item, const BodyPtr &body, const Pose &pose)
Definition: PoseSeqViewBase.cpp:1780
void initializeLinkTreeTraverse(QTreeWidgetItem *parentItem)
Definition: PoseSeqViewBase.cpp:535
virtual void onDeleteButtonClicked()
Definition: PoseSeqViewBase.cpp:1689
~PoseSeqViewBase()
Definition: PoseSeqViewBase.cpp:310
boost::dynamic_bitset possibleIkLinkFlag
Definition: PoseSeqViewBase.h:82
LinkTreeWidget * linkTreeWidget
Definition: PoseSeqViewBase.h:76
virtual void onPoseRemoving(PoseSeq::iterator it, bool isMoving)
Definition: PoseSeqViewBase.cpp:1705
void initializeLinkTreeIkLinkColumn()
Definition: PoseSeqViewBase.cpp:501
PosePtr poseForDefaultStateSetting
Definition: PoseSeqViewBase.h:85
void onItemSelectionChanged(const ItemList< PoseSeqItem > &selectedItems)
Definition: PoseSeqViewBase.cpp:846
virtual bool restoreState(const Archive &archive)
Definition: PoseSeqViewBase.cpp:1902
PoseIterSet::iterator findPoseIterInSelected(PoseSeq::iterator poseIter)
Definition: PoseSeqViewBase.cpp:910
ToolButton updateButton
Definition: PoseSeqViewBase.h:91
void onStationaryPointCheckClicked(LinkTreeItem *linkTreeItem, Qt::CheckState checkState)
Definition: PoseSeqViewBase.cpp:745
bool isChecked(LinkTreeItem *item, int column)
Definition: PoseSeqViewBase.cpp:442
void setupLinkTreeWidget()
Definition: PoseSeqViewBase.cpp:401
PoseIterSet selectedPoseIters
Definition: PoseSeqViewBase.h:63
Definition: View.h:28
PoseSeq::iterator insertPose()
Definition: PoseSeqViewBase.cpp:1475
ConnectionSet poseSeqConnections
Definition: PoseSeqViewBase.h:68
PoseSeqPtr seq
Definition: PoseSeqViewBase.h:48
Definition: Menu.h:14
PoseSeq::iterator currentPoseIter
Definition: PoseSeqViewBase.h:55
ToolButton deleteButton
Definition: PoseSeqViewBase.h:93
void popupContextMenu(QMouseEvent *event)
Definition: PoseSeqViewBase.cpp:1218
ConnectionSet staticConnections
Definition: PoseSeqViewBase.h:67
virtual void onPoseModified(PoseSeq::iterator it)
Definition: PoseSeqViewBase.cpp:1734
void onUpdateKeyposesWithBalancedTrajectoriesActivated()
Definition: PoseSeqViewBase.cpp:1390
void onAdjustStepPositionsActivated()
Definition: PoseSeqViewBase.cpp:1276
Definition: Buttons.h:99
Definition: Pose.h:53
void initializeLinkTree()
Definition: PoseSeqViewBase.cpp:480
PoseSeqItemPtr currentPoseSeqItem
Definition: PoseSeqViewBase.h:47
void doAutomaticInterpolationUpdate()
Definition: PoseSeqViewBase.cpp:1876
void togglePoseAttribute(boost::function< bool(PosePtr &pose)> toggleFunction)
Definition: PoseSeqViewBase.cpp:572
void onSelectSpecifiedKeyPosesActivated()
Definition: PoseSeqViewBase.cpp:1224
BodyItemPtr currentBodyItem
Definition: PoseSeqViewBase.h:50
double timeScale
Definition: PoseSeqViewBase.h:53
void onValidPartCheckClicked(LinkTreeItem *item, Qt::CheckState checkState)
Definition: PoseSeqViewBase.cpp:636
void onUpdateButtonClicked()
Definition: PoseSeqViewBase.cpp:1557
LinkTreeItem * zmpRow
Definition: PoseSeqViewBase.h:83
int stationaryPointColumn
Definition: PoseSeqViewBase.h:80
void onViewDeactivated()
Definition: PoseSeqViewBase.cpp:333
YawOrientationRotationDialog * yawOrientationRotationDialog
Definition: PoseSeqViewBase.h:113
void setChecked(LinkTreeItem *item, int column, bool checked)
Definition: PoseSeqViewBase.cpp:449
PoseSelectionDialog * poseSelectionDialog
Definition: PoseSeqViewBase.h:111
CheckBox autoUpdateModeCheck
Definition: PoseSeqViewBase.h:94
ConnectionSet linkTreeAttributeChangeConnections
Definition: PoseSeqViewBase.h:71
bool toggleLink(PosePtr &pose, LinkTreeItem *item, Link *link, bool partOn, bool ikOn)
Definition: PoseSeqViewBase.cpp:674
bool moveSelectedPoses(double time0)
Definition: PoseSeqViewBase.cpp:1174