4 #include "bbtkWxBrowser.h"
5 #include "bbtkWxBlackBox.h"
6 #include "bbtkWxConsole.h"
8 #include "bbtkConfigurationFile.h"
9 #include "bbtkUtilities.h"
14 //========================================================================
28 //========================================================================
29 void WxHtmlWindow::OnLinkClicked(const wxHtmlLinkInfo& e)
31 std::cout << "WxHtmlWindow::OnLink"<<std::endl;
32 // std::cout << e.GetHref()<<std::endl;
33 LoadPage(e.GetHref());
34 if ( ! GetOpenedAnchor().IsEmpty() )
36 // std::cout << "#" << GetOpenedAnchor() << std::endl;
37 LoadPage(_T("#"+GetOpenedAnchor()));
39 mBrowser->UpdateURL();
41 //========================================================================
45 //========================================================================
47 BEGIN_EVENT_TABLE(WxBrowser, wxPanel)
48 EVT_BUTTON(bwd_id, WxBrowser::OnBackButton )
49 EVT_BUTTON(fwd_id, WxBrowser::OnForwardButton )
50 EVT_BUTTON(home_id, WxBrowser::OnHomeButton )
51 EVT_BUTTON(reload_id, WxBrowser::OnReloadButton )
52 EVT_BUTTON(include_id, WxBrowser::OnIncludeFileButton )
53 EVT_TEXT_ENTER(url_id, WxBrowser::OnURLEnter )
54 EVT_HTML_LINK_CLICKED(html_id, WxBrowser::OnLinkClicked)
56 //========================================================================
59 //========================================================================
60 WxBrowser::WxBrowser ( wxWindow *parent, wxSize size )
62 wxPanel ( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
65 wxPanel* panel = this;
67 wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
70 wxBoxSizer *bsizer = new wxBoxSizer(wxHORIZONTAL);
72 mwxBackButton = new wxButton( panel, bwd_id,_T("<"),wxDefaultPosition,
73 wxDefaultSize,wxBU_EXACTFIT);
74 bsizer->Add ( mwxBackButton , 0, wxALIGN_CENTRE | wxLEFT | wxTOP | wxBOTTOM , 10 );
76 mwxForwardButton = new wxButton( panel, fwd_id,_T(">"),wxDefaultPosition,
77 wxDefaultSize,wxBU_EXACTFIT);
78 bsizer->Add ( mwxForwardButton , 0, wxALIGN_CENTRE | wxTOP | wxBOTTOM , 10);
80 mwxHomeButton = new wxButton( panel, home_id,_T("Home"),wxDefaultPosition,
81 wxDefaultSize,wxBU_EXACTFIT);
82 bsizer->Add ( mwxHomeButton , 0, wxALIGN_CENTRE | wxLEFT | wxTOP | wxBOTTOM , 10 );
84 mwxReloadButton = new wxButton( panel, reload_id,_T("Reload"),wxDefaultPosition,
85 wxDefaultSize,wxBU_EXACTFIT);
86 bsizer->Add ( mwxReloadButton , 0, wxALIGN_CENTRE | wxTOP | wxBOTTOM , 10 );
88 mwxIncludeFileButton = new wxButton( panel, include_id,
89 _T("RUN"),wxDefaultPosition,
90 wxDefaultSize,wxBU_EXACTFIT);
91 bsizer->Add ( mwxIncludeFileButton , 0, wxALIGN_CENTRE | wxLEFT | wxTOP | wxBOTTOM , 10 );
93 mwxURL = new wxTextCtrl(panel,url_id,_T(""),
97 mwxURL->SetLabel(_T("URL"));
98 bsizer->Add(mwxURL, 1, wxEXPAND | wxALL, 10);
101 // mwxHtmlWindow = new WxHtmlWindow(parent,html_id,this,size);
102 mwxHtmlWindow = new WxHtmlWindow(this,html_id,this,size);
112 mwxHtmlWindow->SetBorders(5);
113 // mwxHtmlWindow->FitInside();
115 wxStaticBoxSizer* hw =
116 new wxStaticBoxSizer( new wxStaticBox( this, -1, _T(""),
120 //EED hw->Add ( mwxHtmlWindow, 1, wxGROW );
121 hw->Add ( mwxHtmlWindow, 1, wxEXPAND );
127 //sizer->Add ( mwxHtmlWindow, 1, wxGROW );
128 //EED sizer->Add ( hw, 1, wxGROW ); // | wxLEFT | wxRIGHT | wxBOTTOM, 10 );
130 sizer->Add ( bsizer , 0, wxEXPAND );
131 sizer->Add ( hw, 1, wxGROW ); // | wxLEFT | wxRIGHT | wxBOTTOM, 10 );
135 panel -> SetSizer(sizer);
136 panel -> SetAutoLayout(true);
142 Connect( mwxBackButton->GetId(),
143 wxEVT_COMMAND_BUTTON_CLICKED ,
144 (wxObjectEventFunction)
145 (void (wxPanel::*)(wxEvent&))
146 &WxBrowser::OnBackButton );
147 Connect( mwxForwardButton->GetId(),
148 wxEVT_COMMAND_BUTTON_CLICKED ,
149 (wxObjectEventFunction)
150 (void (wxPanel::*)(wxEvent&))
151 &WxBrowser::OnForwardButton );
153 std::cout << "e="<<wxEVT_COMMAND_HTML_LINK_CLICKED<<std::endl;
155 Connect( wxID_ANY, //mwxHtmlWindow->GetId(),
156 wxEVT_COMMAND_HTML_LINK_CLICKED ,
157 wxHtmlLinkEventHandler(
158 //(wxObjectEventFunction)
159 // (void (wxPanel::*)(wxEvent&))&
160 WxBrowser::OnLinkClicked ) );
161 Connect( mwxHtmlWindow->GetId(),
162 wxEVT_COMMAND_HTML_CELL_HOVER,
163 //(wxObjectEventFunction)
164 wxHtmlCellEventHandler(
165 // (void (wxPanel::*)(wxHtmlCellEvent&))&
166 WxBrowser::OnCell ) );
169 //========================================================================
172 //========================================================================
173 bool WxBrowser::GoTo(std::string& file)
175 // std::cout << "goto"<<std::endl;
177 bool r = mwxHtmlWindow->LoadPage(std2wx(file));
181 //========================================================================
183 //========================================================================
184 void WxBrowser::OnBackButton(wxCommandEvent& )
186 // std::cout << "back"<<std::endl;
187 mwxHtmlWindow->HistoryBack();
190 //========================================================================
192 //========================================================================
193 void WxBrowser::OnForwardButton(wxCommandEvent& )
195 // std::cout << "forward"<<std::endl;
196 mwxHtmlWindow->HistoryForward();
199 //========================================================================
201 //========================================================================
202 void WxBrowser::GoHome()
204 std::string url = ConfigurationFile::GetInstance().Get_doc_path();
205 url += "/bbtkWebSite/menu.html";
209 mwxURL->AppendText(std2wx(url));
213 if (Utilities::FileExists(url))
223 //========================================================================
225 //========================================================================
226 void WxBrowser::OnHomeButton(wxCommandEvent& )
230 //========================================================================
232 //========================================================================
233 void WxBrowser::OnReloadButton(wxCommandEvent& e)
237 //========================================================================
239 //========================================================================
240 void WxBrowser::OnIncludeFileButton(wxCommandEvent& )
242 std::string filename = wx2std(mwxURL->GetValue());
243 size_t s = filename.length();
245 WxConsole* C = WxConsole::GetInstance();
248 if ((s>3) && (filename[s-1]=='s')
249 && (filename[s-2]=='b')
250 && (filename[s-3]=='b')
251 && (filename[s-4]=='.'))
253 C->SetStatusText(_T("Executing ")+mwxURL->GetValue());
254 C->InterpretFile(filename);
258 C->SetStatusText(_T("The current page is not a bbs file : cannot execute it"));
262 std::string bbdoc = ConfigurationFile::GetInstance().Get_url();
264 std::string command("cd ");
266 command += " & bbi -q -n make-index.bbs";
267 system(command.c_str());
270 //========================================================================
272 //========================================================================
273 void WxBrowser::OnURLEnter( wxCommandEvent&)
275 std::cout << "OnURL"<<std::endl;
276 printf ( "EED > WxBrowser::OnURLEnter URL(%s) \n ", (const char*) mwxURL->GetValue().mb_str() );
277 mwxHtmlWindow->LoadPage(mwxURL->GetValue());
279 //========================================================================
282 //========================================================================
283 void WxBrowser::OnLinkClicked(wxHtmlLinkEvent& e)
285 std::cout << "WxBrowser::OnLinkClicked"<<std::endl;
286 std::cout << e.GetLinkInfo().GetHref()<<std::endl;
287 printf ( "EED > WxBrowser::OnLinkClicked eve(%s) \n ", (const char*) e.GetLinkInfo().GetHref().mb_str() );
288 mwxHtmlWindow->LoadPage( e.GetLinkInfo().GetHref() );
290 printf ( "EED > WxBrowser::OnLinkClicked URL(%s) \n ", (const char*) mwxURL->GetValue().mb_str() );
291 mwxHtmlWindow->LoadPage( mwxURL->GetValue() );
293 //========================================================================
297 void WxBrowser::OnCell(wxHtmlCellEvent& )
299 std::cout << "OnCell"<<std::endl;
303 //========================================================================
304 void WxBrowser::UpdateURL()
307 wxString s = mwxHtmlWindow->GetOpenedPage();
308 if (!mwxHtmlWindow->GetOpenedAnchor().IsEmpty())
310 s += _T("#") + mwxHtmlWindow->GetOpenedAnchor();
313 mwxURL->AppendText(s);
315 //========================================================================
317 //========================================================================
318 void WxBrowser::SetSize( wxSize s)
320 // wxPanel::SetSize(s);
321 mwxHtmlWindow->SetSize(s);
324 //========================================================================