X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOWxGimmickView.h;h=b710bca54d2fe762b82e1fd69901276e1b70ad38;hb=e13ea6551e8721b11998dc33ddccf3f89458f173;hp=c2790c721c9fda3f5c4943f9da5c18f14824646d;hpb=ff9cfd68812d5dd296fa71fbcc21e7e867d4da23;p=creaImageIO.git diff --git a/src2/creaImageIOWxGimmickView.h b/src2/creaImageIOWxGimmickView.h index c2790c7..b710bca 100644 --- a/src2/creaImageIOWxGimmickView.h +++ b/src2/creaImageIOWxGimmickView.h @@ -4,8 +4,14 @@ #ifdef USE_WXWIDGETS #include +#include +#include +#include #include +#include "wx/progdlg.h" + +#include "wx/wx.h" #include #include #include @@ -20,214 +26,192 @@ 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; - wxToolBarToolBase* mToolAddDir; - wxToolBarToolBase* mToolRemove; - wxToolBarToolBase* mToolAddDatabase; - wxToolBarToolBase* mToolHelp; - - wxSplitterWindow* mSplitter; - wxPanel* mBottomPanel; - 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(); - - - /// AddProgress Gimmick callback - void OnAddProgress( Gimmick::AddProgress& ); - /// Progress dialog - wxProgressDialog* mProgressDialog; - - - wxString mCurrentDirectory; - - DECLARE_EVENT_TABLE() - }; - // EO class 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& s); + + /// Returns the selected Images so that they comply with the + /// given parameter(4D) (overloaded from GimmickView) + void GetSelectedImages(std::vector& 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& files, + std::vector& s); + + /// Callback called when a selection from a TreeView has changed + //(overloaded from GimmickView) + void OnSelectionChange(const std::vector& 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& 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& 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); + + ///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(); - //==================================================================== - // General - //==================================================================== + ///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); - /// 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&){ return; } - /// Returns the vector of images corresponding to selection - virtual void GetSelectedImages(std::vector&){ return; } - /// Returns the vector of DicomNode corresponding to selection - virtual void GetSelectedDicomNodes(std::vector&){ return; } - /// Returns the DicomNode corresponding to the tree item - virtual DicomNode* GetDicomNodeOfItem(const TreeItemId& i); - - - /// Type of list of DicomDatabase - typedef std::vector 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 - //==================================================================== + ///Called upon to return the visible attributes of the current tab + void GetVisibleAttributes(std::vector& shown,std::vector& nShown, int level); + ///Called when there has been a change in the visible attributes of a tree view + void OnAttributesChanged(const std::vector& nShown, int level); + + 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; + wxToolBarToolBase* mToolSynchronize; + wxToolBarToolBase* mToolSettings; + wxToolBarToolBase* mToolTools; + + wxSplitterWindow* mSplitter; + wxPanel* mBottomPanel; + wxStaticText * mText; + wxNotebook* mNotebook; + + /// The list of icons + wxImageList * mIcon; + void CreateIconList(); + + Gimmick * mGimmick; - int mSelectionType; - int mSelectionMaxImageDimension; - int mCurrentSelectionImageSize[4]; + Listener* mListener; + /// Callback for adding files + void OnAddFiles(wxCommandEvent& event); + /// Callback for adding dir + void OnAddDir(wxCommandEvent& event); + /// Callback for removing files + void OnRemove(wxCommandEvent& event); + /// Callback for synchronization + void OnSynchronize(wxCommandEvent& event); + /// Callback for settings edition + void OnSettings(wxCommandEvent& event); + /// Callback for settings edition + void OnTools(wxCommandEvent& event); + /// Callback for Import/Export images + void OnImportExport(wxCommandEvent& event); + + // Import Images from an archive + void ImportImages(); + + //Export Images to an archive + void ExportImages(); + + ///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(); - ///Existent Database List - DicomDatabaseListType mDicomDatabaseList; - ///Favorites database - DicomDatabase* mFavoriteDatabase; + /// Test a directory to know if contains sub-directory to analyze + bool isNeedRecursive(std::string i_name); - ///Path to the database list file - std::string mDatabaseListFile; - ///Extension of the database - std::string mDatabaseExtension; + /// 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(); - bool mJustStarted; + /// callback to add a database + void OnAddDB(wxCommandEvent& event); + + ///Create a DB from an Attributes Descriptor files + void OnCreateDB(wxCommandEvent& event); - int mFirstDicomDatabaseIconIndex; + std::string ExtractName(const std::string &i_name); - // Previewer - vtkImageViewer2* mViewer; + ///Edits the fields of a given node + void CreateEditFieldsDialog(tree::Node* node, std::vector names, std::vector keys); + + /// 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 pointers; - int mx1,mx2,my1,my2,mz1,mz2; - double mspx,mspy,mspz; + + wxString mCurrentDirectory; + + DECLARE_EVENT_TABLE() + }; + // EO class WxGimmickView + //===================================================================== - // Image preview : - // Multi-thread image reader - MultiThreadImageReader mReader; - // map of images name to node - std::map mImageFileNameToNode; - */ + } // EO namespace creaImageIO