5 #ifndef CNOID_BODYPLUGIN_LINK_TREE_WIDGET_H_INCLUDED
6 #define CNOID_BODYPLUGIN_LINK_TREE_WIDGET_H_INCLUDED
9 #include <cnoid/SignalProxy>
10 #include <cnoid/ComboBox>
11 #include <cnoid/TreeWidget>
12 #include <boost/dynamic_bitset.hpp>
21 class LinkTreeWidgetImpl;
28 inline int rowIndex()
const {
return rowIndex_; }
30 inline const std::string&
name()
const {
return name_; }
31 inline const Link*
link()
const {
return link_; }
35 virtual QVariant data(
int column,
int role)
const;
36 virtual void setData(
int column,
int role,
const QVariant& value);
48 friend class LinkTreeWidgetImpl;
61 void setDefaultExpansionLevel(
int level);
62 void enableCache(
bool on);
65 LINK_LIST, LINK_TREE, JOINT_LIST, JOINT_TREE, PART_TREE };
67 ComboBox* listingModeCombo();
68 void setListingMode(ListingMode mode);
69 void fixListingMode(
bool on =
true);
71 SignalProxy< boost::signal<void(bool isInitialCreation)> > sigUpdateRequest();
76 typedef boost::function<void(const LinkTreeItem* item, int role, QVariant& out_value)>
ColumnDataFunction;
81 int addColumn(
const QString& headerText);
85 void moveVisualColumnIndex(
int column,
int visualIndex);
89 void setAlignedItemWidget(
LinkTreeItem* item,
int column, QWidget* widget, Qt::Alignment alignment = Qt::AlignCenter);
90 QWidget* alignedItemWidget(
LinkTreeItem* item,
int column);
96 int numLinkTreeItems();
98 SignalProxy< boost::signal<void(LinkTreeItem* item, int column)> > sigItemChanged();
100 SignalProxy< boost::signal<void()> > sigSelectionChanged();
101 const std::vector<int>& getSelectedLinkIndices();
102 const boost::dynamic_bitset<>& getLinkSelection();
105 SignalProxy< boost::signal<void()> > sigSelectionChanged(
BodyItemPtr bodyItem);
107 const std::vector<int>& getSelectedLinkIndices(
BodyItemPtr bodyItem);
109 const boost::dynamic_bitset<>& getLinkSelection(
BodyItemPtr bodyItem);
111 MenuManager& popupMenuManager();
113 bool makeSingleSelection(
BodyItemPtr bodyItem,
int linkIndex);
115 void enableArchiveOfCurrentBodyItem(
bool on);
116 bool storeState(Archive& archive);
117 bool restoreState(
const Archive& archive);
120 virtual void changeEvent(QEvent* event);
123 void onItemChanged(QTreeWidgetItem* item,
int column);
124 void onSelectionChanged();
125 void onCustomContextMenuRequested(
const QPoint& pos);
126 void onItemExpanded(QTreeWidgetItem* treeWidgetItem);
127 void onItemCollapsed(QTreeWidgetItem* treeWidgetItem);
128 void onHeaderSectionResized();
132 LinkTreeWidgetImpl* impl;