/*========================================================================= Program: bbtk Module: $RCSfile: bbtkWxGUIHtmlBrowser.cxx,v $ Language: C++ Date: $Date: 2008/09/10 12:38:24 $ Version: $Revision: 1.7 $ 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 "bbtkWxGUIHtmlBrowser.h" //#include "bbtkWxBlackBox.h" //#include "bbtkWxGUIConsole.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"<UpdateURL(); } //======================================================================== */ //EED2 BEGIN_EVENT_TABLE(WxHtmlWindow, wxPanel) //EED2 EVT_SIZE(WxHtmlWindow::OnSize) //EED2 END_EVENT_TABLE() //EED2 void WxHtmlWindow::OnSize( wxSizeEvent& ) //EED2 { //EED2 printf("EED WxHtmlWindow::OnSize \n" ); //EED2 Scroll(10,500); //EED2 } //======================================================================== BEGIN_EVENT_TABLE(WxGUIHtmlBrowser, wxPanel) EVT_BUTTON(bwd_id, WxGUIHtmlBrowser::OnBackButton ) EVT_BUTTON(fwd_id, WxGUIHtmlBrowser::OnForwardButton ) EVT_BUTTON(home_id, WxGUIHtmlBrowser::OnHomeButton ) EVT_BUTTON(reload_id, WxGUIHtmlBrowser::OnReloadButton ) // EVT_BUTTON(include_id, WxGUIHtmlBrowser::OnIncludeFileButton ) EVT_TEXT_ENTER(url_id, WxGUIHtmlBrowser::OnURLEnter ) EVT_HTML_LINK_CLICKED(html_id, WxGUIHtmlBrowser::OnLinkClicked) EVT_SIZE(WxGUIHtmlBrowser::OnSize) END_EVENT_TABLE() //======================================================================== //======================================================================== WxGUIHtmlBrowser::WxGUIHtmlBrowser ( wxWindow *parent, wxSize size, WxGUIHtmlBrowserUser* user) : wxPanel ( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL), mUser(user) { wxPanel* panel = this; wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL); wxBoxSizer *bsizer = new wxBoxSizer(wxHORIZONTAL); mwxBackButton = new wxButton( panel, bwd_id,_T("<"),wxDefaultPosition, wxDefaultSize,wxBU_EXACTFIT); bsizer->Add ( mwxBackButton , 0, wxALIGN_CENTRE ); mwxForwardButton = new wxButton( panel, fwd_id,_T(">"),wxDefaultPosition, wxDefaultSize,wxBU_EXACTFIT); bsizer->Add ( mwxForwardButton , 0, wxALIGN_CENTRE ); mwxHomeButton = new wxButton( panel, home_id,_T("Home"),wxDefaultPosition, wxDefaultSize,wxBU_EXACTFIT); bsizer->Add ( mwxHomeButton , 0, wxALIGN_CENTRE ); mwxReloadButton = new wxButton( panel, reload_id,_T("Reload"),wxDefaultPosition, wxDefaultSize,wxBU_EXACTFIT); bsizer->Add ( mwxReloadButton , 0, wxALIGN_CENTRE ); /* 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, wxEXPAND); // mwxHtmlWindow = new WxHtmlWindow(parent,html_id,this,size); mwxHtmlWindow = new WxHtmlWindow(this,html_id,this,size); /* -1, wxDefaultPosition, size, wxHW_SCROLLBAR_AUTO, "bbtk::WxGUIHtmlBrowser"); */ mwxHtmlWindow->SetBorders(5); // mwxHtmlWindow->FitInside(); wxStaticBoxSizer* hw = new wxStaticBoxSizer( new wxStaticBox( this, -1, _T(""), wxDefaultPosition, size ), wxVERTICAL ); //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(); } //======================================================================== //======================================================================== bool WxGUIHtmlBrowser::GoTo(std::string& file) { bool r = mwxHtmlWindow->LoadPage(std2wx(file)); UpdateURL(); return r; } //======================================================================== //======================================================================== void WxGUIHtmlBrowser::OnBackButton(wxCommandEvent& ) { mwxHtmlWindow->HistoryBack(); UpdateURL(); } //======================================================================== //======================================================================== void WxGUIHtmlBrowser::OnForwardButton(wxCommandEvent& ) { mwxHtmlWindow->HistoryForward(); UpdateURL(); } //======================================================================== //======================================================================== void WxGUIHtmlBrowser::GoHome() { std::string url = ConfigurationFile::GetInstance().Get_doc_path(); url += "/bbtkWebSite/help_contents.html"; GoTo(url); mwxURL->Clear(); mwxURL->AppendText(std2wx(url)); /*EED if (Utilities::FileExists(url)) { GoTo(url); } else { // what ? } */ } //======================================================================== //======================================================================== void WxGUIHtmlBrowser::OnHomeButton(wxCommandEvent& ) { GoHome(); } //======================================================================== //======================================================================== void WxGUIHtmlBrowser::OnReloadButton(wxCommandEvent& e) { OnURLEnter(e); } //======================================================================== //======================================================================== std::string WxGUIHtmlBrowser::GetCurrentPage() { return wx2std(mwxURL->GetValue()); } //======================================================================== /* //======================================================================== void WxGUIHtmlBrowser::OnIncludeFileButton(wxCommandEvent& ) { std::string filename = wx2std(mwxURL->GetValue()); size_t s = filename.length(); WxGUIConsole* C = mWxGUIConsole; //::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"<SetStatusText(_T("Executing ")+mwxURL->GetValue()); std::cout << "int"<InterpretFile(filename); std::cout << "eoint"<SetStatusText(_T("The current page is not a bbs file : cannot execute it")); } delete I; } //======================================================================== */ //======================================================================== void WxGUIHtmlBrowser::OnURLEnter( wxCommandEvent&) { mwxHtmlWindow->LoadPage(mwxURL->GetValue()); } //======================================================================== //======================================================================== void WxGUIHtmlBrowser::OnLinkClicked(wxHtmlLinkEvent& e) { bool go = true; if (mUser) { wxString file = wxPathOnly(mwxURL->GetValue()); file += std2wx(ConfigurationFile::GetInstance().Get_file_separator()); file += e.GetLinkInfo().GetHref(); go = mUser->WxGUIHtmlBrowserUserOnLinkClicked( wx2std( file ) ); } if (go) { mwxHtmlWindow->LoadPage( e.GetLinkInfo().GetHref() ); UpdateURL(); } // mwxHtmlWindow->LoadPage( mwxURL->GetValue() ); } //======================================================================== //======================================================================== void WxGUIHtmlBrowser::OnSize(wxSizeEvent& e) { mwxHtmlWindow->EnableScrolling(true,true); if ( mwxURL->GetValue()!=wxString(_T("")) ) { // ?????????? No funciona ....????? //EED2 mwxHtmlWindow->LoadPage(mwxURL->GetValue()); // printf("EED WxGUIHtmlBrowser::OnSize %s \n", mwxURL->GetValue().c_str() ); //EED2 mwxHtmlWindow->Scroll( 10, 500); } else { // GoHome(); } e.Skip(true); } /* void WxGUIHtmlBrowser::OnCell(wxHtmlCellEvent& ) { std::cout << "OnCell"<GetOpenedPage(); if (!mwxHtmlWindow->GetOpenedAnchor().IsEmpty()) { s += _T("#") + mwxHtmlWindow->GetOpenedAnchor(); } mwxURL->Clear(); mwxURL->AppendText(s); } //======================================================================== //======================================================================== void WxGUIHtmlBrowser::SetSize( wxSize s) { // wxPanel::SetSize(s); mwxHtmlWindow->SetSize(s); Fit(); } //======================================================================== } #endif