From ff9cfd68812d5dd296fa71fbcc21e7e867d4da23 Mon Sep 17 00:00:00 2001 From: caballero Date: Wed, 18 Feb 2009 16:38:32 +0000 Subject: [PATCH] Impemented Remove Function --- src2/creaImageIOGimmick.cpp | 1 + src2/creaImageIOSQLiteTreeHandler.cpp | 53 +++++++++++++++++++++++++-- src2/creaImageIOSQLiteTreeHandler.h | 8 +++- src2/creaImageIOTreeView.h | 7 +++- src2/creaImageIOWxGimmickView.cpp | 9 +++++ src2/creaImageIOWxGimmickView.h | 2 + src2/creaImageIOWxTreeView.cpp | 52 ++++++++++++++++++++++---- src2/creaImageIOWxTreeView.h | 8 +++- 8 files changed, 125 insertions(+), 15 deletions(-) diff --git a/src2/creaImageIOGimmick.cpp b/src2/creaImageIOGimmick.cpp index 99dd9d1..ced62fa 100644 --- a/src2/creaImageIOGimmick.cpp +++ b/src2/creaImageIOGimmick.cpp @@ -206,6 +206,7 @@ namespace creaImageIO mImageAdder.AddDirectory(f,recurse); } + //======================================================================== //======================================================================== diff --git a/src2/creaImageIOSQLiteTreeHandler.cpp b/src2/creaImageIOSQLiteTreeHandler.cpp index ef16549..3a01e11 100644 --- a/src2/creaImageIOSQLiteTreeHandler.cpp +++ b/src2/creaImageIOSQLiteTreeHandler.cpp @@ -144,10 +144,24 @@ namespace creaImageIO //===================================================================== - bool SQLiteTreeHandler::Remove(tree::Node*) + bool SQLiteTreeHandler::Remove(tree::Node* node) { - return false; + DBRecursiveRemoveNode(node); + + // std::cout << "DELETE"<GetParent()) + { + node->GetParent()->RemoveChildrenFromList(node); + } + delete node; + // std::cout << "DELETE OK"<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 '" + <GetLabel()<<"' with ID '" + <GetAttribute("ID") + <<"' in level "<< GetTree().GetLevelDescriptor(node->GetLevel()).GetName() + <GetChildrenList().begin(); + i != node->GetChildrenList().end(); + i++) + { + DBRecursiveRemoveNode((*i)); + } + } + /* //===================================================================== bool SQLiteTreeHandler::DBInsert(Node* alien_node, @@ -1097,12 +1139,14 @@ namespace creaImageIO // std::cout << " ** Node = "<second<second; } + //===================================================================== //===================================================================== bool SQLiteTreeHandler::Remove(Node* node) { - DBRecursiveRemoveNode(node); + + //DBRecursiveRemoveNode(node); // std::cout << "DELETE"<GetParent()) @@ -1113,6 +1157,8 @@ namespace creaImageIO // std::cout << "DELETE OK"< #include + 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; } diff --git a/src2/creaImageIOWxGimmickView.cpp b/src2/creaImageIOWxGimmickView.cpp index 06b7372..262d2a4 100644 --- a/src2/creaImageIOWxGimmickView.cpp +++ b/src2/creaImageIOWxGimmickView.cpp @@ -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() //================================================= diff --git a/src2/creaImageIOWxGimmickView.h b/src2/creaImageIOWxGimmickView.h index 174468c..c2790c7 100644 --- a/src2/creaImageIOWxGimmickView.h +++ b/src2/creaImageIOWxGimmickView.h @@ -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(); diff --git a/src2/creaImageIOWxTreeView.cpp b/src2/creaImageIOWxTreeView.cpp index 474e7f4..fbe6925 100644 --- a/src2/creaImageIOWxTreeView.cpp +++ b/src2/creaImageIOWxTreeView.cpp @@ -87,16 +87,10 @@ namespace creaImageIO { tree::Node* node; }; + //===================================================================== - - //===================================================================== - /// - void WxTreeView::UpdateLevel( int level ) + std::vector WxTreeView::GetSelected(int level) { - GimmickDebugMessage(1, - GetTreeHandler()->GetTree().GetLabel() - <<" view : updating level "< sel; @@ -117,7 +111,49 @@ namespace creaImageIO } } } + return sel; + } + + //===================================================================== + + ///Removes selected nodes on given level + void WxTreeView::RemoveSelected( int level ) + { + std::vector sel=GetSelected(level+1); + + std::vector::iterator i; + for (i=sel.begin(); i!=sel.end(); ++i) + { + GimmickDebugMessage(2, + "deleting '" + <<(*i)->GetLabel() + <<"'"<Remove(*i); + } + + UpdateLevel(level); + + } + + + //===================================================================== + + //===================================================================== + + /// + void WxTreeView::UpdateLevel( int level ) + { + GimmickDebugMessage(1, + GetTreeHandler()->GetTree().GetLabel() + <<" view : updating level "< sel=GetSelected(level); + int l = level - 1; + // to speed up inserting we hide the control temporarily GetCtrl(l)->Hide(); GetCtrl(l)->DeleteAllItems(); diff --git a/src2/creaImageIOWxTreeView.h b/src2/creaImageIOWxTreeView.h index a793583..0f026e3 100644 --- a/src2/creaImageIOWxTreeView.h +++ b/src2/creaImageIOWxTreeView.h @@ -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::vectorGetSelected(int level); + DECLARE_EVENT_TABLE() -- 2.46.1