⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 webkit.mm

📁 这是本公司做UNIX开发时所需要用到的一个类库的源代码
💻 MM
📖 第 1 页 / 共 2 页
字号:
/////////////////////////////////////////////////////////////////////////////// Name:        webkit.mm// Purpose:     wxWebKitCtrl - embeddable web kit control// Author:      Jethro Grassie / Kevin Ollivier// Modified by:// Created:     2004-4-16// RCS-ID:      $Id: webkit.mm,v 1.24.2.1 2006/09/03 01:05:41 KO Exp $// Copyright:   (c) Jethro Grassie / Kevin Ollivier// Licence:     wxWindows licence/////////////////////////////////////////////////////////////////////////////#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)    #pragma implementation "webkit.h"#endif// For compilers that support precompilation, includes "wx.h".#include "wx/wxprec.h"#include "wx/splitter.h"#ifndef WX_PRECOMP    #include "wx/wx.h"#endif#if wxUSE_WEBKIT#ifdef __WXCOCOA__#include "wx/cocoa/autorelease.h"#else#include "wx/mac/uma.h"#include <Carbon/Carbon.h>#include <WebKit/WebKit.h>#include <WebKit/HIWebView.h>#include <WebKit/CarbonUtils.h>#endif#include "wx/html/webkit.h"#include "wx/notebook.h"// ----------------------------------------------------------------------------// macros// ----------------------------------------------------------------------------IMPLEMENT_DYNAMIC_CLASS(wxWebKitCtrl, wxControl)BEGIN_EVENT_TABLE(wxWebKitCtrl, wxControl)    EVT_SIZE(wxWebKitCtrl::OnSize)END_EVENT_TABLE()// ----------------------------------------------------------------------------// wxWebKit Events// ----------------------------------------------------------------------------IMPLEMENT_DYNAMIC_CLASS( wxWebKitStateChangedEvent, wxCommandEvent )DEFINE_EVENT_TYPE( wxEVT_WEBKIT_STATE_CHANGED )wxWebKitStateChangedEvent::wxWebKitStateChangedEvent( wxWindow* win ){    SetEventType( wxEVT_WEBKIT_STATE_CHANGED);    SetEventObject( win );    SetId(win->GetId());}//---------------------------------------------------------// helper functions for NSString<->wxString conversion//---------------------------------------------------------inline wxString wxStringWithNSString(NSString *nsstring){#if wxUSE_UNICODE    return wxString([nsstring UTF8String], wxConvUTF8);#else    return wxString([nsstring lossyCString]);#endif // wxUSE_UNICODE}inline NSString* wxNSStringWithWxString(const wxString &wxstring){#if wxUSE_UNICODE    return [NSString stringWithUTF8String: wxstring.mb_str(wxConvUTF8)];#else    return [NSString stringWithCString: wxstring.c_str() length:wxstring.Len()];#endif // wxUSE_UNICODE}@interface MyFrameLoadMonitor : NSObject{    wxWindow* webKitWindow;}- initWithWxWindow: (wxWindow*)inWindow;@end// ----------------------------------------------------------------------------// creation/destruction// ----------------------------------------------------------------------------bool wxWebKitCtrl::Create(wxWindow *parent,                                 wxWindowID winID,                                 const wxString& strURL,                                 const wxPoint& pos,                                 const wxSize& size, long style,                                 const wxValidator& validator,                                 const wxString& name){    m_currentURL = strURL;    //m_pageTitle = _("Untitled Page"); //still needed for wxCocoa??/*    int width, height;    wxSize sizeInstance;    if (size.x == wxDefaultCoord || size.y == wxDefaultCoord)    {        m_parent->GetClientSize(&width, &height);        sizeInstance.x = width;        sizeInstance.y = height;    }    else    {        sizeInstance.x = size.x;        sizeInstance.y = size.y;    }*/    // now create and attach WebKit view...#ifdef __WXCOCOA__    wxControl::Create(parent, m_windowID, pos, sizeInstance, style , validator , name);    SetSize(pos.x, pos.y, sizeInstance.x, sizeInstance.y);    wxTopLevelWindowCocoa *topWin = wxDynamicCast(this, wxTopLevelWindowCocoa);    NSWindow* nsWin = topWin->GetNSWindow();    NSRect rect;    rect.origin.x = pos.x;    rect.origin.y = pos.y;    rect.size.width = sizeInstance.x;    rect.size.height = sizeInstance.y;    m_webView = (WebView*)[[WebView alloc] initWithFrame:rect frameName:@"webkitFrame" groupName:@"webkitGroup"];    SetNSView(m_webView);    [m_cocoaNSView release];    if(m_parent) m_parent->CocoaAddChild(this);    SetInitialFrameRect(pos,sizeInstance);#else    m_macIsUserPane = false;    wxControl::Create(parent, winID, pos, size, style , validator , name);    m_peer = new wxMacControl(this);    WebInitForCarbon();    HIWebViewCreate( m_peer->GetControlRefAddr() );    m_webView = (WebView*) HIWebViewGetWebView( m_peer->GetControlRef() );    MacPostControlCreate(pos, size);    HIViewSetVisible( m_peer->GetControlRef(), true );    [m_webView setHidden:false];#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3    if ( UMAGetSystemVersion() >= 0x1030 )    HIViewChangeFeatures( m_peer->GetControlRef() , kHIViewIsOpaque , 0 ) ;#endif#endif    // Register event listener interfaces    MyFrameLoadMonitor* myFrameLoadMonitor = [[MyFrameLoadMonitor alloc] initWithWxWindow: (wxWindow*)this];    [m_webView setFrameLoadDelegate:myFrameLoadMonitor];    LoadURL(m_currentURL);    return true;}wxWebKitCtrl::~wxWebKitCtrl(){}// ----------------------------------------------------------------------------// public methods// ----------------------------------------------------------------------------void wxWebKitCtrl::LoadURL(const wxString &url){    if( !m_webView )        return;    [[m_webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:wxNSStringWithWxString(url)]]];    m_currentURL = url;}bool wxWebKitCtrl::CanGoBack(){    if ( !m_webView )        return false;    return [m_webView canGoBack];}bool wxWebKitCtrl::CanGoForward(){    if ( !m_webView )        return false;    return [m_webView canGoForward];}bool wxWebKitCtrl::GoBack(){    if ( !m_webView )        return false;    bool result = [(WebView*)m_webView goBack];    return result;}bool wxWebKitCtrl::GoForward(){    if ( !m_webView )        return false;    bool result = [(WebView*)m_webView goForward];    return result;}void wxWebKitCtrl::Reload(){    if ( !m_webView )        return;    [[m_webView mainFrame] reload];}void wxWebKitCtrl::Stop(){    if ( !m_webView )        return;    [[m_webView mainFrame] stopLoading];}bool wxWebKitCtrl::CanGetPageSource(){    if ( !m_webView )        return false;    WebDataSource* dataSource = [[m_webView mainFrame] dataSource];    return ( [[dataSource representation] canProvideDocumentSource] );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -