diff options
author | Daniel Silverstone <dsilvers@netsurf-browser.org> | 2009-01-02 14:36:02 +0000 |
---|---|---|
committer | Daniel Silverstone <dsilvers@netsurf-browser.org> | 2009-01-02 14:36:02 +0000 |
commit | a80472738527f78b5c7ec9b0580ffa52e327ec35 (patch) | |
tree | ef2d4c270ec52d3237dd79ec56a89acdf8301985 /gtk/dialogs | |
parent | 7f099d6675473b38a3aeba5f969731ba38a0a876 (diff) | |
download | netsurf-a80472738527f78b5c7ec9b0580ffa52e327ec35.tar.gz netsurf-a80472738527f78b5c7ec9b0580ffa52e327ec35.tar.bz2 |
A bit of tidying of the GTK options dialog code. Still not ideal, still not warning free.
svn path=/trunk/netsurf/; revision=5951
Diffstat (limited to 'gtk/dialogs')
-rw-r--r-- | gtk/dialogs/gtk_options.c | 295 |
1 files changed, 160 insertions, 135 deletions
diff --git a/gtk/dialogs/gtk_options.c b/gtk/dialogs/gtk_options.c index 868a680b4..40c70b6c9 100644 --- a/gtk/dialogs/gtk_options.c +++ b/gtk/dialogs/gtk_options.c @@ -1,5 +1,7 @@ /* * Copyright 2006 Rob Kendrick <rjek@rjek.com> + * Copyright 2008 Mike Lester <element3260@gmail.com> + * Copyright 2009 Daniel Silverstone <dsilvers@netsurf-browser.org> * * This file is part of NetSurf, http://www.netsurf-browser.org/ * @@ -44,8 +46,9 @@ static void dialog_response_handler (GtkDialog *dlg, gint res_id); static gboolean on_dialog_close (GtkDialog *dlg, gboolean stay_alive); /* Declares both widget and callback */ -#define DECLARE(x) GtkWidget *x; gboolean on_##x##_changed( \ - GtkWidget *widget, gpointer data) +#define DECLARE(x) \ + static GtkWidget *x; \ + static gboolean on_##x##_changed(GtkWidget *widget, gpointer data) DECLARE(entryHomePageURL); DECLARE(setCurrentPage); @@ -102,12 +105,17 @@ DECLARE(checkPasswordPDF); DECLARE(setDefaultExportOptions); /* Used when the feature is not implemented yet */ -#define FIND_WIDGET(x) (x) = glade_xml_get_widget(gladeFile, #x); \ - if ((x) == NULL) LOG(("Unable to find widget '%s'!", #x)) - +#define FIND_WIDGET(wname) \ + do { \ + (wname) = glade_xml_get_widget(gladeFile, #wname); \ + if ((wname) == NULL) \ + LOG(("Unable to find widget '%s'!", #wname)); \ + } while (0) + /* Assigns widget and connects it to its callback function */ -#define CONNECT(x, y) g_signal_connect(G_OBJECT(x), y, \ - G_CALLBACK(on_##x##_changed), NULL) +#define CONNECT(wname, event) \ + g_signal_connect(G_OBJECT(wname), event, \ + G_CALLBACK(on_##wname##_changed), NULL) GtkDialog* nsgtk_options_init(struct browser_window *bw, GtkWindow *parent) { glade_location = g_strconcat(res_dir_location, "options.glade", NULL); @@ -194,19 +202,49 @@ GtkDialog* nsgtk_options_init(struct browser_window *bw, GtkWindow *parent) { return wndPreferences; } -#define SET_ENTRY(x, y) (x) = glade_xml_get_widget(gladeFile, #x); \ - gtk_entry_set_text(GTK_ENTRY((x)), (y)) -#define SET_SPIN(x, y) (x) = glade_xml_get_widget(gladeFile, #x); \ - gtk_spin_button_set_value(GTK_SPIN_BUTTON((x)), (y)) -#define SET_CHECK(x, y) (x) = glade_xml_get_widget(gladeFile, #x); \ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON((x)), (y)) -#define SET_COMBO(x, y) (x) = glade_xml_get_widget(gladeFile, #x); \ - gtk_combo_box_set_active(GTK_COMBO_BOX((x)), (y)) -#define SET_FONT(x, y) (x) = glade_xml_get_widget(gladeFile, #x); \ - gtk_font_button_set_font_name(GTK_FONT_BUTTON((x)), (y)) -#define SET_FILE_CHOOSER(x, y) (x) = glade_xml_get_widget(gladeFile, #x); \ - gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER((x)), (y)) -#define SET_BUTTON(x) (x) = glade_xml_get_widget(gladeFile, #x); +#define SET_ENTRY(widget, value) \ + do { \ + (widget) = glade_xml_get_widget(gladeFile, #widget); \ + gtk_entry_set_text(GTK_ENTRY((widget)), (value)); \ + } while (0) + +#define SET_SPIN(widget, value) \ + do { \ + (widget) = glade_xml_get_widget(gladeFile, #widget); \ + gtk_spin_button_set_value(GTK_SPIN_BUTTON((widget)), (value)); \ + } while (0) + +#define SET_CHECK(widget, value) \ + do { \ + (widget) = glade_xml_get_widget(gladeFile, #widget); \ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON((widget)), \ + (value)); \ + } while (0) + +#define SET_COMBO(widget, value) \ + do { \ + (widget) = glade_xml_get_widget(gladeFile, #widget); \ + gtk_combo_box_set_active(GTK_COMBO_BOX((widget)), (value)); \ + } while (0) + +#define SET_FONT(widget, value) \ + do { \ + (widget) = glade_xml_get_widget(gladeFile, #widget); \ + gtk_font_button_set_font_name(GTK_FONT_BUTTON((widget)), \ + (value)); \ + } while (0) + +#define SET_FILE_CHOOSER(widgt, value) \ + do { \ + (widgt) = glade_xml_get_widget(gladeFile, #widgt); \ + gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER((widgt)), \ + (value)); \ + } while (0) + +#define SET_BUTTON(widget) \ + do { \ + (widget) = glade_xml_get_widget(gladeFile, #widget); \ + } while (0) void nsgtk_options_load(void) @@ -303,67 +341,88 @@ static gboolean on_dialog_close (GtkDialog *dlg, gboolean stay_alive) /* Defines the callback functions for all widgets and specifies * nsgtk_reflow_all_windows only where necessary */ -#define ENTRY_CHANGED(x, y) gboolean on_##x##_changed(GtkWidget *widget, gpointer data) { \ - if (!g_str_equal(gtk_entry_get_text(GTK_ENTRY((x))), (y) ? (y) : "")) { \ - LOG(("Signal emitted on '%s'", #x)); \ - if ((y)) free((y)); \ - (y) = strdup(gtk_entry_get_text(GTK_ENTRY((x)))); -#define CHECK_CHANGED(x, y) gboolean on_##x##_changed(GtkWidget *widget, gpointer data) { \ - LOG(("Signal emitted on '%s'", #x)); \ - (y) = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON((x))); -#define SPIN_CHANGED(x, y) gboolean on_##x##_changed(GtkWidget *widget, gpointer data) { \ - LOG(("Signal emitted on '%s'", #x)); \ - (y) = gtk_spin_button_get_value(GTK_SPIN_BUTTON((x))); -#define COMBO_CHANGED(x, y) gboolean on_##x##_changed(GtkWidget *widget, gpointer data) { \ - LOG(("Signal emitted on '%s'", #x)); \ - (y) = gtk_combo_box_get_active(GTK_COMBO_BOX((x))); -#define FONT_CHANGED(x, y) gboolean on_##x##_changed(GtkWidget *widget, gpointer data) { \ - LOG(("Signal emitted on '%s'", #x)); \ - if ((y)) free((y)); \ - (y) = strdup(gtk_font_button_get_font_name(GTK_FONT_BUTTON((x)))); -#define FILE_CHOOSER_CHANGED(x, y) gboolean on_##x##_changed(GtkWidget *widget, gpointer data) { \ - LOG(("Signal emitted on '%s'", #x)); \ - (y) = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER((x))); -#define BUTTON_CLICKED(x) gboolean on_##x##_changed(GtkWidget *widget, gpointer data) { \ - LOG(("Signal emitted on '%s'", #x)); - -ENTRY_CHANGED(entryHomePageURL, option_homepage_url)} - return FALSE; -} + +#define ENTRY_CHANGED(widget, option) \ + static gboolean on_##widget##_changed(GtkWidget *widget, gpointer data) { \ + if (!g_str_equal(gtk_entry_get_text(GTK_ENTRY((widget))), (option) ? (option) : "")) { \ + LOG(("Signal emitted on '%s'", #widget)); \ + if ((option)) \ + free((option)); \ + (option) = strdup(gtk_entry_get_text(GTK_ENTRY((widget)))); \ + } \ + do { \ + +#define CHECK_CHANGED(widget, option) \ + static gboolean on_##widget##_changed(GtkWidget *widget, gpointer data) { \ + LOG(("Signal emitted on '%s'", #widget)); \ + (option) = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON((widget))); \ + do { \ + +#define SPIN_CHANGED(widget, option) \ + static gboolean on_##widget##_changed(GtkWidget *widget, gpointer data) { \ + LOG(("Signal emitted on '%s'", #widget)); \ + (option) = gtk_spin_button_get_value(GTK_SPIN_BUTTON((widget))); \ + do { \ + +#define COMBO_CHANGED(widget, option) \ + static gboolean on_##widget##_changed(GtkWidget *widget, gpointer data) { \ + LOG(("Signal emitted on '%s'", #widget)); \ + (option) = gtk_combo_box_get_active(GTK_COMBO_BOX((widget))); \ + do { + +#define FONT_CHANGED(widget, option) \ + static gboolean on_##widget##_changed(GtkWidget *widget, gpointer data) { \ + LOG(("Signal emitted on '%s'", #widget)); \ + if ((option)) \ + free((option)); \ + (option) = strdup(gtk_font_button_get_font_name(GTK_FONT_BUTTON((widget)))); \ + do { + +#define FILE_CHOOSER_CHANGED(widget, option) \ + static gboolean on_##widget##_changed(GtkWidget *widget, gpointer data) { \ + LOG(("Signal emitted on '%s'", #widget)); \ + (option) = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER((widget))); \ + do { + +#define BUTTON_CLICKED(widget) \ + static gboolean on_##widget##_changed(GtkWidget *widget, gpointer data) { \ + LOG(("Signal emitted on '%s'", #widget)); \ + do { + +#define END_HANDLER \ + } while (0); \ + return FALSE; \ + } + +ENTRY_CHANGED(entryHomePageURL, option_homepage_url) +END_HANDLER BUTTON_CLICKED(setCurrentPage) const gchar *url = current_browser->current_content->url; gtk_entry_set_text(GTK_ENTRY(entryHomePageURL), url); option_homepage_url = strdup(gtk_entry_get_text(GTK_ENTRY(entryHomePageURL))); - return FALSE; -} +END_HANDLER BUTTON_CLICKED(setDefaultPage) gtk_entry_set_text(GTK_ENTRY(entryHomePageURL), - "http://www.netsurf-browser.org/welcome/"); + "http://www.netsurf-browser.org/welcome/"); option_homepage_url = strdup(gtk_entry_get_text(GTK_ENTRY(entryHomePageURL))); - - return FALSE; -} +END_HANDLER CHECK_CHANGED(checkHideAdverts, option_block_ads) - return FALSE; -} +END_HANDLER CHECK_CHANGED(checkDisplayRecentURLs, option_url_suggestion) - return FALSE; -} +END_HANDLER CHECK_CHANGED(checkSendReferer, option_send_referer) - return FALSE; -} +END_HANDLER CHECK_CHANGED(checkShowSingleTab, option_show_single_tab) nsgtk_reflow_all_windows(); - return FALSE; -} +END_HANDLER COMBO_CHANGED(comboProxyType, proxy_type) LOG(("proxy type: %d", proxy_type)); @@ -392,12 +451,10 @@ COMBO_CHANGED(comboProxyType, proxy_type) gtk_widget_set_sensitive (entryProxyUser, sensitive); gtk_widget_set_sensitive (entryProxyPassword, sensitive); - return FALSE; -} +END_HANDLER -ENTRY_CHANGED(entryProxyHost, option_http_proxy_host)} - return FALSE; -} +ENTRY_CHANGED(entryProxyHost, option_http_proxy_host) +END_HANDLER gboolean on_entryProxyPort_changed(GtkWidget *widget, gpointer data) { @@ -417,138 +474,108 @@ gboolean on_entryProxyPort_changed(GtkWidget *widget, gpointer data) return FALSE; } -ENTRY_CHANGED(entryProxyUser, option_http_proxy_auth_user)} - return FALSE; -} -ENTRY_CHANGED(entryProxyPassword, option_http_proxy_auth_pass)} - return FALSE; -} +ENTRY_CHANGED(entryProxyUser, option_http_proxy_auth_user) +END_HANDLER + +ENTRY_CHANGED(entryProxyPassword, option_http_proxy_auth_pass) +END_HANDLER SPIN_CHANGED(spinMaxFetchers, option_max_fetchers) - return FALSE; -} +END_HANDLER SPIN_CHANGED(spinFetchesPerHost, option_max_fetchers_per_host) - return FALSE; -} +END_HANDLER SPIN_CHANGED(spinCachedConnections, option_max_cached_fetch_handles) - return FALSE; -} +END_HANDLER CHECK_CHANGED(checkResampleImages, option_render_resample) - return FALSE; -} +END_HANDLER SPIN_CHANGED(spinAnimationSpeed, animation_delay) option_minimum_gif_delay = round(animation_delay * 100.0); - return FALSE; -} +END_HANDLER + CHECK_CHANGED(checkDisableAnimations, option_animate_images); option_animate_images = !option_animate_images; - return FALSE; -} +END_HANDLER FONT_CHANGED(fontSansSerif, option_font_sans) - return FALSE; -} +END_HANDLER FONT_CHANGED(fontSerif, option_font_serif) - return FALSE; -} +END_HANDLER FONT_CHANGED(fontMonospace, option_font_mono) - return FALSE; -} +END_HANDLER FONT_CHANGED(fontCursive, option_font_cursive) - return FALSE; -} +END_HANDLER FONT_CHANGED(fontFantasy, option_font_fantasy) - return FALSE; -} +END_HANDLER COMBO_CHANGED(comboDefault, option_font_default) option_font_default++; - return FALSE; -} +END_HANDLER SPIN_CHANGED(spinDefaultSize, option_font_size) option_font_size *= 10; - return FALSE; -} +END_HANDLER SPIN_CHANGED(spinMinimumSize, option_font_min_size) option_font_min_size *= 10; - return FALSE; -} +END_HANDLER BUTTON_CLICKED(fontPreview) nsgtk_reflow_all_windows(); - return FALSE; -} +END_HANDLER SPIN_CHANGED(spinMemoryCacheSize, option_memory_cache_size) option_memory_cache_size <<= 20; - return FALSE; -} +END_HANDLER SPIN_CHANGED(spinDiscCacheAge, option_disc_cache_age) - return FALSE; -} +END_HANDLER CHECK_CHANGED(checkClearDownloads, option_downloads_clear) - return FALSE; -} +END_HANDLER CHECK_CHANGED(checkRequestOverwrite, option_request_overwrite) - return FALSE; -} +END_HANDLER FILE_CHOOSER_CHANGED(fileChooserDownloads, option_downloads_directory) - return FALSE; -} +END_HANDLER SPIN_CHANGED(spinMarginTop, option_margin_top) - return FALSE; -} +END_HANDLER SPIN_CHANGED(spinMarginBottom, option_margin_bottom) - return FALSE; -} +END_HANDLER SPIN_CHANGED(spinMarginLeft, option_margin_left) - return FALSE; -} +END_HANDLER SPIN_CHANGED(spinMarginRight, option_margin_right) - return FALSE; -} +END_HANDLER SPIN_CHANGED(spinExportScale, option_export_scale) - return FALSE; -} +END_HANDLER CHECK_CHANGED(checkSuppressImages, option_suppress_images) - return FALSE; -} +END_HANDLER CHECK_CHANGED(checkRemoveBackgrounds, option_remove_backgrounds) - return FALSE; -} +END_HANDLER CHECK_CHANGED(checkFitPage, option_enable_loosening) - return FALSE; -} +END_HANDLER CHECK_CHANGED(checkCompressPDF, option_enable_PDF_compression) - return FALSE; -} +END_HANDLER CHECK_CHANGED(checkPasswordPDF, option_enable_PDF_password) - return FALSE; -} +END_HANDLER BUTTON_CLICKED(setDefaultExportOptions) option_margin_top = DEFAULT_MARGIN_TOP_MM; @@ -572,6 +599,4 @@ BUTTON_CLICKED(setDefaultExportOptions) SET_CHECK(checkCompressPDF, option_enable_PDF_compression); SET_CHECK(checkPasswordPDF, option_enable_PDF_password); SET_CHECK(checkFitPage, option_enable_loosening); - - return FALSE; -} +END_HANDLER |