X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FcreaImageIOWxTreeView.cpp;h=8dbc4af1f7026217ce38404fea55efce57b46edd;hb=refs%2Fheads%2Fvtk9itk5wx3-macos;hp=01b8ad41764a4e61d31a77145c9bea44997e91a2;hpb=bf3660569b1baa8be10fc708f595efc66afe3334;p=creaImageIO.git diff --git a/src/creaImageIOWxTreeView.cpp b/src/creaImageIOWxTreeView.cpp index 01b8ad4..8dbc4af 100644 --- a/src/creaImageIOWxTreeView.cpp +++ b/src/creaImageIOWxTreeView.cpp @@ -1,6 +1,32 @@ +/* +# --------------------------------------------------------------------- +# +# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image +# pour la Santé) +# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton +# Previous Authors : Laurent Guigues, Jean-Pierre Roux +# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil +# +# This software is governed by the CeCILL-B license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL-B +# license as circulated by CEA, CNRS and INRIA at the following URL +# http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +# or in the file LICENSE.txt. +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL-B license and that you accept its terms. +# ------------------------------------------------------------------------ +*/ + #include #include -#include #include #include #include @@ -18,33 +44,24 @@ namespace creaImageIO //===================================================================== ///Comparing function for ordering algorithm. Takes parameters as strings. -int wxCALLBACK CompareFunctionStrings(long item1, long item2, long sortData) +//int wxCALLBACK CompareFunctionStrings(long item1, long item2, long sortData) +int wxCALLBACK CompareFunctionStrings(wxIntPtr item1, wxIntPtr item2, wxIntPtr sortData) { creaImageIO::ItemData* data1 = (creaImageIO::ItemData*)item1; creaImageIO::ItemData* data2 = (creaImageIO::ItemData*)item2; - const std::string& s1(*(data1->attr)); - const std::string& s2(*(data2->attr)); + const std::string& s2(*(data2->attr)); if(sortData==1) { // inverse the order - if (s1 < s2) - return 1; - if (s1 > s2) - return -1; - + if (s1 < s2) return 1; + if (s1 > s2) return -1; return 0; - } - else - { - if (s1 < s2) - return -1; - if (s1 > s2) - return 1; - + } else { + if (s1 < s2) return -1; + if (s1 > s2) return 1; return 0; - - } + } // if sortData } //===================================================================== @@ -99,104 +116,91 @@ namespace creaImageIO : wxPanel(parent,id), TreeView(handler, gimmick) { - GimmickDebugMessage(1,"WxTreeView::WxTreeView" - < 0 (not for Root level) - for (int i = 0; - i < handler->GetTree().GetNumberOfLevels() -1; - ++i) - { - GimmickDebugMessage(5,"Creating view for level "<0) - sparent = mLevelList[i-1].wxSplitter; - - level.wxSplitter = new wxSplitterWindow( sparent , -1); - if(i!=0) - { - level.wxSplitter->Show(false); - } - // level.wxSplitter->SetMinimumPaneSize(100); - - wxListCtrl* ctrl = new wxListCtrl(level.wxSplitter, - i, - wxDefaultPosition, - wxDefaultSize, - ctrl_style); - level.wxCtrl = ctrl; - level.wxSplitter->Initialize(ctrl); - - // Create the columns : one for each attribute of the level - int col = 0; - std::string title; - - tree::LevelDescriptor::AttributeDescriptorListType::const_iterator a; - for (a = handler->GetTree().GetAttributeDescriptorList(i+1).begin(); - a != handler->GetTree().GetAttributeDescriptorList(i+1).end(); - ++a) - -{ - - GimmickDebugMessage(5,"Creating column "<GetName() - <GetFlags()!=creaImageIO::tree::AttributeDescriptor::PRIVATE) - { - - if(a->GetName()=="UNKNOWN") - { - title = "#"; - title += handler->GetTree().GetLevelDescriptor(i+1).GetName(); - if (title[title.size()-1]!='s') - title += "s"; - - } - else - { - title=a->GetName(); - } - std::string temp = a->GetKey(); - if (temp.compare("ID") != 0) - { + for (int i = 0;i < handler->GetTree().GetNumberOfLevels() -1; ++i) + { + GimmickDebugMessage(5,"Creating view for level "<0) + { + sparent = mLevelList[i-1].wxSplitter; + } // if + level.wxSplitter = new wxSplitterWindow( sparent , -1); + if(i!=0) + { + level.wxSplitter->Show(false); + } // if + // level.wxSplitter->SetMinimumPaneSize(100); - ctrl->InsertColumn(col, - crea::std2wx(title), - col_style); - col++; - } - level.key.push_back(a->GetKey()); - } + wxListCtrl* ctrl = new wxListCtrl(level.wxSplitter, - } - - mLevelList.push_back(level); - } +// EED1 2018-08-16 +// i, + wxID_ANY, + + wxDefaultPosition, + wxDefaultSize, + ctrl_style); + level.wxCtrl = ctrl; + level.wxSplitter->Initialize(ctrl); + + // Create the columns : one for each attribute of the level + int col = 0; + std::string title; + + tree::LevelDescriptor::AttributeDescriptorListType::const_iterator a; + for (a = handler->GetTree().GetAttributeDescriptorList(i+1).begin(); + a != handler->GetTree().GetAttributeDescriptorList(i+1).end(); + ++a) + { + GimmickDebugMessage(5,"Creating column "<GetName() <GetFlags()!=creaImageIO::tree::AttributeDescriptor::PRIVATE) + { + if(a->GetName()=="UNKNOWN") + { + title = "#"; + title += handler->GetTree().GetLevelDescriptor(i+1).GetName(); + if (title[title.size()-1]!='s') + { + title += "s"; + } // if + } else { + title=a->GetName(); + } // if a + std::string temp = a->GetKey(); + if (temp.compare("ID") != 0) + { + ctrl->InsertColumn(col,crea::std2wx(title),col_style); + col++; + } // if temp + level.key.push_back(a->GetKey()); + } // if + + } // for a + mLevelList.push_back(level); + } // for i #if wxUSE_MENUS // Column Menu - menu =new wxMenu; + menu =new wxMenu(); wxMenuItem* m1=menu->Append(wxID_ANY, _T("&Sort ascending")); wxMenuItem* m2=menu->Append(wxID_ANY, _T("&Sort descending")); wxMenuItem* m3=menu->Append(wxID_ANY, _T("&Filter")); @@ -209,43 +213,38 @@ namespace creaImageIO ////SubMenuItem EXPORT - subExportMenu = new wxMenu; + subExportMenu = new wxMenu(); wxMenuItem *subExp1 = subExportMenu->Append(wxID_ANY, _T("&Export to Storage")); Connect( subExp1->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(WxTreeView::OnExportToStorage) ); //ItemMenu - menuItem =new wxMenu; - + menuItem =new wxMenu(); wxMenuItem* m2Item=menuItem->Append(wxID_ANY, _T("&Local Copy")); wxMenuItem* m3Item=menuItem->Append(wxID_ANY, _T("&Edit Fields")); wxMenuItem* m4Item=menuItem->Append(wxID_ANY, _T("&Display Dicom Tags")); menuItem->AppendSubMenu(subExportMenu, wxT("&Export")); -#if defined(USE_GDCM_ANOM) wxMenuItem* m1Item=menuItem->Append(wxID_ANY, _T("&Anonymize")); mAnonymizingID=m1Item->GetId(); - Connect( mAnonymizingID, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(WxTreeView::OnAnonymize) ); -#endif + Connect( mAnonymizingID, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(WxTreeView::OnAnonymizer) ); + mLocalCopyID=m2Item->GetId(); mEditFieldID=m3Item->GetId(); mDumpID=m4Item->GetId(); - Connect( mLocalCopyID, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(WxTreeView::OnLocalCopy) ); Connect( mEditFieldID, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(WxTreeView::OnEditField) ); Connect( mDumpID, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(WxTreeView::OnDumpTags) ); - - #endif // wxUSE_MENUS /// Initialize the first level splitter msizer->Add( mLevelList[0].wxSplitter ,1, wxGROW ,0); - // mColumnSelected=1; - mLastSelected=0; - mLastLevel=0; - // mDirection=true; + // mColumnSelected = 1; + mLastSelected = 0; + mLastLevel = 0; + // mDirection = true; mIgnoreSelectedChanged = false; @@ -255,7 +254,6 @@ namespace creaImageIO SetSizer( msizer ); SetAutoLayout(true); Layout(); - } //===================================================================== @@ -263,16 +261,12 @@ namespace creaImageIO /// Destructor WxTreeView::~WxTreeView() { - GimmickDebugMessage(1,"WxTreeView::~WxTreeView" - <& WxTreeView::GetSelected(int level) { @@ -281,42 +275,47 @@ namespace creaImageIO int l = level - 1; // the selection of upper level if(mLevelList.size() == level -1) - sel = mLevelList.back().Selected; - else - sel= mLevelList[l].Selected; + { + sel = mLevelList.back().Selected; + } else { + sel= mLevelList[l].Selected; + } if (sel.size() > 0) { sel.clear(); } - if (level == 1) - { - sel.push_back(GetTreeHandler()->GetTree().GetTree()); - } - else if (level < mLevelList.size()+2 ) + if (level == 1) { + sel.push_back( GetTreeHandler()->GetTree().GetTree() ); + } else if (level < mLevelList.size()+2 ) { long item = -1; for ( ;; ) { - item = GetCtrl(l-1)->GetNextItem(item, + item = GetCtrl(l-1)->GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if ( item == -1 ) + { break; - long adr = GetCtrl(l-1)->GetItemData(item); - tree::Node* n = ((ItemData*)adr)->node; - if(mLastSelected==item) + } +// long adr = (long)GetCtrl(l-1)->GetItemData(item); + ItemData* adr = (ItemData*)GetCtrl(l-1)->GetItemData(item); +// tree::Node* n = ((ItemData*)adr)->node; + tree::Node* n = adr->node; + /* FCY 18-04-2011: don't understand the real purpose of these lines, + if uncomment add last frame in first place + if(mLastSelected==item) { std::vector::iterator it; it = sel.begin(); it = sel.insert ( it , n ); } else - { - + {*/ sel.push_back(n); - } + //} - } + } // for /*int n = GetCtrl(l-1)->GetItemCount(); for (int i = 0; iGetTree().GetLevelDescriptor(mLastLevel).GetName(); out<<"Delete "; @@ -390,11 +386,7 @@ namespace creaImageIO std::vector::const_iterator i; for (i=sel.begin(); i!=sel.end(); ++i) { - GimmickMessage(1, - "deleting '" - <<(*i)->GetLabel() - <<"'"<GetLabel() << "'" << mLastLevel << std::endl ); if((*i)->GetParent()->GetNumberOfChildren()<2) { needRefresh=true; @@ -406,21 +398,15 @@ namespace creaImageIO } if(needRefresh && mLastLevel>1) - { - UpdateLevel(mLastLevel-2); - } - else if(mLastLevel>1) - { - UpdateLevel(mLastLevel-1); - } - else - { - UpdateLevel(mLastLevel); - } - } - } - else - { + { + UpdateLevel(mLastLevel-2); + } else if(mLastLevel>1) { + UpdateLevel(mLastLevel-1); + } else { + UpdateLevel(mLastLevel); + } // if needRefresh + } // if erase + } else { // no need to incremente level mLastLevel = tempLevel; } @@ -428,7 +414,7 @@ namespace creaImageIO if (erase && mLastLevel == 1 && i_save == "0") { - RemoveAlertDlg *dial = new RemoveAlertDlg(this, crea::std2wx("Remove files"), wxSize(370,100)); + RemoveAlertDlg *dial = new RemoveAlertDlg(this, crea::std2wx("Remove files"), wxSize(450,300)); //dial->ShowModal(); if (dial->ShowModal() == wxID_OK) { @@ -443,7 +429,7 @@ namespace creaImageIO /// Updates a level of the view (adds or removes children, etc.) void WxTreeView::UpdateLevel( int level ) { - GimmickDebugMessage(1, + GimmickDebugMessage(1, GetTreeHandler()->GetTree().GetLabel() <<"WxTreeView::UpdateLevel(level " <IsSplit()) - GetSplitter(i)->SplitVertically( GetCtrl(i), GetSplitter(i+1), - 100 ); - } - if (GetSplitter(i)->IsSplit()) GetSplitter(i)->Unsplit(); + { + if (!GetSplitter(i)->IsSplit()) + { + GetSplitter(i)->SplitVertically( GetCtrl(i), GetSplitter(i+1),100 ); + } // if + } // for + if (GetSplitter(i)->IsSplit()) + { + GetSplitter(i)->Unsplit(); + } } //===================================================================== @@ -473,29 +463,21 @@ namespace creaImageIO <<"WxTreeView::RecursiveUpdateLevel(level " <& sel(GetSelected(level)); - - int l = level - 1; - // to speed up inserting we hide the control temporarily GetCtrl(l)->Hide(); GetCtrl(l)->DeleteAllItems(); - std::vector::const_iterator i; - for (i=sel.begin(); i!=sel.end(); ++i) - { + { GimmickDebugMessage(1, "adding children of '" <<(*i)->GetLabel() <<"'" <LoadChildren(*i,1); tree::Node::ChildrenListType::reverse_iterator j; for (j = (*i)->GetChildrenList().rbegin(); @@ -507,7 +489,6 @@ namespace creaImageIO <<(*j)->GetLabel() <<"'" <node = *j; - data->id = _id; - + ItemData* data = new ItemData(); + data->node = *j; + data->id = _id; item.SetId(_id); item.SetData(data); - _id++; GetCtrl(l)->InsertItem(item); - //Setting attributes for (int k=0; kGetColumnCount(); ++k) - { - std::string val; - // Temporary correction : it works but no explanation about the problem FCY - - if(k==0 && level <3) - { - val = (*j)->GetAttribute("NumberOfChildren"); - } - else - val = (*j)->GetAttribute(mLevelList[l].key[k]); - if(((*j)->GetAttributeDescriptor(mLevelList[l].key[k])).isDateEntry()) // Date - { - // std::cout << "["<GetAttributeDescriptor(mLevelList[l].key[k])).isTimeEntry()) // Time - { - if ((val.size()>6) && - (val != "" || val != " ")) - val = val.substr(0,2) + " : " - + val.substr(2,2) + " : " - + val.substr(4,2); - } - else - { - if (val.size()==0) val = "?"; - } - if (val.size()==0) val = "X"; - item.SetText( crea::std2wx(val)); - item.SetColumn(k); - - GetCtrl(l)->SetItem(item); - } + { + std::string val; + // Temporary correction : it works but no explanation about the problem FCY + if(k==0 && level <3) + { + val = (*j)->GetAttribute("NumberOfChildren"); + } else { + val = (*j)->GetAttribute(mLevelList[l].key[k]); + } + if(((*j)->GetAttributeDescriptor(mLevelList[l].key[k])).isDateEntry()) // Date + { + // std::cout << "["<GetAttributeDescriptor(mLevelList[l].key[k])).isTimeEntry()) // Time + { + if ((val.size()>6) && (val != "" || val != " ")) + { + val = val.substr(0,2) + " : " + val.substr(2,2) + " : " + val.substr(4,2); + } + } else { + if (val.size()==0) + { + val = "?"; + } + } // if j + if (val.size()==0) + { + val = "X"; + } + item.SetText( crea::std2wx(val)); + item.SetColumn(k); + GetCtrl(l)->SetItem(item); + } // for k item.Clear(); - - } - } - + } // for j + + } // for i SortLevel(l); GetCtrl(l)->Show(); } @@ -606,21 +581,14 @@ namespace creaImageIO //================================================================ void WxTreeView::OnItemSelected(wxListEvent& event) { - - GimmickDebugMessage(1, - GetTreeHandler()->GetTree().GetLabel() - <<" WxTreeView::OnItemSelected"<GetTree().GetLabel()<<" WxTreeView::OnItemSelected"<ClearSelection(); - } + { + UpdateLevel( level + 2 ); + // Reset the viewer setting the default image + GetGimmickView()->ClearSelection(); + } // Select all images if the selection is at series level if (level==mLevelList.size()-2) + { SelectAll(level+1); + } // Validate selected images if the selection is at image level if (level==(mLevelList.size()-1)) //&&mProcess) - { - if(event.GetEventType()==wxEVT_COMMAND_LIST_ITEM_SELECTED) - { + { + if(event.GetEventType()==wxEVT_COMMAND_LIST_ITEM_SELECTED) + { ValidateSelectedImages (true); - } - else - { + } else { ValidateSelectedImages (false); - } - } - + } + } // if } //================================================================ //================================================================ void WxTreeView::SelectAll(int level) - { + { long item = -1; // int level=mLevelList.size()-1; for ( ;; ) - { - item = GetCtrl(level)->GetNextItem(item, - wxLIST_NEXT_ALL); - if ( item == -1 ) - break; - - if(item==(GetCtrl(level)->GetItemCount()-1)) - { - mIgnoreSelectedChanged = false;//mProcess=true; - } - else - { - mIgnoreSelectedChanged = true;// mProcess=false; - } - GetCtrl(level)->SetItemState(item,wxLIST_STATE_SELECTED, wxLIST_MASK_STATE - | wxLIST_MASK_TEXT |wxLIST_MASK_IMAGE | wxLIST_MASK_DATA | wxLIST_MASK_WIDTH | wxLIST_MASK_FORMAT); - } + { + item = GetCtrl(level)->GetNextItem(item,wxLIST_NEXT_ALL); + if ( item == -1 ) + { + break; + } + if(item==(GetCtrl(level)->GetItemCount()-1)) + { + mIgnoreSelectedChanged = false;//mProcess=true; + } else { + mIgnoreSelectedChanged = true;// mProcess=false; + } + GetCtrl(level)->SetItemState(item,wxLIST_STATE_SELECTED, wxLIST_MASK_STATE + | wxLIST_MASK_TEXT |wxLIST_MASK_IMAGE | wxLIST_MASK_DATA | wxLIST_MASK_WIDTH | wxLIST_MASK_FORMAT); + } // for } //================================================================ @@ -760,7 +722,7 @@ namespace creaImageIO if ( it == -1 ) break; - long adr = GetCtrl(level)->GetItemData(it); + long adr = (long)GetCtrl(level)->GetItemData(it); tree::Node* nod = ((ItemData*)adr)->node; att=(*nod).GetAttribute(mLevelList[level].key[mColumnSelected]); @@ -809,7 +771,6 @@ namespace creaImageIO { mLevelList[level].SortAscending = false; } - SortLevel(level); } //================================================================ @@ -819,11 +780,11 @@ namespace creaImageIO wxBusyCursor busy; std::vector filesname; std::vector nodes; -// nodes.push_back(((ItemData*)GetCtrl(mLastRightLevel)->GetItemData(mLastRightSelected))->node); + nodes.push_back(((ItemData*)GetCtrl(mLastRightLevel)->GetItemData(mLastRightSelected))->node); if(nodes.size() != 0) { GetFilenamesAsString(nodes,filesname); - // GetGimmickView()->Anonymize(filesname,0); + GetGimmickView()->Anonymize(filesname,0); } } @@ -847,11 +808,11 @@ namespace creaImageIO if(sel.size()>1&&levelName.at(levelName.size()-1)!='s') { out<<" "<GetTree().GetLevelDescriptor(mLastLevel).GetName()<<" to .gimmick?"; + out<<" "<GetTree().GetLevelDescriptor(mLastLevel).GetName()<<" to .creaImageIO?"; } if (wxMessageBox(crea::std2wx(out.str()), _T("Remove Files"), @@ -941,7 +902,7 @@ namespace creaImageIO //================================================================ void WxTreeView::SortLevel(int level) - { + { GimmickDebugMessage(1, "WxTreeView::SortLevel(" <GetItemCount(); for (int i = 0; i < n; i++) - { - - //Gets current item data - ItemData* data = (ItemData*)GetCtrl(level)->GetItemData(i); - - //Extracts the node and the type of attribute - tree::Node* nod = data->node; - if(i==0) - { - (*nod).GetAttributeDescriptor - (mLevelList[level].key[mLevelList[level].SortColumn]) - .DecodeType( ty ); - } - //Obtains the organizing attribute - data->attr = & (*nod).GetAttribute - (mLevelList[level].key[mLevelList[level].SortColumn]); - //Selected ? - data->selected = false; - if (GetCtrl(level)->GetItemState(i,wxLIST_STATE_SELECTED)>0) - { - data->selected = true; - nbselected++; - } - - } + { + //Gets current item data + ItemData* data = (ItemData*)GetCtrl(level)->GetItemData(i); + //Extracts the node and the type of attribute + tree::Node* nod = data->node; + if(i==0) + { + (*nod).GetAttributeDescriptor + (mLevelList[level].key[mLevelList[level].SortColumn]) + .DecodeType( ty ); + } // if i + //Obtains the organizing attribute + data->attr = & (*nod).GetAttribute(mLevelList[level].key[mLevelList[level].SortColumn]); + //Selected ? + data->selected = false; + if (GetCtrl(level)->GetItemState(i,wxLIST_STATE_SELECTED)>0) + { + data->selected = true; + nbselected++; + } // if + }// for GimmickDebugMessage(1, "WxTreeView::OnSort : " <SortItems(CompareFunctionInts, 0); - } - else - { - GetCtrl(level)->SortItems(CompareFunctionStrings, 0); - } - - } - else - { - if(ty==1) - { - GetCtrl(level)->SortItems(CompareFunctionInts, 1); - } - else - { - GetCtrl(level)->SortItems(CompareFunctionStrings, 1); - } - } + { + if(ty==1) + { + GetCtrl(level)->SortItems(CompareFunctionInts, 0); + } else { + GetCtrl(level)->SortItems(CompareFunctionStrings, 0); + } // if ty + } else { + if(ty==1) + { + GetCtrl(level)->SortItems(CompareFunctionInts, 1); + } else { + GetCtrl(level)->SortItems(CompareFunctionStrings, 1); + } // if ty + } //mLevelList - // Reselects the unselected n = GetCtrl(level)->GetItemCount(); int after = 0; for (int i = 0; i < n; i++) - { - - //Gets current item data - ItemData* data = (ItemData*)GetCtrl(level)->GetItemData(i); - - // long item = -1; - // for ( ;; ) - // { - // item = GetCtrl(level)->GetNextItem(item,wxLIST_NEXT_ALL); - // if ( item == -1 ) break; - //Gets current item data - // ItemData* data = (ItemData*)GetCtrl(level)->GetItemData(item); - // was selected ? - - if (data->selected) - { - nbselected--; - if (nbselected==0) - { - // if it is the last one we must process the selection - mIgnoreSelectedChanged = false; - } - GetCtrl(level)->SetItemState(i, - wxLIST_STATE_SELECTED, - wxLIST_MASK_STATE - | wxLIST_MASK_TEXT - | wxLIST_MASK_IMAGE - | wxLIST_MASK_DATA - | wxLIST_MASK_WIDTH - | wxLIST_MASK_FORMAT); - } - if (GetCtrl(level)->GetItemState(i,wxLIST_STATE_SELECTED)>0) - { - after++; - } + { + //Gets current item data + ItemData* data = (ItemData*)GetCtrl(level)->GetItemData(i); + // long item = -1; + // for ( ;; ) + // { + // item = GetCtrl(level)->GetNextItem(item,wxLIST_NEXT_ALL); + // if ( item == -1 ) break; + //Gets current item data + // ItemData* data = (ItemData*)GetCtrl(level)->GetItemData(item); + // was selected ? + + if (data->selected) + { + nbselected--; + if (nbselected==0) + { + // if it is the last one we must process the selection + mIgnoreSelectedChanged = false; + } + GetCtrl(level)->SetItemState(i, + wxLIST_STATE_SELECTED, + wxLIST_MASK_STATE + | wxLIST_MASK_TEXT + | wxLIST_MASK_IMAGE + | wxLIST_MASK_DATA + | wxLIST_MASK_WIDTH + | wxLIST_MASK_FORMAT); + } // if data + if (GetCtrl(level)->GetItemState(i,wxLIST_STATE_SELECTED)>0) + { + after++; + } - } + } // for mIgnoreSelectedChanged = false; - GimmickDebugMessage(1, + GimmickDebugMessage(1, "WxTreeView::SortLevel : " <& sel(GetSelected(mLevelList.size()+1)); + const std::vector& sel(GetSelected((int)mLevelList.size()+1)); GetGimmickView()->OnSelectionChange(sel, isSelection,(mLastSelected-1), !mIgnoreSelectedChanged); @@ -1084,9 +1028,9 @@ namespace creaImageIO void WxTreeView::GetNodes(std::vector& nodes, bool direction) { long item = mLastSelected; - int level=mLevelList.size()-1; + int level=(int)mLevelList.size()-1; //Gets current item data - long adr = GetCtrl(level)->GetItemData(item); + long adr = (long)GetCtrl(level)->GetItemData(item); //Extracts the node tree::Node* nod = ((ItemData*)adr)->node; for ( ;; ) @@ -1108,7 +1052,7 @@ namespace creaImageIO if(GetCtrl(level)->GetItemState(item, wxLIST_STATE_SELECTED)==0 ) { - adr = GetCtrl(level)->GetItemData(item); + adr = (long)GetCtrl(level)->GetItemData(item); nod = ((ItemData*)adr)->node; nodes.push_back(nod); } @@ -1134,7 +1078,7 @@ namespace creaImageIO // Should be in another place : not specific ! void WxTreeView::GetSelectedAsString(std::vector&s) { - int level=mLevelList.size(); + int level= (int)mLevelList.size(); const std::vector& sel=GetSelected(level+1); std::vector::const_iterator i; @@ -1254,15 +1198,14 @@ namespace creaImageIO found=true; } } - return !found; } //================================================================ //================================================================ RemoveAlertDlg::RemoveAlertDlg(wxWindow *parent, - wxString title, - const wxSize& size) + wxString title, + const wxSize& size) : wxDialog( parent, wxID_ANY, title, @@ -1276,7 +1219,7 @@ namespace creaImageIO //wxTextCtrl *text = new wxTextCtrl(this, wxID_ANY,crea::std2wx(out),wxDefaultPosition, wxSize(500,20)); wxTextCtrl *text = new wxTextCtrl(this, wxID_ANY, _T("To reload deleted patient, you should synchronize your database before."), - wxDefaultPosition, wxSize(500,20)); + wxDefaultPosition, wxSize(650,20)); // 650 vs 500 ? // JPRx mcheck = new wxCheckBox(this, 5478, _T("Do not display this warning again!")); Connect( mcheck->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED , (wxObjectEventFunction) &RemoveAlertDlg::onCheck ); wxSizer* buttonsSizer = this->CreateSeparatedButtonSizer(wxOK|wxCANCEL);