Choreonoid  1.5
ItemTreeView.h
Go to the documentation of this file.
1 
5 #ifndef CNOID_BASE_ITEM_TREE_VIEW_H
6 #define CNOID_BASE_ITEM_TREE_VIEW_H
7 
8 #include "ItemList.h"
9 #include <cnoid/View>
10 #include <QAbstractItemModel>
11 #include "exportdecl.h"
12 
13 namespace cnoid {
14 
15 class RootItem;
16 class ItemTreeViewImpl;
17 
24 {
25  Q_OBJECT
26 
27 public:
28  static void initializeClass(ExtensionManager* ext);
29  static ItemTreeView* instance();
30  static ItemTreeView* mainInstance(); // obsolete
31 
32  ItemTreeView();
33  ItemTreeView(RootItem* rootItem, bool showRoot = false);
34  ~ItemTreeView();
35 
36  RootItem* rootItem();
37 
38  void showRoot(bool show);
39 
45  template <class ItemType> inline ItemList<ItemType> selectedItems() {
46  return allSelectedItems();
47  }
48 
50  return allSelectedItems();
51  }
52 
53 
54  template <class ItemType> inline ItemType* selectedItem(bool fromMultiItems = false) {
55  return selectedItems<ItemType>().toSingle(fromMultiItems);
56  }
57 
64  template <class ItemType> inline ItemList<ItemType> selectedSubItems(ItemPtr topItem) {
65  ItemList<> items;
66  extractSelectedItemsOfSubTree(topItem, items);
67  return items;
68  }
69 
70  template <class ItemType> inline ItemType* selectedSubItem(ItemPtr topItem, bool fromMultiItems = false) {
71  return selectedSubItems<ItemType>(topItem).toSingle(fromMultiItems);
72  }
73 
74  bool isItemSelected(Item* item);
75  bool selectItem(Item* item, bool select = true);
76  void unselectItem(Item* item);
77 
78  void selectAllItems();
79  void clearSelection();
80 
84  int addCheckColumn();
85  void setCheckColumnToolTip(int id, const QString& whatsThis);
86  void updateCheckColumnToolTip(int id);
87  void showCheckColumn(int id, bool on = true);
88  void storeCheckColumnState(int id, Archive& archive);
89  bool restoreCheckColumnState(int id, const Archive& archive);
90  void releaseCheckColumn(int id);
91 
97  template <class ItemType> inline ItemList<ItemType> checkedItems(int id = 0) {
98  return allCheckedItems(id);
99  }
100 
101  bool isItemChecked(ItemPtr item, int id = 0);
102  bool checkItem(ItemPtr item, bool check = true, int id = 0);
103 
109  SignalProxy<void(const ItemList<>&)> sigSelectionChanged();
110 
117  SignalProxy<void(const ItemList<>&)> sigSelectionOrTreeChanged();
118 
119  SignalProxy<void(Item* item, bool isChecked)> sigCheckToggled(int id = 0);
120 
121  SignalProxy<void(bool isChecked)> sigCheckToggled(Item* targetItem, int id = 0);
122 
123  void cutSelectedItems();
124 
125 protected:
126 
127  virtual bool storeState(Archive& archive);
128  virtual bool restoreState(const Archive& archive);
129 
130 private:
131 
132  ItemTreeViewImpl* impl;
133 
134  void construct(RootItem* rootItem, bool showRoot);
135  ItemList<>& allSelectedItems();
136  ItemList<>& allCheckedItems(int id);
137  void extractSelectedItemsOfSubTree(ItemPtr topItem, ItemList<>& items);
138 
139 private Q_SLOTS:
140  void onRowsAboutToBeRemoved(const QModelIndex& parent, int start, int end);
141  void onRowsInserted(const QModelIndex& parent, int start, int end);
142 };
143 
144 }
145 
146 #endif
ItemType * selectedSubItem(ItemPtr topItem, bool fromMultiItems=false)
Definition: ItemTreeView.h:70
Definition: ItemList.h:14
Definition: Archive.h:21
Definition: ExtensionManager.h:26
ItemList< ItemType > selectedSubItems(ItemPtr topItem)
Definition: ItemTreeView.h:64
Definition: RootItem.h:23
ItemList< ItemType > checkedItems(int id=0)
Definition: ItemTreeView.h:97
Definition: ItemTreeView.h:23
ItemList< ItemType > selectedItems()
Definition: ItemTreeView.h:45
Definition: Item.h:38
ItemType * selectedItem(bool fromMultiItems=false)
Definition: ItemTreeView.h:54
Defines the minimum processing for performing pasing file for STL.
Definition: AbstractSceneLoader.h:9
const ItemList & selectedItems()
Definition: ItemTreeView.h:49
Definition: View.h:28
#define CNOID_EXPORT
Definition: Util/exportdecl.h:37
Definition: Signal.h:380