]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOWxGimmickView.h
Added Timestamp database to avoid repetition of files on addition.
[creaImageIO.git] / src2 / creaImageIOWxGimmickView.h
index 08710e6620c80ac3567d2e33eafe9a7aed02a7ec..302698fa701f382e55f30ac5ce556c86765bd792 100644 (file)
@@ -4,8 +4,13 @@
 #ifdef USE_WXWIDGETS
 
 #include <creaImageIOGimmickView.h>
+#include <creaImageIOWxViewer.h>
 #include <creaWx.h>
 
+#include <wx/splitter.h>
+#include <wx/toolbar.h> 
+#include <wx/tbarbase.h> 
+#include <wx/notebook.h>
 
 namespace creaImageIO
 {
@@ -16,31 +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();
 
+  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 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
+  //=====================================================================
   
-
-    private:
-      
-    };
-    // EO class WxGimmickView
-    //=====================================================================
   
-
   /*