X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=src2%2FcreaImageIOWxTreeView.h;h=3e6c10675f606c41552103a6970faf7c32914234;hb=d38ff4802df421152298211fc44eb5f20b7a5dec;hp=65e783d6435c9b571c0d092388222737b60d27aa;hpb=79be5edd158476cd0f21d3146223594234ef06fc;p=creaImageIO.git diff --git a/src2/creaImageIOWxTreeView.h b/src2/creaImageIOWxTreeView.h index 65e783d..3e6c106 100644 --- a/src2/creaImageIOWxTreeView.h +++ b/src2/creaImageIOWxTreeView.h @@ -7,9 +7,12 @@ #include #include +#include +//#include namespace creaImageIO { + /** * \ingroup View */ @@ -21,23 +24,106 @@ namespace creaImageIO { public: /// Ctor - WxTreeView(TreeHandler*, wxWindow* parent, const wxWindowID id); + WxTreeView(TreeHandler*, GimmickView*, + wxWindow* parent, const wxWindowID id); /// Virtual destructor virtual ~WxTreeView(); - /// Something like that ... - virtual void UpdateView(); - + /// Updates the view of a level given the selected items of upper level + virtual void UpdateLevel( int ); + + ///Removes selected nodes on given level + virtual void RemoveSelected( int ); + + /// Callback for selection change + void OnSelectedChanged(wxListEvent& event); + + /// Callback for column click + void OnColClick(wxListEvent& event); + + /// Callback when the user needs the items sorted + void OnPopupSort(wxCommandEvent& event); + + ///Callback when the user need the items filtered + void OnPopupFilter(wxCommandEvent& event); + private: - /// The vector of wxListCtrl : one for each level of the tree - std::vector mListCtrl; + /// The struct holding the data for one level + /// Holds the wx control and other data + /// such as the vector of attribute keys corresponding to the columns + struct LevelType + { + // The List Control + wxListCtrl* wxCtrl; + wxSplitterWindow* wxSplitter; + std::vector key; + }; + /// The vector of levels : one for each level of the tree + std::vector mLevelList; + /// return the wxListCtrl of one level + wxListCtrl* GetCtrl(int l) { return mLevelList[l].wxCtrl; } + /// return the wxSplitter of one level + wxSplitterWindow* GetSplitter(int l) { return mLevelList[l].wxSplitter; } + //Returns the maximum number of levels + int GetNumberOfLevels(){ return mLevelList.size(); } + /// Gets the user selected data from the level passed as a parameter + std::vector GetSelected(int level); + ///Validates the selected images + void ValidateSelectedImages(bool isSelection); + ///Gets selected filenames + void GetSelectedAsString(std::vector&s); + /// Gets the next nodes on the list, be it up(true) or down(false). + void GetNodes(std::vector& nodes, bool direction); + /// Updates the view of a level given the selected items of upper level + /// Recursive method + virtual void RecursiveUpdateLevel( int ); + ///Sets the color of a selected item + void SetColor(int level, int item); + ///Creates the color palette for the first level + void CreateColorPalette(); + ///Selects the lowest level (images) + void SelectLowerLevel(); + ///Sorts items + void OnSort(int level); + + + + /// Currently Selected Column + int mColumnSelected; + ///Boolean that defines the direction of the organization + ///True is ascending order and false is descending + bool mDirection; + ///The last selected item on the list + long mLastSelected; + ///The last selection of nodes (for every level, except the last) + std::vector mSelected; + ///The last selection of nodes (for the last level) + std::vector mLastLevelSelected; + ///The color map + typedef std::map ColorMap; + typedef std::pair NodeColorPair; + ColorMap mColorMap; + ///Initial color palette + std::vector mColorPalette; + ///Boolean declaring if the last level selection has been made + bool mSelectionMade; + bool mProcess; + wxMenu* menu; + wxObject* senderCtrl; + int mAscendingID; + int mDescendingID; + int mFilterID; + + DECLARE_EVENT_TABLE() }; // EO class WxTreeView //===================================================================== - + + + } // EO namespace creaImageIO