3 #include "bbtkWxBrowser.h"
4 #include "bbtkWxBlackBox.h"
6 #include "bbtkConfigurationFile.h"
11 //========================================================================
12 void WxHtmlWindow::OnLinkClicked(const wxHtmlLinkInfo& e)
14 // std::cout << "WxHtmlWindow::OnLink"<<std::endl;
15 // std::cout << e.GetHref()<<std::endl;
16 LoadPage(e.GetHref());
17 if ( ! GetOpenedAnchor().IsEmpty() )
19 // std::cout << "#" << GetOpenedAnchor() << std::endl;
20 LoadPage(_T("#"+GetOpenedAnchor()));
22 mBrowser->UpdateURL();
26 //========================================================================
28 //========================================================================
39 //========================================================================
41 BEGIN_EVENT_TABLE(WxBrowser, wxPanel)
42 EVT_BUTTON(bwd_id, WxBrowser::OnBackButton )
43 EVT_BUTTON(fwd_id, WxBrowser::OnForwardButton )
44 EVT_BUTTON(home_id, WxBrowser::OnHomeButton )
45 EVT_BUTTON(reload_id, WxBrowser::OnReloadButton )
46 EVT_BUTTON(index_id, WxBrowser::OnMakeIndexButton )
47 EVT_TEXT_ENTER(url_id, WxBrowser::OnURLEnter )
48 EVT_HTML_LINK_CLICKED(html_id, WxBrowser::OnLinkClicked)
50 //========================================================================
53 //========================================================================
54 WxBrowser::WxBrowser ( wxWindow *parent, wxSize size )
56 wxPanel ( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
59 wxPanel* panel = this;
61 wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
64 wxBoxSizer *bsizer = new wxBoxSizer(wxHORIZONTAL);
66 sizer->Add ( bsizer, 0, wxGROW );
69 mwxBackButton = new wxButton( panel, bwd_id,_T("<"),wxDefaultPosition,
70 wxDefaultSize,wxBU_EXACTFIT);
71 bsizer->Add ( mwxBackButton, 0, wxALIGN_CENTRE |
72 wxLEFT | wxTOP | wxBOTTOM , 10 );
74 mwxForwardButton = new wxButton( panel, fwd_id,_T(">"),wxDefaultPosition,
75 wxDefaultSize,wxBU_EXACTFIT);
76 bsizer->Add ( mwxForwardButton, 0, wxALIGN_CENTRE |
77 wxTOP | wxBOTTOM , 10);
79 mwxHomeButton = new wxButton( panel, home_id,_T("~"),wxDefaultPosition,
80 wxDefaultSize,wxBU_EXACTFIT);
81 bsizer->Add ( mwxHomeButton, 0, wxALIGN_CENTRE |
82 wxLEFT | wxTOP | wxBOTTOM , 10 );
84 mwxReloadButton = new wxButton( panel, reload_id,_T("."),wxDefaultPosition,
85 wxDefaultSize,wxBU_EXACTFIT);
86 bsizer->Add ( mwxReloadButton, 0, wxALIGN_CENTRE |
87 wxTOP | wxBOTTOM , 10 );
89 mwxMakeIndexButton = new wxButton( panel, index_id,
90 _T("*"),wxDefaultPosition,
91 wxDefaultSize,wxBU_EXACTFIT);
92 bsizer->Add ( mwxMakeIndexButton, 0, wxALIGN_CENTRE |
93 wxLEFT | wxTOP | wxBOTTOM , 10 );
95 mwxURL = new wxTextCtrl(panel,url_id,_T(""),
99 mwxURL->SetLabel(_T("URL"));
100 bsizer->Add(mwxURL, 1, wxGROW | wxALL, 10);
103 mwxHtmlWindow = new WxHtmlWindow(parent,html_id,this,size);
113 mwxHtmlWindow->SetBorders(5);
114 // mwxHtmlWindow->FitInside();
115 wxStaticBoxSizer* hw =
116 new wxStaticBoxSizer( new wxStaticBox( this, -1, _T(""),
120 hw->Add ( mwxHtmlWindow, 1, wxGROW );
121 //sizer->Add ( mwxHtmlWindow, 1, wxGROW );
123 sizer->Add ( hw, 1, wxGROW ); // | wxLEFT | wxRIGHT | wxBOTTOM, 10 );
127 panel -> SetSizer(sizer);
128 panel -> SetAutoLayout(true);
134 Connect( mwxBackButton->GetId(),
135 wxEVT_COMMAND_BUTTON_CLICKED ,
136 (wxObjectEventFunction)
137 (void (wxPanel::*)(wxEvent&))
138 &WxBrowser::OnBackButton );
139 Connect( mwxForwardButton->GetId(),
140 wxEVT_COMMAND_BUTTON_CLICKED ,
141 (wxObjectEventFunction)
142 (void (wxPanel::*)(wxEvent&))
143 &WxBrowser::OnForwardButton );
145 std::cout << "e="<<wxEVT_COMMAND_HTML_LINK_CLICKED<<std::endl;
147 Connect( wxID_ANY, //mwxHtmlWindow->GetId(),
148 wxEVT_COMMAND_HTML_LINK_CLICKED ,
149 wxHtmlLinkEventHandler(
150 //(wxObjectEventFunction)
151 // (void (wxPanel::*)(wxEvent&))&
152 WxBrowser::OnLinkClicked ) );
153 Connect( mwxHtmlWindow->GetId(),
154 wxEVT_COMMAND_HTML_CELL_HOVER,
155 //(wxObjectEventFunction)
156 wxHtmlCellEventHandler(
157 // (void (wxPanel::*)(wxHtmlCellEvent&))&
158 WxBrowser::OnCell ) );
161 //========================================================================
164 //========================================================================
165 bool WxBrowser::GoTo(std::string& file)
167 // std::cout << "goto"<<std::endl;
168 bool r = mwxHtmlWindow->LoadPage(std2wx(file));
172 //========================================================================
174 //========================================================================
175 void WxBrowser::OnBackButton(wxCommandEvent& )
177 // std::cout << "back"<<std::endl;
178 mwxHtmlWindow->HistoryBack();
181 //========================================================================
183 //========================================================================
184 void WxBrowser::OnForwardButton(wxCommandEvent& )
186 // std::cout << "forward"<<std::endl;
187 mwxHtmlWindow->HistoryForward();
190 //========================================================================
192 //========================================================================
193 void WxBrowser::GoHome()
195 std::string url = ConfigurationFile::GetInstance().Get_url();
196 url += "/bbtkWebSite/menu.html";
199 //========================================================================
201 //========================================================================
202 void WxBrowser::OnHomeButton(wxCommandEvent& )
206 //========================================================================
208 //========================================================================
209 void WxBrowser::OnReloadButton(wxCommandEvent& )
211 std::string s = wx2std(mwxHtmlWindow->GetOpenedPage());
214 //========================================================================
216 //========================================================================
217 void WxBrowser::OnMakeIndexButton(wxCommandEvent& )
220 std::string bbdoc = ConfigurationFile::GetInstance().Get_url();
222 std::string command("cd ");
224 command += " & bbi -q -n make-index.bbs";
225 system(command.c_str());
228 //========================================================================
230 //========================================================================
231 void WxBrowser::OnURLEnter( wxCommandEvent&)
233 //std::cout << "OnURL"<<std::endl;
234 mwxHtmlWindow->LoadPage(mwxURL->GetValue());
236 //========================================================================
238 //========================================================================
239 void WxBrowser::OnLinkClicked(wxHtmlLinkEvent& e)
241 std::cout << "WxBrowser::OnLinkClicked"<<std::endl;
242 std::cout << e.GetLinkInfo().GetHref()<<std::endl;
243 mwxHtmlWindow->LoadPage(e.GetLinkInfo().GetHref());
246 //========================================================================
249 void WxBrowser::OnCell(wxHtmlCellEvent& )
251 std::cout << "OnCell"<<std::endl;
255 //========================================================================
256 void WxBrowser::UpdateURL()
259 wxString s = mwxHtmlWindow->GetOpenedPage();
260 if (!mwxHtmlWindow->GetOpenedAnchor().IsEmpty())
262 s += _T("#") + mwxHtmlWindow->GetOpenedAnchor();
265 mwxURL->AppendText(s);
267 //========================================================================
269 //========================================================================
270 void WxBrowser::SetSize( wxSize s)
272 // wxPanel::SetSize(s);
273 mwxHtmlWindow->SetSize(s);
276 //========================================================================