]> Creatis software - creaImageIO.git/blobdiff - src/OldcreaImageIOGimmickView.h
move directory
[creaImageIO.git] / src / OldcreaImageIOGimmickView.h
diff --git a/src/OldcreaImageIOGimmickView.h b/src/OldcreaImageIOGimmickView.h
new file mode 100644 (file)
index 0000000..3aa98ac
--- /dev/null
@@ -0,0 +1,162 @@
+namespace creaImageIO
+{
+       /**
+       * \ingroup View
+       */
+    //=====================================================================
+    
+    //=====================================================================
+    ///Abstract class that handles views, attributes and previews (GUI) for Gimmick.
+       class GimmickView
+    {
+    public:
+      /// Ctor
+      GimmickView();
+      /// Virtual destructor
+      virtual ~GimmickView();
+
+       //====================================================================
+       // General
+       //====================================================================
+
+    /// 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);
+
+       
+       /// 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;
+
+
+       //====================================================================
+    // Class Attributes
+    //====================================================================
+
+       
+       int mSelectionType;
+    int mSelectionMaxImageDimension;
+    int mCurrentSelectionImageSize[4];
+
+       ///Existent Database List
+    DicomDatabaseListType mDicomDatabaseList;
+       ///Favorites database
+    DicomDatabase* mFavoriteDatabase;
+
+       ///Path to the database list file
+    std::string mDatabaseListFile;
+       ///Extension of the database
+    std::string mDatabaseExtension;
+
+    bool mJustStarted;
+
+    int  mFirstDicomDatabaseIconIndex;
+
+   // Previewer
+    vtkImageViewer2* mViewer;
+    
+    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;
+  
+    //Controller which manages the interaction with the model
+       Gimmick* controller;
+
+    };
+    // EO class GimmickView
+    //=====================================================================
+  
+} // EO namespace creaImageIO
+
+// EOF
+#endif  
\ No newline at end of file