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 //========================================================================
38 //========================================================================
40 BEGIN_EVENT_TABLE(WxBrowser, wxPanel)
41 EVT_BUTTON(bwd_id, WxBrowser::OnBackButton )
42 EVT_BUTTON(fwd_id, WxBrowser::OnForwardButton )
43 EVT_BUTTON(home_id, WxBrowser::OnHomeButton )
44 EVT_BUTTON(index_id, WxBrowser::OnMakeIndexButton )
45 EVT_TEXT_ENTER(url_id, WxBrowser::OnURLEnter )
46 EVT_HTML_LINK_CLICKED(html_id, WxBrowser::OnLinkClicked)
48 //========================================================================
51 //========================================================================
52 WxBrowser::WxBrowser ( wxWindow *parent, wxSize size )
54 wxPanel ( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
57 wxPanel* panel = this;
59 wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
62 wxBoxSizer *bsizer = new wxBoxSizer(wxHORIZONTAL);
64 sizer->Add ( bsizer, 0, wxGROW );
67 mwxBackButton = new wxButton( panel, bwd_id,_T("<"),wxDefaultPosition,
68 wxDefaultSize,wxBU_EXACTFIT);
69 bsizer->Add ( mwxBackButton, 0, wxALIGN_CENTRE |
70 wxLEFT | wxTOP | wxBOTTOM , 10 );
72 mwxForwardButton = new wxButton( panel, fwd_id,_T(">"),wxDefaultPosition,
73 wxDefaultSize,wxBU_EXACTFIT);
74 bsizer->Add ( mwxForwardButton, 0, wxALIGN_CENTRE |
75 wxTOP | wxBOTTOM , 10);
77 mwxHomeButton = new wxButton( panel, home_id,_T("~"),wxDefaultPosition,
78 wxDefaultSize,wxBU_EXACTFIT);
79 bsizer->Add ( mwxHomeButton, 0, wxALIGN_CENTRE |
80 wxLEFT | wxTOP | wxBOTTOM , 10 );
82 mwxMakeIndexButton = new wxButton( panel, index_id,
83 _T("*"),wxDefaultPosition,
84 wxDefaultSize,wxBU_EXACTFIT);
85 bsizer->Add ( mwxMakeIndexButton, 0, wxALIGN_CENTRE |
86 wxLEFT | wxTOP | wxBOTTOM , 10 );
88 mwxURL = new wxTextCtrl(panel,url_id,_T(""),
92 mwxURL->SetLabel(_T("URL"));
93 bsizer->Add(mwxURL, 1, wxGROW | wxALL, 10);
96 mwxHtmlWindow = new WxHtmlWindow(parent,html_id,this,size);
106 mwxHtmlWindow->SetBorders(5);
107 // mwxHtmlWindow->FitInside();
108 wxStaticBoxSizer* hw =
109 new wxStaticBoxSizer( new wxStaticBox( this, -1, _T(""),
113 hw->Add ( mwxHtmlWindow, 1, wxGROW );
114 //sizer->Add ( mwxHtmlWindow, 1, wxGROW );
116 sizer->Add ( hw, 1, wxGROW ); // | wxLEFT | wxRIGHT | wxBOTTOM, 10 );
120 panel -> SetSizer(sizer);
121 panel -> SetAutoLayout(true);
125 Connect( mwxBackButton->GetId(),
126 wxEVT_COMMAND_BUTTON_CLICKED ,
127 (wxObjectEventFunction)
128 (void (wxPanel::*)(wxEvent&))
129 &WxBrowser::OnBackButton );
130 Connect( mwxForwardButton->GetId(),
131 wxEVT_COMMAND_BUTTON_CLICKED ,
132 (wxObjectEventFunction)
133 (void (wxPanel::*)(wxEvent&))
134 &WxBrowser::OnForwardButton );
136 std::cout << "e="<<wxEVT_COMMAND_HTML_LINK_CLICKED<<std::endl;
138 Connect( wxID_ANY, //mwxHtmlWindow->GetId(),
139 wxEVT_COMMAND_HTML_LINK_CLICKED ,
140 wxHtmlLinkEventHandler(
141 //(wxObjectEventFunction)
142 // (void (wxPanel::*)(wxEvent&))&
143 WxBrowser::OnLinkClicked ) );
144 Connect( mwxHtmlWindow->GetId(),
145 wxEVT_COMMAND_HTML_CELL_HOVER,
146 //(wxObjectEventFunction)
147 wxHtmlCellEventHandler(
148 // (void (wxPanel::*)(wxHtmlCellEvent&))&
149 WxBrowser::OnCell ) );
152 //========================================================================
155 //========================================================================
156 bool WxBrowser::GoTo(std::string& file)
158 // std::cout << "goto"<<std::endl;
159 bool r = mwxHtmlWindow->LoadPage(std2wx(file));
163 //========================================================================
165 //========================================================================
166 void WxBrowser::OnBackButton(wxCommandEvent& )
168 // std::cout << "back"<<std::endl;
169 mwxHtmlWindow->HistoryBack();
172 //========================================================================
174 //========================================================================
175 void WxBrowser::OnForwardButton(wxCommandEvent& )
177 // std::cout << "forward"<<std::endl;
178 mwxHtmlWindow->HistoryForward();
181 //========================================================================
183 //========================================================================
184 void WxBrowser::OnHomeButton(wxCommandEvent& )
186 std::string url = ConfigurationFile::GetInstance().Get_url();
187 url += "/bbtkWebSite/menu.html";
190 //========================================================================
192 //========================================================================
193 void WxBrowser::OnMakeIndexButton(wxCommandEvent& )
196 std::string bbdoc = ConfigurationFile::GetInstance().Get_url();
198 std::string command("cd ");
200 command += " & bbi -q -n make-index.bbs";
201 system(command.c_str());
204 //========================================================================
206 //========================================================================
207 void WxBrowser::OnURLEnter( wxCommandEvent&)
209 //std::cout << "OnURL"<<std::endl;
210 mwxHtmlWindow->LoadPage(mwxURL->GetValue());
212 //========================================================================
214 //========================================================================
215 void WxBrowser::OnLinkClicked(wxHtmlLinkEvent& e)
217 std::cout << "WxBrowser::OnLinkClicked"<<std::endl;
218 std::cout << e.GetLinkInfo().GetHref()<<std::endl;
219 mwxHtmlWindow->LoadPage(e.GetLinkInfo().GetHref());
222 //========================================================================
225 void WxBrowser::OnCell(wxHtmlCellEvent& )
227 std::cout << "OnCell"<<std::endl;
231 //========================================================================
232 void WxBrowser::UpdateURL()
235 wxString s = mwxHtmlWindow->GetOpenedPage();
236 if (!mwxHtmlWindow->GetOpenedAnchor().IsEmpty())
238 s += _T("#") + mwxHtmlWindow->GetOpenedAnchor();
241 mwxURL->AppendText(s);
243 //========================================================================
245 //========================================================================
246 void WxBrowser::SetSize( wxSize s)
248 // wxPanel::SetSize(s);
249 mwxHtmlWindow->SetSize(s);
252 //========================================================================