+ SourceViewDialog(wxWindow* parent, wxString source);
+};
+
+IMPLEMENT_APP(WebApp)
+
+// ============================================================================
+// implementation
+// ============================================================================
+
+bool WebApp::OnInit()
+{
+ if ( !wxApp::OnInit() )
+ return false;
+
+ WebFrame *frame = new WebFrame();
+ frame->Show();
+
+ return true;
+}
+
+WebFrame::WebFrame() : wxFrame(NULL, wxID_ANY, "wxWebView Sample")
+{
+ // set the frame icon
+ SetIcon(wxICON(sample));
+ SetTitle("wxWebView Sample");
+
+ m_timer = NULL;
+ m_animation_angle = 0;
+
+
+ wxBoxSizer* topsizer = new wxBoxSizer(wxVERTICAL);
+
+ // Create the toolbar
+ m_toolbar = CreateToolBar(wxTB_TEXT);
+ m_toolbar->SetToolBitmapSize(wxSize(32, 32));
+
+ m_toolbar_back = m_toolbar->AddTool(wxID_ANY, _("Back"), wxBitmap(back_xpm));
+ m_toolbar_forward = m_toolbar->AddTool(wxID_ANY, _("Forward"), wxBitmap(forward_xpm));
+ m_toolbar_stop = m_toolbar->AddTool(wxID_ANY, _("Stop"), wxBitmap(stop_xpm));
+ m_toolbar_reload = m_toolbar->AddTool(wxID_ANY, _("Reload"), wxBitmap(refresh_xpm));
+ m_url = new wxTextCtrl(m_toolbar, wxID_ANY, wxT(""), wxDefaultPosition, wxSize(400, -1), wxTE_PROCESS_ENTER );
+ m_toolbar->AddControl(m_url, _("URL"));
+ m_toolbar_tools = m_toolbar->AddTool(wxID_ANY, _("Menu"), wxBitmap(wxlogo_xpm));
+
+ m_toolbar->Realize();
+
+ // Create the info panel
+ m_info = new wxInfoBar(this);
+ topsizer->Add(m_info, wxSizerFlags().Expand());
+
+ // Create the webview
+ m_browser = wxWebView::New(this, wxID_ANY);
+ m_browser->LoadUrl("http://www.wxwidgets.org");
+ topsizer->Add(m_browser, wxSizerFlags().Expand().Proportion(1));
+
+ SetSizer(topsizer);
+
+ // Create a log window
+ new wxLogWindow(this, _("Logging"));
+
+ // Create the Tools menu
+ m_tools_menu = new wxMenu();
+ wxMenuItem* print = m_tools_menu->Append(wxID_ANY , _("Print"));
+ wxMenuItem* viewSource = m_tools_menu->Append(wxID_ANY , _("View Source"));
+ m_tools_menu->AppendSeparator();
+ m_tools_tiny = m_tools_menu->AppendCheckItem(wxID_ANY, _("Tiny"));
+ m_tools_small = m_tools_menu->AppendCheckItem(wxID_ANY, _("Small"));
+ m_tools_medium = m_tools_menu->AppendCheckItem(wxID_ANY, _("Medium"));
+ m_tools_large = m_tools_menu->AppendCheckItem(wxID_ANY, _("Large"));
+ m_tools_largest = m_tools_menu->AppendCheckItem(wxID_ANY, _("Largest"));
+
+
+ // Connect the toolbar events
+ Connect(m_toolbar_back->GetId(), wxEVT_COMMAND_TOOL_CLICKED,
+ wxCommandEventHandler(WebFrame::OnBack), NULL, this );
+ Connect(m_toolbar_forward->GetId(), wxEVT_COMMAND_TOOL_CLICKED,
+ wxCommandEventHandler(WebFrame::OnForward), NULL, this );
+ Connect(m_toolbar_stop->GetId(), wxEVT_COMMAND_TOOL_CLICKED,
+ wxCommandEventHandler(WebFrame::OnStop), NULL, this );
+ Connect(m_toolbar_reload->GetId(), wxEVT_COMMAND_TOOL_CLICKED,
+ wxCommandEventHandler(WebFrame::OnReload),NULL, this );
+ Connect(m_toolbar_tools->GetId(), wxEVT_COMMAND_TOOL_CLICKED,
+ wxCommandEventHandler(WebFrame::OnToolsClicked), NULL, this );
+
+ Connect(m_url->GetId(), wxEVT_COMMAND_TEXT_ENTER,
+ wxCommandEventHandler(WebFrame::OnUrl), NULL, this );
+
+ // Connect the webview events
+ Connect(m_browser->GetId(), wxEVT_COMMAND_WEB_VIEW_NAVIGATING,
+ wxWebNavigationEventHandler(WebFrame::OnNavigationRequest), NULL, this);
+ Connect(m_browser->GetId(), wxEVT_COMMAND_WEB_VIEW_NAVIGATED,
+ wxWebNavigationEventHandler(WebFrame::OnNavigationComplete), NULL, this);
+ Connect(m_browser->GetId(), wxEVT_COMMAND_WEB_VIEW_LOADED,
+ wxWebNavigationEventHandler(WebFrame::OnDocumentLoaded), NULL, this);
+ Connect(m_browser->GetId(), wxEVT_COMMAND_WEB_VIEW_ERROR,
+ wxWebNavigationEventHandler(WebFrame::OnError), NULL, this);
+ Connect(m_browser->GetId(), wxEVT_COMMAND_WEB_VIEW_NEWWINDOW,
+ wxWebNavigationEventHandler(WebFrame::OnNewWindow), NULL, this);
+
+ // Connect the menu events
+ Connect(viewSource->GetId(), wxEVT_COMMAND_MENU_SELECTED,
+ wxCommandEventHandler(WebFrame::OnViewSourceRequest), NULL, this );
+ Connect(print->GetId(), wxEVT_COMMAND_MENU_SELECTED,
+ wxCommandEventHandler(WebFrame::OnPrint), NULL, this );
+ Connect(m_tools_tiny->GetId(), wxEVT_COMMAND_MENU_SELECTED,
+ wxCommandEventHandler(WebFrame::OnSetZoom), NULL, this );
+ Connect(m_tools_small->GetId(), wxEVT_COMMAND_MENU_SELECTED,
+ wxCommandEventHandler(WebFrame::OnSetZoom), NULL, this );
+ Connect(m_tools_medium->GetId(), wxEVT_COMMAND_MENU_SELECTED,
+ wxCommandEventHandler(WebFrame::OnSetZoom), NULL, this );
+ Connect(m_tools_large->GetId(), wxEVT_COMMAND_MENU_SELECTED,
+ wxCommandEventHandler(WebFrame::OnSetZoom), NULL, this );
+ Connect(m_tools_largest->GetId(), wxEVT_COMMAND_MENU_SELECTED,
+ wxCommandEventHandler(WebFrame::OnSetZoom), NULL, this );
+}
+
+void WebFrame::OnAnimationTimer(wxTimerEvent& evt)
+{
+ m_animation_angle += 15;
+ if (m_animation_angle > 360) m_animation_angle -= 360;