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
#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 <wx/statline.h>
+
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<std::vector<std::string> > user_defined;
+ std::vector<std::vector<std::string> > ubb_defined;
+ std::vector<std::vector<std::string> > 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<std::string> out;
+ out.push_back(name);
+ out.push_back(type);
+ out.push_back(descr);
+ /* =
+ "<TR><TD style='vertical-align: top;' bgcolor=\"" + col
+ +"\"><B><PRE> "+name+" </PRE></B></TD>"
+ + "<TD style='vertical-align: top;' bgcolor=\""+col
+ +"\"><I><PRE> "+type+" </PRE></I></TD>"
+ + "<TD style='vertical-align: top;' bgcolor=\""+col
+ +"\">"+descr+"</TD></TR>\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<std::vector<std::string> >::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<std::string> out;
+ out.push_back(name);
+ out.push_back(type);
+ out.push_back(descr);
+ /* =
+ "<TR><TD style='vertical-align: top;' bgcolor=\"" + col
+ +"\"><B><PRE> "+name+" </PRE></B></TD>"
+ + "<TD style='vertical-align: top;' bgcolor=\""+col
+ +"\"><I><PRE> "+type+" </PRE></I></TD>"
+ + "<TD style='vertical-align: top;' bgcolor=\""+col
+ +"\">"+descr+"</TD></TR>\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();
mUser(user),
mInterpreter(0)
{
- std::cout << "WxGUIPackageBrowser::WxGUIPackageBrowser"<<std::endl;
+
wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
mTree = new wxTreeMultiCtrl(this, -1);
mTree->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);
}
//================================================================