diff options
Diffstat (limited to 'WebKit/gtk/webkit/webkitwebsettings.cpp')
-rw-r--r-- | WebKit/gtk/webkit/webkitwebsettings.cpp | 464 |
1 files changed, 464 insertions, 0 deletions
diff --git a/WebKit/gtk/webkit/webkitwebsettings.cpp b/WebKit/gtk/webkit/webkitwebsettings.cpp new file mode 100644 index 0000000..43b2209 --- /dev/null +++ b/WebKit/gtk/webkit/webkitwebsettings.cpp @@ -0,0 +1,464 @@ +/* + * Copyright (C) 2008 Christian Dywan <christian@imendio.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" + +#include "webkitwebsettings.h" +#include "webkitprivate.h" + +extern "C" { + +G_DEFINE_TYPE(WebKitWebSettings, webkit_web_settings, G_TYPE_OBJECT) + +struct _WebKitWebSettingsPrivate { + gchar* default_encoding; + gchar* cursive_font_family; + gchar* default_font_family; + gchar* fantasy_font_family; + gchar* monospace_font_family; + gchar* sans_serif_font_family; + gchar* serif_font_family; + guint default_font_size; + guint default_monospace_font_size; + guint minimum_font_size; + guint minimum_logical_font_size; + gboolean auto_load_images; + gboolean auto_shrink_images; + gboolean print_backgrounds; + gboolean enable_scripts; + gboolean enable_plugins; + gboolean resizable_text_areas; + gchar* user_stylesheet_uri; +}; + +#define WEBKIT_WEB_SETTINGS_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_SETTINGS, WebKitWebSettingsPrivate)) + +enum { + PROP_0, + + PROP_DEFAULT_ENCODING, + PROP_CURSIVE_FONT_FAMILY, + PROP_DEFAULT_FONT_FAMILY, + PROP_FANTASY_FONT_FAMILY, + PROP_MONOSPACE_FONT_FAMILY, + PROP_SANS_SERIF_FONT_FAMILY, + PROP_SERIF_FONT_FAMILY, + PROP_DEFAULT_FONT_SIZE, + PROP_DEFAULT_MONOSPACE_FONT_SIZE, + PROP_MINIMUM_FONT_SIZE, + PROP_MINIMUM_LOGICAL_FONT_SIZE, + PROP_AUTO_LOAD_IMAGES, + PROP_AUTO_SHRINK_IMAGES, + PROP_PRINT_BACKGROUNDS, + PROP_ENABLE_SCRIPTS, + PROP_ENABLE_PLUGINS, + PROP_RESIZABLE_TEXT_AREAS, + PROP_USER_STYLESHEET_URI +}; + +static void webkit_web_settings_finalize(GObject* object); + +static void webkit_web_settings_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec); + +static void webkit_web_settings_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec); + +static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass) +{ + GObjectClass* gobject_class = G_OBJECT_CLASS(klass); + gobject_class->finalize = webkit_web_settings_finalize; + gobject_class->set_property = webkit_web_settings_set_property; + gobject_class->get_property = webkit_web_settings_get_property; + + GParamFlags flags = (GParamFlags)(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT); + + g_object_class_install_property(gobject_class, + PROP_DEFAULT_ENCODING, + g_param_spec_string( + "default-encoding", + "Default Encoding", + "The default encoding used to display text.", + "iso-8859-1", + flags)); + + g_object_class_install_property(gobject_class, + PROP_CURSIVE_FONT_FAMILY, + g_param_spec_string( + "cursive-font-family", + "Cursive Font Family", + "The default Cursive font family used to display text.", + "serif", + flags)); + + g_object_class_install_property(gobject_class, + PROP_DEFAULT_FONT_FAMILY, + g_param_spec_string( + "default-font-family", + "Default Font Family", + "The default font family used to display text.", + "sans-serif", + flags)); + + g_object_class_install_property(gobject_class, + PROP_FANTASY_FONT_FAMILY, + g_param_spec_string( + "fantasy-font-family", + "Fantasy Font Family", + "The default Fantasy font family used to display text.", + "serif", + flags)); + + g_object_class_install_property(gobject_class, + PROP_MONOSPACE_FONT_FAMILY, + g_param_spec_string( + "monospace-font-family", + "Monospace Font Family", + "The default font family used to display monospace text.", + "monospace", + flags)); + + g_object_class_install_property(gobject_class, + PROP_SANS_SERIF_FONT_FAMILY, + g_param_spec_string( + "sans-serif-font-family", + "Sans Serif Font Family", + "The default Sans Serif font family used to display text.", + "sans-serif", + flags)); + + g_object_class_install_property(gobject_class, + PROP_SERIF_FONT_FAMILY, + g_param_spec_string( + "serif-font-family", + "Serif Font Family", + "The default Serif font family used to display text.", + "serif", + flags)); + + g_object_class_install_property(gobject_class, + PROP_DEFAULT_FONT_SIZE, + g_param_spec_int( + "default-font-size", + "Default Font Size", + "The default font size used to display text.", + 5, G_MAXINT, 10, + flags)); + + g_object_class_install_property(gobject_class, + PROP_DEFAULT_MONOSPACE_FONT_SIZE, + g_param_spec_int( + "default-monospace-font-size", + "Default Monospace Font Size", + "The default font size used to display monospace text.", + 5, G_MAXINT, 10, + flags)); + + g_object_class_install_property(gobject_class, + PROP_MINIMUM_FONT_SIZE, + g_param_spec_int( + "minimum-font-size", + "Minimum Font Size", + "The minimum font size used to display text.", + 1, G_MAXINT, 5, + flags)); + + g_object_class_install_property(gobject_class, + PROP_MINIMUM_LOGICAL_FONT_SIZE, + g_param_spec_int( + "minimum-logical-font-size", + "Minimum Logical Font Size", + "The minimum logical font size used to display text.", + 1, G_MAXINT, 5, + flags)); + + g_object_class_install_property(gobject_class, + PROP_AUTO_LOAD_IMAGES, + g_param_spec_boolean( + "auto-load-images", + "Auto Load Images", + "Load images automatically.", + TRUE, + flags)); + + g_object_class_install_property(gobject_class, + PROP_AUTO_SHRINK_IMAGES, + g_param_spec_boolean( + "auto-shrink-images", + "Auto Shrink Images", + "Automatically shrink standalone images to fit.", + TRUE, + flags)); + + g_object_class_install_property(gobject_class, + PROP_PRINT_BACKGROUNDS, + g_param_spec_boolean( + "print-backgrounds", + "Print Backgrounds", + "Whether background images should be printed.", + TRUE, + flags)); + + g_object_class_install_property(gobject_class, + PROP_ENABLE_SCRIPTS, + g_param_spec_boolean( + "enable-scripts", + "Enable Scripts", + "Enable embedded scripting languages.", + TRUE, + flags)); + + g_object_class_install_property(gobject_class, + PROP_ENABLE_PLUGINS, + g_param_spec_boolean( + "enable-plugins", + "Enable Plugins", + "Enable embedded plugin objects.", + TRUE, + flags)); + + g_object_class_install_property(gobject_class, + PROP_RESIZABLE_TEXT_AREAS, + g_param_spec_boolean( + "resizable-text-areas", + "Resizable Text Areas", + "Whether text areas are resizable.", + TRUE, + flags)); + + g_object_class_install_property(gobject_class, + PROP_USER_STYLESHEET_URI, + g_param_spec_string("user-stylesheet-uri", + "User Stylesheet URI", + "The URI of a stylesheet that is applied to every page.", + 0, + flags)); + + g_type_class_add_private(klass, sizeof(WebKitWebSettingsPrivate)); +} + +static void webkit_web_settings_init(WebKitWebSettings* web_settings) +{ + web_settings->priv = WEBKIT_WEB_SETTINGS_GET_PRIVATE(web_settings); +} + +static void webkit_web_settings_finalize(GObject* object) +{ + WebKitWebSettings* web_settings = WEBKIT_WEB_SETTINGS(object); + WebKitWebSettingsPrivate* priv = web_settings->priv; + + g_free(priv->default_encoding); + g_free(priv->cursive_font_family); + g_free(priv->default_font_family); + g_free(priv->fantasy_font_family); + g_free(priv->monospace_font_family); + g_free(priv->sans_serif_font_family); + g_free(priv->serif_font_family); + g_free(priv->user_stylesheet_uri); + + G_OBJECT_CLASS(webkit_web_settings_parent_class)->finalize(object); +} + +static void webkit_web_settings_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec) +{ + WebKitWebSettings* web_settings = WEBKIT_WEB_SETTINGS(object); + WebKitWebSettingsPrivate* priv = web_settings->priv; + + switch(prop_id) { + case PROP_DEFAULT_ENCODING: + g_free(priv->default_encoding); + priv->default_encoding = g_strdup(g_value_get_string(value)); + break; + case PROP_CURSIVE_FONT_FAMILY: + g_free(priv->cursive_font_family); + priv->cursive_font_family = g_strdup(g_value_get_string(value)); + break; + case PROP_DEFAULT_FONT_FAMILY: + g_free(priv->default_font_family); + priv->default_font_family = g_strdup(g_value_get_string(value)); + break; + case PROP_FANTASY_FONT_FAMILY: + g_free(priv->fantasy_font_family); + priv->fantasy_font_family = g_strdup(g_value_get_string(value)); + break; + case PROP_MONOSPACE_FONT_FAMILY: + g_free(priv->monospace_font_family); + priv->monospace_font_family = g_strdup(g_value_get_string(value)); + break; + case PROP_SANS_SERIF_FONT_FAMILY: + g_free(priv->sans_serif_font_family); + priv->sans_serif_font_family = g_strdup(g_value_get_string(value)); + break; + case PROP_SERIF_FONT_FAMILY: + g_free(priv->serif_font_family); + priv->serif_font_family = g_strdup(g_value_get_string(value)); + break; + case PROP_DEFAULT_FONT_SIZE: + priv->default_font_size = g_value_get_int(value); + break; + case PROP_DEFAULT_MONOSPACE_FONT_SIZE: + priv->default_monospace_font_size = g_value_get_int(value); + break; + case PROP_MINIMUM_FONT_SIZE: + priv->minimum_font_size = g_value_get_int(value); + break; + case PROP_MINIMUM_LOGICAL_FONT_SIZE: + priv->minimum_logical_font_size = g_value_get_int(value); + break; + case PROP_AUTO_LOAD_IMAGES: + priv->auto_load_images = g_value_get_boolean(value); + break; + case PROP_AUTO_SHRINK_IMAGES: + priv->auto_shrink_images = g_value_get_boolean(value); + break; + case PROP_PRINT_BACKGROUNDS: + priv->print_backgrounds = g_value_get_boolean(value); + break; + case PROP_ENABLE_SCRIPTS: + priv->enable_scripts = g_value_get_boolean(value); + break; + case PROP_ENABLE_PLUGINS: + priv->enable_plugins = g_value_get_boolean(value); + break; + case PROP_RESIZABLE_TEXT_AREAS: + priv->resizable_text_areas = g_value_get_boolean(value); + break; + case PROP_USER_STYLESHEET_URI: + g_free(priv->user_stylesheet_uri); + priv->user_stylesheet_uri = g_strdup(g_value_get_string(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; + } +} + +static void webkit_web_settings_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec) +{ + WebKitWebSettings* web_settings = WEBKIT_WEB_SETTINGS(object); + WebKitWebSettingsPrivate* priv = web_settings->priv; + + switch (prop_id) { + case PROP_DEFAULT_ENCODING: + g_value_set_string(value, priv->default_encoding); + break; + case PROP_CURSIVE_FONT_FAMILY: + g_value_set_string(value, priv->cursive_font_family); + break; + case PROP_DEFAULT_FONT_FAMILY: + g_value_set_string(value, priv->default_font_family); + break; + case PROP_FANTASY_FONT_FAMILY: + g_value_set_string(value, priv->fantasy_font_family); + break; + case PROP_MONOSPACE_FONT_FAMILY: + g_value_set_string(value, priv->monospace_font_family); + break; + case PROP_SANS_SERIF_FONT_FAMILY: + g_value_set_string(value, priv->sans_serif_font_family); + break; + case PROP_SERIF_FONT_FAMILY: + g_value_set_string(value, priv->serif_font_family); + break; + case PROP_DEFAULT_FONT_SIZE: + g_value_set_int(value, priv->default_font_size); + break; + case PROP_DEFAULT_MONOSPACE_FONT_SIZE: + g_value_set_int(value, priv->default_monospace_font_size); + break; + case PROP_MINIMUM_FONT_SIZE: + g_value_set_int(value, priv->minimum_font_size); + break; + case PROP_MINIMUM_LOGICAL_FONT_SIZE: + g_value_set_int(value, priv->minimum_logical_font_size); + break; + case PROP_AUTO_LOAD_IMAGES: + g_value_set_boolean(value, priv->auto_load_images); + break; + case PROP_AUTO_SHRINK_IMAGES: + g_value_set_boolean(value, priv->auto_shrink_images); + break; + case PROP_PRINT_BACKGROUNDS: + g_value_set_boolean(value, priv->print_backgrounds); + break; + case PROP_ENABLE_SCRIPTS: + g_value_set_boolean(value, priv->enable_scripts); + break; + case PROP_ENABLE_PLUGINS: + g_value_set_boolean(value, priv->enable_plugins); + break; + case PROP_RESIZABLE_TEXT_AREAS: + g_value_set_boolean(value, priv->resizable_text_areas); + break; + case PROP_USER_STYLESHEET_URI: + g_value_set_string(value, priv->user_stylesheet_uri); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); + break; + } +} + +/** + * webkit_web_settings_new: + * + * Creates a new #WebKitWebSettings instance with default values. It must + * be manually attached to a WebView. + * + * Returns: a new #WebKitWebSettings instance + **/ +WebKitWebSettings* webkit_web_settings_new() +{ + return WEBKIT_WEB_SETTINGS(g_object_new(WEBKIT_TYPE_WEB_SETTINGS, NULL)); +} + +/** + * webkit_web_settings_copy: + * + * Copies an existing #WebKitWebSettings instance. + * + * Returns: a new #WebKitWebSettings instance + **/ +WebKitWebSettings* webkit_web_settings_copy(WebKitWebSettings* web_settings) +{ + WebKitWebSettingsPrivate* priv = web_settings->priv; + + WebKitWebSettings* copy = WEBKIT_WEB_SETTINGS(g_object_new(WEBKIT_TYPE_WEB_SETTINGS, + "default-encoding", priv->default_encoding, + "cursive-font-family", priv->cursive_font_family, + "default-font-family", priv->default_font_family, + "fantasy-font-family", priv->fantasy_font_family, + "monospace-font-family", priv->monospace_font_family, + "sans-serif-font-family", priv->sans_serif_font_family, + "serif-font-family", priv->serif_font_family, + "default-font-size", priv->default_font_size, + "default-monospace-font-size", priv->default_monospace_font_size, + "minimum-font-size", priv->minimum_font_size, + "minimum-logical-font-size", priv->minimum_logical_font_size, + "auto-load-images", priv->auto_load_images, + "auto-shrink-images", priv->auto_shrink_images, + "print-backgrounds", priv->print_backgrounds, + "enable-scripts", priv->enable_scripts, + "enable-plugins", priv->enable_plugins, + "resizable-text-areas", priv->resizable_text_areas, + "user-stylesheet-uri", priv->user_stylesheet_uri, + NULL)); + + return copy; +} + +} |