#include <creaImageIOWxTreeView.h>
#include <creaImageIOGimmickView.h>
-#include <creaImageIOSystem.h>
#include <wx/splitter.h>
#include <wx/gdicmn.h>
#include <boost/date_time/gregorian/gregorian.hpp>
//=====================================================================
///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
}
//=====================================================================
: wxPanel(parent,id),
TreeView(handler, gimmick)
{
- GimmickDebugMessage(1,"WxTreeView::WxTreeView"
- <<std::endl);
+ GimmickDebugMessage(1,"WxTreeView::WxTreeView"<<std::endl);
-
// Split part below toolbar into notebook for views and panel
// for preview, messages...
// TO DO : Splitter
// mSplitter = new wxSplitterWindow( this , -1);
// Global sizer
- msizer = new wxBoxSizer(wxHORIZONTAL);
-
- int ctrl_style = wxLC_REPORT | wxLC_VRULES;
- int col_style = wxLIST_FORMAT_LEFT;
-
+ msizer = new wxBoxSizer(wxHORIZONTAL);
+ int ctrl_style = wxLC_REPORT | wxLC_VRULES;
+ int col_style = wxLIST_FORMAT_LEFT;
// Creating the ListCtrl for the levels > 0 (not for Root level)
- for (int i = 0;
- i < handler->GetTree().GetNumberOfLevels() -1;
- ++i)
- {
- GimmickDebugMessage(5,"Creating view for level "<<i
- <<std::endl);
- LevelType level;
- level.SelectedUpToDate = true;
- level.SortColumn = 0;
-
- // If the first level : parent = this
- wxWindow* sparent = this;
- // else parent = last splitter
- if (i>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 "<<col<<" : "
- <<a->GetName()
- <<std::endl);
-
- if(a->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 "<<i <<std::endl);
+ LevelType level;
+ level.SelectedUpToDate = true;
+ level.SortColumn = 0;
+
+ // If the first level : parent = this
+ wxWindow* sparent = this;
+ // else parent = last splitter
+ if (i>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 "<<col<<" : " <<a->GetName() <<std::endl);
+ if(a->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"));
////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"));
-
wxMenuItem* m1Item=menuItem->Append(wxID_ANY, _T("&Anonymize"));
mAnonymizingID=m1Item->GetId();
Connect( mAnonymizingID, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(WxTreeView::OnAnonymizer) );
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;
SetSizer( msizer );
SetAutoLayout(true);
Layout();
-
}
//=====================================================================
/// Destructor
WxTreeView::~WxTreeView()
{
- GimmickDebugMessage(1,"WxTreeView::~WxTreeView"
- <<std::endl);
+ GimmickDebugMessage(1,"WxTreeView::~WxTreeView"<<std::endl);
delete menu;
delete menuItem;
-
}
//=====================================================================
-
-
//=====================================================================
const std::vector<tree::Node*>& WxTreeView::GetSelected(int level)
{
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;
+ }
+// 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)
it = sel.insert ( it , n );
}
else
- {*/
-
+ {*/
sel.push_back(n);
//}
- }
+ } // for
/*int n = GetCtrl(l-1)->GetItemCount();
for (int i = 0; i<n; i++)
{
}
}
}*/
- }
- else
- {
+ } else {
// NOTHING
}
// if no selection, no remove action.
if(sel.size() != 0)
{
-
std::stringstream out;
std::string levelName=GetTreeHandler()->GetTree().GetLevelDescriptor(mLastLevel).GetName();
out<<"Delete ";
std::vector<tree::Node*>::const_iterator i;
for (i=sel.begin(); i!=sel.end(); ++i)
{
- GimmickMessage(1,
- "deleting '"
- <<(*i)->GetLabel()
- <<"'"<<mLastLevel
- <<std::endl);
+ GimmickMessage(1,"deleting '" << (*i)->GetLabel() << "'" << mLastLevel << std::endl );
if((*i)->GetParent()->GetNumberOfChildren()<2)
{
needRefresh=true;
}
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;
}
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)
{
/// 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 "
<<level
RecursiveUpdateLevel(level);
int i;
for (i=0; i<level-1; i++)
- {
- if (!GetSplitter(i)->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();
+ }
}
//=====================================================================
<<"WxTreeView::RecursiveUpdateLevel(level "
<<level
<<")"<<std::endl);
-
-
+ int l = level - 1;
const std::vector<tree::Node*>& sel(GetSelected(level));
-
- int l = level - 1;
-
// to speed up inserting we hide the control temporarily
GetCtrl(l)->Hide();
GetCtrl(l)->DeleteAllItems();
-
std::vector<tree::Node*>::const_iterator i;
-
for (i=sel.begin(); i!=sel.end(); ++i)
- {
+ {
GimmickDebugMessage(1,
"adding children of '"
<<(*i)->GetLabel()
<<"'"
<<std::endl);
int _id=0;
-
- //Adds items and sets their attributes
-
+ //Adds items and sets their attributes
GetTreeHandler()->LoadChildren(*i,1);
tree::Node::ChildrenListType::reverse_iterator j;
for (j = (*i)->GetChildrenList().rbegin();
<<(*j)->GetLabel()
<<"'"
<<std::endl);
-
wxListItem item;
item.SetMask(wxLIST_MASK_STATE |
wxLIST_MASK_TEXT |
wxLIST_MASK_FORMAT
);
- ItemData* data = new ItemData();
- data->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; k<GetCtrl(l)->GetColumnCount(); ++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 << "["<<val<< "]" << std::endl;
- std::string valtmp(val);
- try
- {
- boost::gregorian::date d1(boost::gregorian::from_undelimited_string(val));
- val = to_iso_extended_string(d1);
- }
- catch (...)
- {
- val = valtmp;
- }
- // std::cout << "["<<val<< "]" << std::endl;
- }
- else if(((*j)->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 << "["<<val<< "]" << std::endl;
+ std::string valtmp(val);
+ try
+ {
+ boost::gregorian::date d1(boost::gregorian::from_undelimited_string(val));
+ val = to_iso_extended_string(d1);
+ } catch (...) {
+ val = valtmp;
+ }
+ // std::cout << "["<<val<< "]" << std::endl;
+ } else if(((*j)->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();
}
//================================================================
void WxTreeView::OnItemSelected(wxListEvent& event)
{
-
- GimmickDebugMessage(1,
- GetTreeHandler()->GetTree().GetLabel()
- <<" WxTreeView::OnItemSelected"<<std::endl);
+ GimmickDebugMessage(1,GetTreeHandler()->GetTree().GetLabel()<<" WxTreeView::OnItemSelected"<<std::endl);
if (mIgnoreSelectedChanged)
- {
- GimmickDebugMessage(1,
- " mIgnoreSelectedChanged true: returning"
- <<std::endl);
- return;
- }
-
-
-
+ {
+ GimmickDebugMessage(1, " mIgnoreSelectedChanged true: returning"<<std::endl);
+ return;
+ }
+
wxListItem info;
info.m_itemId = event.m_itemIndex;
mLastSelected = event.m_itemIndex;
wxObject* obj = event.GetEventObject();
unsigned int level = 0;
for (level = 0; level<mLevelList.size(); ++level)
- {
- if ( GetCtrl(level) == obj ) break;
- }
+ {
+ if ( GetCtrl(level) == obj ) break;
+ }
mLastLevel=level;
- GimmickDebugMessage(1,
- " Level "<<level+1
- <<std::endl);
+ GimmickDebugMessage(1," Level "<<level+1<<std::endl);
// Update the children level (if selection not at last level)
if (level<mLevelList.size()-1)
- {
-
- UpdateLevel( level + 2 );
- // Reset the viewer setting the default image
- GetGimmickView()->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
}
//================================================================
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]);
{
mLevelList[level].SortAscending = false;
}
-
SortLevel(level);
}
//================================================================
//================================================================
void WxTreeView::SortLevel(int level)
- {
+ {
GimmickDebugMessage(1,
"WxTreeView::SortLevel("
<<level<<")"
int nbselected = 0;
int n = GetCtrl(level)->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 : "
<<nbselected<<" selected before sorting"
<<std::endl);
-
mIgnoreSelectedChanged = true;
//
if (mLevelList[level].SortAscending)
- {
-
- if(ty==1)
- {
- GetCtrl(level)->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 : "
<<after<<" selected after sorting"
<<std::endl);
-
- }
+ }
//================================================================
GimmickDebugMessage(7,
"WxTreeView::ValidateSelectedImages"
<<std::endl);
- const std::vector<tree::Node*>& sel(GetSelected(mLevelList.size()+1));
+ const std::vector<tree::Node*>& sel(GetSelected((int)mLevelList.size()+1));
GetGimmickView()->OnSelectionChange(sel,
isSelection,(mLastSelected-1),
!mIgnoreSelectedChanged);
void WxTreeView::GetNodes(std::vector<tree::Node*>& 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 ( ;; )
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);
}
// Should be in another place : not specific !
void WxTreeView::GetSelectedAsString(std::vector<std::string>&s)
{
- int level=mLevelList.size();
+ int level= (int)mLevelList.size();
const std::vector<tree::Node*>& sel=GetSelected(level+1);
std::vector<tree::Node*>::const_iterator i;