X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FcreaImageIOWxGimmick.h;h=75e969ef453c2ebcecb61cfd4032284716770526;hb=00dbbc177a9b5db334393734151e820a65f65efc;hp=13cdaf8e3109fc01749d4877339eaf98f5b0ef7f;hpb=29cfc2f238ce7c522d3c878e032982d3a52d1044;p=creaImageIO.git diff --git a/src/creaImageIOWxGimmick.h b/src/creaImageIOWxGimmick.h index 13cdaf8..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 @@ -45,58 +46,96 @@ namespace creaImageIO public MultiThreadImageReaderUser { public: - + /// Ctor WxGimmick(wxWindow *parent, const wxWindowID id, 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; + /// 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;} void LoadConfiguration(); void SaveConfiguration(); void SetSaveConfigurationOnClose(bool v) { mSaveConfigurationOnClose = v; } - + void LoadOrCreateFavoritesDatabase(); 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); @@ -105,6 +144,8 @@ namespace creaImageIO void LoadChildren( wxTreeItemId& id ); friend class WxGimmickEvent; + void ShowHelp(); + private: WxGimmick() { } @@ -115,6 +156,7 @@ namespace creaImageIO int mCurrentSelectionImageSize[4]; DicomDatabaseListType mDicomDatabaseList; + DicomDatabase* mFavoriteDatabase; wxTreeListCtrl* mTreeListCtrl; wxTreeItemId mTreeRootId; @@ -132,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; @@ -145,6 +195,8 @@ namespace creaImageIO WxGimmickFieldsView* mFieldsView; + wxNotebook* mwxNotebook; + wxSplitterWindow *mSplitter1; wxSplitterWindow *mSplitter2; @@ -153,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; @@ -226,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);