From 355e3d011880c7febb568fd7a3c51b180cd23707 Mon Sep 17 00:00:00 2001 From: guigues Date: Mon, 31 Mar 2008 13:18:04 +0000 Subject: [PATCH] *** empty log message *** --- kernel/src/bbtkWxGUIPackageBrowser.cxx | 239 ++++++++++++++++++++++++- 1 file changed, 231 insertions(+), 8 deletions(-) diff --git a/kernel/src/bbtkWxGUIPackageBrowser.cxx b/kernel/src/bbtkWxGUIPackageBrowser.cxx index 3f2fead..515a707 100644 --- a/kernel/src/bbtkWxGUIPackageBrowser.cxx +++ b/kernel/src/bbtkWxGUIPackageBrowser.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkWxGUIPackageBrowser.cxx,v $ Language: C++ - Date: $Date: 2008/03/28 15:04:10 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/03/31 13:18:04 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -37,6 +37,12 @@ #include "bbtkWxGUIPackageBrowser.h" #include "ThirdParty/wx/treemultictrl/wxTreeMultiCtrl.h" #include "bbtkInterpreter.h" +#include "bbtkBlackBoxInputDescriptor.h" +#include "bbtkBlackBoxOutputDescriptor.h" +#include "bbtkWxBlackBox.h" +#include "wx/grid.h" +#include + namespace bbtk { @@ -52,15 +58,232 @@ namespace bbtk wxStaticText* s = new wxStaticText(this,-1, std2wx(descr->GetDescription())); - sizer->Add(s,1,wxGROW); + sizer->Add(s,0,wxGROW); s = new wxStaticText(this,-1, std2wx(descr->GetAuthor())); - sizer->Add(s,1,wxGROW); + sizer->Add(s,0,wxGROW); s = new wxStaticText(this,-1, std2wx(descr->GetCategory())); + sizer->Add(s,0,wxGROW); + + std::vector > user_defined; + std::vector > ubb_defined; + std::vector > wxbb_defined; + + std::string titlecol("#BBBBFF"); + std::string usercol("#FFFFFF"); + std::string ubbcol("#DDFFFF"); + std::string wxbbcol("#EEFFFF"); + + const BlackBoxDescriptor::InputDescriptorMapType& imap = + descr->GetInputDescriptorMap(); + BlackBoxDescriptor::InputDescriptorMapType::const_iterator in; + for ( in = imap.begin(); in != imap.end(); ++in ) + { + // Skips system-defined inputs + std::string col(usercol); + int iotype = 0; + if (in->second->GetCreatorTypeInfo() == + typeid(AtomicBlackBoxDescriptor)) + { + col = ubbcol; + iotype = 1; + } + else if (in->second->GetCreatorTypeInfo() == + typeid(WxBlackBoxDescriptor)) + { + col = wxbbcol; + iotype = 2; + } + + std::string name(in->second->GetName()); + //Utilities::html_format(name); + + std::string type("<"); + type += in->second->GetTypeName(); + type += ">"; + //Utilities::html_format(type); + + std::string descr(in->second->GetDescription()); + //Utilities::html_format(descr); + + std::vector out; + out.push_back(name); + out.push_back(type); + out.push_back(descr); + /* = + "
 "+name+" 
" + + "
 "+type+" 
" + + ""+descr+"\n"; + */ + + if (iotype==0) user_defined.push_back(out); + else if (iotype==1) ubb_defined.push_back(out); + else if (iotype==2) wxbb_defined.push_back(out); + + } - sizer->Add(s,1,wxGROW); + wxBoxSizer *inputs = + new wxStaticBoxSizer + ( new wxStaticBox(this, wxID_ANY, _T("Inputs")), wxVERTICAL ); + wxFlexGridSizer* grid = new wxFlexGridSizer(3); + + wxTextAttr ionameattr(*wxRED,*wxBLACK); + wxTextAttr iotypeattr(*wxBLACK,*wxRED); + + int n = 0; + std::vector >::iterator hi; + for (hi=user_defined.begin();hi!=user_defined.end();++hi) + { + /* + wxTextCtrl* t = new wxTextCtrl(this,-1,_T("") + ,wxDefaultPosition + ,wxDefaultSize + ,wxTE_READONLY + ); + t->SetDefaultStyle(ionameattr); + t->AppendText( std2wx((*hi)[0]) ); + grid->Add(t); + + t = new wxTextCtrl(this,-1,_T("") + ,wxDefaultPosition + ,wxDefaultSize + ,wxTE_READONLY + ); + t->SetDefaultStyle(iotypeattr); + t->AppendText( std2wx((*hi)[1]) ); + grid->Add(t); + */ + + grid->Add( new wxStaticText(this,-1,std2wx((*hi)[0]))); + grid->Add( new wxStaticText(this,-1,std2wx((*hi)[1]))); + grid->Add( new wxStaticText(this,-1,std2wx((*hi)[2]))); + // grid->SetCellValue( n, 0, std2wx((*hi)[0]) ); + // grid->SetReadOnly( n, 0 ); + } + // grid->Add( new wxStaticLine(this,-1)); + for (hi=wxbb_defined.begin();hi!=wxbb_defined.end();++hi) + { + grid->Add( new wxStaticText(this,-1, + std2wx((*hi)[0]))); + grid->Add( new wxStaticText(this,-1, + std2wx((*hi)[1]))); + grid->Add( new wxStaticText(this,-1, + std2wx((*hi)[2]))); + } + for (hi=ubb_defined.begin();hi!=ubb_defined.end();++hi) + { + grid->Add( new wxStaticText(this,-1, + std2wx((*hi)[0]))); + grid->Add( new wxStaticText(this,-1, + std2wx((*hi)[1]))); + grid->Add( new wxStaticText(this,-1, + std2wx((*hi)[2]))); + } + + inputs->Add(grid,0,wxGROW); + sizer->Add(inputs,0,wxGROW); + + // Outputs + user_defined.clear(); + ubb_defined.clear(); + wxbb_defined.clear(); + const BlackBoxDescriptor::OutputDescriptorMapType& omap = + descr->GetOutputDescriptorMap(); + BlackBoxDescriptor::OutputDescriptorMapType::const_iterator out; + for ( out = omap.begin(); out != omap.end(); ++out ) + { + // Skips system-defined inputs + std::string col(usercol); + int iotype = 0; + if (out->second->GetCreatorTypeInfo() == + typeid(AtomicBlackBoxDescriptor)) + { + col = ubbcol; + iotype = 1; + } + else if (out->second->GetCreatorTypeInfo() == + typeid(WxBlackBoxDescriptor)) + { + col = wxbbcol; + iotype = 2; + } + + std::string name(out->second->GetName()); + //Utilities::html_format(name); + + std::string type("<"); + type += out->second->GetTypeName(); + type += ">"; + //Utilities::html_format(type); + + std::string descr(out->second->GetDescription()); + //Utilities::html_format(descr); + + std::vector out; + out.push_back(name); + out.push_back(type); + out.push_back(descr); + /* = + "
 "+name+" 
" + + "
 "+type+" 
" + + ""+descr+"\n"; + */ + + if (iotype==0) user_defined.push_back(out); + else if (iotype==1) ubb_defined.push_back(out); + else if (iotype==2) wxbb_defined.push_back(out); + + } + + wxBoxSizer *outputs = + new wxStaticBoxSizer + ( new wxStaticBox(this, wxID_ANY, _T("Outputs")), wxVERTICAL ); + wxFlexGridSizer* ogrid = new wxFlexGridSizer(3); + + + n = 0; + for (hi=user_defined.begin();hi!=user_defined.end();++hi) + { + ogrid->Add( new wxStaticText(this,-1, + std2wx((*hi)[0]))); + ogrid->Add( new wxStaticText(this,-1, + std2wx((*hi)[1]))); + ogrid->Add( new wxStaticText(this,-1, + std2wx((*hi)[2]))); + // grid->SetCellValue( n, 0, std2wx((*hi)[0]) ); + // grid->SetReadOnly( n, 0 ); + } + for (hi=wxbb_defined.begin();hi!=wxbb_defined.end();++hi) + { + ogrid->Add( new wxStaticText(this,-1, + std2wx((*hi)[0]))); + ogrid->Add( new wxStaticText(this,-1, + std2wx((*hi)[1]))); + ogrid->Add( new wxStaticText(this,-1, + std2wx((*hi)[2]))); + } + for (hi=ubb_defined.begin();hi!=ubb_defined.end();++hi) + { + ogrid->Add( new wxStaticText(this,-1, + std2wx((*hi)[0]))); + ogrid->Add( new wxStaticText(this,-1, + std2wx((*hi)[1]))); + ogrid->Add( new wxStaticText(this,-1, + std2wx((*hi)[2]))); + } + + outputs->Add(ogrid,0,wxGROW); + sizer->Add(outputs,0,wxGROW); + + SetSizer(sizer); SetAutoLayout(true); Layout(); @@ -82,7 +305,7 @@ namespace bbtk mUser(user), mInterpreter(0) { - std::cout << "WxGUIPackageBrowser::WxGUIPackageBrowser"<CollapseNodes(true); // Test exclude - // wxTreeMultiItem item = mTree->FindItem(_T("Add")); - // if(item.IsOk()) mTree->Exclude(item); + wxTreeMultiItem item = mTree->FindItem(_T("Add")); + if(item.IsOk()) mTree->Exclude(item); } //================================================================ -- 2.45.1