From e91d077a842a4e77d466aa626fa0451d9d37b6b8 Mon Sep 17 00:00:00 2001 From: Christian Dywan Date: Sun, 13 Apr 2008 11:29:21 +0200 Subject: [PATCH] Enhance Web Settings greatly with new properties. A lot of new properties are added, which are going to be the basis of the coming configuration replacement. Also a little cleanup is done in a few places. --- katze/katze-throbber.c | 8 +- katze/katze-throbber.h | 2 +- katze/katze-xbel.c | 30 +- src/main.c | 4 +- src/midori-websettings.c | 655 +++++++++++++++++++++++++++++++++++++-- src/midori-websettings.h | 70 +++++ src/midori-webview.c | 8 +- 7 files changed, 720 insertions(+), 57 deletions(-) diff --git a/katze/katze-throbber.c b/katze/katze-throbber.c index 069e6603..5c66b000 100644 --- a/katze/katze-throbber.c +++ b/katze/katze-throbber.c @@ -152,7 +152,7 @@ katze_throbber_class_init (KatzeThrobberClass* class) "Pixbuf", _("A GdkPixbuf containing animation frames"), GDK_TYPE_PIXBUF, - flags)); + G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_ANIMATED, @@ -179,7 +179,7 @@ katze_throbber_class_init (KatzeThrobberClass* class) "Static Pixbuf", _("A GdkPixbuf to be used as the static image"), GDK_TYPE_PIXBUF, - flags)); + G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_STATIC_STOCK_ID, @@ -205,7 +205,7 @@ katze_throbber_init (KatzeThrobber *throbber) } static void -katze_throbber_dispose (GObject *object) +katze_throbber_dispose (GObject* object) { KatzeThrobber* throbber = KATZE_THROBBER (object); KatzeThrobberPrivate* priv = throbber->priv; @@ -217,7 +217,7 @@ katze_throbber_dispose (GObject *object) } static void -katze_throbber_destroy (GtkObject *object) +katze_throbber_destroy (GtkObject* object) { KatzeThrobber* throbber = KATZE_THROBBER (object); KatzeThrobberPrivate* priv = throbber->priv; diff --git a/katze/katze-throbber.h b/katze/katze-throbber.h index 6f1be411..db4c5370 100644 --- a/katze/katze-throbber.h +++ b/katze/katze-throbber.h @@ -13,7 +13,7 @@ #define __KATZE_THROBBER_H__ #include -#include +#include #include "katze-utils.h" diff --git a/katze/katze-xbel.c b/katze/katze-xbel.c index f797de10..5c7c7667 100644 --- a/katze/katze-xbel.c +++ b/katze/katze-xbel.c @@ -719,16 +719,16 @@ katze_xbel_folder_from_data (KatzeXbelItem* folder, if((doc = xmlParseMemory (data, strlen (data))) == NULL) { // No valid xml or broken encoding - *error = g_error_new (KATZE_XBEL_ERROR, KATZE_XBEL_ERROR_READ, - _("Malformed document.")); + *error = g_error_new_literal (KATZE_XBEL_ERROR, KATZE_XBEL_ERROR_READ, + _("Malformed document.")); return FALSE; } if (!katze_xbel_folder_from_xmlDocPtr (folder, doc)) { // Parsing failed xmlFreeDoc(doc); - *error = g_error_new (KATZE_XBEL_ERROR, KATZE_XBEL_ERROR_READ, - _("Malformed document.")); + *error = g_error_new_literal (KATZE_XBEL_ERROR, KATZE_XBEL_ERROR_READ, + _("Malformed document.")); return FALSE; } xmlFreeDoc(doc); @@ -755,24 +755,24 @@ katze_xbel_folder_from_file (KatzeXbelItem* folder, if (!g_file_test (file, G_FILE_TEST_EXISTS)) { // File doesn't exist - *error = g_error_new (G_FILE_ERROR, G_FILE_ERROR_NOENT, - _("File not found.")); + *error = g_error_new_literal (G_FILE_ERROR, G_FILE_ERROR_NOENT, + _("File not found.")); return FALSE; } xmlDocPtr doc; if ((doc = xmlParseFile (file)) == NULL) { // No valid xml or broken encoding - *error = g_error_new (KATZE_XBEL_ERROR, KATZE_XBEL_ERROR_READ, - _("Malformed document.")); + *error = g_error_new_literal (KATZE_XBEL_ERROR, KATZE_XBEL_ERROR_READ, + _("Malformed document.")); return FALSE; } if (!katze_xbel_folder_from_xmlDocPtr (folder, doc)) { // Parsing failed xmlFreeDoc (doc); - *error = g_error_new (KATZE_XBEL_ERROR, KATZE_XBEL_ERROR_READ, - _("Malformed document.")); + *error = g_error_new_literal (KATZE_XBEL_ERROR, KATZE_XBEL_ERROR_READ, + _("Malformed document.")); return FALSE; } xmlFreeDoc (doc); @@ -800,8 +800,8 @@ katze_xbel_folder_from_data_dirs (KatzeXbelItem* folder, g_return_val_if_fail (file, FALSE); // FIXME: Essentially unimplemented - *error = g_error_new (KATZE_XBEL_ERROR, KATZE_XBEL_ERROR_READ, - _("Malformed document.")); + *error = g_error_new_literal (KATZE_XBEL_ERROR, KATZE_XBEL_ERROR_READ, + _("Malformed document.")); return FALSE; } @@ -946,10 +946,10 @@ katze_xbel_folder_to_file (KatzeXbelItem* folder, if (!(data = katze_xbel_folder_to_data (folder, NULL, error))) return FALSE; FILE* fp; - if(!(fp = fopen (file, "w"))) + if (!(fp = fopen (file, "w"))) { - *error = g_error_new (G_FILE_ERROR, G_FILE_ERROR_ACCES, - _("Writing failed.")); + *error = g_error_new_literal (G_FILE_ERROR, G_FILE_ERROR_ACCES, + _("Writing failed.")); return FALSE; } fputs (data, fp); diff --git a/src/main.c b/src/main.c index f0df9060..061501f6 100644 --- a/src/main.c +++ b/src/main.c @@ -321,8 +321,8 @@ int main(int argc, char** argv) "enable-scripts", config->enableScripts, "enable-plugins", config->enablePlugins, "tab-label-size", config->tabSize, - "close-button", config->tabClose, - "middle-click-goto", config->middleClickGoto, + "close-buttons-on-tabs", config->tabClose, + "middle-click-opens-selection", config->middleClickGoto, NULL); webSettings = settings; diff --git a/src/midori-websettings.c b/src/midori-websettings.c index d1a408c6..08dba7f6 100644 --- a/src/midori-websettings.c +++ b/src/midori-websettings.c @@ -9,18 +9,48 @@ See the file COPYING for the full license text. */ -#include "midori-webview.h" +#include "midori-websettings.h" #include "sokoke.h" + #include +#include G_DEFINE_TYPE (MidoriWebSettings, midori_web_settings, WEBKIT_TYPE_WEB_SETTINGS) struct _MidoriWebSettingsPrivate { + MidoriStartup load_on_startup; + gchar* homepage; + gchar* download_folder; + gboolean show_download_notification; + gchar* location_entry_search; + MidoriPreferredEncoding preferred_encoding; + + MidoriToolbarStyle toolbar_style; + gboolean small_toolbar; + gboolean show_web_search; + gboolean show_new_tab; + gboolean show_trash; + gint tab_label_size; - gboolean close_button; - gboolean middle_click_goto; + gboolean close_buttons_on_tabs; + MidoriNewPage open_new_pages_in; + gboolean middle_click_opens_selection; + gboolean open_tabs_in_the_background; + gboolean open_popups_in_tabs; + + MidoriAcceptCookies accept_cookies; + gboolean original_cookies_only; + gint maximum_cookie_age; + + gboolean remember_last_visited_pages; + gint maximum_history_age; + gboolean remember_last_form_inputs; + gboolean remember_last_downloaded_files; + + gchar* http_proxy; + gint cache_size; }; #define MIDORI_WEB_SETTINGS_GET_PRIVATE(obj) \ @@ -31,24 +61,142 @@ enum { PROP_0, + PROP_LOAD_ON_STARTUP, + PROP_HOMEPAGE, + PROP_DOWNLOAD_FOLDER, + PROP_SHOW_DOWNLOAD_NOTIFICATION, + PROP_LOCATION_ENTRY_SEARCH, + PROP_PREFERRED_ENCODING, + + PROP_TOOLBAR_STYLE, + PROP_SMALL_TOOLBAR, + PROP_SHOW_NEW_TAB, + PROP_SHOW_WEB_SEARCH, + PROP_SHOW_TRASH, + PROP_TAB_LABEL_SIZE, - PROP_CLOSE_BUTTON, - PROP_MIDDLE_CLICK_GOTO + PROP_CLOSE_BUTTONS_ON_TABS, + PROP_OPEN_NEW_PAGES_IN, + PROP_MIDDLE_CLICK_OPENS_SELECTION, + PROP_OPEN_TABS_IN_THE_BACKGROUND, + PROP_OPEN_POPUPS_IN_TABS, + + PROP_ACCEPT_COOKIES, + PROP_ORIGINAL_COOKIES_ONLY, + PROP_MAXIMUM_COOKIE_AGE, + + PROP_REMEMBER_LAST_VISITED_PAGES, + PROP_MAXIMUM_HISTORY_AGE, + PROP_REMEMBER_LAST_FORM_INPUTS, + PROP_REMEMBER_LAST_DOWNLOADED_FILES, + + PROP_HTTP_PROXY, + PROP_CACHE_SIZE }; +GType +midori_startup_get_type (void) +{ + static GType type = 0; + if (!type) + { + static const GEnumValue values[] = { + { MIDORI_STARTUP_BLANK, "MIDORI_STARTUP_BLANK", "Blank" }, + { MIDORI_STARTUP_HOMEPAGE, "MIDORI_STARTUP_HOMEPAGE", "Homepage" }, + { MIDORI_STARTUP_LAST_OPEN_PAGES, "MIDORI_STARTUP_LAST_OPEN_PAGES", "Last open pages" }, + { 0, NULL, NULL } + }; + type = g_enum_register_static ("MidoriStartup", values); + } + return type; +} + +GType +midori_preferred_encoding_get_type (void) +{ + static GType type = 0; + if (!type) + { + static const GEnumValue values[] = { + { MIDORI_ENCODING_CHINESE, "MIDORI_ENCODING_CHINESE", "Chinese (BIG5)" }, + { MIDORI_ENCODING_JAPANESE, "MIDORI_ENCODING_JAPANESE", "Japanese (SHIFT_JIS)" }, + { MIDORI_ENCODING_RUSSIAN, "MIDORI_ENCODING_RUSSIAN", "Russian (KOI8-R)" }, + { MIDORI_ENCODING_UNICODE, "MIDORI_ENCODING_UNICODE", "Unicode (UTF-8)" }, + { MIDORI_ENCODING_WESTERN, "MIDORI_ENCODING_WESTERN", "Western (ISO-8859-1)" }, + { MIDORI_ENCODING_WESTERN, "MIDORI_ENCODING_CUSTOM", "Custom..." }, + { 0, NULL, NULL } + }; + type = g_enum_register_static ("MidoriPreferredEncoding", values); + } + return type; +} + +GType +midori_new_page_get_type (void) +{ + static GType type = 0; + if (!type) + { + static const GEnumValue values[] = { + { MIDORI_NEW_PAGE_TAB, "MIDORI_NEW_PAGE_TAB", "New tab" }, + { MIDORI_NEW_PAGE_WINDOW, "MIDORI_NEW_PAGE_WINDOW", "New window" }, + { MIDORI_NEW_PAGE_CURRENT, "MIDORI_NEW_PAGE_CURRENT", "Current tab" }, + { 0, NULL, NULL } + }; + type = g_enum_register_static ("MidoriNewPage", values); + } + return type; +} + +GType +midori_toolbar_style_get_type (void) +{ + static GType type = 0; + if (!type) + { + static const GEnumValue values[] = { + { MIDORI_TOOLBAR_DEFAULT, "MIDORI_TOOLBAR_DEFAULT", "Default" }, + { MIDORI_TOOLBAR_ICONS, "MIDORI_TOOLBAR_ICONS", "Icons" }, + { MIDORI_TOOLBAR_TEXT, "MIDORI_TOOLBAR_TEXT", "Text" }, + { MIDORI_TOOLBAR_BOTH, "MIDORI_TOOLBAR_BOTH", "Both" }, + { MIDORI_TOOLBAR_BOTH_HORIZ, "MIDORI_TOOLBAR_BOTH_HORIZ", "Both horizontal" }, + { 0, NULL, NULL } + }; + type = g_enum_register_static ("MidoriToolbarStyle", values); + } + return type; +} + +GType +midori_accept_cookies_get_type (void) +{ + static GType type = 0; + if (!type) + { + static const GEnumValue values[] = { + { MIDORI_ACCEPT_COOKIES_ALL, "MIDORI_ACCEPT_COOKIES_ALL", "All cookies" }, + { MIDORI_ACCEPT_COOKIES_SESSION, "MIDORI_ACCEPT_COOKIES_SESSION", "Session cookies" }, + { MIDORI_ACCEPT_COOKIES_NONE, "MIDORI_ACCEPT_COOKIES_NONE", "None" }, + { 0, NULL, NULL } + }; + type = g_enum_register_static ("MidoriAcceptCookies", values); + } + return type; +} + static void midori_web_settings_finalize (GObject* object); static void -midori_web_settings_set_property (GObject* object, - guint prop_id, +midori_web_settings_set_property (GObject* object, + guint prop_id, const GValue* value, - GParamSpec* pspec); + GParamSpec* pspec); static void -midori_web_settings_get_property (GObject* object, - guint prop_id, - GValue* value, +midori_web_settings_get_property (GObject* object, + guint prop_id, + GValue* value, GParamSpec* pspec); static void @@ -61,42 +209,289 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class) GParamFlags flags = G_PARAM_READWRITE | G_PARAM_CONSTRUCT; + g_object_class_install_property (gobject_class, + PROP_LOAD_ON_STARTUP, + g_param_spec_enum ( + "load-on-startup", + _("Load on Startup"), + _("What to load on startup"), + MIDORI_TYPE_STARTUP, + MIDORI_STARTUP_HOMEPAGE, + flags)); + + g_object_class_install_property (gobject_class, + PROP_HOMEPAGE, + g_param_spec_string ( + "homepage", + _("Homepage"), + _("The homepage"), + "http://www.google.com", + flags)); + + g_object_class_install_property (gobject_class, + PROP_DOWNLOAD_FOLDER, + g_param_spec_string ( + "download-folder", + _("Download Folder"), + _("The folder downloaded files are saved to"), + g_get_home_dir (), + G_PARAM_READABLE)); + + g_object_class_install_property (gobject_class, + PROP_SHOW_DOWNLOAD_NOTIFICATION, + g_param_spec_boolean ( + "show-download-notification", + _("Show Download Notification"), + _("Show a notification window for finished downloads"), + TRUE, + G_PARAM_READABLE)); + + g_object_class_install_property (gobject_class, + PROP_LOCATION_ENTRY_SEARCH, + g_param_spec_string ( + "location-entry-search", + _("Location entry Search"), + _("The search to perform inside the location entry"), + "http://www.google.com/search/?q=%s", + flags)); + + g_object_class_install_property (gobject_class, + PROP_PREFERRED_ENCODING, + g_param_spec_enum ( + "preferred-encoding", + _("Preferred Encoding"), + _("The preferred character encoding"), + MIDORI_TYPE_PREFERRED_ENCODING, + MIDORI_ENCODING_WESTERN, + flags)); + + + + g_object_class_install_property (gobject_class, + PROP_TOOLBAR_STYLE, + g_param_spec_enum ( + "toolbar-style", + _("Toolbar Style"), + _("The style of the toolbar"), + MIDORI_TYPE_TOOLBAR_STYLE, + MIDORI_TOOLBAR_DEFAULT, + flags)); + + g_object_class_install_property (gobject_class, + PROP_SMALL_TOOLBAR, + g_param_spec_boolean ( + "small-toolbar", + _("Small toolbar"), + _("Use small toolbar icons"), + FALSE, + flags)); + + g_object_class_install_property (gobject_class, + PROP_SHOW_NEW_TAB, + g_param_spec_boolean ( + "show-new-tab", + _("Show New Tab"), + _("Show the New Tab button in the toolbar"), + TRUE, + flags)); + + g_object_class_install_property (gobject_class, + PROP_SHOW_WEB_SEARCH, + g_param_spec_boolean ( + "show-web-search", + _("Show Web search"), + _("Show the Web search entry in the toolbar"), + TRUE, + flags)); + + g_object_class_install_property (gobject_class, + PROP_SHOW_TRASH, + g_param_spec_boolean ( + "show-trash", + _("Show Trash"), + _("Show the Trash button in the toolbar"), + TRUE, + flags)); + + + g_object_class_install_property (gobject_class, PROP_TAB_LABEL_SIZE, g_param_spec_int ( "tab-label-size", - "Tab Label Size", + _("Tab Label Size"), _("The desired tab label size"), 0, G_MAXINT, 10, flags)); g_object_class_install_property (gobject_class, - PROP_CLOSE_BUTTON, + PROP_CLOSE_BUTTONS_ON_TABS, g_param_spec_boolean ( - "close-button", - "Close Button", + "close-buttons-on-tabs", + _("Close Buttons on Tabs"), _("Whether tabs have close buttons"), FALSE, flags)); g_object_class_install_property (gobject_class, - PROP_MIDDLE_CLICK_GOTO, + PROP_OPEN_NEW_PAGES_IN, + g_param_spec_enum ( + "open-new-pages-in", + _("Open new pages in"), + _("Where to open new pages"), + MIDORI_TYPE_NEW_PAGE, + MIDORI_NEW_PAGE_TAB, + flags)); + + g_object_class_install_property (gobject_class, + PROP_MIDDLE_CLICK_OPENS_SELECTION, g_param_spec_boolean ( - "middle-click-goto", - "Middle Click Goto", + "middle-click-opens-selection", + _("Middle click opens Selection"), _("Load an URL from the selection via middle click"), FALSE, flags)); + g_object_class_install_property (gobject_class, + PROP_OPEN_TABS_IN_THE_BACKGROUND, + g_param_spec_boolean ( + "open-tabs-in-the-background", + _("Open tabs in the background"), + _("Whether to open new tabs in the background"), + FALSE, + flags)); + + g_object_class_install_property (gobject_class, + PROP_OPEN_POPUPS_IN_TABS, + g_param_spec_boolean ( + "open-popups-in-tabs", + _("Open popups in tabs"), + _("Whether to open popup windows in tabs"), + TRUE, + flags)); + + + + g_object_class_install_property (gobject_class, + PROP_ACCEPT_COOKIES, + g_param_spec_enum ( + "accept-cookies", + _("Accept cookies"), + _("What type of cookies to accept"), + MIDORI_TYPE_ACCEPT_COOKIES, + MIDORI_ACCEPT_COOKIES_ALL, + G_PARAM_READABLE)); + + g_object_class_install_property (gobject_class, + PROP_ORIGINAL_COOKIES_ONLY, + g_param_spec_boolean ( + "original-cookies-only", + _("Original cookies only"), + _("Accept cookies from the original website only"), + FALSE, + G_PARAM_READABLE)); + + g_object_class_install_property (gobject_class, + PROP_MAXIMUM_COOKIE_AGE, + g_param_spec_int ( + "maximum-cookie-age", + _("Maximum cookie age"), + _("The maximum number of days to save cookies for"), + 0, G_MAXINT, 30, + G_PARAM_READABLE)); + + + + g_object_class_install_property (gobject_class, + PROP_REMEMBER_LAST_VISITED_PAGES, + g_param_spec_boolean ( + "remember-last-visited-pages", + _("Remember last visited pages"), + _("Whether the last visited pages are saved"), + TRUE, + G_PARAM_READABLE)); + + g_object_class_install_property (gobject_class, + PROP_MAXIMUM_HISTORY_AGE, + g_param_spec_int ( + "maximum-history-age", + _("Maximum history age"), + _("The maximum number of days to save the history for"), + 0, G_MAXINT, 30, + G_PARAM_READABLE)); + + g_object_class_install_property (gobject_class, + PROP_REMEMBER_LAST_FORM_INPUTS, + g_param_spec_boolean ( + "remember-last-form-inputs", + _("Remember last form inputs"), + _("Whether the last form inputs are saved"), + TRUE, + G_PARAM_READABLE)); + + g_object_class_install_property (gobject_class, + PROP_REMEMBER_LAST_DOWNLOADED_FILES, + g_param_spec_boolean ( + "remember-last-downloaded-files", + _("Remember last downloaded files"), + _("Whether the last downloaded files are saved"), + TRUE, + G_PARAM_READABLE)); + + + + g_object_class_install_property (gobject_class, + PROP_HTTP_PROXY, + g_param_spec_string ( + "http-proxy", + _("HTTP Proxy"), + _("The proxy used for HTTP connections"), + g_getenv ("http_proxy"), + flags)); + + g_object_class_install_property (gobject_class, + PROP_CACHE_SIZE, + g_param_spec_int ( + "cache-size", + _("Cache size"), + _("The allowed size of the cache"), + 0, G_MAXINT, 100, + G_PARAM_READABLE)); + g_type_class_add_private (class, sizeof (MidoriWebSettingsPrivate)); } +static void +notify_default_encoding_cb (GObject* object, GParamSpec* pspec) +{ + MidoriWebSettings* web_settings = MIDORI_WEB_SETTINGS (object); + MidoriWebSettingsPrivate* priv = web_settings->priv; + const gchar* string; + g_object_get (object, "default-encoding", &string, NULL); + const gchar* encoding = string ? string : ""; + if (!strcmp (encoding, "BIG5")) + priv->preferred_encoding = MIDORI_ENCODING_CHINESE; + else if (!strcmp (encoding, "SHIFT_JIS")) + priv->preferred_encoding = MIDORI_ENCODING_JAPANESE; + else if (!strcmp (encoding, "KOI8-R")) + priv->preferred_encoding = MIDORI_ENCODING_RUSSIAN; + else if (!strcmp (encoding, "UTF-8")) + priv->preferred_encoding = MIDORI_ENCODING_UNICODE; + else if (!strcmp (encoding, "ISO-8859-1")) + priv->preferred_encoding = MIDORI_ENCODING_WESTERN; + else + priv->preferred_encoding = MIDORI_ENCODING_CUSTOM; + g_object_notify (object, "preferred-encoding"); +} static void midori_web_settings_init (MidoriWebSettings* web_settings) { web_settings->priv = MIDORI_WEB_SETTINGS_GET_PRIVATE (web_settings); + + g_signal_connect (web_settings, "notify::default-encoding", + G_CALLBACK (notify_default_encoding_cb), NULL); } static void @@ -116,14 +511,109 @@ midori_web_settings_set_property (GObject* object, switch (prop_id) { + case PROP_LOAD_ON_STARTUP: + priv->load_on_startup = g_value_get_enum (value); + break; + case PROP_HOMEPAGE: + katze_assign (priv->homepage, g_value_dup_string (value)); + break; + case PROP_DOWNLOAD_FOLDER: + katze_assign (priv->download_folder, g_value_dup_string (value)); + break; + case PROP_SHOW_DOWNLOAD_NOTIFICATION: + priv->show_download_notification = g_value_get_boolean (value); + break; + case PROP_LOCATION_ENTRY_SEARCH: + katze_assign (priv->location_entry_search, g_value_dup_string (value)); + break; + case PROP_PREFERRED_ENCODING: + priv->preferred_encoding = g_value_get_enum (value); + switch (priv->preferred_encoding) + { + case MIDORI_ENCODING_CHINESE: + g_object_set (object, "default-encoding", "BIG5", NULL); + break; + case MIDORI_ENCODING_JAPANESE: + g_object_set (object, "default-encoding", "SHIFT_JIS", NULL); + break; + case MIDORI_ENCODING_RUSSIAN: + g_object_set (object, "default-encoding", "KOI8-R", NULL); + break; + case MIDORI_ENCODING_UNICODE: + g_object_set (object, "default-encoding", "UTF-8", NULL); + break; + case MIDORI_ENCODING_WESTERN: + g_object_set (object, "default-encoding", "ISO-8859-1", NULL); + break; + case MIDORI_ENCODING_CUSTOM: + g_object_set (object, "default-encoding", "", NULL); + } + break; + + case PROP_TOOLBAR_STYLE: + priv->toolbar_style = g_value_get_enum (value); + break; + case PROP_SMALL_TOOLBAR: + priv->small_toolbar = g_value_get_boolean (value); + break; + case PROP_SHOW_NEW_TAB: + priv->show_new_tab = g_value_get_boolean (value); + break; + case PROP_SHOW_WEB_SEARCH: + priv->show_web_search = g_value_get_boolean (value); + break; + case PROP_SHOW_TRASH: + priv->show_trash = g_value_get_boolean (value); + break; + case PROP_TAB_LABEL_SIZE: priv->tab_label_size = g_value_get_int (value); break; - case PROP_CLOSE_BUTTON: - priv->close_button = g_value_get_boolean (value); + case PROP_CLOSE_BUTTONS_ON_TABS: + priv->close_buttons_on_tabs = g_value_get_boolean (value); break; - case PROP_MIDDLE_CLICK_GOTO: - priv->middle_click_goto = g_value_get_boolean (value); + case PROP_OPEN_NEW_PAGES_IN: + priv->open_new_pages_in = g_value_get_enum (value); + break; + case PROP_MIDDLE_CLICK_OPENS_SELECTION: + priv->middle_click_opens_selection = g_value_get_boolean (value); + break; + case PROP_OPEN_TABS_IN_THE_BACKGROUND: + priv->open_tabs_in_the_background = g_value_get_boolean (value); + break; + case PROP_OPEN_POPUPS_IN_TABS: + priv->open_popups_in_tabs = g_value_get_boolean (value); + break; + + case PROP_ACCEPT_COOKIES: + priv->accept_cookies = g_value_get_enum (value); + break; + case PROP_ORIGINAL_COOKIES_ONLY: + priv->original_cookies_only = g_value_get_boolean (value); + break; + case PROP_MAXIMUM_COOKIE_AGE: + priv->maximum_cookie_age = g_value_get_int (value); + break; + + case PROP_REMEMBER_LAST_VISITED_PAGES: + priv->remember_last_visited_pages = g_value_get_boolean (value); + break; + case PROP_MAXIMUM_HISTORY_AGE: + priv->maximum_history_age = g_value_get_int (value); + break; + case PROP_REMEMBER_LAST_FORM_INPUTS: + priv->remember_last_form_inputs = g_value_get_boolean (value); + break; + case PROP_REMEMBER_LAST_DOWNLOADED_FILES: + priv->remember_last_downloaded_files = g_value_get_boolean (value); + break; + + case PROP_HTTP_PROXY: + katze_assign (priv->http_proxy, g_value_dup_string (value)); + g_setenv ("http_proxy", priv->http_proxy ? priv->http_proxy : "", TRUE); + break; + case PROP_CACHE_SIZE: + priv->cache_size = g_value_get_int (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -142,14 +632,88 @@ midori_web_settings_get_property (GObject* object, switch (prop_id) { + case PROP_LOAD_ON_STARTUP: + g_value_set_enum (value, priv->load_on_startup); + break; + case PROP_HOMEPAGE: + g_value_set_string (value, priv->homepage); + break; + case PROP_DOWNLOAD_FOLDER: + g_value_set_string (value, priv->download_folder); + break; + case PROP_SHOW_DOWNLOAD_NOTIFICATION: + g_value_set_boolean (value, priv->show_download_notification); + break; + case PROP_LOCATION_ENTRY_SEARCH: + g_value_set_string (value, priv->location_entry_search); + break; + case PROP_PREFERRED_ENCODING: + g_value_set_enum (value, priv->preferred_encoding); + break; + + case PROP_TOOLBAR_STYLE: + g_value_set_enum (value, priv->toolbar_style); + break; + case PROP_SMALL_TOOLBAR: + g_value_set_boolean (value, priv->small_toolbar); + break; + case PROP_SHOW_NEW_TAB: + g_value_set_boolean (value, priv->show_new_tab); + break; + case PROP_SHOW_WEB_SEARCH: + g_value_set_boolean (value, priv->show_web_search); + break; + case PROP_SHOW_TRASH: + g_value_set_boolean (value, priv->show_trash); + break; + case PROP_TAB_LABEL_SIZE: g_value_set_int (value, priv->tab_label_size); break; - case PROP_CLOSE_BUTTON: - g_value_set_boolean (value, priv->close_button); + case PROP_CLOSE_BUTTONS_ON_TABS: + g_value_set_boolean (value, priv->close_buttons_on_tabs); break; - case PROP_MIDDLE_CLICK_GOTO: - g_value_set_boolean (value, priv->middle_click_goto); + case PROP_OPEN_NEW_PAGES_IN: + g_value_set_enum (value, priv->open_new_pages_in); + break; + case PROP_MIDDLE_CLICK_OPENS_SELECTION: + g_value_set_boolean (value, priv->middle_click_opens_selection); + break; + case PROP_OPEN_TABS_IN_THE_BACKGROUND: + g_value_set_boolean (value, priv->open_tabs_in_the_background); + break; + case PROP_OPEN_POPUPS_IN_TABS: + g_value_set_boolean (value, priv->open_popups_in_tabs); + break; + + case PROP_ACCEPT_COOKIES: + g_value_set_enum (value, priv->accept_cookies); + break; + case PROP_ORIGINAL_COOKIES_ONLY: + g_value_set_boolean (value, priv->original_cookies_only); + break; + case PROP_MAXIMUM_COOKIE_AGE: + g_value_set_int (value, priv->maximum_cookie_age); + break; + + case PROP_REMEMBER_LAST_VISITED_PAGES: + g_value_set_boolean (value, priv->remember_last_visited_pages); + break; + case PROP_MAXIMUM_HISTORY_AGE: + g_value_set_int (value, priv->maximum_history_age); + break; + case PROP_REMEMBER_LAST_FORM_INPUTS: + g_value_set_boolean (value, priv->remember_last_form_inputs); + break; + case PROP_REMEMBER_LAST_DOWNLOADED_FILES: + g_value_set_boolean (value, priv->remember_last_downloaded_files); + break; + + case PROP_HTTP_PROXY: + g_value_set_string (value, priv->http_proxy); + break; + case PROP_CACHE_SIZE: + g_value_set_int (value, priv->cache_size); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -190,12 +754,41 @@ midori_web_settings_copy (MidoriWebSettings* web_settings) MidoriWebSettingsPrivate* priv = web_settings->priv; MidoriWebSettings* copy; - copy = MIDORI_WEB_SETTINGS (webkit_web_settings_copy (WEBKIT_WEB_SETTINGS (web_settings))); + copy = MIDORI_WEB_SETTINGS (webkit_web_settings_copy ( + WEBKIT_WEB_SETTINGS (web_settings))); g_object_set (copy, - "tab-label-size", priv->tab_label_size, - "close-button", priv->close_button, - "middle-click-goto", priv->middle_click_goto, - NULL); + "load-on-startup", priv->load_on_startup, + "homepage", priv->homepage, + "download-folder", priv->download_folder, + "show-download-notification", priv->show_download_notification, + "location-entry-search", priv->location_entry_search, + "preferred-encoding", priv->preferred_encoding, + + "toolbar-style", priv->toolbar_style, + "small-toolbar", priv->small_toolbar, + "show-web-search", priv->show_web_search, + "show-new-tab", priv->show_new_tab, + "show-trash", priv->show_trash, + + "tab-label-size", priv->tab_label_size, + "close-buttons-on-tabs", priv->close_buttons_on_tabs, + "open-new-pages-in", priv->open_new_pages_in, + "middle-click-opens-selection", priv->middle_click_opens_selection, + "open-tabs-in-the-background", priv->open_tabs_in_the_background, + "open-popups-in-tabs", priv->open_popups_in_tabs, + + "accept-cookies", priv->accept_cookies, + "original-cookies-only", priv->original_cookies_only, + "maximum-cookie-age", priv->maximum_cookie_age, + + "remember-last-visited-pages", priv->remember_last_visited_pages, + "maximum-history-age", priv->maximum_history_age, + "remember-last-form-inputs", priv->remember_last_form_inputs, + "remember-last-downloaded-files", priv->remember_last_downloaded_files, + + "http-proxy", priv->http_proxy, + "cache-size", priv->cache_size, + NULL); return copy; } diff --git a/src/midori-websettings.h b/src/midori-websettings.h index 8ea40206..d08fafed 100644 --- a/src/midori-websettings.h +++ b/src/midori-websettings.h @@ -42,6 +42,76 @@ struct _MidoriWebSettings MidoriWebSettingsPrivate* priv; }; +typedef enum +{ + MIDORI_STARTUP_BLANK, + MIDORI_STARTUP_HOMEPAGE, + MIDORI_STARTUP_LAST_OPEN_PAGES +} MidoriStartup; + +GType +midori_startup_get_type (void) G_GNUC_CONST; + +#define MIDORI_TYPE_STARTUP \ + (midori_startup_get_type ()) + +typedef enum +{ + MIDORI_ENCODING_CHINESE, + MIDORI_ENCODING_JAPANESE, + MIDORI_ENCODING_RUSSIAN, + MIDORI_ENCODING_UNICODE, + MIDORI_ENCODING_WESTERN, + MIDORI_ENCODING_CUSTOM +} MidoriPreferredEncoding; + +GType +midori_preferred_encoding_get_type (void) G_GNUC_CONST; + +#define MIDORI_TYPE_PREFERRED_ENCODING \ + (midori_preferred_encoding_get_type ()) + +typedef enum +{ + MIDORI_NEW_PAGE_TAB, + MIDORI_NEW_PAGE_WINDOW, + MIDORI_NEW_PAGE_CURRENT +} MidoriNewPage; + +GType +midori_new_page_get_type (void) G_GNUC_CONST; + +#define MIDORI_TYPE_NEW_PAGE \ + (midori_new_page_get_type ()) + +typedef enum +{ + MIDORI_TOOLBAR_DEFAULT, + MIDORI_TOOLBAR_ICONS, + MIDORI_TOOLBAR_TEXT, + MIDORI_TOOLBAR_BOTH, + MIDORI_TOOLBAR_BOTH_HORIZ +} MidoriToolbarStyle; + +GType +midori_toolbar_style_get_type (void) G_GNUC_CONST; + +#define MIDORI_TYPE_TOOLBAR_STYLE \ + (midori_toolbar_style_get_type ()) + +typedef enum +{ + MIDORI_ACCEPT_COOKIES_ALL, + MIDORI_ACCEPT_COOKIES_SESSION, + MIDORI_ACCEPT_COOKIES_NONE +} MidoriAcceptCookies; + +GType +midori_accept_cookies_get_type (void) G_GNUC_CONST; + +#define MIDORI_TYPE_ACCEPT_COOKIES \ + (midori_accept_cookies_get_type ()) + struct _MidoriWebSettingsClass { WebKitWebSettingsClass parent_class; diff --git a/src/midori-webview.c b/src/midori-webview.c index d7958c83..9466d8d2 100644 --- a/src/midori-webview.c +++ b/src/midori-webview.c @@ -543,8 +543,8 @@ _midori_web_view_update_settings (MidoriWebView* web_view) g_object_get (G_OBJECT (priv->settings), "tab-label-size", &priv->tab_label_size, - "close-button", &priv->close_button, - "middle-click-goto", &priv->middle_click_goto, + "close-buttons-on-tabs", &priv->close_button, + "middle-click-opens-selection", &priv->middle_click_goto, NULL); } @@ -565,13 +565,13 @@ midori_web_view_settings_notify (MidoriWebSettings* web_settings, priv->tab_label_size = g_value_get_int (&value); _midori_web_view_update_tab_label_size (web_view); } - else if (name == g_intern_string ("close-button")) + else if (name == g_intern_string ("close-buttons-on-tabs")) { priv->close_button = g_value_get_boolean (&value); if (priv->tab_close) sokoke_widget_set_visible (priv->tab_close, priv->close_button); } - else if (name == g_intern_string ("middle-click-goto")) + else if (name == g_intern_string ("middle-click-opens-selection")) priv->middle_click_goto = g_value_get_boolean (&value); else if (!g_object_class_find_property (G_OBJECT_GET_CLASS (web_settings), name))