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

📄 osb-browserglobal-plugin.cc

📁 khtml在gtk上的移植版本
💻 CC
字号:
extern "C" {#include "osb-browserglobal.h"#include "osb-browserglobal-private.h"}#include <glib.h>#include <gtk/gtk.h>#if 0 // plugins disabled#include <gtk-nswidget.h>#include <gtk-nswidget-registry.h>#include <osb/osb.h>class NSPlugin : public OSB::Plugin, public OSB::DataConsumer {    GtkNSWidget* plugin;public:    NSPlugin(GtkNSWidget* aplugin);    ~NSPlugin();    /** OSB::DataConsumer*/    void start();    void end();    void cancel();    void metaData(const gchar* key, const gchar* value);    void data(const gchar* data, guint len);    /* OSB::Plugin*/    virtual OSB::DataConsumer* getConsumer();    virtual GtkWidget* getGtkWidget();};class NSPluginFactory : public OSB::PluginFactory{    GtkNSWidgetRegistry* registry;    GSList* mimetypes;public:    NSPluginFactory();    ~NSPluginFactory();    void addSharedLibrary(const gchar* path);    /** OSB::Plugin interface methods */    bool provides(const gchar* mimeType);        OSB::Plugin* create(const gchar* mimetype);    void release(OSB::Plugin* plugin);};NSPluginFactory::NSPluginFactory()    :mimetypes(0){    registry = gtk_nswidget_registry_create();        }extern "C" {static void_mimetypes_delete_cb(gpointer data, gpointer user_data){    /** empty for now */}}NSPluginFactory::~NSPluginFactory(){    g_slist_foreach (mimetypes, _mimetypes_delete_cb, this);    g_slist_free (mimetypes);    gtk_nswidget_registry_destroy (registry);}void NSPluginFactory::addSharedLibrary(const gchar* path){    GtkNSWidgetLibrary* lib;    int i;    lib = gtk_nswidget_registry_load_library(registry, path);    if (!lib) 	return;    for (i=0;lib->mimetypev[i];i++)	g_slist_append (mimetypes, lib);}bool NSPluginFactory::provides(const gchar* mimeType){    GSList* l = mimetypes;    GtkNSWidgetLibrary* lib;    int i;    while (l) {	lib = (GtkNSWidgetLibrary*) l->data;	for (i=0;lib->mimetypev[i];i++) {	    if (g_ascii_strcasecmp(mimeType, lib->mimetypev[i]) == 0)		return true;	}	l = l->next;    }    return false;    }OSB::Plugin* NSPluginFactory::create(const gchar* mimetype){    GtkWidget *widget = gtk_nswidget_new(registry, mimetype);    if (!widget)	return 0;    NSPlugin *plugin = new NSPlugin(GTK_NSWIDGET (widget));    return plugin;}void NSPluginFactory::release(OSB::Plugin* plugin){    g_return_if_fail (plugin);    delete plugin;}staticNSPluginFactory& NSPluginFactoryS(){    static NSPluginFactory singleton;    static int added = 0;    if (!added) {	OSB::EnvironmentF().addPluginFactory(&singleton);    }    return singleton;}/** * NSPlugin */NSPlugin::NSPlugin(GtkNSWidget* aplugin)    :plugin(aplugin){    g_object_ref(plugin);}NSPlugin::~NSPlugin(){    g_object_unref(plugin);}OSB::DataConsumer* NSPlugin::getConsumer(){    return this;}GtkWidget* NSPlugin::getGtkWidget(){    return GTK_WIDGET (plugin);}void NSPlugin::start(){}void NSPlugin::end(){}void NSPlugin::cancel(){}void NSPlugin::metaData(const gchar* key, const gchar* value){}void NSPlugin::data(const gchar* data, guint len){};#endifextern "C" {gintosb_browserglobal_register_plugin (OSBBrowserGlobal* self, const gchar* path){    GtkWidget *plugin;    g_return_val_if_fail (self, 0);    g_return_val_if_fail (path, 0);#if 0    NSPluginFactoryS().addSharedLibrary( path);#endif    return 1;}voidosb_browserglobal_unregister_plugins (OSBBrowserGlobal* self){    }}

⌨️ 快捷键说明

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