From 918c6efd4f8ccabcdcfa92e5b13da5c64de5e638 Mon Sep 17 00:00:00 2001 From: caballero Date: Thu, 19 Feb 2009 16:38:00 +0000 Subject: [PATCH] Added column showing number of children. --- src2/creaImageIOSQLiteTreeHandler.cpp | 40 ++++++++++--- src2/creaImageIOWxGimmickFrame.cpp | 2 +- src2/creaImageIOWxGimmickView.cpp | 2 +- src2/creaImageIOWxTreeView.cpp | 81 +++++++++++++++++++-------- 4 files changed, 94 insertions(+), 31 deletions(-) diff --git a/src2/creaImageIOSQLiteTreeHandler.cpp b/src2/creaImageIOSQLiteTreeHandler.cpp index 3a01e11..f3595c9 100644 --- a/src2/creaImageIOSQLiteTreeHandler.cpp +++ b/src2/creaImageIOSQLiteTreeHandler.cpp @@ -106,13 +106,7 @@ namespace creaImageIO { return false; } - //===================================================================== - - //===================================================================== - unsigned int SQLiteTreeHandler::GetNumberOfChildren(tree::Node* n) - { - return 0; - } + //===================================================================== //===================================================================== @@ -682,6 +676,7 @@ namespace creaImageIO // Query DB int level = node->GetLevel(); std::string query = "SELECT * FROM "; + query += GetTree().GetLevelDescriptor(level+1).GetName(); if (level>0) { @@ -853,6 +848,37 @@ namespace creaImageIO } } + //===================================================================== + + //===================================================================== + unsigned int SQLiteTreeHandler::GetNumberOfChildren(tree::Node* n) + { + // Query DB + int nb=0; + int level = n->GetLevel(); + if(GetTree().GetNumberOfLevels()!=(level+1)) + { + std::string query = "SELECT * FROM "; + query += GetTree().GetLevelDescriptor(level+1).GetName(); + if (level>0) + { + query += " WHERE PARENT_ID='" + n->UnsafeGetAttribute("ID") + + "'"; + } + + CppSQLite3Query q; + QUERYDB(query,q); + + + while (!q.eof()) + { + nb++; + q.nextRow(); + } + } + return nb; + } + /* //===================================================================== bool SQLiteTreeHandler::DBInsert(Node* alien_node, diff --git a/src2/creaImageIOWxGimmickFrame.cpp b/src2/creaImageIOWxGimmickFrame.cpp index d0e04fe..3e6b616 100644 --- a/src2/creaImageIOWxGimmickFrame.cpp +++ b/src2/creaImageIOWxGimmickFrame.cpp @@ -16,7 +16,7 @@ namespace creaImageIO pos, size, wxRESIZE_BORDER | - // wxSYSTEM_MENU | + wxSYSTEM_MENU | wxCLOSE_BOX | wxMAXIMIZE_BOX | wxMINIMIZE_BOX | diff --git a/src2/creaImageIOWxGimmickView.cpp b/src2/creaImageIOWxGimmickView.cpp index c28c285..064accc 100644 --- a/src2/creaImageIOWxGimmickView.cpp +++ b/src2/creaImageIOWxGimmickView.cpp @@ -332,7 +332,7 @@ namespace creaImageIO //================================================= void WxGimmickView::OnRemove(wxCommandEvent& event) { - //TODO Select current tree handler + //TODO Select current tree handler wxBusyCursor busy; GetTreeViewMap()["Local database"]->RemoveSelected(1); } diff --git a/src2/creaImageIOWxTreeView.cpp b/src2/creaImageIOWxTreeView.cpp index cd6e960..7f28260 100644 --- a/src2/creaImageIOWxTreeView.cpp +++ b/src2/creaImageIOWxTreeView.cpp @@ -44,21 +44,35 @@ namespace creaImageIO // Create the columns : one for each attribute of the level int col = 0; + //ctrl->InsertItem(0, "1"); + tree::LevelDescriptor::AttributeDescriptorListType::const_iterator a; for (a = handler->GetTree().GetAttributeDescriptorList(i).begin(); a != handler->GetTree().GetAttributeDescriptorList(i).end(); ++a) { - GimmickDebugMessage(5,"Creating column "<InsertColumn(col, _("Children"), col_style); + //ctrl->InsertItem(0, "1"); + //level.key.push_back(_("Children")); + //level.key.push_back(handler->GetTree().GetChildrenList().size()); + col++; + } + + GimmickDebugMessage(5,"Creating column "<GetName() <InsertColumn(col, - crea::std2wx(a->GetName()), - col_style); - level.key.push_back(a->GetKey()); - // ctrl->SetColumnWidth(col, wxLIST_AUTOSIZE ); - col++; + ctrl->InsertColumn(col, + crea::std2wx(a->GetName()), + col_style); + level.key.push_back(a->GetKey()); + // ctrl->SetColumnWidth(col, wxLIST_AUTOSIZE ); + col++; + + } + mLevelList.push_back(level); sizer->Add( ctrl ,1, wxGROW ,0); } @@ -94,6 +108,7 @@ namespace creaImageIO int l = level - 1; // the selection of upper level std::vector sel; + if (level == 1) { sel.push_back(GetTreeHandler()->GetTree().GetTree()); @@ -111,6 +126,7 @@ namespace creaImageIO } } } + return sel; } @@ -120,19 +136,28 @@ namespace creaImageIO 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); + bool erase=false; + if (wxMessageBox(_T("Delete file(s) ?"), + _T("Remove Files"), + wxYES_NO,this ) == wxYES) + { + erase = true; + } + if(erase) + { + std::vector::iterator i; + for (i=sel.begin(); i!=sel.end(); ++i) + { + GimmickDebugMessage(2, + "deleting '" + <<(*i)->GetLabel() + <<"'"<Remove(*i); + } + + UpdateLevel(level); } - - UpdateLevel(level); } @@ -150,7 +175,6 @@ namespace creaImageIO < sel=GetSelected(level); int l = level - 1; @@ -168,6 +192,7 @@ namespace creaImageIO <<"'"<LoadChildren(*i,1); tree::Node::ChildrenListType::reverse_iterator j; for (j = (*i)->GetChildrenList().rbegin(); @@ -187,14 +212,26 @@ namespace creaImageIO data->node = *j; item.SetData(data); + long id = GetCtrl(l)->InsertItem(item); - for (int k=0; kGetColumnCount(); k++) + std::ostringstream oss; + + int n= GetTreeHandler()->GetNumberOfChildren(*j); + + oss << n; + std::string s(oss.str()); + + GetCtrl(l)->SetItem(id,0, crea::std2wx(s)); + GetCtrl(l)->SetColumnWidth(0, wxLIST_AUTOSIZE ); + + for (int k=1; kGetColumnCount(); k++) { - std::string val = (*j)->GetAttribute(mLevelList[l].key[k]); + std::string val = (*j)->GetAttribute(mLevelList[l].key[k-1]); if (val.size()==0) val = "?"; GetCtrl(l)->SetItem(id,k, crea::std2wx(val)); GetCtrl(l)->SetColumnWidth(k, wxLIST_AUTOSIZE ); + } } -- 2.45.1