]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOWxGimmickView.h
For a given file, display all dicom tags.
[creaImageIO.git] / src2 / creaImageIOWxGimmickView.h
index 9fd54a963a87d3c56864e781d21576be0943e0c2..fa7d4d76b3899bf3a9030d9a5073b9ff4e763ddd 100644 (file)
@@ -5,8 +5,13 @@
 
 #include <creaImageIOGimmickView.h>
 #include <creaImageIOWxViewer.h>
+#include <creaImageIOWxGimmickTools.h>
+#include <creaImageIOListener.h>
 #include <creaWx.h>
 
+#include "wx/progdlg.h"
+
+#include "wx/wx.h"
 #include <wx/splitter.h>
 #include <wx/toolbar.h> 
 #include <wx/tbarbase.h> 
@@ -23,260 +28,208 @@ 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 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, std::vector<std::string> files, std::vector<vtkImageData*>& s);
-      /// Callback called when a selection from a TreeView has changed 
-      //(overloaded from GimmickView)
-      void OnSelectionChange(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(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* );
-
-
-    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);
+  {
+  public:
+    
+    typedef int EventType;
+    
+    /// Ctor
+    WxGimmickView(boost::shared_ptr<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);
+    void GetSelectedImagesInVector(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();}
+    ///Adds a file to ignore
+    void AddIgnoreFile(tree::Node* toRemove);
+    ///Resets the default image
+    void ClearSelection();
+       ///Copies selected files
+    void CopyFiles(const std::vector<std::string>& filenames);
+       ///Add selected files to the Database
+    void AddDir(std::string dirName);
+    
+    
+    ///Sends a request to read the currently selected node and the ones that surround it.
+    void ReadImageThreaded(const std::vector<tree::Node*>& sel);
+
+       ///Saves the settings to the file
+       void OnSaveSettingsCallback(const std::string& copyPath,
+         const std::string& dbPath,
+         const std::string& syncEvent,
+         const std::string& syncFreq);
        
-         /// Display a message box with the last addition statistics
-      void DisplayAddSummary();
-
-
-      /// 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
-    //=====================================================================
-  
+       ///Changes listener state
+       void OnListenerCallback(const std::string& drive, bool addFiles, bool removeFiles);
 
-  /*
+       ///Acts upon a drive mount
+       void OnDriveMount(bool mount);
 
+       ///Starts the listening thread on the CD/DVD drive
+       void StartListeningThread();
 
+       ///Stops the listening thread on the CD/DVD drive
+       void StopListeningThread();
 
+       ///Called upon when a field has been edited
+       void OnFieldsEdited(tree::Node* node, const std::string& name, const std::string& key, const std::string& val);
 
+       ///Called upon to return the visible attributes of the current tab
+       void GetVisibleAttributes(std::vector<std::string>& shown,std::vector<std::string>& nShown, int level);
 
+       ///Called when there has been a change in the visible attributes of a tree view
+       void OnAttributesChanged(const std::vector<std::string>& nShown, int level);
+    
+  protected:
+    /// Creates the tool bar
+    void CreateToolBar(); 
+    
+    /// Create the tree view for TreeHandler provided 
+    /// (overloaded from GimmickView)
+    void CreateTreeView( TreeHandler* );
+    
+    
+  private:
+         wxBoxSizer *mbottom_sizer;
+         wxBoxSizer    *msizer;
+    /// 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;
+       wxToolBarToolBase* mToolSynchronize;
+       wxToolBarToolBase* mToolSettings;
+       wxToolBarToolBase* mToolTools;
+    
+    wxSplitterWindow* mSplitter;
+    wxPanel*          mBottomPanel;
+    wxStaticText *    mText;
+    wxNotebook*       mNotebook;
+    
+    /// The list of icons 
+    wxImageList *    mIcon;
+    void CreateIconList();
+    
+    boost::shared_ptr<Gimmick> mGimmick;
+               
+       Listener* mListener;
 
+    /// Callback for adding files
+    void OnAddFiles(wxCommandEvent& event);
 
+    /// Callback for adding dir
+    void OnAddDir(wxCommandEvent& event);
 
-       //====================================================================
-       // General
-       //====================================================================
+    /// Callback for removing files
+    void OnRemove(wxCommandEvent& event);
 
-    /// Returns the size of the current selection
-    virtual int GetSelectionSize() { return 0; } 
-    /// Returns true if there is a valid selection
-    virtual bool IsSelectionValid(){ return false; }
-    /// Returns the vector of full filenames of selected images
-    virtual void GetSelectedFiles(std::vector<std::string>&){ return; }
-    /// Returns the vector of images corresponding to selection
-    virtual void GetSelectedImages(std::vector<vtkImageData*>&){ return; }
-    /// Returns the vector of DicomNode corresponding to selection
-    virtual void GetSelectedDicomNodes(std::vector<DicomNode*>&){ return; }
-   /// Returns the DicomNode corresponding to the tree item
-    virtual DicomNode* GetDicomNodeOfItem(const TreeItemId& i);
+       /// Callback for synchronization
+    void OnSynchronize(wxCommandEvent& event);
 
-       
-       /// Type of list of DicomDatabase
-    typedef std::vector<DicomDatabase*> DicomDatabaseListType;
-    /// Returns the list of DicomDatabase open
-    virtual DicomDatabaseListType& GetDicomDatabaseList() 
-    { return null; }
-    /// Returns the list of DicomDatabase open (const)
-    virtual const DicomDatabaseListType& GetDicomDatabaseList() const 
-    { return null; }
-
-       protected:
-       ///Opens an existing database, or else, creates a local database.
-    virtual void OpenOrNewDatabase(bool open){ return; }
-       ///Shows the help
-       virtual void ShowHelp();
-
-       private:
-       ///Gets the extension of the database
-       const std::string& GetDatabaseExtension() { return null; }
-       ///Sets the extension of the database
-    virtual void SetDatabaseExtension(const std::string& ext){ return; }
-
-
-       //====================================================================
-    // Preview Display Related
-       //====================================================================
-
-
-    ///Shows the image sent as a parameter
-       private:
-        virtual void ShowImage(vtkImageData* image){ return; }
-
-       //====================================================================
-    // Favorites Related
-       //====================================================================
-
-
-       public:
-       ///Loads or creates a favorites database
-    virtual void LoadOrCreateFavoritesDatabase(){ return; }
-       private:
-       ///Creates the user settings directory
-    void CreateUserSettingsDirectory(){ return; }
-       ///Obtains the user settings directory
-       const std::string& GetUserSettingsDirectory(){ return null; }
-
-       //====================================================================  
-       // Attribute Display Related
-       //====================================================================
-
-
-       ///Shows the Information regarding the node sent as a parameter
-       private:
-     virtual void ShowInformation(DicomNode*){ return; }
-   
-       //====================================================================
-    // Tree Display Related
-    //====================================================================
-
-       protected:
-    /// Completely rebuilds the view with 
-    /// current DicomDatabaseList
-    virtual void RebuildView(){ return; }
-       /// Recursively updates the part of the view corresponding 
-    /// to the DicomDatabase passed
-    /// i.e. creates items for the DicomNode which do not have
-    ///      deletes obsolete items (whose DicomNode has been deleted)
-    virtual void UpdateDicomDatabaseView(DicomDatabase*){ return; }
-    /// Recursively updates the part of the view corresponding 
-    /// to the DicomNode provided.
-    /// parent is its parent in the tree (where to insert / remove it)
-       virtual void UpdateDicomNodeView(DicomNode* n, const TreeItemId& parent){ return; }
-    
-       private:
-       ///Type definition of the data regarding the tree
-    typedef WxGimmickTreeItemData TreeItemData;
-       ///Gets the item data of the tree item passed as a parameter
-    TreeItemData* GetItemData(const TreeItemId& id){ return null; }
-    ///Type definition of the data insid a node of the tree
-    typedef WxGimmickDicomNodeData NodeData;
+       /// Callback for settings edition
+    void OnSettings(wxCommandEvent& event);
 
+       /// Callback for settings edition
+    void OnTools(wxCommandEvent& event);
 
-       //====================================================================
-    // Class Attributes
-    //====================================================================
+       /// Callback for Import/Export images
+    void OnImportExport(wxCommandEvent& event);
 
-       
-       int mSelectionType;
-    int mSelectionMaxImageDimension;
-    int mCurrentSelectionImageSize[4];
+       // Import Images from an archive
+       void ImportImages();
 
-       ///Existent Database List
-    DicomDatabaseListType mDicomDatabaseList;
-       ///Favorites database
-    DicomDatabase* mFavoriteDatabase;
+       //Export Images to an archive
+       void ExportImages();
 
-       ///Path to the database list file
-    std::string mDatabaseListFile;
-       ///Extension of the database
-    std::string mDatabaseExtension;
+       ///Creates the settings dialog (the pages inside and the information)
+       void CreateSettingsDialog(wxNotebook* nb, wxDialog* dial);
+    
+    /// Display a message box with the last addition statistics
+    void DisplayAddSummary();
 
-    bool mJustStarted;
+       /// Test a directory to know if contains sub-directory to analyze
+       bool isNeedRecursive(std::string i_name);
 
-    int  mFirstDicomDatabaseIconIndex;
+       /// Determines number of files potentially to add to database
+       int NumberFilesToAdd(const std::string &dirpath, bool recursive);
+    
+    /// AddProgress Gimmick callback
+    void OnAddProgress( Gimmick::AddProgress& );
+    /// Called upon to refresh the viewer once there are no actions to be done
+    void OnInternalIdle();
 
-   // Previewer
-    vtkImageViewer2* mViewer;
+       /// callback to add a database
+       void OnAddDB(wxCommandEvent& event);
     
-    int mx1,mx2,my1,my2,mz1,mz2;
-    double mspx,mspy,mspz;
-  
-    // Image preview :
-    // Multi-thread image reader
-    MultiThreadImageReader mReader;
-    // map of images name to node
-    std::map<std::string,DicomNode*> mImageFileNameToNode;
-  */
+       ///Create a DB from an Attributes Descriptor files 
+       void OnCreateDB(wxCommandEvent& event);
+
+       std::string ExtractName(const std::string &i_name);
+
+       ///Edits the fields of a given node
+       void CreateEditFieldsDialog(tree::Node* node, std::vector<std::string> names, std::vector<std::string> keys);
+
+       /// Display all Dicom Tags
+       void DumpTags(const std::string i_filename);
  
+    /// 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< boost::shared_ptr<ImagePointerHolder> > pointers;
+
+    wxString mCurrentDirectory;
+    
+    DECLARE_EVENT_TABLE()
+      };
+  // EO class WxGimmickView
+  //=====================================================================
+
 } // EO namespace creaImageIO
 
 #endif // USE_WIDGETS
 // EOF
-#endif  
+#endif