4 #include "bbtkWxBrowser.h"
5 #include "bbtkWxBlackBox.h"
6 #include "bbtkWxConsole.h"
8 #include "bbtkConfigurationFile.h"
9 #include "bbtkUtilities.h"
14 //========================================================================
15 void WxHtmlWindow::OnLinkClicked(const wxHtmlLinkInfo& e)
17 // std::cout << "WxHtmlWindow::OnLink"<<std::endl;
18 // std::cout << e.GetHref()<<std::endl;
19 LoadPage(e.GetHref());
20 if ( ! GetOpenedAnchor().IsEmpty() )
22 // std::cout << "#" << GetOpenedAnchor() << std::endl;
23 LoadPage(_T("#"+GetOpenedAnchor()));
25 mBrowser->UpdateURL();
29 //========================================================================
31 //========================================================================
42 //========================================================================
44 BEGIN_EVENT_TABLE(WxBrowser, wxPanel)
45 EVT_BUTTON(bwd_id, WxBrowser::OnBackButton )
46 EVT_BUTTON(fwd_id, WxBrowser::OnForwardButton )
47 EVT_BUTTON(home_id, WxBrowser::OnHomeButton )
48 EVT_BUTTON(reload_id, WxBrowser::OnReloadButton )
49 EVT_BUTTON(include_id, WxBrowser::OnIncludeFileButton )
50 EVT_TEXT_ENTER(url_id, WxBrowser::OnURLEnter )
51 EVT_HTML_LINK_CLICKED(html_id, WxBrowser::OnLinkClicked)
53 //========================================================================
56 //========================================================================
57 WxBrowser::WxBrowser ( wxWindow *parent, wxSize size )
59 wxPanel ( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
62 wxPanel* panel = this;
64 wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
67 wxBoxSizer *bsizer = new wxBoxSizer(wxHORIZONTAL);
69 sizer->Add ( bsizer, 0, wxGROW );
72 mwxBackButton = new wxButton( panel, bwd_id,_T("<"),wxDefaultPosition,
73 wxDefaultSize,wxBU_EXACTFIT);
74 bsizer->Add ( mwxBackButton, 0, wxALIGN_CENTRE |
75 wxLEFT | wxTOP | wxBOTTOM , 10 );
77 mwxForwardButton = new wxButton( panel, fwd_id,_T(">"),wxDefaultPosition,
78 wxDefaultSize,wxBU_EXACTFIT);
79 bsizer->Add ( mwxForwardButton, 0, wxALIGN_CENTRE |
80 wxTOP | wxBOTTOM , 10);
82 mwxHomeButton = new wxButton( panel, home_id,_T("~"),wxDefaultPosition,
83 wxDefaultSize,wxBU_EXACTFIT);
84 bsizer->Add ( mwxHomeButton, 0, wxALIGN_CENTRE |
85 wxLEFT | wxTOP | wxBOTTOM , 10 );
87 mwxReloadButton = new wxButton( panel, reload_id,_T("."),wxDefaultPosition,
88 wxDefaultSize,wxBU_EXACTFIT);
89 bsizer->Add ( mwxReloadButton, 0, wxALIGN_CENTRE |
90 wxTOP | wxBOTTOM , 10 );
92 mwxIncludeFileButton = new wxButton( panel, include_id,
93 _T("*"),wxDefaultPosition,
94 wxDefaultSize,wxBU_EXACTFIT);
95 bsizer->Add ( mwxIncludeFileButton, 0, wxALIGN_CENTRE |
96 wxLEFT | wxTOP | wxBOTTOM , 10 );
98 mwxURL = new wxTextCtrl(panel,url_id,_T(""),
102 mwxURL->SetLabel(_T("URL"));
103 bsizer->Add(mwxURL, 1, wxGROW | wxALL, 10);
106 mwxHtmlWindow = new WxHtmlWindow(parent,html_id,this,size);
116 mwxHtmlWindow->SetBorders(5);
117 // mwxHtmlWindow->FitInside();
118 wxStaticBoxSizer* hw =
119 new wxStaticBoxSizer( new wxStaticBox( this, -1, _T(""),
123 hw->Add ( mwxHtmlWindow, 1, wxGROW );
124 //sizer->Add ( mwxHtmlWindow, 1, wxGROW );
126 sizer->Add ( hw, 1, wxGROW ); // | wxLEFT | wxRIGHT | wxBOTTOM, 10 );
130 panel -> SetSizer(sizer);
131 panel -> SetAutoLayout(true);
137 Connect( mwxBackButton->GetId(),
138 wxEVT_COMMAND_BUTTON_CLICKED ,
139 (wxObjectEventFunction)
140 (void (wxPanel::*)(wxEvent&))
141 &WxBrowser::OnBackButton );
142 Connect( mwxForwardButton->GetId(),
143 wxEVT_COMMAND_BUTTON_CLICKED ,
144 (wxObjectEventFunction)
145 (void (wxPanel::*)(wxEvent&))
146 &WxBrowser::OnForwardButton );
148 std::cout << "e="<<wxEVT_COMMAND_HTML_LINK_CLICKED<<std::endl;
150 Connect( wxID_ANY, //mwxHtmlWindow->GetId(),
151 wxEVT_COMMAND_HTML_LINK_CLICKED ,
152 wxHtmlLinkEventHandler(
153 //(wxObjectEventFunction)
154 // (void (wxPanel::*)(wxEvent&))&
155 WxBrowser::OnLinkClicked ) );
156 Connect( mwxHtmlWindow->GetId(),
157 wxEVT_COMMAND_HTML_CELL_HOVER,
158 //(wxObjectEventFunction)
159 wxHtmlCellEventHandler(
160 // (void (wxPanel::*)(wxHtmlCellEvent&))&
161 WxBrowser::OnCell ) );
164 //========================================================================
167 //========================================================================
168 bool WxBrowser::GoTo(std::string& file)
170 // std::cout << "goto"<<std::endl;
171 bool r = mwxHtmlWindow->LoadPage(std2wx(file));
175 //========================================================================
177 //========================================================================
178 void WxBrowser::OnBackButton(wxCommandEvent& )
180 // std::cout << "back"<<std::endl;
181 mwxHtmlWindow->HistoryBack();
184 //========================================================================
186 //========================================================================
187 void WxBrowser::OnForwardButton(wxCommandEvent& )
189 // std::cout << "forward"<<std::endl;
190 mwxHtmlWindow->HistoryForward();
193 //========================================================================
195 //========================================================================
196 void WxBrowser::GoHome()
198 std::string url = ConfigurationFile::GetInstance().Get_doc_path();
199 url += "/bbtkWebSite/menu.html";
200 if (Utilities::FileExists(url))
209 //========================================================================
211 //========================================================================
212 void WxBrowser::OnHomeButton(wxCommandEvent& )
216 //========================================================================
218 //========================================================================
219 void WxBrowser::OnReloadButton(wxCommandEvent& e)
223 //========================================================================
225 //========================================================================
226 void WxBrowser::OnIncludeFileButton(wxCommandEvent& )
228 std::string filename = wx2std(mwxURL->GetValue());
229 size_t s = filename.length();
231 WxConsole* C = WxConsole::GetInstance();
234 if ((s>3) && (filename[s-1]=='s')
235 && (filename[s-2]=='b')
236 && (filename[s-3]=='b')
237 && (filename[s-4]=='.'))
239 C->SetStatusText(_T("Executing ")+mwxURL->GetValue());
240 C->InterpretFile(filename);
244 C->SetStatusText(_T("The current page is not a bbs file : cannot execute it"));
248 std::string bbdoc = ConfigurationFile::GetInstance().Get_url();
250 std::string command("cd ");
252 command += " & bbi -q -n make-index.bbs";
253 system(command.c_str());
256 //========================================================================
258 //========================================================================
259 void WxBrowser::OnURLEnter( wxCommandEvent&)
261 //std::cout << "OnURL"<<std::endl;
262 mwxHtmlWindow->LoadPage(mwxURL->GetValue());
264 //========================================================================
266 //========================================================================
267 void WxBrowser::OnLinkClicked(wxHtmlLinkEvent& e)
269 std::cout << "WxBrowser::OnLinkClicked"<<std::endl;
270 std::cout << e.GetLinkInfo().GetHref()<<std::endl;
271 mwxHtmlWindow->LoadPage(e.GetLinkInfo().GetHref());
274 //========================================================================
277 void WxBrowser::OnCell(wxHtmlCellEvent& )
279 std::cout << "OnCell"<<std::endl;
283 //========================================================================
284 void WxBrowser::UpdateURL()
287 wxString s = mwxHtmlWindow->GetOpenedPage();
288 if (!mwxHtmlWindow->GetOpenedAnchor().IsEmpty())
290 s += _T("#") + mwxHtmlWindow->GetOpenedAnchor();
293 mwxURL->AppendText(s);
295 //========================================================================
297 //========================================================================
298 void WxBrowser::SetSize( wxSize s)
300 // wxPanel::SetSize(s);
301 mwxHtmlWindow->SetSize(s);
304 //========================================================================