/usr/include/choreonoid-1.1/cnoid/src/BodyPlugin/LinkTreeWidget.h is in libcnoid-dev 1.1.0+dfsg-6.1+b4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 | /**
@author Shin'ichiro Nakaoka
*/
#ifndef CNOID_BODYPLUGIN_LINK_TREE_WIDGET_H_INCLUDED
#define CNOID_BODYPLUGIN_LINK_TREE_WIDGET_H_INCLUDED
#include "BodyItem.h"
#include <cnoid/SignalProxy>
#include <cnoid/ComboBox>
#include <cnoid/TreeWidget>
#include <boost/dynamic_bitset.hpp>
#include <vector>
#include "exportdecl.h"
namespace cnoid {
class MenuManager;
class LinkGroup;
class LinkTreeWidget;
class LinkTreeWidgetImpl;
class CNOID_EXPORT LinkTreeItem : public QTreeWidgetItem
{
public:
LinkTreeItem(const std::string& name);
inline int rowIndex() const { return rowIndex_; }
inline const std::string& name() const { return name_; }
inline const Link* link() const { return link_; }
inline Link* link() { return link_; }
inline bool isLinkGroup() const { return isLinkGroup_; }
virtual QVariant data(int column, int role) const;
virtual void setData(int column, int role, const QVariant& value);
private:
int rowIndex_;
std::string name_;
Link* link_;
bool isLinkGroup_;
LinkTreeItem(Link* link, LinkTreeWidgetImpl* treeImpl);
LinkTreeItem(LinkGroup* linkGroup, LinkTreeWidgetImpl* treeImpl);
friend class LinkTreeWidget;
friend class LinkTreeWidgetImpl;
};
class CNOID_EXPORT LinkTreeWidget : public TreeWidget
{
Q_OBJECT
public:
LinkTreeWidget(QWidget* parent = 0);
virtual ~LinkTreeWidget();
void setDefaultExpansionLevel(int level);
void enableCache(bool on);
enum ListingMode {
LINK_LIST, LINK_TREE, JOINT_LIST, JOINT_TREE, PART_TREE };
ComboBox* listingModeCombo();
void setListingMode(ListingMode mode);
void fixListingMode(bool on = true);
SignalProxy< boost::signal<void(bool isInitialCreation)> > sigUpdateRequest();
void setBodyItem(BodyItemPtr bodyItem);
BodyItem* bodyItem();
typedef boost::function<void(const LinkTreeItem* item, int role, QVariant& out_value)> ColumnDataFunction;
typedef boost::function<void(const LinkTreeItem* item, int role, const QVariant& value)> ColumnSetDataFunction;
typedef boost::function<QWidget*(const LinkTreeItem* item)> ColumnWidgetFunction;
int addColumn();
int addColumn(const QString& headerText);
void setColumnDataFunction(int column, ColumnDataFunction func);
void setColumnSetDataFunction(int column, ColumnSetDataFunction func);
void setColumnWidgetFunction(int column, ColumnWidgetFunction func);
void moveVisualColumnIndex(int column, int visualIndex);
int nameColumn();
int jointIdColumn();
void setAlignedItemWidget(LinkTreeItem* item, int column, QWidget* widget, Qt::Alignment alignment = Qt::AlignCenter);
QWidget* alignedItemWidget(LinkTreeItem* item, int column);
void addCustomRow(LinkTreeItem* treeItem);
LinkTreeItem* itemOfLink(int linkIndex);
int numLinkTreeItems();
SignalProxy< boost::signal<void(LinkTreeItem* item, int column)> > sigItemChanged();
SignalProxy< boost::signal<void()> > sigSelectionChanged();
const std::vector<int>& getSelectedLinkIndices();
const boost::dynamic_bitset<>& getLinkSelection();
/// This signal is available after calling 'enableCache(true)'.
SignalProxy< boost::signal<void()> > sigSelectionChanged(BodyItemPtr bodyItem);
/// This member is available after calling 'enableCache(true)'.
const std::vector<int>& getSelectedLinkIndices(BodyItemPtr bodyItem);
/// This member is available after calling 'enableCache(true)'.
const boost::dynamic_bitset<>& getLinkSelection(BodyItemPtr bodyItem);
MenuManager& popupMenuManager();
bool makeSingleSelection(BodyItemPtr bodyItem, int linkIndex);
void enableArchiveOfCurrentBodyItem(bool on);
bool storeState(Archive& archive);
bool restoreState(const Archive& archive);
protected:
virtual void changeEvent(QEvent* event);
private Q_SLOTS:
void onItemChanged(QTreeWidgetItem* item, int column);
void onSelectionChanged();
void onCustomContextMenuRequested(const QPoint& pos);
void onItemExpanded(QTreeWidgetItem* treeWidgetItem);
void onItemCollapsed(QTreeWidgetItem* treeWidgetItem);
void onHeaderSectionResized();
private:
LinkTreeWidgetImpl* impl;
friend class LinkTreeItem;
};
}
#endif
|