| /* |
| * 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; |
| } |
| |
| } |