Revision: 1134
          http://geeqie.svn.sourceforge.net/geeqie/?rev=1134&view=rev
Author:   zas_
Date:     2008-09-04 22:04:32 +0000 (Thu, 04 Sep 2008)

Log Message:
-----------
Allow all Preferences pages to scroll vertically. Reduce code redundancy.

Modified Paths:
--------------
    trunk/src/preferences.c

Modified: trunk/src/preferences.c
===================================================================
--- trunk/src/preferences.c     2008-09-04 21:38:28 UTC (rev 1133)
+++ trunk/src/preferences.c     2008-09-04 22:04:32 UTC (rev 1134)
@@ -102,7 +102,7 @@
 
 
 #define CONFIG_WINDOW_DEF_WIDTH                700
-#define CONFIG_WINDOW_DEF_HEIGHT       500
+#define CONFIG_WINDOW_DEF_HEIGHT       600
 
 /*
  *-----------------------------------------------------------------------------
@@ -120,24 +120,12 @@
        gtk_entry_set_text(GTK_ENTRY(home_path_entry), layout_get_path(NULL));
 }
 
-static void zoom_mode_original_cb(GtkWidget *widget, gpointer data)
+static void zoom_mode_cb(GtkWidget *widget, gpointer data)
 {
        if (GTK_TOGGLE_BUTTON (widget)->active)
-               c_options->image.zoom_mode = ZOOM_RESET_ORIGINAL;
+               c_options->image.zoom_mode = GPOINTER_TO_INT(data);
 }
 
-static void zoom_mode_fit_cb(GtkWidget *widget, gpointer data)
-{
-       if (GTK_TOGGLE_BUTTON (widget)->active)
-               c_options->image.zoom_mode = ZOOM_RESET_FIT_WINDOW;
-}
-
-static void zoom_mode_none_cb(GtkWidget *widget, gpointer data)
-{
-       if (GTK_TOGGLE_BUTTON (widget)->active)
-               c_options->image.zoom_mode = ZOOM_RESET_NONE;
-}
-
 static void scroll_reset_cb(GtkWidget *widget, gpointer data)
 {
        if (GTK_TOGGLE_BUTTON (widget)->active)
@@ -894,10 +882,36 @@
        help_window_show("overlay");
 }
 
+static GtkWidget *scrolled_notebook_page(GtkWidget *notebook, const gchar 
*title)
+{
+       GtkWidget *label;
+       GtkWidget *vbox;
+       GtkWidget *scrolled;
+       GtkWidget *viewport;
+
+       scrolled = gtk_scrolled_window_new(NULL, NULL);
+       gtk_container_set_border_width(GTK_CONTAINER(scrolled), 
PREF_PAD_BORDER);
+       gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
+                                      GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+       label = gtk_label_new(title);
+       gtk_notebook_append_page(GTK_NOTEBOOK(notebook), scrolled, label);
+       gtk_widget_show(scrolled);
+
+       viewport = gtk_viewport_new(NULL, NULL);
+       gtk_viewport_set_shadow_type(GTK_VIEWPORT(viewport), GTK_SHADOW_NONE);
+       gtk_container_add(GTK_CONTAINER(scrolled), viewport);
+       gtk_widget_show(viewport);
+
+       vbox = gtk_vbox_new(FALSE, 0);
+       gtk_container_add(GTK_CONTAINER(viewport), vbox);
+       gtk_widget_show(vbox);
+
+       return vbox;
+}
+
 /* general options tab */
 static void config_tab_general(GtkWidget *notebook)
 {
-       GtkWidget *label;
        GtkWidget *hbox;
        GtkWidget *vbox;
        GtkWidget *subvbox;
@@ -909,11 +923,7 @@
        GtkWidget *table;
        GtkWidget *spin;
 
-       vbox = gtk_vbox_new(FALSE, 0);
-       gtk_container_set_border_width(GTK_CONTAINER(vbox), PREF_PAD_BORDER);
-       gtk_widget_show(vbox);
-       label = gtk_label_new(_("General"));
-       gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox, label);
+       vbox = scrolled_notebook_page(notebook, _("General"));
 
        group = pref_group_new(vbox, FALSE, _("Startup"), 
GTK_ORIENTATION_VERTICAL);
 
@@ -983,7 +993,6 @@
 /* image tab */
 static void config_tab_image(GtkWidget *notebook)
 {
-       GtkWidget *label;
        GtkWidget *hbox;
        GtkWidget *vbox;
        GtkWidget *group;
@@ -992,11 +1001,7 @@
        GtkWidget *table;
        GtkWidget *spin;
 
-       vbox = gtk_vbox_new(FALSE, 0);
-       gtk_container_set_border_width(GTK_CONTAINER(vbox), PREF_PAD_BORDER);
-       gtk_widget_show(vbox);
-       label = gtk_label_new(_("Image"));
-       gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox, label);
+       vbox = scrolled_notebook_page(notebook, _("Image"));
 
        group = pref_group_new(vbox, FALSE, _("Zoom"), 
GTK_ORIENTATION_VERTICAL);
 
@@ -1031,13 +1036,13 @@
        c_options->image.zoom_mode = options->image.zoom_mode;
        button = pref_radiobutton_new(group, NULL, _("Zoom to original size"),
                                      (options->image.zoom_mode == 
ZOOM_RESET_ORIGINAL),
-                                     G_CALLBACK(zoom_mode_original_cb), NULL);
+                                     G_CALLBACK(zoom_mode_cb), 
GINT_TO_POINTER(ZOOM_RESET_ORIGINAL));
        button = pref_radiobutton_new(group, button, _("Fit image to window"),
                                      (options->image.zoom_mode == 
ZOOM_RESET_FIT_WINDOW),
-                                     G_CALLBACK(zoom_mode_fit_cb), NULL);
+                                     G_CALLBACK(zoom_mode_cb), 
GINT_TO_POINTER(ZOOM_RESET_FIT_WINDOW));
        button = pref_radiobutton_new(group, button, _("Leave Zoom at previous 
setting"),
                                      (options->image.zoom_mode == 
ZOOM_RESET_NONE),
-                                     G_CALLBACK(zoom_mode_none_cb), NULL);
+                                     G_CALLBACK(zoom_mode_cb), 
GINT_TO_POINTER(ZOOM_RESET_NONE));
 
        group = pref_group_new(vbox, FALSE, _("Scroll reset method:"), 
GTK_ORIENTATION_VERTICAL);
 
@@ -1074,18 +1079,13 @@
 /* windows tab */
 static void config_tab_windows(GtkWidget *notebook)
 {
-       GtkWidget *label;
        GtkWidget *hbox;
        GtkWidget *vbox;
        GtkWidget *group;
        GtkWidget *ct_button;
        GtkWidget *spin;
 
-       vbox = gtk_vbox_new(FALSE, 0);
-       gtk_container_set_border_width(GTK_CONTAINER(vbox), PREF_PAD_BORDER);
-       gtk_widget_show(vbox);
-       label = gtk_label_new(_("Windows"));
-       gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox, label);
+       vbox = scrolled_notebook_page(notebook, _("Windows"));
 
        group = pref_group_new(vbox, FALSE, _("State"), 
GTK_ORIENTATION_VERTICAL);
 
@@ -1120,7 +1120,6 @@
 {
        GtkWidget *hbox;
        GtkWidget *frame;
-       GtkWidget *label;
        GtkWidget *vbox;
        GtkWidget *group;
        GtkWidget *button;
@@ -1131,11 +1130,7 @@
        GtkTreeSelection *selection;
        GtkTreeViewColumn *column;
 
-       vbox = gtk_vbox_new(FALSE, 0);
-       gtk_container_set_border_width(GTK_CONTAINER(vbox), PREF_PAD_BORDER);
-       gtk_widget_show(vbox);
-       label = gtk_label_new(_("Filtering"));
-       gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox, label);
+       vbox = scrolled_notebook_page(notebook, _("Filtering"));
 
        group = pref_box_new(vbox, FALSE, GTK_ORIENTATION_VERTICAL, 
PREF_PAD_GAP);
 
@@ -1242,11 +1237,7 @@
        GtkWidget *table;
        gint i;
 
-       vbox = gtk_vbox_new(FALSE, PREF_PAD_GAP);
-       gtk_container_set_border_width(GTK_CONTAINER(vbox), PREF_PAD_BORDER);
-       gtk_widget_show(vbox);
-       label = gtk_label_new(_("Editors"));
-       gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox, label);
+       vbox = scrolled_notebook_page(notebook, _("Editors"));
 
        table = pref_table_new(vbox, 3, 9, FALSE, FALSE);
        gtk_table_set_col_spacings(GTK_TABLE(table), PREF_PAD_GAP);
@@ -1320,28 +1311,10 @@
        GtkWidget *vbox;
        GtkWidget *group;
        GtkWidget *table;
-       GtkWidget *scrolled;
-       GtkWidget *viewport;
        gint i;
 
-       scrolled = gtk_scrolled_window_new(NULL, NULL);
-       gtk_container_set_border_width(GTK_CONTAINER(scrolled), 
PREF_PAD_BORDER);
-       gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
-                                      GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+       vbox = scrolled_notebook_page(notebook, _("Properties"));
 
-       label = gtk_label_new(_("Properties"));
-       gtk_notebook_append_page(GTK_NOTEBOOK(notebook), scrolled, label);
-       gtk_widget_show(scrolled);
-
-       viewport = gtk_viewport_new(NULL, NULL);
-       gtk_viewport_set_shadow_type(GTK_VIEWPORT(viewport), GTK_SHADOW_NONE);
-       gtk_container_add(GTK_CONTAINER(scrolled), viewport);
-       gtk_widget_show(viewport);
-
-       vbox = gtk_vbox_new(FALSE, 0);
-       gtk_container_add(GTK_CONTAINER(viewport), vbox);
-       gtk_widget_show(vbox);
-
        group = pref_group_new(vbox, FALSE, _("Exif"),
                               GTK_ORIENTATION_VERTICAL);
 
@@ -1374,29 +1347,13 @@
        GtkWidget *ct_button;
        GtkWidget *table;
        GtkWidget *spin;
-       GtkWidget *scrolled;
-       GtkWidget *viewport;
        GtkWidget *image_overlay_template_view;
+       GtkWidget *scrolled;
        GtkTextBuffer *buffer;
        gint i;
 
-       scrolled = gtk_scrolled_window_new(NULL, NULL);
-       gtk_container_set_border_width(GTK_CONTAINER(scrolled), 
PREF_PAD_BORDER);
-       gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
-                                      GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
-       label = gtk_label_new(_("Advanced"));
-       gtk_notebook_append_page(GTK_NOTEBOOK(notebook), scrolled, label);
-       gtk_widget_show(scrolled);
+       vbox = scrolled_notebook_page(notebook, _("Advanced"));
 
-       viewport = gtk_viewport_new(NULL, NULL);
-       gtk_viewport_set_shadow_type(GTK_VIEWPORT(viewport), GTK_SHADOW_NONE);
-       gtk_container_add(GTK_CONTAINER(scrolled), viewport);
-       gtk_widget_show(viewport);
-
-       vbox = gtk_vbox_new(FALSE, 0);
-       gtk_container_add(GTK_CONTAINER(viewport), vbox);
-       gtk_widget_show(vbox);
-
        group = pref_group_new(vbox, FALSE, _("Full screen"), 
GTK_ORIENTATION_VERTICAL);
 
        c_options->fullscreen.screen = options->fullscreen.screen;


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Geeqie-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geeqie-svn

Reply via email to