X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOWxGimmickView.cpp;h=c3e2b07c20807c32ca585a052bdc2bfeb4d5120c;hb=c272e3694727dd6fd52dd14538e21f798417c378;hp=a900d0d5be2e1bf5ba3be86313d1a1314b74962d;hpb=d87a9f8f86d472c5ecaed70fa83f1e8a1024a450;p=creaImageIO.git diff --git a/src2/creaImageIOWxGimmickView.cpp b/src2/creaImageIOWxGimmickView.cpp index a900d0d..c3e2b07 100644 --- a/src2/creaImageIOWxGimmickView.cpp +++ b/src2/creaImageIOWxGimmickView.cpp @@ -4,6 +4,8 @@ #include #include #include +#include +#include using namespace crea; // Icons @@ -18,6 +20,7 @@ using namespace crea; #include "icons/synchronize.xpm" #include "icons/settings.xpm" #include "icons/tools.xpm" +//#include "icons/import.xpm" #include #include @@ -344,7 +347,7 @@ namespace creaImageIO { mViewer->StopPlayer(); long style = wxOPEN | wxFILE_MUST_EXIST | wxFD_MULTIPLE; - std::string wc("*.*"); + std::string wc("*"); wxFileDialog* FD = new wxFileDialog( 0, _T("Select file"), _T(""), @@ -421,9 +424,10 @@ namespace creaImageIO mProgressDialog = new wxProgressDialog(_T("Adding directory"), _T(""), - 1000, + NumberFilesToAdd(dirname,recurse), this, - wxPD_ELAPSED_TIME | + wxPD_ELAPSED_TIME | + wxPD_SMOOTH | // wxPD_ESTIMATED_TIME | // wxPD_REMAINING_TIME | wxPD_CAN_ABORT ); @@ -440,6 +444,33 @@ namespace creaImageIO mViewer->StartPlayer(); } + + //================================================= + // Determines number of files potentially to add to database + int WxGimmickView::NumberFilesToAdd(const std::string &dirpath, bool recursive) + { + int nb = 0; + if ( !boost::filesystem::exists( dirpath ) ) return nb; + boost::filesystem::directory_iterator end_itr; // default construction yields past-the-end + for ( boost::filesystem::directory_iterator itr( dirpath ); itr != end_itr; ++itr ) + { + // If is directory & recurse : do recurse + if ( boost::filesystem::is_directory(itr->status()) ) + { + if (recursive) + { + nb += NumberFilesToAdd(itr->string(), recursive); + } + } + else + { + nb++; + } + } + return nb; + + } + //================================================= // Test a directory to know if contains sub-directory to analyze bool WxGimmickView::isNeedRecursive(std::string i_name) @@ -652,6 +683,19 @@ namespace creaImageIO wxMessageBox(std2wx("The selected files have been copied"),_T("Copy files"),wxOK,this); } + //================================================= + void WxGimmickView::AddDir(std::string dirName) + { + mProgressDialog = new wxProgressDialog(_T("Adding directory"),_T(""),1000,this,wxPD_ELAPSED_TIME |wxPD_CAN_ABORT ); + mCurrentDirectory = crea::std2wx(dirName); + mGimmick->AddDir(crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection())),dirName,true); + mProgressDialog->Pulse(_T("Updating view...")); + + UpdateTreeViewLevel(crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection())),1); + delete mProgressDialog; + DisplayAddSummary(); + } + //================================================= void WxGimmickView::OnSynchronize(wxCommandEvent& event) { @@ -700,6 +744,38 @@ namespace creaImageIO dial->ShowModal(); } //================================================= + void WxGimmickView::OnImportExport(wxCommandEvent &Event) + { + wxBusyCursor busy; + // Test if one image is selected => export + // if not =>import + if (GetTreeViewMap()[crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection()))]) + { + ExportImages(); + } + else + { + ImportImages(); + } + } + + void WxGimmickView::ExportImages() + { + //Archive selection: name, emplacement + //same process than copy local but to a zip + // if settings are yes "always ask for descriptor addition", ask + // if settings are yes, adding descriptor + } + + void WxGimmickView::ImportImages() + { + //Find the *.zip + //dezip + // Contain a descriptor.text + // create a new database, and add to database + // if not, add to current database + // + } //================================================= //AndresDonadio @@ -749,7 +825,7 @@ namespace creaImageIO if (addToDB) { mProgressDialog = new wxProgressDialog(_T("Adding directory"),_T(""),1000,this,wxPD_ELAPSED_TIME |wxPD_CAN_ABORT ); - mCurrentDirectory = gimmickTools->getOutputDir(); // Try // JPRx + mCurrentDirectory = gimmickTools->getOutputDir(); mGimmick->AddDir(crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection())),outputDir,true); mProgressDialog->Pulse(_T("Updating view...")); @@ -765,6 +841,7 @@ namespace creaImageIO wxMessageBox(_T("One or both of the directory fields are empty"),_T("Empty Fields"),wxOK,this); } } + delete gimmickTools; #endif } @@ -793,18 +870,40 @@ namespace creaImageIO nb->AddPage( customConfig, crea::std2wx("Customize Configuration") ); //Second page: Creation of Databases - wxPanel* databaseCreation=new wxPanel(nb); - nb->AddPage( databaseCreation, crea::std2wx("Create Database") ); + /*wxPanel* databaseCreation=new wxPanel(nb); + nb->AddPage( databaseCreation, crea::std2wx("Create Database") );*/ + + //Second page (temporary): Connection to PACS + WxPACSConnectionPanel* pacs=new WxPACSConnectionPanel(nb,dial, this); + nb->AddPage( pacs, crea::std2wx("Connect to PACS") ); //Third page: CD/DVD Watch WxListenerPanel* cdWatch=new WxListenerPanel(nb,dial, this, mListener->IsPaused()); nb->AddPage( cdWatch, crea::std2wx("CD/DVD") ); - //Fourth page: Selection of attributes to show (edit) - wxPanel* attSelection=new wxPanel(nb); + //Fourth page: Selection of attributes to show + std::vector shown; + std::vector nShown; + GetTreeViewMap()[crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection()))]->GetAttributes(shown,nShown,1); + int nLev=GetTreeViewMap()[crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection()))]->GetNumberOfLevels(); + WxAttributeSelectionPanel* attSelection=new WxAttributeSelectionPanel(nb,dial,this,shown,nShown,nLev); nb->AddPage( attSelection, crea::std2wx("Selection of Attributes") ); } + //=================================================================== + void WxGimmickView::GetVisibleAttributes(std::vector& shown, + std::vector& nShown, int level) + { + GetTreeViewMap()[crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection()))]->GetAttributes(shown,nShown,level); + } + + //=================================================================== + void WxGimmickView::OnAttributesChanged(const std::vector& nShown, int level) + { + GetTreeViewMap()[crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection()))]->SetNonVisibleAttributes(nShown,level); + std::vector n=nShown; + GetTreeViewMap()[crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection()))]->CreateCtrl(n,level); + } //=================================================================== void WxGimmickView::OnSaveSettingsCallback(const std::string& copyPath, const std::string& dbPath, @@ -882,7 +981,7 @@ namespace creaImageIO //======================================================================== void WxGimmickView::CreateEditFieldsDialog(tree::Node* node, std::vector names, std::vector keys) { - wxDialog* dial= new wxDialog (this,-1,_T("Edit Fields for node "+node->GetLabel()),wxDefaultPosition, wxSize(350,155)); + 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); @@ -902,9 +1001,7 @@ namespace creaImageIO /// AddProgress Gimmick callback void WxGimmickView::OnAddProgress( Gimmick::AddProgress& p) { - char mess[200]; - sprintf(mess,"%i dirs : %i files :\n %i handled - %i added", p.GetNumberScannedDirs(), p.GetNumberScannedFiles(),