]> Creatis software - creaImageIO.git/blobdiff - src/creaImageIOWxTreeView.cpp
#3218 creaImageIO Feature New Normal - vtk8itk4wx3-mingw64
[creaImageIO.git] / src / creaImageIOWxTreeView.cpp
index 01b8ad41764a4e61d31a77145c9bea44997e91a2..3a1c04e603fc9f3d747c392f15cbe28b35601633 100644 (file)
@@ -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 <creaImageIOWxTreeView.h>
 #include <creaImageIOGimmickView.h>
-#include <creaImageIOSystem.h>
 #include <wx/splitter.h>
 #include <wx/gdicmn.h>
 #include <boost/date_time/gregorian/gregorian.hpp>
@@ -222,11 +248,11 @@ namespace creaImageIO
        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();
@@ -276,47 +302,63 @@ namespace creaImageIO
   //=====================================================================
   const std::vector<tree::Node*>& WxTreeView::GetSelected(int level)
   {
+printf("EED WxTreeView::GetSelected Start\n");   
+         
          std::vector<tree::Node*>& sel = mLevelList[0].Selected;
     //  if (GetSelectedUpToDate(level)) 
     int l = level - 1;
     // the selection of upper level
+printf("EED WxTreeView::GetSelected 1\n");       
        if(mLevelList.size() == level -1)
-                sel = mLevelList.back().Selected;
-       else
-                 sel=  mLevelList[l].Selected;
+       {
+               sel = mLevelList.back().Selected;
+       } else {
+               sel=  mLevelList[l].Selected;
+       }
+printf("EED WxTreeView::GetSelected 2\n");       
        if (sel.size() > 0)
        {
                sel.clear();
        }
-         if (level == 1) 
-      {
-       sel.push_back(GetTreeHandler()->GetTree().GetTree());
-      }
-         else if (level < mLevelList.size()+2 ) 
+printf("EED WxTreeView::GetSelected 3\n");       
+       if (level == 1) 
     {
+printf("EED WxTreeView::GetSelected 4\n");       
+               sel.push_back(GetTreeHandler()->GetTree().GetTree());
+    } else if (level < mLevelList.size()+2 )  
+       {
+printf("EED WxTreeView::GetSelected 5\n");       
                long item = -1;
                for ( ;; )
                {
+printf("EED WxTreeView::GetSelected 5.1\n");     
                        item = GetCtrl(l-1)->GetNextItem(item,
                                                                                 wxLIST_NEXT_ALL,
                                                                                 wxLIST_STATE_SELECTED);
+printf("EED WxTreeView::GetSelected 5.2\n");     
                        if ( item == -1 )
+                       {
+printf("EED WxTreeView::GetSelected 5.3\n");     
                                break;
-                       long adr = GetCtrl(l-1)->GetItemData(item);
+                       }
+                       long adr = (long)GetCtrl(l-1)->GetItemData(item);
+printf("EED WxTreeView::GetSelected 5.4\n");     
                        tree::Node* n = ((ItemData*)adr)->node;
-                       if(mLastSelected==item)
+                       /* 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<tree::Node*>::iterator it;
                                it = sel.begin();
                                it = sel.insert ( it , n );
                        }
                        else
-                       {
-                               
+                       {*/     
+printf("EED WxTreeView::GetSelected 6\n");       
                                sel.push_back(n);
-                       }                       
+                       //}                     
                        
-               }
+               } // for
                /*int n = GetCtrl(l-1)->GetItemCount();
                for (int i = 0; i<n; i++)
                {
@@ -338,13 +380,12 @@ namespace creaImageIO
                                }
                        }
              }*/
-         }
-       else
-       {
+         } else {
                // NOTHING
        }   
         
     //    return mLevelList[level-1].Selected;
+printf("EED WxTreeView::GetSelected End\n");     
     return sel;
   }
 
@@ -390,11 +431,7 @@ namespace creaImageIO
                    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;
@@ -406,21 +443,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;
        }
@@ -443,7 +474,8 @@ namespace creaImageIO
   /// Updates a level of the view (adds or removes children, etc.)
   void WxTreeView::UpdateLevel( int level )
   {
-    GimmickDebugMessage(1,
+printf("EED WxTreeView::UpdateLevel Start\n "); 
+       GimmickDebugMessage(1,
                        GetTreeHandler()->GetTree().GetLabel()
                        <<"WxTreeView::UpdateLevel(level "
                        <<level
@@ -451,15 +483,26 @@ namespace creaImageIO
                        <<std::endl);
     
     wxBusyCursor busy;
+printf("EED WxTreeView::UpdateLevel 1\n "); 
     RecursiveUpdateLevel(level);
+printf("EED WxTreeView::UpdateLevel 2\n "); 
     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();    
+    {
+printf("EED WxTreeView::UpdateLevel 3\n "); 
+               if (!GetSplitter(i)->IsSplit()) 
+               { 
+printf("EED WxTreeView::UpdateLevel 4\n "); 
+                       GetSplitter(i)->SplitVertically(  GetCtrl(i), GetSplitter(i+1),100 );
+               } // if
+      } // for
+printf("EED WxTreeView::UpdateLevel 5\n "); 
+    if (GetSplitter(i)->IsSplit()) 
+       { 
+printf("EED WxTreeView::UpdateLevel 6\n "); 
+               GetSplitter(i)->Unsplit(); 
+       }
+printf("EED WxTreeView::UpdateLevel End\n "); 
     
   }
   //=====================================================================
@@ -468,25 +511,33 @@ namespace creaImageIO
   /// Recursive method called upon by UpdateLevel to refresh all windows
   void WxTreeView::RecursiveUpdateLevel( int level )
   {
+printf("EED WxTreeView::RecursiveUpdateLevel Start\n");          
     GimmickDebugMessage(1,
                        GetTreeHandler()->GetTree().GetLabel()
                        <<"WxTreeView::RecursiveUpdateLevel(level "
                        <<level
                        <<")"<<std::endl);
     
+printf("EED WxTreeView::RecursiveUpdateLevel 0.1\n");    
     
     const std::vector<tree::Node*>& sel(GetSelected(level));
     
+printf("EED WxTreeView::RecursiveUpdateLevel 0.2\n");    
     int l = level - 1;
+printf("EED WxTreeView::RecursiveUpdateLevel 0.3\n");    
     
     // to speed up inserting we hide the control temporarily
     GetCtrl(l)->Hide();
+printf("EED WxTreeView::RecursiveUpdateLevel 0.4\n");    
     GetCtrl(l)->DeleteAllItems();
     
+printf("EED WxTreeView::RecursiveUpdateLevel 0.5\n");    
     std::vector<tree::Node*>::const_iterator i;
+printf("EED WxTreeView::RecursiveUpdateLevel 1\n");      
     
     for (i=sel.begin(); i!=sel.end(); ++i)
-      {
+    {
+printf("EED WxTreeView::RecursiveUpdateLevel 2\n");      
        GimmickDebugMessage(1,
                            "adding children of '"
                            <<(*i)->GetLabel()
@@ -502,6 +553,7 @@ namespace creaImageIO
             j!= (*i)->GetChildrenList().rend(); 
             ++j)
          {
+printf("EED WxTreeView::RecursiveUpdateLevel 3\n");      
            GimmickDebugMessage(1,
                                "adding children "
                                <<(*j)->GetLabel()
@@ -536,9 +588,10 @@ namespace creaImageIO
                if(k==0 && level <3)
                {
                  val = (*j)->GetAttribute("NumberOfChildren");
-               }
-               else
+               } else {
                  val = (*j)->GetAttribute(mLevelList[l].key[k]);
+               }
+printf("EED WxTreeView::RecursiveUpdateLevel 4\n");      
                if(((*j)->GetAttributeDescriptor(mLevelList[l].key[k])).isDateEntry()) // Date
                  {
                    //                                    std::cout << "["<<val<< "]" << std::endl;
@@ -553,19 +606,17 @@ namespace creaImageIO
                        val =  valtmp;
                      }
                    //                                    std::cout << "["<<val<< "]" << std::endl;     
-                 }
-               else if(((*j)->GetAttributeDescriptor(mLevelList[l].key[k])).isTimeEntry()) // Time
+                 } 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
-                 {
+                 } else {
                    if (val.size()==0) val = "?";
                  }
+printf("EED WxTreeView::RecursiveUpdateLevel 5\n");      
                if (val.size()==0) val = "X";
                item.SetText( crea::std2wx(val));
                item.SetColumn(k);
@@ -576,9 +627,12 @@ namespace creaImageIO
            
          }
       }
+printf("EED WxTreeView::RecursiveUpdateLevel 6\n");      
     
     SortLevel(l);
+printf("EED WxTreeView::RecursiveUpdateLevel 7\n");      
     GetCtrl(l)->Show();
+printf("EED WxTreeView::RecursiveUpdateLevel End\n");    
   }
   //=====================================================================
   
@@ -606,20 +660,17 @@ namespace creaImageIO
   //================================================================
   void WxTreeView::OnItemSelected(wxListEvent& event)
   { 
-         
-    GimmickDebugMessage(1,
-                       GetTreeHandler()->GetTree().GetLabel()
-                       <<" WxTreeView::OnItemSelected"<<std::endl);
+printf("EED  WxTreeView::OnItemSelected Start\n");       
+    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);
+printf("EED  WxTreeView::OnItemSelected 0.1\n");         
+               return;
+    }
     
-
+printf("EED  WxTreeView::OnItemSelected 1\n");   
     
     wxListItem info;
     info.m_itemId = event.m_itemIndex;
@@ -628,44 +679,50 @@ namespace creaImageIO
     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);
     
+printf("EED  WxTreeView::OnItemSelected 2 %d  %d  \n", level, mLevelList.size() );       
     // 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();
-      }
+    {  
+printf("EED  WxTreeView::OnItemSelected 2.0\n");         
+               UpdateLevel( level + 2 ); 
+               // Reset the viewer setting the default image
+printf("EED  WxTreeView::OnItemSelected 2.1\n");         
+               GetGimmickView()->ClearSelection();
+printf("EED  WxTreeView::OnItemSelected 2.2\n");         
+    }
+printf("EED  WxTreeView::OnItemSelected 3\n");   
     // Select all images if the selection is at series level
     if (level==mLevelList.size()-2) 
+       {
+printf("EED  WxTreeView::OnItemSelected 4\n");   
                SelectAll(level+1);
+       }
+printf("EED  WxTreeView::OnItemSelected 5\n");   
     // 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
+printf("EED  WxTreeView::OnItemSelected End\n");
   }
   //================================================================
 
   //================================================================
   void WxTreeView::SelectAll(int level)
   {
+printf("EED  WxTreeView::SelectAll Start\n");    
+         
     long item = -1;
     //    int level=mLevelList.size()-1;
     for ( ;; )
@@ -686,6 +743,8 @@ namespace creaImageIO
        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);
       }
+printf("EED  WxTreeView::SelectAll End\n");      
+         
   }
 
   //================================================================
@@ -760,7 +819,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]);
        
@@ -819,11 +878,11 @@ namespace creaImageIO
           wxBusyCursor busy;
           std::vector<std::string> filesname;
           std::vector<tree::Node*> 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 +906,11 @@ namespace creaImageIO
            if(sel.size()>1&&levelName.at(levelName.size()-1)!='s')
              {
                out<<" "<<levelName;
-               out<<"s to .gimmick?";
+               out<<"s to .creaImageIO?";
              }
            else
              {
-               out<<" "<<GetTreeHandler()->GetTree().GetLevelDescriptor(mLastLevel).GetName()<<" to .gimmick?";
+               out<<" "<<GetTreeHandler()->GetTree().GetLevelDescriptor(mLastLevel).GetName()<<" to .creaImageIO?";
              }
            if (wxMessageBox(crea::std2wx(out.str()),
                             _T("Remove Files"),
@@ -941,7 +1000,8 @@ namespace creaImageIO
 
   //================================================================
   void WxTreeView::SortLevel(int level)
-  {      
+  { 
+printf("EED WxTreeView::SortLevel Start %d \n", level);
     GimmickDebugMessage(1,
                        "WxTreeView::SortLevel(" 
                        <<level<<")"
@@ -955,112 +1015,105 @@ namespace creaImageIO
     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);
+    {
+               //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
        
-       //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++;
-         }
-
-      }        
     GimmickDebugMessage(1,
                        "WxTreeView::OnSort : " 
                        <<nbselected<<" selected before sorting"
                        <<std::endl);  
 
+printf("EED WxTreeView::SortLevel 1\n");
     mIgnoreSelectedChanged = true; 
     // 
     if (mLevelList[level].SortAscending)
-      {
-       
-       if(ty==1)
-         {
-           GetCtrl(level)->SortItems(CompareFunctionInts, 0);
-         }
-       else
-         {
-           GetCtrl(level)->SortItems(CompareFunctionStrings, 0);
-         }
+    {
+printf("EED WxTreeView::SortLevel 2\n");
        
-      }
-    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
  
+printf("EED WxTreeView::SortLevel 3\n");
 
     // 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)
+               {
+printf("EED WxTreeView::SortLevel 4\n");
+                       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);  
   
+printf("EED WxTreeView::SortLevel End\n");
   }
   //================================================================
 
@@ -1071,7 +1124,7 @@ namespace creaImageIO
     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);
@@ -1084,9 +1137,9 @@ namespace creaImageIO
   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 ( ;; )
@@ -1108,7 +1161,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 +1187,7 @@ namespace creaImageIO
   // 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;
     
@@ -1254,15 +1307,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 +1328,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);