3 #include "bbtkWxBrowser.h"
4 #include "bbtkWxBlackBox.h"
6 #include "bbtkConfigurationFile.h"
7 #include "bbtkUtilities.h"
12 //========================================================================
13 void WxHtmlWindow::OnLinkClicked(const wxHtmlLinkInfo& e)
15 // std::cout << "WxHtmlWindow::OnLink"<<std::endl;
16 // std::cout << e.GetHref()<<std::endl;
17 LoadPage(e.GetHref());
18 if ( ! GetOpenedAnchor().IsEmpty() )
20 // std::cout << "#" << GetOpenedAnchor() << std::endl;
21 LoadPage(_T("#"+GetOpenedAnchor()));
23 mBrowser->UpdateURL();
27 //========================================================================
29 //========================================================================
40 //========================================================================
42 BEGIN_EVENT_TABLE(WxBrowser, wxPanel)
43 EVT_BUTTON(bwd_id, WxBrowser::OnBackButton )
44 EVT_BUTTON(fwd_id, WxBrowser::OnForwardButton )
45 EVT_BUTTON(home_id, WxBrowser::OnHomeButton )
46 EVT_BUTTON(reload_id, WxBrowser::OnReloadButton )
47 EVT_BUTTON(index_id, WxBrowser::OnMakeIndexButton )
48 EVT_TEXT_ENTER(url_id, WxBrowser::OnURLEnter )
49 EVT_HTML_LINK_CLICKED(html_id, WxBrowser::OnLinkClicked)
51 //========================================================================
54 //========================================================================
55 WxBrowser::WxBrowser ( wxWindow *parent, wxSize size )
57 wxPanel ( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
60 wxPanel* panel = this;
62 wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
65 wxBoxSizer *bsizer = new wxBoxSizer(wxHORIZONTAL);
67 sizer->Add ( bsizer, 0, wxGROW );
70 mwxBackButton = new wxButton( panel, bwd_id,_T("<"),wxDefaultPosition,
71 wxDefaultSize,wxBU_EXACTFIT);
72 bsizer->Add ( mwxBackButton, 0, wxALIGN_CENTRE |
73 wxLEFT | wxTOP | wxBOTTOM , 10 );
75 mwxForwardButton = new wxButton( panel, fwd_id,_T(">"),wxDefaultPosition,
76 wxDefaultSize,wxBU_EXACTFIT);
77 bsizer->Add ( mwxForwardButton, 0, wxALIGN_CENTRE |
78 wxTOP | wxBOTTOM , 10);
80 mwxHomeButton = new wxButton( panel, home_id,_T("~"),wxDefaultPosition,
81 wxDefaultSize,wxBU_EXACTFIT);
82 bsizer->Add ( mwxHomeButton, 0, wxALIGN_CENTRE |
83 wxLEFT | wxTOP | wxBOTTOM , 10 );
85 mwxReloadButton = new wxButton( panel, reload_id,_T("."),wxDefaultPosition,
86 wxDefaultSize,wxBU_EXACTFIT);
87 bsizer->Add ( mwxReloadButton, 0, wxALIGN_CENTRE |
88 wxTOP | wxBOTTOM , 10 );
90 mwxMakeIndexButton = new wxButton( panel, index_id,
91 _T("*"),wxDefaultPosition,
92 wxDefaultSize,wxBU_EXACTFIT);
93 bsizer->Add ( mwxMakeIndexButton, 0, wxALIGN_CENTRE |
94 wxLEFT | wxTOP | wxBOTTOM , 10 );
96 mwxURL = new wxTextCtrl(panel,url_id,_T(""),
100 mwxURL->SetLabel(_T("URL"));
101 bsizer->Add(mwxURL, 1, wxGROW | wxALL, 10);
104 mwxHtmlWindow = new WxHtmlWindow(parent,html_id,this,size);
114 mwxHtmlWindow->SetBorders(5);
115 // mwxHtmlWindow->FitInside();
116 wxStaticBoxSizer* hw =
117 new wxStaticBoxSizer( new wxStaticBox( this, -1, _T(""),
121 hw->Add ( mwxHtmlWindow, 1, wxGROW );
122 //sizer->Add ( mwxHtmlWindow, 1, wxGROW );
124 sizer->Add ( hw, 1, wxGROW ); // | wxLEFT | wxRIGHT | wxBOTTOM, 10 );
128 panel -> SetSizer(sizer);
129 panel -> SetAutoLayout(true);
135 Connect( mwxBackButton->GetId(),
136 wxEVT_COMMAND_BUTTON_CLICKED ,
137 (wxObjectEventFunction)
138 (void (wxPanel::*)(wxEvent&))
139 &WxBrowser::OnBackButton );
140 Connect( mwxForwardButton->GetId(),
141 wxEVT_COMMAND_BUTTON_CLICKED ,
142 (wxObjectEventFunction)
143 (void (wxPanel::*)(wxEvent&))
144 &WxBrowser::OnForwardButton );
146 std::cout << "e="<<wxEVT_COMMAND_HTML_LINK_CLICKED<<std::endl;
148 Connect( wxID_ANY, //mwxHtmlWindow->GetId(),
149 wxEVT_COMMAND_HTML_LINK_CLICKED ,
150 wxHtmlLinkEventHandler(
151 //(wxObjectEventFunction)
152 // (void (wxPanel::*)(wxEvent&))&
153 WxBrowser::OnLinkClicked ) );
154 Connect( mwxHtmlWindow->GetId(),
155 wxEVT_COMMAND_HTML_CELL_HOVER,
156 //(wxObjectEventFunction)
157 wxHtmlCellEventHandler(
158 // (void (wxPanel::*)(wxHtmlCellEvent&))&
159 WxBrowser::OnCell ) );
162 //========================================================================
165 //========================================================================
166 bool WxBrowser::GoTo(std::string& file)
168 // std::cout << "goto"<<std::endl;
169 bool r = mwxHtmlWindow->LoadPage(std2wx(file));
173 //========================================================================
175 //========================================================================
176 void WxBrowser::OnBackButton(wxCommandEvent& )
178 // std::cout << "back"<<std::endl;
179 mwxHtmlWindow->HistoryBack();
182 //========================================================================
184 //========================================================================
185 void WxBrowser::OnForwardButton(wxCommandEvent& )
187 // std::cout << "forward"<<std::endl;
188 mwxHtmlWindow->HistoryForward();
191 //========================================================================
193 //========================================================================
194 void WxBrowser::GoHome()
196 std::string url = ConfigurationFile::GetInstance().Get_url();
197 url += "/bbtkWebSite/menu.html";
198 if (Utilities::FileExists(url))
207 //========================================================================
209 //========================================================================
210 void WxBrowser::OnHomeButton(wxCommandEvent& )
214 //========================================================================
216 //========================================================================
217 void WxBrowser::OnReloadButton(wxCommandEvent& )
219 std::string s = wx2std(mwxHtmlWindow->GetOpenedPage());
222 //========================================================================
224 //========================================================================
225 void WxBrowser::OnMakeIndexButton(wxCommandEvent& )
228 std::string bbdoc = ConfigurationFile::GetInstance().Get_url();
230 std::string command("cd ");
232 command += " & bbi -q -n make-index.bbs";
233 system(command.c_str());
236 //========================================================================
238 //========================================================================
239 void WxBrowser::OnURLEnter( wxCommandEvent&)
241 //std::cout << "OnURL"<<std::endl;
242 mwxHtmlWindow->LoadPage(mwxURL->GetValue());
244 //========================================================================
246 //========================================================================
247 void WxBrowser::OnLinkClicked(wxHtmlLinkEvent& e)
249 std::cout << "WxBrowser::OnLinkClicked"<<std::endl;
250 std::cout << e.GetLinkInfo().GetHref()<<std::endl;
251 mwxHtmlWindow->LoadPage(e.GetLinkInfo().GetHref());
254 //========================================================================
257 void WxBrowser::OnCell(wxHtmlCellEvent& )
259 std::cout << "OnCell"<<std::endl;
263 //========================================================================
264 void WxBrowser::UpdateURL()
267 wxString s = mwxHtmlWindow->GetOpenedPage();
268 if (!mwxHtmlWindow->GetOpenedAnchor().IsEmpty())
270 s += _T("#") + mwxHtmlWindow->GetOpenedAnchor();
273 mwxURL->AppendText(s);
275 //========================================================================
277 //========================================================================
278 void WxBrowser::SetSize( wxSize s)
280 // wxPanel::SetSize(s);
281 mwxHtmlWindow->SetSize(s);
284 //========================================================================