X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FcreaImageIOWxGimmickView.cpp;h=a5650ee32978d68830327d8b0de2b66ac7c68a68;hb=refs%2Fheads%2Fvtk9itk5wx3-macos;hp=0ee66e527742783db26a6974ce6f4980a4252c02;hpb=abc0f1167f95cd0ed091cfbd3ac6df41445caf90;p=creaImageIO.git diff --git a/src/creaImageIOWxGimmickView.cpp b/src/creaImageIOWxGimmickView.cpp index 0ee66e5..21c95b7 100644 --- a/src/creaImageIOWxGimmickView.cpp +++ b/src/creaImageIOWxGimmickView.cpp @@ -131,40 +131,42 @@ namespace creaImageIO const wxPoint& pos, const wxSize& size, int min_dim, - int max_dim, + int max_dim, int number_of_threads) : wxPanel(parent,id,pos,size), GimmickView(gimmick, number_of_threads), - mProgressDialog(0), + mProgressDialog(NULL), mConstructed(false) { - GimmickDebugMessage(1,"WxGimmickView::WxGimmickView" - <GetHomeDirectory()); - // Connect the AddProgress callback - gimmick->ConnectAddProgressObserver - ( boost::bind( &WxGimmickView::OnAddProgress , this, _1 ) ); + gimmick->ConnectAddProgressObserver( boost::bind( &WxGimmickView::OnAddProgress , this, _1 ) ); + // Create the list of icons (mIcon) CreateIconList(); + // Global sizer msizer = new wxBoxSizer(wxVERTICAL); + // Create the tool bar - CreateToolBar(); + CreateToolBar( ); msizer->Add( mToolBar, 0, wxGROW, 0); + // Split part below toolbar into notebook for views and panel // for preview, messages... mSplitter = new wxSplitterWindow( this , -1); // Notebook - mNotebook = new wxNotebook(mSplitter, - -1, wxDefaultPosition, wxDefaultSize, 0); + mNotebook = new wxNotebook(mSplitter, -1, wxDefaultPosition, wxDefaultSize, 0); //Gimmick mGimmick=gimmick; @@ -173,6 +175,7 @@ namespace creaImageIO mSelectionMinDimension = min_dim; // Create the views + CreateTreeViews(); // Bottom panel @@ -191,31 +194,31 @@ namespace creaImageIO mbottom_sizer->Add(mViewer,1,wxGROW,1); + + // mViewer->Show(); mText = new wxStaticText(mBottomPanel, wxID_ANY, wxT("Welcome to Gimmick!")); mbottom_sizer->Add(mText,0,wxGROW,0); - - - + mBottomPanel->SetSizer(mbottom_sizer); // Splitting /// \TODO fix warning: unused variable hsize int hsize = size.GetHeight(); - int top_minsize = 450; - int bottom_minsize = 50; + int top_minsize = 450; + int bottom_minsize = 50; mSplitter->SetMinimumPaneSize( bottom_minsize ); - mSplitter->SplitHorizontally( mNotebook, mBottomPanel, - top_minsize); + mSplitter->SplitHorizontally( mNotebook, mBottomPanel, top_minsize); msizer->Add( mSplitter, 1, wxGROW, 0); - mProgressDialog=0; + mProgressDialog=NULL; SetSizer( msizer ); SetAutoLayout(true); + Layout(); //mListener=new Listener(); //mListener->ConnectObserver(boost::bind( &WxGimmickView::OnDriveMount, this, _1 ) ); @@ -233,28 +236,66 @@ namespace creaImageIO { // stop the viewer before application exit. mViewer->StopPlayer(); - GimmickDebugMessage(1,"WxGimmickView::~WxGimmickView" - <IsAlive()) { mListener->Delete(); } } //====================================================================== - + + + +void WxGimmickView::AddBtnTool(wxPanel *panel, wxBoxSizer *sizerH, int id, wxString label, int idBitmap, wxString tooltip ) +{ + wxBoxSizer *sizer; + wxBitmapButton *btn; + wxBitmap bitmap; + + bitmap = mIcon->GetBitmap(idBitmap); + btn = new wxBitmapButton(mToolBar, id, bitmap, wxDefaultPosition, wxSize(50,50) , wxBU_BOTTOM ); + btn->SetToolTip( tooltip ); + sizer = new wxBoxSizer(wxVERTICAL); + sizer->Add(btn,1,wxGROW,0); + sizer->Add(new wxStaticText(mToolBar,-1,label) , 0, wxALL | wxALIGN_CENTER, 3); + sizerH->Add( sizer ,1,wxGROW,0); +} + //====================================================================== /// Creates the tool bar void WxGimmickView::CreateToolBar() { + mToolBar = new wxPanel(this,-1, wxDefaultPosition, wxSize(80,80) ); + wxBoxSizer *sizerH = new wxBoxSizer(wxHORIZONTAL); + + AddBtnTool(mToolBar, sizerH, TOOL_ADDFILES_ID , _T("Add file(s)") , Icon_page_down , _T("Add one or more file to database") ); + AddBtnTool(mToolBar, sizerH, TOOL_ADDDIR_ID , _T("Add folder") , Icon_folder_down , _T("Add the content of a folder to database") ); + AddBtnTool(mToolBar, sizerH, TOOL_ADDDATABASE_ID , _T("Open database") , Icon_database_add , _T("Open a local or distant database") ); + AddBtnTool(mToolBar, sizerH, TOOL_REMOVE_ID , _T("Remove") , Icon_remove , _T("Remove selected items") ); + AddBtnTool(mToolBar, sizerH, TOOL_SYNCHRONIZE_ID , _T("Synchronize") , Icon_synchronize , _T("Synchronizes the database with disk") ); + AddBtnTool(mToolBar, sizerH, TOOL_HELP_ID , _T("Help") , Icon_help , _T("Open help window") ); + AddBtnTool(mToolBar, sizerH, TOOL_SETTINGS_ID , _T("System settings") , Icon_settings , _T("Allows the modification of various system settings") ); + AddBtnTool(mToolBar, sizerH, TOOL_TOOLS_ID , _T("Tools") , Icon_tools , _T("Applies tools to images") ); + AddBtnTool(mToolBar, sizerH, TOOL_CREATEDB_ID , _T("Create database") , Icon_create_database , _T("Create DB from an Attributes Descriptor file") ); + #if defined(BUILD_PACS) + AddBtnTool(mToolBar, sizerH, TOOL_PACS_ID , _T("PACS Connection,"), Icon_create_database , _T("Echo, Find and Get to a PACS") ); + #endif + mToolBar->SetSizer( sizerH ); + mToolBar->Layout(); + +/* EED 2021-12-17 + The wxToolBar depends from wxFrame, in this code it is not the case. In Mac Os is not working ! + Change the mechanisme from wcToolBar to normal Buttons long style = wxTB_HORIZONTAL | wxNO_BORDER | wxTB_TEXT; - mToolBar = new wxToolBar(this,-1,wxDefaultPosition,wxDefaultSize, - style); + mToolBar = new wxToolBar(this,-1,wxDefaultPosition,wxDefaultSize,style); - mToolAddFile = mToolBar->AddTool( TOOL_ADDFILES_ID, + mToolAddFile = mToolBar->AddTool( TOOL_ADDFILES_ID, _T("Add file(s)"), mIcon->GetBitmap(Icon_page_down), _T("Add one or more file to database") ); - mToolAddDir = mToolBar->AddTool( TOOL_ADDDIR_ID, + mToolAddDir = mToolBar->AddTool( TOOL_ADDDIR_ID, _T("Add folder"), mIcon->GetBitmap(Icon_folder_down), _T("Add the content of a folder to database") @@ -302,8 +343,9 @@ namespace creaImageIO ); #endif //const wxBitmap& bitmap1, const wxString& shortHelpString = "", wxItemKind kind = wxITEM_NORMAL) + mToolBar->Realize(); - mToolBar->Realize(); + */ } //====================================================================== @@ -313,8 +355,7 @@ namespace creaImageIO void WxGimmickView::CreateTreeView( TreeHandler* h) { std::string name(h->GetTree().GetAttribute("Name")); - GimmickMessage(2,"Creating the tree view for '"<< - name<<"'"< &outG, std::vector< std::string> i_attr, + void WxGimmickView::getSelectedFiles(std::vector &outG, std::vector< std::string> i_attr, std::vector &outFileNames, bool mult, const std::string out_model) { // First we select the files @@ -364,12 +405,11 @@ namespace creaImageIO std::string asking; std::string dim; - bool bsingle = isSingle(files.front()); + bool bsingle = isSingle( files.front() ); int i_dim_out; mGimmick->GetSetting(SETTINGS_OUTPUT_ASK, asking); mGimmick->GetSetting(SETTINGS_OUTPUT_DIM, dim); - if (asking == "true") { // display the output dialog box @@ -432,6 +472,7 @@ namespace creaImageIO } // Now we read and create the waiting output (vtkImageData * or OutGimmickData *) readImages(outG, sort_files, Oattr, i_dim_out, zspacing); + outFileNames = sort_files; } @@ -504,7 +545,15 @@ namespace creaImageIO void WxGimmickView::OnAddFiles(wxCommandEvent& event) { mViewer->StopPlayer(); + +//EED 2017-09-16 Migration wxWidgets 2.8 to 3.0 +#if wxMAJOR_VERSION <= 2 long style = wxOPEN | wxFILE_MUST_EXIST | wxFD_MULTIPLE; +#else + long style = wxFD_OPEN | wxFD_FILE_MUST_EXIST | wxFD_MULTIPLE; +#endif + + std::string wc("*"); wxFileDialog* FD = new wxFileDialog( 0, _T("Select file"), @@ -651,9 +700,7 @@ namespace creaImageIO //================================================= void WxGimmickView::OnSelectionChange(const std::vector& sel, bool isSelection, int selection, bool needProcess) { - GimmickDebugMessage(5, - "WxGimmickView::OnSelectionChange" - <::const_iterator i; for(i=sel.begin();i!=sel.end()&&valid;++i) @@ -672,16 +717,12 @@ namespace creaImageIO valid= ValidateSelected((*i), mSelectionMinDimension, mSelectionMaxDimension ); - } - } - else if(isSelection) - { + } // for + } else if(isSelection) { valid= ValidateSelected(sel.front(), mSelectionMinDimension, mSelectionMaxDimension ); - } - else - { + } else { ResetExtent(); std::vector::const_iterator i; for(i=sel.begin();i!=sel.end()&&valid;++i) @@ -689,18 +730,22 @@ namespace creaImageIO valid= ValidateSelected((*i), mSelectionMinDimension, mSelectionMaxDimension ); - } - } + } // for + } // if sel.size mText->SetLabel(crea::std2wx(GetMessage())); - /*if(valid) - { - ReadImageThreaded(sel); - } - else - { - ClearSelection(); - }*/ - ReadImageThreaded(sel); +/* + if(valid) + { + ReadImageThreaded(sel); + } else { + ClearSelection(); + } +*/ + + +//EED1 2018-08 +// ReadImageThreaded(sel); + } //================================================== @@ -709,9 +754,7 @@ namespace creaImageIO ///Reads Images (Threaded) void WxGimmickView::ReadImageThreaded(const std::vector& sel) { - GimmickDebugMessage(5, - "ReadImageThreaded" - < ph(new ImagePointerHolder(GetDefaultImage())); pointers.push_back(ph); mViewer->SetImageVector(pointers); - } + } // if } //================================================== @@ -793,15 +834,16 @@ namespace creaImageIO //================================================== void WxGimmickView::OnInternalIdle() { - if (!mConstructed) return; + if (!mConstructed) return; static bool first_time = true; + if (false) { first_time = false; } // GimmickMessage(1,"WxGimmickView : Refresh viewer"<StartPlayer(); - if(mViewer) + if(mViewer!=NULL) { mViewer->RefreshIfNecessary(); } @@ -809,9 +851,11 @@ namespace creaImageIO #else void WxGimmickView::UpdateWindowUI(long flags) { - if(mViewer) + if(mViewer!=NULL) { - mViewer->RefreshIfNecessary(); +// EED 2018-08-23 +// GL Conflict because window is not showing the fist time +//EED mViewer->RefreshIfNecessary(); } } #endif @@ -1175,9 +1219,9 @@ namespace creaImageIO //======================================================================== void WxGimmickView::CreateEditFieldsDialog(tree::Node* node, std::vector names, std::vector keys) { - wxDialog* dial= new wxDialog (this,-1,crea::std2wx("Edit Fields for node "+node->GetLabel()),wxDefaultPosition, wxSize(350,155)); - wxBoxSizer *siz = new wxBoxSizer(wxVERTICAL); - WxEditFieldsPanel* ef = new WxEditFieldsPanel(dial, dial, this, node, names, keys); + wxDialog *dial= new wxDialog (this,-1,crea::std2wx("Edit Fields for node "+node->GetLabel()),wxDefaultPosition, wxSize(350,155)); + wxBoxSizer *siz = new wxBoxSizer(wxVERTICAL); + WxEditFieldsPanel *ef = new WxEditFieldsPanel(dial, dial, this, node, names, keys); siz->Add( ef,1,wxGROW ,0); dial->SetSizer(siz); @@ -1250,7 +1294,7 @@ namespace creaImageIO wxString s(wxString::From8BitData(mess)); // std::cout << "Pulse"<Pulse(s)) { @@ -1346,12 +1390,26 @@ namespace creaImageIO { mProgressDialog->Resume(); mProgressDialog->Destroy(); - mProgressDialog = 0; + mProgressDialog = NULL; } //================================================= //================================================= + +BEGIN_EVENT_TABLE(WxGimmickView, wxPanel) + EVT_BUTTON(TOOL_CREATEDB_ID, WxGimmickView::OnCreateDB) + EVT_BUTTON(TOOL_ADDFILES_ID, WxGimmickView::OnAddFiles) + EVT_BUTTON(TOOL_ADDDIR_ID, WxGimmickView::OnAddDir) + EVT_BUTTON(TOOL_ADDDATABASE_ID, WxGimmickView::OnAddDB) + EVT_BUTTON(TOOL_REMOVE_ID, WxGimmickView::OnRemove) + EVT_BUTTON(TOOL_SYNCHRONIZE_ID, WxGimmickView::OnSynchronize) + EVT_BUTTON(TOOL_SETTINGS_ID, WxGimmickView::OnSettings) + EVT_BUTTON(TOOL_TOOLS_ID, WxGimmickView::OnTools) +END_EVENT_TABLE() + + +/* BEGIN_EVENT_TABLE(WxGimmickView, wxPanel) EVT_TOOL(TOOL_CREATEDB_ID, WxGimmickView::OnCreateDB) EVT_TOOL(TOOL_ADDFILES_ID, WxGimmickView::OnAddFiles) @@ -1362,6 +1420,7 @@ namespace creaImageIO EVT_TOOL(TOOL_SETTINGS_ID, WxGimmickView::OnSettings) EVT_TOOL(TOOL_TOOLS_ID, WxGimmickView::OnTools) END_EVENT_TABLE() +*/ //================================================= } // EO namespace creaImageIO