Updating branch refs/heads/master to b51d24193333fee0f84a466ba815cdbb0abcf583 (commit) from c77e2c2eac16181d189bc00ca0e79f212e403966 (commit)
commit b51d24193333fee0f84a466ba815cdbb0abcf583 Author: Stephan Arts <step...@xfce.org> Date: Thu Dec 29 17:48:46 2011 +0100 Save sort-style and update statusbar on zoom-event. src/image_viewer.c | 23 +++++++++++++++----- src/main_window.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++---- src/settings.c | 32 +++++++++++++++++++++++++++++ src/util.h | 9 +++++++- 4 files changed, 109 insertions(+), 12 deletions(-) diff --git a/src/image_viewer.c b/src/image_viewer.c index b7f5611..2749b6d 100644 --- a/src/image_viewer.c +++ b/src/image_viewer.c @@ -363,12 +363,21 @@ rstto_image_viewer_class_init(RsttoImageViewerClass *viewer_class) G_TYPE_NONE, 2, GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT); - g_signal_new ("size-ready", G_TYPE_FROM_CLASS (object_class), - G_SIGNAL_RUN_FIRST, - 0, - NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); + g_signal_new ( + "size-ready", + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_FIRST, + 0, + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + g_signal_new ("scale-changed", + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_FIRST, + 0, + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); } /** @@ -2067,6 +2076,8 @@ rstto_scroll_event ( widget->window, NULL, FALSE); + + g_signal_emit_by_name(viewer, "scale-changed"); } return TRUE; } diff --git a/src/main_window.c b/src/main_window.c index 933c58b..bfda034 100644 --- a/src/main_window.c +++ b/src/main_window.c @@ -529,6 +529,7 @@ rstto_main_window_init (RsttoMainWindow *window) gtk_action_group_add_radio_actions (window->priv->action_group, radio_action_sort_entries , G_N_ELEMENTS (radio_action_sort_entries), 0, G_CALLBACK (cb_rstto_main_window_sorting_function_changed), GTK_WIDGET (window)); gtk_action_group_add_radio_actions (window->priv->action_group, radio_action_pos_entries, G_N_ELEMENTS (radio_action_pos_entries), navigationbar_position, G_CALLBACK (cb_rstto_main_window_navigationtoolbar_position_changed), GTK_WIDGET (window)); + gtk_ui_manager_add_ui_from_string (window->priv->ui_manager,main_window_ui, main_window_ui_length, NULL); window->priv->menubar = gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu"); window->priv->toolbar = gtk_ui_manager_get_widget (window->priv->ui_manager, "/file-toolbar"); @@ -569,9 +570,6 @@ rstto_main_window_init (RsttoMainWindow *window) RSTTO_IMAGE_VIEWER(window->priv->image_viewer), GTK_MENU(window->priv->image_viewer_menu)); - - - //rstto_picture_viewer_set_menu (RSTTO_PICTURE_VIEWER (window->priv->picture_viewer), GTK_MENU(window->priv->image_viewer_menu)); window->priv->thumbnailbar = rstto_thumbnail_bar_new (NULL); @@ -698,6 +696,32 @@ rstto_main_window_init (RsttoMainWindow *window) gtk_widget_hide (window->priv->thumbnailbar); } + /** + * Set sort-type + */ + switch (rstto_settings_get_uint_property (window->priv->settings_manager, "sort-type")) + { + case SORT_TYPE_NAME: + gtk_check_menu_item_set_active ( + GTK_CHECK_MENU_ITEM ( + gtk_ui_manager_get_widget ( + window->priv->ui_manager, + "/main-menu/edit-menu/sorting-menu/sort-filename")), + TRUE); + break; + case SORT_TYPE_DATE: + gtk_check_menu_item_set_active ( + GTK_CHECK_MENU_ITEM ( + gtk_ui_manager_get_widget ( + window->priv->ui_manager, + "/main-menu/edit-menu/sorting-menu/sort-date")), + TRUE); + break; + default: + g_warning("Sort type unsupported"); + break; + } + g_signal_connect(G_OBJECT(window), "motion-notify-event", G_CALLBACK(cb_rstto_main_window_motion_notify_event), window); g_signal_connect(G_OBJECT(window->priv->image_viewer), "enter-notify-event", G_CALLBACK(cb_rstto_main_window_image_viewer_enter_notify_event), window); g_signal_connect(G_OBJECT(window->priv->image_viewer), "scroll-event", G_CALLBACK(cb_rstto_main_window_image_viewer_scroll_event), window); @@ -707,6 +731,7 @@ rstto_main_window_init (RsttoMainWindow *window) g_signal_connect(G_OBJECT(window->priv->image_list_toolbar), "button-press-event", G_CALLBACK(cb_rstto_main_window_navigationtoolbar_button_press_event), window); g_signal_connect(G_OBJECT(window->priv->thumbnailbar), "button-press-event", G_CALLBACK(cb_rstto_main_window_navigationtoolbar_button_press_event), window); g_signal_connect(G_OBJECT(window->priv->image_viewer), "size-ready", G_CALLBACK(cb_rstto_main_window_update_statusbar), window); + g_signal_connect(G_OBJECT(window->priv->image_viewer), "scale-changed", G_CALLBACK(cb_rstto_main_window_update_statusbar), window); if ( TRUE == rstto_settings_get_boolean_property (window->priv->settings_manager, "merge-toolbars")) { @@ -833,6 +858,20 @@ rstto_main_window_new (RsttoImageList *image_list, gboolean fullscreen) window->priv->image_list = image_list; g_object_ref (image_list); + switch (rstto_settings_get_uint_property (window->priv->settings_manager, "sort-type")) + { + case SORT_TYPE_NAME: + rstto_image_list_set_sort_by_name (window->priv->image_list); + break; + case SORT_TYPE_DATE: + rstto_image_list_set_sort_by_date (window->priv->image_list); + break; + default: + g_warning("Sort type unsupported"); + break; + } + + window->priv->iter = rstto_image_list_get_iter (window->priv->image_list); g_signal_connect ( G_OBJECT (window->priv->iter), @@ -1788,10 +1827,18 @@ cb_rstto_main_window_sorting_function_changed (GtkRadioAction *action, GtkRadioA { case 0: /* Sort by filename */ default: - rstto_image_list_set_sort_by_name (window->priv->image_list); + if (window->priv->image_list != NULL) + { + rstto_image_list_set_sort_by_name (window->priv->image_list); + rstto_settings_set_uint_property (window->priv->settings_manager, "sort-type", SORT_TYPE_NAME); + } break; case 1: /* Sort by date */ - rstto_image_list_set_sort_by_date (window->priv->image_list); + if (window->priv->image_list != NULL) + { + rstto_image_list_set_sort_by_date (window->priv->image_list); + rstto_settings_set_uint_property (window->priv->settings_manager, "sort-type", SORT_TYPE_DATE); + } break; } } diff --git a/src/settings.c b/src/settings.c index f467061..1d89aca 100644 --- a/src/settings.c +++ b/src/settings.c @@ -23,6 +23,7 @@ #include <xfconf/xfconf.h> #include <libxfce4util/libxfce4util.h> +#include "util.h" #include "settings.h" static void @@ -72,6 +73,7 @@ enum PROP_MAXIMIZE_ON_STARTUP, PROP_MERGE_TOOLBARS, PROP_ERROR_MISSING_THUMBNAILER, + PROP_SORT_TYPE, }; GType @@ -123,6 +125,8 @@ struct _RsttoSettingsPriv gboolean maximize_on_startup; gboolean merge_toolbars; + RsttoSortType sort_type; + struct { gboolean missing_thumbnailer; } errors; @@ -198,6 +202,13 @@ rstto_settings_init (GObject *object) xfconf_g_property_bind ( settings->priv->channel, + "/window/navigationbar/sort-type", + G_TYPE_UINT, + settings, + "sort-type"); + + xfconf_g_property_bind ( + settings->priv->channel, "/window/navigationbar/position", G_TYPE_STRING, settings, @@ -523,6 +534,19 @@ rstto_settings_class_init (GObjectClass *object_class) object_class, PROP_ERROR_MISSING_THUMBNAILER, pspec); + + pspec = g_param_spec_uint ( + "sort-type", + "", + "", + 0, + SORT_TYPE_COUNT, + 0, + G_PARAM_READWRITE); + g_object_class_install_property ( + object_class, + PROP_SORT_TYPE, + pspec); } /** @@ -682,6 +706,9 @@ rstto_settings_set_property (GObject *object, case PROP_ERROR_MISSING_THUMBNAILER: settings->priv->errors.missing_thumbnailer = g_value_get_boolean (value); break; + case PROP_SORT_TYPE: + settings->priv->sort_type = g_value_get_uint ( value ); + break; default: break; } @@ -757,6 +784,11 @@ rstto_settings_get_property (GObject *object, value, settings->priv->errors.missing_thumbnailer); break; + case PROP_SORT_TYPE: + g_value_set_uint ( + value, + settings->priv->sort_type); + break; default: break; diff --git a/src/util.h b/src/util.h index 71328b7..c8d76f9 100644 --- a/src/util.h +++ b/src/util.h @@ -37,9 +37,16 @@ typedef enum typedef enum { DESKTOP_TYPE_NONE = 0, DESKTOP_TYPE_XFCE, - DESKTOP_TYPE_GNOME + DESKTOP_TYPE_GNOME, + DESKTOP_TYPE_COUNT } RsttoDesktopType; +typedef enum { + SORT_TYPE_NAME = 0, + SORT_TYPE_DATE, + SORT_TYPE_COUNT, +} RsttoSortType; + gboolean rstto_launch_help (void); _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits