]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkWxConsole.cxx
Create Black Box bbs + .bat + Bug interface Windows
[bbtk.git] / kernel / src / bbtkWxConsole.cxx
index 00267a92dff8b0f3d0f29f332a2d1f104ad26745..11b9f56bd12e6bd9643bd7157f9f846315531aac 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkWxConsole.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/03/07 11:37:48 $
-  Version:   $Revision: 1.8 $
+  Date:      $Date: 2008/03/17 07:04:08 $
+  Version:   $Revision: 1.14 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -40,7 +40,6 @@
 namespace bbtk
 {
 
-
 // On Windows when compiling a dll, wx prevents the compilation
 // of the class wxStreamToTextRedirector (why ? it is a nightmare...)
 // The blocking symbol is wxHAS_TEXT_WINDOW_STREAM.
@@ -159,6 +158,8 @@ namespace bbtk
   WxConsole::WxConsole( 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->SetWxConsole(this);
@@ -174,9 +175,11 @@ namespace bbtk
     menuAbout->Append( ID_Menu_About, _T("&About...") );
 
     wxMenu *menuTools = new wxMenu;
-    menuTools->Append( ID_Menu_CreatePackage, _T("&Create package") );
-    menuTools->Append( ID_Menu_CreateBlackBox, _T("&Create blackbox") );
+    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;
@@ -197,23 +200,14 @@ namespace bbtk
 //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);    
-    mwxNotebook->AddPage( mwxPageCommand, _T("Command"));
+                                    -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);    
-    mwxNotebook->AddPage( mwxPageHelp, _T("Help"));
     
-
-
-//EED    sizer->Add ( mwxNotebook, 1, wxEXPAND /*| wxALIGN_BOTTOM*/ );
-    wxAuiManager *m_mgr = new wxAuiManager(this);
-       m_mgr->AddPane(mwxNotebook, wxAuiPaneInfo().Name(wxT("notebook_content")).CenterPane().PaneBorder(false)); 
-    m_mgr->Update();
     
     wxBoxSizer *cmdsizer = new wxBoxSizer(wxVERTICAL);
     
@@ -242,17 +236,17 @@ namespace bbtk
 
     mwxTextHistory = 
       new wxTextCtrl(mwxPageCommand,
-                    ID_Text_History,
-                    _T(""),wxDefaultPosition,
-                    wxDefaultSize, //HistorySize,
-                    wxTE_READONLY |
-                    wxTE_MULTILINE );
+                     ID_Text_History,
+                     _T(""),wxDefaultPosition,
+                     wxDefaultSize, //HistorySize,
+                     wxTE_READONLY |
+                     wxTE_MULTILINE );
  
     wxFont* FixedFont = new wxFont(10,
-                                  wxFONTFAMILY_MODERN,
-                                  wxFONTSTYLE_NORMAL,
-                                  wxFONTWEIGHT_NORMAL,
-                                  false);
+                                   wxFONTFAMILY_MODERN,
+                                   wxFONTSTYLE_NORMAL,
+                                   wxFONTWEIGHT_NORMAL,
+                                   false);
 
    mwxTextHistoryAttr = new wxTextAttr;
    mwxTextHistoryAttr->SetFont(*FixedFont);
@@ -274,10 +268,11 @@ namespace bbtk
    mwxTextCommand = 
      new wxComboBox(mwxPageCommand,
                    ID_Text_Command,
-                   _T("")
-//                 wxDefaultPosition,
-//                 wxDefaultSize,
-//                 wxTE_PROCESS_ENTER
+                   _T(""),
+                   wxDefaultPosition,
+                   wxDefaultSize,
+                       0, NULL,
+                   wxTE_PROCESS_ENTER
 //                 | wxTE_PROCESS_TAB 
 //                 | wxWANTS_CHARS 
 //                 //|  wxTAB_TRAVERSAL
@@ -311,10 +306,10 @@ namespace bbtk
     // Events connection
     // COMMAND
     // ENTER
-    /*
     Connect( mwxTextCommand->GetId(),
             wxEVT_COMMAND_TEXT_ENTER,
             (wxObjectEventFunction)& WxConsole::OnCommandEnter );
+    /*
     Connect( mwxTextCommand->GetId(),
             wxEVT_CHAR,
             //wxEVT_COMMAND_TEXT_UPDATED,
@@ -329,22 +324,39 @@ namespace bbtk
     mRedirect_cerr = 
       new WxTextCtrlStreamRedirector(std::cerr,mwxTextHistory,*wxGREEN,true); 
         
-    // Sets the console as the parent window of all bbtk windows
-    wxFrame* top = new wxFrame(this,-1,_T("invisible"));
+    // Creates and sets the parent window of all bbtk windows
+    wxWindow* top = new wxPanel(this,-1);//,_T("top"));
+    top->Hide();
+    //new wxFrame(this,-1,_T("bbtk"),
+    //                        wxDefaultPosition,
+    //                        wxSize(0,0),
+    //                        wxFRAME_TOOL_WINDOW) ;//wxMINIMIZE_BOX);
+
     Wx::SetTopWindow(top);
 
+    //    top->Show();
+    
 
     // Layout
 //EED    SetSizer(sizer);
-    SetAutoLayout(true);
-    Layout();
 
+       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();
   }
   //================================================================
 
  //================================================================
   WxConsole::~WxConsole()
   {
+       m_mgr.UnInit();
     delete mRedirect_cout;
     delete mRedirect_cerr;
   }
@@ -370,14 +382,14 @@ namespace bbtk
   //================================================================
   void WxConsole::CommandString(wxString line )
   {
-printf("WxConsole::CommandString 01 \n");
+    //printf("WxConsole::CommandString 01 \n");
     wxString s = _T("> ") + line + _T("\n");
     mwxTextHistoryAttr->SetTextColour(*wxRED);
     mwxTextHistory->SetDefaultStyle(*mwxTextHistoryAttr);
     mwxTextHistory->AppendText(s);
     // send to standard console also 
-printf("WxConsole::CommandString 02 \n");
-    printf("%s",wx2std(s).c_str());
+    //printf("WxConsole::CommandString 02 \n");
+    //    printf("%s",wx2std(s).c_str());
 //EED    mwxTextCommand->Clear();
     mwxTextCommand->SetValue(_T(""));
        mwxTextCommand->Append(line);
@@ -386,32 +398,31 @@ printf("WxConsole::CommandString 02 \n");
     mwxTextHistoryAttr->SetTextColour(*wxBLACK);
     mwxTextHistory->SetDefaultStyle(*mwxTextHistoryAttr);
 
-printf("WxConsole::CommandString 03 \n");
+    //printf("WxConsole::CommandString 03 \n");
     try 
     {
       bool insideComment = false;
-printf("WxConsole::CommandString 04 \n");
-          mInterpreter->InterpretLine( wx2std(line), insideComment );
-printf("WxConsole::CommandString 05 \n");
+
+      mInterpreter->InterpretLine( wx2std(line), insideComment );
     }
     catch (bbtk::QuitException)
     {
-          Close(true); 
+       Close(true); 
     }
     catch (bbtk::Exception e) 
     {
-          e.Print();
+       e.Print();
     }
     catch (std::exception& e) 
     {
-          std::cout << "* ERROR : "<<e.what()<<" (not in bbtk)"<<std::endl;
+       std::cout << "* ERROR : "<<e.what()<<" (not in bbtk)"<<std::endl;
     }
     catch (...)
     {
-          std::cout << "* UNDEFINED ERROR (not a bbtk nor a std exception)"
-                         << std::endl;
+       std::cout << "* UNDEFINED ERROR (not a bbtk nor a std exception)"
+                 << std::endl;
     }
-printf("WxConsole::CommandString 06 \n");
+    //printf("WxConsole::CommandString 06 \n");
   }
   //================================================================
 
@@ -427,21 +438,39 @@ printf("WxConsole::CommandString 06 \n");
   //================================================================
   void WxConsole::OnMenuAbout(wxCommandEvent& WXUNUSED(event))
   {
-    
-    wxMessageBox(_T("  bbi\nThe Black Box Toolkit interpreter\n(c) CREATIS-LRMN 2007"),
-                _T("About ..."), wxOK | wxICON_INFORMATION, 
-                this);
+    m_mgr.Update();
+       Refresh();
+    wxMessageBox(_T("  bbi\nThe Black Box Toolkit interpreter\n(c) CREATIS-LRMN 2008"),
+                 _T("About ..."), wxOK | wxICON_INFORMATION,
+                 this);
   }
   //================================================================
 
-  
+
+  //================================================================
+  void WxConsole::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 WxConsole::OnMenuCreatePackage(wxCommandEvent& WXUNUSED(event))
   {
-    
-    wxMessageBox(_T("  Creating Package"),
-                _T("Creating Package ..."), wxOK | wxICON_INFORMATION, 
-                this);
+       std::cout << "bbi: include CreatePackage" << std::endl;
+    Interpreter* I = new Interpreter;    
+       I->InterpretFile("CreatePackage");
+    delete I;
   }
   //================================================================
 
@@ -449,29 +478,55 @@ printf("WxConsole::CommandString 06 \n");
   //================================================================
   void WxConsole::OnMenuCreateBlackBox(wxCommandEvent& WXUNUSED(event))
   {
-    
-    wxMessageBox(_T("  Creating blackbox"),
-                _T("Creating blackbox ..."), wxOK | wxICON_INFORMATION, 
-                this);
+       std::cout << "bbi: include CreateBlackBox" << std::endl;
+    Interpreter* I = new Interpreter;    
+       I->InterpretFile("CreateBlackBox");
+    delete I;
   }
   //================================================================
   
   //================================================================
   void WxConsole::OnMenuShowImageGraph(wxCommandEvent& WXUNUSED(event))
   {
-    std::string default_doc_dir = ConfigurationFile::GetInstance().Get_default_temp_dir();
+    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_doc_dir+"/temp_dir/workspace_workspacePrototype.png";
+    std::string strcommand = strappli +default_temp_dir+"/temp_dir/workspace_workspacePrototype.png";
+       std::cout << "system: " << strcommand << std::endl;
     system ( strcommand.c_str() );
+
   }
   //================================================================
 
-  
+
+  //================================================================
+  void WxConsole::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 );
+
+    bool insideComment = false; // for multiline comment
+       I->InterpretLine( "exec freeze" ,insideComment );
+       I->InterpretLine( "include *" ,insideComment );
+       I->InterpretLine( "index "+doc_path+"/bbdoc/index-alpha.html Initials" ,insideComment );
+       I->InterpretLine( "index "+doc_path+"/bbdoc/index-package.html Packages" ,insideComment );
+       I->InterpretLine( "index "+doc_path+"/bbdoc/index-category.html Categories" ,insideComment );
+       I->InterpretLine( "index "+doc_path+"/bbdoc/index-adaptors.html Adaptors",insideComment  );
+
+    delete I;
+  }
+  //================================================================
+
+
+
   
   //================================================================
   void WxConsole::OnCommandChar(wxCommandEvent& event)
@@ -521,7 +576,7 @@ printf("WxConsole::CommandString 06 \n");
       }
     else 
       {
-       //      std::cout << "ERROR html"<<std::endl;
+         // std::cout << "ERROR html"<<std::endl;
       }
   } 
 
@@ -530,16 +585,16 @@ printf("WxConsole::CommandString 06 \n");
   //================================================================  
   wxPanel* WxConsole::CreateBtnsCtrlPanel(wxWindow *parent)
   {
-         wxPanel *btnsCtrlPanel        = new wxPanel(parent,-1);
-         wxBoxSizer *btnsSizer         = new wxBoxSizer(wxHORIZONTAL);
-         
-         wxButton *btnInclude  = new wxButton( btnsCtrlPanel,-1,_T("Include")  );
-         wxButton *btnReset    = new wxButton( btnsCtrlPanel,-1,_T("Reset")            );
-         wxButton *btnConfig   = new wxButton( btnsCtrlPanel,-1,_T("Config")           );
-         wxButton *btnGraphS   = new wxButton( btnsCtrlPanel,-1,_T("Graph S.") );
-         wxButton *btnGraphD   = new wxButton( btnsCtrlPanel,-1,_T("Graph D.") );
-         wxButton *btnHelp     = new wxButton( btnsCtrlPanel,-1,_T("Help")             );
+     wxPanel *btnsCtrlPanel = new wxPanel(parent,-1);
+     wxBoxSizer *btnsSizer     = new wxBoxSizer(wxHORIZONTAL);
          
+     wxButton *btnInclude  = new wxButton( btnsCtrlPanel,-1,_T("Include")  );
+     wxButton *btnReset    = new wxButton( btnsCtrlPanel,-1,_T("Reset")    );
+     wxButton *btnConfig   = new wxButton( btnsCtrlPanel,-1,_T("Config")   );
+     wxButton *btnGraphS   = new wxButton( btnsCtrlPanel,-1,_T("Graph simple") );
+     wxButton *btnGraphD   = new wxButton( btnsCtrlPanel,-1,_T("Graph detailed") );
+     wxButton *btnHelp     = new wxButton( btnsCtrlPanel,-1,_T("Help")     );
+
          btnsSizer->Add( btnInclude    );
          btnsSizer->Add( btnReset              );
          btnsSizer->Add( btnConfig             );
@@ -562,20 +617,20 @@ printf("WxConsole::CommandString 06 \n");
   //================================================================  
   void WxConsole::OnBtnInclude(wxCommandEvent& event)
   {
-           std::string default_doc_dir = ConfigurationFile::GetInstance().Get_default_temp_dir();
-           std::string stdDir = default_doc_dir+"/share/bbtk/bbs";
-           wxString defaultDir(stdDir.c_str(), wxConvUTF8);
-           
-               wxFileDialog dialog(this, _T("Choose a file"),defaultDir, _T(""), _T("*.bbs"), wxOPEN );
-               if (dialog.ShowModal() == wxID_OK)
-               {
-//                     std::string command(_T("include "));
-//                     std::string pathfilename                = (const char *)(dialog.GetFilename().mb_str());
-                       wxString command(_T("include "));
-                       wxString pathfilename = dialog.GetPath();
-                       command += pathfilename;
-                       CommandString( command );
-               }
+     std::string default_doc_dir = ConfigurationFile::GetInstance().Get_default_temp_dir();
+     std::string stdDir = default_doc_dir+"/share/bbtk/bbs";
+     wxString defaultDir(stdDir.c_str(), wxConvUTF8);
+
+     wxFileDialog dialog(this, _T("Choose a file"),defaultDir, _T(""), _T("*.bbs"), wxOPEN );
+     if (dialog.ShowModal() == wxID_OK)
+     {
+        // std::string command(_T("include "));
+        // std::string pathfilename = (const char *)(dialog.GetFilename().mb_str());
+        wxString command(_T("include "));
+        wxString pathfilename = dialog.GetPath();
+        command += pathfilename;
+        CommandString( command );
+     }
 
   }
   //================================================================  
@@ -584,9 +639,7 @@ printf("WxConsole::CommandString 06 \n");
   //================================================================  
   void WxConsole::OnBtnReset(wxCommandEvent& event)
   {
-printf("WxConsole::OnBtnReset 01 \n");
-         CommandString(_T("reset"));
-printf("WxConsole::OnBtnReset 02 \n");
+     CommandString(_T("reset"));
   }
   //================================================================  
 
@@ -594,7 +647,7 @@ printf("WxConsole::OnBtnReset 02 \n");
   //================================================================  
   void WxConsole::OnBtnConfig(wxCommandEvent& event)
   {
-         CommandString(_T("config"));
+     CommandString(_T("config"));
   }
   //================================================================  
 
@@ -603,21 +656,21 @@ printf("WxConsole::OnBtnReset 02 \n");
   //================================================================  
   void WxConsole::OnBtnGraphS(wxCommandEvent& event)
   {
-         CommandString(_T("graph"));
+     CommandString(_T("graph"));
   }
   //================================================================  
 
   //================================================================  
   void WxConsole::OnBtnGraphD(wxCommandEvent& event)
   {
-         CommandString(_T("graph . 1"));
+     CommandString(_T("graph . 1"));
   }
   //================================================================  
 
   //================================================================  
   void WxConsole::OnBtnHelp(wxCommandEvent& event)
   {
-         CommandString(_T("help"));
+     CommandString(_T("help"));
   }
   //================================================================  
 
@@ -626,11 +679,13 @@ printf("WxConsole::OnBtnReset 02 \n");
   BEGIN_EVENT_TABLE(WxConsole, wxFrame)
     EVT_MENU(WxConsole::ID_Menu_Quit, WxConsole::OnMenuQuit)
     EVT_MENU(WxConsole::ID_Menu_About, WxConsole::OnMenuAbout)
+    EVT_MENU(WxConsole::ID_Menu_EditConfig, WxConsole::OnMenuEditConfig)
     EVT_MENU(WxConsole::ID_Menu_CreatePackage, WxConsole::OnMenuCreatePackage)
     EVT_MENU(WxConsole::ID_Menu_CreateBlackBox, WxConsole::OnMenuCreateBlackBox)
     EVT_MENU(WxConsole::ID_Menu_ShowImageGraph, WxConsole::OnMenuShowImageGraph)
+    EVT_MENU(WxConsole::ID_Menu_CreateIndex, WxConsole::OnMenuCreateIndex)
     EVT_TEXT_ENTER(WxConsole::ID_Text_Command, WxConsole::OnCommandEnter)
-  //    EVT_CHAR(WxConsole::ID_Text_Command, WxConsole::OnCommandChar)
+//      EVT_CHAR(WxConsole::ID_Text_Command, WxConsole::OnCommandChar)
     END_EVENT_TABLE()
   //================================================================