]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOWxTreeView.h
Fixed popup position when enlarging.
[creaImageIO.git] / src2 / creaImageIOWxTreeView.h
index 65e783d6435c9b571c0d092388222737b60d27aa..3e6c10675f606c41552103a6970faf7c32914234 100644 (file)
@@ -7,9 +7,12 @@
 #include <creaWx.h>
 
 #include <wx/listctrl.h>
+#include <wx/splitter.h>
+//#include <vector>
 
 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<wxListCtrl*> 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<std::string> key;
+      };
+      /// The vector of levels : one for each level of the tree      
+      std::vector<LevelType> 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<tree::Node*> GetSelected(int level);
+         ///Validates the selected images
+      void ValidateSelectedImages(bool isSelection);   
+         ///Gets selected filenames
+         void GetSelectedAsString(std::vector<std::string>&s);
+           /// Gets the next nodes on the list, be it up(true) or down(false).
+      void GetNodes(std::vector<tree::Node*>& 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<tree::Node*> mSelected;
+         ///The last selection of nodes (for the last level)
+         std::vector<tree::Node*> mLastLevelSelected;
+         ///The color map
+         typedef std::map<tree::Node*,wxColour> ColorMap;
+         typedef std::pair<tree::Node*,wxColour> NodeColorPair;
+      ColorMap mColorMap;
+         ///Initial color palette
+         std::vector<std::string> 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