1 #ifndef __creaImageIOWxTreeView_h_INCLUDED__
2 #define __creaImageIOWxTreeView_h_INCLUDED__
6 #include <creaImageIOTreeView.h>
9 #include <wx/listctrl.h>
10 #include <wx/splitter.h>
19 //=====================================================================
21 //=====================================================================
22 /// Abstract class that handles the view of a Tree through its TreeHandler
23 class WxTreeView : public wxPanel, virtual public TreeView
27 WxTreeView(TreeHandler*, TimestampDatabaseHandler*, GimmickView*,
28 wxWindow* parent, const wxWindowID id);
29 /// Virtual destructor
30 virtual ~WxTreeView();
33 /// Updates the view of a level given the selected items of upper level
34 virtual void UpdateLevel( int );
36 ///Removes selected nodes on given level
37 virtual void RemoveSelected();
39 /// Callback for item selection
40 void OnItemSelected(wxListEvent& event);
42 /// Callback for item deselection
43 void OnItemDeSelected(wxListEvent& event);
45 /// Callback for column click
46 void OnColClick(wxListEvent& event);
48 /// Callback when the user needs the items sorted
49 void OnPopupSort(wxCommandEvent& event);
51 ///Callback when the user need the items filtered
52 void OnPopupFilter(wxCommandEvent& event);
54 ///Callback on mouse click
55 void OnMouseClick(wxMouseEvent& event);
57 /// Actual processing of item selection/deselection
58 /// Called by OnItemSelected and OnItemDeSelected
61 /// The struct holding the data for one level
62 /// Holds the wx control and other data
63 /// such as the vector of attribute keys corresponding to the columns
68 wxSplitterWindow* wxSplitter;
69 std::vector<std::string> key;
70 // The vector of currently selected nodes of the level
71 std::vector<tree::Node*> Selected;
72 // True iff the vector Selected is up to date
73 bool SelectedUpToDate;
74 // The column used for sorting
75 unsigned int SortColumn;
76 ///Boolean that defines the direction of the sort
77 ///True is ascending order and false is descending
81 /// The vector of levels : one for each level of the tree
82 std::vector<LevelType> mLevelList;
84 /// return the wxListCtrl of one level
85 wxListCtrl* GetCtrl(int l) { return mLevelList[l].wxCtrl; }
86 /// return the wxSplitter of one level
87 wxSplitterWindow* GetSplitter(int l) { return mLevelList[l].wxSplitter; }
88 //Returns the maximum number of levels
89 int GetNumberOfLevels(){ return mLevelList.size(); }
90 /// Gets the user selected data from the level passed as a parameter
91 /// Updates the vector if necessary
92 const std::vector<tree::Node*>& GetSelected(int level);
93 /// Set the bool SelectedUpToDate for level l
94 void SetSelectedUpToDate(int l, bool v) { mLevelList[l].SelectedUpToDate = v; }
95 /// Get the bool SelectedUpToDate for level l
96 bool GetSelectedUpToDate(int l) { return mLevelList[l].SelectedUpToDate; }
97 ///Validates the selected images
98 void ValidateSelectedImages(bool isSelection);
99 ///Gets selected filenames
100 void GetSelectedAsString(std::vector<std::string>&s);
101 /// Gets the next nodes on the list, be it up(true) or down(false).
102 void GetNodes(std::vector<tree::Node*>& nodes, bool direction);
103 /// Updates the view of a level given the selected items of upper level
105 virtual void RecursiveUpdateLevel( int );
106 ///Sets the color of a selected item
107 void SetColor(int level, int item);
108 ///Creates the color palette for the first level
109 void CreateColorPalette();
110 ///Selects all the elements of a level
111 void SelectAll(int level);
112 ///UnSelects all the elements of a level
113 void UnSelectAll(int level);
115 void OnKeyDown(wxListEvent &event);
117 void SortLevel(int level);
119 /// Currently Selected Column
121 ///The last selected item on the list
124 typedef std::map<tree::Node*,wxColour> ColorMap;
125 typedef std::pair<tree::Node*,wxColour> NodeColorPair;
127 ///Initial color palette
128 std::vector<std::string> mColorPalette;
131 wxObject* senderCtrl;
135 unsigned int mLastLevel;
137 // If set to true then OnSelectedChanged returns immediately.
138 // Used to do avoid useless process during multiple selections
140 bool mIgnoreSelectedChanged;
143 DECLARE_EVENT_TABLE()
145 // EO class WxTreeView
146 //=====================================================================
150 } // EO namespace creaImageIO
153 #endif // USE_WIDGETS