From 169973f3fe3494f6a04a2722a022ae0638c599c2 Mon Sep 17 00:00:00 2001 From: Christian Dywan Date: Thu, 17 Apr 2008 01:38:22 +0200 Subject: [PATCH] Remove old configuration logic entirely Almost all uses of the old system were superseded by the use of MidoriWebSettings now, the migration is almost finished. --- po/POTFILES.in | 1 - src/Makefile.am | 1 - src/conf.c | 70 ------- src/conf.h | 96 ---------- src/global.h | 4 - src/helpers.c | 26 +-- src/helpers.h | 6 - src/main.c | 34 ++-- src/midori-browser.c | 203 +++++++++++++++------ src/midori-websettings.c | 382 +++++++++++++++++++++++++++++---------- src/webSearch.c | 6 +- 11 files changed, 458 insertions(+), 371 deletions(-) delete mode 100644 src/conf.c delete mode 100644 src/conf.h diff --git a/po/POTFILES.in b/po/POTFILES.in index acd019fe..f5f1651b 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,7 +1,6 @@ # List of source files containing translatable strings. midori.desktop.in -src/conf.c src/helpers.c src/main.c src/midori-console.c diff --git a/src/Makefile.am b/src/Makefile.am index 93d0f86e..1b927068 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -28,7 +28,6 @@ midori_SOURCES = \ webSearch.c webSearch.h \ helpers.c helpers.h \ sokoke.c sokoke.h \ - conf.c conf.h \ search.c search.h \ global.h \ ui.h \ diff --git a/src/conf.c b/src/conf.c deleted file mode 100644 index d77a7323..00000000 --- a/src/conf.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - Copyright (C) 2007-2008 Christian Dywan - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - See the file COPYING for the full license text. -*/ - -#include "conf.h" - -#include "sokoke.h" - -#include -#include -#include - -CConfig* config_new(void) -{ - return g_new0(CConfig, 1); -} - -void config_free(CConfig* config) -{ - g_free(config->homepage); - g_free(config->locationSearch); - g_free(config->panelPageholder); - g_free(config); -} - -gboolean config_from_file(CConfig* config, const gchar* filename, GError** error) -{ - GKeyFile* keyFile = g_key_file_new(); - g_key_file_load_from_file(keyFile, filename, G_KEY_FILE_KEEP_COMMENTS, error); - - #define GET_INT(var, key, default) \ - var = sokoke_key_file_get_integer_default( \ - keyFile, "session", key, default, NULL) - #define GET_STR(var, key, default) \ - var = sokoke_key_file_get_string_default( \ - keyFile, "session", key, default, NULL) - GET_INT(config->rememberWinSize, "RememberWinSize", TRUE); - GET_INT(config->winWidth, "WinWidth", 0); - GET_INT(config->winHeight, "WinHeight", 0); - GET_INT(config->winPanelPos, "WinPanelPos", 0); - GET_INT(config->searchEngine, "SearchEngine", 0); - #undef GET_INT - #undef GET_STR - - g_key_file_free(keyFile); - return !(error && *error); -} - -gboolean config_to_file(CConfig* config, const gchar* filename, GError** error) -{ - GKeyFile* keyFile = g_key_file_new(); - - g_key_file_set_integer(keyFile, "session", "RememberWinSize", config->rememberWinSize); - g_key_file_set_integer(keyFile, "session", "WinWidth", config->winWidth); - g_key_file_set_integer(keyFile, "session", "WinHeight", config->winHeight); - g_key_file_set_integer(keyFile, "session", "WinPanelPos", config->winPanelPos); - g_key_file_set_integer(keyFile, "session", "SearchEngine", config->searchEngine); - - gboolean saved = sokoke_key_file_save_to_file(keyFile, filename, error); - g_key_file_free(keyFile); - - return saved; -} diff --git a/src/conf.h b/src/conf.h deleted file mode 100644 index 9a846079..00000000 --- a/src/conf.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - Copyright (C) 2007-2008 Christian Dywan - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - See the file COPYING for the full license text. -*/ - -#ifndef __CONF_H__ -#define __CONF_H__ 1 - -#include - -typedef struct _CConfig -{ - guint startup; - gchar* homepage; - gchar* locationSearch; - gboolean toolbarNavigation; - gboolean toolbarBookmarks; - //gboolean toolbarDownloads; - gboolean toolbarStatus; - guint toolbarStyle; - gboolean toolbarSmall; - gboolean panelShow; - guint panelActive; - gchar* panelPageholder; - guint tabSize; // tab size in charcters - gboolean tabClose; - gboolean toolbarWebSearch; - gboolean toolbarNewTab; - gboolean toolbarClosedTabs; - guint newPages; // where to open new pages - gboolean openTabsInTheBackground; - gboolean openPopupsInTabs; - gboolean middleClickGoto; - - gchar* defaultFontFamily; - guint defaultFontSize; - guint minimumFontSize; - gchar* defaultEncoding; - gboolean autoLoadImages; - gboolean autoShrinkImages; - gboolean printBackgrounds; - gboolean resizableTextAreas; - gboolean userStylesheet; - gchar* userStylesheetUri; - gboolean enableScripts; - gboolean enablePlugins; - - gboolean rememberWinSize; // Restore window size upon startup? - gint winWidth; - gint winHeight; - guint winPanelPos; - guint searchEngine; // last selected search engine -} CConfig; - -enum -{ - CONFIG_STARTUP_BLANK, - CONFIG_STARTUP_HOMEPAGE, - CONFIG_STARTUP_SESSION -}; - -enum -{ - CONFIG_TOOLBAR_DEFAULT, - CONFIG_TOOLBAR_ICONS, - CONFIG_TOOLBAR_TEXT, - CONFIG_TOOLBAR_BOTH, - CONFIG_TOOLBAR_BOTH_HORIZ -}; - -enum -{ - CONFIG_NEWPAGES_TAB_NEW, - CONFIG_NEWPAGES_WINDOW_NEW, - CONFIG_NEWPAGES_TAB_CURRENT -}; - -CConfig* -config_new(void); - -void -config_free(CConfig*); - -gboolean -config_from_file(CConfig*, const gchar*, GError**); - -gboolean -config_to_file(CConfig*, const gchar*, GError**); - -#endif /* !__CONF_H__ */ diff --git a/src/global.h b/src/global.h index 497ca7f6..40f003c4 100644 --- a/src/global.h +++ b/src/global.h @@ -12,8 +12,6 @@ #ifndef __GLOBAL_H__ #define __GLOBAL_H__ 1 -#include "conf.h" - #include "midori-websettings.h" #include @@ -26,8 +24,6 @@ GList* searchEngines; // Items of type 'SearchEngine' KatzeXbelItem* bookmarks; -CConfig* config; -MidoriWebSettings* webSettings; // Custom stock items diff --git a/src/helpers.c b/src/helpers.c index 851263bb..cae95325 100644 --- a/src/helpers.c +++ b/src/helpers.c @@ -130,7 +130,7 @@ gchar* magic_uri(const gchar* uri, gboolean search) //g_strfreev(sParts); // We only have a word or there is no matching keyowrd, so search for it if(searchUrl == NULL) - g_snprintf(search, 255, config->locationSearch, uri); + g_snprintf(search, 255, ""/*config->locationSearch*/, uri); return g_strdup(search); } return g_strdup(uri); @@ -143,27 +143,3 @@ gchar* get_default_font(void) g_object_get(gtksettings, "gtk-font-name", &defaultFont, NULL); return defaultFont; } - -GtkToolbarStyle config_to_toolbarstyle(guint toolbarStyle) -{ - switch(toolbarStyle) - { - case CONFIG_TOOLBAR_ICONS: - return GTK_TOOLBAR_ICONS; - case CONFIG_TOOLBAR_TEXT: - return GTK_TOOLBAR_TEXT; - case CONFIG_TOOLBAR_BOTH: - return GTK_TOOLBAR_BOTH; - case CONFIG_TOOLBAR_BOTH_HORIZ: - return GTK_TOOLBAR_BOTH_HORIZ; - } - GtkSettings* gtkSettings = gtk_settings_get_default(); - g_object_get(gtkSettings, "gtk-toolbar-style", &toolbarStyle, NULL); - return toolbarStyle; -} - -GtkToolbarStyle config_to_toolbariconsize(gboolean toolbarSmall) -{ - return toolbarSmall ? GTK_ICON_SIZE_SMALL_TOOLBAR - : GTK_ICON_SIZE_LARGE_TOOLBAR; -} diff --git a/src/helpers.h b/src/helpers.h index 92d0a6ab..dde12642 100644 --- a/src/helpers.h +++ b/src/helpers.h @@ -40,10 +40,4 @@ magic_uri(const gchar*, gboolean bSearch); gchar* get_default_font(void); -GtkToolbarStyle -config_to_toolbarstyle(); - -GtkToolbarStyle -config_to_toolbariconsize(gboolean); - #endif /* !__HELPERS_H__ */ diff --git a/src/main.c b/src/main.c index 1ea8fdb6..0df50448 100644 --- a/src/main.c +++ b/src/main.c @@ -259,6 +259,9 @@ settings_save_to_file (MidoriWebSettings* settings, int main(int argc, char** argv) { + MidoriStartup load_on_startup; + gchar* homepage; + locale_init(); g_set_application_name(_("midori")); @@ -267,7 +270,8 @@ int main(int argc, char** argv) GOptionEntry entries[] = { { "version", 'v', 0, G_OPTION_ARG_NONE, &version, - N_("Display program version"), NULL } + N_("Display program version"), NULL }, + { NULL } }; GError* error = NULL; @@ -310,7 +314,6 @@ int main(int argc, char** argv) gchar* config_file = g_build_filename (config_path, "config", NULL); error = NULL; MidoriWebSettings* settings = settings_new_from_file (config_file); - webSettings = settings; katze_assign (config_file, g_build_filename (config_path, "accels", NULL)); gtk_accel_map_load (config_file); katze_assign (config_file, g_build_filename (config_path, "search", NULL)); @@ -337,9 +340,9 @@ int main(int argc, char** argv) g_error_free (error); } g_free (config_file); - KatzeXbelItem* _session = katze_xbel_folder_new(); - config = config_new (); - if(config->startup == CONFIG_STARTUP_SESSION) + KatzeXbelItem* _session = katze_xbel_folder_new (); + g_object_get (settings, "load-on-startup", &load_on_startup, NULL); + if (load_on_startup == MIDORI_STARTUP_LAST_OPEN_PAGES) { config_file = g_build_filename (config_path, "session.xbel", NULL); error = NULL; @@ -382,7 +385,6 @@ int main(int argc, char** argv) , NULL); if(gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_ACCEPT) { - config_free(config); search_engines_free(searchEngines); katze_xbel_item_unref(bookmarks); katze_xbel_item_unref(_session); @@ -410,14 +412,18 @@ int main(int argc, char** argv) } g_free(uri); - if(katze_xbel_folder_is_empty(_session)) + if (katze_xbel_folder_is_empty (_session)) { - KatzeXbelItem* item = katze_xbel_bookmark_new(); - if(config->startup == CONFIG_STARTUP_BLANK) - katze_xbel_bookmark_set_href(item, ""); + KatzeXbelItem* item = katze_xbel_bookmark_new (); + if (load_on_startup == MIDORI_STARTUP_BLANK) + katze_xbel_bookmark_set_href (item, ""); else - katze_xbel_bookmark_set_href(item, config->homepage); - katze_xbel_folder_prepend_item(_session, item); + { + g_object_get (settings, "homepage", &homepage, NULL); + katze_xbel_bookmark_set_href (item, homepage); + g_free (homepage); + } + katze_xbel_folder_prepend_item (_session, item); } g_free (config_path); @@ -493,7 +499,8 @@ int main(int argc, char** argv) g_error_free (error); } katze_xbel_item_unref (xbel_trash); - if(config->startup == CONFIG_STARTUP_SESSION) + g_object_get (settings, "load-on-startup", &load_on_startup, NULL); + if(load_on_startup == MIDORI_STARTUP_LAST_OPEN_PAGES) { katze_assign (config_file, g_build_filename (config_path, "session.xbel", NULL)); @@ -512,7 +519,6 @@ int main(int argc, char** argv) g_warning ("The configuration couldn't be saved. %s", error->message); g_error_free (error); } - config_free (config); katze_assign (config_file, g_build_filename (config_path, "accels", NULL)); gtk_accel_map_save (config_file); g_free (config_file); diff --git a/src/midori-browser.c b/src/midori-browser.c index 57fac4e8..5bf771d3 100644 --- a/src/midori-browser.c +++ b/src/midori-browser.c @@ -14,7 +14,6 @@ #include "midori-browser.h" #include "global.h" -#include "conf.h" #include "helpers.h" #include "webSearch.h" #include "prefs.h" @@ -25,6 +24,7 @@ #include "midori-console.h" #include "midori-trash.h" +#include #include #include #include @@ -796,10 +796,16 @@ midori_browser_navigationbar_notify_style_cb (GObject* object, { MidoriBrowserPrivate* priv = browser->priv; - if (config->toolbarStyle == CONFIG_TOOLBAR_DEFAULT) + MidoriToolbarStyle toolbar_style; + GtkToolbarStyle gtk_toolbar_style; + + g_object_get (priv->settings, "toolbar-style", &toolbar_style, NULL); + if (toolbar_style == MIDORI_TOOLBAR_DEFAULT) { - gtk_toolbar_set_style (GTK_TOOLBAR(priv->navigationbar), - config_to_toolbarstyle (config->toolbarStyle)); + g_object_get (priv->settings, + "gtk-toolbar-style", >k_toolbar_style, NULL); + gtk_toolbar_set_style (GTK_TOOLBAR (priv->navigationbar), + gtk_toolbar_style); } } @@ -881,8 +887,9 @@ _action_navigationbar_activate (GtkToggleAction* action, { MidoriBrowserPrivate* priv = browser->priv; - config->toolbarNavigation = gtk_toggle_action_get_active (action); - sokoke_widget_set_visible (priv->navigationbar, config->toolbarNavigation); + gboolean active = gtk_toggle_action_get_active (action); + g_object_set (priv->settings, "show-navigationbar", active, NULL); + sokoke_widget_set_visible (priv->navigationbar, active); } static void @@ -891,8 +898,9 @@ _action_bookmarkbar_activate (GtkToggleAction* action, { MidoriBrowserPrivate* priv = browser->priv; - config->toolbarBookmarks = gtk_toggle_action_get_active (action); - sokoke_widget_set_visible (priv->bookmarkbar, config->toolbarBookmarks); + gboolean active = gtk_toggle_action_get_active (action); + g_object_set (priv->settings, "show-bookmarkbar", active, NULL); + sokoke_widget_set_visible (priv->bookmarkbar, active); } static void @@ -901,8 +909,9 @@ _action_statusbar_activate (GtkToggleAction* action, { MidoriBrowserPrivate* priv = browser->priv; - config->toolbarStatus = gtk_toggle_action_get_active (action); - sokoke_widget_set_visible (priv->statusbar, config->toolbarStatus); + gboolean active = gtk_toggle_action_get_active (action); + g_object_set (priv->settings, "show-statusbar", active, NULL); + sokoke_widget_set_visible (priv->statusbar, active); } static void @@ -995,8 +1004,14 @@ static void _action_home_activate (GtkAction* action, MidoriBrowser* browser) { + MidoriBrowserPrivate* priv = browser->priv; + + gchar* homepage; + GtkWidget* web_view = midori_browser_get_current_web_view (browser); - g_object_set (web_view, "uri", config->homepage, NULL); + g_object_get (priv->settings, "homepage", &homepage, NULL); + g_object_set (web_view, "uri", homepage, NULL); + g_free (homepage); } static gboolean @@ -1645,8 +1660,9 @@ _action_panel_activate (GtkToggleAction* action, { MidoriBrowserPrivate* priv = browser->priv; - config->panelShow = gtk_toggle_action_get_active (action); - sokoke_widget_set_visible (priv->panel, config->panelShow); + gboolean active = gtk_toggle_action_get_active (action); + g_object_set (priv->settings, "show-panel", active, NULL); + sokoke_widget_set_visible (priv->panel, active); } static void @@ -1657,12 +1673,13 @@ _action_open_in_panel_activate (GtkAction* action, GtkWidget* web_view = midori_browser_get_current_web_view (browser); const gchar* uri = midori_web_view_get_display_uri (MIDORI_WEB_VIEW (web_view)); - katze_assign (config->panelPageholder, g_strdup (uri)); + // FIXME: Don't assign the uri here, update it properly while navigating + g_object_set (priv->settings, "last-pageholder-uri", uri, NULL); gint n = midori_panel_page_num (MIDORI_PANEL (priv->panel), priv->panel_pageholder); midori_panel_set_current_page (MIDORI_PANEL (priv->panel), n); gtk_widget_show (priv->panel); - g_object_set (priv->panel_pageholder, "uri", config->panelPageholder, NULL); + g_object_set (priv->panel_pageholder, "uri", uri, NULL); } @@ -1671,7 +1688,10 @@ midori_panel_notify_position_cb (GObject* object, GParamSpec* arg1, MidoriBrowser* browser) { - config->winPanelPos = gtk_paned_get_position (GTK_PANED (object)); + MidoriBrowserPrivate* priv = browser->priv; + + gboolean position = gtk_paned_get_position (GTK_PANED (object)); + g_object_set (priv->settings, "last-panel-position", position, NULL); } static gboolean @@ -2087,6 +2107,7 @@ static void midori_browser_size_allocate_cb (MidoriBrowser* browser, GtkAllocation* allocation) { + MidoriBrowserPrivate* priv = browser->priv; GtkWidget* widget = GTK_WIDGET (browser); if (GTK_WIDGET_REALIZED (widget)) @@ -2094,8 +2115,9 @@ midori_browser_size_allocate_cb (MidoriBrowser* browser, GdkWindowState state = gdk_window_get_state (widget->window); if (!(state & (GDK_WINDOW_STATE_MAXIMIZED | GDK_WINDOW_STATE_FULLSCREEN))) { - config->winWidth = allocation->width; - config->winHeight = allocation->height; + g_object_set (priv->settings, + "last-window-width", allocation->width, + "last-window-height", allocation->height, NULL); } } } @@ -2233,22 +2255,6 @@ midori_browser_init (MidoriBrowser* browser) // Setup the window metrics g_signal_connect (browser, "window-state-event", G_CALLBACK (midori_browser_window_state_event_cb), NULL); - GdkScreen* screen = gtk_window_get_screen (GTK_WINDOW (browser)); - const gint default_width = (gint)gdk_screen_get_width (screen) / 1.7; - const gint default_height = (gint)gdk_screen_get_height (screen) / 1.7; - if (config->rememberWinSize) - { - if (!config->winWidth && !config->winHeight) - { - config->winWidth = default_width; - config->winHeight = default_width; - } - gtk_window_set_default_size (GTK_WINDOW (browser), - config->winWidth, config->winHeight); - } - else - gtk_window_set_default_size (GTK_WINDOW(browser), - default_width, default_height); g_signal_connect (browser, "size-allocate", G_CALLBACK (midori_browser_size_allocate_cb), NULL); // FIXME: Use custom program icon @@ -2338,14 +2344,11 @@ midori_browser_init (MidoriBrowser* browser) // Create the navigationbar priv->navigationbar = gtk_ui_manager_get_widget ( ui_manager, "/toolbar_navigation"); - gtk_toolbar_set_style (GTK_TOOLBAR (priv->navigationbar), - config_to_toolbarstyle (config->toolbarStyle)); - GtkSettings* gtk_settings = gtk_widget_get_settings (priv->navigationbar); - g_signal_connect (gtk_settings, "notify::gtk-toolbar-style", - G_CALLBACK (midori_browser_navigationbar_notify_style_cb), - browser); - gtk_toolbar_set_icon_size (GTK_TOOLBAR (priv->navigationbar), - config_to_toolbariconsize (config->toolbarSmall)); + // FIXME: settings should be connected with screen changes + GtkSettings* gtk_settings = gtk_widget_get_settings (GTK_WIDGET (browser)); + if (gtk_settings) + g_signal_connect (gtk_settings, "notify::gtk-toolbar-style", + G_CALLBACK (midori_browser_navigationbar_notify_style_cb), browser); gtk_toolbar_set_show_arrow (GTK_TOOLBAR (priv->navigationbar), TRUE); gtk_box_pack_start (GTK_BOX (vbox), priv->navigationbar, FALSE, FALSE, 0); priv->button_tab_new = gtk_ui_manager_get_widget ( @@ -2377,7 +2380,6 @@ midori_browser_init (MidoriBrowser* browser) // FIXME: The interface is somewhat awkward and ought to be rethought // TODO: Display "show in context menu" search engines as "completion actions" entry_setup_completion (GTK_ENTRY (priv->search)); - update_searchEngine (config->searchEngine, priv->search); g_object_connect (priv->search, "signal::icon-released", on_webSearch_icon_released, browser, @@ -2405,7 +2407,6 @@ midori_browser_init (MidoriBrowser* browser) G_CALLBACK (_action_fullscreen_activate), browser); gtk_toolbar_insert (GTK_TOOLBAR (priv->navigationbar), GTK_TOOL_ITEM (priv->button_fullscreen), -1); - _action_set_active (browser, "Navigationbar", config->toolbarNavigation); // Bookmarkbar priv->bookmarkbar = gtk_toolbar_new (); @@ -2454,7 +2455,6 @@ midori_browser_init (MidoriBrowser* browser) } sokoke_container_show_children (GTK_CONTAINER (priv->bookmarkbar)); gtk_box_pack_start (GTK_BOX (vbox), priv->bookmarkbar, FALSE, FALSE, 0); - _action_set_active (browser, "Bookmarkbar", config->toolbarBookmarks); // Superuser warning GtkWidget* hbox; @@ -2463,7 +2463,6 @@ midori_browser_init (MidoriBrowser* browser) // Create the panel GtkWidget* hpaned = gtk_hpaned_new (); - gtk_paned_set_position (GTK_PANED (hpaned), config->winPanelPos); g_signal_connect (hpaned, "notify::position", G_CALLBACK (midori_panel_notify_position_cb), browser); @@ -2476,8 +2475,6 @@ midori_browser_init (MidoriBrowser* browser) g_signal_connect (priv->panel, "close", G_CALLBACK (midori_panel_close_cb), browser); gtk_paned_pack1 (GTK_PANED (hpaned), priv->panel, FALSE, FALSE); - sokoke_widget_set_visible (priv->panel, config->panelShow); - _action_set_active (browser, "Panel", config->panelShow); // Bookmarks GtkWidget* box = gtk_vbox_new (FALSE, 0); @@ -2552,17 +2549,13 @@ midori_browser_init (MidoriBrowser* browser) // Pageholder priv->panel_pageholder = g_object_new (MIDORI_TYPE_WEB_VIEW, - "uri", config->panelPageholder, + "uri", "", NULL); gtk_widget_show (priv->panel_pageholder); midori_panel_append_page (MIDORI_PANEL (priv->panel), priv->panel_pageholder, GTK_STOCK_CONVERT, _("Pageholder")); - midori_panel_set_current_page (MIDORI_PANEL (priv->panel), - config->panelActive); - sokoke_widget_set_visible (priv->panel, config->panelShow); - // Notebook, containing all web_views priv->notebook = gtk_notebook_new (); gtk_notebook_set_scrollable (GTK_NOTEBOOK (priv->notebook), TRUE); @@ -2638,13 +2631,8 @@ midori_browser_init (MidoriBrowser* browser) gtk_widget_set_size_request (priv->progressbar, -1, 1); gtk_box_pack_start (GTK_BOX (priv->statusbar), priv->progressbar, FALSE, FALSE, 3); - _action_set_active (browser, "Statusbar", config->toolbarStatus); g_object_unref (ui_manager); - - sokoke_widget_set_visible (priv->button_tab_new, config->toolbarNewTab); - sokoke_widget_set_visible (priv->search, config->toolbarWebSearch); - sokoke_widget_set_visible (priv->button_trash, config->toolbarClosedTabs); } static void @@ -2668,6 +2656,99 @@ midori_browser_finalize (GObject* object) G_OBJECT_CLASS (midori_browser_parent_class)->finalize (object); } +static void +_midori_browser_update_settings (MidoriBrowser* browser) +{ + MidoriBrowserPrivate* priv = browser->priv; + + gboolean remember_last_window_size; + gint last_window_width, last_window_height; + gint last_panel_position, last_panel_page; + gboolean show_navigationbar, show_bookmarkbar, show_panel, show_statusbar; + gboolean small_toolbar, show_new_tab, show_web_search, show_trash; + MidoriToolbarStyle toolbar_style; + gint last_web_search; + gchar* last_pageholder_uri; + g_object_get (priv->settings, + "remember-last-window-size", &remember_last_window_size, + "last-window-width", &last_window_width, + "last-window-height", &last_window_height, + "last-panel-position", &last_panel_position, + "last-panel-page", &last_panel_page, + "show-navigationbar", &show_navigationbar, + "show-bookmarkbar", &show_bookmarkbar, + "show-panel", &show_panel, + "show-statusbar", &show_statusbar, + "small-toolbar", &small_toolbar, + "show-new-tab", &show_new_tab, + "show-web-search", &show_web_search, + "show-trash", &show_trash, + "toolbar-style", &toolbar_style, + "last-web-search", &last_web_search, + "last-pageholder-uri", &last_pageholder_uri, + NULL); + + GdkScreen* screen = gtk_window_get_screen (GTK_WINDOW (browser)); + const gint default_width = (gint)gdk_screen_get_width (screen) / 1.7; + const gint default_height = (gint)gdk_screen_get_height (screen) / 1.7; + + if (remember_last_window_size) + { + if (last_window_width && last_window_height) + gtk_window_set_default_size (GTK_WINDOW (browser), + last_window_width, last_window_height); + else + gtk_window_set_default_size (GTK_WINDOW (browser), + default_width, default_height); + } + + GtkToolbarStyle gtk_toolbar_style; + GtkSettings* gtk_settings = gtk_widget_get_settings (GTK_WIDGET (browser)); + if (toolbar_style == MIDORI_TOOLBAR_DEFAULT && gtk_settings) + g_object_get (gtk_settings, "gtk-toolbar-style", >k_toolbar_style, NULL); + else + { + switch (toolbar_style) + { + case MIDORI_TOOLBAR_ICONS: + gtk_toolbar_style = GTK_TOOLBAR_ICONS; + break; + case MIDORI_TOOLBAR_TEXT: + gtk_toolbar_style = GTK_TOOLBAR_TEXT; + break; + case MIDORI_TOOLBAR_BOTH: + gtk_toolbar_style = GTK_TOOLBAR_BOTH; + break; + case MIDORI_TOOLBAR_BOTH_HORIZ: + case MIDORI_TOOLBAR_DEFAULT: + gtk_toolbar_style = GTK_TOOLBAR_BOTH_HORIZ; + } + } + gtk_toolbar_set_style (GTK_TOOLBAR (priv->navigationbar), + gtk_toolbar_style); + gtk_toolbar_set_icon_size (GTK_TOOLBAR (priv->navigationbar), + small_toolbar ? GTK_ICON_SIZE_SMALL_TOOLBAR + : GTK_ICON_SIZE_LARGE_TOOLBAR); + + update_searchEngine (last_web_search, priv->search); + + gtk_paned_set_position (GTK_PANED (gtk_widget_get_parent (priv->panel)), + last_panel_position); + midori_panel_set_current_page (MIDORI_PANEL (priv->panel), last_panel_page); + g_object_set (priv->panel_pageholder, "uri", last_pageholder_uri, NULL); + + _action_set_active (browser, "Navigationbar", show_navigationbar); + _action_set_active (browser, "Bookmarkbar", show_bookmarkbar); + _action_set_active (browser, "Panel", show_panel); + _action_set_active (browser, "Statusbar", show_statusbar); + + sokoke_widget_set_visible (priv->button_tab_new, show_new_tab); + sokoke_widget_set_visible (priv->search, show_web_search); + sokoke_widget_set_visible (priv->button_trash, show_trash); + + g_free (last_pageholder_uri); +} + static void midori_browser_set_property (GObject* object, guint prop_id, @@ -2685,6 +2766,7 @@ midori_browser_set_property (GObject* object, case PROP_SETTINGS: katze_object_assign (priv->settings, g_value_get_object (value)); g_object_ref (priv->settings); + _midori_browser_update_settings (browser); gtk_container_foreach (GTK_CONTAINER (priv->notebook), (GtkCallback) midori_web_view_set_settings, priv->settings); @@ -2855,7 +2937,10 @@ midori_browser_append_tab (MidoriBrowser* browser, _midori_browser_update_actions (browser); n = gtk_notebook_page_num (GTK_NOTEBOOK (priv->notebook), scrolled); - if (!config->openTabsInTheBackground) + gboolean open_tabs_in_the_background; + g_object_get (priv->settings, "open-tabs-in-the-background", + &open_tabs_in_the_background, NULL); + if (open_tabs_in_the_background) { gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->notebook), n); gtk_window_set_focus (GTK_WINDOW (browser), priv->location); diff --git a/src/midori-websettings.c b/src/midori-websettings.c index 08dba7f6..c89f0613 100644 --- a/src/midori-websettings.c +++ b/src/midori-websettings.c @@ -20,12 +20,18 @@ 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; + gboolean remember_last_window_size; + gint last_window_width; + gint last_window_height; + gint last_panel_position; + gint last_panel_page; + gint last_web_search; + gchar* last_pageholder_uri; + + gboolean show_navigationbar; + gboolean show_bookmarkbar; + gboolean show_panel; + gboolean show_statusbar; MidoriToolbarStyle toolbar_style; gboolean small_toolbar; @@ -33,6 +39,13 @@ struct _MidoriWebSettingsPrivate gboolean show_new_tab; gboolean show_trash; + MidoriStartup load_on_startup; + gchar* homepage; + gchar* download_folder; + gboolean show_download_notification; + gchar* location_entry_search; + MidoriPreferredEncoding preferred_encoding; + gint tab_label_size; gboolean close_buttons_on_tabs; MidoriNewPage open_new_pages_in; @@ -61,12 +74,18 @@ enum { PROP_0, - PROP_LOAD_ON_STARTUP, - PROP_HOMEPAGE, - PROP_DOWNLOAD_FOLDER, - PROP_SHOW_DOWNLOAD_NOTIFICATION, - PROP_LOCATION_ENTRY_SEARCH, - PROP_PREFERRED_ENCODING, + PROP_REMEMBER_LAST_WINDOW_SIZE, + PROP_LAST_WINDOW_WIDTH, + PROP_LAST_WINDOW_HEIGHT, + PROP_LAST_PANEL_POSITION, + PROP_LAST_PANEL_PAGE, + PROP_LAST_WEB_SEARCH, + PROP_LAST_PAGEHOLDER_URI, + + PROP_SHOW_NAVIGATIONBAR, + PROP_SHOW_BOOKMARKBAR, + PROP_SHOW_PANEL, + PROP_SHOW_STATUSBAR, PROP_TOOLBAR_STYLE, PROP_SMALL_TOOLBAR, @@ -74,6 +93,13 @@ enum PROP_SHOW_WEB_SEARCH, PROP_SHOW_TRASH, + PROP_LOAD_ON_STARTUP, + PROP_HOMEPAGE, + PROP_DOWNLOAD_FOLDER, + PROP_SHOW_DOWNLOAD_NOTIFICATION, + PROP_LOCATION_ENTRY_SEARCH, + PROP_PREFERRED_ENCODING, + PROP_TAB_LABEL_SIZE, PROP_CLOSE_BUTTONS_ON_TABS, PROP_OPEN_NEW_PAGES_IN, @@ -209,6 +235,156 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class) GParamFlags flags = G_PARAM_READWRITE | G_PARAM_CONSTRUCT; + g_object_class_install_property (gobject_class, + PROP_REMEMBER_LAST_WINDOW_SIZE, + g_param_spec_boolean ( + "remember-last-window-size", + _("Remember last window size"), + _("Whether to save the last window size"), + TRUE, + flags)); + + g_object_class_install_property (gobject_class, + PROP_LAST_WINDOW_WIDTH, + g_param_spec_int ( + "last-window-width", + _("Last window width"), + _("The last saved window width"), + 0, G_MAXINT, 0, + flags)); + + g_object_class_install_property (gobject_class, + PROP_LAST_WINDOW_HEIGHT, + g_param_spec_int ( + "last-window-height", + _("Last window height"), + _("The last saved window height"), + 0, G_MAXINT, 0, + flags)); + + g_object_class_install_property (gobject_class, + PROP_LAST_PANEL_POSITION, + g_param_spec_int ( + "last-panel-position", + _("Last panel position"), + _("The last saved panel position"), + 0, G_MAXINT, 0, + flags)); + + g_object_class_install_property (gobject_class, + PROP_LAST_PANEL_PAGE, + g_param_spec_int ( + "last-panel-page", + _("Last panel page"), + _("The last saved panel page"), + 0, G_MAXINT, 0, + flags)); + + g_object_class_install_property (gobject_class, + PROP_LAST_WEB_SEARCH, + g_param_spec_int ( + "last-web-search", + _("Last Web search"), + _("The last saved Web search"), + 0, G_MAXINT, 0, + flags)); + + g_object_class_install_property (gobject_class, + PROP_LAST_PAGEHOLDER_URI, + g_param_spec_string ( + "last-pageholder-uri", + _("Last pageholder URI"), + _("The URI last opened in the pageholder"), + "", + flags)); + + + + g_object_class_install_property (gobject_class, + PROP_SHOW_NAVIGATIONBAR, + g_param_spec_boolean ( + "show-navigationbar", + _("Show Navigationbar"), + _("Whether to show the navigationbar"), + TRUE, + flags)); + + g_object_class_install_property (gobject_class, + PROP_SHOW_BOOKMARKBAR, + g_param_spec_boolean ( + "show-bookmarkbar", + _("Show Bookmarkbar"), + _("Whether to show the bookmarkbar"), + FALSE, + flags)); + + g_object_class_install_property (gobject_class, + PROP_SHOW_PANEL, + g_param_spec_boolean ( + "show-panel", + _("Show Panel"), + _("Whether to show the panel"), + FALSE, + flags)); + + g_object_class_install_property (gobject_class, + PROP_SHOW_STATUSBAR, + g_param_spec_boolean ( + "show-statusbar", + _("Show Statusbar"), + _("Whether to show the statusbar"), + TRUE, + 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_LOAD_ON_STARTUP, g_param_spec_enum ( @@ -267,54 +443,6 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class) - 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 ( @@ -511,6 +639,57 @@ midori_web_settings_set_property (GObject* object, switch (prop_id) { + case PROP_REMEMBER_LAST_WINDOW_SIZE: + priv->remember_last_window_size = g_value_get_boolean (value); + break; + case PROP_LAST_WINDOW_WIDTH: + priv->last_window_width = g_value_get_int (value); + break; + case PROP_LAST_WINDOW_HEIGHT: + priv->last_window_height = g_value_get_int (value); + break; + case PROP_LAST_PANEL_POSITION: + priv->last_panel_position = g_value_get_int (value); + break; + case PROP_LAST_PANEL_PAGE: + priv->last_panel_page = g_value_get_int (value); + break; + case PROP_LAST_WEB_SEARCH: + priv->last_web_search = g_value_get_int (value); + break; + case PROP_LAST_PAGEHOLDER_URI: + katze_assign (priv->last_pageholder_uri, g_value_dup_string (value)); + break; + + case PROP_SHOW_NAVIGATIONBAR: + priv->show_navigationbar = g_value_get_boolean (value); + break; + case PROP_SHOW_BOOKMARKBAR: + priv->show_bookmarkbar = g_value_get_boolean (value); + break; + case PROP_SHOW_PANEL: + priv->show_panel = g_value_get_boolean (value); + break; + case PROP_SHOW_STATUSBAR: + priv->show_statusbar = g_value_get_boolean (value); + 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_LOAD_ON_STARTUP: priv->load_on_startup = g_value_get_enum (value); break; @@ -550,22 +729,6 @@ midori_web_settings_set_property (GObject* object, } 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; @@ -632,6 +795,57 @@ midori_web_settings_get_property (GObject* object, switch (prop_id) { + case PROP_REMEMBER_LAST_WINDOW_SIZE: + g_value_set_boolean (value, priv->remember_last_window_size); + break; + case PROP_LAST_WINDOW_WIDTH: + g_value_set_int (value, priv->last_window_width); + break; + case PROP_LAST_WINDOW_HEIGHT: + g_value_set_int (value, priv->last_window_height); + break; + case PROP_LAST_PANEL_POSITION: + g_value_set_int (value, priv->last_panel_position); + break; + case PROP_LAST_PANEL_PAGE: + g_value_set_int (value, priv->last_panel_page); + break; + case PROP_LAST_WEB_SEARCH: + g_value_set_int (value, priv->last_web_search); + break; + case PROP_LAST_PAGEHOLDER_URI: + g_value_set_string (value, priv->last_pageholder_uri); + break; + + case PROP_SHOW_NAVIGATIONBAR: + g_value_set_boolean (value, priv->show_navigationbar); + break; + case PROP_SHOW_BOOKMARKBAR: + g_value_set_boolean (value, priv->show_bookmarkbar); + break; + case PROP_SHOW_PANEL: + g_value_set_boolean (value, priv->show_panel); + break; + case PROP_SHOW_STATUSBAR: + g_value_set_boolean (value, priv->show_statusbar); + 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_LOAD_ON_STARTUP: g_value_set_enum (value, priv->load_on_startup); break; @@ -651,22 +865,6 @@ midori_web_settings_get_property (GObject* object, 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; diff --git a/src/webSearch.c b/src/webSearch.c index c918953c..d8040577 100644 --- a/src/webSearch.c +++ b/src/webSearch.c @@ -41,7 +41,7 @@ void update_searchEngine(guint index, GtkWidget* search) g_object_unref(pixbuf); sokoke_entry_set_default_text(GTK_ENTRY(search) , search_engine_get_short_name(engine)); - config->searchEngine = index; + // config->searchEngine = index; } } @@ -427,11 +427,11 @@ void on_webSearch_activate(GtkWidget* widget, MidoriBrowser* browser) { const gchar* keywords = gtk_entry_get_text(GTK_ENTRY(widget)); gchar* url; - SearchEngine* searchEngine = (SearchEngine*)g_list_nth_data(searchEngines, config->searchEngine); + SearchEngine* searchEngine = (SearchEngine*)g_list_nth_data(searchEngines, 0/*config->searchEngine*/); if(searchEngine) url = searchEngine->url; else // The location search is our fallback - url = config->locationSearch; + url = "";//config->locationSearch; gchar* search; if(strstr(url, "%s")) search = g_strdup_printf(url, keywords);