--- /dev/null
+/*=========================================================================
+
+ Program: bbtk
+ Module: $RCSfile: bbtkWxGUIConsole.cxx,v $
+ Language: C++
+ Date: $Date: 2008/03/20 09:51:29 $
+ Version: $Revision: 1.1 $
+
+ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
+ l'Image). All rights reserved. See Doc/License.txt or
+ http://www.creatis.insa-lyon.fr/Public/bbtk/License.html for details.
+
+ This software is distributed WITHOUT ANY WARRANTY; without even
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the above copyright notices for more information.
+
+=========================================================================*//**
+ * \brief Short description in one line
+ *
+ * Long description which
+ * can span multiple lines
+ */
+/**
+ * \file
+ * \brief
+ */
+/**
+ * \class bbtk::
+ * \brief
+ */
+
+
+#ifdef _USE_WXWIDGETS_
+
+#include <iostream>
+#include "bbtkWxGUIConsole.h"
+#include "bbtkWxBlackBox.h"
+#include "bbtkConfigurationFile.h"
+#include "bbtkWxStreamRedirector.h"
+
+
+#include "icons/cc_run.xpm"
+
+namespace bbtk
+{
+
+ enum
+ {
+ ID_Menu_Quit = 1,
+ ID_Menu_About,
+ ID_Menu_EditConfig,
+ ID_Menu_CreatePackage,
+ ID_Menu_CreateBlackBox,
+ ID_Menu_ShowImageGraph,
+ ID_Menu_CreateIndex,
+ ID_Button_Run
+ };
+
+
+ //================================================================
+ WxGUIConsole::WxGUIConsole( wxWindow *parent, wxString title, wxSize size)
+ : wxFrame((wxFrame *)parent, -1, title, wxDefaultPosition, size)
+ {
+// m_mgr = new wxAuiManager(this);
+ m_mgr.SetManagedWindow(this);
+
+ mInterpreter = new bbtk::Interpreter();
+ mInterpreter->SetUser(this);
+ mInterpreter->SetCommandLine(true);
+ //==============
+ // Menu
+ wxInitAllImageHandlers();
+
+ wxMenu *menuFile = new wxMenu;
+ 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_ShowImageGraph, _T("&Show last image graph") );
+ menuTools->Append( ID_Menu_CreateIndex, _T("&Generate index") );
+
+
+ wxMenuBar *menuBar = new wxMenuBar;
+ menuBar->Append( menuFile, _T("&File") );
+ menuBar->Append( menuTools, _T("&Tools") );
+ menuBar->Append( menuAbout, _T("About") );
+
+ SetMenuBar( menuBar );
+
+ CreateStatusBar();
+ SetStatusText( _T("Welcome to bbi !") );
+
+ //==============
+ // 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);
+
+ mWxGUIHtmlBrowser = new WxGUIHtmlBrowser(mwxPageHelp,
+ //EED wxSize(1200,0));
+ wxSize(200,0));
+
+ // mWxGUIHtmlBrowser->SetSize(wxSize(800,1000));
+ helpsizer->Add (mWxGUIHtmlBrowser,1, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM );
+// helpsizer->Add ( new wxButton(mwxPageHelp,-1,"perro"), 0, wxEXPAND );
+ wxBitmap bmp_run(cc_run_xpm);
+ mwxButtonRun = new wxBitmapButton( mwxPageHelp,ID_Button_Run,bmp_run);//_T("Run") );
+ helpsizer->Add( mwxButtonRun );
+
+
+ //==============
+ // Command page
+ mWxGUIOutputMessages = new WxGUIOutputMessages(mwxPageCommand);
+
+ mWxGUICommand = new WxGUICommand(mwxPageCommand,this);
+
+ mWxGUICommand->SetFocus();
+
+ cmdsizer->Add (mWxGUIOutputMessages, 1, wxALL | wxGROW, 10);
+ cmdsizer->Add (mWxGUICommand, 1, wxALL | wxGROW, 10);
+
+
+ // Creates and sets the parent window of all bbtk windows
+ wxWindow* top = new wxPanel(this,-1);//,_T("top"));
+ top->Hide();
+ Wx::SetTopWindow(top);
+
+
+ // Layout
+//EED SetSizer(sizer);
+
+ mwxNotebook->AddPage( mwxPageCommand, _T("Command"));
+ mwxNotebook->AddPage( mwxPageHelp, _T("Help"));
+ m_mgr.AddPane(mwxNotebook, wxAuiPaneInfo().Name(wxT("notebook_content")).CenterPane().PaneBorder(false));
+ m_mgr.Update();
+
+ SetAutoLayout(true);
+ Layout();
+// Refresh();
+// m_mgr.Update();
+ }
+ //================================================================
+
+ //================================================================
+ WxGUIConsole::~WxGUIConsole()
+ {
+ m_mgr.UnInit();
+ }
+ //================================================================
+
+
+ //================================================================
+ void WxGUIConsole::WxGUICommandEnter(const std::string& command)
+ {
+ std::string s("> ");
+ s += command + "\n";
+ mWxGUIOutputMessages->Print(s,wxRED);
+
+ if ( mInterpreter->InterpretLine( command ) ==
+ Interpreter::QUIT )
+ {
+ Close(true);
+ }
+ }
+ //================================================================
+
+ //================================================================
+ /// Runs the interpretation of a file
+ bool WxGUIConsole::InterpretFile( const std::string& filename)
+ {
+ if ( mInterpreter->InterpretFile(filename) ==
+ Interpreter::ERROR )
+ {
+ return false;
+ }
+ return true;
+ }
+ //================================================================
+
+ //================================================================
+ void WxGUIConsole::OnButtonRun(wxCommandEvent& WXUNUSED(event))
+ {
+ std::string filename = wx2std(mWxGUIHtmlBrowser->GetCurrentPage());
+ 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]=='.'))
+ {
+ SetStatusText(_T("Executing ")+filename);
+ I->InterpretFile(filename);
+ }
+ else
+ {
+ SetStatusText(_T("The current page is not a bbs file : cannot execute it"));
+ }
+
+ delete I;
+ }
+ //================================================================
+
+ //================================================================
+ void WxGUIConsole::OnMenuQuit(wxCommandEvent& WXUNUSED(event))
+ {
+ Close(true);
+ }
+ //================================================================
+
+
+ //================================================================
+ void WxGUIConsole::OnMenuAbout(wxCommandEvent& WXUNUSED(event))
+ {
+ m_mgr.Update();
+ Refresh();
+ wxMessageBox(_T(" bbi\nThe Black Box Toolkit interpreter\n(c) CREATIS-LRMN 2008"),
+ _T("About ..."), wxOK | wxICON_INFORMATION,
+ this);
+ }
+ //================================================================
+
+
+ //================================================================
+ void WxGUIConsole::OnMenuEditConfig(wxCommandEvent& WXUNUSED(event))
+ {
+ std::string commandStr;
+ std::string configFile = ConfigurationFile::GetInstance().Get_config_xml_full_path();
+#ifdef WIN32
+ commandStr = "notepad.exe ";
+#else
+ commandStr = "gedit ";
+#endif
+ commandStr = commandStr + configFile;
+ std::cout << "system: " << commandStr << std::endl;
+ system ( commandStr.c_str() );
+ }
+ //================================================================
+
+
+ //================================================================
+ void WxGUIConsole::OnMenuCreatePackage(wxCommandEvent& WXUNUSED(event))
+ {
+printf("EED WxGUIConsole::OnMenuCreatePackage 01 \n");
+ std::string command("toolsbbtk/appli/CreatePackage");
+printf("EED WxGUIConsole::OnMenuCreatePackage 02 \n");
+
+ bbtkMessage("Debug",1,"Executing : '"<<command<<"'"<<std::endl);
+printf("EED WxGUIConsole::OnMenuCreatePackage 03 \n");
+ Interpreter* I = new Interpreter;
+printf("EED WxGUIConsole::OnMenuCreatePackage 04 \n");
+ I->InterpretFile(command);
+printf("EED WxGUIConsole::OnMenuCreatePackage 05 \n");
+ delete I;
+printf("EED WxGUIConsole::OnMenuCreatePackage 06 \n");
+ }
+ //================================================================
+
+
+ //================================================================
+ void WxGUIConsole::OnMenuCreateBlackBox(wxCommandEvent& WXUNUSED(event))
+ {
+ std::string command("toolsbbtk/appli/CreateBlackBox");
+ bbtkMessage("Debug",1,"Executing : '"<<command<<"'"<<std::endl);
+ Interpreter* I = new Interpreter;
+ I->InterpretFile(command);
+ delete I;
+ }
+ //================================================================
+
+ //================================================================
+ void WxGUIConsole::OnMenuShowImageGraph(wxCommandEvent& WXUNUSED(event))
+ {
+ std::string default_temp_dir = ConfigurationFile::GetInstance().Get_default_temp_dir();
+
+#if defined(WIN32)
+ std::string strappli="start ";
+#else
+ std::string strappli="gnome-open ";
+#endif
+ std::string strcommand = strappli +default_temp_dir+"/temp_dir/workspace_workspacePrototype.png";
+ std::cout << "system: " << strcommand << std::endl;
+ system ( strcommand.c_str() );
+
+ }
+ //================================================================
+
+
+ //================================================================
+ void WxGUIConsole::OnMenuCreateIndex(wxCommandEvent& WXUNUSED(event))
+ {
+ 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 "<<filepath<<std::endl;
+//EED I->InterpretFile( filepath );
+
+ I->InterpretLine( "exec freeze");
+ I->InterpretLine( "include *");
+ 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");
+
+ delete I;
+ }
+ //================================================================
+
+
+ //================================================================
+ void WxGUIConsole::InterpreterUserViewHtmlPage(const std::string& page)
+ {
+ std::string s(page);
+ // std::cout << "WxGUIConsole::ShowHtmlPage('"<<page<<"')"<<std::endl;
+ if (mWxGUIHtmlBrowser->GoTo(s))
+ {
+//EED mwxNotebook->ChangeSelection(1);
+ mwxNotebook->SetSelection(1);
+ }
+ else
+ {
+ // std::cout << "ERROR html"<<std::endl;
+ }
+ }
+ //================================================================
+
+
+ //================================================================
+ BEGIN_EVENT_TABLE(WxGUIConsole, wxFrame)
+ EVT_MENU(ID_Menu_Quit, WxGUIConsole::OnMenuQuit)
+ EVT_MENU(ID_Menu_About, WxGUIConsole::OnMenuAbout)
+ EVT_MENU(ID_Menu_EditConfig, WxGUIConsole::OnMenuEditConfig)
+ EVT_MENU(ID_Menu_CreatePackage, WxGUIConsole::OnMenuCreatePackage)
+ EVT_MENU(ID_Menu_CreateBlackBox, WxGUIConsole::OnMenuCreateBlackBox)
+ EVT_MENU(ID_Menu_ShowImageGraph, WxGUIConsole::OnMenuShowImageGraph)
+ EVT_MENU(ID_Menu_CreateIndex, WxGUIConsole::OnMenuCreateIndex)
+ EVT_BUTTON(ID_Button_Run, WxGUIConsole::OnButtonRun )
+ END_EVENT_TABLE()
+ //================================================================
+
+} // namespace bbtk
+
+
+#endif //_USE_WXWIDGETS_