]> Creatis software - creaImageIO.git/commitdiff
Added selection reminder on sort functionality
authorcaballero <caballero>
Tue, 10 Mar 2009 11:16:43 +0000 (11:16 +0000)
committercaballero <caballero>
Tue, 10 Mar 2009 11:16:43 +0000 (11:16 +0000)
src2/creaImageIOWxTreeView.cpp
src2/creaImageIOWxTreeView.h

index e80697ab9491ac84d47ab1cf6ea36e327b5ee785..b2998c7b7901460886cd2ae91d78b5c0bf8551f3 100644 (file)
@@ -210,7 +210,7 @@ namespace creaImageIO
              }
          }     
       }
-       
+        
          return sel;
   }
 
@@ -390,7 +390,7 @@ namespace creaImageIO
     wxListItem info;
     info.m_itemId = event.m_itemIndex;
     mLastSelected=event.m_itemIndex;
-
+       
     // retrieve the level
     wxObject* obj = event.GetEventObject();   
     unsigned int level = 0;
@@ -401,7 +401,12 @@ namespace creaImageIO
     GimmickDebugMessage(1,
                        " Level "<<level+1
                        <<std::endl);
+
+       
+       mSelected=GetSelected(level+2);
+       
     if (level<mLevelList.size()-1) UpdateLevel( level + 2 ); 
+
     if (level==mLevelList.size()-1) ValidateSelectedImages ();
 
   }
@@ -424,11 +429,13 @@ namespace creaImageIO
                {
                if ( GetCtrl(level) == ctrl ) break;
                }
+               
                UpdateLevel(level+1);
+               
                wxBusyCursor busy;
         
                int l = level - 1;
-
+               
                //Sets the data for the items to be sorted
                std::string att;
                unsigned int ty=0;
@@ -486,7 +493,8 @@ namespace creaImageIO
                }
 
                //Resets original data
-                       
+               std::vector<tree::Node*>::iterator selection;
+               std::vector<long> change;
                long it = -1;
                for ( ;; )
                {
@@ -497,6 +505,21 @@ namespace creaImageIO
                        //Gets current item data, extracts the node and resets it
                        long item = GetCtrl(level)->GetItemData(it);
                        GetCtrl(level)->SetItemData(it,((long*)item)[0]);
+                       tree::Node* n= ((ItemData*)((long*)item)[0])->node;
+                       for(selection=mSelected.begin();selection!=mSelected.end();++selection)
+                       {
+                               if((*selection)->GetAttribute("ID").compare(n->GetAttribute("ID"))==0)
+                               {
+                                       change.push_back(it);   
+                               }
+                       }
+                       
+               }
+               std::vector<long>::iterator selectedIts;
+               for(selectedIts=change.begin();selectedIts!=change.end();++selectedIts)
+               {
+                       GetCtrl(level)->SetItemState(*selectedIts,wxLIST_STATE_SELECTED, wxLIST_MASK_STATE 
+               | wxLIST_MASK_TEXT |wxLIST_MASK_IMAGE | wxLIST_MASK_DATA | wxLIST_MASK_WIDTH | wxLIST_MASK_FORMAT);
                        
                }
        }
index e71540adf845862be2a3f84b36448548d6c10bc8..60956fba2bfe28fdd4e6e2038dfc8bc3230a0363 100644 (file)
@@ -82,6 +82,8 @@ namespace creaImageIO
          bool mDirection;
          ///The last selected item on the list
          long mLastSelected;
+
+         std::vector<tree::Node*> mSelected;