[Xfce4-commits] r25316 - in squeeze/trunk: libsqueeze src

Stephan Arts stephan at xfce.org
Tue Mar 27 23:46:34 CEST 2007


Author: stephan
Date: 2007-03-27 21:46:34 +0000 (Tue, 27 Mar 2007)
New Revision: 25316

Modified:
   squeeze/trunk/libsqueeze/libsqueeze.c
   squeeze/trunk/libsqueeze/libsqueeze.h
   squeeze/trunk/src/new_dialog.c
Log:
create archive dialog updated

Modified: squeeze/trunk/libsqueeze/libsqueeze.c
===================================================================
--- squeeze/trunk/libsqueeze/libsqueeze.c	2007-03-27 20:34:02 UTC (rev 25315)
+++ squeeze/trunk/libsqueeze/libsqueeze.c	2007-03-27 21:46:34 UTC (rev 25316)
@@ -16,6 +16,7 @@
 
 
 #include <config.h>
+#include <string.h>
 #include <glib.h>
 #include <glib/gstdio.h>
 #include <glib-object.h>
@@ -37,6 +38,9 @@
 
 #include "internals.h"
 
+static gint
+lsq_lookup_mime(gconstpointer a, gconstpointer b);
+
 void
 lsq_init()
 {
@@ -138,3 +142,22 @@
 	return g_slist_copy(lsq_mime_info_list);
 }
 
+static gint
+lsq_lookup_mime(gconstpointer a, gconstpointer b)
+{
+	return !thunar_vfs_mime_info_equal((((LSQArchiveMime *)a)->mime_info), b);
+}
+
+gboolean
+lsq_is_supported(const gchar *filename)
+{
+	ThunarVfsMimeInfo *mime_info = thunar_vfs_mime_database_get_info_for_name(lsq_mime_database, filename);
+	GSList *result = g_slist_find_custom(lsq_mime_info_list, mime_info, lsq_lookup_mime);
+	thunar_vfs_mime_info_unref(mime_info);
+	if(result)
+	{
+		return TRUE;
+	}
+	return FALSE;
+}
+

Modified: squeeze/trunk/libsqueeze/libsqueeze.h
===================================================================
--- squeeze/trunk/libsqueeze/libsqueeze.h	2007-03-27 20:34:02 UTC (rev 25315)
+++ squeeze/trunk/libsqueeze/libsqueeze.h	2007-03-27 21:46:34 UTC (rev 25316)
@@ -75,6 +75,9 @@
 GSList *
 lsq_get_supported_mime_types();
 
+gboolean
+lsq_is_supported(const gchar *filename);
+
 G_END_DECLS
 
 #endif /* __LIBSQUEEZE_H__ */

Modified: squeeze/trunk/src/new_dialog.c
===================================================================
--- squeeze/trunk/src/new_dialog.c	2007-03-27 20:34:02 UTC (rev 25315)
+++ squeeze/trunk/src/new_dialog.c	2007-03-27 21:46:34 UTC (rev 25316)
@@ -115,5 +115,42 @@
 sq_new_archive_dialog_get_filename(SQNewArchiveDialog *dialog)
 {
 	gchar *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
-	return filename;
+
+	gchar *base = g_path_get_basename(filename);
+	if(lsq_is_supported(base))
+	{
+		g_free(base);
+		return filename;
+	}
+	else
+	{
+		g_free(base);
+		gint i;
+		GSList *_supported_mime_types = lsq_get_supported_mime_types();
+		for(i = 0; i < gtk_combo_box_get_active(GTK_COMBO_BOX(dialog->archive_types_combo)); i++)
+		{
+			_supported_mime_types = g_slist_next(_supported_mime_types);
+		}
+		const gchar *mime_type = lsq_archive_mime_get_name(((LSQArchiveMime *)_supported_mime_types->data));
+		gchar *suffix = NULL;
+		if(!strcmp(mime_type, "application/x-tar")) suffix = ".tar";
+		if(!strcmp(mime_type, "application/x-compressed-tar")) suffix = ".tar.gz";
+		if(!strcmp(mime_type, "application/x-bzip-compressed-tar")) suffix = ".tar.bz2";
+		if(!strcmp(mime_type, "application/x-tarz")) suffix = ".tar.Z";
+		if(!strcmp(mime_type, "application/x-tzo")) suffix = ".tzo";
+
+		if(!strcmp(mime_type, "application/x-zip")) suffix = ".zip";
+
+		if(!strcmp(mime_type, "application/x-rar"))  suffix = ".rar";
+
+
+		if(!strcmp(mime_type, "application/x-gzip"))  suffix = ".gz";
+		if(!strcmp(mime_type, "application/x-bzip"))  suffix = ".bz2";
+		if(!strcmp(mime_type, "application/x-lzop"))  suffix = ".lzo";
+		if(!strcmp(mime_type, "application/x-compress"))  suffix = ".Z";
+		base = filename;
+		filename = g_strconcat(base, suffix, NULL);
+		g_free(base);
+		return filename;
+	}
 }



More information about the Xfce4-commits mailing list