[Xfce4-commits] r23552 - in xarchiver/branches/xarchiver-psybsd: libxarchiver src
Stephan Arts
stephan at xfce.org
Mon Oct 30 00:43:32 CET 2006
Author: stephan
Date: 2006-10-29 23:43:28 +0000 (Sun, 29 Oct 2006)
New Revision: 23552
Modified:
xarchiver/branches/xarchiver-psybsd/libxarchiver/Makefile.am
xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-gnu-tar.c
xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-zip.c
xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c
xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h
xarchiver/branches/xarchiver-psybsd/libxarchiver/libxarchiver.c
xarchiver/branches/xarchiver-psybsd/src/archive_store.c
xarchiver/branches/xarchiver-psybsd/src/archive_store.h
xarchiver/branches/xarchiver-psybsd/src/main.c
xarchiver/branches/xarchiver-psybsd/src/main_window.c
xarchiver/branches/xarchiver-psybsd/src/navigation_bar.c
xarchiver/branches/xarchiver-psybsd/src/settings.c
xarchiver/branches/xarchiver-psybsd/src/settings.h
xarchiver/branches/xarchiver-psybsd/src/tool_bar.c
Log:
Fixed stuff
Added config options
Broke PathBar
Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/Makefile.am
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/Makefile.am 2006-10-29 22:59:52 UTC (rev 23551)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/Makefile.am 2006-10-29 23:43:28 UTC (rev 23552)
@@ -7,6 +7,7 @@
slist.c slist.h \
archive.c archive.h \
archive-support.c archive-support.h \
+ archive-support-zip.c archive-support-zip.h \
archive-support-gnu-tar.c archive-support-gnu-tar.h
libxarchiver_a_CFLAGS = \
Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-gnu-tar.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-gnu-tar.c 2006-10-29 22:59:52 UTC (rev 23551)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-gnu-tar.c 2006-10-29 23:43:28 UTC (rev 23552)
@@ -243,7 +243,7 @@
return -1;
}
- if(!lxa_archive_support_mime_supported(archive->support, lxa_mime_info_get_name(archive->mime)))
+ if(!lxa_archive_support_mime_supported(archive->support, lxa_mime_info_get_name(archive->mime_info)))
{
return 1;
}
@@ -254,21 +254,21 @@
lxa_archive_set_status(archive, LXA_ARCHIVESTATUS_ADD);
if(!g_file_test(archive->path, G_FILE_TEST_EXISTS))
{
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-tar"))
+ if(!g_strcasecmp(lxa_mime_info_get_name(archive->mime_info), "application/x-tar"))
command = g_strconcat(LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->app_name, " -cf ", archive->path, " ", archive->files, NULL);
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-tarz"))
+ if(!g_strcasecmp(lxa_mime_info_get_name(archive->mime_info), "application/x-tarz"))
command = g_strconcat(LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->app_name, " -Zcf ", archive->path, " ", archive->files, NULL);
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-compressed-tar"))
+ if(!g_strcasecmp(lxa_mime_info_get_name(archive->mime_info), "application/x-compressed-tar"))
command = g_strconcat(LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->app_name, " -zcf ", archive->path, " ", archive->files, NULL);
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-bzip-compressed-tar"))
+ if(!g_strcasecmp(lxa_mime_info_get_name(archive->mime_info), "application/x-bzip-compressed-tar"))
command = g_strconcat(LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->app_name, " -jcf ", archive->path, " ", archive->files, NULL);
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-tzo"))
+ if(!g_strcasecmp(lxa_mime_info_get_name(archive->mime_info), "application/x-tzo"))
command = g_strconcat(LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->app_name, " --use-compress-program=lzop -cf ", archive->path, " ", archive->files, NULL);
if(command)
lxa_execute(command, archive, NULL, NULL, NULL, NULL);
} else
{
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-tar"))
+ if(!g_strcasecmp(lxa_mime_info_get_name(archive->mime_info), "application/x-tar"))
{
command = g_strconcat(LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->app_name, " -rf ", archive->path, " ", archive->files, NULL);
lxa_execute(command, archive, NULL, NULL, NULL, NULL);
@@ -278,13 +278,13 @@
archive->tmp_file = g_strconcat(lxa_tmp_dir, "/xarchiver-XXXXXX" , NULL);
g_mkstemp(archive->tmp_file);
g_unlink(archive->tmp_file);
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-tarz"))
+ if(!g_strcasecmp(lxa_mime_info_get_name(archive->mime_info), "application/x-tarz"))
command = g_strconcat("uncompress -c ", archive->path, NULL);
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-compressed-tar"))
+ if(!g_strcasecmp(lxa_mime_info_get_name(archive->mime_info), "application/x-compressed-tar"))
command = g_strconcat("gunzip -c ", archive->path, NULL);
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-bzip-compressed-tar"))
+ if(!g_strcasecmp(lxa_mime_info_get_name(archive->mime_info), "application/x-bzip-compressed-tar"))
command = g_strconcat("bunzip2 -c ", archive->path, NULL);
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-tzo"))
+ if(!g_strcasecmp(lxa_mime_info_get_name(archive->mime_info), "application/x-tzo"))
command = g_strconcat("lzop -dc ", archive->path, NULL);
lxa_execute(command, archive, lxa_archive_support_gnu_tar_decompress_watch, NULL, lxa_archive_support_gnu_tar_decompress_parse_output, NULL);
LXA_FREE(command);
@@ -303,7 +303,7 @@
return -1;
}
- if(!lxa_archive_support_mime_supported(archive->support, lxa_mime_info_get_name(archive->mime)))
+ if(!lxa_archive_support_mime_supported(archive->support, lxa_mime_info_get_name(archive->mime_info)))
{
return 1;
}
@@ -313,7 +313,7 @@
lxa_archive_set_status(archive, LXA_ARCHIVESTATUS_EXTRACT);
if(g_file_test(archive->path, G_FILE_TEST_EXISTS))
{
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-tar"))
+ if(!g_strcasecmp(lxa_mime_info_get_name(archive->mime_info), "application/x-tar"))
{
command = g_strconcat(LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->app_name, " -xf ", archive->path,
" -C \"", dest_path, "\"",
@@ -321,7 +321,7 @@
LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_extr_touch?" --touch ":" ",
archive->files, NULL);
}
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-tarz"))
+ if(!g_strcasecmp(lxa_mime_info_get_name(archive->mime_info), "application/x-tarz"))
{
command = g_strconcat(LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->app_name, " -Zxf ", archive->path,
" -C \"", dest_path, "\"",
@@ -329,7 +329,7 @@
LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_extr_touch?" --touch ":" ",
archive->files, NULL);
}
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-compressed-tar"))
+ if(!g_strcasecmp(lxa_mime_info_get_name(archive->mime_info), "application/x-compressed-tar"))
{
command = g_strconcat(LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->app_name, " -zxf ", archive->path,
" -C \"", dest_path, "\"",
@@ -337,7 +337,7 @@
LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_extr_touch?" --touch ":" ",
archive->files, NULL);
}
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-bzip-compressed-tar"))
+ if(!g_strcasecmp(lxa_mime_info_get_name(archive->mime_info), "application/x-bzip-compressed-tar"))
{
command = g_strconcat(LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->app_name, " -jxf ", archive->path,
" -C \"", dest_path, "\"",
@@ -345,7 +345,7 @@
LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_extr_touch?" --touch ":" ",
archive->files, NULL);
}
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-tzo"))
+ if(!g_strcasecmp(lxa_mime_info_get_name(archive->mime_info), "application/x-tzo"))
{
command = g_strconcat(LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->app_name, " -xf --use-compress-program=lzop ", archive->path,
" -C \"", dest_path, "\"",
@@ -374,7 +374,7 @@
return -1;
}
- if(!lxa_archive_support_mime_supported(archive->support, lxa_mime_info_get_name(archive->mime)))
+ if(!lxa_archive_support_mime_supported(archive->support, lxa_mime_info_get_name(archive->mime_info)))
{
return 1;
}
@@ -385,7 +385,7 @@
lxa_archive_set_status(archive, LXA_ARCHIVESTATUS_REMOVE);
if(g_file_test(archive->path, G_FILE_TEST_EXISTS))
{
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-tar"))
+ if(!g_strcasecmp(lxa_mime_info_get_name(archive->mime_info), "application/x-tar"))
{
command = g_strconcat(LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->app_name, " -f ", archive->path, " --delete ", archive->files, NULL);
lxa_execute(command, archive, NULL, NULL, NULL, NULL);
@@ -395,13 +395,13 @@
archive->tmp_file = g_strconcat(lxa_tmp_dir, "/xarchiver-XXXXXX" , NULL);
g_mkstemp(archive->tmp_file);
g_unlink(archive->tmp_file);
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-tarz"))
+ if(!g_strcasecmp(lxa_mime_info_get_name(archive->mime_info), "application/x-tarz"))
command = g_strconcat("uncompress -c ", archive->path, NULL);
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-compressed-tar"))
+ if(!g_strcasecmp(lxa_mime_info_get_name(archive->mime_info), "application/x-compressed-tar"))
command = g_strconcat("gunzip -c ", archive->path, NULL);
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-bzip-compressed-tar"))
+ if(!g_strcasecmp(lxa_mime_info_get_name(archive->mime_info), "application/x-bzip-compressed-tar"))
command = g_strconcat("bunzip2 -c ", archive->path, NULL);
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-tzo"))
+ if(!g_strcasecmp(lxa_mime_info_get_name(archive->mime_info), "application/x-tzo"))
command = g_strconcat("lzop -dc ", archive->path, NULL);
lxa_execute(command, archive, lxa_archive_support_gnu_tar_decompress_watch, NULL, lxa_archive_support_gnu_tar_decompress_parse_output, NULL);
LXA_FREE(command);
@@ -422,7 +422,7 @@
return -1;
}
- if(!lxa_archive_support_mime_supported(archive->support, lxa_mime_info_get_name(archive->mime)))
+ if(!lxa_archive_support_mime_supported(archive->support, lxa_mime_info_get_name(archive->mime_info)))
{
return 1;
}
@@ -449,7 +449,7 @@
lxa_archive_set_property_type(archive, i, G_TYPE_STRING, _("Time"));
i++;
}
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-tzo"))
+ if(!g_strcasecmp(lxa_mime_info_get_name(archive->mime_info), "application/x-tzo"))
command = g_strconcat(LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->app_name, " --use-compress-program=lzop -tvf " , archive->path, NULL);
else
command = g_strconcat(LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->app_name, " -tvf " , archive->path, NULL);
@@ -473,13 +473,13 @@
archive->child_pid = 0;
gchar *command = NULL;
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-tarz"))
+ if(!g_strcasecmp(lxa_mime_info_get_name(archive->mime_info), "application/x-tarz"))
command = g_strconcat("compress -c ", archive->tmp_file, NULL);
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-compressed-tar"))
+ if(!g_strcasecmp(lxa_mime_info_get_name(archive->mime_info), "application/x-compressed-tar"))
command = g_strconcat("gzip -c ", archive->tmp_file, NULL);
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-bzip-compressed-tar"))
+ if(!g_strcasecmp(lxa_mime_info_get_name(archive->mime_info), "application/x-bzip-compressed-tar"))
command = g_strconcat("bzip2 -c ", archive->tmp_file, NULL);
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-tzo"))
+ if(!g_strcasecmp(lxa_mime_info_get_name(archive->mime_info), "application/x-tzo"))
command = g_strconcat("lzop -c ", archive->path, NULL);
lxa_execute(command, archive, NULL, NULL, lxa_archive_support_gnu_tar_compress_parse_output, NULL);
}
Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-zip.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-zip.c 2006-10-29 22:59:52 UTC (rev 23551)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-zip.c 2006-10-29 23:43:28 UTC (rev 23552)
@@ -178,10 +178,13 @@
LXAArchiveSupportZip *support;
support = g_object_new(LXA_TYPE_ARCHIVE_SUPPORT_ZIP,
+ "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);
@@ -196,7 +199,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;
}
@@ -204,8 +207,8 @@
{
gchar *command = NULL;
gchar *files = lxa_concat_filenames(filenames);
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-zip") ||
- !g_strcasecmp((gchar *)archive->mime, "application/zip"))
+ if(!g_strcasecmp((gchar *)lxa_mime_info_get_name(archive->mime_info), "application/x-zip") ||
+ !g_strcasecmp((gchar *)lxa_mime_info_get_name(archive->mime_info), "application/zip"))
{
command = g_strconcat("zip -r ", archive->path, " ", files, NULL);
lxa_execute(command, archive, NULL, NULL, NULL, NULL);
@@ -223,7 +226,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;
}
@@ -233,8 +236,8 @@
gchar *files = lxa_concat_filenames(filenames);
if(g_file_test(archive->path, G_FILE_TEST_EXISTS))
{
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-zip") ||
- !g_strcasecmp((gchar *)archive->mime, "application/zip"))
+ if(!g_strcasecmp((gchar *)lxa_mime_info_get_name(archive->mime_info), "application/x-zip") ||
+ !g_strcasecmp((gchar *)lxa_mime_info_get_name(archive->mime_info), "application/zip"))
{
command = g_strconcat("unzip -o ", archive->path, " -d ", dest_path, " ", files, NULL);
g_debug("Extracting archive '%s' to '%s'", archive->path, dest_path);
@@ -255,7 +258,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;
}
@@ -263,8 +266,8 @@
{
gchar *command = NULL;
gchar *files = lxa_concat_filenames(filenames);
- if(!g_strcasecmp((gchar *)archive->mime, "application/x-zip") ||
- !g_strcasecmp((gchar *)archive->mime, "application/zip"))
+ if(!g_strcasecmp((gchar *)lxa_mime_info_get_name(archive->mime_info), "application/x-zip") ||
+ !g_strcasecmp((gchar *)lxa_mime_info_get_name(archive->mime_info), "application/zip"))
{
command = g_strconcat("zip -d ", archive->path, " ", files, NULL);
lxa_execute(command, archive, NULL, NULL, NULL, NULL);
@@ -283,76 +286,41 @@
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;
}
else
{
- archive->n_property = 0;
- archive->entry_props_size = 0;
-
- if(LXA_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_size)
- archive->n_property++;
- if(LXA_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_length)
- archive->n_property++;
- if(LXA_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_ratio)
- archive->n_property++;
- if(LXA_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_method)
- archive->n_property++;
- if(LXA_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_crc_32)
- archive->n_property++;
- if(LXA_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_date)
- archive->n_property++;
- if(LXA_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_time)
- archive->n_property++;
-
- archive->property_types = LXA_NEW0(GType, archive->n_property);
- archive->property_names = LXA_NEW0(gchar *, archive->n_property);
-
+ i = LXA_ARCHIVE_PROP_USER;
if(LXA_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_length) {
- archive->property_types[i] = G_TYPE_UINT64;
- archive->property_names[i] = g_strdup(_("Length"));
+ lxa_archive_set_property_type(archive, i, G_TYPE_UINT64, _("Length"));
i++;
- archive->entry_props_size += sizeof(guint64);
}
if(LXA_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_method) {
- archive->property_types[i] = G_TYPE_STRING;
- archive->property_names[i] = g_strdup(_("Compression method"));
+ lxa_archive_set_property_type(archive, i, G_TYPE_STRING,_("Method"));
i++;
- archive->entry_props_size += sizeof(gchar *);
}
if(LXA_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_size) {
- archive->property_types[i] = G_TYPE_UINT64;
- archive->property_names[i] = g_strdup(_("Size"));
+ lxa_archive_set_property_type(archive, i, G_TYPE_UINT64, _("Size"));
i++;
- archive->entry_props_size += sizeof(guint64);
}
if(LXA_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_ratio) {
- archive->property_types[i] = G_TYPE_STRING;
- archive->property_names[i] = g_strdup("Ratio");
+ lxa_archive_set_property_type(archive, i, G_TYPE_STRING, _("Ratio"));
i++;
- archive->entry_props_size += sizeof(gchar *);
}
if(LXA_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_date) {
- archive->property_types[i] = G_TYPE_STRING;
- archive->property_names[i] = g_strdup(_("Date"));
+ lxa_archive_set_property_type(archive, i, G_TYPE_STRING, _("Date"));
i++;
- archive->entry_props_size += sizeof(gchar *);
}
if(LXA_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_time) {
- archive->property_types[i] = G_TYPE_STRING;
- archive->property_names[i] = g_strdup(_("Time"));
+ lxa_archive_set_property_type(archive, i, G_TYPE_STRING, _("Time"));
i++;
- archive->entry_props_size += sizeof(gchar *);
}
if(LXA_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_crc_32) {
- archive->property_types[i] = G_TYPE_STRING;
- archive->property_names[i] = g_strdup("CRC-32");
+ lxa_archive_set_property_type(archive, i, G_TYPE_STRING, _("CRC-32"));
i++;
- archive->entry_props_size += sizeof(gchar *);
}
-
gchar *command = g_strconcat("unzip -lv -qq " , archive->path, NULL);
lxa_execute(command, archive, NULL, NULL, lxa_archive_support_zip_refresh_parse_output, NULL);
LXA_FREE(command);
@@ -368,11 +336,12 @@
gchar *line = NULL;
LXAEntry *entry;
- gpointer props = NULL;
- gpointer props_iter = NULL;
+ guint64 size;
+ guint64 length;
+ gpointer props[8];
gint n = 0, a = 0, i = 0, o = 0;
gchar *temp_filename = NULL;
- gchar *_size = NULL;
+ gint linesize = 0;
if(!LXA_IS_ARCHIVE(archive))
return FALSE;
@@ -388,92 +357,100 @@
if (line == NULL)
break;
/* length, method , size, ratio, date, time, crc-32, filename*/
+ linesize = strlen(line);
- props = LXA_MALLOC0(archive->entry_props_size);
- props_iter = props;
- for(n=0; n < strlen(line) && line[n] == ' '; n++);
+ for(n=0; n < linesize && line[n] == ' '; n++);
a = n;
- for(; n < strlen(line) && line[n] != ' '; n++);
+ for(; n < linesize && line[n] != ' '; n++);
if(LXA_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_length)
{
- _size = g_strndup(&line[a], n-a);
- (*((guint64 *)props_iter)) = g_ascii_strtoull( _size, NULL, 0);
- LXA_FREE (_size);
- props_iter += sizeof(guint64);
+ line[n]='\0';
+ length = g_ascii_strtoull(line + a, NULL, 0);
+ props[i] = &length;
+ i++;
}
+ n++;
- for(; n < strlen(line) && line[n] == ' '; n++);
+ for(; n < linesize && line[n] == ' '; n++);
a = n;
- for(; n < strlen(line) && line[n] != ' '; n++);
+ for(; n < linesize && line[n] != ' '; n++);
if(LXA_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_method)
{
- (*(gchar **)props_iter) = g_strndup (&line[a], n-a);
- props_iter += sizeof(gchar *);
+ line[n] = '\0';
+ props[i] = line + a;
+ i++;
}
+ n++;
- for(; n < strlen(line) && line[n] == ' '; n++);
+ for(; n < linesize && line[n] == ' '; n++);
a = n;
- for(; n < strlen(line) && line[n] != ' '; n++);
+ for(; n < linesize && line[n] != ' '; n++);
if(LXA_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_size)
{
- _size = g_strndup(&line[a], n-a);
- (*((guint64 *)props_iter)) = g_ascii_strtoull( _size, NULL, 0);
- LXA_FREE (_size);
- props_iter += sizeof(guint64);
+ line[n]='\0';
+ size = g_ascii_strtoull(line + a, NULL, 0);
+ props[i] = &size;
+ i++;
}
+ n++;
- for(; n < strlen(line) && line[n] == ' '; n++);
+ for(; n < linesize && line[n] == ' '; n++);
a = n;
- for(; n < strlen(line) && line[n] != ' '; n++);
+ for(; n < linesize && line[n] != ' '; n++);
if(LXA_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_ratio)
{
- (*(gchar **)props_iter) = g_strndup (&line[a], n-a);
- props_iter += sizeof(gchar *);
+ line[n] = '\0';
+ props[i] = line + a;
+ i++;
}
+ n++;
- for(; n < strlen(line) && line[n] == ' '; n++);
+ for(; n < linesize && line[n] == ' '; n++);
a = n;
- for(; n < strlen(line) && line[n] != ' '; n++);
+ for(; n < linesize && line[n] != ' '; n++);
if(LXA_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_date)
{
- (*(gchar **)props_iter) = g_strndup (&line[a], n-a);
- props_iter += sizeof(gchar *);
-
+ line[n] = '\0';
+ props[i] = line + a;
+ i++;
}
+ n++;
- for(; n < strlen(line) && line[n] == ' '; n++);
+ for(; n < linesize && line[n] == ' '; n++);
a = n;
- for(; n < strlen(line) && line[n] != ' '; n++);
+ for(; n < linesize && line[n] != ' '; n++);
if(LXA_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_time)
{
- (*(gchar **)props_iter) = g_strndup (&line[a], n-a);
- props_iter += sizeof(gchar *);
-
+ line[n] = '\0';
+ props[i] = line + a;
+ i++;
}
+ n++;
- for(; n < strlen(line) && line[n] == ' '; n++);
+ for(; n < linesize && line[n] == ' '; n++);
a = n;
- for(; n < strlen(line) && line[n] != ' '; n++);
+ for(; n < linesize && line[n] != ' '; n++);
if(LXA_ARCHIVE_SUPPORT_ZIP(archive->support)->_view_crc_32)
{
- (*(gchar **)props_iter) = g_strndup (&line[a], n-a);
- props_iter += sizeof(gchar *);
+ line[n] = '\0';
+ props[i] = line + a;
+ i++;
}
+ n++;
- for(; n < strlen(line) && line[n] == ' '; n++);
- temp_filename = g_strstrip(g_strndup(&line[n], strlen(line)-n-1));
+ for(; n < linesize && line[n] == ' '; n++);
+ temp_filename = g_strchomp(line+n);
entry = lxa_archive_add_file(archive, temp_filename);
- entry->props = props;
+ lxa_archive_iter_set_propsv(archive, entry, (gconstpointer*)props);
LXA_FREE(line);
- LXA_FREE(temp_filename);
}
}
if(cond & (G_IO_ERR | G_IO_HUP | G_IO_NVAL) )
Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c 2006-10-29 22:59:52 UTC (rev 23551)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c 2006-10-29 23:43:28 UTC (rev 23552)
@@ -209,13 +209,13 @@
archive->path = NULL;
if(!mime)
- archive->mime = lxa_mime_get_mime_info_for_file(archive->path);
+ archive->mime_info = lxa_mime_get_mime_info_for_file(archive->path);
else
- archive->mime = lxa_mime_get_mime_info(mime);
+ archive->mime_info = lxa_mime_get_mime_info(mime);
#ifdef DEBUG
- g_debug("Mime-type: %s", lxa_mime_info_get_name(archive->mime));
+ g_debug("Mime-type: %s", lxa_mime_info_get_name(archive->mime_info));
#endif
- if(!lxa_get_support_for_mime(lxa_mime_info_get_name(archive->mime)))
+ if(!lxa_get_support_for_mime(lxa_mime_info_get_name(archive->mime_info)))
{
g_object_unref(archive);
archive = NULL;
Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h 2006-10-29 22:59:52 UTC (rev 23551)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h 2006-10-29 23:43:28 UTC (rev 23552)
@@ -68,7 +68,7 @@
{
GObject parent;
gchar *path;
- LXAMimeInfo *mime;
+ LXAMimeInfo *mime_info;
guint n_property;
GType *property_types;
gchar **property_names;
Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/libxarchiver.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/libxarchiver.c 2006-10-29 22:59:52 UTC (rev 23551)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/libxarchiver.c 2006-10-29 23:43:28 UTC (rev 23552)
@@ -41,9 +41,9 @@
lxa_mime_init();
lxa_register_support(lxa_archive_support_gnu_tar_new());
+ lxa_register_support(lxa_archive_support_zip_new());
/*
- lxa_register_support(lxa_archive_support_zip_new());
TODO: Implement right commands in unrar
lxa_register_support(lxa_archive_support_rar_new());
lxa_register_support(lxa_archive_support_unrar_new());
Modified: xarchiver/branches/xarchiver-psybsd/src/archive_store.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/archive_store.c 2006-10-29 22:59:52 UTC (rev 23551)
+++ xarchiver/branches/xarchiver-psybsd/src/archive_store.c 2006-10-29 23:43:28 UTC (rev 23552)
@@ -668,8 +668,11 @@
return;
- if(sort_col_id == 0)
- return;
+ if(store->props._show_icons)
+ {
+ if(sort_col_id == 0)
+ return;
+ }
store->sort_column = sort_col_id;
store->sort_order = order;
@@ -702,6 +705,7 @@
xa_archive_entry_compare(XAArchiveStore *store, LXAArchiveIter *a, LXAArchiveIter *b)
{
gint retval = 0;
+ gint column = 0;
gboolean cmp_a = 0;
gboolean cmp_b = 0;
GValue *prop_a = g_new0(GValue, 1);
@@ -725,20 +729,27 @@
}
LXAArchive *archive = store->archive;
- gint column = store->sort_column;
+ if(store->props._show_icons)
+ column = store->sort_column - 1;
+ else
+ {
+ column = store->sort_column;
+ }
- lxa_archive_iter_get_prop_value(archive, a, column-1, prop_a);
- lxa_archive_iter_get_prop_value(archive, b, column-1, prop_b);
+ lxa_archive_iter_get_prop_value(archive, a, column, prop_a);
+ lxa_archive_iter_get_prop_value(archive, b, column, prop_b);
- switch(lxa_archive_get_property_type(archive, column-1))
+ switch(lxa_archive_get_property_type(archive, column))
{
case G_TYPE_STRING:
switch(store->props._sort_case_sensitive)
{
case 0: /* case insensitive */
retval = g_ascii_strcasecmp(g_value_get_string(prop_a), g_value_get_string(prop_b));
+ break;
case 1: /* case sensitive */
retval = strcmp(g_value_get_string(prop_a), g_value_get_string(prop_b));
+ break;
}
break;
case G_TYPE_UINT64:
@@ -854,7 +865,7 @@
tree_model = g_object_new(XA_TYPE_ARCHIVE_STORE, NULL);
- //tree_model->props._show_icons = show_icons?1:0;
+ tree_model->props._show_icons = show_icons?1:0;
tree_model->props._show_up_dir = show_up_dir?1:0;
tree_model->icon_theme = icon_theme;
@@ -1261,10 +1272,58 @@
return store->props._show_icons;
}
+gboolean
+xa_archive_store_get_sort_case_sensitive(XAArchiveStore *store)
+{
+ return store->props._sort_case_sensitive;
+}
+
+gboolean
+xa_archive_store_get_sort_folders_first(XAArchiveStore *store)
+{
+ return store->props._sort_folders_first;
+}
+
void
xa_archive_store_set_show_icons(XAArchiveStore *store, gboolean show)
{
+ GtkSortType sort_order;
+ gint sort_col = 0;
gint prev_size = lxa_archive_iter_n_children(store->archive, (LXAEntry*)store->current_entry->data);
store->props._show_icons = show?1:0;
+ if(show)
+ {
+ xa_archive_store_get_sort_column_id(GTK_TREE_SORTABLE(store), &sort_col, &sort_order);
+ xa_archive_store_set_sort_column_id(GTK_TREE_SORTABLE(store), sort_col+1, sort_order);
+ }
+ else
+ {
+ xa_archive_store_get_sort_column_id(GTK_TREE_SORTABLE(store), &sort_col, &sort_order);
+ xa_archive_store_set_sort_column_id(GTK_TREE_SORTABLE(store), sort_col-1, sort_order);
+ }
xa_archive_store_refresh(store, prev_size);
}
+
+void
+xa_archive_store_set_sort_case_sensitive(XAArchiveStore *store, gboolean sort)
+{
+ store->props._sort_case_sensitive= sort?1:0;
+
+ if(store->archive)
+ {
+ gint prev_size = lxa_archive_iter_n_children(store->archive, (LXAEntry*)store->current_entry->data);
+ xa_archive_store_refresh(store, prev_size);
+ }
+}
+
+void
+xa_archive_store_set_sort_folders_first(XAArchiveStore *store, gboolean sort)
+{
+ store->props._sort_folders_first = sort?1:0;
+
+ if(store->archive)
+ {
+ gint prev_size = lxa_archive_iter_n_children(store->archive, (LXAEntry*)store->current_entry->data);
+ xa_archive_store_refresh(store, prev_size);
+ }
+}
Modified: xarchiver/branches/xarchiver-psybsd/src/archive_store.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/archive_store.h 2006-10-29 22:59:52 UTC (rev 23551)
+++ xarchiver/branches/xarchiver-psybsd/src/archive_store.h 2006-10-29 23:43:28 UTC (rev 23552)
@@ -86,11 +86,15 @@
xa_archive_store_set_pwd(XAArchiveStore *store, const gchar *path);
gboolean
xa_archive_store_set_pwd_silent(XAArchiveStore *store, const gchar *path);
-gboolean
-xa_archive_store_get_show_icons(XAArchiveStore *store);
void
-xa_archive_store_set_show_icons(XAArchiveStore *store, gboolean show);
-void
xa_archive_store_set_icon_theme(XAArchiveStore *store, GtkIconTheme *icon_theme);
+gboolean xa_archive_store_get_show_icons(XAArchiveStore *store);
+gboolean xa_archive_store_get_sort_case_sensitive(XAArchiveStore *store);
+gboolean xa_archive_store_get_sort_folders_first(XAArchiveStore *store);
+
+void xa_archive_store_set_show_icons(XAArchiveStore *, gboolean);
+void xa_archive_store_set_sort_case_sensitive(XAArchiveStore *, gboolean);
+void xa_archive_store_set_sort_folders_first(XAArchiveStore *, gboolean);
+
#endif /* __XARCHIVER_ARCHIVE_STORE_H__ */
Modified: xarchiver/branches/xarchiver-psybsd/src/main.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/main.c 2006-10-29 22:59:52 UTC (rev 23551)
+++ xarchiver/branches/xarchiver-psybsd/src/main.c 2006-10-29 23:43:28 UTC (rev 23552)
@@ -155,7 +155,7 @@
{
g_signal_connect(G_OBJECT(lp_archive), "lxa_status_changed", G_CALLBACK(xa_archive_status_changed), NULL);
opened_archives++;
- lpSupport = lxa_get_support_for_mime(lxa_mime_info_get_name(lp_archive->mime));
+ lpSupport = lxa_get_support_for_mime(lxa_mime_info_get_name(lp_archive->mime_info));
if(!extract_archive_path)
{
dialog = xa_extract_archive_dialog_new(lpSupport, lp_archive, FALSE);
@@ -232,7 +232,7 @@
{
files = g_slist_prepend(files, argv[i]);
}
- lpSupport = lxa_get_support_for_mime(lxa_mime_info_get_name(lp_archive->mime));
+ lpSupport = lxa_get_support_for_mime(lxa_mime_info_get_name(lp_archive->mime_info));
lxa_archive_support_add(lpSupport, lp_archive, files);
}
Modified: xarchiver/branches/xarchiver-psybsd/src/main_window.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/main_window.c 2006-10-29 22:59:52 UTC (rev 23551)
+++ xarchiver/branches/xarchiver-psybsd/src/main_window.c 2006-10-29 23:43:28 UTC (rev 23552)
@@ -117,7 +117,6 @@
{
XAMainWindow *window = XA_MAIN_WINDOW(object);
- xa_archive_store_set_contents(XA_ARCHIVE_STORE(window->treemodel), NULL);
xa_settings_set_group(window->settings, "Global");
if(!window->navigationbar)
@@ -140,8 +139,14 @@
{
xa_settings_write_entry(window->settings, "NavigationBar", "None");
}
+
+ xa_settings_write_bool_entry(window->settings, "ShowIcons", xa_archive_store_get_show_icons(XA_ARCHIVE_STORE(window->treemodel)));
+ xa_settings_write_bool_entry(window->settings, "SortCaseSensitive", xa_archive_store_get_sort_case_sensitive(XA_ARCHIVE_STORE(window->treemodel)));
+ xa_settings_write_bool_entry(window->settings, "SortFoldersFirst", xa_archive_store_get_sort_folders_first(XA_ARCHIVE_STORE(window->treemodel)));
+ xa_settings_save(window->settings);
+
gtk_widget_unref(GTK_WIDGET(window->navigationbar));
- xa_settings_save(window->settings);
+ xa_archive_store_set_contents(XA_ARCHIVE_STORE(window->treemodel), NULL);
}
static void
@@ -155,6 +160,9 @@
GtkAccelGroup *accel_group = gtk_accel_group_new();
const gchar *nav_bar;
gboolean up_dir = TRUE;
+ gboolean show_icons = TRUE;
+ gboolean sort_case = TRUE;
+ gboolean sort_folders = TRUE;
window->settings = xa_settings_new(NULL);
@@ -284,7 +292,7 @@
g_signal_connect(G_OBJECT(window->toolbar.tool_item_stop), "clicked", G_CALLBACK(cb_xa_main_stop_archive), window);
xa_settings_set_group(window->settings, "Global");
- nav_bar = xa_settings_read_entry(window->settings, "NavigationBar", "PathBar");
+ nav_bar = xa_settings_read_entry(window->settings, "NavigationBar", "None");
window->navigationbar = NULL;
#ifdef ENABLE_TOOLBAR
@@ -308,6 +316,10 @@
window->navigationbar = xa_navigation_bar_new(NULL);
}
+ show_icons = xa_settings_read_bool_entry(window->settings, "ShowIcons", TRUE);
+ sort_case = xa_settings_read_bool_entry(window->settings, "SortCaseSensitive", TRUE);
+ sort_folders = xa_settings_read_bool_entry(window->settings, "SortFoldersFirst", TRUE);
+
gtk_widget_ref(GTK_WIDGET(window->navigationbar));
/* main view */
@@ -346,8 +358,11 @@
gtk_container_add(GTK_CONTAINER(window), main_vbox);
/* archive model */
- window->treemodel = xa_archive_store_new(NULL, TRUE, up_dir, window->icon_theme);
+ window->treemodel = xa_archive_store_new(NULL, show_icons, up_dir, window->icon_theme);
+ xa_archive_store_set_sort_case_sensitive(XA_ARCHIVE_STORE(window->treemodel), sort_case);
+ xa_archive_store_set_sort_folders_first (XA_ARCHIVE_STORE(window->treemodel), sort_folders);
+
xa_archive_store_connect_treeview(XA_ARCHIVE_STORE(window->treemodel), GTK_TREE_VIEW(window->treeview));
gtk_tree_view_set_model(GTK_TREE_VIEW(window->treeview), GTK_TREE_MODEL(window->treemodel));
@@ -447,7 +462,7 @@
{
g_debug("Archive opened");
g_signal_connect(G_OBJECT(window->lp_xa_archive), "lxa_status_changed", G_CALLBACK(xa_main_window_archive_status_changed), window);
- lp_support = lxa_get_support_for_mime(lxa_mime_info_get_name(window->lp_xa_archive->mime));
+ lp_support = lxa_get_support_for_mime(lxa_mime_info_get_name(window->lp_xa_archive->mime_info));
gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_close), TRUE);
gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_new), TRUE);
@@ -530,17 +545,7 @@
void
cb_xa_main_add_to_archive(GtkWidget *widget, gpointer userdata)
{
- XAMainWindow *window = XA_MAIN_WINDOW(userdata);
- if(xa_archive_store_get_show_icons(XA_ARCHIVE_STORE(window->treemodel)))
- {
- xa_archive_store_set_show_icons(XA_ARCHIVE_STORE(window->treemodel), FALSE);
- xa_main_window_reset_columns(window);
- }
- else
- {
- xa_archive_store_set_show_icons(XA_ARCHIVE_STORE(window->treemodel), TRUE);
- xa_main_window_reset_columns(window);
- }
+/* XAMainWindow *window = XA_MAIN_WINDOW(userdata);*/
}
void
@@ -557,7 +562,7 @@
GtkTreeIter iter;
GtkTreeSelection *selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW (window->treeview) );
- lp_support = lxa_get_support_for_mime(lxa_mime_info_get_name(window->lp_xa_archive->mime));
+ lp_support = lxa_get_support_for_mime(lxa_mime_info_get_name(window->lp_xa_archive->mime_info));
dialog = xa_extract_archive_dialog_new(lp_support, window->lp_xa_archive, gtk_tree_selection_count_selected_rows (selection));
@@ -641,7 +646,7 @@
if(!lxa_open_archive(archive_path, &window->lp_xa_archive))
{
g_signal_connect(G_OBJECT(window->lp_xa_archive), "lxa_status_changed", G_CALLBACK(xa_main_window_archive_status_changed), window);
- lp_support = lxa_get_support_for_mime(lxa_mime_info_get_name(window->lp_xa_archive->mime));
+ lp_support = lxa_get_support_for_mime(lxa_mime_info_get_name(window->lp_xa_archive->mime_info));
lxa_archive_support_refresh(lp_support, window->lp_xa_archive);
return 0;
Modified: xarchiver/branches/xarchiver-psybsd/src/navigation_bar.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/navigation_bar.c 2006-10-29 22:59:52 UTC (rev 23551)
+++ xarchiver/branches/xarchiver-psybsd/src/navigation_bar.c 2006-10-29 23:43:28 UTC (rev 23552)
@@ -34,6 +34,8 @@
static void
xa_navigation_bar_init(XANavigationBar *archive);
+static void
+xa_navigation_bar_finalize(GObject *object);
static void
cb_xa_navigation_bar_pwd_changed(XAArchiveStore *store, XANavigationBar *bar);
@@ -85,6 +87,7 @@
object_class->set_property = xa_navigation_bar_set_property;
object_class->get_property = xa_navigation_bar_get_property;
+ object_class->finalize = xa_navigation_bar_finalize;
pspec = g_param_spec_uint("navigation_history",
"",
@@ -109,6 +112,16 @@
navigation_bar->history = NULL;
}
+static void
+xa_navigation_bar_finalize(GObject *object)
+{
+ XANavigationBar *navigation_bar = XA_NAVIGATION_BAR(object);
+ if(navigation_bar->_cb_pwd_changed)
+ g_signal_handlers_disconnect_by_func(navigation_bar->store, navigation_bar->_cb_pwd_changed, navigation_bar);
+ if(navigation_bar->_cb_new_archive)
+ g_signal_handlers_disconnect_by_func(navigation_bar->store, navigation_bar->_cb_new_archive, navigation_bar);
+}
+
void
xa_navigation_bar_set_store(XANavigationBar *navigation_bar, XAArchiveStore *store)
{
Modified: xarchiver/branches/xarchiver-psybsd/src/settings.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/settings.c 2006-10-29 22:59:52 UTC (rev 23551)
+++ xarchiver/branches/xarchiver-psybsd/src/settings.c 2006-10-29 23:43:28 UTC (rev 23552)
@@ -122,6 +122,16 @@
#endif /* HAVE_LIBXFCE4UTIL */
}
+void
+xa_settings_write_bool_entry(XASettings *settings, const gchar *key, const gboolean value)
+{
+#ifdef HAVE_LIBXFCE4UTIL
+ xfce_rc_write_bool_entry(XFCE_RC(settings->xfce_rc), key, value);
+#else
+
+#endif /* HAVE_LIBXFCE4UTIL */
+}
+
const gchar *
xa_settings_read_entry(XASettings *settings, const gchar *key, const gchar *fallback)
{
@@ -131,3 +141,13 @@
return g_strdup(fallback);
#endif /* HAVE_LIBXFCE4UTIL */
}
+
+gboolean
+xa_settings_read_bool_entry(XASettings *settings, const gchar *key, const gboolean fallback)
+{
+#ifdef HAVE_LIBXFCE4UTIL
+ return xfce_rc_read_bool_entry(XFCE_RC(settings->xfce_rc), key, fallback);
+#else
+ return fallback;
+#endif /* HAVE_LIBXFCE4UTIL */
+}
Modified: xarchiver/branches/xarchiver-psybsd/src/settings.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/settings.h 2006-10-29 22:59:52 UTC (rev 23551)
+++ xarchiver/branches/xarchiver-psybsd/src/settings.h 2006-10-29 23:43:28 UTC (rev 23552)
@@ -62,7 +62,11 @@
gboolean xa_settings_save(XASettings *);
const gchar *xa_settings_read_entry(XASettings *settings, const gchar *key, const gchar *fallback);
+gboolean xa_settings_read_bool_entry(XASettings *settings, const gchar *key, const gboolean fallback);
+
void xa_settings_write_entry(XASettings *settings, const gchar *key, const gchar *value);
+void xa_settings_write_bool_entry(XASettings *settings, const gchar *key, const gboolean value);
+
void xa_settings_set_group(XASettings *settings, const gchar *group);
G_END_DECLS
Modified: xarchiver/branches/xarchiver-psybsd/src/tool_bar.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/tool_bar.c 2006-10-29 22:59:52 UTC (rev 23551)
+++ xarchiver/branches/xarchiver-psybsd/src/tool_bar.c 2006-10-29 23:43:28 UTC (rev 23552)
@@ -49,6 +49,8 @@
static void
cb_xa_tool_bar_pwd_changed(XAArchiveStore *store, XAToolBar *bar);
+static void
+cb_xa_tool_bar_new_archive(XAArchiveStore *store, XAToolBar *bar);
static void
cb_xa_tool_bar_history_back(GtkWidget *button, XAToolBar *nav_bar);
@@ -112,6 +114,7 @@
{
GtkToolItem *button = NULL;
XA_NAVIGATION_BAR(tool_bar)->_cb_pwd_changed = (GCallback)cb_xa_tool_bar_pwd_changed;
+ XA_NAVIGATION_BAR(tool_bar)->_cb_new_archive = (GCallback)cb_xa_tool_bar_new_archive;
GTK_WIDGET_SET_FLAGS(tool_bar, GTK_NO_WINDOW);
gtk_widget_set_redraw_on_allocate(GTK_WIDGET(tool_bar), FALSE);
@@ -302,6 +305,19 @@
}
static void
+cb_xa_tool_bar_new_archive(XAArchiveStore *store, XAToolBar *bar)
+{
+ g_return_if_fail(XA_IS_TOOL_BAR(bar));
+
+ xa_navigation_bar_clear_history(XA_NAVIGATION_BAR(bar));
+ gtk_widget_set_sensitive(GTK_WIDGET(bar->hbox), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(bar->up_button), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(bar->home_button), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(bar->forward_button), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(bar->back_button), FALSE);
+}
+
+static void
cb_xa_tool_bar_history_back(GtkWidget *back_button, XAToolBar *tool_bar)
{
xa_navigation_bar_history_back(XA_NAVIGATION_BAR(tool_bar));
More information about the Xfce4-commits
mailing list