X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOWxGimmickView.cpp;h=0cab09e7fb79d2a49630e6922e13b093f0831421;hb=a00e6172593c713640aaa9bf1e61db6200231a0f;hp=ac204d9227960bcccb940168b6bf7662f5880c2e;hpb=a67d921cdc10d438852b48c2985f14d91320e016;p=creaImageIO.git diff --git a/src2/creaImageIOWxGimmickView.cpp b/src2/creaImageIOWxGimmickView.cpp index ac204d9..0cab09e 100644 --- a/src2/creaImageIOWxGimmickView.cpp +++ b/src2/creaImageIOWxGimmickView.cpp @@ -8,6 +8,8 @@ #include #include #include +#include +#include using namespace crea; // Icons @@ -30,9 +32,13 @@ using namespace crea; #if defined(BUILD_BRUKER) #include "bruker2dicom.h" #endif + + +#include #ifdef _DEBUG #define new DEBUG_NEW #endif + namespace creaImageIO { @@ -49,6 +55,7 @@ namespace creaImageIO TOOL_SETTINGS_ID = 7, TOOL_TOOLS_ID = 8, TOOL_CREATEDB_ID = 9, + TOOL_PACS_ID = 10 }; //====================================================================== @@ -86,7 +93,7 @@ namespace creaImageIO //====================================================================== // CTor - WxGimmickView::WxGimmickView(Gimmick* gimmick, + WxGimmickView::WxGimmickView(boost::shared_ptr gimmick, wxWindow *parent, const wxWindowID id, const wxPoint& pos, @@ -105,34 +112,32 @@ namespace creaImageIO mCurrentDirectory = std2wx(gimmick->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 - wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL); + msizer = new wxBoxSizer(wxVERTICAL); // Create the tool bar CreateToolBar(); - sizer->Add( mToolBar ,0, wxGROW ,0); + 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); + -1, wxDefaultPosition, wxDefaultSize, 0); //Gimmick mGimmick=gimmick; - - mSelectionMaxDimension= max_dim; - mSelectionMinDimension= min_dim; + mSelectionMaxDimension = max_dim; + mSelectionMinDimension = min_dim; // Create the views CreateTreeViews(); @@ -140,7 +145,7 @@ namespace creaImageIO // Bottom panel mBottomPanel = new wxPanel(mSplitter,-1); - wxBoxSizer *bottom_sizer = new wxBoxSizer(wxVERTICAL); //HORIZONTAL); + mbottom_sizer = new wxBoxSizer(wxVERTICAL); //HORIZONTAL); // Previewer @@ -152,15 +157,15 @@ namespace creaImageIO mViewer->StartPlayer(); - bottom_sizer->Add(mViewer,1,wxGROW,1); + mbottom_sizer->Add(mViewer,1,wxGROW,1); // mViewer->Show(); mText = new wxStaticText(mBottomPanel, wxID_ANY, wxT("Welcome to Gimmick!")); - bottom_sizer->Add(mText,0,wxGROW,0); + mbottom_sizer->Add(mText,0,wxGROW,0); - mBottomPanel->SetSizer(bottom_sizer); + mBottomPanel->SetSizer(mbottom_sizer); // Splitting int hsize = size.GetHeight(); @@ -172,17 +177,17 @@ namespace creaImageIO mSplitter->SplitHorizontally( mNotebook, mBottomPanel, top_minsize); - sizer->Add( mSplitter,1,wxGROW ,0); + msizer->Add( mSplitter, 1, wxGROW, 0); mProgressDialog=0; - SetSizer( sizer ); + SetSizer( msizer ); SetAutoLayout(true); Layout(); - mListener=new Listener(); - mListener->ConnectObserver(boost::bind( &WxGimmickView::OnDriveMount , this, _1 ) ); - mListener->Create(); - mListener->Run(); - mListener->Pause(); + //mListener=new Listener(); + //mListener->ConnectObserver(boost::bind( &WxGimmickView::OnDriveMount, this, _1 ) ); + //mListener->Create(); + // mListener->Run(); + // mListener->Pause(); mConstructed = true; } @@ -196,10 +201,9 @@ namespace creaImageIO mViewer->StopPlayer(); GimmickDebugMessage(1,"WxGimmickView::~WxGimmickView" <IsAlive()) - { - mListener->Delete(); - } + delete mIcon; + delete mViewer; + //if(mListener->IsAlive()) { mListener->Delete(); } } //====================================================================== @@ -256,7 +260,13 @@ namespace creaImageIO mIcon->GetBitmap(Icon_create_database), _T("Create DB from an Attributes Descriptor file") ); - +#if defined(BUILD_PACS) + mToolAddFile = mToolBar->AddTool( TOOL_PACS_ID, + _T("PACS Connection,"), + mIcon->GetBitmap(Icon_create_database), + _T("Echo, Find and Get to a PACS") + ); +#endif //const wxBitmap& bitmap1, const wxString& shortHelpString = "", wxItemKind kind = wxITEM_NORMAL) mToolBar->Realize(); @@ -272,7 +282,7 @@ namespace creaImageIO GimmickMessage(2,"Creating the tree view for '"<< name<<"'"< files; GetTreeViewMap()[crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection()))]->GetSelectedAsString(files); - ReadImagesNotThreaded(s,files,dim); + ReadImagesNotThreaded(s, files, dim); + } + + //====================================================================== + void WxGimmickView::GetSelectedImagesInVector(std::vector& s, int dim) + { + std::vector files; + GetTreeViewMap()[crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection()))]->GetSelectedAsString(files); + ReadImagesNotThreadedInVector(s, files, dim); } //====================================================================== @@ -317,17 +335,17 @@ namespace creaImageIO wxIcon icons[20]; // should correspond to Icon_xxx enum - icons[Icon_accept] = wxIcon(accept_xpm); - icons[Icon_add] = wxIcon(add_xpm); - icons[Icon_folder_down] = wxIcon(folder_down_xpm); - icons[Icon_page_down] = wxIcon(page_down_xpm); - icons[Icon_remove] = wxIcon(remove_xpm); - icons[Icon_database_add] = wxIcon(database_add_xpm); - icons[Icon_help] = wxIcon(help_xpm); - icons[Icon_synchronize] = wxIcon(synchronize_xpm); + icons[Icon_accept] = wxIcon(accept_xpm); + icons[Icon_add] = wxIcon(add_xpm); + icons[Icon_folder_down] = wxIcon(folder_down_xpm); + icons[Icon_page_down] = wxIcon(page_down_xpm); + icons[Icon_remove] = wxIcon(remove_xpm); + icons[Icon_database_add] = wxIcon(database_add_xpm); + icons[Icon_help] = wxIcon(help_xpm); + icons[Icon_synchronize] = wxIcon(synchronize_xpm); icons[Icon_create_database] = wxIcon(create_database_xpm); - icons[Icon_settings] = wxIcon(settings_xpm); - icons[Icon_tools] = wxIcon(tools_xpm); + icons[Icon_settings] = wxIcon(settings_xpm); + icons[Icon_tools] = wxIcon(tools_xpm); // unsigned int NbIcons = 8; // Make an image list containing small icons @@ -384,8 +402,8 @@ namespace creaImageIO 1000, this, wxPD_ELAPSED_TIME | - // wxPD_ESTIMATED_TIME | - // wxPD_REMAINING_TIME | + // wxPD_ESTIMATED_TIME | + // wxPD_REMAINING_TIME | wxPD_CAN_ABORT ); // TO DO : select the current tree handler @@ -416,15 +434,13 @@ namespace creaImageIO if (FD->ShowModal()==wxID_OK) { - - std::string dirname = wx2std (FD->GetPath()); bool recurse = isNeedRecursive(dirname); if (recurse) { - recurse = wxMessageBox(_T("Recurse into sub-directories ?"), _T("Scan directory"), wxYES_NO,this ) == wxYES ? true : false; + recurse = wxMessageBox(_T("Recurse into sub-directories ?"), _T("Scan directory"), wxYES_NO,this ) == wxYES ? true : false; } - + wxBusyCursor busy; wxString title(_T("Adding directory")); if (recurse) @@ -436,24 +452,24 @@ namespace creaImageIO this, wxPD_ELAPSED_TIME | wxPD_SMOOTH | - // wxPD_ESTIMATED_TIME | - // wxPD_REMAINING_TIME | + // wxPD_ESTIMATED_TIME | + // wxPD_REMAINING_TIME | wxPD_CAN_ABORT ); - + mCurrentDirectory = FD->GetPath(); mGimmick->AddDir(crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection())),dirname,recurse); mProgressDialog->Pulse(_T("Updating view...")); - + UpdateTreeViewLevel(crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection())),1); delete mProgressDialog; DisplayAddSummary(); - } mViewer->StartPlayer(); + delete FD; } - //================================================= + //================================================= // Determines number of files potentially to add to database int WxGimmickView::NumberFilesToAdd(const std::string &dirpath, bool recursive) { @@ -476,10 +492,9 @@ namespace creaImageIO } } return nb; - } - //================================================= + //================================================= // Test a directory to know if contains sub-directory to analyze bool WxGimmickView::isNeedRecursive(std::string i_name) { @@ -549,8 +564,6 @@ namespace creaImageIO ClearSelection(); }*/ ReadImageThreaded(sel); - - } //================================================== @@ -639,6 +652,7 @@ namespace creaImageIO //================================================== +#if defined(WIN32) //================================================== void WxGimmickView::OnInternalIdle() { @@ -655,7 +669,15 @@ namespace creaImageIO mViewer->RefreshIfNecessary(); } } - +#else + void WxGimmickView::UpdateWindowUI(long flags) + { + if(mViewer) + { + mViewer->RefreshIfNecessary(); + } + } +#endif //================================================== //================================================== @@ -668,7 +690,7 @@ namespace creaImageIO mViewer->RefreshIfNecessary(); ResetExtent(); } - + //================================================= //================================================= @@ -676,17 +698,20 @@ namespace creaImageIO { //TODO Select current tree handler wxBusyCursor busy; - GetTreeViewMap()[crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection()))]->RemoveSelected(); + std::string remove; + mGimmick->GetSetting(SETTINGS_REMOVE_PATIENT_DISPLAY,remove); + GetTreeViewMap()[crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection()))]->RemoveSelected(remove); + mGimmick->UpdateSetting(SETTINGS_REMOVE_PATIENT_DISPLAY,remove); ClearSelection(); } //================================================= - + //================================================= void WxGimmickView::AddIgnoreFile(tree::Node* toRemove) { mGimmick->RemoveFile(crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection())),toRemove); - GetTreeViewMap()[crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection()))]->UpdateLevel(1); + // GetTreeViewMap()[crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection()))]->UpdateLevel(1); } //================================================= @@ -728,6 +753,7 @@ namespace creaImageIO if (dialog.ShowModal() == wxID_OK) { + wxBusyCursor busy; int sel=dialog.GetSelection(); bool repair=false; bool checkAttributes=false; @@ -756,6 +782,7 @@ namespace creaImageIO dial->SetSizer(siz); dial->ShowModal(); } + //================================================= void WxGimmickView::OnImportExport(wxCommandEvent &Event) { @@ -822,7 +849,7 @@ namespace creaImageIO std::string inputDir = crea::wx2std(gimmickTools->getInputDir()); std::string outputDir = crea::wx2std(gimmickTools->getOutputDir()); - bool addToDB = gimmickTools->getCheckBoxValue(); + bool addToDB = gimmickTools->getAddToDBCheckBoxValue(); if (inputDir.compare("")!=0 && outputDir.compare("")!=0) { @@ -849,7 +876,6 @@ namespace creaImageIO } } } - else { wxMessageBox(_T("One or both of the directory fields are empty"),_T("Empty Fields"),wxOK,this); @@ -858,9 +884,9 @@ namespace creaImageIO delete gimmickTools; #endif } - mViewer->StartPlayer(); } + //================================================= void WxGimmickView::CreateSettingsDialog(wxNotebook* nb, wxDialog* dial) @@ -892,7 +918,7 @@ namespace creaImageIO nb->AddPage( pacs, crea::std2wx("Connect to PACS") ); //Third page: CD/DVD Watch - WxListenerPanel* cdWatch=new WxListenerPanel(nb,dial, this, mListener->IsPaused()); + WxListenerPanel* cdWatch=new WxListenerPanel(nb,dial, this,true);//, mListener->IsPaused()); nb->AddPage( cdWatch, crea::std2wx("CD/DVD") ); //Fourth page: Selection of attributes to show @@ -1002,6 +1028,46 @@ namespace creaImageIO dial->ShowModal(); } + //======================================================================== + void WxGimmickView::DumpTags(std::string i_filename) + { + WxDumpPanel* pan= new WxDumpPanel (this,i_filename); + pan->ShowModal(); + } + + //======================================================================== + void WxGimmickView::ExportToStorage(const std::vector i_filenames) + { + std::vector storages; + Gimmick::TreeHandlerMapType::iterator it = mGimmick->GetTreeHandlerMap().begin(); + for(;it != mGimmick->GetTreeHandlerMap().end(); it++) + { + storages.push_back(it->first); + } + + WxExportDlg* exp= new WxExportDlg(this,storages); + if ( exp->ShowModal() ==ID_EXPORT_OK) + { + std::string storage = exp->GetStorage(); + mProgressDialog = + new wxProgressDialog(_T("Adding file(s)"), + _T(""), + 1000, + this, + wxPD_ELAPSED_TIME | + // wxPD_ESTIMATED_TIME | + // wxPD_REMAINING_TIME | + wxPD_CAN_ABORT ); + mGimmick->AddFiles(storage,i_filenames); + mProgressDialog->Pulse(_T("Updating view...")); + UpdateTreeViewLevel(storage,1); + delete mProgressDialog; + DisplayAddSummary(); + } + } + + + //======================================================================== void WxGimmickView::OnFieldsEdited(tree::Node* node, const std::string& name, const std::string& key, const std::string& val) { @@ -1130,4 +1196,3 @@ namespace creaImageIO } // EO namespace creaImageIO -