X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FcreaImageIOWxGimmick.h;h=75e969ef453c2ebcecb61cfd4032284716770526;hb=ecd7eb9aca5b98c06f3ce9072b3f73fe71f1e4b0;hp=062d8de3116d0de65f1a68653a4a76089dc518c2;hpb=684add23b4f64cb3c6e39e12a4af20d2c2500df6;p=creaImageIO.git diff --git a/src/creaImageIOWxGimmick.h b/src/creaImageIOWxGimmick.h index 062d8de..75e969e 100644 --- a/src/creaImageIOWxGimmick.h +++ b/src/creaImageIOWxGimmick.h @@ -6,10 +6,11 @@ #include // wx -#include "wx/wx.h" -#include "wx/image.h" -#include "wx/imaglist.h" +#include +#include +#include #include +#include #include "treelistctrl.h" // dicom fields view panel @@ -19,7 +20,7 @@ // For image preview // vtk and wxvtk classes -#include "wxVTKRenderWindowInteractor.h" +#include "creawxVTKRenderWindowInteractor.h" #include "vtkImageViewer2.h" // multi-thread image reader #include @@ -35,71 +36,127 @@ namespace creaImageIO class WxGimmickDicomNodeData; //==================================================================== +#define GIMMICK_NO_IMAGE_SELECTION 0 +#define GIMMICK_2D_IMAGE_SELECTION 2 +#define GIMMICK_3D_IMAGE_SELECTION 3 +#define GIMMICK_4D_IMAGE_SELECTION 4 + //==================================================================== class CREAIMAGEIO_EXPORT WxGimmick : public wxPanel, - public MultiThreadImageReaderUser + public MultiThreadImageReaderUser { public: + /// Ctor WxGimmick(wxWindow *parent, const wxWindowID id, - const wxPoint& pos, const wxSize& size, - int number_of_threads = 0); - + const wxPoint& pos, const wxSize& size, + int image_type = GIMMICK_3D_IMAGE_SELECTION, + int number_of_threads = 0); + /// Dtor virtual ~WxGimmick(); + /// Returns the size of the current selection + int GetSelectionSize() { return mTreeListCtrl->GetSelectionSize(); } + /// Returns true if there is a valid selection + bool IsSelectionValid(); + /// Returns the vector of full filenames of selected images + void GetSelectedFiles(std::vector&); + /// Returns the vector of images corresponding to selection + void GetSelectedImages(std::vector&); + /// Returns the vector of DicomNode corresponding to selection + void GetSelectedDicomNodes(std::vector&); + /// Returns the vector of wxTreeItemId corresponding to selection + void GetSelectedItems(std::vector&); + + /// Returns the DicomNode corresponding to the tree item + DicomNode* GetDicomNodeOfItem(const wxTreeItemId& i); + + /// Stores the first id of user menu + static const int UserMenuFirstId; + + /// The class storing WxGimmick settings + typedef WxGimmickSettings Settings; + /// Returns the settings (const) + const Settings& GetSettings() const { return mSettings; } + /// Returns the settings + Settings& GetSettings() { return mSettings; } + + + /// The type of event sent by WxGimmick + typedef WxGimmickEvent EventType; + + /// The type of list of DicomDatabase typedef std::vector DicomDatabaseListType; - DicomDatabaseListType& GetDicomDatabaseList() { return mDicomDatabaseList; } - const DicomDatabaseListType& GetDicomDatabaseList() const { return mDicomDatabaseList; } + /// Returns the list of DicomDatabase open + DicomDatabaseListType& GetDicomDatabaseList() + { return mDicomDatabaseList; } + /// Returns the list of DicomDatabase open (const) + const DicomDatabaseListType& GetDicomDatabaseList() const + { return mDicomDatabaseList; } + /// Returns the wxTreeListCtrl of the main view wxTreeListCtrl* GetTreeListCtrl() { return mTreeListCtrl; } + /// Returns the wxTreeListCtrl of the main view (const) const wxTreeListCtrl* GetTreeListCtrl() const { return mTreeListCtrl; } + /// void SetConfigurationFile(const std::string& filename) - { - mConfigurationFile = filename; - } + { mConfigurationFile = filename;} void LoadConfiguration(); void SaveConfiguration(); void SetSaveConfigurationOnClose(bool v) { mSaveConfigurationOnClose = v; } + void LoadOrCreateFavoritesDatabase(); - void GetSelectedImages(std::vector&); - void GetSelectedDicomNodes(std::vector&); - void GetSelectedItems(std::vector&); - DicomNode* GetDicomNodeOfItem(const wxTreeItemId& i); - - - static const int UserMenuFirstId; - - typedef WxGimmickSettings Settings; - const Settings& GetSettings() const { return mSettings; } - Settings& GetSettings() { return mSettings; } - - typedef WxGimmickEvent EventType; - protected: + + /// Completely rebuilds the view (i.e. the wxTreeListCtrl) with + /// current DicomDatabaseList void RebuildView(); + /// 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) void UpdateDicomDatabaseView(DicomDatabase*); + /// Recursively updates the part of the view corresponding + /// to the DicomNode provided. + /// parent is its parent in the tree (where to insert / remove it) void UpdateDicomNodeView(DicomNode* n, const wxTreeItemId& parent); + /// Recursively deletes void DeleteObsoleteChildren(wxTreeItemId& id); + /// Create the column titles of the children of the item wxTreeItemId CreateChildrenColumnsTitles(wxTreeItemId& item, DicomNode::Type t); + /// void UpdateColumnsTitles(wxTreeItemId& item, DicomNode::Type t); + /// void UpdateColumns(wxTreeItemId& item, bool only_first = false); + + + + /// General entry point for void OpenOrNewDatabase(bool open); void InsertDicomDatabase(wxTreeItemId& id, DicomDatabase* r); void DeleteDicomDatabase(wxTreeItemId& id, DicomDatabase* r); + void LoadChildren( wxTreeItemId& id ); friend class WxGimmickEvent; + void ShowHelp(); + private: WxGimmick() { } WxGimmick(const WxGimmick& ) { } + int mSelectionType; + int mSelectionMaxImageDimension; + int mCurrentSelectionImageSize[4]; + DicomDatabaseListType mDicomDatabaseList; + DicomDatabase* mFavoriteDatabase; wxTreeListCtrl* mTreeListCtrl; wxTreeItemId mTreeRootId; @@ -117,8 +174,16 @@ namespace creaImageIO const std::string& GetDatabaseExtension() { return mDatabaseExtension; } void SetDatabaseExtension(const std::string& ext) { mDatabaseExtension = ext; } + + + /// Settings Settings mSettings; + + // Help + WxGimmickHelp* mHelp; + bool mJustStarted; + int mFirstDicomDatabaseIconIndex; // Id of the item which activated the popup menu wxTreeItemId mItemOfMenu; @@ -130,6 +195,8 @@ namespace creaImageIO WxGimmickFieldsView* mFieldsView; + wxNotebook* mwxNotebook; + wxSplitterWindow *mSplitter1; wxSplitterWindow *mSplitter2; @@ -138,7 +205,7 @@ namespace creaImageIO // Previewer vtkImageViewer2* mViewer; // Associated wxvtk interactor - crea::wxVTKRenderWindowInteractor *mInteractor; + crea::creawxVTKRenderWindowInteractor *mInteractor; int mx1,mx2,my1,my2,mz1,mz2; double mspx,mspy,mspz; @@ -197,6 +264,7 @@ namespace creaImageIO void OnItemCollapsing(wxTreeEvent& event); void OnSelChanged(wxTreeEvent& event); void OnSelChanging(wxTreeEvent& event); + bool IsImageSelectable(DicomNode* node); void OnTreeKeyDown(wxTreeEvent& event); void OnItemActivated(wxTreeEvent& event); void OnItemRightClick(wxTreeEvent& event); @@ -210,6 +278,7 @@ namespace creaImageIO void OnPopUpAddFile(wxCommandEvent& event); void OnPopUpAddRawFile(wxCommandEvent& event); void OnPopUpAddDirectory(wxCommandEvent& event); + void OnPopUpAddToFavorites(wxCommandEvent& event); void OnPopUpRemove(wxCommandEvent& event); void OnPopUpSettings(wxCommandEvent& event); void OnPopUpAbout(wxCommandEvent& event);