[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