[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