]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/webview/webview.cpp
Don't use GetThreadId() in wxMSW code.
[wxWidgets.git] / samples / webview / webview.cpp
index b15b1d811923b52e6824c8928b73d9abeae75c73..fc134a949812126756157441f0774b29e0c17412 100644 (file)
@@ -143,6 +143,7 @@ public:
     void OnFindDone(wxCommandEvent& evt);
     void OnFindText(wxCommandEvent& evt);
     void OnFindOptions(wxCommandEvent& evt);
     void OnFindDone(wxCommandEvent& evt);
     void OnFindText(wxCommandEvent& evt);
     void OnFindOptions(wxCommandEvent& evt);
+    void OnEnableContextMenu(wxCommandEvent& evt);
 
 private:
     wxTextCtrl* m_url;
 
 private:
     wxTextCtrl* m_url;
@@ -188,6 +189,7 @@ private:
     wxMenuItem* m_selection_clear;
     wxMenuItem* m_selection_delete;
     wxMenuItem* m_find;
     wxMenuItem* m_selection_clear;
     wxMenuItem* m_selection_delete;
     wxMenuItem* m_find;
+    wxMenuItem* m_context_menu;
 
     wxInfoBar *m_info;
     wxStaticText* m_info_text;
 
     wxInfoBar *m_info;
     wxStaticText* m_info_text;
@@ -280,7 +282,7 @@ WebFrame::WebFrame(const wxString& url) :
     m_toolbar->Realize();
 
     // Set find values.
     m_toolbar->Realize();
 
     // Set find values.
-    m_findFlags = wxWEB_VIEW_FIND_DEFAULT;
+    m_findFlags = wxWEBVIEW_FIND_DEFAULT;
     m_findText = wxEmptyString;
     m_findCount = 0;
 
     m_findText = wxEmptyString;
     m_findCount = 0;
 
@@ -403,11 +405,13 @@ WebFrame::WebFrame(const wxString& url) :
     wxMenuItem* loadscheme =  m_tools_menu->Append(wxID_ANY, _("Custom Scheme Example"));
     wxMenuItem* usememoryfs =  m_tools_menu->Append(wxID_ANY, _("Memory File System Example"));
 
     wxMenuItem* loadscheme =  m_tools_menu->Append(wxID_ANY, _("Custom Scheme Example"));
     wxMenuItem* usememoryfs =  m_tools_menu->Append(wxID_ANY, _("Memory File System Example"));
 
+    m_context_menu = m_tools_menu->AppendCheckItem(wxID_ANY, _("Enable Context Menu"));
+
     //By default we want to handle navigation and new windows
     m_tools_handle_navigation->Check();
     m_tools_handle_new_window->Check();
     m_tools_enable_history->Check();
     //By default we want to handle navigation and new windows
     m_tools_handle_navigation->Check();
     m_tools_handle_new_window->Check();
     m_tools_enable_history->Check();
-    if(!m_browser->CanSetZoomType(wxWEB_VIEW_ZOOM_TYPE_LAYOUT))
+    if(!m_browser->CanSetZoomType(wxWEBVIEW_ZOOM_TYPE_LAYOUT))
         m_tools_layout->Enable(false);
 
 
         m_tools_layout->Enable(false);
 
 
@@ -441,17 +445,17 @@ WebFrame::WebFrame(const wxString& url) :
             wxCommandEventHandler(WebFrame::OnFindText), NULL, this );
 
     // Connect the webview events
             wxCommandEventHandler(WebFrame::OnFindText), NULL, this );
 
     // Connect the webview events
-    Connect(m_browser->GetId(), wxEVT_COMMAND_WEB_VIEW_NAVIGATING,
+    Connect(m_browser->GetId(), wxEVT_COMMAND_WEBVIEW_NAVIGATING,
             wxWebViewEventHandler(WebFrame::OnNavigationRequest), NULL, this);
             wxWebViewEventHandler(WebFrame::OnNavigationRequest), NULL, this);
-    Connect(m_browser->GetId(), wxEVT_COMMAND_WEB_VIEW_NAVIGATED,
+    Connect(m_browser->GetId(), wxEVT_COMMAND_WEBVIEW_NAVIGATED,
             wxWebViewEventHandler(WebFrame::OnNavigationComplete), NULL, this);
             wxWebViewEventHandler(WebFrame::OnNavigationComplete), NULL, this);
-    Connect(m_browser->GetId(), wxEVT_COMMAND_WEB_VIEW_LOADED,
+    Connect(m_browser->GetId(), wxEVT_COMMAND_WEBVIEW_LOADED,
             wxWebViewEventHandler(WebFrame::OnDocumentLoaded), NULL, this);
             wxWebViewEventHandler(WebFrame::OnDocumentLoaded), NULL, this);
-    Connect(m_browser->GetId(), wxEVT_COMMAND_WEB_VIEW_ERROR,
+    Connect(m_browser->GetId(), wxEVT_COMMAND_WEBVIEW_ERROR,
             wxWebViewEventHandler(WebFrame::OnError), NULL, this);
             wxWebViewEventHandler(WebFrame::OnError), NULL, this);
-    Connect(m_browser->GetId(), wxEVT_COMMAND_WEB_VIEW_NEWWINDOW,
+    Connect(m_browser->GetId(), wxEVT_COMMAND_WEBVIEW_NEWWINDOW,
             wxWebViewEventHandler(WebFrame::OnNewWindow), NULL, this);
             wxWebViewEventHandler(WebFrame::OnNewWindow), NULL, this);
-    Connect(m_browser->GetId(), wxEVT_COMMAND_WEB_VIEW_TITLE_CHANGED,
+    Connect(m_browser->GetId(), wxEVT_COMMAND_WEBVIEW_TITLE_CHANGED,
             wxWebViewEventHandler(WebFrame::OnTitleChanged), NULL, this);
 
     // Connect the menu events
             wxWebViewEventHandler(WebFrame::OnTitleChanged), NULL, this);
 
     // Connect the menu events
@@ -509,6 +513,8 @@ WebFrame::WebFrame(const wxString& url) :
             wxCommandEventHandler(WebFrame::OnUseMemoryFS),  NULL, this );
     Connect(m_find->GetId(), wxEVT_COMMAND_MENU_SELECTED,
             wxCommandEventHandler(WebFrame::OnFind),  NULL, this );
             wxCommandEventHandler(WebFrame::OnUseMemoryFS),  NULL, this );
     Connect(m_find->GetId(), wxEVT_COMMAND_MENU_SELECTED,
             wxCommandEventHandler(WebFrame::OnFind),  NULL, this );
+    Connect(m_context_menu->GetId(), wxEVT_COMMAND_MENU_SELECTED,
+            wxCommandEventHandler(WebFrame::OnEnableContextMenu), NULL, this );
 
     //Connect the idle events
     Connect(wxID_ANY, wxEVT_IDLE, wxIdleEventHandler(WebFrame::OnIdle), NULL, this);
 
     //Connect the idle events
     Connect(wxID_ANY, wxEVT_IDLE, wxIdleEventHandler(WebFrame::OnIdle), NULL, this);
@@ -659,6 +665,11 @@ void WebFrame::OnUseMemoryFS(wxCommandEvent& WXUNUSED(evt))
     m_browser->LoadURL("memory:page1.htm");
 }
 
     m_browser->LoadURL("memory:page1.htm");
 }
 
+void WebFrame::OnEnableContextMenu(wxCommandEvent& evt)
+{
+    m_browser->EnableContextMenu(evt.IsChecked());
+}
+
 void WebFrame::OnFind(wxCommandEvent& WXUNUSED(evt))
 {
     wxString value = m_browser->GetSelectedText();
 void WebFrame::OnFind(wxCommandEvent& WXUNUSED(evt))
 {
     wxString value = m_browser->GetSelectedText();
@@ -686,16 +697,16 @@ void WebFrame::OnFindText(wxCommandEvent& evt)
     int flags = 0;
 
     if(m_find_toolbar_wrap->IsChecked())
     int flags = 0;
 
     if(m_find_toolbar_wrap->IsChecked())
-        flags |= wxWEB_VIEW_FIND_WRAP;
+        flags |= wxWEBVIEW_FIND_WRAP;
     if(m_find_toolbar_wholeword->IsChecked())
     if(m_find_toolbar_wholeword->IsChecked())
-        flags |= wxWEB_VIEW_FIND_ENTIRE_WORD;
+        flags |= wxWEBVIEW_FIND_ENTIRE_WORD;
     if(m_find_toolbar_matchcase->IsChecked())
     if(m_find_toolbar_matchcase->IsChecked())
-        flags |= wxWEB_VIEW_FIND_MATCH_CASE;
+        flags |= wxWEBVIEW_FIND_MATCH_CASE;
     if(m_find_toolbar_highlight->IsChecked())
     if(m_find_toolbar_highlight->IsChecked())
-        flags |= wxWEB_VIEW_FIND_HIGHLIGHT_RESULT;
+        flags |= wxWEBVIEW_FIND_HIGHLIGHT_RESULT;
 
     if(m_find_toolbar_previous->GetId() == evt.GetId())
 
     if(m_find_toolbar_previous->GetId() == evt.GetId())
-        flags |= wxWEB_VIEW_FIND_BACKWARDS;
+        flags |= wxWEBVIEW_FIND_BACKWARDS;
 
     wxString find_text = m_find_ctrl->GetValue();
     long count = m_browser->Find(find_text, flags);
 
     wxString find_text = m_find_ctrl->GetValue();
     long count = m_browser->Find(find_text, flags);
@@ -823,19 +834,19 @@ void WebFrame::OnToolsClicked(wxCommandEvent& WXUNUSED(evt))
     wxWebViewZoom zoom = m_browser->GetZoom();
     switch (zoom)
     {
     wxWebViewZoom zoom = m_browser->GetZoom();
     switch (zoom)
     {
-    case wxWEB_VIEW_ZOOM_TINY:
+    case wxWEBVIEW_ZOOM_TINY:
         m_tools_tiny->Check();
         break;
         m_tools_tiny->Check();
         break;
-    case wxWEB_VIEW_ZOOM_SMALL:
+    case wxWEBVIEW_ZOOM_SMALL:
         m_tools_small->Check();
         break;
         m_tools_small->Check();
         break;
-    case wxWEB_VIEW_ZOOM_MEDIUM:
+    case wxWEBVIEW_ZOOM_MEDIUM:
         m_tools_medium->Check();
         break;
         m_tools_medium->Check();
         break;
-    case wxWEB_VIEW_ZOOM_LARGE:
+    case wxWEBVIEW_ZOOM_LARGE:
         m_tools_large->Check();
         break;
         m_tools_large->Check();
         break;
-    case wxWEB_VIEW_ZOOM_LARGEST:
+    case wxWEBVIEW_ZOOM_LARGEST:
         m_tools_largest->Check();
         break;
     }
         m_tools_largest->Check();
         break;
     }
@@ -850,6 +861,8 @@ void WebFrame::OnToolsClicked(wxCommandEvent& WXUNUSED(evt))
     m_selection_clear->Enable(m_browser->HasSelection());
     m_selection_delete->Enable(m_browser->HasSelection());
 
     m_selection_clear->Enable(m_browser->HasSelection());
     m_selection_delete->Enable(m_browser->HasSelection());
 
+    m_context_menu->Check(m_browser->IsContextMenuEnabled());
+
     //Firstly we clear the existing menu items, then we add the current ones
     wxMenuHistoryMap::const_iterator it;
     for( it = m_histMenuItems.begin(); it != m_histMenuItems.end(); ++it )
     //Firstly we clear the existing menu items, then we add the current ones
     wxMenuHistoryMap::const_iterator it;
     for( it = m_histMenuItems.begin(); it != m_histMenuItems.end(); ++it )
@@ -900,23 +913,23 @@ void WebFrame::OnSetZoom(wxCommandEvent& evt)
 {
     if (evt.GetId() == m_tools_tiny->GetId())
     {
 {
     if (evt.GetId() == m_tools_tiny->GetId())
     {
-        m_browser->SetZoom(wxWEB_VIEW_ZOOM_TINY);
+        m_browser->SetZoom(wxWEBVIEW_ZOOM_TINY);
     }
     else if (evt.GetId() == m_tools_small->GetId())
     {
     }
     else if (evt.GetId() == m_tools_small->GetId())
     {
-        m_browser->SetZoom(wxWEB_VIEW_ZOOM_SMALL);
+        m_browser->SetZoom(wxWEBVIEW_ZOOM_SMALL);
     }
     else if (evt.GetId() == m_tools_medium->GetId())
     {
     }
     else if (evt.GetId() == m_tools_medium->GetId())
     {
-        m_browser->SetZoom(wxWEB_VIEW_ZOOM_MEDIUM);
+        m_browser->SetZoom(wxWEBVIEW_ZOOM_MEDIUM);
     }
     else if (evt.GetId() == m_tools_large->GetId())
     {
     }
     else if (evt.GetId() == m_tools_large->GetId())
     {
-        m_browser->SetZoom(wxWEB_VIEW_ZOOM_LARGE);
+        m_browser->SetZoom(wxWEBVIEW_ZOOM_LARGE);
     }
     else if (evt.GetId() == m_tools_largest->GetId())
     {
     }
     else if (evt.GetId() == m_tools_largest->GetId())
     {
-        m_browser->SetZoom(wxWEB_VIEW_ZOOM_LARGEST);
+        m_browser->SetZoom(wxWEBVIEW_ZOOM_LARGEST);
     }
     else
     {
     }
     else
     {
@@ -927,9 +940,9 @@ void WebFrame::OnSetZoom(wxCommandEvent& evt)
 void WebFrame::OnZoomLayout(wxCommandEvent& WXUNUSED(evt))
 {
     if(m_tools_layout->IsChecked())
 void WebFrame::OnZoomLayout(wxCommandEvent& WXUNUSED(evt))
 {
     if(m_tools_layout->IsChecked())
-        m_browser->SetZoomType(wxWEB_VIEW_ZOOM_TYPE_LAYOUT);
+        m_browser->SetZoomType(wxWEBVIEW_ZOOM_TYPE_LAYOUT);
     else
     else
-        m_browser->SetZoomType(wxWEB_VIEW_ZOOM_TYPE_TEXT);
+        m_browser->SetZoomType(wxWEBVIEW_ZOOM_TYPE_TEXT);
 }
 
 void WebFrame::OnHistory(wxCommandEvent& evt)
 }
 
 void WebFrame::OnHistory(wxCommandEvent& evt)
@@ -965,48 +978,30 @@ void WebFrame::OnSelectAll(wxCommandEvent& WXUNUSED(evt))
   * Callback invoked when a loading error occurs
   */
 void WebFrame::OnError(wxWebViewEvent& evt)
   * Callback invoked when a loading error occurs
   */
 void WebFrame::OnError(wxWebViewEvent& evt)
-{
-    wxString errorCategory;
-    switch (evt.GetInt())
-    {
-    case  wxWEB_NAV_ERR_CONNECTION:
-        errorCategory = "wxWEB_NAV_ERR_CONNECTION";
-        break;
-
-    case wxWEB_NAV_ERR_CERTIFICATE:
-        errorCategory = "wxWEB_NAV_ERR_CERTIFICATE";
-        break;
-
-    case wxWEB_NAV_ERR_AUTH:
-        errorCategory = "wxWEB_NAV_ERR_AUTH";
+{   
+#define WX_ERROR_CASE(type) \
+    case type: \
+        category = #type; \
         break;
 
         break;
 
-    case wxWEB_NAV_ERR_SECURITY:
-        errorCategory = "wxWEB_NAV_ERR_SECURITY";
-        break;
-
-    case wxWEB_NAV_ERR_NOT_FOUND:
-        errorCategory = "wxWEB_NAV_ERR_NOT_FOUND";
-        break;
-
-    case wxWEB_NAV_ERR_REQUEST:
-        errorCategory = "wxWEB_NAV_ERR_REQUEST";
-        break;
-
-    case wxWEB_NAV_ERR_USER_CANCELLED:
-        errorCategory = "wxWEB_NAV_ERR_USER_CANCELLED";
-        break;
-
-    case wxWEB_NAV_ERR_OTHER:
-        errorCategory = "wxWEB_NAV_ERR_OTHER";
-        break;
+    wxString category;
+    switch (evt.GetInt())
+    {
+        WX_ERROR_CASE(wxWEBVIEW_NAV_ERR_CONNECTION);
+        WX_ERROR_CASE(wxWEBVIEW_NAV_ERR_CERTIFICATE);
+        WX_ERROR_CASE(wxWEBVIEW_NAV_ERR_AUTH);
+        WX_ERROR_CASE(wxWEBVIEW_NAV_ERR_SECURITY);
+        WX_ERROR_CASE(wxWEBVIEW_NAV_ERR_NOT_FOUND);
+        WX_ERROR_CASE(wxWEBVIEW_NAV_ERR_REQUEST);
+        WX_ERROR_CASE(wxWEBVIEW_NAV_ERR_USER_CANCELLED);
+        WX_ERROR_CASE(wxWEBVIEW_NAV_ERR_OTHER);
     }
 
     }
 
-    wxLogMessage("%s", "Error; url='" + evt.GetURL() + "', error='" + errorCategory + "' (" + evt.GetString() + ")");
+    wxLogMessage("%s", "Error; url='" + evt.GetURL() + "', error='" + category + " (" + evt.GetString() + ")'");
 
     //Show the info bar with an error
     m_info->ShowMessage(_("An error occurred loading ") + evt.GetURL() + "\n" +
 
     //Show the info bar with an error
     m_info->ShowMessage(_("An error occurred loading ") + evt.GetURL() + "\n" +
-    "'" + errorCategory + "' (" + evt.GetString() + ")", wxICON_ERROR);
+    "'" + category + "'", wxICON_ERROR);
 
     UpdateState();
 }
 
     UpdateState();
 }