]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkWxBrowser.cxx
BUG HTML in windows + Cast float int
[bbtk.git] / kernel / src / bbtkWxBrowser.cxx
index 996e8a56cf261a7e4649e69938f78d5bf34ef39e..d8112cf1e440b54db65029a2d100502fb70f10aa 100644 (file)
@@ -1,16 +1,34 @@
 #ifdef _USE_WXWIDGETS_
 
+
 #include "bbtkWxBrowser.h"
 #include "bbtkWxBlackBox.h"
+#include "bbtkWxConsole.h"
 
+#include "bbtkConfigurationFile.h"
+#include "bbtkUtilities.h"
 
 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() )
@@ -19,27 +37,26 @@ namespace bbtk
        LoadPage(_T("#"+GetOpenedAnchor()));
       }
     mBrowser->UpdateURL();
-
-
   }
+  //========================================================================
+*/
 
 
-  enum 
-    {
-      bwd_id,
-      fwd_id,
-      url_id,
-      html_id
-    };
-
+  //========================================================================
   
   BEGIN_EVENT_TABLE(WxBrowser, wxPanel)
     EVT_BUTTON(bwd_id, WxBrowser::OnBackButton )
     EVT_BUTTON(fwd_id, WxBrowser::OnForwardButton )
+    EVT_BUTTON(home_id, WxBrowser::OnHomeButton )
+    EVT_BUTTON(reload_id, WxBrowser::OnReloadButton )
+    EVT_BUTTON(include_id, WxBrowser::OnIncludeFileButton )
     EVT_TEXT_ENTER(url_id, WxBrowser::OnURLEnter )
-     EVT_HTML_LINK_CLICKED(html_id, WxBrowser::OnLinkClicked)
+    EVT_HTML_LINK_CLICKED(html_id, WxBrowser::OnLinkClicked)
   END_EVENT_TABLE()
-    
+  //========================================================================
+
+
+  //========================================================================
     WxBrowser::WxBrowser ( wxWindow *parent, wxSize size )
       : 
     wxPanel ( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
@@ -51,30 +68,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("Home"),wxDefaultPosition,
+                                 wxDefaultSize,wxBU_EXACTFIT);
+    bsizer->Add ( mwxHomeButton , 0, wxALIGN_CENTRE | wxLEFT | wxTOP | wxBOTTOM , 10  );
+    
+    mwxReloadButton = new wxButton( panel, reload_id,_T("Reload"),wxDefaultPosition,
+                                   wxDefaultSize,wxBU_EXACTFIT);
+    bsizer->Add ( mwxReloadButton  , 0, wxALIGN_CENTRE |  wxTOP | wxBOTTOM , 10  );
+
+    mwxIncludeFileButton = new wxButton( panel, include_id,
+                                      _T("RUN"),wxDefaultPosition,
+                                      wxDefaultSize,wxBU_EXACTFIT);
+    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);
 
     /*
 
@@ -86,22 +111,33 @@ 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();
+
     /*
     Connect( mwxBackButton->GetId(), 
             wxEVT_COMMAND_BUTTON_CLICKED , 
@@ -130,37 +166,119 @@ namespace bbtk
                                    WxBrowser::OnCell ) ); 
     */
   }
-
+  //========================================================================
  
+
+  //========================================================================
   bool WxBrowser::GoTo(std::string& file)
   { 
     //  std::cout << "goto"<<std::endl;
+
     bool r = mwxHtmlWindow->LoadPage(std2wx(file));
     UpdateURL();
     return r;
   }
+  //========================================================================
   
+  //========================================================================
   void WxBrowser::OnBackButton(wxCommandEvent& )
   {
     //    std::cout << "back"<<std::endl;
     mwxHtmlWindow->HistoryBack();
     UpdateURL();
   }
-  
+  //========================================================================
+
+  //========================================================================
   void WxBrowser::OnForwardButton(wxCommandEvent& )
   {
     //    std::cout << "forward"<<std::endl;
     mwxHtmlWindow->HistoryForward();
     UpdateURL();
   }
+  //========================================================================
+
+  //========================================================================
+  void WxBrowser::GoHome()
+  {
+    std::string url = ConfigurationFile::GetInstance().Get_doc_path();
+    url += "/bbtkWebSite/menu.html";
+       GoTo(url);
+
+    mwxURL->Clear();
+    mwxURL->AppendText(url);
+
+
+/*EED
+    if (Utilities::FileExists(url)) 
+      {
+       GoTo(url);
+      }
+    else 
+      {
+       // what ?
+      }
+*/
+  }
+  //========================================================================
+
+  //========================================================================
+  void WxBrowser::OnHomeButton(wxCommandEvent& )
+  {
+    GoHome();
+  }
+  //========================================================================
+
+  //========================================================================
+  void WxBrowser::OnReloadButton(wxCommandEvent& e)
+  {
+    OnURLEnter(e);
+  }
+  //========================================================================
+
+  //========================================================================
+  void WxBrowser::OnIncludeFileButton(wxCommandEvent& )
+  {
+    std::string filename = wx2std(mwxURL->GetValue());
+    size_t s = filename.length();
+
+    WxConsole* C = WxConsole::GetInstance();
+    if (C != 0)
+      {
+       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"));
+         }
+      }
+    /*
+    std::string bbdoc = ConfigurationFile::GetInstance().Get_url();
+    bbdoc += "/bbdoc";
+    std::string command("cd ");
+    command += bbdoc;
+    command += " & bbi -q -n make-index.bbs";
+    system(command.c_str());
+    */
+  }
+  //========================================================================
 
+  //======================================================================== 
   void WxBrowser::OnURLEnter( wxCommandEvent&)
   { 
-    //std::cout  << "OnURL"<<std::endl;
+    std::cout  << "OnURL"<<std::endl;
     mwxHtmlWindow->LoadPage(mwxURL->GetValue());
   }
-
+  //========================================================================
   
+
+  //========================================================================
   void WxBrowser::OnLinkClicked(wxHtmlLinkEvent& e)
   {
     std::cout  << "WxBrowser::OnLinkClicked"<<std::endl;
@@ -168,12 +286,17 @@ namespace bbtk
     mwxHtmlWindow->LoadPage(e.GetLinkInfo().GetHref());
        UpdateURL();
   }
+  //========================================================================
+
+
   /*
   void WxBrowser::OnCell(wxHtmlCellEvent& )
   {
     std::cout  << "OnCell"<<std::endl;
   }
   */
+
+  //========================================================================
   void WxBrowser::UpdateURL()
   {
 
@@ -185,13 +308,16 @@ namespace bbtk
     mwxURL->Clear();
     mwxURL->AppendText(s);
   }
+  //========================================================================
+
+  //========================================================================
   void WxBrowser::SetSize( wxSize s)
   {
     //    wxPanel::SetSize(s);
     mwxHtmlWindow->SetSize(s);
     Fit();
   }
-
+  //========================================================================
 }
 
 #endif