Updating branch refs/heads/ristretto-0.0 to 73a8d7229f688d4b796117843b97b0101c1f5fdc (commit) from f4223148a6df935fa94da97a94ec04e89c0f29db (commit)
commit 73a8d7229f688d4b796117843b97b0101c1f5fdc Author: Stephan Arts <step...@xfce.org> Date: Sat Feb 21 10:09:19 2009 +0100 Add some more comments Add a recent-filter to the recent-chooser (only filter the files opened by ristretto) Actually open files from the recent-chooser src/main_window.c | 98 +++++++++++++++++++++++++++++++++++++++--------- src/main_window_ui.xml | 2 +- 2 files changed, 81 insertions(+), 19 deletions(-) diff --git a/src/main_window.c b/src/main_window.c index c859cdb..96d64f3 100644 --- a/src/main_window.c +++ b/src/main_window.c @@ -148,6 +148,8 @@ cb_rstto_main_window_open_image (GtkWidget *widget, RsttoMainWindow *window); static void cb_rstto_main_window_open_folder (GtkWidget *widget, RsttoMainWindow *window); static void +cb_rstto_main_window_open_recent(GtkRecentChooser *chooser, RsttoMainWindow *window); +static void cb_rstto_main_window_file_properties (GtkWidget *widget, RsttoMainWindow *window); static void cb_rstto_main_window_close (GtkWidget *widget, RsttoMainWindow *window); @@ -266,10 +268,11 @@ rstto_main_window_get_type () static void rstto_main_window_init (RsttoMainWindow *window) { - GtkAccelGroup *accel_group; - GValue show_toolbar_val = {0,}, window_width = {0, }, window_height = {0, }; - GtkWidget *separator, *back, *forward; - GtkWidget *main_vbox = gtk_vbox_new (FALSE, 0); + GtkAccelGroup *accel_group; + GValue show_toolbar_val = {0,}, window_width = {0, }, window_height = {0, }; + GtkWidget *separator, *back, *forward; + GtkWidget *main_vbox = gtk_vbox_new (FALSE, 0); + GtkRecentFilter *recent_filter; gtk_window_set_title (GTK_WINDOW (window), RISTRETTO_APP_TITLE); @@ -281,24 +284,32 @@ rstto_main_window_init (RsttoMainWindow *window) window->priv->recent_manager = gtk_recent_manager_get_default(); window->priv->settings_manager = rstto_settings_new(); + accel_group = gtk_ui_manager_get_accel_group (window->priv->ui_manager); + gtk_window_add_accel_group (GTK_WINDOW (window), accel_group); + /* Create mergeid's for adding ui-components */ window->priv->recent_merge_id = gtk_ui_manager_new_merge_id (window->priv->ui_manager); window->priv->play_merge_id = gtk_ui_manager_new_merge_id (window->priv->ui_manager); window->priv->pause_merge_id = gtk_ui_manager_new_merge_id (window->priv->ui_manager); - accel_group = gtk_ui_manager_get_accel_group (window->priv->ui_manager); - gtk_window_add_accel_group (GTK_WINDOW (window), accel_group); - - window->priv->action_group = gtk_action_group_new ("RsttoWindow"); window->priv->play_action = gtk_action_new ("play", "_Play", "Play slideshow", GTK_STOCK_MEDIA_PLAY); window->priv->pause_action = gtk_action_new ("pause", "_Pause", "Pause slideshow", GTK_STOCK_MEDIA_PAUSE); window->priv->recent_action = gtk_recent_action_new_for_manager ("recent", "_Recently used", "Recently used", 0, GTK_RECENT_MANAGER(window->priv->recent_manager)); + /** + * Add a filter to the recent-chooser + */ + recent_filter = gtk_recent_filter_new(); + gtk_recent_filter_add_application (recent_filter, "ristretto"); + gtk_recent_chooser_add_filter(GTK_RECENT_CHOOSER(window->priv->recent_action), recent_filter); + /* Add the same accelerator path to play and pause, so the same kb-shortcut will be used for starting and stopping the slideshow */ gtk_action_set_accel_path (window->priv->pause_action, "<Actions>/RsttoWindow/play"); gtk_action_set_accel_path (window->priv->play_action, "<Actions>/RsttoWindow/play"); + /* Add the play and pause actions to the actiongroup */ + window->priv->action_group = gtk_action_group_new ("RsttoWindow"); gtk_action_group_add_action (window->priv->action_group, window->priv->play_action); gtk_action_group_add_action (window->priv->action_group, @@ -308,6 +319,7 @@ rstto_main_window_init (RsttoMainWindow *window) /* Connect signal-handlers */ g_signal_connect(G_OBJECT(window->priv->play_action), "activate", G_CALLBACK(cb_rstto_main_window_play), window); g_signal_connect(G_OBJECT(window->priv->pause_action), "activate", G_CALLBACK(cb_rstto_main_window_pause), window); + g_signal_connect(G_OBJECT(window->priv->recent_action), "item-activated", G_CALLBACK(cb_rstto_main_window_open_recent), window); gtk_ui_manager_insert_action_group (window->priv->ui_manager, window->priv->action_group, 0); @@ -319,10 +331,17 @@ rstto_main_window_init (RsttoMainWindow *window) 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, "/main-toolbar"); - separator = gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/placeholder-1"); + /** + * Get the separator toolitem and tell it to expand + */ + separator = gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/separator-1"); gtk_tool_item_set_expand (GTK_TOOL_ITEM (separator), TRUE); gtk_separator_tool_item_set_draw (GTK_SEPARATOR_TOOL_ITEM (separator), FALSE); + /** + * Make the back and forward toolitems important, + * when they are, the labels are shown when the toolbar style is 'both-horizontal' + */ back = gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/back"); gtk_tool_item_set_is_important (GTK_TOOL_ITEM (back), TRUE); forward = gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/forward"); @@ -345,6 +364,10 @@ rstto_main_window_init (RsttoMainWindow *window) rstto_main_window_set_sensitive (window, FALSE); gtk_widget_set_no_show_all (window->priv->toolbar, TRUE); + + /** + * Add missing pieces to the UI + */ gtk_ui_manager_add_ui (window->priv->ui_manager, window->priv->play_merge_id, "/main-menu/go-menu/placeholder-slideshow", @@ -352,8 +375,6 @@ rstto_main_window_init (RsttoMainWindow *window) "play", GTK_UI_MANAGER_MENUITEM, FALSE); - - gtk_ui_manager_add_ui (window->priv->ui_manager, window->priv->recent_merge_id, "/main-menu/file-menu/placeholder-open-recent", @@ -362,13 +383,19 @@ rstto_main_window_init (RsttoMainWindow *window) GTK_UI_MANAGER_MENUITEM, FALSE); + /** + * Retrieve the last window-size from the settings-manager + * and make it the default for this window + */ g_value_init (&window_width, G_TYPE_UINT); g_value_init (&window_height, G_TYPE_UINT); g_object_get_property (G_OBJECT(window->priv->settings_manager), "window-width", &window_width); g_object_get_property (G_OBJECT(window->priv->settings_manager), "window-height", &window_height); - gtk_window_set_default_size(GTK_WINDOW(window), g_value_get_uint (&window_width), g_value_get_uint (&window_height)); + /** + * Retrieve the toolbar state from the settings-manager + */ g_value_init (&show_toolbar_val, G_TYPE_BOOLEAN); g_object_get_property (G_OBJECT(window->priv->settings_manager), "show-toolbar", &show_toolbar_val); if (g_value_get_boolean (&show_toolbar_val)) @@ -424,9 +451,7 @@ rstto_main_window_dispose(GObject *object) if (window->priv->ui_manager) { - /** TODO: - * reset accelerator on 'play' and free ui_manager - */ + g_object_unref (window->priv->ui_manager); window->priv->ui_manager = NULL; } @@ -823,7 +848,7 @@ cb_rstto_main_window_open_image (GtkWidget *widget, RsttoMainWindow *window) GtkWidget *dialog, *err_dialog; gint response; GFile *file; - GSList *files, *_files_iter; + GSList *files = NULL, *_files_iter; GValue current_uri_val = {0, }; g_value_init (¤t_uri_val, G_TYPE_STRING); @@ -868,13 +893,18 @@ cb_rstto_main_window_open_image (GtkWidget *widget, RsttoMainWindow *window) } _files_iter = g_slist_next (_files_iter); } - g_value_set_string (¤t_uri_val, gtk_file_chooser_get_current_folder_uri (GTK_FILE_CHOOSER (dialog))); g_object_set_property (G_OBJECT(window->priv->settings_manager), "current-uri", ¤t_uri_val); } gtk_widget_destroy(dialog); + + if (files) + { + g_slist_foreach (files, (GFunc)g_object_unref, NULL); + g_slist_free (files); + } } /** @@ -888,7 +918,7 @@ static void cb_rstto_main_window_open_folder (GtkWidget *widget, RsttoMainWindow *window) { gint response; - GFile *file; + GFile *file = NULL; GValue current_uri_val = {0, }; g_value_init (¤t_uri_val, G_TYPE_STRING); @@ -911,6 +941,38 @@ cb_rstto_main_window_open_folder (GtkWidget *widget, RsttoMainWindow *window) g_object_set_property (G_OBJECT(window->priv->settings_manager), "current-uri", ¤t_uri_val); } + if (file) + { + g_object_unref (file); + } +} + +/** + * cb_rstto_main_window_open_recent: + * @chooser: + * @window: + * + */ +static void +cb_rstto_main_window_open_recent(GtkRecentChooser *chooser, RsttoMainWindow *window) +{ + GtkWidget *dialog, *err_dialog; + gchar *uri = gtk_recent_chooser_get_current_uri (chooser); + GFile *file = g_file_new_for_uri (uri); + + if (rstto_navigator_add_file (window->priv->props.navigator, file, NULL) == FALSE) + { + err_dialog = gtk_message_dialog_new(GTK_WINDOW(window), + GTK_DIALOG_MODAL, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_OK, + _("Could not open file")); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); + } + + g_object_unref (file); + g_free (uri); } /** diff --git a/src/main_window_ui.xml b/src/main_window_ui.xml index 2e15784..e0d874c 100644 --- a/src/main_window_ui.xml +++ b/src/main_window_ui.xml @@ -63,7 +63,7 @@ <separator /> <toolitem action="back"/> <toolitem action="forward"/> - <separator name="placeholder-1"/> + <separator name="separator-1"/> <toolitem action="zoom-in"/> <toolitem action="zoom-out"/> <toolitem action="zoom-100"/> _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits