From: Eduardo DAVILA Date: Tue, 7 Aug 2018 14:11:56 +0000 (+0200) Subject: #3218 creaImageIO Feature New Normal - vtk8itk4wx3-mingw64 X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=commitdiff_plain;h=98e1f28f00373ed1119229eb1b4cd7bf45b44613;hp=5ce273b1e5a79911e2582e16adc02f0c9505d5d2;p=creaImageIO.git #3218 creaImageIO Feature New Normal - vtk8itk4wx3-mingw64 --- diff --git a/bbtk/src/bbcreaImageIOGetDicomAttributesFromMaps.cxx b/bbtk/src/bbcreaImageIOGetDicomAttributesFromMaps.cxx index 1dd7d1b..98bdb57 100644 --- a/bbtk/src/bbcreaImageIOGetDicomAttributesFromMaps.cxx +++ b/bbtk/src/bbcreaImageIOGetDicomAttributesFromMaps.cxx @@ -13,7 +13,6 @@ BBTK_BLACK_BOX_IMPLEMENTATION(GetDicomAttributesFromMaps,bbtk::AtomicBlackBox); //===== void GetDicomAttributesFromMaps::Process() { - // THE MAIN PROCESSING METHOD BODY // Here we simply set the input 'In' value to the output 'Out' // And print out the output value @@ -29,16 +28,22 @@ void GetDicomAttributesFromMaps::Process() std::vector< std::string > lstResult; std::map tmpMap; int i,size=bbGetInputIn().size(); - std::string strElement; + +// The MAP.find() function is not working in all the cases for (i=0;isecond; - lstResult.push_back( strElement ); + std::map::iterator it; + for ( it = tmpMap.begin(); it != tmpMap.end(); it++ ) + { + if (it->first==bbGetInputKeyDicom()) + { + lstResult.push_back( it->second ); + } // if it->first + }//for it } // for i bbSetOutputOut( lstResult ); - } //===== // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) diff --git a/bbtk/src/bbcreaImageIOGimmick.xml b/bbtk/src/bbcreaImageIOGimmick.xml index 8113d5c..d07a54f 100644 --- a/bbtk/src/bbcreaImageIOGimmick.xml +++ b/bbtk/src/bbcreaImageIOGimmick.xml @@ -21,6 +21,25 @@ + +
+      typedef std::vector VectorStringType;
+
+ + + + +
+      typedef std::map MapInfoDicom;
+
+ + +
+      typedef std::vector< MapInfoDicom > VectorMapInfoDicom;
+
+ + +
typedef std::vector   OutputFilesType; 
typedef std::vector OutputImagesType;
@@ -46,7 +65,7 @@ bbGetInputImageOutputDimension(), threads); w.ShowModal(); - +/* if (w.GetReturnCode() == wxID_OK) { if (bbGetInputOutput()==0) @@ -68,6 +87,59 @@ // bbSetOutputOut(0); // } } +*/ + + + + /// vtkImageData vector + std::vector m_results; + std::vector< std::map > m_resultsDicomAtr; + + + if (w.GetReturnCode() == wxID_OK) + { + w.stopReading(); + std::vector outStrGimmick; + w.getSelected(outStrGimmick, bbGetInputDicomTags() ,true,""); + m_results.clear(); + int size=(int)outStrGimmick.size(); + int ii; +// if(!bInfo) +// { + for (ii=0;iiModified(); + outStrGimmick[ii].img->Update(); + m_results.push_back(outStrGimmick[ii].img); + m_resultsDicomAtr.push_back( outStrGimmick[ii].infos ); + } +// } else { +// for (ii=0;ii ???"); +// infoimageSource = _T("GIMMICK"); + + if (bbGetInputOutput()==0) + { +// std::vector images; +// w.GetSelectedImages(images,bbGetInputImageOutputDimension()); + bbSetOutputOut(m_results[0]); + bbSetOutputOut2(m_results); + } + std::vector files; + w.GetSelectedFiles(files); + bbSetOutputFiles(files); + bbSetOutputDicomInfo( m_resultsDicomAtr ); + w.OnExit(); + } + + + + diff --git a/bbtk/src/bbcreaImageIOImagesChooserDialogBox.xml b/bbtk/src/bbcreaImageIOImagesChooserDialogBox.xml index 5f83018..6fd5d71 100644 --- a/bbtk/src/bbcreaImageIOImagesChooserDialogBox.xml +++ b/bbtk/src/bbcreaImageIOImagesChooserDialogBox.xml @@ -80,20 +80,18 @@
         creaImageIO::WxSimpleDlg dlg(0,crea::std2wx(bbGetInputTitle()),"localdatabase_Descriptor.dscp","Local Database"); 
-                dlg.SetAttrDicomTags( bbGetInputDicomTags() );
-		dlg.ShowModal(); 
-                bbSetOutputDicomInfo( dlg.getDicomInfoImagesSelected() );
-		if (dlg.getImagesSelected().size()!=0)
-		{ 
-			bbSetOutputFileName( std::string( dlg.getInfoImage().mb_str() ) );
-			bbSetOutputOut( dlg.getVolumeSelected() );
-
-		} else { 
-			bbSetOutputOut( NULL );
-		} // if dlg.getImagesSelected().size()!=0
+        dlg.SetAttrDicomTags( bbGetInputDicomTags() );
+	dlg.ShowModal(); 
+	bbSetOutputDicomInfo( dlg.getDicomInfoImagesSelected() );
+	if (dlg.getImagesSelected().size()!=0)
+	{ 
+		bbSetOutputFileName( std::string( dlg.getInfoImage().mb_str() ) );
+		bbSetOutputOut( dlg.getVolumeSelected() );
+	} else { 
+		bbSetOutputOut( NULL );
+	} // if dlg.getImagesSelected().size()!=0
         bbSetOutputOutImages( dlg.getImagesSelected());  
 	bbSignalOutputModification(  );
-
     
diff --git a/src/creaImageIOGimmick.cpp b/src/creaImageIOGimmick.cpp index 1ec42e1..7ba9b2a 100644 --- a/src/creaImageIOGimmick.cpp +++ b/src/creaImageIOGimmick.cpp @@ -560,11 +560,13 @@ void Gimmick::fillVectInfos(std::vector i_attr, OutputAttr &infos) { if( mImageAdder.isAttributeExist((*it)) != "" ) // in DB { +printf("EED Gimmick::fillVectInfos inside %s\n",(*it).c_str()); infos.inside.push_back((*it)); } else { infos.outside.push_back((*it)); // Need to scan again the files +printf("EED Gimmick::fillVectInfos outside %s\n",(*it).c_str()); } } } @@ -580,4 +582,4 @@ const std::string Gimmick::getSummary() return mess.str(); } -} \ No newline at end of file +} diff --git a/src/creaImageIOSQLiteTreeHandler.cpp b/src/creaImageIOSQLiteTreeHandler.cpp index 4a1e391..e51bfa9 100644 --- a/src/creaImageIOSQLiteTreeHandler.cpp +++ b/src/creaImageIOSQLiteTreeHandler.cpp @@ -980,7 +980,7 @@ GimmickDebugMessage(1, "query : '" < &i_results) { int level=GetTree().GetNumberOfLevels()-1; - + std::string search = i_filename; std::string param = "FullFileName"; std::string name; @@ -992,25 +992,27 @@ GimmickDebugMessage(1, "query : '" < values; std::vector::iterator it_val; - - - - while(level>1) + while(level>=1) { - attr = GetTree().GetAttributeDescriptorList(level,1); + attr = GetTree().GetAttributeDescriptorList(level,1); - name = GetTree().GetLevelDescriptor(level).GetName(); - std::vector values; - GetUpLevelNodeId(level, param,search,id); - GetAttributes(name, param,search,attr, values); - for(it_attr = attr.begin(), it_val = values.begin(); it_attr != attr.end(); it_attr++, it_val++) - { - i_results[(*it_attr).GetKey()] = (*it_val).c_str(); - } - search = id; - param = "ID"; - level --; - } + name = GetTree().GetLevelDescriptor(level).GetName(); + std::vector values; + +//EED 2018-04-13 GetUpLevelNodeId(level, param,search,id); + if (level>1) + { + GetUpLevelNodeId(level, param,search,id); + } + GetAttributes(name, param,search,attr, values); + for(it_attr = attr.begin(), it_val = values.begin(); it_attr != attr.end(); it_attr++, it_val++) + { + i_results[(*it_attr).GetKey()] = (*it_val).c_str(); + } // for + search = id; + param = "ID"; + level --; + } // while level } @@ -1064,7 +1066,6 @@ GimmickDebugMessage(1, "query : '" <(new Gimmick()); - mGimmick->Initialize(i_namedescp,i_namedb); + mGimmick = boost::shared_ptr(new Gimmick()); + mGimmick->Initialize(i_namedescp,i_namedb); - mView = new WxGimmickView(mGimmick, + mView = new WxGimmickView(mGimmick, this, TVID, wxDefaultPosition, @@ -78,7 +78,7 @@ namespace creaImageIO min_dim, max_dim, threads); - mView->Initialize(); + mView->Initialize(); // Connect the AddProgress callback mView->ConnectValidationObserver( boost::bind( &WxGimmickReaderDialog::OnValid , this, _1 ) ); } @@ -87,20 +87,15 @@ namespace creaImageIO e.Print(); return; } - mtopsizer->Add( mView,1,wxGROW,0); - wxSizer* bsizer = this->CreateSeparatedButtonSizer(wxOK|wxCANCEL); /*mOkButton = new wxButton(this, wxID_OK, _T("OK"), wxPoint(170,50)); mCancelButton = new wxButton(this, wxID_CANCEL, _T("CANCEL"), wxPoint(210,50)); */ mOkButton = (wxButton*)FindWindowById(GetAffirmativeId(), this); mCancelButton = (wxButton*)FindWindowById(GetEscapeId(), this); - mOkButton->Enable(false); mtopsizer->Add ( bsizer, 0, wxGROW ); - - SetSizer( mtopsizer ); - + SetSizer( mtopsizer ); Layout(); } @@ -117,7 +112,6 @@ namespace creaImageIO { mGimmick->Finalize(); } - } ///Callback method on a selection diff --git a/src/creaImageIOWxGimmickReaderDialog.h b/src/creaImageIOWxGimmickReaderDialog.h index 1f2a6c3..550322c 100644 --- a/src/creaImageIOWxGimmickReaderDialog.h +++ b/src/creaImageIOWxGimmickReaderDialog.h @@ -104,11 +104,11 @@ namespace creaImageIO private : boost::shared_ptr mGimmick; - WxGimmickView* mView; + WxGimmickView *mView; - wxButton* mOkButton; - wxButton* mCancelButton; - wxBoxSizer *mtopsizer; + wxButton *mOkButton; + wxButton *mCancelButton; + wxBoxSizer *mtopsizer; enum { diff --git a/src/creaImageIOWxGimmickView.cpp b/src/creaImageIOWxGimmickView.cpp index 46e2507..11e8c88 100644 --- a/src/creaImageIOWxGimmickView.cpp +++ b/src/creaImageIOWxGimmickView.cpp @@ -204,8 +204,8 @@ namespace creaImageIO /// \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, @@ -1187,9 +1187,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); diff --git a/src/creaImageIOWxSimpleDlg.cpp b/src/creaImageIOWxSimpleDlg.cpp index eb9882e..88cf784 100644 --- a/src/creaImageIOWxSimpleDlg.cpp +++ b/src/creaImageIOWxSimpleDlg.cpp @@ -140,7 +140,7 @@ namespace creaImageIO WxGimmickReaderDialog dlg(0,-1, namedescp, namedb, - _T("Select image(s) - Gimmick! (c) CREATIS-LRMN 2008"), + _T("Select image(s) - Gimmick! (c)"), wxDefaultPosition, wxSize(810,750), GIMMICK_2D_IMAGE_SELECTION, @@ -151,10 +151,6 @@ namespace creaImageIO if (dlg.GetReturnCode() == wxID_OK) { //EED1 dlg.stopReading(); - - std::vector outStrGimmick; - dlg.getSelected(outStrGimmick, m_attrDicomTags,true,""); - m_results.clear(); int size=(int)outStrGimmick.size(); int ii; @@ -162,7 +158,6 @@ namespace creaImageIO // { for (ii=0;ii ???"); infoimageSource = _T("GIMMICK"); - dlg.OnExit(); } SetReturnCode( dlg.GetReturnCode() ); @@ -286,7 +280,8 @@ printf("EED1 WxSimpleDlg::OnReadGimmick %d \n", ii); memcpy(out->GetScalarPointer(0,0,slice), img->GetScalarPointer(0,0,0), imsize); //img->Delete(); } // for slice - + out->Modified(); + out->Update(); //EED This is NOT working. The iteration over the pointer vtkImageData // int slice=0; // std::vector::iterator it; @@ -310,7 +305,8 @@ printf("EED1 WxSimpleDlg::OnReadGimmick %d \n", ii); result = NULL; } // getImagesSelected().size()!=0 - + result->Modified(); + result->Update(); return result; } diff --git a/src/creaImageIOWxSimpleDlg.h b/src/creaImageIOWxSimpleDlg.h index 777836e..2ccd2e3 100644 --- a/src/creaImageIOWxSimpleDlg.h +++ b/src/creaImageIOWxSimpleDlg.h @@ -75,19 +75,19 @@ namespace creaImageIO std::vector getMapInfos(){return m_resultsInfo;} private: - bool bInfo; - std::string namedescp; - std::string namedb; - wxString infoimage; - wxString infoimageSource; + bool bInfo; + std::string namedescp; + std::string namedb; + wxString infoimage; + wxString infoimageSource; /// interface to read data - SimpleView m_view; + SimpleView m_view; /// vtkImageData vector - std::vector m_results; + std::vector m_results; std::vector< std::map > m_resultsDicomAtr; - std::vector m_attrDicomTags; // DXXXX_YYYY DAAAA_BBBB ... + std::vector m_attrDicomTags; // DXXXX_YYYY DAAAA_BBBB ... std::vector m_resultsInfo; diff --git a/src/data/localdatabase_Descriptor.dscp b/src/data/localdatabase_Descriptor.dscp index e994589..402931b 100644 --- a/src/data/localdatabase_Descriptor.dscp +++ b/src/data/localdatabase_Descriptor.dscp @@ -47,8 +47,8 @@ D 0x0008 0x0033 3 D 0x0020 0x4000 3 #D 0x0004 0x1500 4 #D 0x0004 0x1501 4 -#D 0x0028 0x1052 3 -#D 0x0028 0x1053 3 +D 0x0028 0x1052 3 +D 0x0028 0x1053 3 #D 0x0050 0x0004 3 #D 0x0020 0x0052 3 #D 0x0008 0x0016 3