]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOWxDescriptorPanel.cpp
Set GDCM2 library as available DICOM Reader
[creaImageIO.git] / src2 / creaImageIOWxDescriptorPanel.cpp
index f37554b50881cfa3cd40ee0efc97eefd2a2117ea..3b0f78e55dd3dd4918f1bcfcbb14cbfe2239be9d 100644 (file)
@@ -1,15 +1,19 @@
 #include "creaImageIOWxDescriptorPanel.h"
 #include <creaImageIOSystem.h>
+#if defined(USE_GDCM)
 #include <gdcmGlobal.h>
 #include <gdcmDictSet.h>
+#endif
+#include <boost/algorithm/string.hpp>
 
+#include <boost/algorithm/string.hpp>
 
 namespace creaImageIO
 {
   // CTor
                   
-WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent)
-  : wxDialog(parent, -1,_T("Descriptor Creation"), wxDefaultPosition, wxSize(550,550))
+       WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent, const std::string path)
+               : wxDialog(parent, -1,_T("Descriptor Creation"), wxDefaultPosition, wxSize(550,550)) , m_path(path)
 {
 
   
@@ -17,7 +21,7 @@ WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent)
                        <<std::endl);
 
        lv = 0;
-       ownatt["FullFileName"] = "Full_File_Name";
+       ownatt["FullFileName"]      = "Full_File_Name";
        ownatt["FullFileDirectory"] = "Full_File_Directory";
        
 
@@ -41,7 +45,7 @@ WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent)
        // ATTRIBUTES
 
        wxStaticText * GR=new wxStaticText(this,-1,_T(" DICOM Group: "), wxPoint(5,110));
-    GRCtrl=new wxTextCtrl(this, ID_GR_CTRL,_T("0x0010"), wxPoint(82,110), wxSize(50,25));
+        GRCtrl=new wxTextCtrl(this, ID_GR_CTRL,_T("0x0010"), wxPoint(82,110), wxSize(50,25));
        Connect( GRCtrl->GetId(), wxEVT_COMMAND_TEXT_UPDATED , (wxObjectEventFunction) &WxDescriptorPanel::OnDicomAttribute ); 
        
        wxStaticText * EL=new wxStaticText(this,-1,_T(" DICOM Element: "), wxPoint(140,110));
@@ -50,7 +54,7 @@ WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent)
 
        
        wxString choices[3];
-       choices[0] = "Unknow Attribute";
+       choices[0] = _T("Unknow Attribute");
        std::map<std::string, std::string>::iterator it_att =ownatt.begin();
        for(int i = 1; it_att != ownatt.end(); it_att++, i++)
        {
@@ -84,7 +88,7 @@ WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent)
        wxButton *Cancel = new wxButton(this, wxID_CANCEL,_T("CANCEL"), wxPoint(250,480) );
 //     Connect( Cancel->GetId(), wxEVT_COMMAND_BUTTON_CLICKED , (wxCloseEvent) &wxWindow::Close ); 
 
-    Layout(); 
+        Layout(); 
        CreateDescriptor(0);
   }
 
@@ -106,12 +110,13 @@ WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent)
          std::string name_att;
          if (AttributeCombo->GetSelection() == 0)
          {
-                       name_att = "D" + GRCtrl->GetValue() + "_" + ELCtrl->GetValue();
+             name_att = "D" + crea::wx2std(GRCtrl->GetValue()) + "_" + crea::wx2std(ELCtrl->GetValue());
          }
          else
-         {     wxString wd = AttributeCombo->GetValue();
-         std::string st = crea::wx2std(wd);
-         name_att = OwnAttribute(st);
+         {     
+            wxString wd = AttributeCombo->GetValue();
+            std::string st = crea::wx2std(wd);
+            name_att = OwnAttribute(st);
          }
          onAddAttribute(crea::wx2std(AttributeCombo->GetValue()), name_att);
   }
@@ -130,7 +135,7 @@ WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent)
          }
          else
          {
-                 if( !att.empty() )
+               if( !att.empty() )
                {
                // Find Name of level
                        if(level.empty())
@@ -147,18 +152,18 @@ WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent)
                                ResultCtrl->SetInsertionPoint(InsertPt);
                 for (int i = 1; i<=lv;i++)
                                { 
-                                       ResultCtrl->WriteText("   ");
+                                  ResultCtrl->WriteText(_T("   "));
                                }
-                               ResultCtrl->WriteText("| - ");
-                               ResultCtrl->WriteText(att);
+                               ResultCtrl->WriteText(_T("| - "));
+                               ResultCtrl->WriteText(crea::std2wx(att));
                                wxTextAttr ResultAttr(ResultCtrl->GetDefaultStyle());
                                ResultAttr.SetTextColour(*wxWHITE);
                                ResultCtrl->SetDefaultStyle(ResultAttr);
                                std::string text = " ";
-                               ResultCtrl->WriteText(" " + name_att);
+                               ResultCtrl->WriteText(crea::std2wx(" " + name_att));
                                ResultAttr.SetTextColour(*wxBLACK);
                                ResultCtrl->SetDefaultStyle(ResultAttr);
-                               ResultCtrl->WriteText("\n");
+                               ResultCtrl->WriteText(_T("\n"));
                        }
                        InsertPt = ResultCtrl->GetInsertionPoint();
                }
@@ -185,7 +190,7 @@ WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent)
   //////////////////////////////////////////////////
   void WxDescriptorPanel::onAddLevel(const std::string &level)
   {
-                 if(addLevel(crea::wx2std(level)))
+                 if(addLevel(level))
                  {
                          wxMessageBox(_T("Level already used"),crea::std2wx(("WARNING")),wxOK,this);
                          return;
@@ -195,24 +200,24 @@ WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent)
                   ResultCtrl->SetInsertionPoint(InsertPt);
                   for (int i = 1; i<lv;i++)
                   { 
-                          ResultCtrl->WriteText("   ");
+                          ResultCtrl->WriteText(_T("   "));
                   }
                   if(lv>1)
-                  {    ResultCtrl->WriteText("| \n");
+                  {    ResultCtrl->WriteText(_T("| \n"));
                                for (int i = 1; i<lv;i++)
                                { 
-                                       ResultCtrl->WriteText("   ");
+                                       ResultCtrl->WriteText(_T("   "));
                                }
-                               ResultCtrl->WriteText("|_");
+                               ResultCtrl->WriteText(_T("|_"));
                   }
                   
                        wxTextAttr ResultAttr(ResultCtrl->GetDefaultStyle());
                        ResultAttr.SetTextColour(*wxRED);
                        ResultCtrl->SetDefaultStyle(ResultAttr);
-                       ResultCtrl->WriteText(level);
+                       ResultCtrl->WriteText(crea::std2wx(level));
                        ResultAttr.SetTextColour(*wxBLACK);
                        ResultCtrl->SetDefaultStyle(ResultAttr);
-                               ResultCtrl->WriteText("\n");
+                       ResultCtrl->WriteText(_T("\n"));
                        InsertPt = ResultCtrl->GetInsertionPoint();
          
   }
@@ -240,7 +245,7 @@ WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent)
                  val.clear();
                  val <<   std::dec << el ;
                  val >> std::hex >> element;
-                       
+#if defined(USE_GDCM)  
                 // Retrieve the name from gdcm dict
                  GDCM_NAME_SPACE::DictEntry* entry = GDCM_NAME_SPACE::Global::GetDicts()->GetDefaultPubDict()->GetEntry(group, element);
                 // AttributeCombo->Clear();
@@ -254,6 +259,7 @@ WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent)
                          AttributeCombo->Delete(0);
                          AttributeCombo->Insert(_T("Unknown Attribute"),0);
                  }
+#endif
                          AttributeCombo->SetSelection(0);
                
          }
@@ -302,7 +308,7 @@ WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent)
          }
          else
          {
-                         level_pos_start += 2;
+                 level_pos_start += 2;
          }
 
          std::string::size_type level_pos_end = tx.find_first_of("\n",level_pos_start);
@@ -333,7 +339,7 @@ WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent)
          else
          {
                wxString text = ResultCtrl->GetLineText(line);
-               if ( text.Find("|_") == -1)
+               if ( text.Find(_T("|_")) == -1)
                {
                  std::string level = findLevel();
                  // find GR and EL values to remove
@@ -345,7 +351,7 @@ WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent)
                else
                {       
                         RemoveLevel(crea::wx2std(text.AfterFirst('_')));
-                        lv = text.Find("|")/3;
+                        lv = text.Find(_T("|"))/3;
                         pos_start= ResultCtrl->XYToPosition(0,line-1);
                         ResultCtrl->SetInsertionPointEnd();
                         pos_end = ResultCtrl->GetInsertionPoint();
@@ -354,10 +360,10 @@ WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent)
          }
 
   }
-   //////////////////////////////////////////////////////
-  // create a descriptor structure                               //
-  // @param name : level's name to add  //
-  // @return : boolean result                                            //
+   //////////////////////////////////////////////
+  // create a descriptor structure              //
+  // @param name : level's name to add           //
+  // @return : boolean result                   //
   //////////////////////////////////////////////////
    void WxDescriptorPanel::CreateDescriptor(int type)
    {
@@ -525,9 +531,9 @@ WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent)
    }
 
   //////////////////////////////////////////////////
-  // create a new descriptor                                     //
-  // @param event : WxEvent                                              //
-  // @return : -                                                                 //
+  // create a new descriptor                                   //
+  // @param event : WxEvent                                    //
+  // @return : -                                               //
   //////////////////////////////////////////////////
    void WxDescriptorPanel::OnNew(wxCommandEvent &Event)
    {
@@ -538,9 +544,9 @@ WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent)
    }
 
   //////////////////////////////////////////////////
-  // Load a descriptor file                                              //
-  // @param event : WxEvent                                              //
-  // @return : -                                                                 //
+  // Load a descriptor file                                            //
+  // @param event : WxEvent                                            //
+  // @return : -                                                       //
   //////////////////////////////////////////////////
    void WxDescriptorPanel::OnLoad(wxCommandEvent &Event)
    {
@@ -553,7 +559,7 @@ WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent)
           std::string wc("*.dscp");
           wxFileDialog* FD = new wxFileDialog( 0, 
                                         _T("Select file"),
-                                        _T(""),
+                                        crea::std2wx(m_path),
                                         _T(""),
                                         crea::std2wx(wc),
                                         style,
@@ -568,7 +574,7 @@ WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent)
   //////////////////////////////////////////////////
   // Save a descriptor                                                   //
   // @param event : WxEvent                                              //
-  // @return : -                                                                 //
+  // @return : -                                                        //
   //////////////////////////////////////////////////
    void WxDescriptorPanel::OnOK(wxCommandEvent &Event)
    {
@@ -578,8 +584,8 @@ WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent)
    
   /////////////////////////////////////////////////////
   // Save a descriptor and apply it (create a new DB//
-  // @param event : WxEvent                                                 //
-  // @return : -                                                                    //
+  // @param event : WxEvent                                            //
+  // @return : -                                                       //
   /////////////////////////////////////////////////////
    void WxDescriptorPanel::OnApply(wxCommandEvent &Event)
    {
@@ -615,9 +621,9 @@ WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent)
    }
  
    ///////////////////////////////////////////////////////
-   // Cancel action                                                                            //
+   // Cancel action                                                            //
    // @param event :   WxEvent                                                 //
-   // @return : -                                                                              //
+   // @return : -                                                              //
    ///////////////////////////////////////////////////////
 
    void WxDescriptorPanel::OnCancel(wxCommandEvent& event)
@@ -626,8 +632,8 @@ WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent)
    
    ///////////////////////////////////////////////////////
    // create  a descriptor     file                                            //
-   // @param - :                                                                               //
-   // @return : -                                                                              //
+   // @param - :                                                               //
+   // @return : -                                                              //
    ///////////////////////////////////////////////////////
    void WxDescriptorPanel::createDescriptorFile()
    {
@@ -643,7 +649,7 @@ WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent)
                   std::map<int, std::string >::iterator it_lv_nb = lvlist.begin();
                   std::map<int, std::string >::iterator it_lv = lvlist.begin();
                   it_lv_nb++;
-                  for (;it_lv != lvlist.end(); it_lv++, it_lv_nb++)
+                  for (;it_lv != lvlist.end(); it_lv++)
               {
                           outDscp +="<level>";
                       outDscp += "\n";
@@ -655,6 +661,7 @@ WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent)
                                   outDscp += it_lv_nb->second.c_str();
                                   outDscp += "s";
                                   outDscp += "\n";
+                                  it_lv_nb++;
                           }
                           std::vector<std::string>::iterator it_branch = DscpTree[it_lv->second.c_str()].begin();      
                      for(;it_branch != DscpTree[it_lv->second.c_str()].end(); it_branch++)
@@ -755,11 +762,17 @@ WxDescriptorPanel::WxDescriptorPanel(wxWindow *parent)
                                        compose +=  descriptors[1];
                                        compose += "_";
                                        compose +=  descriptors[2];
+#if defined(USE_GDCM)
                                        GDCM_NAME_SPACE::DictEntry* entry = GDCM_NAME_SPACE::Global::GetDicts()->GetDefaultPubDict()->GetEntry(group, element);
                                        if(ilevel>0)
                                        {
                                                onAddAttribute( entry->GetName(),compose, level);
                                        }
+#endif
+                               }
+                               else if(descriptors[0].find("#") != -1)
+                               {
+                                       // commented line continue to next line
                                }
                                else // "O" means if user's own tag.
                                {