[Goodies-commits] r2923 - in ristretto/trunk: . src

Stephan Arts stephan at xfce.org
Mon Jul 23 23:53:08 CEST 2007


Author: stephan
Date: 2007-07-23 21:53:08 +0000 (Mon, 23 Jul 2007)
New Revision: 2923

Modified:
   ristretto/trunk/aclocal.m4
   ristretto/trunk/intltool-update.in
   ristretto/trunk/src/main.c
Log:
Can open a folder from the command-line (and display it's contents)
Remove files from the content-list which can not be opened.
Display appropriate error message



Modified: ristretto/trunk/aclocal.m4
===================================================================
--- ristretto/trunk/aclocal.m4	2007-07-23 20:06:56 UTC (rev 2922)
+++ ristretto/trunk/aclocal.m4	2007-07-23 21:53:08 UTC (rev 2923)
@@ -465,7 +465,7 @@
 esac
 
 if test -n "$1"; then
-    AC_MSG_CHECKING(for intltool >= $1)
+    AC_MSG_CHECKING([for intltool >= $1])
 
     INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
     INTLTOOL_APPLIED_VERSION=`awk -F\" '/\\$VERSION / { print $ 2; }' ${ac_aux_dir}/intltool-update.in`
@@ -546,8 +546,10 @@
 # Set DATADIRNAME correctly if it is not set yet
 # (copied from glib-gettext.m4)
 if test -z "$DATADIRNAME"; then
-  AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
-                 return _nl_msg_cat_cntr],
+  AC_LINK_IFELSE(
+    [AC_LANG_PROGRAM([[]],
+                     [[extern int _nl_msg_cat_cntr;
+                       return _nl_msg_cat_cntr]])],
     [DATADIRNAME=share],
     [case $host in
     *-*-solaris*)

Modified: ristretto/trunk/intltool-update.in
===================================================================
--- ristretto/trunk/intltool-update.in	2007-07-23 20:06:56 UTC (rev 2922)
+++ ristretto/trunk/intltool-update.in	2007-07-23 21:53:08 UTC (rev 2923)
@@ -563,13 +563,21 @@
     exit 1;
 }
 
+sub isIntltoolExtractInPath
+{
+    my ($file) = @_;
+    # If either a file exists, or when run it returns 0 exit status
+    return 1 if ((-x $file) or (system("$file >/dev/null") == 0));
+    return 0;
+}
+
 sub GenerateHeaders
 {
     my $EXTRACT = $ENV{"INTLTOOL_EXTRACT"} || "intltool-extract";
 
     ## Generate the .h header files, so we can allow glade and
     ## xml translation support
-    if (! -x "$EXTRACT")
+    if (! isIntltoolExtractInPath("$EXTRACT"))
     {
 	print STDERR "\n *** The intltool-extract script wasn't found!"
 	     ."\n *** Without it, intltool-update can not generate files.\n";

Modified: ristretto/trunk/src/main.c
===================================================================
--- ristretto/trunk/src/main.c	2007-07-23 20:06:56 UTC (rev 2922)
+++ ristretto/trunk/src/main.c	2007-07-23 21:53:08 UTC (rev 2923)
@@ -53,7 +53,10 @@
 
 int main(int argc, char **argv)
 {
-	GdkPixbuf *pixbuf;
+	GdkPixbuf *pixbuf = NULL;
+    GtkWidget *dialog = NULL;
+    GError *error = NULL;
+    gchar *dir_name = NULL;
 
 
 	#ifdef ENABLE_NLS
@@ -69,32 +72,63 @@
 	mime_dbase = thunar_vfs_mime_database_get_default();
 
 	GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+	gtk_window_set_title(GTK_WINDOW(window), PACKAGE_STRING);
 
 	if(argc == 2)
 	{
-		ThunarVfsPath *path = thunar_vfs_path_new(argv[1], NULL);
-		working_dir = thunar_vfs_path_get_parent(path);
-		thunar_vfs_path_ref(working_dir);
-		thunar_vfs_path_unref(path);
-		pixbuf = gdk_pixbuf_new_from_file(argv[1], NULL);
+        ThunarVfsPath *path = thunar_vfs_path_new(argv[1], NULL);
+        ThunarVfsInfo *info = thunar_vfs_info_new_for_path(path, NULL);
 
-		gchar *dir_name = thunar_vfs_path_dup_string(working_dir);
+        if(info)
+        {
+            g_debug("%s\n", thunar_vfs_mime_info_get_name(info->mime_info));
+            g_debug("%s\n", thunar_vfs_mime_info_get_comment(info->mime_info));
+            if(strcmp(thunar_vfs_mime_info_get_name(info->mime_info), "inode/directory"))
+            {
+                working_dir = thunar_vfs_path_get_parent(path);
+            }
+            else
+            {
+                working_dir = path;
+            }
+        }
+        else
+        {
+            working_dir = path;
+        }
+        thunar_vfs_path_ref(working_dir);
 
-		GDir *dir = g_dir_open(dir_name, 0, NULL);
-		const gchar *filename = g_dir_read_name(dir);
-		while(filename)
-		{
-			ThunarVfsMimeInfo *mime_info = thunar_vfs_mime_database_get_info_for_name(mime_dbase, filename);
-			if(!strcmp(thunar_vfs_mime_info_get_media(mime_info), "image"))
-			{
-				file_list = g_list_prepend(file_list, thunar_vfs_path_relative(working_dir, filename));
-				if(!strcmp(thunar_vfs_path_get_name(THUNAR_VFS_PATH(file_list->data)), argv[1]))
-					file_iter = file_list;
-			}
-			thunar_vfs_mime_info_unref(mime_info);
-			filename = g_dir_read_name(dir);
-		}
-		g_free(dir_name);
+        dir_name = thunar_vfs_path_dup_string(working_dir);
+
+        GDir *dir = g_dir_open(dir_name, 0, NULL);
+        const gchar *filename = g_dir_read_name(dir);
+        while(filename)
+        {
+            ThunarVfsMimeInfo *mime_info = thunar_vfs_mime_database_get_info_for_name(mime_dbase, filename);
+            if(!strcmp(thunar_vfs_mime_info_get_media(mime_info), "image"))
+            {
+                file_list = g_list_prepend(file_list, thunar_vfs_path_relative(working_dir, filename));
+                if(thunar_vfs_path_equal(path, file_list->data))
+                {
+                    pixbuf = gdk_pixbuf_new_from_file(argv[1], &error);
+                    file_iter = file_list;
+                }
+            }
+            thunar_vfs_mime_info_unref(mime_info);
+            filename = g_dir_read_name(dir);
+        }
+        g_free(dir_name);
+        if(error)
+        {
+            dialog = gtk_message_dialog_new_with_markup(GTK_WINDOW(window),
+                                            GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
+                                            GTK_MESSAGE_ERROR,
+                                            GTK_BUTTONS_OK,
+                                            "<b>Error:</b>\n%s",
+                                            error->message);
+        }
+        if(!file_iter)
+            file_list = file_list;
 	}
 	else
 		pixbuf = NULL;
@@ -163,6 +197,12 @@
 	gtk_widget_show_all(window);
 	gtk_widget_show(viewer);
 
+    if(dialog)
+    {
+        gtk_dialog_run(GTK_DIALOG(dialog));
+        gtk_widget_destroy(dialog);
+    }
+
 	gtk_main();
 	return 0;
 }
@@ -253,18 +293,32 @@
 static void
 cb_rstto_forward(GtkToolItem *item, RsttoPictureViewer *viewer)
 {
-	GdkPixbuf *pixbuf;
+	GdkPixbuf *pixbuf = NULL;
+    GError *error = NULL;
+
 	if(file_iter)
 		file_iter = g_list_next(file_iter);
 	if(!file_iter)
 		file_iter = file_list;
 
-	if(file_iter)
+	while(!pixbuf && file_iter)
 	{
 		gchar *filename = thunar_vfs_path_dup_string(file_iter->data);
 
-		pixbuf = gdk_pixbuf_new_from_file(filename , NULL);
+		pixbuf = gdk_pixbuf_new_from_file(filename , &error);
+        if(!pixbuf)
+        {
+            g_debug("%s\n", error->message);
+            GList *_file_iter = g_list_next(file_iter);
 
+            thunar_vfs_path_unref(file_iter->data);
+            file_list = g_list_remove(file_list, file_iter->data);
+            if(_file_iter)
+                file_iter = _file_iter;
+            else
+		        file_iter = file_list;
+        }
+
 		rstto_picture_viewer_set_pixbuf(RSTTO_PICTURE_VIEWER(viewer), pixbuf);
 
 		if(pixbuf)




More information about the Goodies-commits mailing list