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: [EMAIL PROTECTED]"
-"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 <[EMAIL PROTECTED]>\n"
 "Language-Team: Dutch <[EMAIL PROTECTED]>\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);

_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to