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

Stephan Arts stephan at xfce.org
Fri Mar 23 11:04:17 CET 2007


Author: stephan
Date: 2007-03-23 10:04:17 +0000 (Fri, 23 Mar 2007)
New Revision: 25264

Added:
   squeeze/trunk/libsqueeze/builder-settings.c
   squeeze/trunk/libsqueeze/builder-settings.h
Modified:
   squeeze/trunk/libsqueeze/Makefile.am
   squeeze/trunk/libsqueeze/archive-iter.c
   squeeze/trunk/libsqueeze/archive.c
   squeeze/trunk/libsqueeze/archive.h
   squeeze/trunk/libsqueeze/command-builder-compr.c
   squeeze/trunk/libsqueeze/command-builder-gnu-tar.c
   squeeze/trunk/libsqueeze/command-builder.c
   squeeze/trunk/libsqueeze/command-builder.h
   squeeze/trunk/libsqueeze/libsqueeze-module.h
   squeeze/trunk/libsqueeze/libsqueeze-view.h
Log:
add settings support

Modified: squeeze/trunk/libsqueeze/Makefile.am
===================================================================
--- squeeze/trunk/libsqueeze/Makefile.am	2007-03-23 02:34:02 UTC (rev 25263)
+++ squeeze/trunk/libsqueeze/Makefile.am	2007-03-23 10:04:17 UTC (rev 25264)
@@ -16,6 +16,7 @@
 	macro-command.c macro-command.h \
 	dbus-command.c dbus-command.h \
 	archive-tempfs.c archive-tempfs.h \
+	builder-settings.c builder-settings.h \
 	command-builder.c command-builder.h \
 	command-builder-zip.c command-builder-zip.h \
 	command-builder-rar.c command-builder-rar.h \

Modified: squeeze/trunk/libsqueeze/archive-iter.c
===================================================================
--- squeeze/trunk/libsqueeze/archive-iter.c	2007-03-23 02:34:02 UTC (rev 25263)
+++ squeeze/trunk/libsqueeze/archive-iter.c	2007-03-23 10:04:17 UTC (rev 25264)
@@ -1066,9 +1066,9 @@
 	if(props_iter)
 	{
 		/* walk all properties */
-		for(i=0; i<archive->entry_n_property; ++i)
+		for(i=0; i < (lsq_archive_n_entry_properties(archive) - LSQ_ARCHIVE_PROP_USER); ++i)
 		{
-			switch(archive->entry_property_types[i])
+			switch(lsq_archive_get_entry_property_type(archive, i+LSQ_ARCHIVE_PROP_USER))
 			{
 				case(G_TYPE_STRING):
 					/* free only strings */
@@ -1376,7 +1376,7 @@
 			{
 				for(n = 0; n < (i-LSQ_ARCHIVE_PROP_USER); ++n)
 				{
-					switch(archive->entry_property_types[n])
+					switch(lsq_archive_get_entry_property_type(archive, n+LSQ_ARCHIVE_PROP_USER))
 					{
 						case G_TYPE_STRING:
 							props_iter += sizeof(gchar *);
@@ -1405,7 +1405,7 @@
 		return 0;
 	for(n = 0; n < (i-LSQ_ARCHIVE_PROP_USER); ++n)
 	{
-		switch(archive->entry_property_types[n])
+		switch(lsq_archive_get_entry_property_type(archive, n))
 		{
 			case G_TYPE_STRING:
 				props_iter += sizeof(gchar *);
@@ -1430,7 +1430,7 @@
 		return 0;
 	for(n = 0; n < (i-LSQ_ARCHIVE_PROP_USER); ++n)
 	{
-		switch(archive->entry_property_types[n])
+		switch(lsq_archive_get_entry_property_type(archive, n+LSQ_ARCHIVE_PROP_USER))
 		{
 			case G_TYPE_STRING:
 				props_iter += sizeof(gchar *);
@@ -1454,9 +1454,9 @@
 
 	if(!entry->props)
 	{
-		for(i = 0; i < archive->entry_n_property; ++i)
+		for(i = 0; i < (lsq_archive_n_entry_properties(archive)-LSQ_ARCHIVE_PROP_USER); ++i)
 		{
-			switch(archive->entry_property_types[i])
+			switch(lsq_archive_get_entry_property_type(archive, i+LSQ_ARCHIVE_PROP_USER))
 			{
 				case G_TYPE_STRING:
 					size += sizeof(gchar *);
@@ -1484,7 +1484,7 @@
 
 	for(i = 0; i < (n-LSQ_ARCHIVE_PROP_USER); ++i)
 	{
-		switch(archive->entry_property_types[i])
+		switch(lsq_archive_get_entry_property_type(archive, i+LSQ_ARCHIVE_PROP_USER))
 		{
 			case G_TYPE_STRING:
 				props_iter += sizeof(gchar *);
@@ -1509,7 +1509,7 @@
 
 	for(i = 0; i < (n-LSQ_ARCHIVE_PROP_USER); ++i)
 	{
-		switch(archive->entry_property_types[i])
+		switch(lsq_archive_get_entry_property_type(archive, i+LSQ_ARCHIVE_PROP_USER))
 		{
 			case G_TYPE_STRING:
 				props_iter += sizeof(gchar *);
@@ -1533,7 +1533,7 @@
 
 	for(i = 0; i < (n-LSQ_ARCHIVE_PROP_USER); ++i)
 	{
-		switch(archive->entry_property_types[i])
+		switch(lsq_archive_get_entry_property_type(archive, i+LSQ_ARCHIVE_PROP_USER))
 		{
 			case G_TYPE_STRING:
 				props_iter += sizeof(gchar *);
@@ -1555,9 +1555,9 @@
 	gpointer props_iter = lsq_archive_entry_get_props(archive, entry);
 	guint i;
 
-	for(i = 0; i < archive->entry_n_property; ++i)
+	for(i=0; i < (lsq_archive_n_entry_properties(archive) - LSQ_ARCHIVE_PROP_USER); ++i)
 	{
-		switch(archive->entry_property_types[i])
+		switch(lsq_archive_get_entry_property_type(archive, i+LSQ_ARCHIVE_PROP_USER))
 		{
 			case G_TYPE_STRING:
 				g_free(*((gchar **)props_iter));
@@ -1582,9 +1582,9 @@
 	gpointer props_iter = lsq_archive_entry_get_props(archive, entry);
 	guint i;
 
-	for(i = 0; i < archive->entry_n_property; ++i)
+	for(i=0; i < (lsq_archive_n_entry_properties(archive) - LSQ_ARCHIVE_PROP_USER); ++i)
 	{
-		switch(archive->entry_property_types[i])
+		switch(lsq_archive_get_entry_property_type(archive, i+LSQ_ARCHIVE_PROP_USER))
 		{
 			case G_TYPE_STRING:
 				g_free(*((gchar **)props_iter));

Modified: squeeze/trunk/libsqueeze/archive.c
===================================================================
--- squeeze/trunk/libsqueeze/archive.c	2007-03-23 02:34:02 UTC (rev 25263)
+++ squeeze/trunk/libsqueeze/archive.c	2007-03-23 10:04:17 UTC (rev 25264)
@@ -220,248 +220,108 @@
 		g_object_unref(archive);
 		archive = NULL;
 	}
+
+	archive->settings = lsq_command_builder_get_settings(archive->builder);
 	
 	return archive;
 }
 
-/********************
- * LSQArchive stuff *
- ********************/
-
-static GType *
-lsq_archive_get_entry_property_types(LSQArchive *archive, guint size)
+/*
+ * lsq_archive_n_entry_properties:
+ *
+ * @archive: LSQArchive object
+ *
+ */
+guint
+lsq_archive_n_entry_properties(const LSQArchive *archive)
 {
-	GType *new_props;
-	gchar **new_names;
-	guint i;
-
-	if(archive->entry_n_property < size)
-	{
-		new_props = g_new0(GType, size);
-		new_names = g_new0(gchar*, size);
-		for(i = 0; i < archive->entry_n_property; ++i)
-		{
-			new_props[i] = archive->entry_property_types[i];
-			new_names[i] = archive->entry_property_names[i];
-		}
-		g_free(archive->entry_property_types);
-		g_free(archive->entry_property_names);
-		archive->entry_property_types = new_props;
-		archive->entry_property_names = new_names;
-		archive->entry_n_property = size;
-	}
-	return archive->entry_property_types;
+#ifdef DEBUG
+	g_return_val_if_fail(archive, 0);
+#endif
+	return lsq_builder_settings_get_n_properties(archive->settings) + LSQ_ARCHIVE_PROP_USER;
 }
 
-static gchar **
-lsq_archive_get_entry_property_names(LSQArchive *archive, guint size)
-{
-	GType *new_types;
-	gchar **new_names;
-	guint i;
-
-	if(archive->entry_n_property < size)
-	{
-		new_types = g_new0(GType, size);
-		new_names = g_new0(gchar*, size);
-		for(i = 0; i < archive->entry_n_property; ++i)
-		{
-			new_types[i] = archive->entry_property_types[i];
-			new_names[i] = archive->entry_property_names[i];
-		}
-		g_free(archive->entry_property_types);
-		g_free(archive->entry_property_names);
-		archive->entry_property_types = new_types;
-		archive->entry_property_names = new_names;
-		archive->entry_n_property = size;
-	}
-	return archive->entry_property_names;
-}
-
 /*
- * GType
- * lsq_archive_get_entry_property_type(LSQArchive *archive, guint i)
+ * lsq_archive_get_entry_property_type:
  *
+ * @archive: LSQArchive object
+ *
  */
 GType
-lsq_archive_get_entry_property_type(LSQArchive *archive, guint i)
+lsq_archive_get_entry_property_type(const LSQArchive *archive, guint n)
 {
-#ifdef DEBUG /* n_property + 2, filename and MIME */
-	g_return_val_if_fail(archive, G_TYPE_INVALID);
-	g_return_val_if_fail(i < lsq_archive_n_entry_properties(archive), G_TYPE_INVALID);
-#endif
-
-	switch(i)
+	switch(n)
 	{
 		case LSQ_ARCHIVE_PROP_FILENAME:
 		case LSQ_ARCHIVE_PROP_MIME_TYPE:
 			return G_TYPE_STRING;
+			break;
 		default:
-#ifdef DEBUG
-			g_return_val_if_fail(archive->entry_property_types, G_TYPE_INVALID);
-#endif
-			return archive->entry_property_types[i - LSQ_ARCHIVE_PROP_USER];
+			return lsq_builder_settings_get_property_type(archive->settings, n - LSQ_ARCHIVE_PROP_USER);
+			break;
 	}
 }
 
 /*
- * const gchar *
- * lsq_archive_get_entry_property_name(LSQArchive *, guint)
+ * lsq_archive_get_entry_property_name:
  *
+ * @archive: LSQArchive object
+ *
  */
 const gchar *
-lsq_archive_get_entry_property_name(LSQArchive *archive, guint i)
+lsq_archive_get_entry_property_name(const LSQArchive *archive, guint n)
 {
-#ifdef DEBUG /* n_property + 2, filename and MIME */
-	g_return_val_if_fail(archive, G_TYPE_INVALID);
-	g_return_val_if_fail(i < lsq_archive_n_entry_properties(archive), G_TYPE_INVALID);
-#endif
-	
-	switch(i)
+	switch(n)
 	{
 		case LSQ_ARCHIVE_PROP_FILENAME:
 			return _("Name");
 		case LSQ_ARCHIVE_PROP_MIME_TYPE:
 			return _("Mime type");
+			break;
 		default:
-#ifdef DEBUG
-			g_return_val_if_fail(archive->entry_property_names, G_TYPE_INVALID);
-#endif
-			return archive->entry_property_names[i - LSQ_ARCHIVE_PROP_USER];
+			return lsq_builder_settings_get_property_name(archive->settings, n - LSQ_ARCHIVE_PROP_USER);
+			break;
 	}
 }
 
 /*
- * void
- * lsq_archive_set_entry_property_type(LSQArchive *archive, guint i, GType *, const gchar *)
+ * lsq_archive_get_filename:
  *
+ * @archive: LSQArchive object
  */
-void
-lsq_archive_set_entry_property_type(LSQArchive *archive, guint i, GType type, const gchar *name)
+gchar *
+lsq_archive_get_filename(const LSQArchive *archive)
 {
-#ifdef DEBUG
-	g_return_if_fail(archive);
-	g_return_if_fail(i >= LSQ_ARCHIVE_PROP_USER);
-#endif
-
-	GType *types_iter = lsq_archive_get_entry_property_types(archive, i+1-LSQ_ARCHIVE_PROP_USER);
-	gchar **names_iter = lsq_archive_get_entry_property_names(archive, i+1-LSQ_ARCHIVE_PROP_USER);
-
-	types_iter[i-LSQ_ARCHIVE_PROP_USER] = type;
-	g_free(names_iter[i-LSQ_ARCHIVE_PROP_USER]);
-	names_iter[i-LSQ_ARCHIVE_PROP_USER] = g_strdup(name);
+	return g_path_get_basename(archive->path);
 }
 
 /*
- * void
- * lsq_archive_set_entry_property_types(LSQArchive *archive, ...)
+ * lsq_archive_get_path:
  *
+ * @archive: LSQArchive object
  */
-void
-lsq_archive_set_entry_property_types(LSQArchive *archive, ...)
+const gchar *
+lsq_archive_get_path(const LSQArchive *archive)
 {
-#ifdef DEBUG
-	g_return_if_fail(archive);
-#endif
-	GType   type;
-	gchar  *name;
-	guint   size = 0;
-	va_list ap;
-	va_start(ap, archive);
-	while(va_arg(ap, GType) && va_arg(ap, gchar*))
-	{
-		size++;
-	}
-	va_end(ap);
-	GType *types_iter = lsq_archive_get_entry_property_types(archive, size);
-	gchar **names_iter = lsq_archive_get_entry_property_names(archive, size);
-	va_start(ap, archive);
-	while((type = va_arg(ap, GType)) && (name = va_arg(ap, gchar*)))
-	{
-		*types_iter = type;
-		g_free(*names_iter);
-		*names_iter = g_strdup(name);
-		types_iter++;
-		names_iter++;
-	}
+	return archive->path;
 }
 
 /*
- * void
- * lsq_archive_set_entry_property_typesv(LSQArchive *archive, GType *)
+ * lsq_archive_get_mimetype:
  *
+ * @archive: LSQArchive object
  */
-void
-lsq_archive_set_entry_property_typesv(LSQArchive *archive, GType *types, const gchar **names)
-{
-#ifdef DEBUG
-	g_return_if_fail(archive);
-#endif
-	guint size = 0;
-	GType *type_iter = types;
-	const gchar **name_iter = names;
-	while(type_iter && name_iter)
-	{
-		size++;
-		type_iter++;
-		name_iter++;
-	}
-	GType *types_iter = lsq_archive_get_entry_property_types(archive, size);
-	gchar **names_iter = lsq_archive_get_entry_property_names(archive, size);
-	type_iter = types;
-	name_iter = names;
-	while(type_iter && name_iter)
-	{
-		*types_iter = *type_iter;
-		g_free(*names_iter);
-		*names_iter = g_strdup(*name_iter);
-		types_iter++;
-		type_iter++;
-		names_iter++;
-		name_iter++;
-	}
-}
-
-void
-lsq_archive_clear_entry_property_types(LSQArchive *archive)
-{
-#ifdef DEBUG
-	g_return_if_fail(archive);
-#endif
-	g_free(archive->entry_property_types);
-	g_free(archive->entry_property_names);
-	archive->entry_property_types = NULL;
-	archive->entry_property_names = NULL;
-	archive->entry_n_property = 0;
-}
-
-guint
-lsq_archive_n_entry_properties(LSQArchive *archive)
-{
-#ifdef DEBUG
-	g_return_val_if_fail(archive, 0);
-#endif
-	return archive->entry_n_property + LSQ_ARCHIVE_PROP_USER;
-}
-
-gchar *
-lsq_archive_get_filename(const LSQArchive *archive)
-{
-	return g_path_get_basename(archive->path);
-}
-
 const gchar *
-lsq_archive_get_path(const LSQArchive *archive)
-{
-	return archive->path;
-}
-
-const gchar *
 lsq_archive_get_mimetype(const LSQArchive *archive)
 {
 	return thunar_vfs_mime_info_get_name(archive->mime_info);
 }
 
+/*
+ * lsq_archive_exists:
+ *
+ * @archive: LSQArchive object
+ */
 gboolean
 lsq_archive_exists(const LSQArchive *archive)
 {
@@ -623,4 +483,5 @@
 #ifdef DEBUG
 	g_debug("COMMAND TERMINATED");
 #endif
+	lsq_archive_refreshed(archive);
 }

Modified: squeeze/trunk/libsqueeze/archive.h
===================================================================
--- squeeze/trunk/libsqueeze/archive.h	2007-03-23 02:34:02 UTC (rev 25263)
+++ squeeze/trunk/libsqueeze/archive.h	2007-03-23 10:04:17 UTC (rev 25264)
@@ -26,9 +26,6 @@
 	ThunarVfsPath      *path_info;
 	ThunarVfsInfo      *file_info;
 	ThunarVfsMimeInfo  *mime_info;
-	guint               entry_n_property;
-	GType              *entry_property_types;
-	gchar             **entry_property_names;
 	LSQArchiveEntry    *root_entry;
 	LSQArchiveCommand  *command;
 	struct {
@@ -37,7 +34,8 @@
 		guint64 n_files;
 		guint64 n_directories;
 	} props;
-	LSQCommandBuilder *builder;
+	LSQCommandBuilder  *builder;
+	LSQBuilderSettings *settings;
 	gchar *temp_dir;
 	GSList *monitor_list;
 	LSQArchiveIterPool *pool;

Added: squeeze/trunk/libsqueeze/builder-settings.c
===================================================================
--- squeeze/trunk/libsqueeze/builder-settings.c	                        (rev 0)
+++ squeeze/trunk/libsqueeze/builder-settings.c	2007-03-23 10:04:17 UTC (rev 25264)
@@ -0,0 +1,332 @@
+/* 
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or 
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Library General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  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 "builder-settings.h"
+
+static void
+lsq_builder_settings_class_init(LSQBuilderSettingsClass *);
+static void
+lsq_builder_settings_init(LSQBuilderSettings *builder);
+static void
+lsq_builder_settings_dispose(GObject *object);
+static void
+lsq_builder_settings_finalize(GObject *object);
+
+static GObjectClass *parent_class;
+
+GType
+lsq_builder_settings_get_type ()
+{
+	static GType lsq_builder_settings_type = 0;
+
+	if (!lsq_builder_settings_type)
+	{
+		static const GTypeInfo lsq_builder_settings_info = 
+		{
+			sizeof (LSQBuilderSettingsClass),
+			(GBaseInitFunc) NULL,
+			(GBaseFinalizeFunc) NULL,
+			(GClassInitFunc) lsq_builder_settings_class_init,
+			(GClassFinalizeFunc) NULL,
+			NULL,
+			sizeof (LSQBuilderSettings),
+			0,
+			(GInstanceInitFunc) lsq_builder_settings_init,
+			NULL
+		};
+
+		lsq_builder_settings_type = g_type_register_static (G_TYPE_OBJECT, "LSQBuilderSettings", &lsq_builder_settings_info, 0);
+	}
+	return lsq_builder_settings_type;
+}
+
+static void
+lsq_builder_settings_class_init(LSQBuilderSettingsClass *builder_settings_class)
+{
+	GObjectClass *object_class = G_OBJECT_CLASS(builder_settings_class);
+
+	object_class->dispose = lsq_builder_settings_dispose;
+	object_class->finalize = lsq_builder_settings_finalize;
+
+	parent_class = g_type_class_peek(G_TYPE_OBJECT); 
+
+}
+
+static void
+lsq_builder_settings_init(LSQBuilderSettings *builder_settings)
+{
+	builder_settings->n_properties = 0;
+	builder_settings->property_types = NULL;
+	builder_settings->property_names = NULL;
+}
+
+/**
+ * lsq_builder_settings_dispose:
+ *
+ * @object: LSQBuilderSettings object
+ *
+ */
+static void
+lsq_builder_settings_dispose(GObject *object)
+{
+
+	parent_class->dispose(object);
+}
+
+/**
+ * lsq_builder_settings_finalize:
+ *
+ * @object: LSQBuilderSettings object
+ *
+ */
+static void
+lsq_builder_settings_finalize(GObject *object)
+{
+	parent_class->finalize(object);
+}
+
+LSQBuilderSettings  *
+lsq_builder_settings_new()
+{
+	LSQBuilderSettings *settings;
+
+	settings = g_object_new(LSQ_TYPE_BUILDER_SETTINGS, NULL);
+
+	return settings;
+}
+
+guint
+lsq_builder_settings_get_n_properties(LSQBuilderSettings *settings)
+{
+	return settings->n_properties;
+}
+
+GType
+lsq_builder_settings_get_property_type(LSQBuilderSettings *settings, guint n)
+{
+	g_return_val_if_fail(settings, G_TYPE_INVALID);
+	g_return_val_if_fail(n < settings->n_properties, G_TYPE_INVALID);
+
+	return settings->property_types[n];
+}
+
+const gchar *
+lsq_builder_settings_get_property_name(LSQBuilderSettings *settings, guint n)
+{
+	g_return_val_if_fail(settings, G_TYPE_INVALID);
+	g_return_val_if_fail(n < settings->n_properties, G_TYPE_INVALID);
+
+	return settings->property_names[n];
+}
+
+/********************
+ * LSQArchive stuff *
+ ********************/
+
+/*
+static GType *
+lsq_archive_get_entry_property_types(LSQArchive *archive, guint size)
+{
+	GType *new_props;
+	gchar **new_names;
+	guint i;
+
+	if(archive->entry_n_property < size)
+	{
+		new_props = g_new0(GType, size);
+		new_names = g_new0(gchar*, size);
+		for(i = 0; i < archive->entry_n_property; ++i)
+		{
+			new_props[i] = archive->entry_property_types[i];
+			new_names[i] = archive->entry_property_names[i];
+		}
+		g_free(archive->entry_property_types);
+		g_free(archive->entry_property_names);
+		archive->entry_property_types = new_props;
+		archive->entry_property_names = new_names;
+		archive->entry_n_property = size;
+	}
+	return archive->entry_property_types;
+}
+
+static gchar **
+lsq_archive_get_entry_property_names(LSQArchive *archive, guint size)
+{
+	GType *new_types;
+	gchar **new_names;
+	guint i;
+
+	if(archive->entry_n_property < size)
+	{
+		new_types = g_new0(GType, size);
+		new_names = g_new0(gchar*, size);
+		for(i = 0; i < archive->entry_n_property; ++i)
+		{
+			new_types[i] = archive->entry_property_types[i];
+			new_names[i] = archive->entry_property_names[i];
+		}
+		g_free(archive->entry_property_types);
+		g_free(archive->entry_property_names);
+		archive->entry_property_types = new_types;
+		archive->entry_property_names = new_names;
+		archive->entry_n_property = size;
+	}
+	return archive->entry_property_names;
+}
+
+GType
+lsq_archive_get_entry_property_type(LSQArchive *archive, guint i)
+{
+#ifdef DEBUG // n_property + 2, filename and MIME
+	g_return_val_if_fail(archive, G_TYPE_INVALID);
+	g_return_val_if_fail(i < lsq_archive_n_entry_properties(archive), G_TYPE_INVALID);
+#endif
+
+	switch(i)
+	{
+		case LSQ_ARCHIVE_PROP_FILENAME:
+		case LSQ_ARCHIVE_PROP_MIME_TYPE:
+			return G_TYPE_STRING;
+		default:
+#ifdef DEBUG
+			g_return_val_if_fail(archive->entry_property_types, G_TYPE_INVALID);
+#endif
+			return archive->entry_property_types[i - LSQ_ARCHIVE_PROP_USER];
+	}
+}
+
+const gchar *
+lsq_archive_get_entry_property_name(LSQArchive *archive, guint i)
+{
+#ifdef DEBUG // n_property + 2, filename and MIME
+	g_return_val_if_fail(archive, G_TYPE_INVALID);
+	g_return_val_if_fail(i < lsq_archive_n_entry_properties(archive), G_TYPE_INVALID);
+#endif
+	
+	switch(i)
+	{
+		case LSQ_ARCHIVE_PROP_FILENAME:
+			return _("Name");
+		case LSQ_ARCHIVE_PROP_MIME_TYPE:
+			return _("Mime type");
+		default:
+#ifdef DEBUG
+			g_return_val_if_fail(archive->entry_property_names, G_TYPE_INVALID);
+#endif
+			return archive->entry_property_names[i - LSQ_ARCHIVE_PROP_USER];
+	}
+}
+
+void
+lsq_archive_set_entry_property_type(LSQArchive *archive, guint i, GType type, const gchar *name)
+{
+#ifdef DEBUG
+	g_return_if_fail(archive);
+	g_return_if_fail(i >= LSQ_ARCHIVE_PROP_USER);
+#endif
+
+	GType *types_iter = lsq_archive_get_entry_property_types(archive, i+1-LSQ_ARCHIVE_PROP_USER);
+	gchar **names_iter = lsq_archive_get_entry_property_names(archive, i+1-LSQ_ARCHIVE_PROP_USER);
+
+	types_iter[i-LSQ_ARCHIVE_PROP_USER] = type;
+	g_free(names_iter[i-LSQ_ARCHIVE_PROP_USER]);
+	names_iter[i-LSQ_ARCHIVE_PROP_USER] = g_strdup(name);
+}
+
+void
+lsq_archive_set_entry_property_types(LSQArchive *archive, ...)
+{
+#ifdef DEBUG
+	g_return_if_fail(archive);
+#endif
+	GType   type;
+	gchar  *name;
+	guint   size = 0;
+	va_list ap;
+	va_start(ap, archive);
+	while(va_arg(ap, GType) && va_arg(ap, gchar*))
+	{
+		size++;
+	}
+	va_end(ap);
+	GType *types_iter = lsq_archive_get_entry_property_types(archive, size);
+	gchar **names_iter = lsq_archive_get_entry_property_names(archive, size);
+	va_start(ap, archive);
+	while((type = va_arg(ap, GType)) && (name = va_arg(ap, gchar*)))
+	{
+		*types_iter = type;
+		g_free(*names_iter);
+		*names_iter = g_strdup(name);
+		types_iter++;
+		names_iter++;
+	}
+}
+
+void
+lsq_archive_set_entry_property_typesv(LSQArchive *archive, GType *types, const gchar **names)
+{
+#ifdef DEBUG
+	g_return_if_fail(archive);
+#endif
+	guint size = 0;
+	GType *type_iter = types;
+	const gchar **name_iter = names;
+	while(type_iter && name_iter)
+	{
+		size++;
+		type_iter++;
+		name_iter++;
+	}
+	GType *types_iter = lsq_archive_get_entry_property_types(archive, size);
+	gchar **names_iter = lsq_archive_get_entry_property_names(archive, size);
+	type_iter = types;
+	name_iter = names;
+	while(type_iter && name_iter)
+	{
+		*types_iter = *type_iter;
+		g_free(*names_iter);
+		*names_iter = g_strdup(*name_iter);
+		types_iter++;
+		type_iter++;
+		names_iter++;
+		name_iter++;
+	}
+}
+
+void
+lsq_archive_clear_entry_property_types(LSQArchive *archive)
+{
+#ifdef DEBUG
+	g_return_if_fail(archive);
+#endif
+	g_free(archive->entry_property_types);
+	g_free(archive->entry_property_names);
+	archive->entry_property_types = NULL;
+	archive->entry_property_names = NULL;
+	archive->entry_n_property = 0;
+}
+*/

Added: squeeze/trunk/libsqueeze/builder-settings.h
===================================================================
--- squeeze/trunk/libsqueeze/builder-settings.h	                        (rev 0)
+++ squeeze/trunk/libsqueeze/builder-settings.h	2007-03-23 10:04:17 UTC (rev 25264)
@@ -0,0 +1,47 @@
+#ifndef __LIBSQUEEZE_BUILDER_SETTINGS_H__
+#define __LIBSQUEEZE_BUILDER_SETTINGS_H__
+
+#define LSQ_TYPE_BUILDER_SETTINGS lsq_builder_settings_get_type()
+
+#define LSQ_BUILDER_SETTINGS(obj)         ( \
+		G_TYPE_CHECK_INSTANCE_CAST ((obj),    \
+			LSQ_TYPE_BUILDER_SETTINGS,      \
+			LSQBuilderSettings))
+
+#define LSQ_IS_BUILDER_SETTINGS(obj)      ( \
+		G_TYPE_CHECK_INSTANCE_TYPE ((obj),    \
+			LSQ_TYPE_BUILDER_SETTINGS))
+
+#define LSQ_BUILDER_SETTINGS_CLASS(klass) ( \
+		G_TYPE_CHECK_CLASS_CAST ((klass),     \
+			LSQ_TYPE_BUILDER_SETTINGS,      \
+			LSQBuilderSettingsClass))
+
+#define LSQ_IS_BUILDER_SETTINGS_CLASS(klass) ( \
+		G_TYPE_CHECK_CLASS_TYPE ((klass),        \
+			LSQ_TYPE_BUILDER_SETTINGS))
+
+typedef struct _LSQBuilderSettings LSQBuilderSettings;
+
+struct _LSQBuilderSettings
+{
+	GObject       parent;
+	guint         n_properties;
+	GType        *property_types;
+	gchar       **property_names;
+};
+
+typedef struct _LSQBuilderSettingsClass LSQBuilderSettingsClass;
+
+struct _LSQBuilderSettingsClass
+{
+	GObjectClass parent;
+};
+
+GType                lsq_builder_settings_get_type(void);
+LSQBuilderSettings  *lsq_builder_settings_new();
+guint                lsq_builder_settings_get_n_properties(LSQBuilderSettings *settings);
+GType                lsq_builder_settings_get_property_type(LSQBuilderSettings *settings, guint n);
+const gchar         *lsq_builder_settings_get_property_name(LSQBuilderSettings *settings, guint n);
+
+#endif /* __LIBSQUEEZE_BUILDER_SETTINGS_H__ */

Modified: squeeze/trunk/libsqueeze/command-builder-compr.c
===================================================================
--- squeeze/trunk/libsqueeze/command-builder-compr.c	2007-03-23 02:34:02 UTC (rev 25263)
+++ squeeze/trunk/libsqueeze/command-builder-compr.c	2007-03-23 10:04:17 UTC (rev 25264)
@@ -167,7 +167,7 @@
 {
 	LSQCommandBuilder *builder;
 
-	builder = g_object_new(lsq_command_builder_compr_get_type(), NULL);
+	builder = g_object_new(LSQ_TYPE_COMMAND_BUILDER_COMPR, NULL);
 
 	return builder;
 }

Modified: squeeze/trunk/libsqueeze/command-builder-gnu-tar.c
===================================================================
--- squeeze/trunk/libsqueeze/command-builder-gnu-tar.c	2007-03-23 02:34:02 UTC (rev 25263)
+++ squeeze/trunk/libsqueeze/command-builder-gnu-tar.c	2007-03-23 10:04:17 UTC (rev 25264)
@@ -374,7 +374,7 @@
 			return FALSE;
 	}
 
-	if(TRUE) /*LSQ_ARCHIVE_SUPPORT_GNU_TAR(support)->_view_rights*/
+	if(!TRUE) /*LSQ_ARCHIVE_SUPPORT_GNU_TAR(support)->_view_rights*/
 	{
 		line[10] = '\0';
 		props[i] = line;
@@ -383,7 +383,7 @@
 	for(n=13; n < linesize; ++n)
 		if(line[n] == ' ') break;
 
-	if(TRUE) /*LSQ_ARCHIVE_SUPPORT_GNU_TAR(support)->_view_owner*/
+	if(!TRUE) /*LSQ_ARCHIVE_SUPPORT_GNU_TAR(support)->_view_owner*/
 	{
 		line[n] = '\0';
 		props[i] = line+11;
@@ -398,7 +398,7 @@
 	for(; n < linesize; ++n)
 		if(line[n] == ' ') break;
 
-	if(TRUE) /*LSQ_ARCHIVE_SUPPORT_GNU_TAR(support)->_view_size*/
+	if(!TRUE) /*LSQ_ARCHIVE_SUPPORT_GNU_TAR(support)->_view_size*/
 	{
 		line[n] = '\0';
 		size = g_ascii_strtoull(line + a, NULL, 0);
@@ -411,7 +411,7 @@
 	for(; n < linesize; n++) // DATE
 		if(line[n] == ' ') break;
 
-	if(TRUE) /*LSQ_ARCHIVE_SUPPORT_GNU_TAR(support)->_view_date*/
+	if(!TRUE) /*LSQ_ARCHIVE_SUPPORT_GNU_TAR(support)->_view_date*/
 	{
 		line[n] = '\0';
 		props[i] = line + a;
@@ -422,7 +422,7 @@
 	for (; n < linesize; n++) // TIME
 		if (line[n] == ' ') break;
 
-	if(TRUE) /*LSQ_ARCHIVE_SUPPORT_GNU_TAR(support)->_view_time*/
+	if(!TRUE) /*LSQ_ARCHIVE_SUPPORT_GNU_TAR(support)->_view_time*/
 	{
 		line[n] = '\0';
 		props[i] = line + a;

Modified: squeeze/trunk/libsqueeze/command-builder.c
===================================================================
--- squeeze/trunk/libsqueeze/command-builder.c	2007-03-23 02:34:02 UTC (rev 25263)
+++ squeeze/trunk/libsqueeze/command-builder.c	2007-03-23 10:04:17 UTC (rev 25264)
@@ -33,6 +33,7 @@
 #include "spawn-command.h"
 #include "dbus-command.h"
 #include "command-builder.h"
+#include "builder-settings.h"
 
 static void
 lsq_command_builder_class_init(LSQCommandBuilderClass *);
@@ -89,6 +90,7 @@
 static void
 lsq_command_builder_init(LSQCommandBuilder *command_builder)
 {
+	command_builder->settings = lsq_builder_settings_new();
 	command_builder->build_open = lsq_command_builder_build_open;
 }
 
@@ -129,3 +131,10 @@
 
 	return macro;
 }
+
+LSQBuilderSettings *
+lsq_command_builder_get_settings(LSQCommandBuilder *builder)
+{
+	g_object_ref(builder->settings);
+	return builder->settings;
+}

Modified: squeeze/trunk/libsqueeze/command-builder.h
===================================================================
--- squeeze/trunk/libsqueeze/command-builder.h	2007-03-23 02:34:02 UTC (rev 25263)
+++ squeeze/trunk/libsqueeze/command-builder.h	2007-03-23 10:04:17 UTC (rev 25264)
@@ -29,11 +29,13 @@
 	gchar        *id;
 	gchar       **mime_types;
 
-	LSQArchiveCommand *(*build_add)    (LSQCommandBuilder *builder, LSQArchive *archive, GSList *files) G_GNUC_WARN_UNUSED_RESULT;
-	LSQArchiveCommand *(*build_extract)(LSQCommandBuilder *builder, LSQArchive *archive, const gchar *dest_path, GSList *files) G_GNUC_WARN_UNUSED_RESULT;
-	LSQArchiveCommand *(*build_remove) (LSQCommandBuilder *builder, LSQArchive *archive, GSList *file_iters) G_GNUC_WARN_UNUSED_RESULT;
-	LSQArchiveCommand *(*build_refresh)(LSQCommandBuilder *builder, LSQArchive *archive) G_GNUC_WARN_UNUSED_RESULT;
-	LSQArchiveCommand *(*build_open)   (LSQCommandBuilder *builder, LSQArchive *archive, GSList *files) G_GNUC_WARN_UNUSED_RESULT;
+	LSQBuilderSettings *settings;
+
+	LSQArchiveCommand *(*build_add)    (LSQCommandBuilder *, LSQArchive *, GSList *) G_GNUC_WARN_UNUSED_RESULT;
+	LSQArchiveCommand *(*build_extract)(LSQCommandBuilder *, LSQArchive *, const gchar *, GSList *) G_GNUC_WARN_UNUSED_RESULT;
+	LSQArchiveCommand *(*build_remove) (LSQCommandBuilder *, LSQArchive *, GSList *) G_GNUC_WARN_UNUSED_RESULT;
+	LSQArchiveCommand *(*build_refresh)(LSQCommandBuilder *, LSQArchive *) G_GNUC_WARN_UNUSED_RESULT;
+	LSQArchiveCommand *(*build_open)   (LSQCommandBuilder *, LSQArchive *, GSList *) G_GNUC_WARN_UNUSED_RESULT;
 };
 
 typedef struct _LSQCommandBuilderClass LSQCommandBuilderClass;
@@ -44,5 +46,6 @@
 };
 
 GType                lsq_command_builder_get_type(void);
+LSQBuilderSettings  *lsq_command_builder_get_settings(LSQCommandBuilder *);
 
 #endif /* __LIBSQUEEZE_COMMAND_BUILDER_H__ */

Modified: squeeze/trunk/libsqueeze/libsqueeze-module.h
===================================================================
--- squeeze/trunk/libsqueeze/libsqueeze-module.h	2007-03-23 02:34:02 UTC (rev 25263)
+++ squeeze/trunk/libsqueeze/libsqueeze-module.h	2007-03-23 10:04:17 UTC (rev 25264)
@@ -22,6 +22,7 @@
 #include <libsqueeze/macro-command.h>
 #include <libsqueeze/spawn-command.h>
 #include <libsqueeze/dbus-command.h>
+#include <libsqueeze/builder-settings.h>
 #include <libsqueeze/command-builder.h>
 #include <libsqueeze/internals.h>
 

Modified: squeeze/trunk/libsqueeze/libsqueeze-view.h
===================================================================
--- squeeze/trunk/libsqueeze/libsqueeze-view.h	2007-03-23 02:34:02 UTC (rev 25263)
+++ squeeze/trunk/libsqueeze/libsqueeze-view.h	2007-03-23 10:04:17 UTC (rev 25264)
@@ -35,9 +35,9 @@
 
 LSQArchiveIter     *lsq_archive_get_iter(LSQArchive *archive, const gchar *path);
 
-GType               lsq_archive_get_entry_property_type(LSQArchive *archive, guint n);
-const gchar        *lsq_archive_get_entry_property_name(LSQArchive *archive, guint n);
-guint               lsq_archive_n_entry_properties(LSQArchive *archive);
+GType               lsq_archive_get_entry_property_type(const LSQArchive *archive, guint n);
+const gchar        *lsq_archive_get_entry_property_name(const LSQArchive *archive, guint n);
+guint               lsq_archive_n_entry_properties(const LSQArchive *archive);
 
 gboolean        lsq_archive_can_stop(const LSQArchive *archive);
 gboolean        lsq_archive_stop(const LSQArchive *archive);



More information about the Xfce4-commits mailing list