]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOWxTreeView.cpp
Added a List Item Menu
[creaImageIO.git] / src2 / creaImageIOWxTreeView.cpp
index 73ff7c48d4478e39e0d3074b16a9e4a353635d97..0f2363227ffda5ecaa3f036c153a7045f4f05a7d 100644 (file)
@@ -106,12 +106,11 @@ namespace creaImageIO
   //=====================================================================
   // CTor
   WxTreeView::WxTreeView(TreeHandler* handler,
-                        TimestampDatabaseHandler* tdh,
                         GimmickView* gimmick,
                         wxWindow* parent,
                         const wxWindowID id)
     : wxPanel(parent,id),
-      TreeView(handler, tdh, gimmick)
+      TreeView(handler, gimmick)
   {
     GimmickDebugMessage(1,"WxTreeView::WxTreeView"
                        <<std::endl);
@@ -210,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"));
@@ -220,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
 
@@ -264,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);
@@ -286,17 +322,16 @@ namespace creaImageIO
                                }
                                else
                                {
+                                       
                                        sel.push_back(n);
                                }
                        }
-             }
+             }*/
          }
        else
        {
                // NOTHING
-       }
-
-     
+       }   
         
     //    return mLevelList[level-1].Selected;
     return sel;
@@ -351,8 +386,10 @@ namespace creaImageIO
                          {
                            needRefresh=true;
                          }
-                        GetTimestampDatabaseHandler()->RemoveNode("PATH",(*i));
-                       GetTreeHandler()->Remove(*i);
+                         tree::Node* n= (tree::Node*)(*i);
+                         GetTreeHandler()->LoadChildren((*i),4);
+                         GetGimmickView()->AddIgnoreFile(n);
+                         GetTreeHandler()->Remove(*i);
                      }
                    
                    if(needRefresh && mLastLevel>1)
@@ -540,6 +577,7 @@ namespace creaImageIO
   //================================================================
   void WxTreeView::OnItemSelected(wxListEvent& event)
   { 
+         
     GimmickDebugMessage(1,
                        GetTreeHandler()->GetTree().GetLabel()
                        <<" WxTreeView::OnItemSelected"<<std::endl);
@@ -582,13 +620,13 @@ namespace creaImageIO
     // Validate selected images if the selection is at image level
     if (level==(mLevelList.size()-1)) //&&mProcess) 
       {
-       if(event.GetEventType()==10145)
+       if(event.GetEventType()==wxEVT_COMMAND_LIST_ITEM_SELECTED)
          {
-           ValidateSelectedImages (true);
+                 ValidateSelectedImages (true);
          }
        else
          {
-           ValidateSelectedImages (false);
+                 ValidateSelectedImages (false);
          }
       }
     
@@ -638,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);
     
+  }
+  
   //================================================================
   //================================================================
 
@@ -648,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)
       {
@@ -1094,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)