[Xfce4-commits] r23929 - in xarchiver/branches/xarchiver-psybsd: . libxarchiver po src

Stephan Arts stephan at xfce.org
Wed Nov 22 09:16:40 CET 2006


Author: stephan
Date: 2006-11-22 08:16:37 +0000 (Wed, 22 Nov 2006)
New Revision: 23929

Modified:
   xarchiver/branches/xarchiver-psybsd/Makefile.am
   xarchiver/branches/xarchiver-psybsd/TODO
   xarchiver/branches/xarchiver-psybsd/configure.in.in
   xarchiver/branches/xarchiver-psybsd/libxarchiver/Makefile.am
   xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-gnu-tar.c
   xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-unrar.c
   xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-zip.c
   xarchiver/branches/xarchiver-psybsd/libxarchiver/libxarchiver.c
   xarchiver/branches/xarchiver-psybsd/po/nl.po
   xarchiver/branches/xarchiver-psybsd/src/add_dialog.c
   xarchiver/branches/xarchiver-psybsd/src/add_dialog.h
   xarchiver/branches/xarchiver-psybsd/src/notebook.c
Log:
Made strings for column-headers make more sense.
Fixed make-dist



Modified: xarchiver/branches/xarchiver-psybsd/Makefile.am
===================================================================
--- xarchiver/branches/xarchiver-psybsd/Makefile.am	2006-11-22 07:41:29 UTC (rev 23928)
+++ xarchiver/branches/xarchiver-psybsd/Makefile.am	2006-11-22 08:16:37 UTC (rev 23929)
@@ -20,6 +20,7 @@
 	intltool-merge.in \
 	intltool-update.in \
 	xarchiver.tap \
+	gettext.h \
 	$(desktop_in_files) \
 	$(wrapper_DATA)
 

Modified: xarchiver/branches/xarchiver-psybsd/TODO
===================================================================
--- xarchiver/branches/xarchiver-psybsd/TODO	2006-11-22 07:41:29 UTC (rev 23928)
+++ xarchiver/branches/xarchiver-psybsd/TODO	2006-11-22 08:16:37 UTC (rev 23929)
@@ -59,4 +59,14 @@
 	
 	Support CustomActionProperties (custom-actions which require additional arguments and configuration)
 
+	An Archive can only be opened once
+
+
+
   ... Complete TODO-file
+
+BUGS:
+
+	ArchiveStore gets deleted when close button is pressed, archive remains and sends signal when refreshed .
+
+	Archive does not get freed properly. (mem usage keeps growing when opening and closing same archive)

Modified: xarchiver/branches/xarchiver-psybsd/configure.in.in
===================================================================
--- xarchiver/branches/xarchiver-psybsd/configure.in.in	2006-11-22 07:41:29 UTC (rev 23928)
+++ xarchiver/branches/xarchiver-psybsd/configure.in.in	2006-11-22 08:16:37 UTC (rev 23929)
@@ -45,7 +45,7 @@
 
 dnl check for standard header files
 AC_PROG_CC
-AC_PROG_RANLIB
+AC_PROG_LIBTOOL
 AC_PROG_INTLTOOL([0.31], [no-xml])
 
 AC_HEADER_STDC

Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/Makefile.am
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/Makefile.am	2006-11-22 07:41:29 UTC (rev 23928)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/Makefile.am	2006-11-22 08:16:37 UTC (rev 23929)
@@ -1,8 +1,8 @@
-noinst_LIBRARIES = libxarchiver.a
+lib_LTLIBRARIES = libxarchiver-1.la
 
-libxarchiver_a_SOURCES =            \
-	libxarchiver.c libxarchiver.h     \
+libxarchiver_1_la_SOURCES =  \
 	internals.c internals.h \
+	libxarchiver.c libxarchiver.h \
 	mime.c mime.h \
 	slist.c slist.h \
 	archive.c archive.h \
@@ -10,10 +10,10 @@
 	archive-support-zip.c archive-support-zip.h \
 	archive-support-gnu-tar.c archive-support-gnu-tar.h
 
-libxarchiver_a_CFLAGS = \
+libxarchiver_1_la_CFLAGS = \
 	$(GLIB_CFLAGS)  \
 	$(THUNAR_VFS_CFLAGS)
-libxarchiver_a_LIBADD =
+libxarchiver_1_la_LIBADD =
 
 libxarchiver_includedir= \
 	$(includedir)/libxarchiver

Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-gnu-tar.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-gnu-tar.c	2006-11-22 07:41:29 UTC (rev 23928)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-gnu-tar.c	2006-11-22 08:16:37 UTC (rev 23929)
@@ -160,14 +160,14 @@
 
 	pspec = g_param_spec_boolean("extract-touch",
 		_("Touch files"),
-		"Touch files",
+		_("Touch files"),
 		FALSE,
 		G_PARAM_READWRITE);
 	g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_GNU_TAR_EXTRACT_TOUCH, pspec);
 
 	pspec = g_param_spec_uint("extract-strip",
 		_("Strip directories"),
-		"Strip directories",
+		_("Strip directories"),
 		0,
 		128,
 		0,
@@ -183,7 +183,7 @@
 
 	pspec = g_param_spec_string("add-mode",
 		_("Override permissions"),
-		"Override permissions",
+		_("Override permissions"),
 		"",
 		G_PARAM_READWRITE);
 	g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_GNU_TAR_ADD_MODE, pspec);
@@ -197,28 +197,28 @@
 
 	pspec = g_param_spec_boolean("view-rights",
 		_("Permissions"),
-		"View permissions",
+		_("View permissions"),
 		FALSE,
 		G_PARAM_READWRITE);
 	g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_GNU_TAR_VIEW_RIGHTS, pspec);
 
 	pspec = g_param_spec_boolean("view-owner",
 		_("Owner/Group"),
-		"View owner",
+		_("View owner/group"),
 		FALSE,
 		G_PARAM_READWRITE);
 	g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_GNU_TAR_VIEW_OWNER, pspec);
 
 	pspec = g_param_spec_boolean("view-date",
 		_("Date"),
-		"View date",
+		_("View date"),
 		FALSE,
 		G_PARAM_READWRITE);
 	g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_GNU_TAR_VIEW_DATE, pspec);
 
 	pspec = g_param_spec_boolean("view-time",
 		_("Time"),
-		"View time",
+		_("View time"),
 		TRUE,
 		G_PARAM_READWRITE);
 	g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_GNU_TAR_VIEW_TIME, pspec);

Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-unrar.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-unrar.c	2006-11-22 07:41:29 UTC (rev 23928)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-unrar.c	2006-11-22 08:16:37 UTC (rev 23929)
@@ -9,28 +9,64 @@
  *  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 Libunrary General Public License for more details.
+ *  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-object.h>
-#include <thunar-vfs/thunar-vfs.h>
+#include <gettext.h>
 
+#include "mime.h"
 #include "archive.h"
 #include "archive-support.h"
 #include "archive-support-unrar.h"
 
 #include "internals.h"
 
-void
+#define XA_TEST_ACTION_ICON "gtk-index"
+
+enum
+{
+	LXA_ARCHIVE_SUPPORT_UNRAR_EXTRACT_OVERWRITE = 1,
+	LXA_ARCHIVE_SUPPORT_UNRAR_ADD_COMPRESSION_LEVEL,
+	LXA_ARCHIVE_SUPPORT_UNRAR_PASSWORD,
+
+	LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_SIZE,
+	LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_COMPRESSED,
+	LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_DATE,
+	LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_TIME,
+	LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_RATIO,
+	LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_METHOD,
+	LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_CHECKSUM,
+	LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_VERSION
+};
+
+static void
 lxa_archive_support_unrar_init(LXAArchiveSupportUnrar *support);
-void
+static void
 lxa_archive_support_unrar_class_init(LXAArchiveSupportUnrarClass *supportclass);
 
+gboolean
+lxa_archive_support_unrar_refresh_parse_output(GIOChannel *ioc, GIOCondition cond, gpointer data);
+
+static void
+lxa_archive_support_unrar_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
+static void
+lxa_archive_support_unrar_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+
+static gint lxa_archive_support_unrar_add(LXAArchive *, GSList *);
+static gint lxa_archive_support_unrar_extract(LXAArchive *, gchar *, GSList *);
+static gint lxa_archive_support_unrar_remove(LXAArchive *, GSList *);
+static gint lxa_archive_support_unrar_refresh(LXAArchive *);
+
+static void lxa_archive_support_unrar_integrity_test(LXAArchiveSupport *, LXAArchive *, gpointer);
+
 GType
 lxa_archive_support_unrar_get_type ()
 {
@@ -56,45 +92,151 @@
 	return lxa_archive_support_unrar_type;
 }
 
-void
+static void
 lxa_archive_support_unrar_init(LXAArchiveSupportUnrar *support)
 {
 	LXAArchiveSupport *archive_support = LXA_ARCHIVE_SUPPORT(support);
+	LXACustomAction *custom_action = NULL;
 
 	archive_support->id = "Unrar";
 
-	lxa_archive_support_add_mime(archive_support, "application/x-rar");
+	lxa_archive_support_add_mime(archive_support, "application/unrar");
+	lxa_archive_support_add_mime(archive_support, "application/x-unrar");
 
+	archive_support->add = lxa_archive_support_unrar_add;
 	archive_support->extract = lxa_archive_support_unrar_extract;
 	archive_support->remove = lxa_archive_support_unrar_remove;
+	archive_support->refresh = lxa_archive_support_unrar_refresh;
+	
+	custom_action = lxa_custom_action_new("menu-test",
+	                                    _("Test"), 
+																			/* TRANSATORS: first line is short comment, after newline is long comment */
+																			_("Test archive integrity\nTest the integrity of the archive"),
+																			XA_TEST_ACTION_ICON,
+																			lxa_archive_support_unrar_integrity_test,
+																			archive_support,
+																			NULL);
 }
 
-void
+static void
 lxa_archive_support_unrar_class_init(LXAArchiveSupportUnrarClass *supportclass)
 {
-	/*
-	GObjectClass *gobject_class = G_OBJECT_CLASS (supportclass);
-	LXAArchiveSupportUnrarClass *klass = LXA_ARCHIVE_SUPPORT_UNRAR_CLASS (supportclass);
-	*/
+	GObjectClass *object_class = G_OBJECT_CLASS (supportclass);
+	GParamSpec *pspec = NULL;
+
+	object_class->set_property = lxa_archive_support_unrar_set_property;
+	object_class->get_property = lxa_archive_support_unrar_get_property;
+
+	pspec = g_param_spec_string("extract-password",
+		_("Password"),
+		_("Password"),
+		"",
+		G_PARAM_READWRITE);
+	g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_UNRAR_PASSWORD, pspec);
+
+	pspec = g_param_spec_boolean("extract-overwrite",
+		_("Overwrite existing files"),
+		_("Overwrite existing files on extraction"),
+		FALSE,
+		G_PARAM_READWRITE);
+	g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_UNRAR_EXTRACT_OVERWRITE, pspec);
+
+	pspec = g_param_spec_boolean("view-size",
+		_("Filesize"),
+		_("View filesize"),
+		FALSE,
+		G_PARAM_READWRITE);
+	g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_SIZE, pspec);
+
+	pspec = g_param_spec_boolean("view-time",
+		_("Time"),
+		_("View time"),
+		FALSE,
+		G_PARAM_READWRITE);
+	g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_TIME, pspec);
+
+	pspec = g_param_spec_boolean("view-date",
+		_("Date"),
+		_("View date"),
+		FALSE,
+		G_PARAM_READWRITE);
+	g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_DATE, pspec);
+
+	pspec = g_param_spec_boolean("view-ratio",
+		_("Ratio"),
+		_("View ratio"),
+		FALSE,
+		G_PARAM_READWRITE);
+	g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_RATIO, pspec);
+
+	pspec = g_param_spec_boolean("view-length",
+		_("Length"),
+		_("View length"),
+		FALSE,
+		G_PARAM_READWRITE);
+	g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_LENGTH, pspec);
+
+	pspec = g_param_spec_boolean("view-method",
+		_("Method"),
+		_("View method"),
+		FALSE,
+		G_PARAM_READWRITE);
+	g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_METHOD, pspec);
+
+	pspec = g_param_spec_boolean("view-crc32",
+		_("CRC-32"),
+		_("View CRC-32"),
+		FALSE,
+		G_PARAM_READWRITE);
+	g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_CRC_32, pspec);
 }
 
 LXAArchiveSupport*
 lxa_archive_support_unrar_new()
 {
-	LXAArchiveSupportUnrar *support = NULL;
+	LXAArchiveSupportUnrar *support;
 
-	gchar *abs_path = g_find_program_in_path("unrar");
-	if(abs_path)
-	{
-		support = g_object_new(LXA_TYPE_ARCHIVE_SUPPORT_UNRAR, NULL);
-		LXA_FREE(abs_path);
-	}
+	support = g_object_new(LXA_TYPE_ARCHIVE_SUPPORT_UNRAR,
+												 "view-length", TRUE,
+	                       "view-size", TRUE,
+												 "view-time", TRUE,
+												 "view-date", TRUE,
+												 "view-ratio", TRUE,
+												 "view-crc32", TRUE,
+												 "view-method", TRUE,
+												 NULL);
 	
 	return LXA_ARCHIVE_SUPPORT(support);
 }
 
+static gint
+lxa_archive_support_unrar_add(LXAArchive *archive, GSList *filenames)
+{
+	if(!LXA_IS_ARCHIVE_SUPPORT_UNRAR(archive->support))
+	{
+		g_critical("Support is not unrar");
+		return -1;
+	}
 
-gint
+	if(!lxa_archive_support_mime_supported(archive->support, lxa_mime_info_get_name(archive->mime_info)))
+	{
+		return 1;
+	}
+	else
+	{
+		gchar *command = NULL;
+		gchar *files = lxa_concat_filenames(filenames);
+		if(!g_strcasecmp((gchar *)lxa_mime_info_get_name(archive->mime_info), "application/x-unrar") || 
+		   !g_strcasecmp((gchar *)lxa_mime_info_get_name(archive->mime_info), "application/unrar"))
+		{
+			command = g_strconcat("unrar -r ", archive->path, " ", files, NULL);
+			lxa_execute(command, archive, NULL, NULL, NULL, NULL);
+		}
+	}
+	return 0;
+}
+
+static gint
 lxa_archive_support_unrar_extract(LXAArchive *archive, gchar *dest_path, GSList *filenames)
 {
 	if(!LXA_IS_ARCHIVE_SUPPORT_UNRAR(archive->support))
@@ -103,7 +245,7 @@
 		return -1;
 	}
 
-	if(!lxa_archive_support_mime_supported(archive->support, archive->mime))
+	if(!lxa_archive_support_mime_supported(archive->support, lxa_mime_info_get_name(archive->mime_info)))
 	{
 		return 1;
 	}
@@ -113,12 +255,13 @@
 		gchar *files = lxa_concat_filenames(filenames);
 		if(g_file_test(archive->path, G_FILE_TEST_EXISTS))
 		{
-			if(!g_strcasecmp((gchar *)archive->mime, "application/x-rar"))
+			if(!g_strcasecmp((gchar *)lxa_mime_info_get_name(archive->mime_info), "application/x-unrar") || 
+		     !g_strcasecmp((gchar *)lxa_mime_info_get_name(archive->mime_info), "application/unrar"))
 			{
-				/* TODO: Fix commandline issues
-				command = g_strconcat("unrar x -o+ -idp ", archive->path, " ", files, " ", dest_path, " ", NULL);
-				*/
+				command = g_strconcat("ununrar -o ", archive->path, " ", files, " -d ", dest_path, NULL);
+#ifdef DEBUG
 				g_debug("Extracting archive '%s' to '%s'", archive->path, dest_path);
+#endif /* DEBUG */
 				lxa_execute(command, archive, NULL, NULL, NULL, NULL);
 			}	
 		} else
@@ -127,7 +270,7 @@
 	return 0;
 }
 
-gint
+static gint
 lxa_archive_support_unrar_remove(LXAArchive *archive, GSList *filenames)
 {
 	if(!LXA_IS_ARCHIVE_SUPPORT_UNRAR(archive->support))
@@ -136,7 +279,7 @@
 		return -1;
 	}
 
-	if(!lxa_archive_support_mime_supported(archive->support, archive->mime))
+	if(!lxa_archive_support_mime_supported(archive->support, lxa_mime_info_get_name(archive->mime_info)))
 	{
 		return 1;
 	}
@@ -144,13 +287,290 @@
 	{
 		gchar *command = NULL;
 		gchar *files = lxa_concat_filenames(filenames);
-		if(!g_strcasecmp((gchar *)archive->mime, "application/x-rar"))
+		if(!g_strcasecmp((gchar *)lxa_mime_info_get_name(archive->mime_info), "application/x-unrar") || 
+		   !g_strcasecmp((gchar *)lxa_mime_info_get_name(archive->mime_info), "application/unrar"))
 		{
-			/* TODO: Fix commandline issues
 			command = g_strconcat("unrar -d ", archive->path, " ", files, NULL);
-			*/
 			lxa_execute(command, archive, NULL, NULL, NULL, NULL);
 		}
 	}
 	return 0;
 }
+
+static gint
+lxa_archive_support_unrar_refresh(LXAArchive *archive)
+{
+	guint i = 0;
+	if(!LXA_IS_ARCHIVE_SUPPORT_UNRAR(archive->support))
+	{
+		g_critical("Support is not Unrar");
+		return -1;
+	}
+
+	if(!lxa_archive_support_mime_supported(archive->support, lxa_mime_info_get_name(archive->mime_info)))
+	{
+		return 1;
+	}
+	else
+	{
+		i = LXA_ARCHIVE_PROP_USER;
+		if(LXA_ARCHIVE_SUPPORT_UNRAR(archive->support)->_view_length) {
+			lxa_archive_set_property_type(archive, i, G_TYPE_UINT64, _("Length"));
+			i++;
+		}
+		if(LXA_ARCHIVE_SUPPORT_UNRAR(archive->support)->_view_method) {
+			lxa_archive_set_property_type(archive, i, G_TYPE_STRING,_("Method"));
+			i++;
+		}
+		if(LXA_ARCHIVE_SUPPORT_UNRAR(archive->support)->_view_size) {
+			lxa_archive_set_property_type(archive, i, G_TYPE_UINT64, _("Size"));
+			i++;
+		}
+		if(LXA_ARCHIVE_SUPPORT_UNRAR(archive->support)->_view_ratio) {
+			lxa_archive_set_property_type(archive, i, G_TYPE_STRING, _("Ratio"));
+			i++;
+		}
+		if(LXA_ARCHIVE_SUPPORT_UNRAR(archive->support)->_view_date) {
+			lxa_archive_set_property_type(archive, i, G_TYPE_STRING, _("Date"));
+			i++;
+		}
+		if(LXA_ARCHIVE_SUPPORT_UNRAR(archive->support)->_view_time) {
+			lxa_archive_set_property_type(archive, i, G_TYPE_STRING, _("Time"));
+			i++;
+		}
+		if(LXA_ARCHIVE_SUPPORT_UNRAR(archive->support)->_view_crc_32) {
+			lxa_archive_set_property_type(archive, i, G_TYPE_STRING, _("CRC-32"));
+			i++;
+		}
+		gchar *command = g_strconcat("ununrar -lv -qq " , archive->path, NULL);
+		lxa_execute(command, archive, NULL, NULL, lxa_archive_support_unrar_refresh_parse_output, NULL);
+		LXA_FREE(command);
+	}
+	return 0;
+}
+
+gboolean
+lxa_archive_support_unrar_refresh_parse_output(GIOChannel *ioc, GIOCondition cond, gpointer data)
+{
+	GIOStatus status = G_IO_STATUS_NORMAL;
+	LXAArchive *archive = data;
+	gchar *line	= NULL;
+	LXAEntry *entry;
+
+	guint64 size;
+	guint64 length;
+	gpointer props[8]; 
+	gint n = 0, a = 0, i = 0, o = 0;
+	gchar *temp_filename = NULL;
+	gint linesize = 0;
+
+	if(!LXA_IS_ARCHIVE(archive))
+		return FALSE;
+
+
+	if(cond & (G_IO_PRI | G_IO_IN))
+	{
+		for(o = 0; o < 500; o++)
+		{
+			i = 0;
+
+			status = g_io_channel_read_line(ioc, &line, NULL,NULL,NULL);
+			if (line == NULL)
+ 				break; 
+			/* length, method , size, ratio, date, time, crc-32, filename*/
+			linesize = strlen(line);
+
+			for(n=0; n < linesize && line[n] == ' '; n++);
+			a = n;
+			for(; n < linesize && line[n] != ' '; n++);
+
+			if(LXA_ARCHIVE_SUPPORT_UNRAR(archive->support)->_view_length)
+			{
+				line[n]='\0';
+				length = g_ascii_strtoull(line + a, NULL, 0);
+				props[i] = &length;
+				i++;
+			}
+			n++;
+
+			for(; n < linesize && line[n] == ' '; n++);
+			a = n;
+			for(; n < linesize && line[n] != ' '; n++);
+
+			if(LXA_ARCHIVE_SUPPORT_UNRAR(archive->support)->_view_method)
+			{
+				line[n] = '\0';
+				props[i] = line + a;
+				i++;
+			}
+			n++;
+
+			for(; n < linesize && line[n] == ' '; n++);
+			a = n;
+			for(; n < linesize && line[n] != ' '; n++);
+
+			if(LXA_ARCHIVE_SUPPORT_UNRAR(archive->support)->_view_size)
+			{
+				line[n]='\0';
+				size = g_ascii_strtoull(line + a, NULL, 0);
+				props[i] = &size;
+				i++;
+			}
+			n++;
+
+			for(; n < linesize && line[n] == ' '; n++);
+			a = n;
+			for(; n < linesize && line[n] != ' '; n++);
+
+			if(LXA_ARCHIVE_SUPPORT_UNRAR(archive->support)->_view_ratio)
+			{
+				line[n] = '\0';
+				props[i] = line + a;
+				i++;
+			}
+			n++;
+
+			for(; n < linesize && line[n] == ' '; n++);
+			a = n;
+			for(; n < linesize && line[n] != ' '; n++);
+
+			if(LXA_ARCHIVE_SUPPORT_UNRAR(archive->support)->_view_date)
+			{
+				line[n] = '\0';
+				props[i] = line + a;
+				i++;
+			}
+			n++;
+
+			for(; n < linesize && line[n] == ' '; n++);
+			a = n;
+			for(; n < linesize && line[n] != ' '; n++);
+
+			if(LXA_ARCHIVE_SUPPORT_UNRAR(archive->support)->_view_time)
+			{
+				line[n] = '\0';
+				props[i] = line + a;
+				i++;
+			}
+			n++;
+
+			for(; n < linesize && line[n] == ' '; n++);
+			a = n;
+			for(; n < linesize && line[n] != ' '; n++);
+
+			if(LXA_ARCHIVE_SUPPORT_UNRAR(archive->support)->_view_crc_32)
+			{
+				line[n] = '\0';
+				props[i] = line + a;
+				i++;
+			}
+			n++;
+
+			for(; n < linesize && line[n] == ' '; n++);
+			temp_filename = g_strchomp(line+n); 
+
+			entry = lxa_archive_add_file(archive, temp_filename);
+			lxa_archive_iter_set_propsv(archive, entry, (gconstpointer*)props);
+			LXA_FREE(line);
+		}
+	}
+	if(cond & (G_IO_ERR | G_IO_HUP | G_IO_NVAL) )
+	{
+#ifdef DEBUG
+		g_debug("shutting down ioc");
+#endif
+		g_io_channel_shutdown ( ioc,TRUE,NULL );
+		g_io_channel_unref (ioc);
+		lxa_archive_set_status(archive, LXA_ARCHIVESTATUS_IDLE);
+		return FALSE; 
+	}
+	return TRUE;
+}
+
+static void
+lxa_archive_support_unrar_integrity_test(LXAArchiveSupport *support, LXAArchive *archive, gpointer user_data)
+{
+#ifdef DEBUG
+	g_debug("Custom action %s called", __FUNCTION__);
+#endif /* DEBUG */
+}
+
+static void
+lxa_archive_support_unrar_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+{
+	switch(prop_id)
+	{
+		case LXA_ARCHIVE_SUPPORT_UNRAR_EXTRACT_OVERWRITE:
+			g_value_set_boolean(value, LXA_ARCHIVE_SUPPORT_UNRAR(object)->_extr_overwrite);
+			break;
+		case LXA_ARCHIVE_SUPPORT_UNRAR_PASSWORD:
+			g_value_set_string (value, LXA_ARCHIVE_SUPPORT_UNRAR(object)->_extr_password);
+			break;
+
+		case LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_SIZE:
+			g_value_set_boolean(value, LXA_ARCHIVE_SUPPORT_UNRAR(object)->_view_size);
+			break;
+		case LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_DATE:
+			g_value_set_boolean(value, LXA_ARCHIVE_SUPPORT_UNRAR(object)->_view_date);
+			break;
+		case LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_TIME:
+			g_value_set_boolean(value, LXA_ARCHIVE_SUPPORT_UNRAR(object)->_view_time);
+			break;
+		case LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_RATIO:
+			g_value_set_boolean(value, LXA_ARCHIVE_SUPPORT_UNRAR(object)->_view_ratio);
+			break;
+		case LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_LENGTH:
+			g_value_set_boolean(value, LXA_ARCHIVE_SUPPORT_UNRAR(object)->_view_length);
+			break;
+		case LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_METHOD:
+			g_value_set_boolean(value, LXA_ARCHIVE_SUPPORT_UNRAR(object)->_view_method);
+			break;
+		case LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_CRC_32:
+			g_value_set_boolean(value, LXA_ARCHIVE_SUPPORT_UNRAR(object)->_view_crc_32);
+			break;
+
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID(object,prop_id,pspec);
+			break;
+	}
+}
+
+static void
+lxa_archive_support_unrar_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+{
+	switch(prop_id)
+	{
+		case LXA_ARCHIVE_SUPPORT_UNRAR_EXTRACT_OVERWRITE:
+			LXA_ARCHIVE_SUPPORT_UNRAR(object)->_extr_overwrite = g_value_get_boolean(value);
+			break;
+		case LXA_ARCHIVE_SUPPORT_UNRAR_PASSWORD:
+			LXA_ARCHIVE_SUPPORT_UNRAR(object)->_extr_password = (gchar *)g_value_get_string(value);
+			break;
+
+		case LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_SIZE:
+			LXA_ARCHIVE_SUPPORT_UNRAR(object)->_view_size = g_value_get_boolean(value);
+			break;
+		case LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_TIME:
+			LXA_ARCHIVE_SUPPORT_UNRAR(object)->_view_time = g_value_get_boolean(value);
+			break;
+		case LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_DATE:
+			LXA_ARCHIVE_SUPPORT_UNRAR(object)->_view_date = g_value_get_boolean(value);
+			break;
+		case LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_RATIO:
+			LXA_ARCHIVE_SUPPORT_UNRAR(object)->_view_ratio = g_value_get_boolean(value);
+			break;
+		case LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_LENGTH:
+			LXA_ARCHIVE_SUPPORT_UNRAR(object)->_view_length = g_value_get_boolean(value);
+			break;
+		case LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_METHOD:
+			LXA_ARCHIVE_SUPPORT_UNRAR(object)->_view_method = g_value_get_boolean(value);
+			break;
+		case LXA_ARCHIVE_SUPPORT_UNRAR_VIEW_CRC_32:
+			LXA_ARCHIVE_SUPPORT_UNRAR(object)->_view_crc_32 = g_value_get_boolean(value);
+			break;
+
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID(object,prop_id,pspec);
+			break;
+	}
+}

Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-zip.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-zip.c	2006-11-22 07:41:29 UTC (rev 23928)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-zip.c	2006-11-22 08:16:37 UTC (rev 23929)
@@ -108,7 +108,8 @@
 	archive_support->refresh = lxa_archive_support_zip_refresh;
 	
 	custom_action = lxa_custom_action_new("menu-test",
-	                                    _("Test"),
+	                                    _("Test"), 
+																			/* TRANSATORS: first line is short comment, after newline is long comment */
 																			_("Test archive integrity\nTest the integrity of the archive"),
 																			XA_TEST_ACTION_ICON,
 																			lxa_archive_support_zip_integrity_test,
@@ -140,51 +141,51 @@
 		G_PARAM_READWRITE);
 	g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_ZIP_EXTRACT_OVERWRITE, pspec);
 
-	pspec = g_param_spec_boolean("view-size",
-		"View file-size",
-		"View file-size",
+	pspec = g_param_spec_boolean("view-compressed-size",
+		_("Compressed Filesize"),
+		_("View compressed filesize"),
 		FALSE,
 		G_PARAM_READWRITE);
 	g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_ZIP_VIEW_SIZE, pspec);
 
 	pspec = g_param_spec_boolean("view-time",
-		"View time",
-		"View time",
+		_("Time"),
+		_("View time"),
 		FALSE,
 		G_PARAM_READWRITE);
 	g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_ZIP_VIEW_TIME, pspec);
 
 	pspec = g_param_spec_boolean("view-date",
-		"View date",
-		"View date",
+		_("Date"),
+		_("View date"),
 		FALSE,
 		G_PARAM_READWRITE);
 	g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_ZIP_VIEW_DATE, pspec);
 
 	pspec = g_param_spec_boolean("view-ratio",
-		"View ratio",
-		"View ratio",
+		_("Ratio"),
+		_("View ratio"),
 		FALSE,
 		G_PARAM_READWRITE);
 	g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_ZIP_VIEW_RATIO, pspec);
 
-	pspec = g_param_spec_boolean("view-length",
-		"View length",
-		"View length",
+	pspec = g_param_spec_boolean("view-compressed-size",
+		_("Filesize"),
+		_("View filesize"),
 		FALSE,
 		G_PARAM_READWRITE);
 	g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_ZIP_VIEW_LENGTH, pspec);
 
 	pspec = g_param_spec_boolean("view-method",
-		"View method",
-		"View method",
+		_("Method"),
+		_("View method"),
 		FALSE,
 		G_PARAM_READWRITE);
 	g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_ZIP_VIEW_METHOD, pspec);
 
 	pspec = g_param_spec_boolean("view-crc32",
-		"View CRC-32",
-		"View CRC-32",
+		_("Checksum"),
+		_("View Checksum"),
 		FALSE,
 		G_PARAM_READWRITE);
 	g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_ZIP_VIEW_CRC_32, pspec);
@@ -196,8 +197,8 @@
 	LXAArchiveSupportZip *support;
 
 	support = g_object_new(LXA_TYPE_ARCHIVE_SUPPORT_ZIP,
-												 "view-length", TRUE,
-	                       "view-size", TRUE,
+												 "view-uncompressed-size", TRUE,
+	                       "view-compressed-size", TRUE,
 												 "view-time", TRUE,
 												 "view-date", TRUE,
 												 "view-ratio", TRUE,
@@ -258,7 +259,9 @@
 		     !g_strcasecmp((gchar *)lxa_mime_info_get_name(archive->mime_info), "application/zip"))
 			{
 				command = g_strconcat("unzip -o ", archive->path, " ", files, " -d ", dest_path, NULL);
+#ifdef DEBUG
 				g_debug("Extracting archive '%s' to '%s'", archive->path, dest_path);
+#endif /* DEBUG */
 				lxa_execute(command, archive, NULL, NULL, NULL, NULL);
 			}	
 		} else
@@ -312,7 +315,7 @@
 	{
 		i = LXA_ARCHIVE_PROP_USER;
 		if(LXA_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_length) {
-			lxa_archive_set_property_type(archive, i, G_TYPE_UINT64, _("Length"));
+			lxa_archive_set_property_type(archive, i, G_TYPE_UINT64, _("Filesize"));
 			i++;
 		}
 		if(LXA_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_method) {
@@ -320,7 +323,7 @@
 			i++;
 		}
 		if(LXA_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_size) {
-			lxa_archive_set_property_type(archive, i, G_TYPE_UINT64, _("Size"));
+			lxa_archive_set_property_type(archive, i, G_TYPE_UINT64, _("Compressed Filesize"));
 			i++;
 		}
 		if(LXA_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_ratio) {
@@ -336,7 +339,7 @@
 			i++;
 		}
 		if(LXA_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_crc_32) {
-			lxa_archive_set_property_type(archive, i, G_TYPE_STRING, _("CRC-32"));
+			lxa_archive_set_property_type(archive, i, G_TYPE_STRING, _("Checksum"));
 			i++;
 		}
 		gchar *command = g_strconcat("unzip -lv -qq " , archive->path, NULL);
@@ -487,7 +490,9 @@
 static void
 lxa_archive_support_zip_integrity_test(LXAArchiveSupport *support, LXAArchive *archive, gpointer user_data)
 {
+#ifdef DEBUG
 	g_debug("Custom action %s called", __FUNCTION__);
+#endif /* DEBUG */
 }
 
 static void

Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/libxarchiver.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/libxarchiver.c	2006-11-22 07:41:29 UTC (rev 23928)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/libxarchiver.c	2006-11-22 08:16:37 UTC (rev 23929)
@@ -25,8 +25,6 @@
 
 #include "libxarchiver.h"
 #include "libxarchiver/archive-support-zip.h"
-#include "libxarchiver/archive-support-rar.h"
-#include "libxarchiver/archive-support-unrar.h"
 #include "libxarchiver/archive-support-gnu-tar.h"
 
 #include "internals.h"

Modified: xarchiver/branches/xarchiver-psybsd/po/nl.po
===================================================================
--- xarchiver/branches/xarchiver-psybsd/po/nl.po	2006-11-22 07:41:29 UTC (rev 23928)
+++ xarchiver/branches/xarchiver-psybsd/po/nl.po	2006-11-22 08:16:37 UTC (rev 23929)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: xarchiver 0.3.9psybsd\n"
 "Report-Msgid-Bugs-To: psybsd at gmail.com\n"
-"POT-Creation-Date: 2006-11-20 18:28+0100\n"
+"POT-Creation-Date: 2006-11-22 08:52+0100\n"
 "PO-Revision-Date: 2006-07-20 16:36+0200\n"
 "Last-Translator: Stephan Arts <psybsd at gmail.com>\n"
 "Language-Team: Dutch <vertaling at vrijschrift.org>\n"
@@ -25,22 +25,25 @@
 msgstr "Mime type"
 
 #: ../libxarchiver/archive-support-gnu-tar.c:155
-#: ../libxarchiver/archive-support-zip.c:118
+#: ../libxarchiver/archive-support-zip.c:137
 msgid "Overwrite existing files"
 msgstr "Bestaande bestanden overschrijven"
 
 #: ../libxarchiver/archive-support-gnu-tar.c:156
-#: ../libxarchiver/archive-support-zip.c:119
+#: ../libxarchiver/archive-support-zip.c:138
 msgid "Overwrite existing files on extraction"
 msgstr "Bestaande bestanden overschrijven tijdens uitpakken"
 
 #: ../libxarchiver/archive-support-gnu-tar.c:162
+#: ../libxarchiver/archive-support-gnu-tar.c:163
 msgid "Touch files"
 msgstr "Bestanden aanraken"
 
 #: ../libxarchiver/archive-support-gnu-tar.c:169
+#: ../libxarchiver/archive-support-gnu-tar.c:170
+#, fuzzy
 msgid "Strip directories"
-msgstr ""
+msgstr "Mappen strippen"
 
 #: ../libxarchiver/archive-support-gnu-tar.c:178
 msgid "Keep newer files"
@@ -51,15 +54,19 @@
 msgstr "Overschrijf geen bestanden die nieuwer zijn dan die in het archief"
 
 #: ../libxarchiver/archive-support-gnu-tar.c:185
+#: ../libxarchiver/archive-support-gnu-tar.c:186
 msgid "Override permissions"
 msgstr "Overschrijf rechten"
 
 #: ../libxarchiver/archive-support-gnu-tar.c:192
 #: ../libxarchiver/archive-support-gnu-tar.c:478
+#: ../libxarchiver/archive-support-zip.c:172
+#: ../libxarchiver/archive-support-zip.c:317
 msgid "Filesize"
 msgstr "Bestandsgrootte"
 
 #: ../libxarchiver/archive-support-gnu-tar.c:193
+#: ../libxarchiver/archive-support-zip.c:173
 msgid "View filesize"
 msgstr "Bestandsgrootte weergeven"
 
@@ -68,69 +75,118 @@
 msgid "Permissions"
 msgstr "Rechten"
 
+#: ../libxarchiver/archive-support-gnu-tar.c:200
+msgid "View permissions"
+msgstr "Rechten tonen"
+
 #: ../libxarchiver/archive-support-gnu-tar.c:206
 #: ../libxarchiver/archive-support-gnu-tar.c:474
 msgid "Owner/Group"
 msgstr "Eigenaar/Groep"
 
+#: ../libxarchiver/archive-support-gnu-tar.c:207
+msgid "View owner/group"
+msgstr "Eigenaar/Groep tonen"
+
 #: ../libxarchiver/archive-support-gnu-tar.c:213
 #: ../libxarchiver/archive-support-gnu-tar.c:482
-#: ../libxarchiver/archive-support-zip.c:313
+#: ../libxarchiver/archive-support-zip.c:158
+#: ../libxarchiver/archive-support-zip.c:333
 msgid "Date"
 msgstr "Datum"
 
+#: ../libxarchiver/archive-support-gnu-tar.c:214
+#: ../libxarchiver/archive-support-zip.c:159
+msgid "View date"
+msgstr "Datum tonen"
+
 #: ../libxarchiver/archive-support-gnu-tar.c:220
 #: ../libxarchiver/archive-support-gnu-tar.c:486
-#: ../libxarchiver/archive-support-zip.c:317
+#: ../libxarchiver/archive-support-zip.c:151
+#: ../libxarchiver/archive-support-zip.c:337
 msgid "Time"
 msgstr "Tijd"
 
+#: ../libxarchiver/archive-support-gnu-tar.c:221
+#: ../libxarchiver/archive-support-zip.c:152
+msgid "View time"
+msgstr "Tijd tonen"
+
 #: ../libxarchiver/archive-support-zip.c:111
-#: ../libxarchiver/archive-support-zip.c:112
+msgid "Test"
+msgstr "Testen"
+
+#. TRANSATORS: first line is short comment, after newline is long comment
+#: ../libxarchiver/archive-support-zip.c:113
+msgid ""
+"Test archive integrity\n"
+"Test the integrity of the archive"
+msgstr ""
+"Test de archief-integriteit\n"
+"Test de integriteit van het archief"
+
+#: ../libxarchiver/archive-support-zip.c:130
+#: ../libxarchiver/archive-support-zip.c:131
 msgid "Password"
 msgstr "Wachtwoord"
 
-#: ../libxarchiver/archive-support-zip.c:297
-msgid "Length"
-msgstr "Lengte"
+#: ../libxarchiver/archive-support-zip.c:144
+#: ../libxarchiver/archive-support-zip.c:325
+msgid "Compressed Filesize"
+msgstr "Gecomprimeerde Bestandsgrootte"
 
-#: ../libxarchiver/archive-support-zip.c:301
-msgid "Method"
-msgstr "Methode"
+#: ../libxarchiver/archive-support-zip.c:145
+msgid "View compressed filesize"
+msgstr "Toon gecomprimeerde bestandsgrootte"
 
-#: ../libxarchiver/archive-support-zip.c:305
-msgid "Size"
-msgstr "Grootte"
-
-#: ../libxarchiver/archive-support-zip.c:309
+#: ../libxarchiver/archive-support-zip.c:165
+#: ../libxarchiver/archive-support-zip.c:329
 msgid "Ratio"
 msgstr "Verhouding"
 
+#: ../libxarchiver/archive-support-zip.c:166
+msgid "View ratio"
+msgstr "Verhouding tonen"
+
+#: ../libxarchiver/archive-support-zip.c:179
 #: ../libxarchiver/archive-support-zip.c:321
-msgid "CRC-32"
-msgstr "CRC-32"
+msgid "Method"
+msgstr "Methode"
 
-#: ../src/main.c:52
+#: ../libxarchiver/archive-support-zip.c:180
+msgid "View method"
+msgstr "Methode tonen"
+
+#: ../libxarchiver/archive-support-zip.c:186
+#: ../libxarchiver/archive-support-zip.c:341
+msgid "Checksum"
+msgstr "Checksom"
+
+#: ../libxarchiver/archive-support-zip.c:187
+msgid "View Checksum"
+msgstr "Toon Checksom"
+
+#: ../src/main.c:53
 msgid "[destination path]"
 msgstr "[bestemmings map]"
 
-#: ../src/main.c:60
+#: ../src/main.c:61
 msgid "[archive path] [file1] [file2] ... [fileN]"
 msgstr "[archief map] [bestand1] [bestand2] ... [bestandN]"
 
-#: ../src/main.c:64
+#: ../src/main.c:65
 msgid "[file1] [file2] ... [fileN]"
 msgstr "[bestand1] [bestand2] ... [bestandN]"
 
-#: ../src/main.c:67
+#: ../src/main.c:68
 msgid "Version information"
 msgstr "Versie informatie"
 
-#: ../src/main.c:118
+#: ../src/main.c:120
 msgid "[archive name]"
 msgstr "[archief naam]"
 
-#: ../src/main.c:122
+#: ../src/main.c:124
 #, c-format
 msgid ""
 "%s: %s\n"
@@ -141,70 +197,70 @@
 "opties.\n"
 
 #. File menu
-#: ../src/main_window.c:210
+#: ../src/main_window.c:242
 msgid "_File"
 msgstr "_Bestand"
 
-#. Action menu
-#: ../src/main_window.c:241
+#. Action menu: ref all the childs
+#: ../src/main_window.c:273
 msgid "_Action"
 msgstr "_Actie"
 
-#: ../src/main_window.c:246
+#: ../src/main_window.c:278
 msgid "_Add"
 msgstr "_Toevoegen"
 
-#: ../src/main_window.c:252
+#: ../src/main_window.c:284
 msgid "_Extract"
 msgstr "_Uitpakken"
 
 #. View menu
-#: ../src/main_window.c:266
+#: ../src/main_window.c:298
 msgid "_View"
 msgstr "B_eeld"
 
-#: ../src/main_window.c:270
+#: ../src/main_window.c:302
 msgid "_Location Selector"
 msgstr "_Locatie Selecteerder"
 
-#: ../src/main_window.c:275
+#: ../src/main_window.c:307
 msgid "Internal style"
 msgstr "Interne stijl"
 
-#: ../src/main_window.c:279
+#: ../src/main_window.c:311
 msgid "Toolbar style"
 msgstr "Toolbar stijl"
 
-#: ../src/main_window.c:284
+#: ../src/main_window.c:316
 msgid "Pathbar style"
 msgstr "Padbar stijl"
 
-#: ../src/main_window.c:311
+#: ../src/main_window.c:343
 msgid "Add"
 msgstr "Toevoegen"
 
-#: ../src/main_window.c:315 ../src/main_window.c:714
+#: ../src/main_window.c:347 ../src/main_window.c:780
 #: ../src/extract_dialog.c:102
 msgid "Extract"
 msgstr "Uitpakken"
 
-#: ../src/main_window.c:523
+#: ../src/main_window.c:586
 msgid "Open archive"
 msgstr "Archief openen"
 
-#: ../src/main_window.c:713
+#: ../src/main_window.c:779
 msgid "Which action do you want to perform on the selected file(s)?"
 msgstr "Welke actie wil je uitvoeren op de geselecteerde bestand(en)?"
 
-#: ../src/main_window.c:714
+#: ../src/main_window.c:780
 msgid "View"
 msgstr "Weergeven"
 
-#: ../src/main_window.c:777
+#: ../src/main_window.c:843
 msgid "Failed to open file"
 msgstr "Het openen van een bestand is mislukt"
 
-#: ../src/main_window.c:778
+#: ../src/main_window.c:844
 #, c-format
 msgid ""
 "'%s'\n"
@@ -217,15 +273,23 @@
 msgid "Create new archive"
 msgstr "Maak nieuw archief"
 
-#: ../src/add_dialog.c:67
+#: ../src/add_dialog.c:69
 msgid "Files and directories to add"
-msgstr ""
+msgstr "Bestanden en mappen om toe te voegen"
 
-#: ../src/add_dialog.c:68
+#: ../src/add_dialog.c:70
 msgid "Options:"
 msgstr "Opties:"
 
-#: ../src/add_dialog.c:97
+#: ../src/add_dialog.c:101
+msgid "Files"
+msgstr "Bestanden"
+
+#: ../src/add_dialog.c:105
+msgid "Directories"
+msgstr "Mappen"
+
+#: ../src/add_dialog.c:138
 msgid "Add file(s) to archive"
 msgstr "Bestand(en) toevoegen aan archief"
 

Modified: xarchiver/branches/xarchiver-psybsd/src/add_dialog.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/add_dialog.c	2006-11-22 07:41:29 UTC (rev 23928)
+++ xarchiver/branches/xarchiver-psybsd/src/add_dialog.c	2006-11-22 08:16:37 UTC (rev 23929)
@@ -64,17 +64,58 @@
 static void
 xa_add_dialog_init(XAAddDialog *dialog)
 {
+	GtkTreeViewColumn *column;
+	GtkCellRenderer *renderer;
 	GtkWidget *frame = gtk_frame_new(_("Files and directories to add"));
 	dialog->optionframe = gtk_frame_new(_("Options:"));
-	GtkWidget *vbox = gtk_vbox_new(FALSE,0);
-	GtkWidget *scrolled_window = gtk_scrolled_window_new(NULL, NULL);
-	gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled_window), GTK_SHADOW_IN);
+	GtkWidget *vbox = gtk_vbox_new(FALSE,5);
+	GtkWidget *hbox = gtk_hbox_new(FALSE, 3);
+	GtkWidget *radio_vbox = gtk_vbox_new(FALSE,0);
+	dialog->scrolled_window = gtk_scrolled_window_new(NULL, NULL);
+	gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(dialog->scrolled_window), GTK_SHADOW_IN);
 
-	gtk_container_add(GTK_CONTAINER(vbox), scrolled_window);
+	gtk_container_add(GTK_CONTAINER(vbox), dialog->scrolled_window);
 	gtk_container_add(GTK_CONTAINER(frame), vbox);
 	gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
 
+	dialog->file_liststore = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
+
+	dialog->file_treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(dialog->file_liststore));
+	column = gtk_tree_view_column_new();
+
+	renderer = gtk_cell_renderer_pixbuf_new();
+	gtk_tree_view_column_pack_start (column, renderer, FALSE);
+	gtk_tree_view_column_add_attribute (column, renderer, "stock-id", 0);
+
+	renderer = gtk_cell_renderer_text_new();
+	gtk_tree_view_column_pack_start(column, renderer, TRUE);
+	gtk_tree_view_column_add_attribute(column, renderer, "text", 1);
+
+	gtk_tree_view_append_column(GTK_TREE_VIEW(dialog->file_treeview), column);
+
+	gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (dialog->file_treeview), FALSE);
+	gtk_container_add (GTK_CONTAINER (dialog->scrolled_window), dialog->file_treeview);
+
+	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
+
+	dialog->files_radio = gtk_radio_button_new_with_mnemonic (NULL, _("Files"));
+	gtk_box_pack_start (GTK_BOX (radio_vbox), dialog->files_radio, FALSE, FALSE, 0);
+	gtk_button_set_focus_on_click (GTK_BUTTON (dialog->files_radio), FALSE);
+
+	dialog->dirs_radio = gtk_radio_button_new_with_mnemonic_from_widget (GTK_RADIO_BUTTON(dialog->files_radio), _("Directories"));
+	gtk_box_pack_start (GTK_BOX (radio_vbox), dialog->dirs_radio, FALSE, FALSE, 0);
+	gtk_button_set_focus_on_click (GTK_BUTTON (dialog->dirs_radio), FALSE);
+
+	gtk_box_pack_start(GTK_BOX(hbox), radio_vbox, FALSE, FALSE, 5);
+	dialog->remove = gtk_button_new_from_stock(GTK_STOCK_REMOVE);
+	dialog->add    = gtk_button_new_from_stock(GTK_STOCK_ADD);
+
+	gtk_box_pack_end(GTK_BOX(hbox), dialog->add, FALSE, FALSE, 0);
+	gtk_box_pack_end(GTK_BOX(hbox), dialog->remove, FALSE, FALSE, 0);
+
+	gtk_widget_show_all(dialog->scrolled_window);
 	gtk_widget_show_all(frame);
+	gtk_widget_show_all(hbox);
 	gtk_widget_show_all(dialog->optionframe);
 	gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), frame, TRUE, TRUE, 0);
 	gtk_box_pack_end(GTK_BOX(GTK_DIALOG(dialog)->vbox), dialog->optionframe, TRUE, TRUE, 0);
@@ -112,7 +153,7 @@
 		}
 	}
 
-	gtk_widget_set_size_request(GTK_WIDGET(dialog), 600,400);
+	gtk_widget_set_size_request(GTK_WIDGET(dialog), 400,300);
 
 	gtk_widget_show_all(optionbox);
 	return (GtkWidget*)dialog;

Modified: xarchiver/branches/xarchiver-psybsd/src/add_dialog.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/add_dialog.h	2006-11-22 07:41:29 UTC (rev 23928)
+++ xarchiver/branches/xarchiver-psybsd/src/add_dialog.h	2006-11-22 08:16:37 UTC (rev 23929)
@@ -45,7 +45,13 @@
 	GtkDialog parent;
 	GtkWidget *scrolled_window;
 	GtkWidget *optionframe;
+	GtkListStore *file_liststore;
+	GtkWidget *file_treeview;
+	GtkWidget *files_radio;
+	GtkWidget *dirs_radio;
 	LXAArchiveSupport *support;
+	GtkWidget *add;
+	GtkWidget *remove;
 };
 
 typedef struct _XAAddDialogClass XAAddDialogClass;

Modified: xarchiver/branches/xarchiver-psybsd/src/notebook.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/notebook.c	2006-11-22 07:41:29 UTC (rev 23928)
+++ xarchiver/branches/xarchiver-psybsd/src/notebook.c	2006-11-22 08:16:37 UTC (rev 23929)
@@ -300,7 +300,9 @@
 void
 cb_notebook_archive_status_changed(LXAArchive *archive, XANotebook *notebook)
 {
+#ifdef DEBUG
 	g_debug("NOTEBOOK: Archive status changed");
+#endif /* DEBUG */
 }
 
 static void
@@ -308,6 +310,15 @@
 {
 	GtkNotebook *notebook = GTK_NOTEBOOK(gtk_widget_get_parent(child));
 
+	GtkWidget *treeview = gtk_bin_get_child(GTK_BIN(child));
+	GtkTreeModel *archive_store = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview));
+
+	LXAArchive *archive = xa_archive_store_get_archive(XA_ARCHIVE_STORE(archive_store));
+
+	g_signal_handlers_disconnect_by_func(archive, cb_notebook_archive_refreshed, treeview);
+
+	lxa_close_archive(archive);
+
 	gint n = gtk_notebook_page_num(notebook, child);
 	gtk_notebook_remove_page(notebook, n);
 	g_signal_emit(G_OBJECT(notebook), xa_notebook_signals[0], 0, NULL);



More information about the Xfce4-commits mailing list