X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fsrc%2FbbtkWxGUIScriptingInterface.cxx;h=77a0d3ae2748adba01919358d4195222e070abe4;hb=f993478d7df1d9688c4ab93c617688c84cf2d424;hp=9952d89991724e99721f2e112e581a30a7fded09;hpb=51a96595b724eba747e60bc98251886d049c68b6;p=bbtk.git diff --git a/kernel/src/bbtkWxGUIScriptingInterface.cxx b/kernel/src/bbtkWxGUIScriptingInterface.cxx index 9952d89..77a0d3a 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/03/21 11:46:41 $ - Version: $Revision: 1.1 $ + Date: $Date: 2008/05/14 12:32:26 $ + Version: $Revision: 1.9 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -53,7 +53,12 @@ namespace bbtk ID_Menu_CreateBlackBox, ID_Menu_ShowImageGraph, ID_Menu_CreateIndex, - ID_Button_Run + ID_Menu_Windows_Files, + ID_Menu_Windows_Help, + ID_Menu_Windows_Messages, + ID_Menu_Windows_Command, + ID_Menu_Windows_Save + // ID_Button_Run }; @@ -64,9 +69,10 @@ namespace bbtk // m_mgr = new wxAuiManager(this); m_mgr.SetManagedWindow(this); - mInterpreter = new bbtk::Interpreter(); + mInterpreter = bbtk::Interpreter::New(); mInterpreter->SetUser(this); mInterpreter->SetCommandLine(true); + mInterpreter->SetThrow(true); //============== // Menu wxInitAllImageHandlers(); @@ -84,10 +90,29 @@ namespace bbtk menuTools->Append( ID_Menu_ShowImageGraph, _T("&Show last image graph") ); menuTools->Append( ID_Menu_CreateIndex, _T("&Generate index") ); + wxMenu *menuWindows = new wxMenu; + menuWindows->AppendCheckItem(ID_Menu_Windows_Files, + _T("Show 'files' panel") )->Check(); + menuWindows->AppendCheckItem(ID_Menu_Windows_Help, + _T("Show 'help' panel") )->Check(); + menuWindows->AppendCheckItem(ID_Menu_Windows_Messages, + _T("Show 'messages' panel") )->Check(); + menuWindows->AppendCheckItem(ID_Menu_Windows_Command, + _T("Show 'command' panel") )->Check(); + menuWindows->AppendSeparator(); + menuWindows->Append ( ID_Menu_Windows_Save, _T("Save interface configuration")); + + wxMenu *menuOptions = new wxMenu; + mwxMenuItemReset = menuOptions->AppendCheckItem(-1, + _T("Reset before running") ); + mwxMenuItemReset->Check(); + wxMenuBar *menuBar = new wxMenuBar; menuBar->Append( menuFile, _T("&File") ); menuBar->Append( menuTools, _T("&Tools") ); + menuBar->Append( menuOptions, _T("&Options") ); + menuBar->Append( menuWindows, _T("&Windows") ); menuBar->Append( menuAbout, _T("About") ); SetMenuBar( menuBar ); @@ -95,108 +120,109 @@ namespace bbtk CreateStatusBar(); SetStatusText( _T("Welcome to bbi !") ); - - /* - m_mgr.AddPane(CreateSizeReportCtrl(), wxAuiPaneInfo(). - Name(wxT("test4")).Caption(wxT("Pane Caption")). - Left()); - */ - - //============== - // Notebook - - // wxFlexGridSizer *sizer = new wxFlexGridSizer(1); - -//EED wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL); -// mwxNotebook = new wxNotebook(this,-1,wxDefaultPosition, wxDefaultSize, 0); -/* - mwxNotebook = new wxAuiNotebook(this, - -1, - wxPoint(0, 0), - wxSize(500,500), - wxAUI_NB_TAB_SPLIT | wxAUI_NB_TAB_EXTERNAL_MOVE | wxNO_BORDER); - - mwxPageCommand = new wxPanel(mwxNotebook,-1); - mwxPageHelp = new wxPanel(mwxNotebook,-1); - - - wxBoxSizer *cmdsizer = new wxBoxSizer(wxVERTICAL); - - mwxPageCommand->SetAutoLayout(true); - mwxPageCommand->SetSizer(cmdsizer); - cmdsizer->Fit(mwxPageCommand); - cmdsizer->SetSizeHints(mwxPageCommand); - - wxBoxSizer *helpsizer = new wxBoxSizer(wxVERTICAL); - - mwxPageHelp->SetAutoLayout(true); - mwxPageHelp->SetSizer(helpsizer); - helpsizer->Fit(mwxPageHelp); - helpsizer->SetSizeHints(mwxPageHelp); -*/ - mWxGUITextEditor = new WxGUITextEditor(this); + // + mWxGUITextEditor = new WxGUITextEditor(this,this); mWxGUITextEditor->SetFileNameFilter("*.bbs"); - mWxGUIHtmlBrowser = new WxGUIHtmlBrowser(this, //mwxPageHelp, - //EED wxSize(1200,0)); - wxSize(200,0)); - - // mWxGUIHtmlBrowser->SetSize(wxSize(800,1000)); - // helpsizer->Add (mWxGUIHtmlBrowser,1, wxGROW|wxLEFT|wxRIGHT|wxTOP, 5 ); - // helpsizer->Add ( new wxButton(mwxPageHelp,-1,"perro"), 0, wxEXPAND ); - - wxBitmap bmp_run(cc_run_xpm); - mwxButtonRun = new wxBitmapButton( this, ID_Button_Run,bmp_run);//_T("Run") ); - // helpsizer->Add( mwxButtonRun, 0, wxALL, 5 ); + 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") ); + */ - //============== - // Command page mWxGUIOutputMessages = new WxGUIOutputMessages(this); mWxGUICommand = new WxGUICommand(this,this); - // mWxGUICommand->SetFocus(); + mWxGUICommand->SetFocus(); + + + + mwxNotebook = new wxAuiNotebook(this, + -1, + wxPoint(0, 0), + wxSize(500,500), + wxAUI_NB_TAB_SPLIT + | wxAUI_NB_TAB_MOVE + | wxAUI_NB_TAB_EXTERNAL_MOVE + //| wxAUI_NB_WINDOWLIST_BUTTON + //|wxAUI_NB_SCROLL_BUTTONS + // | wxAUI_NB_CLOSE_BUTTON + //| wxAUI_NB_CLOSE_ON_ACTIVE_TAB + //| wxAUI_NB_CLOSE_ON_ALL_TABS + | wxNO_BORDER); + - // cmdsizer->Add (mWxGUIOutputMessages, 1, wxALL | wxGROW, 5); - // cmdsizer->Add (mWxGUICommand, 0, wxALL | wxGROW, 5); + mwxNotebook->AddPage(mWxGUITextEditor,_T("Files"),true); + mwxNotebook->AddPage(mWxGUIHtmlBrowser,_T("Help"),true); - - // Creates and sets the parent window of all bbtk windows - wxWindow* top = new wxPanel(this,-1);//,_T("top")); - top->Hide(); - Wx::SetTopWindow(top); - + mwxNotebook->AddPage(mWxGUIOutputMessages,_T("Messages"),true); + + mwxNotebook->AddPage(mWxGUICommand,_T("Command"),true); - // Layout -//EED SetSizer(sizer); -/* - mwxNotebook->AddPage( mwxPageCommand, _T("Command")); - mwxNotebook->AddPage( mwxPageHelp, _T("Help")); -*/ + m_mgr.AddPane(mwxNotebook, + wxAuiPaneInfo().Name(wxT("nb")) + .CaptionVisible(false) + .MinimizeButton(false) + .MaximizeButton(false) + .Center() + // .MinSize(wxSize(100,100)) + ); + /* + // m_mgr.AddPane(mWxGUITextEditor, wxAuiPaneInfo().Name(wxT("editor_content")) - .Top()); + .Caption(wxT("Files")) + .MinimizeButton(true) + .MaximizeButton(true) + .Center() + .MinSize(wxSize(100,100)) + ); + + m_mgr.AddPane(mWxGUIHtmlBrowser, + wxAuiPaneInfo().Name(wxT("browser_content")) + .Caption(wxT("Help")) + .MinimizeButton(true) + .MaximizeButton(true) + .Right() + .MinSize(wxSize(200,100)) + ); + m_mgr.AddPane(mWxGUIOutputMessages, wxAuiPaneInfo().Name(wxT("messages_content")) .Caption(wxT("Messages")) - .Center()); - m_mgr.AddPane(mWxGUIHtmlBrowser, - wxAuiPaneInfo().Name(wxT("browser_content")) - .Right()); + .MinimizeButton(true) + .MaximizeButton(true) + .Bottom() + .MinSize(wxSize(100,100)) + ); m_mgr.AddPane(mWxGUICommand, wxAuiPaneInfo().Name(wxT("command_content")) - .Bottom()); - m_mgr.AddPane(mwxButtonRun, - wxAuiPaneInfo().Name(wxT("button_run_content"))); + .Caption(wxT("Command")) + .MinimizeButton(true) + .MaximizeButton(true) + .Bottom() + .Position(1) + .MinSize(wxSize(100,100)) + ); + */ + // m_mgr.AddPane(mwxButtonRun, + // wxAuiPaneInfo().Name(wxT("button_run_content"))); + // Creates the parent window of all bbtk windows as a child of this + Wx::CreateTopWindow(this); + // Add the method OnWxSignal as a Wx::Signal observer + //bbtkAddWxSignalObserver(WxGUIPackageBrowser2Window::OnWxSignal); //.PaneBorder(false)); m_mgr.Update(); SetAutoLayout(true); Layout(); + mwxNotebook->SetSelection(1); + mWxGUIHtmlBrowser->GoHome(); // Refresh(); // m_mgr.Update(); } @@ -215,69 +241,76 @@ namespace bbtk mWxGUITextEditor->Open(filename); } //================================================================ - + +#define CATCH_MACRO \ + catch (QuitException e) \ + { \ + std::cout << "* quit exception caught"< 0) { \ + std::cerr << "* Exception thrown : "< "); s += command + "\n"; mWxGUIOutputMessages->Print(s,wxRED); - - if ( mInterpreter->InterpretLine( command ) == - Interpreter::QUIT ) + + try { - Close(true); + mInterpreter->InterpretLine( command ); } + CATCH_MACRO; } //================================================================ - + //================================================================ /// Runs the interpretation of a file bool WxGUIScriptingInterface::InterpretFile( const std::string& filename) { - if ( mInterpreter->InterpretFile(filename) == - Interpreter::ERROR ) + try { - return false; + mInterpreter->InterpretFile(filename); } + CATCH_MACRO; return true; } //================================================================ //================================================================ - void WxGUIScriptingInterface::OnButtonRun(wxCommandEvent& WXUNUSED(event)) + void WxGUIScriptingInterface::WxGUITextEditorRun() { - wxString per = m_mgr.SavePerspective(); - std::cout << per<< std::endl; - -// wxString temp = mWxGUIHtmlBrowser->GetCurrentPage(); - std::string filename = mWxGUIHtmlBrowser->GetCurrentPage();//wx2std(temp); - size_t s = filename.length(); - - Interpreter* I = new Interpreter; - - if ((s>3) && (filename[s-1]=='s') - && (filename[s-2]=='b') - && (filename[s-3]=='b') - && (filename[s-4]=='.')) + // wxString temp = mWxGUIHtmlBrowser->GetCurrentPage(); + std::stringstream* buf = new std::stringstream; + (*buf) << mWxGUITextEditor->GetCurrentPage()->GetText(); + try { - std::string tmp("Executing "); - tmp += filename; - SetStatusText(std2wx(tmp)); - I->InterpretFile(filename); + std::cout << "RUN"<IsChecked()) WxGUICommandEnter("reset"); + mInterpreter->InterpretBuffer(buf); + std::cout << "EO RUN"<CloseAllPages()) return; Close(true); } //================================================================ @@ -306,7 +339,7 @@ namespace bbtk commandStr = "gedit "; #endif commandStr = commandStr + configFile; - std::cout << "system: " << commandStr << std::endl; + // std::cout << "system: " << commandStr << std::endl; system ( commandStr.c_str() ); } //================================================================ @@ -315,18 +348,13 @@ namespace bbtk //================================================================ void WxGUIScriptingInterface::OnMenuCreatePackage(wxCommandEvent& WXUNUSED(event)) { -printf("EED WxGUIScriptingInterface::OnMenuCreatePackage 01 \n"); - std::string command("toolsbbtk/appli/CreatePackage"); -printf("EED WxGUIScriptingInterface::OnMenuCreatePackage 02 \n"); + std::string command("toolsbbtk/appli/CreatePackage"); bbtkMessage("Debug",1,"Executing : '"<InterpretFile(command); -printf("EED WxGUIScriptingInterface::OnMenuCreatePackage 05 \n"); - delete I; -printf("EED WxGUIScriptingInterface::OnMenuCreatePackage 06 \n"); + } //================================================================ @@ -336,9 +364,9 @@ printf("EED WxGUIScriptingInterface::OnMenuCreatePackage 06 \n"); { std::string command("toolsbbtk/appli/CreateBlackBox"); bbtkMessage("Debug",1,"Executing : '"<InterpretFile(command); - delete I; } //================================================================ @@ -353,7 +381,7 @@ printf("EED WxGUIScriptingInterface::OnMenuCreatePackage 06 \n"); std::string strappli="gnome-open "; #endif std::string strcommand = strappli +default_temp_dir+"/temp_dir/workspace_workspacePrototype.png"; - std::cout << "system: " << strcommand << std::endl; + // std::cout << "system: " << strcommand << std::endl; system ( strcommand.c_str() ); } @@ -365,10 +393,8 @@ printf("EED WxGUIScriptingInterface::OnMenuCreatePackage 06 \n"); { std::string doc_path = ConfigurationFile::GetInstance().Get_doc_path(); std::string filepath = doc_path+"/bbdoc/make-index.bbs"; - Interpreter* I = new Interpreter; -//EED std::cout << "bbi: include "<InterpretFile( filepath ); + Interpreter::Pointer I = Interpreter::New(); I->InterpretLine( "exec freeze"); I->InterpretLine( "include *"); @@ -377,7 +403,6 @@ printf("EED WxGUIScriptingInterface::OnMenuCreatePackage 06 \n"); I->InterpretLine( "index "+doc_path+"/bbdoc/index-category.html Categories"); I->InterpretLine( "index "+doc_path+"/bbdoc/index-adaptors.html Adaptors"); - delete I; } //================================================================ @@ -390,7 +415,7 @@ printf("EED WxGUIScriptingInterface::OnMenuCreatePackage 06 \n"); if (mWxGUIHtmlBrowser->GoTo(s)) { //EED mwxNotebook->ChangeSelection(1); - mwxNotebook->SetSelection(1); +// mwxNotebook->SetSelection(1); } else { @@ -399,7 +424,84 @@ printf("EED WxGUIScriptingInterface::OnMenuCreatePackage 06 \n"); } //================================================================ + //================================================================ + bool WxGUIScriptingInterface::WxGUIHtmlBrowserUserOnLinkClicked(const std::string& target) + { + size_t s = target.length(); + if ((s>3) && (target[s-1]=='s') + && (target[s-2]=='b') + && (target[s-3]=='b') + && (target[s-4]=='.')) + { + mWxGUITextEditor->Open(target); + mwxNotebook->SetSelection(0); + mWxGUITextEditor->SetFocus(); + return false; + } + return true; + } + //================================================================ + + void WxGUIScriptingInterface::OnMenuWindowsCheck( wxCommandEvent& event, + wxWindow* w) + { + bool checked = event.IsChecked(); + bool shown = m_mgr.GetPane(w).IsShown(); + // std::cout << "checked = "<name<<"'"<