]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkWxBrowser.cxx
Fixed crash with Interpreter without WxConsole (case of RUN button of WxBrowser)
[bbtk.git] / kernel / src / bbtkWxBrowser.cxx
index 708784171c7c03a7894879c6b0fb37058ad173f1..745bcdaf16df3afe726eb2afb2306d66310eb704 100644 (file)
 namespace bbtk
 {  
 
+  //========================================================================
+  enum 
+    {
+      bwd_id,
+      fwd_id,
+      home_id,
+      reload_id,
+      include_id,
+      url_id  ,
+      html_id
+    };
+
+
+/*EED
   //========================================================================
   void WxHtmlWindow::OnLinkClicked(const wxHtmlLinkInfo& e)
   {
-    //    std::cout  << "WxHtmlWindow::OnLink"<<std::endl;
+        std::cout  << "WxHtmlWindow::OnLink"<<std::endl;
     //    std::cout  << e.GetHref()<<std::endl;
     LoadPage(e.GetHref());
     if ( ! GetOpenedAnchor().IsEmpty() )
@@ -23,22 +37,11 @@ namespace bbtk
        LoadPage(_T("#"+GetOpenedAnchor()));
       }
     mBrowser->UpdateURL();
-
-
   }
   //========================================================================
+*/
+
 
-  //========================================================================
-  enum 
-    {
-      bwd_id,
-      fwd_id,
-      home_id,
-      reload_id,
-      include_id,
-      url_id,
-      html_id
-    };
   //========================================================================
   
   BEGIN_EVENT_TABLE(WxBrowser, wxPanel)
@@ -56,7 +59,8 @@ namespace bbtk
   //========================================================================
     WxBrowser::WxBrowser ( wxWindow *parent, wxSize size )
       : 
-    wxPanel ( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
+      wxPanel ( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL),
+      mWxConsole(0)
 
   {
     wxPanel* panel = this;
@@ -65,45 +69,38 @@ namespace bbtk
     
 
     wxBoxSizer *bsizer = new wxBoxSizer(wxHORIZONTAL);
-    
-    sizer->Add ( bsizer, 0, wxGROW );
-    
-    
+        
     mwxBackButton = new wxButton( panel, bwd_id,_T("<"),wxDefaultPosition,
                                  wxDefaultSize,wxBU_EXACTFIT);
-    bsizer->Add ( mwxBackButton, 0, wxALIGN_CENTRE | 
-                 wxLEFT | wxTOP | wxBOTTOM , 10 );
+    bsizer->Add ( mwxBackButton , 0, wxALIGN_CENTRE |  wxLEFT | wxTOP | wxBOTTOM , 10 );
 
     mwxForwardButton = new wxButton( panel, fwd_id,_T(">"),wxDefaultPosition,
                                     wxDefaultSize,wxBU_EXACTFIT);
-    bsizer->Add ( mwxForwardButton, 0, wxALIGN_CENTRE | 
-                 wxTOP | wxBOTTOM , 10);
+    bsizer->Add ( mwxForwardButton  , 0, wxALIGN_CENTRE | wxTOP | wxBOTTOM , 10);
 
-    mwxHomeButton = new wxButton( panel, home_id,_T("~"),wxDefaultPosition,
+    mwxHomeButton = new wxButton( panel, home_id,_T("Home"),wxDefaultPosition,
                                  wxDefaultSize,wxBU_EXACTFIT);
-    bsizer->Add ( mwxHomeButton, 0, wxALIGN_CENTRE | 
-                 wxLEFT | wxTOP | wxBOTTOM , 10 );
+    bsizer->Add ( mwxHomeButton , 0, wxALIGN_CENTRE | wxLEFT | wxTOP | wxBOTTOM , 10  );
     
-    mwxReloadButton = new wxButton( panel, reload_id,_T("."),wxDefaultPosition,
+    mwxReloadButton = new wxButton( panel, reload_id,_T("Reload"),wxDefaultPosition,
                                    wxDefaultSize,wxBU_EXACTFIT);
-    bsizer->Add ( mwxReloadButton, 0, wxALIGN_CENTRE | 
-                 wxTOP | wxBOTTOM , 10 );
+    bsizer->Add ( mwxReloadButton  , 0, wxALIGN_CENTRE |  wxTOP | wxBOTTOM , 10  );
 
     mwxIncludeFileButton = new wxButton( panel, include_id,
-                                      _T("*"),wxDefaultPosition,
+                                      _T("RUN"),wxDefaultPosition,
                                       wxDefaultSize,wxBU_EXACTFIT);
-    bsizer->Add ( mwxIncludeFileButton, 0, wxALIGN_CENTRE | 
-                 wxLEFT | wxTOP | wxBOTTOM , 10 );
+    bsizer->Add ( mwxIncludeFileButton , 0, wxALIGN_CENTRE |  wxLEFT | wxTOP | wxBOTTOM , 10 );
     
     mwxURL = new wxTextCtrl(panel,url_id,_T(""),
                            wxDefaultPosition,
                            wxDefaultSize,
                            wxTE_PROCESS_ENTER);
     mwxURL->SetLabel(_T("URL"));
-    bsizer->Add(mwxURL, 1, wxGROW | wxALL, 10);
+    bsizer->Add(mwxURL, 1, wxEXPAND | wxALL, 10);
 
 
-    mwxHtmlWindow = new WxHtmlWindow(parent,html_id,this,size);
+//    mwxHtmlWindow = new WxHtmlWindow(parent,html_id,this,size);
+    mwxHtmlWindow = new WxHtmlWindow(this,html_id,this,size);
 
     /*
 
@@ -115,23 +112,32 @@ namespace bbtk
     */
     mwxHtmlWindow->SetBorders(5);
     //  mwxHtmlWindow->FitInside();
+
     wxStaticBoxSizer* hw = 
       new wxStaticBoxSizer( new wxStaticBox( this, -1, _T(""),
                                             wxDefaultPosition, 
                                             size ),
                            wxVERTICAL );
-    hw->Add ( mwxHtmlWindow, 1, wxGROW  );
+//EED    hw->Add ( mwxHtmlWindow, 1, wxGROW  );
+    hw->Add ( mwxHtmlWindow, 1, wxEXPAND  );
+
+
+
+
+
     //sizer->Add ( mwxHtmlWindow, 1, wxGROW  );
+//EED    sizer->Add ( hw, 1, wxGROW ); // | wxLEFT | wxRIGHT | wxBOTTOM, 10 );
 
+    sizer->Add ( bsizer , 0, wxEXPAND );
     sizer->Add ( hw, 1, wxGROW ); // | wxLEFT | wxRIGHT | wxBOTTOM, 10 );
-    
+
+
 
     panel      -> SetSizer(sizer);
     panel      -> SetAutoLayout(true);
     panel      -> Layout();
 
-    GoHome();
+//    GoHome();
 
     /*
     Connect( mwxBackButton->GetId(), 
@@ -168,6 +174,7 @@ namespace bbtk
   bool WxBrowser::GoTo(std::string& file)
   { 
     //  std::cout << "goto"<<std::endl;
+
     bool r = mwxHtmlWindow->LoadPage(std2wx(file));
     UpdateURL();
     return r;
@@ -197,6 +204,13 @@ namespace bbtk
   {
     std::string url = ConfigurationFile::GetInstance().Get_doc_path();
     url += "/bbtkWebSite/menu.html";
+       GoTo(url);
+
+    mwxURL->Clear();
+    mwxURL->AppendText(std2wx(url));
+
+
+/*EED
     if (Utilities::FileExists(url)) 
       {
        GoTo(url);
@@ -205,6 +219,7 @@ namespace bbtk
       {
        // what ?
       }
+*/
   }
   //========================================================================
 
@@ -228,22 +243,27 @@ namespace bbtk
     std::string filename = wx2std(mwxURL->GetValue());
     size_t s = filename.length();
 
-    WxConsole* C = WxConsole::GetInstance();
-    if (C != 0)
+    WxConsole* C = mWxConsole; //::GetInstance();
+    //    MessageManager::SetMessageLevel("All",9);
+    Interpreter* I = new Interpreter;
+    
+    if ((s>3) && (filename[s-1]=='s')
+       && (filename[s-2]=='b')
+       && (filename[s-3]=='b')
+       && (filename[s-4]=='.'))
+      {
+       std::cout << "stat"<<std::endl;
+       if (C!=0) C->SetStatusText(_T("Executing ")+mwxURL->GetValue());
+       std::cout << "int"<<std::endl;
+       I->InterpretFile(filename);
+       std::cout << "eoint"<<std::endl;
+      }
+    else
       {
-       if ((s>3) && (filename[s-1]=='s')
-           && (filename[s-2]=='b')
-           && (filename[s-3]=='b')
-           && (filename[s-4]=='.'))
-         {
-           C->SetStatusText(_T("Executing ")+mwxURL->GetValue());
-           C->InterpretFile(filename);
-         }
-       else
-         {
-           C->SetStatusText(_T("The current page is not a bbs file : cannot execute it"));
-         }
+       if (C!=0) C->SetStatusText(_T("The current page is not a bbs file : cannot execute it"));
       }
+    
+    delete I;
     /*
     std::string bbdoc = ConfigurationFile::GetInstance().Get_url();
     bbdoc += "/bbdoc";
@@ -258,21 +278,27 @@ namespace bbtk
   //======================================================================== 
   void WxBrowser::OnURLEnter( wxCommandEvent&)
   { 
-    //std::cout  << "OnURL"<<std::endl;
+    std::cout  << "OnURL"<<std::endl;
+    printf ( "EED > WxBrowser::OnURLEnter URL(%s) \n ", (const char*) mwxURL->GetValue().mb_str() );   
     mwxHtmlWindow->LoadPage(mwxURL->GetValue());
   }
   //========================================================================
   
+
   //========================================================================
   void WxBrowser::OnLinkClicked(wxHtmlLinkEvent& e)
   {
     std::cout  << "WxBrowser::OnLinkClicked"<<std::endl;
     std::cout  << e.GetLinkInfo().GetHref()<<std::endl;
-    mwxHtmlWindow->LoadPage(e.GetLinkInfo().GetHref());
+ printf ( "EED > WxBrowser::OnLinkClicked eve(%s) \n ", (const char*) e.GetLinkInfo().GetHref().mb_str() );   
+    mwxHtmlWindow->LoadPage( e.GetLinkInfo().GetHref() );
        UpdateURL();
+        printf ( "EED > WxBrowser::OnLinkClicked URL(%s) \n ", (const char*) mwxURL->GetValue().mb_str() );   
+    mwxHtmlWindow->LoadPage( mwxURL->GetValue() );
   }
   //========================================================================
 
+
   /*
   void WxBrowser::OnCell(wxHtmlCellEvent& )
   {