]> Creatis software - bbtk.git/commitdiff
*** empty log message ***
authorguigues <guigues>
Mon, 31 Mar 2008 13:18:04 +0000 (13:18 +0000)
committerguigues <guigues>
Mon, 31 Mar 2008 13:18:04 +0000 (13:18 +0000)
kernel/src/bbtkWxGUIPackageBrowser.cxx

index 3f2fead373d611866c6c879ff44d37c033cf1d94..515a707cdb1fd4f0156ab5d587b2ca597ee7ffab 100644 (file)
@@ -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
 #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
 {
@@ -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<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();
@@ -82,7 +305,7 @@ namespace bbtk
       mUser(user),
       mInterpreter(0)
   {
-    std::cout << "WxGUIPackageBrowser::WxGUIPackageBrowser"<<std::endl;
+
     wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
     mTree = new wxTreeMultiCtrl(this, -1);
     
@@ -175,8 +398,8 @@ namespace bbtk
     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);
   }
   //================================================================