]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/html/test/test.cpp
add accessors using wxFileName to wxFile/DirPickerCtrl (patch 1622534)
[wxWidgets.git] / samples / html / test / test.cpp
index eeab3617a75903411bf9f5284557efb20b940c55..ae1dee0c81998178e3c304f099945b5bb65b3049 100644 (file)
@@ -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