]> Creatis software - creaImageIO.git/commitdiff
Impemented Remove Function
authorcaballero <caballero>
Wed, 18 Feb 2009 16:38:32 +0000 (16:38 +0000)
committercaballero <caballero>
Wed, 18 Feb 2009 16:38:32 +0000 (16:38 +0000)
src2/creaImageIOGimmick.cpp
src2/creaImageIOSQLiteTreeHandler.cpp
src2/creaImageIOSQLiteTreeHandler.h
src2/creaImageIOTreeView.h
src2/creaImageIOWxGimmickView.cpp
src2/creaImageIOWxGimmickView.h
src2/creaImageIOWxTreeView.cpp
src2/creaImageIOWxTreeView.h

index 99dd9d1a0e30e906e88db0530587b88d8399f017..ced62fa28882e1d5ca1b9e6f6fd49dc631a3a642 100644 (file)
@@ -206,6 +206,7 @@ namespace creaImageIO
     mImageAdder.AddDirectory(f,recurse);
     
   }
+
   //========================================================================
 
   //========================================================================
index ef16549321508e95cbd4a5ee7a1d9dab86d8cd23..3a01e117f8a78f3861ede83c5200f4e054f57e8c 100644 (file)
@@ -144,10 +144,24 @@ namespace creaImageIO
  
 
   //===================================================================== 
-   bool SQLiteTreeHandler::Remove(tree::Node*)
+   bool SQLiteTreeHandler::Remove(tree::Node* node)
    {
-     return false;
+   DBRecursiveRemoveNode(node);
+    //    std::cout << "DELETE"<<std::endl;
+    if (node->GetParent())
+      {
+       node->GetParent()->RemoveChildrenFromList(node);
+      }
+    delete node;
+    //    std::cout << "DELETE OK"<<std::endl;
+    return true;
    }
+
+    //========================================================================
+
+  
+  
   //===================================================================== 
 
   //===================================================================== 
@@ -720,6 +734,7 @@ namespace creaImageIO
     std::string insert("INSERT INTO ");
     insert += GetTree().GetLevelDescriptor(n->GetLevel()).GetName();
     insert += " " + val + ";";
+
     UPDATEDB(insert);
        
     // Store DB id of newly created node;
@@ -811,6 +826,33 @@ namespace creaImageIO
   }
   //===================================================================== 
 
+
+  //=====================================================================
+  void SQLiteTreeHandler::DBRecursiveRemoveNode(Node* node)
+  {
+       
+    std::string query = "DELETE FROM ";
+   
+    query += GetTree().GetLevelDescriptor(node->GetLevel()).GetName();
+    query += " WHERE ID='"+ node->GetAttribute("ID") + "';";
+    UPDATEDB(query);
+       GimmickDebugMessage(2,
+                           " Deleting '"
+                               <<node->GetLabel()<<"' with ID '"
+                           <<node->GetAttribute("ID")
+                           <<"' in level "<< GetTree().GetLevelDescriptor(node->GetLevel()).GetName()
+                           <<std::endl);
+
+    Node::ChildrenListType::iterator i;
+    for (i  = node->GetChildrenList().begin();
+        i != node->GetChildrenList().end();
+        i++)
+      {
+       DBRecursiveRemoveNode((*i));
+      }
+  }
+
   /*
   //=====================================================================
   bool SQLiteTreeHandler::DBInsert(Node* alien_node,
@@ -1097,12 +1139,14 @@ namespace creaImageIO
     //    std::cout << " ** Node = "<<i->second<<std::endl;
     return i->second;
   }
   //=====================================================================
 
   //=====================================================================
   bool SQLiteTreeHandler::Remove(Node* node)
   {
-    DBRecursiveRemoveNode(node);
+
+    //DBRecursiveRemoveNode(node);
  
     //    std::cout << "DELETE"<<std::endl;
     if (node->GetParent())
@@ -1113,6 +1157,8 @@ namespace creaImageIO
     //    std::cout << "DELETE OK"<<std::endl;
     return true;
   }
+  
+  
   //========================================================================
 
   //=====================================================================
@@ -1135,6 +1181,7 @@ namespace creaImageIO
        DBRecursiveRemoveNode((*i));
       }
   }
+  
   //=====================================================================
   
   //=====================================================================
index bdf5fa729b7557671942bfd7fa0fed0b52aaa15f..cc11b746e08cb0e62fd1cdf3754aa878b2ca5086 100644 (file)
@@ -158,6 +158,10 @@ namespace creaImageIO
     /// Inserts the Node in the database
     void DBInsert(tree::Node* n);
     //======================================================================
+
+
+       // Recursively Removes the nodes whose parent is given as a parameter
+    void DBRecursiveRemoveNode(tree::Node* node);
     /*
     /// 
     int DBQueryNumberOfChildren(tree::Node* n);
@@ -188,9 +192,9 @@ namespace creaImageIO
     //                                  UpdateSummary& summary);
     
 
-    // 
-    void DBRecursiveRemoveNode(tree::Node* node);
+       */
 
+       /*
 
     void BuildSQLFieldsValues(tree::Node* n,
                              std::string& str);
index c6344e21bcef777b55171d162843c25922c5004a..edee939bfc807f2a4b63695c6fa982a65d560850 100644 (file)
@@ -3,6 +3,7 @@
 
 #include <creaImageIOTreeHandler.h>
 #include <creaImageIOSystem.h>
+
 namespace creaImageIO
 {
   /**
@@ -24,7 +25,11 @@ namespace creaImageIO
       /// Updates the view of a level given the selected items of upper level
       virtual void UpdateLevel( int ) 
       { GimmickError("INTERNAL ERROR : TreeView::UpdateLevel not overloaded");}
-      
+
+         ///Removes selected nodes on given level
+         virtual void RemoveSelected( int )
+         { GimmickError("INTERNAL ERROR : TreeView::RemoveSelected not overloaded");}
+    
     protected:
       TreeHandler* GetTreeHandler() { return mTreeHandler; }
 
index 06b7372edd1c580abb3b564c80182fd5fb1b6f54..262d2a480303f15f399ff04f1b98a12119061058 100644 (file)
@@ -327,6 +327,14 @@ namespace creaImageIO
        DisplayAddSummary();
       }
   }
+  //=================================================
+
+   //=================================================
+  void WxGimmickView::OnRemove(wxCommandEvent& event)
+  {
+       //TODO Select current tree handler
+   GetTreeViewMap()["Local database"]->RemoveSelected(1);
+  }
   //=================================================
 
   //=================================================
@@ -383,6 +391,7 @@ namespace creaImageIO
   BEGIN_EVENT_TABLE(WxGimmickView, wxPanel)
     EVT_TOOL(TOOL_ADDFILES_ID, WxGimmickView::OnAddFiles)
     EVT_TOOL(TOOL_ADDDIR_ID, WxGimmickView::OnAddDir)
+       EVT_TOOL(TOOL_REMOVE_ID, WxGimmickView::OnRemove)
     END_EVENT_TABLE()
   //=================================================
 
index 174468c5afb1372e8ff6602cdf8efd51a0e20706..c2790c721c9fda3f5c4943f9da5c18f14824646d 100644 (file)
@@ -65,6 +65,8 @@ namespace creaImageIO
       void OnAddFiles(wxCommandEvent& event);
       /// Callback for adding dir
       void OnAddDir(wxCommandEvent& event);
+         /// Callback for removing files
+      void OnRemove(wxCommandEvent& event);
       /// Display a message box with the last addition statistics
       void DisplayAddSummary();
 
index 474e7f4dafd2a7b2da88ccf96d52d59e344659f5..fbe6925391e10de2e25928d9c42c14513ebdabc1 100644 (file)
@@ -87,16 +87,10 @@ namespace creaImageIO
   {
     tree::Node* node;
   };
   //=====================================================================
-
-  //=====================================================================
-  /// 
-  void WxTreeView::UpdateLevel( int level )
+   std::vector<tree::Node*> WxTreeView::GetSelected(int level)
   {
-    GimmickDebugMessage(1,
-                       GetTreeHandler()->GetTree().GetLabel()
-                       <<" view : updating level "<<level
-                       <<std::endl);
     int l = level - 1;
     // the selection of upper level
     std::vector<tree::Node*> sel;
@@ -117,7 +111,49 @@ namespace creaImageIO
              }
          }     
       }
+         return sel;
+  }
+
+  //=====================================================================
+  
+  ///Removes selected nodes on given level
+  void WxTreeView::RemoveSelected( int level )
+  {
+         std::vector<tree::Node*> sel=GetSelected(level+1);
+
+         std::vector<tree::Node*>::iterator i;
+         for (i=sel.begin(); i!=sel.end(); ++i)
+      {
+               GimmickDebugMessage(2,
+                           "deleting '"
+                           <<(*i)->GetLabel()
+                           <<"'"<<level
+                           <<std::endl);
+                       GetTreeHandler()->Remove(*i);
+         }
+
+         UpdateLevel(level);
+         
+  }
+    
+
+  //=====================================================================
+
+  //=====================================================================
+  
+  /// 
+  void WxTreeView::UpdateLevel( int level )
+  {
+         GimmickDebugMessage(1,
+                       GetTreeHandler()->GetTree().GetLabel()
+                       <<" view : updating level "<<level
+                       <<std::endl);
+
+
+    std::vector<tree::Node*> sel=GetSelected(level);
 
+         int l = level - 1;
     // to speed up inserting we hide the control temporarily
     GetCtrl(l)->Hide();
     GetCtrl(l)->DeleteAllItems();
index a7935830070898011ec489f7b2f44a2619a1499e..0f026e32c8a4eae16d193e13a8f54ef51d250ebd 100644 (file)
@@ -29,7 +29,10 @@ namespace creaImageIO
       
       /// Updates the view of a level given the selected items of upper level
       virtual void UpdateLevel( int );
-      
+
+         ///Removes selected nodes on given level
+         virtual void RemoveSelected( int );
+
       /// Callback for selection change
       void OnSelected(wxListEvent& event);
 
@@ -49,6 +52,9 @@ namespace creaImageIO
       
       /// return the wxListCtrl of one level
       wxListCtrl* GetCtrl(int l) { return mLevelList[l].wxCtrl; }
+
+         std::vector<tree::Node*>GetSelected(int level);
+  
  
 
       DECLARE_EVENT_TABLE()