📄 chromeclientwx.cpp
字号:
/* * Copyright (C) 2007 Kevin Ollivier <kevino@theolliviers.com> * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */#include "config.h"#include "ChromeClientWx.h"#include "FileChooser.h"#include "FloatRect.h"#include "FrameLoadRequest.h"#include "NotImplemented.h"#include "PlatformString.h"#include <stdio.h>#include <wx/wxprec.h>#ifndef WX_PRECOMP #include <wx/wx.h>#endif#include <wx/textdlg.h>#include <wx/tooltip.h>#include "WebBrowserShell.h"#include "WebView.h"#include "WebViewPrivate.h"namespace WebCore {ChromeClientWx::ChromeClientWx(wxWebView* webView){ m_webView = webView;}ChromeClientWx::~ChromeClientWx(){}void ChromeClientWx::chromeDestroyed(){ notImplemented();}void ChromeClientWx::setWindowRect(const FloatRect&){ notImplemented();}FloatRect ChromeClientWx::windowRect(){ notImplemented(); return FloatRect();}FloatRect ChromeClientWx::pageRect(){ notImplemented(); return FloatRect();}float ChromeClientWx::scaleFactor(){ notImplemented(); return 0.0;}void ChromeClientWx::focus(){ notImplemented();}void ChromeClientWx::unfocus(){ notImplemented();}bool ChromeClientWx::canTakeFocus(FocusDirection){ notImplemented(); return false;}void ChromeClientWx::takeFocus(FocusDirection){ notImplemented();}Page* ChromeClientWx::createWindow(Frame*, const FrameLoadRequest& request, const WindowFeatures&){ // FIXME: Create a EVT_WEBKIT_NEW_WINDOW event, and only run this code // when that event is not handled. Page* myPage = 0; wxWebBrowserShell* newFrame = new wxWebBrowserShell(wxTheApp->GetAppName()); if (newFrame->webview) { newFrame->webview->LoadURL(request.resourceRequest().url().string()); newFrame->Show(true); WebViewPrivate* impl = newFrame->webview->m_impl; if (impl) myPage = impl->page; } return myPage;}Page* ChromeClientWx::createModalDialog(Frame*, const FrameLoadRequest&){ notImplemented(); return 0;}void ChromeClientWx::show(){ notImplemented();}bool ChromeClientWx::canRunModal(){ notImplemented(); return false;}void ChromeClientWx::runModal(){ notImplemented();}void ChromeClientWx::setToolbarsVisible(bool){ notImplemented();}bool ChromeClientWx::toolbarsVisible(){ notImplemented(); return false;}void ChromeClientWx::setStatusbarVisible(bool){ notImplemented();}bool ChromeClientWx::statusbarVisible(){ notImplemented(); return false;}void ChromeClientWx::setScrollbarsVisible(bool){ notImplemented();}bool ChromeClientWx::scrollbarsVisible(){ notImplemented(); return false;}void ChromeClientWx::setMenubarVisible(bool){ notImplemented();}bool ChromeClientWx::menubarVisible(){ notImplemented(); return false;}void ChromeClientWx::setResizable(bool){ notImplemented();}void ChromeClientWx::addMessageToConsole(const String& message, unsigned int lineNumber, const String& sourceID){ if (m_webView) { wxWebViewConsoleMessageEvent wkEvent(m_webView); wkEvent.SetMessage(message); wkEvent.SetLineNumber(lineNumber); wkEvent.SetSourceID(sourceID); m_webView->GetEventHandler()->ProcessEvent(wkEvent); }}bool ChromeClientWx::canRunBeforeUnloadConfirmPanel(){ notImplemented(); return true;}bool ChromeClientWx::runBeforeUnloadConfirmPanel(const String& string, Frame* frame){ wxMessageDialog dialog(NULL, string, wxT("Confirm Action?"), wxYES_NO); return dialog.ShowModal() == wxYES;}void ChromeClientWx::closeWindowSoon(){ notImplemented();}/* Sites for testing prompts: Alert - just type in a bad web address or http://www.htmlite.com/JS002.php Prompt - http://www.htmlite.com/JS007.php Confirm - http://www.htmlite.com/JS006.php*/void ChromeClientWx::runJavaScriptAlert(Frame* frame, const String& string){ wxMessageBox(string, wxT("JavaScript Alert"), wxOK);}bool ChromeClientWx::runJavaScriptConfirm(Frame* frame, const String& string){ wxMessageDialog dialog(NULL, string, wxT("JavaScript Confirm"), wxYES_NO); dialog.Centre(); return (dialog.ShowModal() == wxID_YES);}bool ChromeClientWx::runJavaScriptPrompt(Frame* frame, const String& message, const String& defaultValue, String& result){ wxTextEntryDialog dialog(NULL, message, wxT("JavaScript Prompt"), wxEmptyString, wxOK | wxCANCEL); dialog.Centre(); if (dialog.ShowModal() == wxID_OK) { result = dialog.GetValue(); return true; } return false;}void ChromeClientWx::setStatusbarText(const String&){ notImplemented();}bool ChromeClientWx::shouldInterruptJavaScript(){ notImplemented(); return false;}bool ChromeClientWx::tabsToLinks() const{ notImplemented(); return false;}IntRect ChromeClientWx::windowResizerRect() const{ notImplemented(); return IntRect();}void ChromeClientWx::repaint(const IntRect& rect, bool contentChanged, bool immediate, bool repaintContentOnly){ if (!m_webView) return; if (contentChanged) m_webView->RefreshRect(rect); if (immediate) { m_webView->Update(); }}IntRect ChromeClientWx::windowToScreen(const IntRect& rect) const{ notImplemented(); return rect;}IntPoint ChromeClientWx::screenToWindow(const IntPoint& point) const{ notImplemented(); return point;}PlatformWidget ChromeClientWx::platformWindow() const{ return 0;}void ChromeClientWx::contentsSizeChanged(Frame*, const IntSize&) const{ notImplemented();}void ChromeClientWx::scrollBackingStore(int dx, int dy, const IntRect& scrollViewRect, const IntRect& clipRect){ notImplemented();}void ChromeClientWx::updateBackingStore(){ notImplemented();}void ChromeClientWx::mouseDidMoveOverElement(const HitTestResult&, unsigned modifierFlags){ notImplemented();}void ChromeClientWx::setToolTip(const String& tip){ wxToolTip* tooltip = m_webView->GetToolTip(); if (!tooltip || tooltip->GetTip() != wxString(tip)) m_webView->SetToolTip(tip);}void ChromeClientWx::print(Frame*){ notImplemented();}void ChromeClientWx::exceededDatabaseQuota(Frame*, const String&){ notImplemented();}void ChromeClientWx::scroll(const IntSize&, const IntRect&, const IntRect&){ notImplemented();}void ChromeClientWx::runOpenPanel(Frame*, PassRefPtr<FileChooser>){ notImplemented();}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -