X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a1c3cdc4a2c4cc2b15d7fdf60c1be228f9fbc520..28f15a1f70e45c276740c70c518efd03fcd1c227:/samples/html/test/test.cpp diff --git a/samples/html/test/test.cpp b/samples/html/test/test.cpp index eeab3617a7..ae1dee0c81 100644 --- a/samples/html/test/test.cpp +++ b/samples/html/test/test.cpp @@ -28,6 +28,8 @@ #include "wx/fs_inet.h" #include "wx/filedlg.h" #include "wx/utils.h" +#include "wx/clipbrd.h" +#include "wx/dataobj.h" #include "../../sample.xpm" @@ -53,6 +55,11 @@ public: wxString *WXUNUSED(redirect)) const; private: + void OnClipboardEvent(wxClipboardTextEvent& event); + +#if wxUSE_CLIPBOARD + DECLARE_EVENT_TABLE() +#endif // wxUSE_CLIPBOARD DECLARE_NO_COPY_CLASS(MyHtmlWindow) }; @@ -66,7 +73,8 @@ public: // event handlers (these functions should _not_ be virtual) void OnQuit(wxCommandEvent& event); void OnPageOpen(wxCommandEvent& event); - void OnDefaultBrowser(wxCommandEvent& event); + void OnDefaultLocalBrowser(wxCommandEvent& event); + void OnDefaultWebBrowser(wxCommandEvent& event); void OnBack(wxCommandEvent& event); void OnForward(wxCommandEvent& event); void OnProcessor(wxCommandEvent& event); @@ -108,7 +116,8 @@ enum { // menu items ID_PageOpen = wxID_HIGHEST, - ID_DefaultBrowser, + ID_DefaultLocalBrowser, + ID_DefaultWebBrowser, ID_Back, ID_Forward, ID_Processor @@ -121,7 +130,8 @@ enum 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_DefaultLocalBrowser, MyFrame::OnDefaultLocalBrowser) + EVT_MENU(ID_DefaultWebBrowser, MyFrame::OnDefaultWebBrowser) EVT_MENU(ID_Back, MyFrame::OnBack) EVT_MENU(ID_Forward, MyFrame::OnForward) EVT_MENU(ID_Processor, MyFrame::OnProcessor) @@ -180,7 +190,8 @@ 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->Append(ID_DefaultLocalBrowser, _("&Open current page with default browser")); + menuFile->Append(ID_DefaultWebBrowser, _("Open a &web page with default browser")); menuFile->AppendSeparator(); menuFile->Append(ID_Processor, _("&Remove bold attribute"), wxEmptyString, wxITEM_CHECK); @@ -260,7 +271,7 @@ void MyFrame::OnPageOpen(wxCommandEvent& WXUNUSED(event)) #endif // wxUSE_FILEDLG } -void MyFrame::OnDefaultBrowser(wxCommandEvent& WXUNUSED(event)) +void MyFrame::OnDefaultLocalBrowser(wxCommandEvent& WXUNUSED(event)) { wxString page = m_Html->GetOpenedPage(); if (!page.empty()) @@ -269,6 +280,15 @@ void MyFrame::OnDefaultBrowser(wxCommandEvent& WXUNUSED(event)) } } +void MyFrame::OnDefaultWebBrowser(wxCommandEvent& WXUNUSED(event)) +{ + wxString page = m_Html->GetOpenedPage(); + if (!page.empty()) + { + wxLaunchDefaultBrowser(wxT("http://www.google.com")); + } +} + void MyFrame::OnBack(wxCommandEvent& WXUNUSED(event)) { if (!m_Html->HistoryBack()) @@ -302,13 +322,13 @@ void MyFrame::OnHtmlLinkClicked(wxHtmlLinkEvent &event) void MyFrame::OnHtmlCellHover(wxHtmlCellEvent &event) { - wxLogMessage(wxT("Mouse moved over cell %d at %d;%d"), + wxLogMessage(wxT("Mouse moved over cell %p at %d;%d"), event.GetCell(), event.GetPoint().x, event.GetPoint().y); } void MyFrame::OnHtmlCellClicked(wxHtmlCellEvent &event) { - wxLogMessage(wxT("Click over cell %d at %d;%d"), + wxLogMessage(wxT("Click over cell %p at %d;%d"), event.GetCell(), event.GetPoint().x, event.GetPoint().y); // if we don't skip the event, OnHtmlLinkClicked won't be called! @@ -322,3 +342,32 @@ wxHtmlOpeningStatus MyHtmlWindow::OnOpeningURL(wxHtmlURLType WXUNUSED(type), GetRelatedFrame()->SetStatusText(url + _T(" lately opened"),1); return wxHTML_OPEN; } + +#if wxUSE_CLIPBOARD +BEGIN_EVENT_TABLE(MyHtmlWindow, wxHtmlWindow) + EVT_TEXT_COPY(wxID_ANY, MyHtmlWindow::OnClipboardEvent) +END_EVENT_TABLE() + +void MyHtmlWindow::OnClipboardEvent(wxClipboardTextEvent& WXUNUSED(event)) +{ + // explicitly call wxHtmlWindow::CopySelection() method + // and show the first 100 characters of the text copied in the status bar + if ( CopySelection() ) + { + wxTextDataObject data; + if ( wxTheClipboard && wxTheClipboard->GetData(data) ) + { + const wxString text = data.GetText(); + const size_t maxTextLength = 100; + + wxLogStatus(wxString::Format(_T("Clipboard: '%s%s'"), + wxString(text, maxTextLength).c_str(), + (text.length() > maxTextLength) ? _T("...") + : _T(""))); + return; + } + } + + wxLogStatus(_T("Clipboard: nothing")); +} +#endif // wxUSE_CLIPBOARD