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.
This commit is contained in:
Christian Dywan 2008-04-17 01:38:22 +02:00
parent cdde1293ab
commit 169973f3fe
11 changed files with 458 additions and 371 deletions

View File

@ -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

View File

@ -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 \

View File

@ -1,70 +0,0 @@
/*
Copyright (C) 2007-2008 Christian Dywan <christian@twotoasts.de>
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 <glib.h>
#include <stdio.h>
#include <string.h>
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;
}

View File

@ -1,96 +0,0 @@
/*
Copyright (C) 2007-2008 Christian Dywan <christian@twotoasts.de>
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 <glib.h>
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__ */

View File

@ -12,8 +12,6 @@
#ifndef __GLOBAL_H__
#define __GLOBAL_H__ 1
#include "conf.h"
#include "midori-websettings.h"
#include <katze/katze.h>
@ -26,8 +24,6 @@
GList* searchEngines; // Items of type 'SearchEngine'
KatzeXbelItem* bookmarks;
CConfig* config;
MidoriWebSettings* webSettings;
// Custom stock items

View File

@ -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;
}

View File

@ -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__ */

View File

@ -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);

View File

@ -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 <glib/gi18n.h>
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
#include <libsexy/sexy.h>
@ -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", &gtk_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", &gtk_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);

View File

@ -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;

View File

@ -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);