From b573a12c2f9e5c887ae36166c531fb17cdb7db8f Mon Sep 17 00:00:00 2001 From: Frederic Cervenansky Date: Tue, 14 Apr 2009 13:51:35 +0000 Subject: [PATCH] =?utf8?q?Correction=20sur=20l'affichage=20des=20dates=20e?= =?utf8?q?t=20des=20temps.=20Correction=20du=20crash=20sur=20le=20wxViewer?= =?utf8?q?=20thread=20ens=20ortie=20d'application.=20Ajout=20de=20l'=E9v?= =?utf8?q?=E9nement=20clavier=20sur=20les=20listes.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src2/creaImageIOTreeAttributeDescriptor.cpp | 37 ++++++++++++ src2/creaImageIOTreeAttributeDescriptor.h | 3 + src2/creaImageIOWxGimmickReaderDialog.cpp | 3 +- src2/creaImageIOWxGimmickView.cpp | 6 +- src2/creaImageIOWxTreeView.cpp | 67 ++++++++++++++++----- src2/creaImageIOWxTreeView.h | 1 + 6 files changed, 101 insertions(+), 16 deletions(-) diff --git a/src2/creaImageIOTreeAttributeDescriptor.cpp b/src2/creaImageIOTreeAttributeDescriptor.cpp index 54c56b8..08fd784 100644 --- a/src2/creaImageIOTreeAttributeDescriptor.cpp +++ b/src2/creaImageIOTreeAttributeDescriptor.cpp @@ -115,6 +115,43 @@ namespace creaImageIO return; } + //===================================================================== + /// test if the type is a date + bool AttributeDescriptor::isDateEntry() const + { + + bool btest = false; + // Retrieve the name from gdcm dict + GDCM_NAME_SPACE::DictEntry* entry = GDCM_NAME_SPACE::Global::GetDicts()->GetDefaultPubDict()->GetEntry(GetGroup(),GetElement()); + if( entry != 0) + { + if( entry->GetVR().str() == "DA" ) + { + btest = true; + } + } + return btest; + } + + //===================================================================== + /// test if the type is a time + bool AttributeDescriptor::isTimeEntry() const + { + + bool btest = false; + // Retrieve the name from gdcm dict + GDCM_NAME_SPACE::DictEntry* entry = GDCM_NAME_SPACE::Global::GetDicts()->GetDefaultPubDict()->GetEntry(GetGroup(),GetElement()); + if( entry != 0) + { + if( entry->GetVR().str() == "TM" ) + { + btest = true; + } + } + return btest; + } + + //===================================================================== /// Decodes the type of the attribute void AttributeDescriptor::DecodeType(unsigned int& typ) const diff --git a/src2/creaImageIOTreeAttributeDescriptor.h b/src2/creaImageIOTreeAttributeDescriptor.h index d2afc85..ad4d7bf 100644 --- a/src2/creaImageIOTreeAttributeDescriptor.h +++ b/src2/creaImageIOTreeAttributeDescriptor.h @@ -81,6 +81,9 @@ namespace creaImageIO ///Decodes the type of attribute into the existing ones void DecodeType(unsigned int& type) const; + bool isDateEntry() const; + bool isTimeEntry() const; + private: std::string mKey; std::string mName; diff --git a/src2/creaImageIOWxGimmickReaderDialog.cpp b/src2/creaImageIOWxGimmickReaderDialog.cpp index 6c311fb..e7cd5b8 100644 --- a/src2/creaImageIOWxGimmickReaderDialog.cpp +++ b/src2/creaImageIOWxGimmickReaderDialog.cpp @@ -78,13 +78,14 @@ namespace creaImageIO <Finalize(); delete mGimmick; } + } ///Callback method on a selection diff --git a/src2/creaImageIOWxGimmickView.cpp b/src2/creaImageIOWxGimmickView.cpp index 21c9a98..f60480e 100644 --- a/src2/creaImageIOWxGimmickView.cpp +++ b/src2/creaImageIOWxGimmickView.cpp @@ -156,6 +156,8 @@ namespace creaImageIO /// Destructor WxGimmickView::~WxGimmickView() { + // stop the viewer before application exit. + mViewer->StopPlayer(); GimmickDebugMessage(1,"WxGimmickView::~WxGimmickView" < #include #include +#include +#include +#include +#include + + + const std::string empty_string(""); @@ -127,8 +134,8 @@ namespace creaImageIO int col_style = wxLIST_FORMAT_LEFT; // Creating the ListCtrl for the levels > 0 (not for Root level) - for (int i = 1; - i < handler->GetTree().GetNumberOfLevels(); + for (int i = 0; + i < handler->GetTree().GetNumberOfLevels() -1; ++i) { @@ -141,10 +148,11 @@ namespace creaImageIO // If the first level : parent = this wxWindow* sparent = this; // else parent = last splitter - if (i>1) sparent = mLevelList[i-2].wxSplitter; + if (i>0) + sparent = mLevelList[i-1].wxSplitter; level.wxSplitter = new wxSplitterWindow( sparent , -1); - if(i!=1) + if(i!=0) { level.wxSplitter->Show(false); } @@ -163,10 +171,11 @@ namespace creaImageIO int col = 0; std::string title; tree::LevelDescriptor::AttributeDescriptorListType::const_iterator a; - for (a = handler->GetTree().GetAttributeDescriptorList(i).begin(); - a != handler->GetTree().GetAttributeDescriptorList(i).end(); + for (a = handler->GetTree().GetAttributeDescriptorList(i+1).begin(); + a != handler->GetTree().GetAttributeDescriptorList(i+1).end(); ++a) - { + +{ GimmickDebugMessage(5,"Creating column "<GetName() @@ -187,15 +196,19 @@ namespace creaImageIO { title=a->GetName(); } - + std::string temp = a->GetKey(); + if (temp.compare("ID") != 0) + { ctrl->InsertColumn(col, crea::std2wx(title), col_style); + col++; + } level.key.push_back(a->GetKey()); // ctrl->SetColumnWidth(col, wxLIST_AUTOSIZE ); - col++; + } } @@ -466,11 +479,25 @@ namespace creaImageIO for (int k=0; kGetColumnCount(); k++) { - std::string val = (*j)->GetAttribute(mLevelList[l].key[k]); - if (val.size()==0) val = "?"; - item.SetText( crea::std2wx(val)); - item.SetColumn(k); - GetCtrl(l)->SetItem(item); + std::string val = (*j)->GetAttribute(mLevelList[l].key[k]); + if(((*j)->GetAttributeDescriptor(mLevelList[l].key[k])).isDateEntry()) + { + boost::gregorian::date d1(boost::gregorian::from_undelimited_string(val)); + val = to_iso_extended_string(d1); + } + else if(((*j)->GetAttributeDescriptor(mLevelList[l].key[k])).isTimeEntry()) + { + if (val != "" || val != " ") + val = val.substr(0,2) + " : " + val.substr(2,2) + " : " + val.substr(4,2); + } + else + { + + } + if (val.size()==0) val = "?"; + item.SetText( crea::std2wx(val)); + item.SetColumn(k); + GetCtrl(l)->SetItem(item); } } @@ -861,6 +888,17 @@ namespace creaImageIO } } + } + //================================================================ + //================================================= + void WxTreeView::OnKeyDown(wxListEvent &event) + { + if(event.GetKeyCode() == WXK_DELETE) + { + RemoveSelected(); + // ClearSelection(); + } + } //================================================================ @@ -1041,6 +1079,7 @@ BEGIN_EVENT_TABLE(MyListCtrl, wxListCtrl) EVT_LIST_SET_INFO(LIST_CTRL, MyListCtrl::OnSetInfo) #endif */ + EVT_LIST_KEY_DOWN(-1, WxTreeView::OnKeyDown) EVT_LIST_ITEM_SELECTED(-1, WxTreeView::OnItemSelected) EVT_LIST_ITEM_DESELECTED(-1, WxTreeView::OnItemDeSelected) diff --git a/src2/creaImageIOWxTreeView.h b/src2/creaImageIOWxTreeView.h index fff5531..4b97590 100644 --- a/src2/creaImageIOWxTreeView.h +++ b/src2/creaImageIOWxTreeView.h @@ -112,6 +112,7 @@ namespace creaImageIO ///UnSelects all the elements of a level void UnSelectAll(int level); + void OnKeyDown(wxListEvent &event); /// Sorts the level void SortLevel(int level); -- 2.45.2