[Xfce4-commits] <ristretto:master> Implement option to toggle 'preview'

Stephan Arts noreply at xfce.org
Sat Sep 19 00:56:02 CEST 2009


Updating branch refs/heads/master
         to 91325112789b59dcc988461afdf877f17a832037 (commit)
       from d9351b358ffd7ebbd3cdf00524ba27d80215c993 (commit)

commit 91325112789b59dcc988461afdf877f17a832037
Author: Stephan Arts <stephan at xfce.org>
Date:   Sat Sep 19 00:54:19 2009 +0200

    Implement option to toggle 'preview'

 ChangeLog                |    7 +++++++
 src/main_window.c        |   21 +++++++++++++--------
 src/picture_viewer.c     |   18 +++++++++++-------
 src/preferences_dialog.c |   22 ++++++++++++++++++++++
 src/settings.c           |   18 ++++++++++++++++++
 5 files changed, 71 insertions(+), 15 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index a24e047..989b8b0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2009-09-19  Stephan Arts <stephan at xfce.org>
 
+	* src/main_window.c,
+	  src/picture_viewer.c,
+	  src/preferences_dialog.c,
+	  src/settings.c: Implement option to toggle 'preview'
+	
+2009-09-19  Stephan Arts <stephan at xfce.org>
+
 	* po/*.po: Update .po files
 	* po/ristretto.pot: Add .pot file
 
diff --git a/src/main_window.c b/src/main_window.c
index 2a8a6c1..3bc4a0a 100644
--- a/src/main_window.c
+++ b/src/main_window.c
@@ -148,7 +148,7 @@ cb_rstto_main_window_image_list_iter_changed (RsttoImageListIter *iter, RsttoMai
 static void
 cb_rstto_main_window_image_list_iter_prepare_change (RsttoImageListIter *iter, RsttoMainWindow *window);
 static void
-cb_rstto_main_window_image_prepared(RsttoImage *image, RsttoMainWindow *window);
+cb_rstto_main_window_image_updated (RsttoImage *image, RsttoMainWindow *window);
 
 static void
 cb_rstto_main_window_image_list_new_image (RsttoImageList *image_list, RsttoImage *image, RsttoMainWindow *window);
@@ -713,7 +713,7 @@ rstto_main_window_image_list_iter_changed (RsttoMainWindow *window)
         if (cur_image)
         {
 
-            g_signal_connect (G_OBJECT (cur_image), "prepared", G_CALLBACK (cb_rstto_main_window_image_prepared), window);
+            g_signal_connect (G_OBJECT (cur_image), "updated", G_CALLBACK (cb_rstto_main_window_image_updated), window);
             width = rstto_image_get_width(cur_image);
             height = rstto_image_get_height(cur_image);
 
@@ -758,7 +758,7 @@ cb_rstto_main_window_image_list_iter_prepare_change (RsttoImageListIter *iter, R
     RsttoImage *image = rstto_image_list_iter_get_image (iter);
     if (image)
     {
-        g_signal_handlers_disconnect_by_func (image, cb_rstto_main_window_image_prepared, window);
+        g_signal_handlers_disconnect_by_func (image, cb_rstto_main_window_image_updated, window);
     }
 }
 
@@ -2298,14 +2298,19 @@ cb_rstto_main_window_toggle_show_thumbnailbar (GtkWidget *widget, RsttoMainWindo
 }
 
 static void
-cb_rstto_main_window_image_prepared (RsttoImage *image, RsttoMainWindow *window)
+cb_rstto_main_window_image_updated (RsttoImage *image, RsttoMainWindow *window)
 {
     gint width = rstto_image_get_width (image);
     gint height = rstto_image_get_height (image);
-    gchar *status = g_strdup_printf ("%d x %d", width, height);
+    gchar *status;
 
-    gtk_statusbar_pop (GTK_STATUSBAR (window->priv->statusbar), window->priv->statusbar_context_id);
-    gtk_statusbar_push (GTK_STATUSBAR (window->priv->statusbar), window->priv->statusbar_context_id, status);
+    if (width > 0)
+    {
+        status = g_strdup_printf ("%d x %d", width, height);
+
+        gtk_statusbar_pop (GTK_STATUSBAR (window->priv->statusbar), window->priv->statusbar_context_id);
+        gtk_statusbar_push (GTK_STATUSBAR (window->priv->statusbar), window->priv->statusbar_context_id, status);
 
-    g_free (status);
+        g_free (status);
+    }
 }
diff --git a/src/picture_viewer.c b/src/picture_viewer.c
index a900129..63d934c 100644
--- a/src/picture_viewer.c
+++ b/src/picture_viewer.c
@@ -950,7 +950,7 @@ cb_rstto_picture_viewer_motion_notify_event (RsttoPictureViewer *viewer,
 static void
 rstto_picture_viewer_calculate_adjustments (RsttoPictureViewer *viewer, gdouble scale)
 {
-    GdkPixbuf *p_src_pixbuf;
+    GdkPixbuf *p_src_pixbuf = NULL;
     GtkWidget *widget = GTK_WIDGET (viewer);
     gdouble image_width, image_height;
     gdouble pixbuf_width, pixbuf_height;
@@ -1093,6 +1093,7 @@ cb_rstto_picture_viewer_queued_repaint (RsttoPictureViewer *viewer)
     gdouble thumb_scale = 1;
     gdouble thumb_width = 0;
     gboolean fit_to_screen = FALSE;
+    gboolean show_preview = rstto_settings_get_boolean_property (viewer->priv->settings, "show-preview");
     gdouble image_width = 0, image_height = 0;
     gdouble pixbuf_width, pixbuf_height;
     GtkWidget *widget = GTK_WIDGET (viewer);
@@ -1115,14 +1116,17 @@ cb_rstto_picture_viewer_queued_repaint (RsttoPictureViewer *viewer)
                 }
                 break;
             case RSTTO_PICTURE_VIEWER_STATE_PREVIEW:
-                p_src_pixbuf = rstto_image_get_thumbnail (viewer->priv->image);
-                if (p_src_pixbuf)
+                if (show_preview == TRUE)
                 {
-                    thumb_width = (gdouble)gdk_pixbuf_get_width (p_src_pixbuf);
-                    thumb_scale = (thumb_width / image_width);
+                    p_src_pixbuf = rstto_image_get_thumbnail (viewer->priv->image);
+                    if (p_src_pixbuf)
+                    {
+                        thumb_width = (gdouble)gdk_pixbuf_get_width (p_src_pixbuf);
+                        thumb_scale = (thumb_width / image_width);
+                    }
+                    else
+                        return FALSE;
                 }
-                else
-                    return FALSE;
                 break;
             default:
                 break;
diff --git a/src/preferences_dialog.c b/src/preferences_dialog.c
index aed517d..6c54616 100644
--- a/src/preferences_dialog.c
+++ b/src/preferences_dialog.c
@@ -52,6 +52,9 @@ cb_rstto_preferences_dialog_cache_spin_button_value_changed (GtkSpinButton *, gp
 static void
 cb_rstto_preferences_dialog_image_quality_combo_box_changed (GtkComboBox *, gpointer);
 static void
+cb_rstto_preferences_dialog_image_preview_toggled (GtkToggleButton *button, 
+                                                      gpointer user_data);
+static void
 cb_rstto_preferences_dialog_no_scrollwheel_action_radio_button_toggled (GtkToggleButton *, gpointer);
 static void
 cb_rstto_preferences_dialog_zoom_scrollwheel_action_radio_button_toggled (GtkToggleButton *, gpointer);
@@ -86,6 +89,7 @@ struct _RsttoPreferencesDialogPriv
         GtkWidget *image_quality_hbox;
         GtkWidget *image_quality_label;
         GtkWidget *image_quality_combo;
+        GtkWidget *image_preview_check_button;
     } display_tab;
 
     struct
@@ -160,6 +164,7 @@ rstto_preferences_dialog_init(RsttoPreferencesDialog *dialog)
     gchar *scrollwheel_primary_action;
     guint uint_slideshow_timeout;
     gboolean bool_hide_thumbnailbar_fullscreen;
+    gboolean bool_show_preview;
 
     GdkColor *bgcolor;
     GtkWidget *timeout_lbl, *timeout_hscale;
@@ -184,6 +189,7 @@ rstto_preferences_dialog_init(RsttoPreferencesDialog *dialog)
     g_object_get (G_OBJECT (dialog->priv->settings),
                   "image-quality", &uint_image_quality,
                   "cache-size", &uint_cache_size,
+                  "show-preview", &bool_show_preview,
                   "preload-images", &uint_preload_images,
                   "enable-cache", &bool_enable_cache,
                   "bgcolor-override", &bool_bgcolor_override,
@@ -241,6 +247,10 @@ rstto_preferences_dialog_init(RsttoPreferencesDialog *dialog)
     dialog->priv->display_tab.image_quality_label = gtk_label_new (_("Maximum render quality:"));
     dialog->priv->display_tab.image_quality_hbox= gtk_hbox_new (FALSE, 4);
     dialog->priv->display_tab.image_quality_combo= gtk_combo_box_new_text ();
+    dialog->priv->display_tab.image_preview_check_button = gtk_check_button_new_with_label (_("Show preview when loading image"));
+
+    g_signal_connect (G_OBJECT (dialog->priv->display_tab.image_preview_check_button), 
+                      "toggled", (GCallback)cb_rstto_preferences_dialog_image_preview_toggled, dialog);
 
     gtk_combo_box_append_text (GTK_COMBO_BOX (dialog->priv->display_tab.image_quality_combo), _("Best"));
     gtk_combo_box_append_text (GTK_COMBO_BOX (dialog->priv->display_tab.image_quality_combo), _("High"));
@@ -249,6 +259,9 @@ rstto_preferences_dialog_init(RsttoPreferencesDialog *dialog)
 
     gtk_box_pack_start (GTK_BOX (dialog->priv->display_tab.image_quality_vbox), 
                                  dialog->priv->display_tab.image_quality_hbox, FALSE, FALSE, 0);
+    gtk_box_pack_start (GTK_BOX (dialog->priv->display_tab.image_quality_vbox), 
+                                 dialog->priv->display_tab.image_preview_check_button, FALSE, FALSE, 0);
+
     gtk_box_pack_start (GTK_BOX (dialog->priv->display_tab.image_quality_hbox), 
                                  dialog->priv->display_tab.image_quality_label, FALSE, FALSE, 0);
     gtk_box_pack_start (GTK_BOX (dialog->priv->display_tab.image_quality_hbox), 
@@ -606,6 +619,15 @@ cb_rstto_preferences_dialog_image_quality_combo_box_changed (GtkComboBox *combo_
 }
 
 static void
+cb_rstto_preferences_dialog_image_preview_toggled (GtkToggleButton *button, 
+                                                      gpointer user_data)
+{
+    RsttoPreferencesDialog *dialog = RSTTO_PREFERENCES_DIALOG (user_data);
+
+    rstto_settings_set_boolean_property (dialog->priv->settings, "show-preview", gtk_toggle_button_get_active (button));
+}
+
+static void
 cb_rstto_preferences_dialog_no_scrollwheel_action_radio_button_toggled (GtkToggleButton *button, 
                                                                         gpointer user_data)
 {
diff --git a/src/settings.c b/src/settings.c
index fdeb36f..5629fc5 100644
--- a/src/settings.c
+++ b/src/settings.c
@@ -57,6 +57,7 @@ enum
     PROP_SHOW_NAV_TOOLBAR,
     PROP_NAVBAR_POSITION,
     PROP_SHOW_THUMBNAILBAR,
+    PROP_SHOW_PREVIEW,
     PROP_HIDE_THUMBNAILBAR_FULLSCREEN,
     PROP_TOOLBAR_OPEN,
     PROP_ENABLE_CACHE,
@@ -107,6 +108,7 @@ struct _RsttoSettingsPriv
     gboolean  show_file_toolbar;
     gboolean  show_nav_toolbar;
     gboolean  show_thumbnailbar;
+    gboolean  show_preview;
     gboolean  hide_thumbnailbar_fullscreen;
     gchar    *navigationbar_position;
     guint     preload_images;
@@ -158,6 +160,7 @@ rstto_settings_init (GObject *object)
     xfconf_g_property_bind (settings->priv->channel, "/window/show-thumbnailbar", G_TYPE_BOOLEAN, settings, "show-thumbnailbar");
     xfconf_g_property_bind (settings->priv->channel, "/window/hide-thumbnailbar-fullscreen", G_TYPE_BOOLEAN, settings, "hide-thumbnailbar-fullscreen");
     xfconf_g_property_bind (settings->priv->channel, "/window/navigationbar-position", G_TYPE_STRING, settings, "navigationbar-position");
+    xfconf_g_property_bind (settings->priv->channel, "/window/show-preview", G_TYPE_BOOLEAN, settings, "show-preview");
     xfconf_g_property_bind (settings->priv->channel, "/window/scrollwheel-primary-action", G_TYPE_STRING, settings, "scrollwheel-primary-action");
     xfconf_g_property_bind (settings->priv->channel, "/window/scrollwheel-secondary-action", G_TYPE_STRING, settings, "scrollwheel-secondary-action");
 
@@ -256,6 +259,15 @@ rstto_settings_class_init (GObjectClass *object_class)
                                      PROP_NAVBAR_POSITION,
                                      pspec);
 
+    pspec = g_param_spec_boolean ("show-preview",
+                                  "",
+                                  "",
+                                  TRUE,
+                                  G_PARAM_READWRITE);
+    g_object_class_install_property (object_class,
+                                     PROP_SHOW_PREVIEW,
+                                     pspec);
+
     pspec = g_param_spec_uint ("preload-images",
                                "",
                                "",
@@ -463,6 +475,9 @@ rstto_settings_set_property    (GObject      *object,
                 settings->priv->navigationbar_position = g_strdup (str_val);
             }
             break;
+        case PROP_SHOW_PREVIEW:
+            settings->priv->show_preview = g_value_get_boolean (value);
+            break;
         case PROP_PRELOAD_IMAGES:
             settings->priv->preload_images = g_value_get_uint (value);
             break;
@@ -545,6 +560,9 @@ rstto_settings_get_property    (GObject    *object,
         case PROP_NAVBAR_POSITION:
             g_value_set_string (value, settings->priv->navigationbar_position);
             break;
+        case PROP_SHOW_PREVIEW:
+            g_value_set_boolean (value, settings->priv->show_preview);
+            break;
         case PROP_PRELOAD_IMAGES:
             g_value_set_uint (value, settings->priv->preload_images);
             break;



More information about the Xfce4-commits mailing list