X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0bfd90b3e73c6df033d2ba09005a7b22fb42c161..f155075229d771430f0793700f5048ad4be00e9d:/samples/webview/webview.cpp diff --git a/samples/webview/webview.cpp b/samples/webview/webview.cpp index b15b1d8119..fc134a9498 100644 --- a/samples/webview/webview.cpp +++ b/samples/webview/webview.cpp @@ -143,6 +143,7 @@ public: void OnFindDone(wxCommandEvent& evt); void OnFindText(wxCommandEvent& evt); void OnFindOptions(wxCommandEvent& evt); + void OnEnableContextMenu(wxCommandEvent& evt); private: wxTextCtrl* m_url; @@ -188,6 +189,7 @@ private: wxMenuItem* m_selection_clear; wxMenuItem* m_selection_delete; wxMenuItem* m_find; + wxMenuItem* m_context_menu; wxInfoBar *m_info; wxStaticText* m_info_text; @@ -280,7 +282,7 @@ WebFrame::WebFrame(const wxString& url) : m_toolbar->Realize(); // Set find values. - m_findFlags = wxWEB_VIEW_FIND_DEFAULT; + m_findFlags = wxWEBVIEW_FIND_DEFAULT; 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")); + 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(); - if(!m_browser->CanSetZoomType(wxWEB_VIEW_ZOOM_TYPE_LAYOUT)) + if(!m_browser->CanSetZoomType(wxWEBVIEW_ZOOM_TYPE_LAYOUT)) m_tools_layout->Enable(false); @@ -441,17 +445,17 @@ WebFrame::WebFrame(const wxString& url) : 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); - Connect(m_browser->GetId(), wxEVT_COMMAND_WEB_VIEW_NAVIGATED, + Connect(m_browser->GetId(), wxEVT_COMMAND_WEBVIEW_NAVIGATED, 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); - Connect(m_browser->GetId(), wxEVT_COMMAND_WEB_VIEW_ERROR, + Connect(m_browser->GetId(), wxEVT_COMMAND_WEBVIEW_ERROR, 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); - 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 @@ -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 ); + 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); @@ -659,6 +665,11 @@ void WebFrame::OnUseMemoryFS(wxCommandEvent& WXUNUSED(evt)) 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(); @@ -686,16 +697,16 @@ void WebFrame::OnFindText(wxCommandEvent& evt) int flags = 0; if(m_find_toolbar_wrap->IsChecked()) - flags |= wxWEB_VIEW_FIND_WRAP; + flags |= wxWEBVIEW_FIND_WRAP; if(m_find_toolbar_wholeword->IsChecked()) - flags |= wxWEB_VIEW_FIND_ENTIRE_WORD; + flags |= wxWEBVIEW_FIND_ENTIRE_WORD; if(m_find_toolbar_matchcase->IsChecked()) - flags |= wxWEB_VIEW_FIND_MATCH_CASE; + flags |= wxWEBVIEW_FIND_MATCH_CASE; 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()) - flags |= wxWEB_VIEW_FIND_BACKWARDS; + flags |= wxWEBVIEW_FIND_BACKWARDS; 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) { - case wxWEB_VIEW_ZOOM_TINY: + case wxWEBVIEW_ZOOM_TINY: m_tools_tiny->Check(); break; - case wxWEB_VIEW_ZOOM_SMALL: + case wxWEBVIEW_ZOOM_SMALL: m_tools_small->Check(); break; - case wxWEB_VIEW_ZOOM_MEDIUM: + case wxWEBVIEW_ZOOM_MEDIUM: m_tools_medium->Check(); break; - case wxWEB_VIEW_ZOOM_LARGE: + case wxWEBVIEW_ZOOM_LARGE: m_tools_large->Check(); break; - case wxWEB_VIEW_ZOOM_LARGEST: + case wxWEBVIEW_ZOOM_LARGEST: 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_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 ) @@ -900,23 +913,23 @@ void WebFrame::OnSetZoom(wxCommandEvent& evt) { 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()) { - m_browser->SetZoom(wxWEB_VIEW_ZOOM_SMALL); + m_browser->SetZoom(wxWEBVIEW_ZOOM_SMALL); } 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()) { - m_browser->SetZoom(wxWEB_VIEW_ZOOM_LARGE); + m_browser->SetZoom(wxWEBVIEW_ZOOM_LARGE); } else if (evt.GetId() == m_tools_largest->GetId()) { - m_browser->SetZoom(wxWEB_VIEW_ZOOM_LARGEST); + m_browser->SetZoom(wxWEBVIEW_ZOOM_LARGEST); } else { @@ -927,9 +940,9 @@ void WebFrame::OnSetZoom(wxCommandEvent& evt) 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 - m_browser->SetZoomType(wxWEB_VIEW_ZOOM_TYPE_TEXT); + m_browser->SetZoomType(wxWEBVIEW_ZOOM_TYPE_TEXT); } 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) -{ - 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; - 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" + - "'" + errorCategory + "' (" + evt.GetString() + ")", wxICON_ERROR); + "'" + category + "'", wxICON_ERROR); UpdateState(); }