[Xfce4-commits] <ristretto:master> Use new API for opening a directory in main.c also.
Stephan Arts
noreply at xfce.org
Sun Nov 13 23:18:09 CET 2011
Updating branch refs/heads/master
to 06f6a1867ddb20de0af2dea3a993c7f793999250 (commit)
from 3e660107ad30b12a2b5262e6f78f042517eccdc4 (commit)
commit 06f6a1867ddb20de0af2dea3a993c7f793999250
Author: Stephan Arts <stephan at xfce.org>
Date: Sun Nov 13 22:13:17 2011 +0100
Use new API for opening a directory in main.c also.
Use the new API, rstto_image_list_set_directory from main.c,
this requires the introduction of rstto_main_window_get_iter,
to get the iterator used by the main-window.
This iterator is needed to make sure the main-window shows
the correct image.
src/main.c | 55 +++++++++++++++++++++++++++++-----------------------
src/main_window.c | 7 ++++++
src/main_window.h | 7 +++++-
3 files changed, 44 insertions(+), 25 deletions(-)
diff --git a/src/main.c b/src/main.c
index 0794838..f550a44 100644
--- a/src/main.c
+++ b/src/main.c
@@ -101,7 +101,14 @@ main(int argc, char **argv)
{
if (cli_error != NULL)
{
- g_print (_("%s: %s\nTry %s --help to see a full list of available command line options.\n"), PACKAGE, cli_error->message, PACKAGE_NAME);
+ g_print (
+ _("%s: %s\n\n"
+ "Try %s --help to see a full list of\n"
+ "available command line options.\n"),
+ PACKAGE,
+ cli_error->message,
+ PACKAGE_NAME);
+
g_error_free (cli_error);
return 1;
}
@@ -170,11 +177,11 @@ static gboolean
cb_rstto_open_files (RsttoOpenFiles *rof)
{
GFileType file_type;
- GFile *file, *p_file, *child_file;
+ GFile *file, *p_file;
GFileInfo *file_info;
- const gchar *content_type, *filename;
-
- GFileEnumerator *file_enumarator = NULL;
+ RsttoFile *r_file = NULL;
+ RsttoImageListIter *iter = NULL;
+ const gchar *content_type;
if (rof->argc > 2)
{
@@ -212,35 +219,35 @@ cb_rstto_open_files (RsttoOpenFiles *rof)
file_info = g_file_query_info (file, "standard::content-type,standard::type", 0, NULL, NULL);
if (file_info)
{
- content_type = g_file_info_get_attribute_string (file_info, "standard::content-type");
file_type = g_file_info_get_file_type (file_info);
+ content_type = g_file_info_get_attribute_string (file_info, "standard::content-type");
if (strncmp (content_type, "image/", 6) == 0)
{
- if (rstto_image_list_add_file (rof->image_list, rstto_file_new(file), NULL) == TRUE)
- {
- rstto_main_window_add_file_to_recent_files (file);
- }
+ r_file = rstto_file_new (file);
+ }
+ else
+ {
+ /* TODO: show error dialog */
}
}
}
- if (file_type != G_FILE_TYPE_DIRECTORY) {
- p_file = g_file_get_parent (file);
- file_enumarator = g_file_enumerate_children (p_file, "standard::*", 0, NULL, NULL);
- for(file_info = g_file_enumerator_next_file (file_enumarator, NULL, NULL); file_info != NULL; file_info = g_file_enumerator_next_file (file_enumarator, NULL, NULL))
+
+ if (file_type != G_FILE_TYPE_DIRECTORY && r_file != NULL)
{
- filename = g_file_info_get_name (file_info);
- content_type = g_file_info_get_content_type (file_info);
- child_file = g_file_get_child (p_file, filename);
+ /* Get the iterator used by the main-window, it should be
+ * set to point to the right file later.
+ */
+ iter = rstto_main_window_get_iter (RSTTO_MAIN_WINDOW (rof->window));
- if (strncmp (content_type, "image/", 6) == 0)
- {
- rstto_image_list_add_file (rof->image_list, rstto_file_new(child_file), NULL);
- }
+ /* Get the file's parent directory */
+ p_file = g_file_get_parent (file);
- g_object_unref (child_file);
- g_object_unref (file_info);
- }
+ /* Open the directory */
+ rstto_image_list_set_directory (rof->image_list, p_file, NULL);
+
+ /* Point the iterator to the correct image */
+ rstto_image_list_iter_find_file (iter, r_file);
}
}
return FALSE;
diff --git a/src/main_window.c b/src/main_window.c
index 49c212c..ad19462 100644
--- a/src/main_window.c
+++ b/src/main_window.c
@@ -2872,6 +2872,13 @@ cb_rstto_main_window_toggle_show_thumbnailbar (GtkWidget *widget, RsttoMainWindo
}
}
+RsttoImageListIter *
+rstto_main_window_get_iter (
+ RsttoMainWindow *window)
+{
+ return window->priv->iter;
+}
+
gboolean
rstto_main_window_add_file_to_recent_files (GFile *file)
{
diff --git a/src/main_window.h b/src/main_window.h
index 8a724f5..9e5819d 100644
--- a/src/main_window.h
+++ b/src/main_window.h
@@ -67,7 +67,12 @@ typedef enum {
GType rstto_main_window_get_type();
-GtkWidget *rstto_main_window_new (RsttoImageList *, gboolean);
+GtkWidget *
+rstto_main_window_new (RsttoImageList *, gboolean);
+
+RsttoImageListIter *
+rstto_main_window_get_iter (
+ RsttoMainWindow *);
gboolean rstto_main_window_add_file_to_recent_files (GFile *);
More information about the Xfce4-commits
mailing list