X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fsrc%2FbbtkWxGUIScriptingInterface.cxx;h=5678db43262b431f5e35ea8c09003f4996e12234;hb=0bd696babe5e4b50101ee8f454bcb5bdf06b163e;hp=669d9ac2cb0eb4bdff773e38de94ec95deb72e56;hpb=c777b23c18131be9bf4d2e4fc9b25daead080a38;p=bbtk.git diff --git a/kernel/src/bbtkWxGUIScriptingInterface.cxx b/kernel/src/bbtkWxGUIScriptingInterface.cxx index 669d9ac..5678db4 100644 --- a/kernel/src/bbtkWxGUIScriptingInterface.cxx +++ b/kernel/src/bbtkWxGUIScriptingInterface.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkWxGUIScriptingInterface.cxx,v $ Language: C++ - Date: $Date: 2008/06/26 06:50:05 $ - Version: $Revision: 1.12 $ + Date: $Date: 2008/10/06 10:30:10 $ + Version: $Revision: 1.21 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -37,9 +37,11 @@ #include "bbtkWxBlackBox.h" #include "bbtkConfigurationFile.h" #include "bbtkWxStreamRedirector.h" - +#include "bbtkUtilities.h" + +#include -#include "icons/cc_run.xpm" +//#include "icons/cc_run.xpm" namespace bbtk { @@ -64,30 +66,32 @@ namespace bbtk //================================================================ - WxGUIScriptingInterface::WxGUIScriptingInterface( wxWindow *parent, wxString title, wxSize size) - : wxFrame((wxFrame *)parent, -1, title, wxDefaultPosition, size) + WxGUIScriptingInterface::WxGUIScriptingInterface( wxWindow *parent ) + : wxFrame((wxFrame *)parent, -1, _T("bbStudio"), + wxDefaultPosition, wxSize(1200,800) ) { -// m_mgr = new wxAuiManager(this); - m_mgr.SetManagedWindow(this); - - mInterpreter = bbtk::Interpreter::New(); + // m_mgr = new wxAuiManager(this); + m_mgr.SetManagedWindow(this); + + mInterpreter = bbtk::Interpreter::New(); mInterpreter->SetUser(this); mInterpreter->SetCommandLine(true); mInterpreter->SetThrow(true); + //============== // Menu wxInitAllImageHandlers(); wxMenu *menuFile = new wxMenu; + menuFile->Append( ID_Menu_EditConfig, _T("Open bbtk &Config file") ); menuFile->Append( ID_Menu_Quit, _T("&Quit") ); wxMenu *menuAbout = new wxMenu; menuAbout->Append( ID_Menu_About, _T("&About...") ); wxMenu *menuTools = new wxMenu; - menuTools->Append( ID_Menu_EditConfig, _T("&Edit bbtk config") ); menuTools->Append( ID_Menu_CreatePackage, _T("Create &package") ); - menuTools->Append( ID_Menu_CreateBlackBox, _T("Create &blackbox") ); + menuTools->Append( ID_Menu_CreateBlackBox, _T("Create &black box") ); menuTools->Append( ID_Menu_ShowImageGraph, _T("&Show last image graph") ); menuTools->Append( ID_Menu_CreateIndex, _T("&Generate index") ); @@ -101,10 +105,10 @@ namespace bbtk menuWindows->AppendCheckItem(ID_Menu_Windows_Command, _T("Show 'command' panel") )->Check(); menuWindows->AppendSeparator(); - menuWindows->Append( ID_Menu_Windows_PackageBrowser, _T("Show Package &Browser") ); + menuWindows->Append( ID_Menu_Windows_PackageBrowser, _T("Launch Package &Browser") ); - menuWindows->AppendSeparator(); - menuWindows->Append ( ID_Menu_Windows_Save, _T("Save interface configuration")); + // menuWindows->AppendSeparator(); + // menuWindows->Append ( ID_Menu_Windows_Save, _T("Save interface configuration")); wxMenu *menuOptions = new wxMenu; mwxMenuItemReset = menuOptions->AppendCheckItem(-1, @@ -120,21 +124,18 @@ namespace bbtk SetMenuBar( menuBar ); + //=== + // Status bar CreateStatusBar(); - SetStatusText( _T("Welcome to bbi !") ); + SetStatusText( _T("Welcome to bbStudio !") ); - // + //=== + // Panes (Files, Messages, Help, Command) mWxGUITextEditor = new WxGUITextEditor(this,this); mWxGUITextEditor->SetFileNameFilter("*.bbs"); - mWxGUIHtmlBrowser = new WxGUIHtmlBrowser(this,wxSize(200,0),this); + mWxGUIHtmlBrowser = new WxGUIHtmlBrowser(this,wxSize(200,0),this); - - /* - wxBitmap bmp_run(cc_run_xpm); - mwxButtonRun = new wxBitmapButton( this, ID_Button_Run,bmp_run);//_T("Run") ); - */ - mWxGUIOutputMessages = new WxGUIOutputMessages(this); mWxGUICommand = new WxGUICommand(this,this); @@ -142,6 +143,7 @@ namespace bbtk mWxGUICommand->SetFocus(); +#if NOTEBOOK mwxNotebook = new wxAuiNotebook(this, -1, @@ -174,8 +176,8 @@ namespace bbtk .Center() // .MinSize(wxSize(100,100)) ); +#else - /* // m_mgr.AddPane(mWxGUITextEditor, wxAuiPaneInfo().Name(wxT("editor_content")) @@ -192,7 +194,8 @@ namespace bbtk .MinimizeButton(true) .MaximizeButton(true) .Right() - .MinSize(wxSize(200,100)) + .Layer(2) + .MinSize(wxSize(400,100)) ); m_mgr.AddPane(mWxGUIOutputMessages, @@ -209,33 +212,43 @@ namespace bbtk .MinimizeButton(true) .MaximizeButton(true) .Bottom() - .Position(1) + .Layer(1) .MinSize(wxSize(100,100)) ); - */ - // m_mgr.AddPane(mwxButtonRun, - // wxAuiPaneInfo().Name(wxT("button_run_content"))); +#endif - // Creates the parent window of all bbtk windows as a child of this - Wx::CreateTopWindow(this); + // parent window of all bbtk windows will be a child of this + Wx::SetTopWindowParent(this); // Add the method OnWxSignal as a Wx::Signal observer //bbtkAddWxSignalObserver(WxGUIPackageBrowser2Window::OnWxSignal); -//.PaneBorder(false)); - m_mgr.Update(); + //.PaneBorder(false)); + // Load the interface appearance saved on last closing + LoadPerspective(); + + // Done in LoadPerspective + // m_mgr.Update(); SetAutoLayout(true); Layout(); - mwxNotebook->SetSelection(1); + // mwxNotebook->SetSelection(1); mWxGUIHtmlBrowser->GoHome(); // Refresh(); -// m_mgr.Update(); + m_mgr.Update(); + // LoadPerspective(); + + + wxTipWindow* tip = new wxTipWindow(this, + _T("\n Welcome to bbStudio !\n\n To run a demo or example:\n 1. click on the 'Demos' or 'Examples' link\n 2. select a demo or example\n 3. click on the '[source]' link : the source file is loaded in bbStudio\n 4. click on the 'Run' button (the arrow at the bottom right of the source file) \n"),1000); + tip->CenterOnParent(); + tip->Show(); } //================================================================ //================================================================ WxGUIScriptingInterface::~WxGUIScriptingInterface() { + SavePerspective(); m_mgr.UnInit(); } //================================================================ @@ -254,7 +267,7 @@ namespace bbtk } \ catch (InterpreterError e) \ { \ - std::cerr << "* IERROR : "<GetCurrentPage()->GetText(); try { - std::cout << "RUN"<IsChecked()) WxGUICommandEnter("reset"); mInterpreter->InterpretBuffer(buf); - std::cout << "EO RUN"<IncludeAll(); - mwxNotebook->AddPage(browser,_T("Package Browser"),true); + wxBusyCursor wait; + WxGUIPackageBrowser2Window *helpbrowser = new + WxGUIPackageBrowser2Window(this,_T("Package Browser"), wxSize(600,600) ); + helpbrowser->Show(); + + /* + wxBusyCursor wait; + WxGUIPackageBrowser2 *browser = new WxGUIPackageBrowser2(this); + browser->IncludeAll(); + */ +#if NOTEBOOK + // mwxNotebook->AddPage(browser,_T("Package Browser"),true); +#else + /* + m_mgr.AddPane(browser, + wxAuiPaneInfo().Name(wxT("package_brower")) + .Caption(wxT("Package browser")) + .MinimizeButton(true) + .MaximizeButton(true) + .Bottom() + .Position(1) + .MinSize(wxSize(100,100)) + ); + */ +#endif } //================================================================ @@ -407,18 +434,30 @@ namespace bbtk //================================================================ void WxGUIScriptingInterface::OnMenuCreateIndex(wxCommandEvent& WXUNUSED(event)) { + /* std::string doc_path = ConfigurationFile::GetInstance().Get_doc_path(); std::string filepath = doc_path+"/bbdoc/make-index.bbs"; Interpreter::Pointer I = Interpreter::New(); + I->InterpretLine( "config"); + I->InterpretLine( "message echo 2"); I->InterpretLine( "exec freeze"); I->InterpretLine( "include *"); + I->InterpretLine( "help packages"); I->InterpretLine( "index "+doc_path+"/bbdoc/index-alpha.html Initials"); I->InterpretLine( "index "+doc_path+"/bbdoc/index-package.html Packages"); I->InterpretLine( "index "+doc_path+"/bbdoc/index-category.html Categories"); I->InterpretLine( "index "+doc_path+"/bbdoc/index-adaptors.html Adaptors"); - + */ + std::string command("cd \""); + command += ConfigurationFile::GetInstance().Get_doc_path(); + command += ConfigurationFile::GetInstance().Get_file_separator() + "bbdoc\" && \""; + command += ConfigurationFile::GetInstance().Get_bin_path(); + command += ConfigurationFile::GetInstance().Get_file_separator() + "bbi\" -N -q ."; + command += ConfigurationFile::GetInstance().Get_file_separator() + "make-index.bbs"; + bbtkMessage("debug",1,"Executing system command '"<Open(target); +#if NOTEBOOK mwxNotebook->SetSelection(0); +#endif mWxGUITextEditor->SetFocus(); return false; } @@ -503,17 +544,75 @@ namespace bbtk //================================================================ void WxGUIScriptingInterface::OnMenuWindowsSave( wxCommandEvent& WXUNUSED(event)) { - // TO DO : Save it into ConfigurationFile - // m_mgr.SavePerspective(); + SavePerspective(); + } + //================================================================ + + //================================================================ + void WxGUIScriptingInterface::SavePerspective() + { + // std::cout << "Saving configuration..."<> conf; + + // int x,y; + // f >> x >> y ; + + int w,h; + f >> w >> h ; + + f.close(); + + // std::cout << conf << std::endl; + + // Move(x,y); + SetSize(w,h); + m_mgr.LoadPerspective(std2wx(conf)); + } + else + { + m_mgr.Update(); + } + } + //================================================================ //================================================================ void WxGUIScriptingInterface::OnPaneClose(wxAuiManagerEvent& evt) { std::cout << "Closing panel '"<name<<"'"<