Updating branch refs/heads/ristretto-0.0 to 1d06647dac89feb4e0eb82ac437b7710b7753b8c (commit) from 73a8d7229f688d4b796117843b97b0101c1f5fdc (commit)
commit 1d06647dac89feb4e0eb82ac437b7710b7753b8c Author: Stephan Arts <step...@xfce.org> Date: Sat Feb 21 10:56:52 2009 +0100 Implemented 'open folder'. src/main_window.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 61 insertions(+), 9 deletions(-) diff --git a/src/main_window.c b/src/main_window.c index 96d64f3..b7acbdb 100644 --- a/src/main_window.c +++ b/src/main_window.c @@ -850,6 +850,7 @@ cb_rstto_main_window_open_image (GtkWidget *widget, RsttoMainWindow *window) GFile *file; GSList *files = NULL, *_files_iter; GValue current_uri_val = {0, }; + gchar *uri = NULL; g_value_init (¤t_uri_val, G_TYPE_STRING); g_object_get_property (G_OBJECT(window->priv->settings_manager), "current-uri", ¤t_uri_val); @@ -891,6 +892,13 @@ cb_rstto_main_window_open_image (GtkWidget *widget, RsttoMainWindow *window) gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); } + else + { + uri = g_file_get_uri (_files_iter->data); + gtk_recent_manager_add_item (window->priv->recent_manager, uri); + g_free (uri); + uri = NULL; + } _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))); @@ -918,7 +926,11 @@ static void cb_rstto_main_window_open_folder (GtkWidget *widget, RsttoMainWindow *window) { gint response; - GFile *file = NULL; + GFile *file = NULL, *child_file = NULL; + GFileEnumerator *file_enumarator = NULL; + GFileInfo *file_info = NULL; + const gchar *filename = NULL; + gchar *uri = NULL; GValue current_uri_val = {0, }; g_value_init (¤t_uri_val, G_TYPE_STRING); @@ -937,6 +949,23 @@ cb_rstto_main_window_open_folder (GtkWidget *widget, RsttoMainWindow *window) gtk_widget_hide(dialog); file = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (dialog)); + file_enumarator = g_file_enumerate_children (file, "standard::name", 0, NULL, NULL); + while (file_info = g_file_enumerator_next_file (file_enumarator, NULL, NULL)) + { + filename = g_file_info_get_name (file_info); + child_file = g_file_get_child (file, filename); + + rstto_navigator_add_file (window->priv->props.navigator, child_file, NULL); + + g_object_unref (child_file); + g_object_unref (file_info); + } + + uri = g_file_get_uri (file); + gtk_recent_manager_add_item (window->priv->recent_manager, uri); + g_free (uri); + uri = NULL; + 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); } @@ -958,17 +987,40 @@ cb_rstto_main_window_open_recent(GtkRecentChooser *chooser, RsttoMainWindow *win { GtkWidget *dialog, *err_dialog; gchar *uri = gtk_recent_chooser_get_current_uri (chooser); + const gchar *filename; GFile *file = g_file_new_for_uri (uri); + GFile *child_file; + GFileEnumerator *file_enumarator = NULL; + GFileInfo *child_file_info = NULL; + GFileInfo *file_info = g_file_query_info (file, "standard::type", 0, NULL, NULL); - if (rstto_navigator_add_file (window->priv->props.navigator, file, NULL) == FALSE) + if (g_file_info_get_file_type (file_info) == G_FILE_TYPE_DIRECTORY) { - 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); + file_enumarator = g_file_enumerate_children (file, "standard::name", 0, NULL, NULL); + while (child_file_info = g_file_enumerator_next_file (file_enumarator, NULL, NULL)) + { + filename = g_file_info_get_name (child_file_info); + child_file = g_file_get_child (file, filename); + + rstto_navigator_add_file (window->priv->props.navigator, child_file, NULL); + + g_object_unref (child_file); + g_object_unref (child_file_info); + } + + } + else + { + 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); _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits