From a178c5cff0721d95f04e014ad8356ec86799bc2a Mon Sep 17 00:00:00 2001 From: davila <> Date: Fri, 10 Sep 2010 11:33:10 +0000 Subject: [PATCH] no message --- .../bbsKernelEditorGraphic/GBlackBoxModel.cxx | 10 +- .../bbsKernelEditorGraphic/GBoxModel.cxx | 10 +- .../bbsKernelEditorGraphic/GlobalConstants.h | 9 +- .../bbsWxGUIEditorGraphic/ExecuterBBSG.cxx | 284 ++++++++++++++++++ .../bbsWxGUIEditorGraphic/ExecuterBBSG.h | 242 +++++++++++++++ .../bbtkwxGUIEditorGraphicBBS.cxx | 32 +- .../bbtkwxGUIEditorGraphicBBS.h | 2 +- 7 files changed, 573 insertions(+), 16 deletions(-) create mode 100644 lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/ExecuterBBSG.cxx create mode 100644 lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/ExecuterBBSG.h diff --git a/lib/EditorGraphicBBS/bbsKernelEditorGraphic/GBlackBoxModel.cxx b/lib/EditorGraphicBBS/bbsKernelEditorGraphic/GBlackBoxModel.cxx index 6a51858..a806ea8 100644 --- a/lib/EditorGraphicBBS/bbsKernelEditorGraphic/GBlackBoxModel.cxx +++ b/lib/EditorGraphicBBS/bbsKernelEditorGraphic/GBlackBoxModel.cxx @@ -149,7 +149,7 @@ namespace bbtk content+="\n"; //Ports with a value - for(int i = 0; i<_inputs.size();i++) + for(int i = 0; i<(int)_inputs.size();i++) { if(_inputs[i]->isValueSet()) { @@ -164,7 +164,7 @@ namespace bbtk void GBlackBoxModel::setValueToInput(std::string name,std::string value) { - for(int i = 0; i<_inputs.size();i++) + for(int i = 0; i<(int)_inputs.size();i++) { if(_inputs[i]->getBBTKName()==name) { @@ -184,7 +184,7 @@ namespace bbtk std::string GBlackBoxModel::getValueInput(std::string name) { - for(int i = 0; i<_inputs.size();i++) + for(int i = 0; i<(int)_inputs.size();i++) { if(_inputs[i]->getBBTKName()==name) { @@ -199,7 +199,7 @@ namespace bbtk std::vector GBlackBoxModel::getConnectedInputs() { std::vector connected; - for(int i = 0; i<_inputs.size();i++) + for(int i = 0; i<(int)_inputs.size();i++) { if(_inputs[i]->isConnected()) { @@ -214,7 +214,7 @@ namespace bbtk std::vector GBlackBoxModel::getConnectedOutputs() { std::vector connected; - for(int i = 0; i<_outputs.size();i++) + for(int i = 0; i<(int)_outputs.size();i++) { if(_outputs[i]->isConnected()) { diff --git a/lib/EditorGraphicBBS/bbsKernelEditorGraphic/GBoxModel.cxx b/lib/EditorGraphicBBS/bbsKernelEditorGraphic/GBoxModel.cxx index 7f8f798..1c03431 100644 --- a/lib/EditorGraphicBBS/bbsKernelEditorGraphic/GBoxModel.cxx +++ b/lib/EditorGraphicBBS/bbsKernelEditorGraphic/GBoxModel.cxx @@ -96,13 +96,13 @@ namespace bbtk //Refresh inputs position int i; - for(i=0;i<_inputs.size();i++) + for(i=0;i<(int)_inputs.size();i++) { _inputs[i]->updatePortPosition(); } //Refresh outputs position - for(i=0;i<_outputs.size();i++) + for(i=0;i<(int)_outputs.size();i++) { _outputs[i]->updatePortPosition(); } @@ -144,7 +144,7 @@ namespace bbtk GPortModel* GBoxModel::getInputPort(std::string name) { - for(int i = 0; i<_inputs.size();i++) + for(int i = 0; i<(int)_inputs.size();i++) { if(_inputs[i]->getBBTKName()==name) { @@ -158,7 +158,7 @@ namespace bbtk GPortModel* GBoxModel::getOutputPort(std::string name) { - for(int i = 0; i<_outputs.size();i++) + for(int i = 0; i<(int)_outputs.size();i++) { if(_outputs[i]->getBBTKName()==name) { @@ -186,7 +186,7 @@ namespace bbtk void GBoxModel::updatePorts() { - for(int i = 0; i<_inputs.size();i++) + for(int i = 0; i<(int)_inputs.size();i++) { _inputs[i]->updatePortPosition(); _inputs[i]->notifyObservers(_objectId); diff --git a/lib/EditorGraphicBBS/bbsKernelEditorGraphic/GlobalConstants.h b/lib/EditorGraphicBBS/bbsKernelEditorGraphic/GlobalConstants.h index 43677d4..1982207 100644 --- a/lib/EditorGraphicBBS/bbsKernelEditorGraphic/GlobalConstants.h +++ b/lib/EditorGraphicBBS/bbsKernelEditorGraphic/GlobalConstants.h @@ -159,11 +159,12 @@ namespace bbtk const int ID_BTNCOMPLEXBOX = 1006; const int ID_ADDCOMPLEXBOXINPUT = 1007; const int ID_ADDCOMPLEXBOXOUTPUT = 1008; - const int ID_SAVE_AS_BBS = 1009; - const int ID_SAVE_AS_COMPLEXBOX = 1010; - const int ID_COPY_TO_COMPLEXDIAGRAM = 1011; + const int ID_OPEN_BBS = 1009; + const int ID_SAVE_AS_BBS = 1010; + const int ID_SAVE_AS_COMPLEXBOX = 1011; + const int ID_COPY_TO_COMPLEXDIAGRAM = 1012; - const int wxID_NOTEBOOK = 1012; + const int wxID_NOTEBOOK = 1013; } // namespace bbtk #endif diff --git a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/ExecuterBBSG.cxx b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/ExecuterBBSG.cxx new file mode 100644 index 0000000..d485735 --- /dev/null +++ b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/ExecuterBBSG.cxx @@ -0,0 +1,284 @@ +/*========================================================================= +Program: bbtk +Module: $RCSfile$ +Language: C++ +Date: $Date$ +Version: $Revision$ +=========================================================================*/ + +/* --------------------------------------------------------------------- + +* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale) +* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux +* +* 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. +* ------------------------------------------------------------------------ */ + +/** +* \file +* \brief Class bbtk::GConnectorModel +*/ + + +#include "ExecuterBBSG.h" + +#include "bbtkExecuter.h" +#include "bbtkMessageManager.h" +#include "bbtkFactory.h" +#include "bbtkUtilities.h" + + + +namespace bbtk +{ + + + + EExecuterBBSG::Pointer EExecuterBBSG::New() + { + return MakePointer( new EExecuterBBSG() ); + } + + + //========================================================================= + + EExecuterBBSG::EExecuterBBSG() + { + } + + //========================================================================= + + EExecuterBBSG::~EExecuterBBSG() + { + } + + //========================================================================= + +//--EED + /// Sets the inputs of the workspace : + void EExecuterBBSG::SetInputs(const std::map& m) + { + } + + /// Puts the executer in "no exec" mode, + /// which creates but does not execute pipelines + void EExecuterBBSG::SetNoExecMode(bool b) + { + } + + bool EExecuterBBSG::GetNoExecMode() const + { + return true; + } + + /// Sets the mode of dialog of the executer for Root inputs + void EExecuterBBSG::SetDialogMode(DialogModeType t) + { + } + + /// Puts the executer in "no error" mode, + /// Errors do not stop execution (but warnings are produced) + void EExecuterBBSG::SetNoErrorMode(bool b) + { + } + + bool EExecuterBBSG::GetNoErrorMode() const + { + return true; + } + + //================================================================= + /// Loads a package + void EExecuterBBSG::LoadPackage(const std::string &name ) + { + } + + /// Unloads a package + void EExecuterBBSG::UnLoadPackage(const std::string &name ) + { + } + + /// Starts a package block + void EExecuterBBSG::BeginPackage (const std::string &name ) + { + } + + /// Ends a package block + void EExecuterBBSG::EndPackage () + { + } + + /// Starts the definition of a new ComplexBlackBox in package pack + /// scriptfilename is the file from which the def is read + void EExecuterBBSG::Define (const std::string &name, + const std::string& pack, + const std::string &scriptfilename) + { + } + + /// Sets the file name to use for the current definition + /// (Used to set it after the Define command) + void EExecuterBBSG::SetCurrentFileName (const std::string &name ) + { + } + + /// End the definition of a ComplexBlackBox + void EExecuterBBSG::EndDefine () + { + } + + /// Sets the kind of the currently defined ComplexBlackBox + void EExecuterBBSG::Kind(const std::string& kind) + { + } + + /// Creates a new black box in current complex box + void EExecuterBBSG::Create ( const std::string& boxType, const std::string& + boxName) + { + printf("EED EExecuterBBSG::Create\n"); + } + + /// Destroys a black box + void EExecuterBBSG::Destroy (const std::string &boxName) + { + } + + /// Clears the currently defined ComplexBlackBox + void EExecuterBBSG::Clear() + { + } + + /// Connects the output boxOutput to the input boxInput + void EExecuterBBSG::Connect (const std::string &boxfrom, + const std::string &output, + const std::string &boxto, + const std::string &input) + { + printf("EED EExecuterBBSG::Connect\n"); + } + + /// Executes the box + void EExecuterBBSG::Execute (const std::string &box) + { + } + + /// Defines an input of the current complex box + void EExecuterBBSG::DefineInput (const std::string &name, + const std::string &box, + const std::string &input, + const std::string &help) + { + } + + /// Defines an output of the current complex box + void EExecuterBBSG::DefineOutput (const std::string &name, + const std::string &box, + const std::string &output, + const std::string &help) + { + } + + /// sets the input of the box with the value + void EExecuterBBSG::Set (const std::string &box, + const std::string &input, + const std::string &value) + { + printf("EED EExecuterBBSG::Set\n"); + } + + /// gets the output of the box + std::string EExecuterBBSG::Get (const std::string &box, + const std::string &output) + { + return ""; + } + + /// changes the workspace name + void EExecuterBBSG::SetWorkspaceName( const std::string& n ) + { + } + + ///Adds the authorName to the Box author list + void EExecuterBBSG::Author(const std::string &authorName) + { + } + + ///Adds the categories to the Box categoris list + void EExecuterBBSG::Category(const std::string &categories) + { + } + + /// The description string which explains what does the ComplexBox + void EExecuterBBSG::Description(const std::string &d) + { + } + + /// prints the list of the boxes of the current box + void EExecuterBBSG::PrintHelpListBoxes() + { + } + + /// Generate a HTML file with a gif file with the actual pipeline (Graphviz-dot needed). Returns the file path + std::string EExecuterBBSG::ShowGraph(const std::string &nameblackbox, + const std::string &detailStr, + const std::string &levelStr, + const std::string &output_file, + const std::string &custom_header, + const std::string &custom_title, + bool system_display) + { + return ""; + } + + /// Generate a HTML with a gif file with the actual pipeline (Graphviz-dot needed). Returns the file path + std::string EExecuterBBSG::ShowGraphInstances(const std::string &nameblackbox, int detail, int level, bool system_display) + { + return ""; + } + + /// Prints help on a black box + void EExecuterBBSG::PrintHelpBlackBox(const std::string &nameblackbox, const std::string &detailStr, const std::string &levelStr) + { + } + + void EExecuterBBSG::Reset() + { + } + + /// Sets the level of message for kind + void EExecuterBBSG::SetMessageLevel(const std::string &kind, int level) + { + } + + /// Prints help on the messages + void EExecuterBBSG::HelpMessages() + { + } + + /// Prints the string ... MORE : TO EXPLAIN + void EExecuterBBSG::Print(const std::string & message) + { + } + +//--EED + + +} // EO namespace bbtk + +// EOF + diff --git a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/ExecuterBBSG.h b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/ExecuterBBSG.h new file mode 100644 index 0000000..4b0b018 --- /dev/null +++ b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/ExecuterBBSG.h @@ -0,0 +1,242 @@ +/*========================================================================= +Program: bbtk +Module: $RCSfile$ +Language: C++ +Date: $Date$ +Version: $Revision$ +=========================================================================*/ + +/* --------------------------------------------------------------------- + +* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale) +* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux +* +* 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. +* ------------------------------------------------------------------------ */ + + +/**** +* Design and Developpement of BBTK GEditor +* Ricardo A Corredor J +* RaC - 2010 +****/ + +#ifndef __ExecuterBBSG_h__ +#define __ExecuterBBSG_h__ + +//Includes same project +//.. + +//Includes bbtk +#include "bbtkVirtualExec.h" + +//Includes std +#include + + +#include "bbtkSystem.h" +#include "bbtkComplexBlackBox.h" +#include "bbtkFactory.h" + + + + + +/* +namespace bbtk +{ + + class Interpreter; + + + class Executer : public VirtualExec + { + BBTK_OBJECT_INTERFACE(Executer); + typedef VirtualExec Superclass; + public: + static Pointer New(); +*/ + + + + +namespace bbtk +{ + + class EExecuterBBSG : public VirtualExec + { +// BBTK_OBJECT_INTERFACE(EExecuterBBSG); +// typedef VirtualExec Superclass; + public: + static Pointer New(); +// Pointer New(); + EExecuterBBSG(); + ~EExecuterBBSG(); + + //Public methods + +//--EED + + /// Sets the inputs of the workspace : + virtual void SetInputs(const std::map& m); + + /// Puts the executer in "no exec" mode, + /// which creates but does not execute pipelines + virtual void SetNoExecMode(bool b); + + virtual bool GetNoExecMode() const; + + /// Sets the mode of dialog of the executer for Root inputs + virtual void SetDialogMode(DialogModeType t); + + /// Puts the executer in "no error" mode, + /// Errors do not stop execution (but warnings are produced) + virtual void SetNoErrorMode(bool b) ; + virtual bool GetNoErrorMode() const ; + //================================================================= + /// Loads a package + virtual void LoadPackage(const std::string &name ) ; + + /// Unloads a package + virtual void UnLoadPackage(const std::string &name ); + + /// Starts a package block + virtual void BeginPackage (const std::string &name ); + + /// Ends a package block + virtual void EndPackage (); + + /// Starts the definition of a new ComplexBlackBox in package pack + /// scriptfilename is the file from which the def is read + virtual void Define (const std::string &name, + const std::string& pack, + const std::string &scriptfilename); + + /// Sets the file name to use for the current definition + /// (Used to set it after the Define command) + virtual void SetCurrentFileName (const std::string &name ); + + /// End the definition of a ComplexBlackBox + virtual void EndDefine () ; + + /// Sets the kind of the currently defined ComplexBlackBox + virtual void Kind(const std::string& kind); + + /// Creates a new black box in current complex box + virtual void Create ( const std::string& boxType, const std::string& + boxName); + + /// Destroys a black box + virtual void Destroy (const std::string &boxName); + + /// Clears the currently defined ComplexBlackBox + virtual void Clear() ; + + /// Connects the output boxOutput to the input boxInput + virtual void Connect (const std::string &boxfrom, + const std::string &output, + const std::string &boxto, + const std::string &input) ; + + /// Executes the box + virtual void Execute (const std::string &box) ; + + /// Defines an input of the current complex box + virtual void DefineInput (const std::string &name, + const std::string &box, + const std::string &input, + const std::string &help) ; + + /// Defines an output of the current complex box + virtual void DefineOutput (const std::string &name, + const std::string &box, + const std::string &output, + const std::string &help); + + /// sets the input of the box with the value + virtual void Set (const std::string &box, + const std::string &input, + const std::string &value); + + /// gets the output of the box + virtual std::string Get (const std::string &box, + const std::string &output) ; + + /// changes the workspace name + virtual void SetWorkspaceName( const std::string& n ); + + ///Adds the authorName to the Box author list + virtual void Author(const std::string &authorName); + + ///Adds the categories to the Box categoris list + virtual void Category(const std::string &categories); + + /// The description string which explains what does the ComplexBox + virtual void Description(const std::string &d); + + /// prints the list of the boxes of the current box + virtual void PrintHelpListBoxes(); + + /// Generate a HTML file with a gif file with the actual pipeline (Graphviz-dot needed). Returns the file path + virtual std::string ShowGraph(const std::string &nameblackbox, + const std::string &detailStr, + const std::string &levelStr, + const std::string &output_file, + const std::string &custom_header, + const std::string &custom_title, + bool system_display = true); + + /// Generate a HTML with a gif file with the actual pipeline (Graphviz-dot needed). Returns the file path + virtual std::string ShowGraphInstances(const std::string &nameblackbox, int detail, int level, bool system_display=true) ; + + /// Prints help on a black box + virtual void PrintHelpBlackBox(const std::string &nameblackbox, const std::string &detailStr, const std::string &levelStr); + + virtual void Reset(); + + /// Sets the level of message for kind + virtual void SetMessageLevel(const std::string &kind, int level); + + /// Prints help on the messages + virtual void HelpMessages(); + + /// Prints the string ... MORE : TO EXPLAIN + virtual void Print(const std::string & message); + +//--EED + + + private: + + //Private Attributes + + + //Private Methods + + protected: + + //Protected Attributes + + //Protected methods + + }; + + +} +// namespace bbtk +#endif + diff --git a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.cxx b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.cxx index 5233d3c..a633abf 100644 --- a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.cxx +++ b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.cxx @@ -36,6 +36,11 @@ Version: $Revision$ #include "bbtkwxGUIEditorGraphicBBS.h" #include "creaWx.h" +#include +#include + + + namespace bbtk { @@ -152,12 +157,14 @@ namespace bbtk wxMenu *fileMenu = new wxMenu(); fileMenu->Append(ID_NEW, _T("New diagram"), _T("New")); fileMenu->Append(ID_SAVE_AS_DIAGRAM, _T("Save diagram"), _T("Save diagram")); + fileMenu->Append(ID_OPEN_BBS, _T("Open BBS"), _T("Open BBS")); fileMenu->Append(ID_SAVE_AS_BBS, _T("Save BBS"), _T("Save BBS")); fileMenu->Append(ID_SAVE_AS_COMPLEXBOX, _T("Save complex box"), _T("Save complex box")); fileMenu->Append(wxID_EXIT, _T("E&xit"), _T("Exit")); Connect(ID_NEW,wxEVT_COMMAND_MENU_SELECTED,wxCommandEventHandler(wxGUIEditorGraphicBBS::OnCreateNewTab)); Connect(ID_SAVE_AS_DIAGRAM,wxEVT_COMMAND_MENU_SELECTED,wxCommandEventHandler(wxGUIEditorGraphicBBS::OnSaveActualDiagram)); + Connect(ID_OPEN_BBS,wxEVT_COMMAND_MENU_SELECTED,wxCommandEventHandler(wxGUIEditorGraphicBBS::OnOpenBBS)); Connect(ID_SAVE_AS_BBS,wxEVT_COMMAND_MENU_SELECTED,wxCommandEventHandler(wxGUIEditorGraphicBBS::OnSaveActualBBS)); Connect(ID_SAVE_AS_COMPLEXBOX,wxEVT_COMMAND_MENU_SELECTED,wxCommandEventHandler(wxGUIEditorGraphicBBS::OnSaveActualComplexBox)); Connect(wxID_EXIT,wxEVT_COMMAND_MENU_SELECTED,wxCommandEventHandler(wxGUIEditorGraphicBBS::OnExit)); @@ -394,16 +401,39 @@ namespace bbtk executeScript(script); } + //========================================================================= // HANDLERS //========================================================================= + void wxGUIEditorGraphicBBS::OnOpenBBS(wxCommandEvent& event) + { + wxFileDialog * openFileDialog = new wxFileDialog(this,wxT("Open BBS"),wxEmptyString,wxT("NewBBS"),wxT("*.bbs"),wxOPEN); + if (openFileDialog->ShowModal() == wxID_OK) + { + wxString fileName = openFileDialog->GetPath( ); + printf("EED wxGUIEditorGraphicBBS::OnOpenBBS file=%s\n", (const char*) (fileName.mb_str()) ); + + bbtk::EExecuterBBSG::Pointer exe = bbtk::EExecuterBBSG::New(); +// EExecuterBBSG *exe = new EExecuterBBSG(); + bbtk::Interpreter::Pointer I = bbtk::Interpreter::New( boost::static_pointer_cast(exe) ); +// bbtk::Interpreter::Pointer I = bbtk::Interpreter::New( ExecuterBBSG::New() ); +// bbtk::Interpreter::Pointer I = bbtk::Interpreter::New( ); + + // We tell the interpreter to throw exceptions on error + I->SetThrow(true); + // Interpret the file supposed to define a box called 'Processing' + I->InterpretFile( (const char*) (fileName.mb_str()) ); + + + } + } void wxGUIEditorGraphicBBS::OnSaveActualBBS(wxCommandEvent& event) { wxFileDialog * saveFileDialog = new wxFileDialog(this,wxT("Save actual BBS"),wxEmptyString,wxT("NewBBS"),wxT("*.bbs"),wxSAVE|wxOVERWRITE_PROMPT); if (saveFileDialog->ShowModal() == wxID_OK) { - wxString fileName = saveFileDialog->GetPath(); + wxString fileName = saveFileDialog->GetPath( ); ofstream file; diff --git a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.h b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.h index b5f17a0..48bce9b 100644 --- a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.h +++ b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.h @@ -50,7 +50,6 @@ #include "wxVtkSceneManager.h" #include "GlobalConstants.h" -//#include "C:\RaC\CREATIS\bbtkGEditor\data\icons\wxart_new.xpm" // JPR #include "wxart_new.xpm" // JPR #include "wxart_open.xpm" #include "wxart_save.xpm" @@ -132,6 +131,7 @@ namespace bbtk void OnCreateNewTab(wxCommandEvent& event); void OnOpenDiagram(wxCommandEvent& event); void OnSaveActualDiagram(wxCommandEvent& event); + void OnOpenBBS(wxCommandEvent& event); void OnSaveActualBBS(wxCommandEvent& event); void OnSaveActualComplexBox(wxCommandEvent& event); void OnExecuteActualDiagram(wxCommandEvent& event); -- 2.47.1