From 384558d116ebb2ca264900f837c4a921d695515a Mon Sep 17 00:00:00 2001 From: caballero Date: Tue, 3 Mar 2009 10:46:54 +0000 Subject: [PATCH] Ordering complete with int or string distinction --- src2/creaImageIOTreeAttributeDescriptor.cpp | 30 +++++---- src2/creaImageIOTreeAttributeDescriptor.h | 16 ++--- src2/creaImageIOTreeNode.cpp | 5 +- src2/creaImageIOWxTreeView.cpp | 73 ++++++++++++++++++--- 4 files changed, 87 insertions(+), 37 deletions(-) diff --git a/src2/creaImageIOTreeAttributeDescriptor.cpp b/src2/creaImageIOTreeAttributeDescriptor.cpp index 799cb12..3464797 100644 --- a/src2/creaImageIOTreeAttributeDescriptor.cpp +++ b/src2/creaImageIOTreeAttributeDescriptor.cpp @@ -43,7 +43,6 @@ namespace creaImageIO GimmickDebugMessage(3,"AttributeDescriptor : '"<GetName(); CleanName(mName); - DecodeType(); GimmickDebugMessage(3,"='"<GetDefaultPubDict()->GetEntry(mGroup,mElement); + ->GetDefaultPubDict()->GetEntry(GetGroup(),GetElement()); std::string type = entry->GetVR().str(); - CleanName(type); GimmickDebugMessage(3,"VR Value is "<GetAttributeDescriptorList(GetLevel()).end(); ++a) { - GimmickMessage(1,"Hello my type is"<GetType()<GetGroup()<GetElement()<GetKey()==k) { return *a; diff --git a/src2/creaImageIOWxTreeView.cpp b/src2/creaImageIOWxTreeView.cpp index cdf0c18..1f3ccfe 100644 --- a/src2/creaImageIOWxTreeView.cpp +++ b/src2/creaImageIOWxTreeView.cpp @@ -1,7 +1,7 @@ #include #include #include -int wxCALLBACK MyCompareFunction(long item1, long item2, long sortData) +int wxCALLBACK CompareFunctionStrings(long item1, long item2, long sortData) { std::string s1((char*)((long*)item1)[1]); std::string s2((char*)((long*)item2)[1]); @@ -34,6 +34,39 @@ int wxCALLBACK MyCompareFunction(long item1, long item2, long sortData) } +int wxCALLBACK CompareFunctionInts(long item1, long item2, long sortData) +{ + int val1=atoi((char*)((long*)item1)[1]); + int val2=atoi((char*)((long*)item2)[1]); + GimmickMessage(1, + " Check: STRING 1: " + < val2) + return -1; + + return 0; + } + else + { + if (val1 < val2) + return -1; + if (val1 > val2) + return 1; + + return 0; + + } + +} + namespace creaImageIO { //===================================================================== @@ -395,18 +428,22 @@ namespace creaImageIO //Sets the data for the items to be sorted std::string att; - + unsigned int ty=0; int n = GetCtrl(level)->GetItemCount(); for (int i = 0; i < n; i++) { - //Gets current item data + + //Gets current item data long adr = GetCtrl(level)->GetItemData(i); - //Extracts the node + //Extracts the node and the type of attribute tree::Node* nod = ((ItemData*)adr)->node; + if(i==0) + { + (*nod).GetAttributeDescriptor(mLevelList[level].key[mColumnSelected-1]).DecodeType(ty); + } //Obtains the organizing attribute att=(*nod).GetAttribute(mLevelList[level].key[mColumnSelected-1]); - int ty=(*nod).GetAttributeDescriptor(mLevelList[level].key[mColumnSelected-1]).GetType(); - GimmickMessage(1,"Type:"<SetItemData(i,(long)lp); } - + + //int ty=GetAttributeDescriptor(mLevelList[level].key[mColumnSelected-1]).GetType(); if(mDirection) { - GetCtrl(level)->SortItems(MyCompareFunction, 0); + if(ty==1) + { + GetCtrl(level)->SortItems(CompareFunctionInts, 0); + } + else + { + GetCtrl(level)->SortItems(CompareFunctionStrings, 0); + } + mDirection=false; } else { - GetCtrl(level)->SortItems(MyCompareFunction, 1); - mDirection=true; + if(ty==1) + { + GetCtrl(level)->SortItems(CompareFunctionInts, 1); + } + else + { + GetCtrl(level)->SortItems(CompareFunctionStrings, 1); + } + mDirection=true; } //Resets original data -- 2.45.2