X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fsrc%2FbbtkWxGUIScriptingInterface.cxx;h=c311ee2aaa303367d4b2a0c413eed65ce129db91;hb=6ad7245d4cf6a38427aceed7e5cd1a6664bceec1;hp=245e1f2a927ebfcb3258f1c350b2090e3b66b68f;hpb=667c0cc301ab18f7a861b6947990b51aa36df999;p=bbtk.git diff --git a/kernel/src/bbtkWxGUIScriptingInterface.cxx b/kernel/src/bbtkWxGUIScriptingInterface.cxx index 245e1f2..c311ee2 100644 --- a/kernel/src/bbtkWxGUIScriptingInterface.cxx +++ b/kernel/src/bbtkWxGUIScriptingInterface.cxx @@ -2,8 +2,8 @@ Program: bbtk Module: $RCSfile: bbtkWxGUIScriptingInterface.cxx,v $ Language: C++ - Date: $Date: 2008/10/21 14:38:31 $ - Version: $Revision: 1.31 $ + Date: $Date: 2009/12/08 14:10:36 $ + Version: $Revision: 1.40 $ =========================================================================*/ /* --------------------------------------------------------------------- @@ -55,6 +55,8 @@ #include "bbtkUtilities.h" #include +#include + //#include "icons/cc_run.xpm" @@ -88,14 +90,14 @@ namespace bbtk : wxFrame((wxFrame *)parent, -1, _T("bbStudio"), wxDefaultPosition, wxSize(1200,800) ) { - // m_mgr = new wxAuiManager(this); m_mgr.SetManagedWindow(this); mInterpreter = bbtk::Interpreter::New(); mInterpreter->SetUser(this); - mInterpreter->SetCommandLine(true); + mInterpreter->SetCommandLine(true); mInterpreter->SetThrow(true); - + // mInterpreter->AddBreakObserver + //boost::bind( &WxGUIScriptingInterface::InterpreterUserOnBreak, this )); //============== // Menu wxInitAllImageHandlers(); @@ -229,6 +231,7 @@ namespace bbtk .Bottom() .MinSize(wxSize(100,100)) ); + m_mgr.AddPane(mWxGUICommand, wxAuiPaneInfo().Name(wxT("command_content")) .Caption(wxT("Command")) @@ -241,8 +244,10 @@ namespace bbtk #endif // parent window of all bbtk windows will be a child of this - Wx::SetTopWindowParent(this); - // Add the method OnWxSignal as a Wx::Signal observer + // Wx::SetTopWindowParent(this); + Wx::SetTopWindow(this); + // Wx::SetAutoDestroyTopWindow(false); + // Add the method OnWxSignal as a Wx::Signal observer //bbtkAddWxSignalObserver(WxGUIPackageBrowser2Window::OnWxSignal); //.PaneBorder(false)); @@ -260,46 +265,122 @@ namespace bbtk m_mgr.Update(); // LoadPerspective(); + mBreaked = false; + + wxBitmap bitmap; + wxSplashScreen* splash; + long style = wxSPLASH_CENTRE_ON_SCREEN | wxSPLASH_TIMEOUT; + if (ConfigurationFile::GetInstance().DotBbtkIsNew()) + style = wxSPLASH_CENTRE_ON_SCREEN | wxSPLASH_NO_TIMEOUT; + std::string splash_file = ConfigurationFile::GetInstance().Get_data_path(); + splash_file += "/kernel/icons/bbStudioSplashScreen.png"; + + if (bitmap.LoadFile(std2wx(splash_file),wxBITMAP_TYPE_PNG)) + splash = + new wxSplashScreen(bitmap, + style, + 1000, 0, -1, wxDefaultPosition, wxDefaultSize, + wxSIMPLE_BORDER|wxSTAY_ON_TOP); + + + if (ConfigurationFile::GetInstance().DotBbtkIsNew()) + { + + DoRegeneratePackageDoc("-a"); + DoRegenerateBoxesLists(); + + /* + 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(); + */ + if (splash) splash->Destroy(); + } - 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() { + bbtkDebugMessage("widget",9,"bbStudio::~bbStudio()"<Close(); + } + this->Destroy(); + } + //================================================================ + + //================================================================ void WxGUIScriptingInterface::Open(const std::string& filename) { mWxGUITextEditor->Open(filename); } //================================================================ - -#define CATCH_MACRO \ - catch (QuitException e) \ + /* + catch (BreakException e) \ { \ - std::cout << "* quit exception caught"< 0) { \ - std::cerr << "* Exception thrown : "< 0) { \ + std::cerr << "* Exception thrown : "<GetCurrentPage()->SaveFile(filename); + + std::string command = "\""; + command += ConfigurationFile::GetInstance().Get_bin_path(); +#ifdef MACOSX + command += separator + "bbi.app/Contents/MacOS/bbi\" "; +#else + command += separator + "bbi\" "; +#endif + command += "\""+filename + "\""; + command += " & "; + + printf ("EED WxGUIScriptingInterface::WxGUITextEditorRunBBI %s \n" , command.c_str() ); + system( command.c_str() ); + } + //================================================================ + + //================================================================ void WxGUIScriptingInterface::WxGUITextEditorRun() { @@ -338,9 +465,16 @@ namespace bbtk (*buf) << mWxGUITextEditor->GetCurrentPage()->GetText(); try { - // std::cout << "RUN"<IsChecked()) WxGUICommandEnter("reset"); - mInterpreter->InterpretBuffer(buf); + if (!mBreaked) + { + if (mwxMenuItemReset->IsChecked()) WxGUICommandEnter("reset"); + mInterpreter->InterpretBuffer(buf); + } + else + { + mBreaked = false; + mInterpreter->InterpretCurrentStreams(); + } // std::cout << "EO RUN"<3) && (target[s-1]=='s') - && (target[s-2]=='b') - && (target[s-3]=='b') - && (target[s-4]=='.')) - { - mWxGUITextEditor->Open(target); -#if NOTEBOOK - mwxNotebook->SetSelection(0); -#endif - mWxGUITextEditor->SetFocus(); - return false; - } + && (target[s-2]=='b') + && (target[s-3]=='b') + && (target[s-4]=='.')) + { + mWxGUITextEditor->Open(target); + #if NOTEBOOK + mwxNotebook->SetSelection(0); + #endif + mWxGUITextEditor->SetFocus(); + return false; + } + + if ((s>3) && (target[s-1]=='f') + && (target[s-2]=='d') + && (target[s-3]=='p') + && (target[s-4]=='.')) + { + + // Open pdf in linux + // gnome-open target + + // Open pdf in macOS + + // Open pdf in windows + int size=target.size(); + int pos=target.rfind("\\"); + std::string commandStart("start "); + std::string commandPath("/D \""+target.substr(0,pos) +"\""); + std::string commandPDF( target.substr(pos+1,size-pos+1) ); + + printf("EED WxGUIScriptingInterface::WxGUIHtmlBrowserUserOnLinkClicked cc %s \n",commandPath.c_str() ); + // cleanning path + while (commandPath.rfind("\\\\")!=-1 ) + { + commandPath.erase( commandPath.rfind("\\\\") , 1 ); + printf("EED WxGUIScriptingInterface::WxGUIHtmlBrowserUserOnLinkClicked cc %s \n",commandPath.c_str() ); + } + + std::string command = commandStart+commandPath+" "+commandPDF; + printf("EED WxGUIScriptingInterface::WxGUIHtmlBrowserUserOnLinkClicked BB %s \n",command.c_str() ); + system( command.c_str() ); + return false; + } return true; } //================================================================ @@ -749,6 +970,7 @@ namespace bbtk //================================================================ BEGIN_EVENT_TABLE(WxGUIScriptingInterface, wxFrame) + EVT_CLOSE( WxGUIScriptingInterface::OnClose) EVT_MENU(ID_Menu_Quit, WxGUIScriptingInterface::OnMenuQuit) EVT_MENU(ID_Menu_About, WxGUIScriptingInterface::OnMenuAbout) EVT_MENU(ID_Menu_EditConfig, WxGUIScriptingInterface::OnMenuEditConfig)