[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