[Xfce4-commits] r25246 - squeeze/trunk/libsqueeze

Stephan Arts stephan at xfce.org
Wed Mar 21 18:07:51 CET 2007


Author: stephan
Date: 2007-03-21 17:07:50 +0000 (Wed, 21 Mar 2007)
New Revision: 25246

Modified:
   squeeze/trunk/libsqueeze/archive.c
   squeeze/trunk/libsqueeze/command-builder.c
   squeeze/trunk/libsqueeze/command-builder.h
   squeeze/trunk/libsqueeze/dbus-command.c
   squeeze/trunk/libsqueeze/internals.h
   squeeze/trunk/libsqueeze/libsqueeze.c
   squeeze/trunk/libsqueeze/macro-command.c
   squeeze/trunk/libsqueeze/spawn-command.c
   squeeze/trunk/libsqueeze/vfs-mime.c
   squeeze/trunk/libsqueeze/vfs-mime.h
Log:
fix builder registration

Modified: squeeze/trunk/libsqueeze/archive.c
===================================================================
--- squeeze/trunk/libsqueeze/archive.c	2007-03-21 07:49:37 UTC (rev 25245)
+++ squeeze/trunk/libsqueeze/archive.c	2007-03-21 17:07:50 UTC (rev 25246)
@@ -33,6 +33,8 @@
 #include "slist.h"
 #include "archive-tempfs.h"
 
+#include "vfs-mime.h"
+
 #include "internals.h"
 
 #ifndef LSQ_ENTRY_CHILD_BUFFER_SIZE
@@ -208,6 +210,8 @@
 	g_debug("%s\n", thunar_vfs_mime_info_get_name(archive->mime_info));
 #endif
 
+	archive->builder = lsq_archive_mime_get_default_builder(thunar_vfs_mime_info_get_name(archive->mime_info));
+
 	/*
 	if(!lsq_get_support_for_mimetype(thunar_vfs_mime_info_get_name(archive->mime_info)))
 	{

Modified: squeeze/trunk/libsqueeze/command-builder.c
===================================================================
--- squeeze/trunk/libsqueeze/command-builder.c	2007-03-21 07:49:37 UTC (rev 25245)
+++ squeeze/trunk/libsqueeze/command-builder.c	2007-03-21 17:07:50 UTC (rev 25246)
@@ -46,9 +46,6 @@
 static LSQArchiveCommand *
 lsq_command_builder_build_open(LSQCommandBuilder *builder, LSQArchive *archive, GSList *files);
 
-static gint
-lsq_command_builder_lookup_id(gconstpointer command_builder, gconstpointer id);
-
 static GObjectClass *parent_class;
 
 GType
@@ -132,21 +129,3 @@
 
 	return macro;
 }
-
-LSQCommandBuilder *
-lsq_command_builder_get_by_id(const gchar *id)
-{
-	GSList *result = g_slist_find_custom(lsq_command_builder_list, id, lsq_command_builder_lookup_id);
-	if(result)
-	{
-		g_object_ref(result->data);
-		return result->data;
-	}
-	return NULL;
-}
-
-static gint
-lsq_command_builder_lookup_id(gconstpointer command_builder, gconstpointer id)
-{
-	return (strcmp(LSQ_COMMAND_BUILDER(command_builder)->id, (gchar *)id));
-}

Modified: squeeze/trunk/libsqueeze/command-builder.h
===================================================================
--- squeeze/trunk/libsqueeze/command-builder.h	2007-03-21 07:49:37 UTC (rev 25245)
+++ squeeze/trunk/libsqueeze/command-builder.h	2007-03-21 17:07:50 UTC (rev 25246)
@@ -44,6 +44,5 @@
 };
 
 GType                lsq_command_builder_get_type(void);
-LSQCommandBuilder   *lsq_command_builder_get_by_id(const gchar *id);
 
 #endif /* __LIBSQUEEZE_COMMAND_BUILDER_H__ */

Modified: squeeze/trunk/libsqueeze/dbus-command.c
===================================================================
--- squeeze/trunk/libsqueeze/dbus-command.c	2007-03-21 07:49:37 UTC (rev 25245)
+++ squeeze/trunk/libsqueeze/dbus-command.c	2007-03-21 17:07:50 UTC (rev 25246)
@@ -67,7 +67,7 @@
 			NULL
 		};
 
-		lsq_dbus_command_type = g_type_register_static (G_TYPE_OBJECT, "LSQDBusCommand", &lsq_dbus_command_info, 0);
+		lsq_dbus_command_type = g_type_register_static (LSQ_TYPE_ARCHIVE_COMMAND, "LSQDBusCommand", &lsq_dbus_command_info, 0);
 	}
 	return lsq_dbus_command_type;
 }

Modified: squeeze/trunk/libsqueeze/internals.h
===================================================================
--- squeeze/trunk/libsqueeze/internals.h	2007-03-21 07:49:37 UTC (rev 25245)
+++ squeeze/trunk/libsqueeze/internals.h	2007-03-21 17:07:50 UTC (rev 25246)
@@ -14,7 +14,7 @@
  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-GSList                 *lsq_command_builder_list;
+GSList                 *lsq_mime_info_list;
 GSList                 *lsq_opened_archive_list;
 ThunarVfsPath          *lsq_relative_base_path;
 

Modified: squeeze/trunk/libsqueeze/libsqueeze.c
===================================================================
--- squeeze/trunk/libsqueeze/libsqueeze.c	2007-03-21 07:49:37 UTC (rev 25245)
+++ squeeze/trunk/libsqueeze/libsqueeze.c	2007-03-21 17:07:50 UTC (rev 25246)
@@ -32,20 +32,34 @@
 #include "libsqueeze/command-builder-compr.h"
 #include "libsqueeze/command-builder-gnu-tar.h"
 
+#include "vfs-mime.h"
+
 #include "internals.h"
 
 void
 lsq_init()
 {
+	LSQCommandBuilder *builder = NULL;
 	gchar *current_dir = g_get_current_dir();
 
 	lsq_mime_database = thunar_vfs_mime_database_get_default();
 
-	lsq_command_builder_list = g_slist_prepend(lsq_command_builder_list, lsq_command_builder_zip_new());
-	lsq_command_builder_list = g_slist_prepend(lsq_command_builder_list, lsq_command_builder_gnu_tar_new());
-	lsq_command_builder_list = g_slist_prepend(lsq_command_builder_list, lsq_command_builder_rar_new());
-	lsq_command_builder_list = g_slist_prepend(lsq_command_builder_list, lsq_command_builder_compr_new());
+	builder = lsq_command_builder_zip_new();
+	if(builder)
+		lsq_command_builder_register(builder);
 
+	builder = lsq_command_builder_gnu_tar_new();
+	if(builder)
+		lsq_command_builder_register(builder);
+
+	builder = lsq_command_builder_rar_new();
+	if(builder)
+		lsq_command_builder_register(builder);
+
+	builder = lsq_command_builder_compr_new();
+	if(builder)
+		lsq_command_builder_register(builder);
+
 	lsq_relative_base_path = thunar_vfs_path_new(current_dir, NULL);
 	lsq_opened_archive_list = NULL;
 	g_free(current_dir);
@@ -54,7 +68,7 @@
 void
 lsq_shutdown()
 {
-	g_slist_foreach(lsq_command_builder_list, (GFunc)g_object_unref, NULL);
+	//g_slist_foreach(lsq_command_builder_list, (GFunc)g_object_unref, NULL);
 	g_slist_foreach(lsq_opened_archive_list,  (GFunc)g_object_unref, NULL);
 
 	g_object_unref(lsq_mime_database);

Modified: squeeze/trunk/libsqueeze/macro-command.c
===================================================================
--- squeeze/trunk/libsqueeze/macro-command.c	2007-03-21 07:49:37 UTC (rev 25245)
+++ squeeze/trunk/libsqueeze/macro-command.c	2007-03-21 17:07:50 UTC (rev 25246)
@@ -67,7 +67,7 @@
 			NULL
 		};
 
-		lsq_macro_command_type = g_type_register_static (G_TYPE_OBJECT, "LSQMacroCommand", &lsq_macro_command_info, 0);
+		lsq_macro_command_type = g_type_register_static (LSQ_TYPE_ARCHIVE_COMMAND, "LSQMacroCommand", &lsq_macro_command_info, 0);
 	}
 	return lsq_macro_command_type;
 }

Modified: squeeze/trunk/libsqueeze/spawn-command.c
===================================================================
--- squeeze/trunk/libsqueeze/spawn-command.c	2007-03-21 07:49:37 UTC (rev 25245)
+++ squeeze/trunk/libsqueeze/spawn-command.c	2007-03-21 17:07:50 UTC (rev 25246)
@@ -75,7 +75,7 @@
 			NULL
 		};
 
-		lsq_spawn_command_type = g_type_register_static (G_TYPE_OBJECT, "LSQSpawnCommand", &lsq_spawn_command_info, 0);
+		lsq_spawn_command_type = g_type_register_static (LSQ_TYPE_ARCHIVE_COMMAND, "LSQSpawnCommand", &lsq_spawn_command_info, 0);
 	}
 	return lsq_spawn_command_type;
 }

Modified: squeeze/trunk/libsqueeze/vfs-mime.c
===================================================================
--- squeeze/trunk/libsqueeze/vfs-mime.c	2007-03-21 07:49:37 UTC (rev 25245)
+++ squeeze/trunk/libsqueeze/vfs-mime.c	2007-03-21 17:07:50 UTC (rev 25246)
@@ -14,3 +14,83 @@
  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
+#include <config.h>
+#include <string.h>
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <glib-object.h> 
+#include <signal.h>
+#include <sys/wait.h>
+#include <sys/types.h>
+#include <thunar-vfs/thunar-vfs.h>
+
+#include "libsqueeze-module.h"
+#include "vfs-mime.h"
+
+#include "internals.h"
+
+static void
+lsq_archive_mime_info_add_builder(LSQArchiveMimeInfo *mime_info, const LSQCommandBuilder *builder);
+
+gint
+lsq_archive_mime_info_lookup(gconstpointer mime_info, gconstpointer mime)
+{
+	return strcmp(thunar_vfs_mime_info_get_name(((LSQArchiveMimeInfo *)mime_info)->mime_info), mime);
+}
+
+LSQArchiveMimeInfo *
+lsq_archive_mime_info_register_command_builder(const LSQCommandBuilder *builder, const gchar *mime)
+{
+	LSQArchiveMimeInfo *mime_info = NULL;
+	GSList *result = g_slist_find_custom(lsq_mime_info_list, mime, lsq_archive_mime_info_lookup);
+	if(!result)
+	{
+		mime_info = lsq_archive_mime_info_new(mime);
+		lsq_mime_info_list = g_slist_prepend(lsq_mime_info_list, mime_info);
+	}
+	else
+	{
+		mime_info = result->data;
+	}
+	
+	lsq_archive_mime_info_add_builder(mime_info, builder);
+	return mime_info;
+}
+
+void
+lsq_command_builder_register(const LSQCommandBuilder *builder)
+{
+	int i = 1;
+	for(i = 0; builder->mime_types[i]; ++i)
+		lsq_archive_mime_info_register_command_builder(builder, builder->mime_types[i]);
+}
+
+LSQArchiveMimeInfo *
+lsq_archive_mime_info_new(const gchar *mime)
+{
+	LSQArchiveMimeInfo *archive_mime_info = g_new0(LSQArchiveMimeInfo, 1);
+
+	archive_mime_info->mime_info = thunar_vfs_mime_database_get_info(lsq_mime_database, mime);
+
+	return archive_mime_info;
+}
+
+static void
+lsq_archive_mime_info_add_builder(LSQArchiveMimeInfo *mime_info, const LSQCommandBuilder *builder)
+{
+	mime_info->command_builders = g_slist_prepend(mime_info->command_builders, (LSQCommandBuilder *)builder);
+}
+
+LSQCommandBuilder *
+lsq_archive_mime_get_default_builder(const gchar *mime)
+{
+	LSQArchiveMimeInfo *mime_info = NULL;
+	GSList *result = g_slist_find_custom(lsq_mime_info_list, mime, lsq_archive_mime_info_lookup);
+	if(result)
+	{
+		mime_info = result->data;
+		if(mime_info->command_builders)
+			return mime_info->command_builders->data;
+	}
+	return NULL;	
+}

Modified: squeeze/trunk/libsqueeze/vfs-mime.h
===================================================================
--- squeeze/trunk/libsqueeze/vfs-mime.h	2007-03-21 07:49:37 UTC (rev 25245)
+++ squeeze/trunk/libsqueeze/vfs-mime.h	2007-03-21 17:07:50 UTC (rev 25246)
@@ -14,9 +14,26 @@
  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-#ifndef __LIBSQUEEZE_VFS_MIME_H__
-#define __LIBSQUEEZE_VFS_MIME_H__
+#ifndef __LIBSQUEEZE_ARCHIVE_MIME_INFO_H__
+#define __LIBSQUEEZE_ARCHIVE_MIME_INFO_H__
 
-typedef struct ThunarVfsMimeInfo LSQVfsMimeInfo;
+struct _LSQArchiveMimeInfo
+{
+	ThunarVfsMimeInfo *mime_info;
+	GSList           *command_builders;
+};
 
-#endif
+typedef struct _LSQArchiveMimeInfo LSQArchiveMimeInfo;
+
+LSQArchiveMimeInfo *
+lsq_archive_mime_info_new(const gchar *mime);
+
+
+void
+lsq_command_builder_register(const LSQCommandBuilder *builder);
+
+LSQCommandBuilder *
+lsq_archive_mime_get_default_builder(const gchar *mime);
+
+#endif /* __LIBSQUEEZE_ARCHIVE_MIME_INFO_H__ */
+



More information about the Xfce4-commits mailing list