+ 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)
+ {
+
+ 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);
+
+ 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);
+
+