]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOWxGimmickView.h
Added Timestamp database to avoid repetition of files on addition.
[creaImageIO.git] / src2 / creaImageIOWxGimmickView.h
index b6e41215cea2cb081e81375640ccf53587b05911..302698fa701f382e55f30ac5ce556c86765bd792 100644 (file)
@@ -4,6 +4,7 @@
 #ifdef USE_WXWIDGETS
 
 #include <creaImageIOGimmickView.h>
+#include <creaImageIOWxViewer.h>
 #include <creaWx.h>
 
 #include <wx/splitter.h>
@@ -20,47 +21,124 @@ namespace creaImageIO
   
   //=====================================================================
   /// Concrete derivative of GimmickView which implements a wxWidgets-based view
+
   class WxGimmickView : public wxPanel, virtual public GimmickView
-    {
-    public:
-      typedef int EventType;
-
-      /// Ctor
-      WxGimmickView(Gimmick*, 
-                   wxWindow *parent, 
-                   const wxWindowID id,
-                   const wxPoint& pos, const wxSize& size,
-                   int image_type = GIMMICK_3D_IMAGE_SELECTION,
-                   int number_of_threads = 0);
-      /// Virtual destructor
-      virtual ~WxGimmickView();
-
-    protected:
-      /// Creates the tool bar
-      void CreateToolBar(); 
-
-      /// Create the tree view for TreeHandler provided 
-      /// (overloaded from GimmickView)
-      void CreateTreeView( TreeHandler* );
-
-    private:
-      /// The ToolBar and the tools
-      wxToolBar*         mToolBar;
-      wxToolBarToolBase* mToolAddFile;
-
-      wxSplitterWindow* mSplitter;
-      wxPanel*          mBottomPanel;
-      wxNotebook*       mNotebook;
-
-      /// The list of icons 
-      wxImageList *    mIcon;
-      void CreateIconList();
-
-   };
-    // EO class WxGimmickView
-    //=====================================================================
-  
+  {
+  public:
+    
+    typedef int EventType;
+    
+    /// Ctor
+    WxGimmickView(Gimmick*, 
+                 wxWindow *parent, 
+                 const wxWindowID id,
+                 const wxPoint& pos, const wxSize& size,
+                 int min_dim = GIMMICK_2D_IMAGE_SELECTION,
+                 int max_dim = GIMMICK_3D_IMAGE_SELECTION,
+                 int number_of_threads = 0);
+    /// Virtual destructor
+    virtual ~WxGimmickView();
+    
+    /// Returns the selected files
+    ///(overloaded from GimmickView)
+    void GetSelectedFiles(std::vector<std::string>& s);
+    
+    /// Returns the selected Images so that they comply with the 
+    /// given parameter(4D) (overloaded from GimmickView)
+    void GetSelectedImages(std::vector<vtkImageData*>& s, int dim);
+
+    /// Returns the images indicated by the filenames in the vector 
+    /// so that they comply with the given parameter(dim)
+    //(overloaded from GimmickView) 
+    void GetImages(int dim, const std::vector<std::string>& files, 
+                  std::vector<vtkImageData*>& s);
+    
+    /// Callback called when a selection from a TreeView has changed 
+    //(overloaded from GimmickView)
+    void OnSelectionChange(const std::vector<tree::Node*>& s, 
+                          bool isSelection, int selection, bool mProcess);
+    ///Stops the player
+    void StopPlayer(){mViewer->StopPlayer();}
+    ///Resets the default image
+    void ClearSelection();
+    
+    
+    ///Sends a request to read the currently selected node and the ones that surround it.
+    void ReadImageThreaded(const std::vector<tree::Node*>& sel);
+    
+    
+  protected:
+    /// Creates the tool bar
+    void CreateToolBar(); 
+    
+    /// Create the tree view for TreeHandler provided 
+    /// (overloaded from GimmickView)
+    void CreateTreeView( TreeHandler*, TimestampDatabaseHandler* );
+    
+    
+  private:
+    /// Is set to true at the end of constructor 
+    /// (in order to lock callbacks from threaded objects or event 
+    /// before everything is ok)
+    bool mConstructed;
+    /// The ToolBar and the tools
+    wxToolBar*         mToolBar;
+    wxToolBarToolBase* mToolAddFile;
+    wxToolBarToolBase* mToolAddDir;
+    wxToolBarToolBase* mToolRemove;
+    wxToolBarToolBase* mToolAddDatabase;
+    wxToolBarToolBase* mToolHelp;
+    
+    wxSplitterWindow* mSplitter;
+    wxPanel*          mBottomPanel;
+    wxStaticText *    mText;
+    wxNotebook*       mNotebook;
+    
+    /// The list of icons 
+    wxImageList *    mIcon;
+    void CreateIconList();
+    
+    Gimmick * mGimmick;
+    /// Callback for adding files
+    void OnAddFiles(wxCommandEvent& event);
+    /// Callback for adding dir
+    void OnAddDir(wxCommandEvent& event);
+    /// Callback for removing files
+    void OnRemove(wxCommandEvent& event);
+    
+    /// Display a message box with the last addition statistics
+    void DisplayAddSummary();
 
+       /// Test a directory to know if contains sub-directory to analyze
+       bool isNeedRecursive(std::string i_name);
+    
+    /// AddProgress Gimmick callback
+    void OnAddProgress( Gimmick::AddProgress& );
+    /// Called upon to refresh the viewer once there are no actions to be done
+    void OnInternalIdle();
+    
+    /// Progress dialog
+    wxProgressDialog* mProgressDialog;
+    ///The selection's maximum dimension
+    int mSelectionMaxDimension;
+    ///The selection's minimum dimension
+    int mSelectionMinDimension;
+    ///Image previewer
+    WxViewer* mViewer;
+    ///Currently Displayed Node
+    tree::Node* mCurImageItemToShow;
+    //Pointer holders for images to be shown
+    std::vector<ImagePointerHolder*> pointers;
+    
+    
+    wxString mCurrentDirectory;
+    
+    DECLARE_EVENT_TABLE()
+      };
+  // EO class WxGimmickView
+  //=====================================================================
+  
+  
   /*