X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3f6bd7c1c5d9c63824c6e74982ac4b583b31d9fe..e8a5d614ca4d8abf5c933409be33ecd4216f5306:/samples/html/test/test.cpp diff --git a/samples/html/test/test.cpp b/samples/html/test/test.cpp index d9e8cd3c22..c726b60907 100644 --- a/samples/html/test/test.cpp +++ b/samples/html/test/test.cpp @@ -8,11 +8,6 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#if defined(__GNUG__) && !defined(__APPLE__) - #pragma implementation "test.cpp" - #pragma interface "test.cpp" -#endif - // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" @@ -21,7 +16,7 @@ #endif // For all others, include the necessary headers (this file is usually all you -// need because it includes almost all "standard" wxWindows headers +// need because it includes almost all "standard" wxWidgets headers #ifndef WX_PRECOMP #include "wx/wx.h" #endif @@ -32,6 +27,9 @@ #include "wx/html/htmlproc.h" #include "wx/fs_inet.h" #include "wx/filedlg.h" +#include "wx/utils.h" + +#include "../../sample.xpm" // ---------------------------------------------------------------------------- // private classes @@ -44,6 +42,20 @@ public: virtual bool OnInit(); }; +// Define a new html window type: this is a wrapper for handling wxHtmlWindow events +class MyHtmlWindow : public wxHtmlWindow +{ +public: + MyHtmlWindow(wxWindow *parent) : wxHtmlWindow( parent ) { } + + virtual wxHtmlOpeningStatus OnOpeningURL(wxHtmlURLType WXUNUSED(type), + const wxString& WXUNUSED(url), + wxString *WXUNUSED(redirect)) const; + +private: + DECLARE_NO_COPY_CLASS(MyHtmlWindow) +}; + // Define a new frame type: this is going to be our main frame class MyFrame : public wxFrame { @@ -54,15 +66,16 @@ public: // event handlers (these functions should _not_ be virtual) void OnQuit(wxCommandEvent& event); void OnPageOpen(wxCommandEvent& event); + void OnDefaultBrowser(wxCommandEvent& event); void OnBack(wxCommandEvent& event); void OnForward(wxCommandEvent& event); void OnProcessor(wxCommandEvent& event); private: - wxHtmlWindow *m_Html; + MyHtmlWindow *m_Html; wxHtmlProcessor *m_Processor; - // Any class wishing to process wxWindows events must use this macro + // Any class wishing to process wxWidgets events must use this macro DECLARE_EVENT_TABLE() }; @@ -91,18 +104,20 @@ enum { // menu items ID_PageOpen = wxID_HIGHEST, + ID_DefaultBrowser, ID_Back, ID_Forward, ID_Processor }; // ---------------------------------------------------------------------------- -// event tables and other macros for wxWindows +// event tables and other macros for wxWidgets // ---------------------------------------------------------------------------- BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(wxID_EXIT, MyFrame::OnQuit) EVT_MENU(ID_PageOpen, MyFrame::OnPageOpen) + EVT_MENU(ID_DefaultBrowser, MyFrame::OnDefaultBrowser) EVT_MENU(ID_Back, MyFrame::OnBack) EVT_MENU(ID_Forward, MyFrame::OnForward) EVT_MENU(ID_Processor, MyFrame::OnProcessor) @@ -130,7 +145,7 @@ bool MyApp::OnInit() wxFileSystem::AddHandler(new wxInternetFSHandler); #endif - SetVendorName(wxT("wxWindows")); + SetVendorName(wxT("wxWidgets")); SetAppName(wxT("wxHtmlTest")); // the following call to wxConfig::Get will use it to create an object... @@ -157,6 +172,7 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) wxMenu *menuNav = new wxMenu; menuFile->Append(ID_PageOpen, _("&Open HTML page...")); + menuFile->Append(ID_DefaultBrowser, _("&Open current page with default browser")); menuFile->AppendSeparator(); menuFile->Append(ID_Processor, _("&Remove bold attribute"), wxEmptyString, wxITEM_CHECK); @@ -174,6 +190,8 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) // ... and attach this menu bar to the frame SetMenuBar(menuBar); + SetIcon(wxIcon(sample_xpm)); + #if wxUSE_ACCEL // Create convenient accelerators for Back and Forward navigation wxAcceleratorEntry entries[2]; @@ -184,13 +202,17 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) SetAcceleratorTable(accel); #endif // wxUSE_ACCEL - CreateStatusBar(1); +#if wxUSE_STATUSBAR + CreateStatusBar(2); +#endif // wxUSE_STATUSBAR m_Processor = new BoldProcessor; m_Processor->Enable(false); - m_Html = new wxHtmlWindow(this); + m_Html = new MyHtmlWindow(this); m_Html->SetRelatedFrame(this, _("HTML : %s")); +#if wxUSE_STATUSBAR m_Html->SetRelatedStatusBar(0); +#endif // wxUSE_STATUSBAR m_Html->ReadCustomization(wxConfig::Get()); m_Html->LoadFile(wxFileName(wxT("test.htm"))); m_Html->AddProcessor(m_Processor); @@ -210,11 +232,22 @@ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnPageOpen(wxCommandEvent& WXUNUSED(event)) { +#if wxUSE_FILEDLG wxString p = wxFileSelector(_("Open HTML document"), wxEmptyString, - wxEmptyString, wxEmptyString, wxT("HTML files|*.htm")); + wxEmptyString, wxEmptyString, wxT("HTML files|*.htm;*.html")); - if (p != wxEmptyString) - m_Html->LoadPage(p); + if (!p.empty()) + m_Html->LoadFile(wxFileName(p)); +#endif // wxUSE_FILEDLG +} + +void MyFrame::OnDefaultBrowser(wxCommandEvent& WXUNUSED(event)) +{ + wxString page = m_Html->GetOpenedPage(); + if (!page.empty()) + { + wxLaunchDefaultBrowser(page); + } } void MyFrame::OnBack(wxCommandEvent& WXUNUSED(event)) @@ -238,3 +271,11 @@ void MyFrame::OnProcessor(wxCommandEvent& WXUNUSED(event)) m_Processor->Enable(!m_Processor->IsEnabled()); m_Html->LoadPage(m_Html->GetOpenedPage()); } + +wxHtmlOpeningStatus MyHtmlWindow::OnOpeningURL(wxHtmlURLType WXUNUSED(type), + const wxString& url, + wxString *WXUNUSED(redirect)) const +{ + GetRelatedFrame()->SetStatusText(url + _T(" lately opened"),1); + return wxHTML_OPEN; +}