X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fsrc%2FbbtkWxGUIPackageBrowser.cxx;h=b452fd2e4eeb99e6cdb9e55ade97d66017d9977c;hb=16993e9f411c62e9a73d13c40f3748bdd232ce09;hp=2a5d0f5561845480f41c34e01528bbf3450e1602;hpb=302e341409d918a232cd2ec25f2c533c27eb9011;p=bbtk.git diff --git a/kernel/src/bbtkWxGUIPackageBrowser.cxx b/kernel/src/bbtkWxGUIPackageBrowser.cxx index 2a5d0f5..b452fd2 100644 --- a/kernel/src/bbtkWxGUIPackageBrowser.cxx +++ b/kernel/src/bbtkWxGUIPackageBrowser.cxx @@ -1,20 +1,42 @@ +/* + # --------------------------------------------------------------------- + # + # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image + # 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, + # modify and/ or redistribute the software under the terms of the CeCILL-B + # license as circulated by CEA, CNRS and INRIA at the following URL + # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html + # or in the file LICENSE.txt. + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # 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. + # ------------------------------------------------------------------------ */ + + /*========================================================================= - Program: bbtk Module: $RCSfile: bbtkWxGUIPackageBrowser.cxx,v $ Language: C++ - Date: $Date: 2008/03/28 13:42:18 $ - Version: $Revision: 1.1 $ - - Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de - l'Image). All rights reserved. See Doc/License.txt or - http://www.creatis.insa-lyon.fr/Public/bbtk/License.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*//** + Date: $Date: 2012/11/16 08:49:01 $ + Version: $Revision: 1.8 $ +=========================================================================*/ + + + + +/** * \brief Short description in one line * * Long description which @@ -29,19 +51,28 @@ * \brief */ - +/* #ifdef _USE_WXWIDGETS_ +#define CHECKBOXVIEW 1 + #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 { //================================================================ - WxGUIPackageBrowserBlackBox::WxGUIPackageBrowserBlackBox(wxWindow* parent, - WxGUIPackageBrowser* browser, - BlackBoxDescriptor* descr) : + WxGUIPackageBrowserBlackBox:: + WxGUIPackageBrowserBlackBox(wxWindow* parent, + WxGUIPackageBrowser* browser, + BlackBoxDescriptor::Pointer descr) : wxPanel(parent, -1), mBrowser(browser), mDescriptor(descr) @@ -49,10 +80,198 @@ namespace bbtk wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL); wxStaticText* s = new wxStaticText(this,-1, - std2wx(descr->GetTypeName())); + std2wx(descr->GetDescription())); + sizer->Add(s,0,wxGROW); + s = new wxStaticText(this,-1, + std2wx(descr->GetAuthor())); + 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); + + 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) + { + + 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); + + 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(); @@ -72,9 +291,9 @@ namespace bbtk WxGUIPackageBrowserUser* user ) : wxPanel(parent, -1), mUser(user), - mInterpreter(0) + mInterpreter() { - std::cout << "WxGUIPackageBrowser::WxGUIPackageBrowser"<SetCaptionFont(somefont); mTree->SetSpacingY(1); + // mTree->SetCheckboxView(true); SetSizer(sizer); SetAutoLayout(true); @@ -107,34 +327,48 @@ namespace bbtk //================================================================ WxGUIPackageBrowser::~WxGUIPackageBrowser() { - if (mInterpreter) delete mInterpreter; + // std::cout << "del interpreter" << std::endl; + // if (mInterpreter) delete mInterpreter; + // std::cout << "ok" << std::endl; } //================================================================ //================================================================ void WxGUIPackageBrowser::IncludeAll() + { + if (!mInterpreter) mInterpreter = bbtk::Interpreter::New(); + mInterpreter->SetCommandLine(true); + mInterpreter->InterpretLine("include *"); + + Factory::Pointer F = mInterpreter->GetExecuter()->GetFactory(); + BuildFromFactory(F); + } + //================================================================ + //================================================================ + + void WxGUIPackageBrowser::BuildFromFactory(Factory::Pointer F) { #ifndef LINUX wxTreeMultiWindowInfo wndinfo(wxTMC_BG_ADJUST_CNT, 8, 0); #else wxTreeMultiWindowInfo wndinfo(wxTMC_BG_ADJUST_ALL, 8, 0); #endif - - if (!mInterpreter) mInterpreter = new bbtk::Interpreter(); - mInterpreter->SetCommandLine(true); - mInterpreter->InterpretLine("include *"); - - Factory* F = mInterpreter->GetExecuter()->GetFactory(); - + mTree->DeleteAllItems(); const Factory::PackageMapType& M = F->GetPackageMap(); Factory::PackageMapType::const_iterator i; for (i=M.begin();i!=M.end();++i) { - Package* P = i->second.mPackage; + Package::Pointer P = i->second; wxString packname = std2wx(P->GetName()); if (packname==_T("user")) continue; wxTreeMultiItem pack = mTree->AddRoot(packname,packname); + wxString packinfo = std2wx(P->GetDescription()); + packinfo += _T(" - by ")+ std2wx(P->GetAuthor()); + packinfo += _T(" - v. ")+ std2wx(P->GetVersion()); + mTree->AppendWindow(pack, + new wxStaticText(mTree, + -1,packinfo)); Package::BlackBoxMapType::iterator j; for (j=P->GetBlackBoxMap().begin(); j!=P->GetBlackBoxMap().end(); @@ -152,8 +386,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); } //================================================================ @@ -174,14 +408,14 @@ namespace bbtk // WxGUICommand* com = new WxGUICommand(this,this); // sizer->Add(com); - SetSizer(sizer); + SetSizer(sizer); + + + // Creates the parent window of all bbtk windows as a child of this + Wx::CreateTopWindow(this); + // bbtkAddWxObserver(WxGUIConsole::OnWxSignal); + - // Creates and sets the parent window of all bbtk windows - wxWindow* top = new wxPanel(this,-1); - top->Hide(); - - Wx::SetTopWindow(top); - SetAutoLayout(true); Layout(); } @@ -197,3 +431,4 @@ namespace bbtk #endif //_USE_WXWIDGETS_ +*/