]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOWxTreeView.cpp
Added a List Item Menu
[creaImageIO.git] / src2 / creaImageIOWxTreeView.cpp
index 97460164e3126be0ee473543c6654c45fa3b390c..0f2363227ffda5ecaa3f036c153a7045f4f05a7d 100644 (file)
@@ -209,6 +209,7 @@ namespace creaImageIO
     
 #if wxUSE_MENUS
 
+        // Column Menu
     menu =new wxMenu;
        wxMenuItem* m1=menu->Append(wxID_ANY, _T("&Sort ascending"));
        wxMenuItem* m2=menu->Append(wxID_ANY, _T("&Sort descending"));
@@ -219,6 +220,19 @@ namespace creaImageIO
        Connect( mAscendingID, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(WxTreeView::OnPopupSort) );
        Connect( mDescendingID, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(WxTreeView::OnPopupSort) );
        Connect( mFilterID, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(WxTreeView::OnPopupFilter) );
+
+
+
+       //ItemMenu
+       menuItem =new wxMenu;
+       wxMenuItem* m1Item=menuItem->Append(wxID_ANY, _T("&Anonymize"));
+       wxMenuItem* m2Item=menuItem->Append(wxID_ANY, _T("&Local Copy"));
+       
+       mAnonymizingID=m1Item->GetId();
+       mLocalCopyID=m2Item->GetId();
+       //Connect( mAnonymizingID, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(WxTreeView::OnAnonymize) );
+       //Connect( mLocalCopyID, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(WxTreeView::OnLocalCopy) );
+       
        
 #endif // wxUSE_MENUS
 
@@ -263,16 +277,39 @@ namespace creaImageIO
     // the selection of upper level
     std::vector<tree::Node*>& sel(mLevelList[level-1].Selected);
     sel.clear();
-
-    if (level == 1) 
+         if (level == 1) 
       {
        sel.push_back(GetTreeHandler()->GetTree().GetTree());
       }
     else if (level < 5) 
     {
-               int n = GetCtrl(l-1)->GetItemCount();
-               for (int i = 0; i < n; i++)
+               long item = -1;
+               for ( ;; )
+               {
+                       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)
+                       {
+                               std::vector<tree::Node*>::iterator it;
+                               it = sel.begin();
+                               it = sel.insert ( it , n );
+                       }
+                       else
+                       {
+                               
+                               sel.push_back(n);
+                       }                       
+                       
+               }
+               /*int n = GetCtrl(l-1)->GetItemCount();
+               for (int i = 0; i<n; i++)
                {
+                       std::cout<<GetCtrl(l-1)->GetItemState(i,wxLIST_STATE_SELECTED)<<std::endl;
                        if ( GetCtrl(l-1)->GetItemState(i,wxLIST_STATE_SELECTED))
                        {
                                long adr = GetCtrl(l-1)->GetItemData(i);
@@ -285,17 +322,16 @@ namespace creaImageIO
                                }
                                else
                                {
+                                       
                                        sel.push_back(n);
                                }
                        }
-             }
+             }*/
          }
        else
        {
                // NOTHING
-       }
-
-     
+       }   
         
     //    return mLevelList[level-1].Selected;
     return sel;
@@ -541,6 +577,7 @@ namespace creaImageIO
   //================================================================
   void WxTreeView::OnItemSelected(wxListEvent& event)
   { 
+         
     GimmickDebugMessage(1,
                        GetTreeHandler()->GetTree().GetLabel()
                        <<" WxTreeView::OnItemSelected"<<std::endl);
@@ -585,11 +622,11 @@ namespace creaImageIO
       {
        if(event.GetEventType()==wxEVT_COMMAND_LIST_ITEM_SELECTED)
          {
-           ValidateSelectedImages (true);
+                 ValidateSelectedImages (true);
          }
        else
          {
-           ValidateSelectedImages (false);
+                 ValidateSelectedImages (false);
          }
       }
     
@@ -639,7 +676,22 @@ namespace creaImageIO
     PopupMenu(menu, clientpt);
     
   }
+
+  void WxTreeView::OnItemMenu(wxListEvent &event)
+  {
+        wxPoint clientpt;
+    clientpt.x = wxGetMousePosition().x - this->GetScreenPosition().x;
+    clientpt.y = wxGetMousePosition().y - this->GetScreenPosition().y;
+    senderCtrl = event.GetEventObject(); 
+    unsigned int level = 0;
+    for (level = 0; level<mLevelList.size(); ++level)
+      {
+               if ( GetCtrl(level) == senderCtrl ) break;
+      }
+    PopupMenu(menuItem, clientpt);
     
+  }
+  
   //================================================================
   //================================================================
 
@@ -649,7 +701,6 @@ namespace creaImageIO
     GimmickDebugMessage(7,
                        "WxTreeView::OnEndLabelEdit" 
                        <<std::endl);
-    wxObject* ctrl = event.GetEventObject(); 
     unsigned int level = 0;
     for (level = 0; level<mLevelList.size(); ++level)
       {
@@ -1095,7 +1146,7 @@ BEGIN_EVENT_TABLE(MyListCtrl, wxListCtrl)
   */
     EVT_LIST_KEY_DOWN(-1, WxTreeView::OnKeyDown)
     EVT_LIST_ITEM_SELECTED(-1, WxTreeView::OnItemSelected)
-  
+       EVT_LIST_ITEM_RIGHT_CLICK(-1, WxTreeView::OnItemMenu)
     EVT_LIST_ITEM_DESELECTED(-1, WxTreeView::OnItemDeSelected)
        /*
     EVT_LIST_KEY_DOWN(LIST_CTRL, MyListCtrl::OnListKeyDown)