# ---------------------------------------------------------------------
#
# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
-# pour la Santé)
+# pour la Sant�)
# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+# Previous Authors : Laurent Guigues, Jean-Pierre Roux
+# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
#
# This software is governed by the CeCILL-B license under French law and
# abiding by the rules of distribution of free software. You can use,
#
# The fact that you are presently reading this means that you have had
# knowledge of the CeCILL-B license and that you accept its terms.
-# ------------------------------------------------------------------------ */
+# ------------------------------------------------------------------------
+ */
/*
* wxCreaDevManagerTreeCtrl.cpp
*
* Created on: 19/10/2012
- * Author: daniel
+ * Author: Daniel Felipe Gonzalez Obando
*/
#include "wxCDMProjectsTreeCtrl.h"
-#include "creaDevManagerIds.h"
+
#include <vector>
+#include <sstream>
+
+#include <wx/imaglist.h>
+
+#include "creaDevManagerIds.h"
+#include "images/AIcon20.xpm"
+#include "images/ApIcon20.xpm"
+#include "images/BBIcon20.xpm"
+#include "images/CIcon20.xpm"
+#include "images/CMIcon20.xpm"
+#include "images/FdIcon20.xpm"
+#include "images/FlIcon20.xpm"
+#include "images/LbIcon20.xpm"
+#include "images/LIcon20.xpm"
+#include "images/PrIcon20.xpm"
+#include "images/PkIcon20.xpm"
wxCDMProjectsTreeCtrl::wxCDMProjectsTreeCtrl(
wxWindow *parent,
)
{
wxTreeCtrl::Create (parent, id, pos, size, style, validator, name);
- wxTreeItemId rootIndex = this-> AddRoot(_("Open Projects"));
+
+ this->DeleteAllItems();
+
+ wxImageList* images = new wxImageList(20, 20, true);
+ this->ID_AIcon = images->Add(wxIcon(AIcon20));
+ this->ID_ApIcon = images->Add(wxIcon(ApIcon20));
+ this->ID_BBIcon = images->Add(wxIcon(BBIcon20));
+ this->ID_Cicon = images->Add(wxIcon(CIcon20));
+ this->ID_CMIcon = images->Add(wxIcon(CMIcon20));
+ this->ID_FdIcon = images->Add(wxIcon(FdIcon20));
+ this->ID_FlIcon = images->Add(wxIcon(FlIcon20));
+ this->ID_LbIcon = images->Add(wxIcon(LbIcon20));
+ this->ID_LIcon = images->Add(wxIcon(LIcon20));
+ this->ID_PrIcon = images->Add(wxIcon(PrIcon20));
+ this->ID_PkIcon = images->Add(wxIcon(PkIcon20));
+ this->AssignImageList(images);
+
+ wxTreeItemId rootIndex = this->AddRoot(wxT("No Open Project"), this->ID_Cicon, this->ID_Cicon);
+
this->Update();
return TRUE;
}
-void wxCDMProjectsTreeCtrl::BuildTree(const modelCDMProjectsTree& projectsTree)
+void wxCDMProjectsTreeCtrl::BuildTree(std::map< wxCDMTreeItemId, modelCDMIProjectTreeNode* >& modelElements, modelCDMProject* projectTree)
{
+ this->Unselect();
+ std::cout << "building tree" << std::endl;
this->DeleteAllItems();
- wxTreeItemId rootIndex = this-> AddRoot(_("Open Projects"));
- std::cout << "Building TreeCtrl for " << projectsTree.projectRoot.GetName() << std::endl;
- wxTreeItemId parentIndex = this-> AppendItem(rootIndex, wxString(projectsTree.projectRoot.GetName().c_str(), wxConvUTF8));
- this->BuildTree(projectsTree.projectRoot.GetChildren(), parentIndex);
+ modelElements.clear();
+ if(projectTree != NULL)
+ {
+ projectTree->SetId(this->AddRoot(crea::std2wx(projectTree->GetName()), this->ID_PrIcon));
+
+ modelElements[projectTree->GetId()] = projectTree;
- this->Expand(rootIndex);
+ std::cout << "Building TreeCtrl for " << projectTree->GetName() << std::endl;
+ this->BuildTree(projectTree->GetChildren(), modelElements, projectTree->GetId());
- this->Update();
+ this->Expand(projectTree->GetId().GetWxId());
+
+ this->Update();
+ }
+ else
+ {
+ wxTreeItemId rootIndex = this-> AddRoot(_("No Open Project"), this->ID_Cicon);
+ }
}
-void wxCDMProjectsTreeCtrl::BuildTree(const std::vector<modelCDMProjectsTreeNode>& projectsTree, wxTreeItemId parent)
+void wxCDMProjectsTreeCtrl::BuildTree(const std::vector<modelCDMIProjectTreeNode*>& treeNodes, std::map< wxCDMTreeItemId, modelCDMIProjectTreeNode* >& modelElements, const wxCDMTreeItemId& parent)
{
- for (int i = 0; i < projectsTree.size(); i++)
- {
- //cout << projectsTree[i].GetName() << endl;
- wxTreeItemId parentNodeIndex;
- wxString nodeName((projectsTree[i].GetName()).c_str(), wxConvUTF8);
- parentNodeIndex = this->AppendItem(parent, nodeName);
-
- std::vector<modelCDMProjectsTreeNode> innerChildren = projectsTree[i].GetChildren();
- if(innerChildren.size() > 0)
+ for (int i = 0; i < (int)(treeNodes.size()); i++)
+ {
+ //cout << projectsTree[i].GetName() << endl;
+ if(treeNodes[i] != NULL)
+ {
+ int idIcon = GetIconId(treeNodes[i]);
+ wxString nodeName((treeNodes[i]->GetName()).c_str(), wxConvUTF8);
+ treeNodes[i]->SetId(wxCDMTreeItemId(this->AppendItem(parent.GetWxId(), nodeName, idIcon)));
+
+ modelElements[treeNodes[i]->GetId()] = treeNodes[i];
+
+ std::vector<modelCDMIProjectTreeNode*> innerChildren = treeNodes[i]->GetChildren();
+ if(innerChildren.size() > 0)
+ {
+ this->BuildTree(innerChildren, modelElements, treeNodes[i]->GetId());
+ }
+ }
+
+ }
+}
+
+int wxCDMProjectsTreeCtrl::GetIconId(modelCDMIProjectTreeNode* node)
+{
+ modelCDMIProjectTreeNode* element = dynamic_cast<modelCDMProject*>(node);
+ if(element != NULL)
+ {
+ return this->ID_PrIcon;
+ }
+ else
{
- this->BuildTree(innerChildren, parentNodeIndex);
+ element = dynamic_cast<modelCDMAppli*>(node);
+ if(element != NULL)
+ {
+ return this->ID_ApIcon;
+ }
+ else
+ {
+ element = dynamic_cast<modelCDMApplication*>(node);
+ if(element != NULL)
+ {
+ return this->ID_AIcon;
+ }
+ else
+ {
+ element = dynamic_cast<modelCDMLib*>(node);
+ if(element != NULL)
+ {
+ return this->ID_LbIcon;
+ }
+ else
+ {
+ element = dynamic_cast<modelCDMLibrary*>(node);
+ if(element != NULL)
+ {
+ return this->ID_LIcon;
+ }
+ else
+ {
+ element = dynamic_cast<modelCDMPackage*>(node);
+ if(element != NULL)
+ {
+ return this->ID_PkIcon;
+ }
+ else
+ {
+ element = dynamic_cast<modelCDMBlackBox*>(node);
+ if(element != NULL)
+ {
+ return this->ID_BBIcon;
+ }
+ else
+ {
+ element = dynamic_cast<modelCDMCMakeListsFile*>(node);
+ if(element != NULL)
+ {
+ return this->ID_CMIcon;
+ }
+ else
+ {
+ element = dynamic_cast<modelCDMFolder*>(node);
+ if(element != NULL)
+ {
+ return this->ID_FdIcon;
+ }
+ else
+ {
+ element = dynamic_cast<modelCDMFile*>(node);
+ if(element != NULL)
+ {
+ return this->ID_FlIcon;
+ }
+ else
+ {
+ return this->ID_Cicon;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
- }
}