[Goodies-commits] r3267 - ristretto/trunk/src

Stephan Arts stephan at xfce.org
Fri Sep 28 19:56:31 CEST 2007


Author: stephan
Date: 2007-09-28 17:56:31 +0000 (Fri, 28 Sep 2007)
New Revision: 3267

Modified:
   ristretto/trunk/src/main.c
   ristretto/trunk/src/main_window.c
   ristretto/trunk/src/main_window.h
   ristretto/trunk/src/navigator.c
   ristretto/trunk/src/navigator.h
Log:
Fix open from CLI


Modified: ristretto/trunk/src/main.c
===================================================================
--- ristretto/trunk/src/main.c	2007-09-28 02:54:54 UTC (rev 3266)
+++ ristretto/trunk/src/main.c	2007-09-28 17:56:31 UTC (rev 3267)
@@ -41,6 +41,7 @@
 int main(int argc, char **argv)
 {
 
+    gint n;
 
     #ifdef ENABLE_NLS
     bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
@@ -62,12 +63,90 @@
     gboolean show_toolbar = xfce_rc_read_bool_entry(xfce_rc, "ShowToolBar", TRUE);
     gint window_width = xfce_rc_read_int_entry(xfce_rc, "LastWindowWidth", 400);
     gint window_height = xfce_rc_read_int_entry(xfce_rc, "LastWindowHeight", 300);
-    //gint slideshow_timeout = xfce_rc_read_int_entry(xfce_rc, "SlideShowTimeout", 5000);
+    gint slideshow_timeout = xfce_rc_read_int_entry(xfce_rc, "SlideShowTimeout", 5000);
     
     GtkWidget *window = rstto_main_window_new();
     gtk_widget_ref(window);
 
+    RsttoNavigator *navigator = rstto_main_window_get_navigator(RSTTO_MAIN_WINDOW(window));
+    GtkRecentManager *recent_manager = rstto_main_window_get_recent_manager(RSTTO_MAIN_WINDOW(window));
+    rstto_navigator_set_timeout(navigator, slideshow_timeout);
 
+    for (n = 1; n < argc; ++n)
+    {
+        ThunarVfsPath *path = thunar_vfs_path_new(argv[n], NULL);
+
+        ThunarVfsInfo *info = thunar_vfs_info_new_for_path(path, NULL);
+        if(info)
+        {
+            if(strcmp(thunar_vfs_mime_info_get_name(info->mime_info), "inode/directory"))
+            {
+                ThunarVfsPath *_path = thunar_vfs_path_get_parent(path);
+                thunar_vfs_path_unref(path);
+                path = _path;
+
+                gchar *path_string = thunar_vfs_path_dup_string(path);
+                
+                GDir *dir = g_dir_open(path_string, 0, NULL);
+                const gchar *filename = g_dir_read_name(dir);
+                while (filename)
+                {
+                    gchar *path_name = g_strconcat(path_string,  "/", filename, NULL);
+                    ThunarVfsPath *file_path = thunar_vfs_path_new(path_name, NULL);
+                    if (file_path)
+                    {
+                        ThunarVfsInfo *file_info = thunar_vfs_info_new_for_path(file_path, NULL);
+                        gchar *file_media = thunar_vfs_mime_info_get_media(file_info->mime_info);
+                        if(!strcmp(file_media, "image"))
+                        {
+                            RsttoNavigatorEntry *entry = rstto_navigator_entry_new(file_info);
+                            gint i = rstto_navigator_add (navigator, entry);
+                            if (!strcmp(path_name, argv[n]))
+                            {
+                                rstto_navigator_set_file(navigator, i);
+                            }
+                        }
+                        g_free(file_media);
+                        thunar_vfs_path_unref(file_path);
+                    }
+                    g_free(path_name);
+                    filename = g_dir_read_name(dir);
+                }
+                g_free(path_string);
+            }
+            else
+            {
+                GDir *dir = g_dir_open(argv[n], 0, NULL);
+                const gchar *filename = g_dir_read_name(dir);
+                while (filename)
+                {
+                    gchar *path_name = g_strconcat(argv[n],  "/", filename, NULL);
+                    ThunarVfsPath *file_path = thunar_vfs_path_new(path_name, NULL);
+                    if (file_path)
+                    {
+                        ThunarVfsInfo *file_info = thunar_vfs_info_new_for_path(file_path, NULL);
+                        gchar *file_media = thunar_vfs_mime_info_get_media(file_info->mime_info);
+                        if(!strcmp(file_media, "image"))
+                        {
+                            RsttoNavigatorEntry *entry = rstto_navigator_entry_new(file_info);
+                            rstto_navigator_add (navigator, entry);
+                        }
+                        g_free(file_media);
+                        thunar_vfs_path_unref(file_path);
+                    }
+                    g_free(path_name);
+                    filename = g_dir_read_name(dir);
+                }
+                rstto_navigator_jump_first(navigator);
+            }
+            gchar *uri = thunar_vfs_path_dup_uri(info->path);
+            gtk_recent_manager_add_item(recent_manager, uri);
+            g_free(uri);
+        }
+        thunar_vfs_path_unref(path);
+    }
+
+
     g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
     g_signal_connect(G_OBJECT(window), "configure-event", G_CALLBACK(cb_rstto_main_window_configure_event), NULL);
 

Modified: ristretto/trunk/src/main_window.c
===================================================================
--- ristretto/trunk/src/main_window.c	2007-09-28 02:54:54 UTC (rev 3266)
+++ ristretto/trunk/src/main_window.c	2007-09-28 17:56:31 UTC (rev 3267)
@@ -654,6 +654,18 @@
     return window->priv->settings.thumbnail_viewer_orientation;
 }
 
+RsttoNavigator *
+rstto_main_window_get_navigator (RsttoMainWindow *window)
+{
+    return window->priv->navigator;
+}
+
+GtkRecentManager *
+rstto_main_window_get_recent_manager (RsttoMainWindow *window)
+{
+    return window->priv->manager;
+}
+
 /* CALLBACK FUNCTIONS */
 
 static void

Modified: ristretto/trunk/src/main_window.h
===================================================================
--- ristretto/trunk/src/main_window.h	2007-09-28 02:54:54 UTC (rev 3266)
+++ ristretto/trunk/src/main_window.h	2007-09-28 17:56:31 UTC (rev 3267)
@@ -72,6 +72,10 @@
 rstto_main_window_get_show_thumbnail_viewer (RsttoMainWindow *window);
 GtkOrientation
 rstto_main_window_get_thumbnail_viewer_orientation (RsttoMainWindow *window);
+RsttoNavigator *
+rstto_main_window_get_navigator (RsttoMainWindow *window);
+GtkRecentManager *
+rstto_main_window_get_recent_manager (RsttoMainWindow *window);
 
 G_END_DECLS
 

Modified: ristretto/trunk/src/navigator.c
===================================================================
--- ristretto/trunk/src/navigator.c	2007-09-28 02:54:54 UTC (rev 3266)
+++ ristretto/trunk/src/navigator.c	2007-09-28 17:56:31 UTC (rev 3267)
@@ -332,7 +332,7 @@
     return g_list_nth_data(navigator->file_list, n);
 }
 
-void
+gint
 rstto_navigator_add (RsttoNavigator *navigator, RsttoNavigatorEntry *entry)
 {
     if(navigator->file_iter)
@@ -352,6 +352,7 @@
                       NULL);
     }
     g_signal_emit(G_OBJECT(navigator), rstto_navigator_signals[RSTTO_NAVIGATOR_SIGNAL_NEW_ENTRY], 0, g_list_index(navigator->file_list, entry), entry, NULL);
+    return g_list_index(navigator->file_list, entry);
 }
 
 void

Modified: ristretto/trunk/src/navigator.h
===================================================================
--- ristretto/trunk/src/navigator.h	2007-09-28 02:54:54 UTC (rev 3266)
+++ ristretto/trunk/src/navigator.h	2007-09-28 17:56:31 UTC (rev 3267)
@@ -87,7 +87,7 @@
 gint
 rstto_navigator_get_old_position(RsttoNavigator *navigator);
 
-void
+gint
 rstto_navigator_add (RsttoNavigator *navigator, RsttoNavigatorEntry *entry);
 void
 rstto_navigator_remove (RsttoNavigator *navigator, RsttoNavigatorEntry *entry);




More information about the Goodies-commits mailing list