X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FEditorGraphicBBS%2FbbsWxGUIEditorGraphic%2FbbtkwxGUIEditorGraphicBBS.cxx;h=7addacf59c6dcee36929bfb443724a19933733fe;hb=e7cfa1b15189636d8763c56aec0b7a5d6429e4db;hp=e76f8bcecb98b8bf41302e20bafa3bc4df48d14c;hpb=775c8164b5f679027b8bbafa97c0e0110711909b;p=bbtkGEditor.git diff --git a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.cxx b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.cxx index e76f8bc..7addacf 100644 --- a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.cxx +++ b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.cxx @@ -1,37 +1,37 @@ /*========================================================================= - Program: bbtk - Module: $RCSfile$ - Language: C++ - Date: $Date$ - Version: $Revision$ - =========================================================================*/ +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. - * ------------------------------------------------------------------------ */ +* 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::WxInterfaceEditorGraphicBBS . - */ +* \file +* \brief Class bbtk::WxInterfaceEditorGraphicBBS . +*/ #include "bbtkwxGUIEditorGraphicBBS.h" #include "creaWx.h" @@ -39,814 +39,729 @@ #include -namespace bbtk { - -//========================================================================= -wxGUIEditorGraphicBBS::wxGUIEditorGraphicBBS(wxFrame *parent) : - wxFrame(parent, -1, _T("bbtkGEditor"), wxDefaultPosition, wxSize( - 1200, 800)) { - - _frameAUIMgr = new wxAuiManager(this); - - /*std::string datadir( crea::System::GetExecutablePath() ); - std::string datadir ("."); - cout<<"RaC //------------------"<Update(); - _actualPkgBrowserBoxName = ""; - _actualPkgBrowserPkgName = ""; - refreshGUIControls(); -} - -//========================================================================= -wxGUIEditorGraphicBBS::~wxGUIEditorGraphicBBS() { - printf("EED %p ~wxGUIEditorGraphicBBS()\n", this); - - //EED02JUIN2010 delete _tabsMgr; - - _frameAUIMgr->UnInit(); - // FCY memory leaks - delete _frameAUIMgr; - delete _notebook; - delete _tabsMgr; - -} - -//========================================================================= -void wxGUIEditorGraphicBBS::initToolbar() { - wxBitmap bmp_new(new_xpm); - wxBitmap bmp_open(open_xpm); - wxBitmap bmp_save(save_xpm); - wxBitmap bmp_run(run_xpm); - wxBitmap bmp_delete(delete_xpm); - wxBitmap bmp_centerview(centerview_xpm); - wxBitmap bmp_box(box_xpm); - wxBitmap bmp_executablebox(executablebox_xpm); - wxBitmap bmp_complexbox(complexbox_xpm); - wxBitmap bmp_complexinputport(complexinputport_xpm); - wxBitmap bmp_complexoutputport(complexoutputport_xpm); - - wxToolBar *toolbar = new wxToolBar(this, wxID_ANY); - - //Adds a tool btn to the toolbar - toolbar->AddTool(ID_NEW, _T("New"), bmp_new, wxNullBitmap, wxITEM_NORMAL, - _T("New tab"), _T("Create a new panel tab")); - toolbar->AddTool(ID_OPEN, _T("Open diagram"), bmp_open, wxNullBitmap, - wxITEM_NORMAL, _T("Open a diagram"), _T("Open a diagram")); - toolbar->AddTool(ID_SAVE_DIAGRAM, _T("Save Diagram"), bmp_save, - wxNullBitmap, wxITEM_NORMAL, _T("Saves the current diagram"), - _T("Saves the current diagram")); //DFCH - //toolbar->AddTool(ID_SAVE_AS_DIAGRAM,_T("Save Diagram As"),bmp_save, wxNullBitmap, wxITEM_NORMAL,_T("Saves the current diagram"), _T("Saves the current diagram")); //DFCH - toolbar->AddTool(ID_RUN, _T("Run"), bmp_run, wxNullBitmap, wxITEM_NORMAL, - _T("Execute actual diagram"), _T("Execute actual diagram")); - toolbar->AddTool(ID_DELETEALL, _T("Delete all"), bmp_delete, wxNullBitmap, - wxITEM_NORMAL, _T("Delete all boxes"), _T("Delete all boxes")); - toolbar->AddTool(ID_CENTERVIEW, _T("Center view"), bmp_centerview, - wxNullBitmap, wxITEM_NORMAL, _T("Center view"), _T("Center view")); - toolbar->AddSeparator(); - toolbar->AddTool(ID_BTNBOX, _T("New Box"), bmp_box, wxNullBitmap, - wxITEM_NORMAL, _T("New Box"), _T("Nex Box")); - toolbar->AddSeparator(); - toolbar->AddTool(ID_BTEXECUTABLEBOX, _T("Select as executable Box"), - bmp_executablebox, wxNullBitmap, wxITEM_NORMAL, - _T("Select as executable Box"), _T("Select as executable Box")); - toolbar->AddSeparator(); - toolbar->AddTool(ID_BTNCOMPLEXBOX, _T("Complex box"), complexbox_xpm, - wxNullBitmap, wxITEM_NORMAL, _T("Complex box"), _T("Complex box")); - toolbar->SetToggle(ID_BTNCOMPLEXBOX, true); - toolbar->AddTool(ID_ADDCOMPLEXBOXINPUT, _T("Add input to Complex box"), - bmp_complexinputport, wxNullBitmap, wxITEM_NORMAL, - _T("Add input to Complex box"), _T("Add input to Complex box")); - toolbar->AddTool(ID_ADDCOMPLEXBOXOUTPUT, _T("Add output to Complex box"), - bmp_complexoutputport, wxNullBitmap, wxITEM_NORMAL, - _T("Add output Complex box"), _T("Add output Complex box")); - toolbar->EnableTool(ID_ADDCOMPLEXBOXINPUT, false); - toolbar->EnableTool(ID_ADDCOMPLEXBOXOUTPUT, false); - - toolbar->SetMargins(2, 2); - toolbar->Realize(); - SetToolBar(toolbar); - - // connect command event handlers - Connect(ID_NEW, wxEVT_COMMAND_TOOL_CLICKED, - wxCommandEventHandler(wxGUIEditorGraphicBBS::OnCreateNewTab)); - Connect(ID_OPEN, wxEVT_COMMAND_TOOL_CLICKED, - wxCommandEventHandler(wxGUIEditorGraphicBBS::OnOpenDiagram)); - Connect(ID_SAVE_DIAGRAM, wxEVT_COMMAND_TOOL_CLICKED, - wxCommandEventHandler(wxGUIEditorGraphicBBS::OnSaveActualDiagram)); //DFCH - Connect(ID_SAVE_AS_DIAGRAM, wxEVT_COMMAND_TOOL_CLICKED, - wxCommandEventHandler(wxGUIEditorGraphicBBS::OnSaveAsActualDiagram)); //DFCH - Connect( - ID_RUN, - wxEVT_COMMAND_TOOL_CLICKED, - wxCommandEventHandler(wxGUIEditorGraphicBBS::OnExecuteActualDiagram)); - Connect( - ID_DELETEALL, - wxEVT_COMMAND_TOOL_CLICKED, - wxCommandEventHandler(wxGUIEditorGraphicBBS::OnDeleteAllBoxesActualDiagram)); - Connect( - ID_CENTERVIEW, - wxEVT_COMMAND_TOOL_CLICKED, - wxCommandEventHandler(wxGUIEditorGraphicBBS::OnCenterViewActualDiagram)); - Connect(ID_BTNBOX, wxEVT_COMMAND_TOOL_CLICKED, - wxCommandEventHandler(wxGUIEditorGraphicBBS::OnClickBtnBox)); - Connect( - ID_BTEXECUTABLEBOX, - wxEVT_COMMAND_TOOL_CLICKED, - wxCommandEventHandler(wxGUIEditorGraphicBBS::OnClickBtnExecutableBox)); - Connect(ID_BTNCOMPLEXBOX, wxEVT_COMMAND_TOOL_CLICKED, - wxCommandEventHandler(wxGUIEditorGraphicBBS::OnClickBtnComplexBox)); - Connect(ID_ADDCOMPLEXBOXINPUT, wxEVT_COMMAND_TOOL_CLICKED, - wxCommandEventHandler(wxGUIEditorGraphicBBS::OnAddComplexBoxInput)); - Connect(ID_ADDCOMPLEXBOXOUTPUT, wxEVT_COMMAND_TOOL_CLICKED, - wxCommandEventHandler(wxGUIEditorGraphicBBS::OnAddComplexBoxOutput)); - -} -//========================================================================= -void wxGUIEditorGraphicBBS::initHelpHTMLBrowser() { - //TO FIX THE PATH OF BBTK BIN IN ORDER TO USE REGENERATE EXECUTABLES - //RegenerateAll(); - _helpHtmlBrowser = new WxGUIHtmlBrowser(this, wxSize(200, 0)); - _frameAUIMgr->AddPane(_helpHtmlBrowser, wxAuiPaneInfo().Right().MinSize( - 200, 200)); -} - -//========================================================================= -void wxGUIEditorGraphicBBS::initMenu() { - // Create File menu and its items - wxMenu *fileMenu = new wxMenu(); - fileMenu->Append(ID_NEW, _T("New diagram"), _T("New")); - fileMenu->Append(ID_SAVE_DIAGRAM, _T("Save Diagram"), _T("Save Diagram")); //DFCH - fileMenu->Append(ID_SAVE_AS_DIAGRAM, _T("Save Diagram As"), - _T("Save Diagram As")); //DFCH - 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_DIAGRAM, wxEVT_COMMAND_MENU_SELECTED, - wxCommandEventHandler(wxGUIEditorGraphicBBS::OnSaveActualDiagram)); //DFCH - Connect(ID_SAVE_AS_DIAGRAM, wxEVT_COMMAND_MENU_SELECTED, - wxCommandEventHandler(wxGUIEditorGraphicBBS::OnSaveAsActualDiagram)); - 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)); - - // Create Help menu and its items - wxMenu *editMenu = new wxMenu; - editMenu->Append(ID_COPY_TO_COMPLEXDIAGRAM, - _T("Copy selected to complex box"), - _T("Creates a new complex box diagram with selected boxes")); - - Connect( - ID_COPY_TO_COMPLEXDIAGRAM, - wxEVT_COMMAND_MENU_SELECTED, - wxCommandEventHandler(wxGUIEditorGraphicBBS::OnCopySelectedToComplexDiagram)); - - // Create Help menu and its items - wxMenu *helpMenu = new wxMenu; - helpMenu->Append(wxID_ABOUT, _T("&About..."), _T("About")); - helpMenu->Append(ID_HELP_BBEDITOR, _T("&Help..."), _T("Help")); - Connect(ID_HELP_BBEDITOR, wxEVT_COMMAND_MENU_SELECTED, - wxCommandEventHandler(wxGUIEditorGraphicBBS::OnHelpBBeditor)); - - // Create Tool menu - wxMenu *menuTools = new wxMenu; - menuTools->Append(ID_bbEditor_Tool_Menu_CreatePackage, - _T("Create &package") ); - menuTools->Append(ID_bbEditor_Tool_Menu_CreateBlackBox, - _T("Create &blackbox") ); - menuTools->Append(ID_bbEditor_Tool_Menu_PlugPackage, _T("Plug package") ); - menuTools->Append(ID_bbEditor_Tool_Menu_EditConfig, _T("&Edit bbtk config") ); - menuTools->Append(ID_bbEditor_Tool_Menu_ShowHTMLDoc, - _T("Show &HTML documentation") ); - menuTools->Append(ID_bbEditor_Tool_Menu_CreateIndex, _T("&Generate index") ); - - Connect(ID_bbEditor_Tool_Menu_CreatePackage, wxEVT_COMMAND_MENU_SELECTED, - wxCommandEventHandler(wxGUIEditorGraphicBBS::OnCreatePackage)); - Connect(ID_bbEditor_Tool_Menu_CreateBlackBox, wxEVT_COMMAND_MENU_SELECTED, - wxCommandEventHandler(wxGUIEditorGraphicBBS::OnCreateBlackBox)); - Connect(ID_bbEditor_Tool_Menu_PlugPackage, wxEVT_COMMAND_MENU_SELECTED, - wxCommandEventHandler(wxGUIEditorGraphicBBS::OnPlugPackage)); - Connect(ID_bbEditor_Tool_Menu_EditConfig, wxEVT_COMMAND_MENU_SELECTED, - wxCommandEventHandler(wxGUIEditorGraphicBBS::OnEditConfig)); - Connect(ID_bbEditor_Tool_Menu_ShowHTMLDoc, wxEVT_COMMAND_MENU_SELECTED, - wxCommandEventHandler(wxGUIEditorGraphicBBS::OnShowHTMLDoc)); - Connect(ID_bbEditor_Tool_Menu_CreateIndex, wxEVT_COMMAND_MENU_SELECTED, - wxCommandEventHandler(wxGUIEditorGraphicBBS::OnCreateIndex)); - - // Append the created menu to the menu bar - wxMenuBar *menuBar = new wxMenuBar(); - menuBar->Append(fileMenu, _T("&File") ); - menuBar->Append(editMenu, _T("&Edit") ); - menuBar->Append(menuTools, _T("&Tool") ); - menuBar->Append(helpMenu, _T("&Help") ); - - // Attach this menu bar to the frame - SetMenuBar(menuBar); -} - -//========================================================================= -void wxGUIEditorGraphicBBS::initTabPanelsManager() { - _notebook = new wxAuiNotebook(this, wxID_NOTEBOOK, wxDefaultPosition, - wxDefaultSize, wxAUI_NB_TOP | wxAUI_NB_TAB_MOVE - | wxAUI_NB_CLOSE_ON_ACTIVE_TAB | wxAUI_NB_TAB_FIXED_WIDTH - | wxAUI_NB_WINDOWLIST_BUTTON); - _tabsMgr = new wxTabPanelsManager(this); - _frameAUIMgr->AddPane(_notebook, wxAuiPaneInfo().CenterPane()); - -} - -//========================================================================= -void wxGUIEditorGraphicBBS::initPackageBrowser() { - _pkgBrowser = new WxGUIPackageBrowser2(this); - _pkgBrowser->IncludeAll(); - _frameAUIMgr->AddPane(_pkgBrowser, - wxAuiPaneInfo().Left().MinSize(200, 200).CloseButton(false)); -} - -//================================================================ - -void wxGUIEditorGraphicBBS::DoRegeneratePackageDoc(const std::string& pack) { - std::string mess("Regenerating doc for package '"); - if (pack != "-a") { - mess += pack + "'"; - } else { - mess = "Regenerating doc for all packages"; - } - - mess += " ... please wait"; - - SetStatusText(std2wx(mess)); - - //BBTK_BUSY_CURSOR; - - std::string command; -#if defined(WIN32) - command = "\""; -#endif - command += ConfigurationFile::GetInstance().Get_bin_path(); - command += ConfigurationFile::GetInstance().Get_file_separator(); - command += "bbRegeneratePackageDoc"; -#if defined(WIN32) - command += "\""; -#endif - command += " " + pack + " -q"; - bbtkMessage("debug",1,"Executing system command '"<Update(); + _actualPkgBrowserBoxName=""; + _actualPkgBrowserPkgName=""; + refreshGUIControls(); + } + + + //========================================================================= + wxGUIEditorGraphicBBS::~wxGUIEditorGraphicBBS() + { + printf ("EED %p ~wxGUIEditorGraphicBBS()\n" , this ); -#if defined(WIN32) - command += "\""; +//EED02JUIN2010 delete _tabsMgr; + + _frameAUIMgr->UnInit(); + + + } + + //========================================================================= + void wxGUIEditorGraphicBBS::initToolbar() + { + wxBitmap bmp_new(new_xpm); + wxBitmap bmp_open(open_xpm); + wxBitmap bmp_save(save_xpm); + wxBitmap bmp_run(run_xpm); + wxBitmap bmp_delete(delete_xpm); + wxBitmap bmp_centerview(centerview_xpm); + wxBitmap bmp_box(box_xpm); + wxBitmap bmp_complexbox(complexbox_xpm); + wxBitmap bmp_complexinputport(complexinputport_xpm); + wxBitmap bmp_complexoutputport(complexoutputport_xpm); + + wxToolBar *toolbar = new wxToolBar(this, wxID_ANY); + + //Adds a tool btn to the toolbar + toolbar->AddTool(ID_NEW,_T("New"),bmp_new, wxNullBitmap, wxITEM_NORMAL,_T("New tab"), _T("Create a new panel tab")); + toolbar->AddTool(ID_OPEN,_T("Open diagram"),bmp_open, wxNullBitmap, wxITEM_NORMAL,_T("Open a diagram"), _T("Open a diagram")); + toolbar->AddTool(ID_SAVE_AS_DIAGRAM,_T("Save diagram"),bmp_save, wxNullBitmap, wxITEM_NORMAL,_T("Saves actual diagram"), _T("Saves actual diagram")); + toolbar->AddTool(ID_RUN,_T("Run"),bmp_run, wxNullBitmap, wxITEM_NORMAL,_T("Execute actual diagram"), _T("Execute actual diagram")); + toolbar->AddTool(ID_DELETEALL,_T("Delete all"),bmp_delete, wxNullBitmap, wxITEM_NORMAL,_T("Delete all boxes"), _T("Delete all boxes")); + toolbar->AddTool(ID_CENTERVIEW,_T("Center view"),bmp_centerview, wxNullBitmap, wxITEM_NORMAL,_T("Center view"), _T("Center view")); + toolbar->AddSeparator(); + toolbar->AddTool(ID_BTNBOX,_T("New Box"),bmp_box, wxNullBitmap, wxITEM_NORMAL,_T("New Box"), _T("Nex Box")); + toolbar->AddSeparator(); + toolbar->AddTool(ID_BTNCOMPLEXBOX,_T("Complex box"),complexbox_xpm, wxNullBitmap, wxITEM_NORMAL,_T("Complex box"), _T("Complex box")); + toolbar->SetToggle(ID_BTNCOMPLEXBOX,true); + toolbar->AddTool(ID_ADDCOMPLEXBOXINPUT,_T("Add input to Complex box"),bmp_complexinputport, wxNullBitmap, wxITEM_NORMAL,_T("Add input to Complex box"), _T("Add input to Complex box")); + toolbar->AddTool(ID_ADDCOMPLEXBOXOUTPUT,_T("Add output to Complex box"),bmp_complexoutputport, wxNullBitmap, wxITEM_NORMAL,_T("Add output Complex box"), _T("Add output Complex box")); + toolbar->EnableTool(ID_ADDCOMPLEXBOXINPUT,false); + toolbar->EnableTool(ID_ADDCOMPLEXBOXOUTPUT,false); + + toolbar->SetMargins( 2, 2 ); + toolbar->Realize(); + SetToolBar(toolbar); + + // connect command event handlers + Connect(ID_NEW,wxEVT_COMMAND_TOOL_CLICKED,wxCommandEventHandler(wxGUIEditorGraphicBBS::OnCreateNewTab)); + Connect(ID_OPEN,wxEVT_COMMAND_TOOL_CLICKED,wxCommandEventHandler(wxGUIEditorGraphicBBS::OnOpenDiagram)); + Connect(ID_SAVE_AS_DIAGRAM,wxEVT_COMMAND_TOOL_CLICKED,wxCommandEventHandler(wxGUIEditorGraphicBBS::OnSaveActualDiagram)); + Connect(ID_RUN,wxEVT_COMMAND_TOOL_CLICKED,wxCommandEventHandler(wxGUIEditorGraphicBBS::OnExecuteActualDiagram)); + Connect(ID_DELETEALL,wxEVT_COMMAND_TOOL_CLICKED,wxCommandEventHandler(wxGUIEditorGraphicBBS::OnDeleteAllBoxesActualDiagram)); + Connect(ID_CENTERVIEW,wxEVT_COMMAND_TOOL_CLICKED,wxCommandEventHandler(wxGUIEditorGraphicBBS::OnCenterViewActualDiagram)); + Connect(ID_BTNBOX,wxEVT_COMMAND_TOOL_CLICKED,wxCommandEventHandler(wxGUIEditorGraphicBBS::OnClickBtnBox)); + Connect(ID_BTNCOMPLEXBOX,wxEVT_COMMAND_TOOL_CLICKED,wxCommandEventHandler(wxGUIEditorGraphicBBS::OnClickBtnComplexBox)); + Connect(ID_ADDCOMPLEXBOXINPUT,wxEVT_COMMAND_TOOL_CLICKED,wxCommandEventHandler(wxGUIEditorGraphicBBS::OnAddComplexBoxInput)); + Connect(ID_ADDCOMPLEXBOXOUTPUT,wxEVT_COMMAND_TOOL_CLICKED,wxCommandEventHandler(wxGUIEditorGraphicBBS::OnAddComplexBoxOutput)); + + } + //========================================================================= + void wxGUIEditorGraphicBBS::initHelpHTMLBrowser() + { + //TO FIX THE PATH OF BBTK BIN IN ORDER TO USE REGENERATE EXECUTABLES + //RegenerateAll(); + _helpHtmlBrowser = new WxGUIHtmlBrowser(this,wxSize(200,0)); + _frameAUIMgr->AddPane(_helpHtmlBrowser,wxAuiPaneInfo().Right().MinSize(200,200)); + } + + //========================================================================= + void wxGUIEditorGraphicBBS::initMenu() + { + // Create File menu and its items + 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)); + + // Create Help menu and its items + wxMenu *editMenu = new wxMenu; + editMenu->Append(ID_COPY_TO_COMPLEXDIAGRAM, _T("Copy selected to complex box"), _T("Creates a new complex box diagram with selected boxes")); + + Connect(ID_COPY_TO_COMPLEXDIAGRAM,wxEVT_COMMAND_MENU_SELECTED,wxCommandEventHandler(wxGUIEditorGraphicBBS::OnCopySelectedToComplexDiagram)); + + // Create Help menu and its items + wxMenu *helpMenu = new wxMenu; + helpMenu->Append(wxID_ABOUT, _T("&About..."), _T("About")); + helpMenu->Append(ID_HELP_BBEDITOR, _T("&Help..."), _T("Help")); + Connect(ID_HELP_BBEDITOR,wxEVT_COMMAND_MENU_SELECTED,wxCommandEventHandler(wxGUIEditorGraphicBBS::OnHelpBBeditor)); + + // Append the created menu to the menu bar + wxMenuBar *menuBar = new wxMenuBar(); + menuBar->Append(fileMenu, _T("&File")); + menuBar->Append(editMenu, _T("&Edit")); + menuBar->Append(helpMenu, _T("&Help")); + + // Attach this menu bar to the frame + SetMenuBar(menuBar); + } + + //========================================================================= + void wxGUIEditorGraphicBBS::initTabPanelsManager() + { + _notebook = new wxAuiNotebook(this,wxID_NOTEBOOK,wxDefaultPosition,wxDefaultSize,wxAUI_NB_TOP|wxAUI_NB_TAB_MOVE|wxAUI_NB_CLOSE_ON_ACTIVE_TAB|wxAUI_NB_TAB_FIXED_WIDTH|wxAUI_NB_WINDOWLIST_BUTTON); + _tabsMgr = new wxTabPanelsManager(this); + _frameAUIMgr->AddPane(_notebook,wxAuiPaneInfo().CenterPane()); + + } + + //========================================================================= + void wxGUIEditorGraphicBBS::initPackageBrowser() + { + _pkgBrowser = new WxGUIPackageBrowser2(this); + _pkgBrowser->IncludeAll(); + _frameAUIMgr->AddPane(_pkgBrowser,wxAuiPaneInfo().Left().MinSize(200,200).CloseButton(false)); + } + + //================================================================ + + void wxGUIEditorGraphicBBS::DoRegeneratePackageDoc( const std::string& pack ) + { + std::string mess("Regenerating doc for package '"); + if (pack!="-a"){ + mess += pack + "'"; + } + else + { + mess = "Regenerating doc for all packages"; + } + + mess += " ... please wait"; + + SetStatusText( std2wx(mess) ); + + //BBTK_BUSY_CURSOR; + + std::string command; + #if defined(WIN32) + command = "\""; + #endif + command += ConfigurationFile::GetInstance().Get_bin_path(); + command += ConfigurationFile::GetInstance().Get_file_separator(); + command += "bbRegeneratePackageDoc"; + #if defined(WIN32) + command += "\""; + #endif + + command += " " + pack + " -q"; + bbtkMessage("debug",1,"Executing system command '"<getBlackBoxDescriptor(packageName, boxName); + _pkgBrowser->WxGUIBlackBoxListUserOnSelected(descriptor.get()); + } + } + + //========================================================================= + + void wxGUIEditorGraphicBBS::editBlackBox(GBlackBoxModel *bbmodel) + { + wxBlackBoxEditionDialog* dialog = new wxBlackBoxEditionDialog(this,bbmodel); + dialog->Show(); + } + + //========================================================================= + + void wxGUIEditorGraphicBBS::updateStatusBar(std::string textStatus) + { + SetStatusText(crea::std2wx(textStatus)); + } + + //========================================================================= + + void wxGUIEditorGraphicBBS::executeScript(std::string script) + { + std::string separator = ConfigurationFile::GetInstance().Get_file_separator (); + std::string dir = ConfigurationFile::GetInstance().Get_default_temp_dir(); + std::string filename = dir + separator + "tmp_bbtk.bbs"; + + ofstream tempFile; + tempFile.open(filename.c_str()); + tempFile << script; + tempFile.close(); + + std::string command = "\""+ crea::System::GetExecutablePath(); + + +#ifdef MACOSX + command += separator + "../../../bbi.app/Contents/MacOS"; #endif - command += " -q"; - bbtkMessage("debug",1,"Executing system command '"<addNewTab(); + refreshGUIControls(); + } + + //========================================================================= + + void wxGUIEditorGraphicBBS::OnExecuteActualDiagram(wxCommandEvent& event) + { + std::string script1 = _tabsMgr->getActualDiagramBBS(true); + cout<getActualDiagramBBS(false); + executeScript(script2); } -} -//================================================================ -void wxGUIEditorGraphicBBS::RegenerateAll() { - DoRegeneratePackageDoc("-a"); - DoRegenerateBoxesLists(); -} -//================================================================ + //========================================================================= + // 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( ); -wxAuiNotebook* wxGUIEditorGraphicBBS::getAuiNotebook() { - return _notebook; -} -//================================================================ + _tabsMgr->addNewTab( openFileDialog->GetFilename() ); -void wxGUIEditorGraphicBBS::displayBlackBoxInfo(std::string packageName, - std::string boxName) { - if (_actualPkgBrowserPkgName != packageName || _actualPkgBrowserBoxName - != boxName) { - _actualPkgBrowserPkgName = packageName; - _actualPkgBrowserBoxName = boxName; + bbtk::InterpreterBBS::Pointer I = bbtk::InterpreterBBS::New( this->_tabsMgr->getActualTabPanel()->getSceneManager() , _pkgBrowser->GetFactory()); - BlackBoxDescriptor::Pointer descriptor = - GObjectsMVCFactory::getInstance()->getBlackBoxDescriptor( - packageName, boxName); - _pkgBrowser->WxGUIBlackBoxListUserOnSelected(descriptor.get()); + // 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()) ); + } + refreshGUIControls(); } -} -//========================================================================= -void wxGUIEditorGraphicBBS::editBlackBox(GBlackBoxModel *bbmodel) { - wxBlackBoxEditionDialog* dialog = - new wxBlackBoxEditionDialog(this, bbmodel); - dialog->Show(); -} -//========================================================================= + void wxGUIEditorGraphicBBS::SaveActualBBS(std::string filename) + { + ofstream file; + +//EED file.open(fileName.c_str()); + file.open( filename.c_str() ); + std::string content=""; + // writing file header + content += "# ----------------------------------\n"; + content += "# - BBTKGEditor v 1.2 BBS BlackBox Script\n"; + content += "# - "; + content += filename; + content += "\n"; + content += "# ----------------------------------\n"; + content += "\n"; + content += _tabsMgr->getActualDiagramBBS(); + file << content; + file.close(); + } -void wxGUIEditorGraphicBBS::updateStatusBar(std::string textStatus) { - SetStatusText(crea::std2wx(textStatus)); -} -//========================================================================= + 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( ); + SaveActualBBS( (const char*) (fileName.mb_str()) ); + } -void wxGUIEditorGraphicBBS::executeScript(std::string script) { - std::string separator = - ConfigurationFile::GetInstance().Get_file_separator(); - std::string dir = ConfigurationFile::GetInstance().Get_default_temp_dir(); - std::string filename = dir + separator + "tmp_bbtk.bbs"; + } - ofstream tempFile; - tempFile.open(filename.c_str()); - tempFile << script; - tempFile.close(); - std::string command = ""; + void wxGUIEditorGraphicBBS::AskComplexBoxConfiguration() + { + std::string cbName = _tabsMgr->GetCbName(); + std::string paName = _tabsMgr->GetCbPackageName(); -#ifdef WIN32 - command += "start /b "; -#endif + wxTextEntryDialog *cbNameDialog = new wxTextEntryDialog(this,wxT("Complex Box name")); + wxTextEntryDialog *paNameDialog = new wxTextEntryDialog(this,wxT("Package name")); - // command += "\""+ crea::System::GetExecutablePath(); - //#ifdef MACOSX - // command += separator + "../../../bbi.app/Contents/MacOS"; - //#endif + cbNameDialog->SetValue( wxString(cbName.c_str(),wxConvUTF8) ); + paNameDialog->SetValue( wxString(paName.c_str(),wxConvUTF8) ); - command += "bbi "; - command += "\"" + filename + "\""; + if (cbNameDialog->ShowModal() == wxID_OK) + { + wxString complexboxname = cbNameDialog->GetValue(); + cbName=(const char*) (complexboxname.mb_str()); + } -#ifndef WIN32 - command += " & "; -#endif - printf("RaC wxGUIEditorGraphicBBS::executeScript %s \n", command.c_str()); - system(command.c_str()); -} - -//========================================================================= -// EVENT HANDLERS -//========================================================================= - -void wxGUIEditorGraphicBBS::OnCreateNewTab(wxCommandEvent& event) { - _tabsMgr->addNewTab(); - refreshGUIControls(); -} + if (paNameDialog->ShowModal() == wxID_OK) + { + wxString packagename = paNameDialog->GetValue(); + paName=(const char*) (packagename.mb_str()); + } -//========================================================================= - -void wxGUIEditorGraphicBBS::OnExecuteActualDiagram(wxCommandEvent& event) { - std::string script1 = _tabsMgr->getActualDiagramBBS(true); - cout << endl << "RaC wxGUIEditorGraphicBBS::executeActualDiagram SCRIPT" - << endl << endl; - cout << script1 << endl; - - std::string script2 = _tabsMgr->getActualDiagramBBS(false); - executeScript(script2); -} - -//========================================================================= -// 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(); - - _tabsMgr->addNewTab(openFileDialog->GetFilename()); - - bbtk::InterpreterBBS::Pointer I = bbtk::InterpreterBBS::New( - this->_tabsMgr->getActualTabPanel()->getSceneManager(), - _pkgBrowser->GetFactory()); - - // 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())); - } - refreshGUIControls(); -} - -void wxGUIEditorGraphicBBS::SaveActualBBS(std::string filename) { - ofstream file; - - //EED file.open(fileName.c_str()); - file.open(filename.c_str()); - std::string content = ""; - // writing file header - content += "# ----------------------------------\n"; - content += "# - BBTKGEditor v 1.2 BBS BlackBox Script\n"; - content += "# - "; - content += filename; - content += "\n"; - content += "# ----------------------------------\n"; - content += "\n"; - content += _tabsMgr->getActualDiagramBBS(); - file << content; - file.close(); -} - -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(); - SaveActualBBS((const char*) (fileName.mb_str())); - } - -} - -void wxGUIEditorGraphicBBS::AskComplexBoxConfiguration() { - std::string cbName = _tabsMgr->GetCbName(); - std::string paName = _tabsMgr->GetCbPackageName(); - - wxTextEntryDialog *cbNameDialog = new wxTextEntryDialog(this, - wxT("Complex Box name")); - wxTextEntryDialog *paNameDialog = new wxTextEntryDialog(this, - wxT("Package name")); - - cbNameDialog->SetValue(wxString(cbName.c_str(), wxConvUTF8)); - paNameDialog->SetValue(wxString(paName.c_str(), wxConvUTF8)); - - if (cbNameDialog->ShowModal() == wxID_OK) { - wxString complexboxname = cbNameDialog->GetValue(); - cbName = (const char*) (complexboxname.mb_str()); - } - - if (paNameDialog->ShowModal() == wxID_OK) { - wxString packagename = paNameDialog->GetValue(); - paName = (const char*) (packagename.mb_str()); - } - - _tabsMgr->SetCbName(cbName); - _tabsMgr->SetCbPackageName(paName); -} - -//========================================================================= - -void wxGUIEditorGraphicBBS::SaveActualComplexBox(std::string filename) { - ofstream file; - file.open(filename.c_str()); - - std::string content = ""; - - // writing file header - content += "# ----------------------------------\n"; - content += "# - BBTKGEditor v 1.2 BBS BlackBox Script (Complex Box)\n"; - content += "# - "; - content += filename; - content += "\n"; - content += "# ----------------------------------\n"; - content += "\n"; - content += _tabsMgr->getActualComplexBoxBBS(); - file << content; - file.close(); -} - -//========================================================================= - -void wxGUIEditorGraphicBBS::OnSaveActualComplexBox(wxCommandEvent& event) { - wxFileDialog * saveFileDialog = new wxFileDialog(this, - wxT("Save Complex Box BBS"), wxEmptyString, - _T("ComplexBoxName"), wxT("*.bbs"), wxSAVE - | wxOVERWRITE_PROMPT); - if (saveFileDialog->ShowModal() == wxID_OK) { - wxString fileName = saveFileDialog->GetPath(); - SaveActualComplexBox((const char*) (fileName.mb_str())); - } -} - -//========================================================================= -void wxGUIEditorGraphicBBS::SaveActualDiagram(std::string filename) { - ofstream file; - file.open(filename.c_str()); - - std::string content = ""; - - // writing file header - content += "# ----------------------------------\n"; - content += "# - BBTKGEditor v 1.2 BBG BlackBox Diagram file\n"; - content += "# - "; - - content += filename; - - content += "\n"; - content += "# ----------------------------------\n"; - content += "\n"; - content += "APP_START\n"; - _tabsMgr->saveActualDiagram(content, filename); //DFCH - content += "APP_END\n"; - file << content; - file.close(); -} - -//========================================================================= - -//The following method allows to save the current diagram asking the filename -//DFCH -void wxGUIEditorGraphicBBS::SaveCurrentDiagramAs() { - wxFileDialog * saveFileDialog = new wxFileDialog(this, - wxT("Save current diagram"), wxEmptyString, wxT("NewDiagram"), - wxT("*.bbg"), wxSAVE | wxOVERWRITE_PROMPT); - if (saveFileDialog->ShowModal() == wxID_OK) { - _tabsMgr->SetNameTabPanel(saveFileDialog->GetFilename()); - wxString pathfileName = saveFileDialog->GetPath(); - std::string pathfilename = (const char*) (pathfileName.mb_str()); - std::string pathfilenamebbs = pathfilename; - pathfilenamebbs[pathfilenamebbs.length() - 1] = 's'; - if (_tabsMgr->isActualDiagramComplexBox() == false) { - SaveActualDiagram(pathfilename); - SaveActualBBS(pathfilenamebbs); - } else { - AskComplexBoxConfiguration(); - SaveActualDiagram(pathfilename); - SaveActualComplexBox(pathfilenamebbs); - } //if isActualDiagramComplexBox - } // if saveFileDialog -} -//========================================================================= -//DFCH -void wxGUIEditorGraphicBBS::OnSaveActualDiagram(wxCommandEvent& event) { - std::string pathfilename = _tabsMgr->GetCurrentTabPanelPath(); - if (pathfilename.empty()) { - SaveCurrentDiagramAs(); - } else { - std::string pathfilenamebbs = pathfilename; - pathfilenamebbs[pathfilenamebbs.length() - 1] = 's'; - - if (_tabsMgr->isActualDiagramComplexBox() == false) { - SaveActualDiagram(pathfilename); - SaveActualBBS(pathfilenamebbs); - } else { - AskComplexBoxConfiguration(); - SaveActualDiagram(pathfilename); - SaveActualComplexBox(pathfilenamebbs); - } //if isActualDiagramComplexBox - } -} -//========================================================================= -//DFCH -void wxGUIEditorGraphicBBS::OnSaveAsActualDiagram(wxCommandEvent& event) { - SaveCurrentDiagramAs(); -} -//========================================================================= - -void wxGUIEditorGraphicBBS::refreshGUIControls() { - wxToolBar* toolbar = GetToolBar(); - if (_tabsMgr->isActualDiagramComplexBox()) { - toolbar->ToggleTool(ID_BTNCOMPLEXBOX, true); - toolbar->EnableTool(ID_ADDCOMPLEXBOXINPUT, true); - toolbar->EnableTool(ID_ADDCOMPLEXBOXOUTPUT, true); - - GetMenuBar()->GetMenu(0)->Enable(ID_SAVE_AS_COMPLEXBOX, true); - GetMenuBar()->GetMenu(0)->Enable(ID_SAVE_AS_BBS, false); - } else { - toolbar->ToggleTool(ID_BTNCOMPLEXBOX, false); - toolbar->EnableTool(ID_ADDCOMPLEXBOXINPUT, false); - toolbar->EnableTool(ID_ADDCOMPLEXBOXOUTPUT, false); - - GetMenuBar()->GetMenu(0)->Enable(ID_SAVE_AS_COMPLEXBOX, false); - GetMenuBar()->GetMenu(0)->Enable(ID_SAVE_AS_BBS, true); - } - - if (_tabsMgr->getNumActualSelectedObjects() > 0) { - GetMenuBar()->GetMenu(1)->Enable(ID_COPY_TO_COMPLEXDIAGRAM, true); - } else { - ///TODO Fix the possibility to say from the SceneManager to the GUI to refresh the options - GetMenuBar()->GetMenu(1)->Enable(ID_COPY_TO_COMPLEXDIAGRAM, true); - } - -} - -//========================================================================= - -void wxGUIEditorGraphicBBS::OnDeleteAllBoxesActualDiagram(wxCommandEvent& event) { - wxMessageDialog *dial = new wxMessageDialog(NULL, - wxT("Are you sure to delete all boxes of the diagram?"), - wxT("Delete all boxes"), wxYES_NO | wxNO_DEFAULT - | wxICON_QUESTION); - if (dial->ShowModal() == wxID_YES) { - _tabsMgr->deleteAllBoxesActualDiagram(); - } -} - -//========================================================================= - -void wxGUIEditorGraphicBBS::OnCenterViewActualDiagram(wxCommandEvent& event) { - _tabsMgr->centerViewActualDiagram(); -} - -//========================================================================= - -void wxGUIEditorGraphicBBS::OnOpenDiagram(wxCommandEvent& event) { - wxFileDialog * openFileDialog = new wxFileDialog(this, wxT("Open diagram"), - wxEmptyString, wxT(""), wxT("*.bbg"), wxOPEN | wxFILE_MUST_EXIST); - if (openFileDialog->ShowModal() == wxID_OK) { - wxString fileName = openFileDialog->GetPath(); - ifstream inputStream; - std::string fName = (const char*) (fileName.mb_str()); - inputStream.open(fName.c_str()); - _tabsMgr->addNewTab(openFileDialog->GetFilename()); - - _tabsMgr->loadDiagram(inputStream, fName); - - inputStream.close(); - } - refreshGUIControls(); -} - -//========================================================================= - - -void wxGUIEditorGraphicBBS::OnClickBtnBox(wxCommandEvent& event) { - BlackBoxDescriptor *bbDes = _pkgBrowser->GetActualSelected(); - if (bbDes != NULL) { - std::string typeName = bbDes->GetTypeName(); - std::string packageName = bbDes->GetPackage()->GetName(); - - wxGEditorTabPanel *pnl = this->_tabsMgr->getActualTabPanel(); - - if (pnl != NULL) { - wxVtkSceneManager *scn = pnl->getSceneManager(); - scn->createGBlackBox(50, 50, packageName, typeName); - scn->refresh(); - } // if pnl - }// if bbDes -} + _tabsMgr->SetCbName(cbName); + _tabsMgr->SetCbPackageName(paName); + } + + //========================================================================= + + void wxGUIEditorGraphicBBS::SaveActualComplexBox(std::string filename) + { + ofstream file; + file.open( filename.c_str() ); + + std::string content=""; + + // writing file header + content += "# ----------------------------------\n"; + content += "# - BBTKGEditor v 1.2 BBS BlackBox Script (Complex Box)\n"; + content += "# - "; + content += filename; + content += "\n"; + content += "# ----------------------------------\n"; + content += "\n"; + content += _tabsMgr->getActualComplexBoxBBS(); + file << content; + file.close(); + } -//========================================================================= - -void wxGUIEditorGraphicBBS::OnClickBtnExecutableBox(wxCommandEvent& event) { - //DFCH - wxGEditorTabPanel *pnl = this->_tabsMgr->getActualTabPanel(); + //========================================================================= - if (pnl != NULL) { - wxVtkSceneManager *scn = pnl->getSceneManager(); - if( scn->MakeBoxExecutable() ) - std::cout<<"DFCH: wxGUIEditorGraphicBBS::OnClickBtnExecutableBox...successful"<ShowModal() == wxID_OK) + { + wxString fileName = saveFileDialog->GetPath(); + SaveActualComplexBox( (const char*) (fileName.mb_str()) ); + } + } + + //========================================================================= + void wxGUIEditorGraphicBBS::SaveActualDiagram(std::string filename) + { + ofstream file; + file.open( filename.c_str() ); + + std::string content=""; + + // writing file header + content += "# ----------------------------------\n"; + content += "# - BBTKGEditor v 1.2 BBG BlackBox Diagram file\n"; + content += "# - "; + + content += filename; + + content += "\n"; + content += "# ----------------------------------\n"; + content += "\n"; + content += "APP_START\n"; + _tabsMgr->saveActualDiagram(content); + content += "APP_END\n"; + file << content; + file.close(); + } + + + //========================================================================= + void wxGUIEditorGraphicBBS::OnSaveActualDiagram(wxCommandEvent& event) + { + wxFileDialog * saveFileDialog = new wxFileDialog(this,wxT("Save actual diagram"),wxEmptyString,wxT("NewDiagram"),wxT("*.bbg"),wxSAVE|wxOVERWRITE_PROMPT); + if (saveFileDialog->ShowModal() == wxID_OK) + { + _tabsMgr->SetNameTabPanel( saveFileDialog->GetFilename() ); + + wxString pathfileName = saveFileDialog->GetPath(); + std::string pathfilename = (const char*) (pathfileName.mb_str()); + std::string pathfilenamebbs = pathfilename; + pathfilenamebbs[pathfilenamebbs.length()-1]='s'; + + if (_tabsMgr->isActualDiagramComplexBox()==false) + { + SaveActualDiagram( pathfilename ); + SaveActualBBS(pathfilenamebbs); + } else { + AskComplexBoxConfiguration(); + SaveActualDiagram( pathfilename ); + SaveActualComplexBox(pathfilenamebbs); + } //if isActualDiagramComplexBox + } // if saveFileDialog + } + + //========================================================================= + + void wxGUIEditorGraphicBBS::refreshGUIControls() + { + wxToolBar* toolbar = GetToolBar(); + if(_tabsMgr->isActualDiagramComplexBox()) + { + toolbar->ToggleTool(ID_BTNCOMPLEXBOX,true); + toolbar->EnableTool(ID_ADDCOMPLEXBOXINPUT,true); + toolbar->EnableTool(ID_ADDCOMPLEXBOXOUTPUT,true); + + GetMenuBar()->GetMenu(0)->Enable(ID_SAVE_AS_COMPLEXBOX,true); + GetMenuBar()->GetMenu(0)->Enable(ID_SAVE_AS_BBS,false); + } else - std::cout<<"DFCH: wxGUIEditorGraphicBBS::OnClickBtnExecutableBox...Error!!"<ToggleTool(ID_BTNCOMPLEXBOX,false); + toolbar->EnableTool(ID_ADDCOMPLEXBOXINPUT,false); + toolbar->EnableTool(ID_ADDCOMPLEXBOXOUTPUT,false); + + GetMenuBar()->GetMenu(0)->Enable(ID_SAVE_AS_COMPLEXBOX,false); + GetMenuBar()->GetMenu(0)->Enable(ID_SAVE_AS_BBS,true); + } + + if(_tabsMgr->getNumActualSelectedObjects()>0) + { + GetMenuBar()->GetMenu(1)->Enable(ID_COPY_TO_COMPLEXDIAGRAM,true); + } + else + { + ///TODO Fix the possibility to say from the SceneManager to the GUI to refresh the options + GetMenuBar()->GetMenu(1)->Enable(ID_COPY_TO_COMPLEXDIAGRAM,true); + } + + } + + //========================================================================= + + void wxGUIEditorGraphicBBS::OnDeleteAllBoxesActualDiagram(wxCommandEvent& event) + { + wxMessageDialog *dial = new wxMessageDialog(NULL, wxT("Are you sure to delete all boxes of the diagram?"), wxT("Delete all boxes"), wxYES_NO | wxNO_DEFAULT | wxICON_QUESTION); + if(dial->ShowModal() == wxID_YES) + { + _tabsMgr->deleteAllBoxesActualDiagram(); + } + } + + //========================================================================= + + void wxGUIEditorGraphicBBS::OnCenterViewActualDiagram(wxCommandEvent& event) + { + _tabsMgr->centerViewActualDiagram(); + } + + //========================================================================= + + void wxGUIEditorGraphicBBS::OnOpenDiagram(wxCommandEvent& event) + { + wxFileDialog * openFileDialog = new wxFileDialog(this,wxT("Open diagram"),wxEmptyString,wxT(""),wxT("*.bbg"),wxOPEN|wxFILE_MUST_EXIST); + if (openFileDialog->ShowModal() == wxID_OK) + { + wxString fileName = openFileDialog->GetPath(); + ifstream inputStream; + std::string fName=(const char*) (fileName.mb_str()); + inputStream.open( fName.c_str() ); + _tabsMgr->addNewTab( openFileDialog->GetFilename() ); + + _tabsMgr->loadDiagram(inputStream); + + inputStream.close(); + } + refreshGUIControls(); } - //DFCH -} + //========================================================================= + + + void wxGUIEditorGraphicBBS::OnClickBtnBox(wxCommandEvent& event) + { + BlackBoxDescriptor *bbDes = _pkgBrowser->GetActualSelected(); + if (bbDes!=NULL) + { + std::string typeName = bbDes->GetTypeName(); + std::string packageName = bbDes->GetPackage()->GetName(); -//========================================================================= -void wxGUIEditorGraphicBBS::OnClickBtnComplexBox(wxCommandEvent& event) { - wxToolBar* toolbar = GetToolBar(); - bool temp = toolbar->GetToolState(ID_BTNCOMPLEXBOX); - if (temp) { - _tabsMgr->setActualDiagramComplexBox(true); - } else { - _tabsMgr->setActualDiagramComplexBox(false); + wxGEditorTabPanel *pnl = this->_tabsMgr->getActualTabPanel(); + + if (pnl!=NULL) + { + wxVtkSceneManager *scn = pnl->getSceneManager(); + scn->createGBlackBox(50,50,packageName, typeName); + scn->refresh(); + } // if pnl + }// if bbDes } - refreshGUIControls(); -} -//========================================================================= + //========================================================================= + -void wxGUIEditorGraphicBBS::OnAddComplexBoxInput(wxCommandEvent& event) { - wxTextEntryDialog *nameDialog = new wxTextEntryDialog(this, - wxT("Name of input port")); - if (nameDialog->ShowModal() == wxID_OK) { - wxString fileName = nameDialog->GetValue(); - if (!fileName.IsEmpty()) { - std::string portName = (const char*) (fileName.mb_str()); - _tabsMgr->addActualDiagramComplexInputPort(portName); + void wxGUIEditorGraphicBBS::OnClickBtnComplexBox(wxCommandEvent& event) + { + wxToolBar* toolbar = GetToolBar(); + bool temp = toolbar->GetToolState(ID_BTNCOMPLEXBOX); + if(temp) + { + _tabsMgr->setActualDiagramComplexBox(true); + } + else + { + _tabsMgr->setActualDiagramComplexBox(false); } + refreshGUIControls(); } -} -//========================================================================= + //========================================================================= + + void wxGUIEditorGraphicBBS::OnAddComplexBoxInput(wxCommandEvent& event) + { + wxTextEntryDialog *nameDialog = new wxTextEntryDialog(this,wxT("Name of input port")); + if (nameDialog->ShowModal() == wxID_OK) + { + wxString fileName = nameDialog->GetValue(); + if(!fileName.IsEmpty()) + { + std::string portName=(const char*) (fileName.mb_str()); + _tabsMgr->addActualDiagramComplexInputPort(portName); + } + } + } -void wxGUIEditorGraphicBBS::OnAddComplexBoxOutput(wxCommandEvent& event) { - wxTextEntryDialog *nameDialog = new wxTextEntryDialog(this, - wxT("Name of output port")); - if (nameDialog->ShowModal() == wxID_OK) { - wxString fileName = nameDialog->GetValue(); - if (!fileName.IsEmpty()) { - std::string portName = (const char*) (fileName.mb_str()); - _tabsMgr->addActualDiagramComplexOutputPort(portName); + //========================================================================= + + void wxGUIEditorGraphicBBS::OnAddComplexBoxOutput(wxCommandEvent& event) + { + wxTextEntryDialog *nameDialog = new wxTextEntryDialog(this,wxT("Name of output port")); + if (nameDialog->ShowModal() == wxID_OK) + { + wxString fileName = nameDialog->GetValue(); + if(!fileName.IsEmpty()) + { + std::string portName=(const char*) (fileName.mb_str()); + _tabsMgr->addActualDiagramComplexOutputPort(portName); + } } } -} - -//========================================================================= - -void wxGUIEditorGraphicBBS::OnCopySelectedToComplexDiagram( - wxCommandEvent& event) { - _tabsMgr->copySelectedBBoxesToComplexDiagram(); -} - -void wxGUIEditorGraphicBBS::OnHelpBBeditor(wxCommandEvent& event) { - printf("wxGUIEditorGraphicBBS::OnHelpBBeditor ....not implemented..\n"); -} - -//========================================================================= -void wxGUIEditorGraphicBBS::OnCreatePackage(wxCommandEvent& event) { - - bbtkSystemTools::CreatePackage(); -} - -//========================================================================= -void wxGUIEditorGraphicBBS::OnCreateBlackBox(wxCommandEvent& event) { - bbtkSystemTools::CreateBlackBox(); -} -//========================================================================= -void wxGUIEditorGraphicBBS::OnPlugPackage(wxCommandEvent& event) { - printf("EED wxGUIEditorGraphicBBS::OnPlugPackage ... not implemented ..\n"); -} -//========================================================================= -void wxGUIEditorGraphicBBS::OnEditConfig(wxCommandEvent& event) { - printf("EED wxGUIEditorGraphicBBS::OnEditConfig ... not implemented ..\n"); -} -//========================================================================= -void wxGUIEditorGraphicBBS::OnShowHTMLDoc(wxCommandEvent& event) { - printf("EED wxGUIEditorGraphicBBS::OnShowHTMLDoc ... not implemented ..\n"); -} -//========================================================================= -void wxGUIEditorGraphicBBS::OnCreateIndex(wxCommandEvent& event) { - printf("EED wxGUIEditorGraphicBBS::OnCreateIndex ... not implemented ..\n"); -} - -//========================================================================= - -void wxGUIEditorGraphicBBS::OnExit(wxCommandEvent& event) { - Close(true); -} - -//========================================================================= - -} // EO namespace bbtk + + //========================================================================= + + void wxGUIEditorGraphicBBS::OnCopySelectedToComplexDiagram(wxCommandEvent& event) + { + _tabsMgr->copySelectedBBoxesToComplexDiagram(); + } + + + void wxGUIEditorGraphicBBS::OnHelpBBeditor(wxCommandEvent& event) + { + printf("wxGUIEditorGraphicBBS::OnHelpBBeditor ......\n"); + } + + + + //========================================================================= + + void wxGUIEditorGraphicBBS::OnExit(wxCommandEvent& event) + { + Close(true); + } + + + + //========================================================================= + +} // EO namespace bbtk // EOF