Author: stephan
Date: 2006-07-28 12:59:33 +0000 (Fri, 28 Jul 2006)
New Revision: 22548
Modified:
xarchiver/branches/xarchiver-psybsd/TODO
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/libxarchiver/libxarchiver.h
xarchiver/branches/xarchiver-psybsd/po/nl.po
xarchiver/branches/xarchiver-psybsd/po/xarchiver.pot
xarchiver/branches/xarchiver-psybsd/src/main.c
xarchiver/branches/xarchiver-psybsd/src/new_dialog.c
xarchiver/branches/xarchiver-psybsd/src/new_dialog.h
xarchiver/branches/xarchiver-psybsd/xarchiver.desktop.in
Log:
Fixed new_archive_dialog. (It now does stuff)
Modified: xarchiver/branches/xarchiver-psybsd/TODO
===================================================================
--- xarchiver/branches/xarchiver-psybsd/TODO 2006-07-28 12:23:49 UTC (rev
22547)
+++ xarchiver/branches/xarchiver-psybsd/TODO 2006-07-28 12:59:33 UTC (rev
22548)
@@ -9,6 +9,9 @@
tar.gz
tar.bz2
+ Implement lxa_archivetype_supported() function
+ Implement lxa_compressiontype_supported() function
+
Implement 'NewArchiveDialog'
Implement 'ExtractArchiveDialog'
@@ -28,7 +31,6 @@
Remove
Extract
View
-
See if we can avoid using /tmp when possible.
Write view support for gnu-tar support object.
Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c 2006-07-28
12:23:49 UTC (rev 22547)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c 2006-07-28
12:59:33 UTC (rev 22548)
@@ -143,6 +143,13 @@
g_debug("COMPRESSION TYPE NOT FOUND");
compression = archive->compression;
}
+ else
+ {
+ archive->compression = compression;
+ archive->type = type;
+ lxa_archive_set_status(archive, LXA_ARCHIVESTATUS_IDLE);
+ return archive;
+ }
if(archive->compression == LXA_COMPRESSIONTYPE_NONE)
{
if(type == LXA_ARCHIVETYPE_UNKNOWN)
@@ -152,7 +159,7 @@
g_debug("ARCHIVE TYPE FOUND");
else
g_debug("ARCHIVE TYPE NOT FOUND");
- archive->type = type;
+ type = archive->type;
}
}
return archive;
Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h 2006-07-28
12:23:49 UTC (rev 22547)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h 2006-07-28
12:59:33 UTC (rev 22548)
@@ -33,7 +33,9 @@
} LXAArchiveType;
typedef enum
-{ LXA_COMPRESSIONTYPE_NONE, LXA_COMPRESSIONTYPE_UNKNOWN,
+{
+ LXA_COMPRESSIONTYPE_NONE,
+ LXA_COMPRESSIONTYPE_UNKNOWN,
LXA_COMPRESSIONTYPE_BZIP2,
LXA_COMPRESSIONTYPE_GZIP
} LXACompressionType;
Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/libxarchiver.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/libxarchiver.c
2006-07-28 12:23:49 UTC (rev 22547)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/libxarchiver.c
2006-07-28 12:59:33 UTC (rev 22548)
@@ -41,8 +41,7 @@
lxa_tmp_dir = g_get_tmp_dir();
#ifdef DEBUG
- g_debug("lxa_tmp_dir: %s\n", lxa_tmp_dir);
- g_debug("lxa_cmp_list_length: %d\n",
g_slist_length(lxa_compression_support_list));
+ g_debug("lxa_tmp_dir: %s\n", lxa_tmp_dir);
g_debug("lxa_cmp_list_length: %d\n",
g_slist_length(lxa_compression_support_list));
#endif
}
@@ -59,7 +58,7 @@
*
*/
gint
-lxa_new_archive(gchar *path, LXAArchiveType type, LXACompressionType
compression, gboolean overwrite, LXAArchive **lp_archive)
+lxa_new_archive(gchar *path, LXAArchiveType type, LXACompressionType
compression, gboolean overwrite, LXAArchive **lp_archive, GCallback
initialized_func)
{
if(overwrite)
g_unlink(path);
@@ -70,7 +69,7 @@
return 1;
}
- LXAArchive *archive = lxa_archive_new(path, type, compression, NULL);
+ LXAArchive *archive = lxa_archive_new(path, type, compression,
initialized_func);
(*lp_archive) = archive;
return 0;
}
@@ -99,3 +98,19 @@
{
g_unlink(archive->tmp_file);
}
+
+gboolean
+lxa_archivetype_supported (LXAArchiveType type)
+{
+ if(g_slist_find_custom(lxa_archive_support_list, &type,
lookup_archive_support))
+ return TRUE;
+ return FALSE;
+}
+
+gboolean
+lxa_compressiontype_supported (LXACompressionType type)
+{
+ if(g_slist_find_custom(lxa_compression_support_list, &type,
lookup_compression_support))
+ return TRUE;
+ return FALSE;
+}
Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/libxarchiver.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/libxarchiver.h
2006-07-28 12:23:49 UTC (rev 22547)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/libxarchiver.h
2006-07-28 12:59:33 UTC (rev 22548)
@@ -49,7 +49,8 @@
LXAArchiveType,
LXACompressionType,
gboolean overwrite,
- LXAArchive **lp_archive );
+ LXAArchive **lp_archive,
+ GCallback
initialized_func);
/*
* gint
Modified: xarchiver/branches/xarchiver-psybsd/po/nl.po
===================================================================
--- xarchiver/branches/xarchiver-psybsd/po/nl.po 2006-07-28 12:23:49 UTC
(rev 22547)
+++ xarchiver/branches/xarchiver-psybsd/po/nl.po 2006-07-28 12:59:33 UTC
(rev 22548)
@@ -3,11 +3,12 @@
# This file is distributed under the same license as the xarchiver package.
# Stephan Arts <[EMAIL PROTECTED]>, 2006.
#
+#: ../src/main.c:50 ../src/main.c:54 ../src/main.c:58 ../src/main.c:62
msgid ""
msgstr ""
"Project-Id-Version: xarchiver 0.3.9psybsd\n"
"Report-Msgid-Bugs-To: [EMAIL PROTECTED]"
-"POT-Creation-Date: 2006-07-22 19:29+0200\n"
+"POT-Creation-Date: 2006-07-28 14:58+0200\n"
"PO-Revision-Date: 2006-07-20 16:36+0200\n"
"Last-Translator: Stephan Arts <[EMAIL PROTECTED]>\n"
"Language-Team: Dutch <[EMAIL PROTECTED]>\n"
@@ -16,70 +17,74 @@
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/main.c:53
-msgid "Extract the archive to the specified folder and quits."
-msgstr "Pak archief uit naar map en sluit af"
-
-#: ../src/main.c:54
+#: ../src/main.c:51
msgid "[destination path]"
msgstr "[bestemmings map]"
-#: ../src/main.c:57
-msgid "Extract the archive by asking the destination folder and quits."
-msgstr ""
-
-#: ../src/main.c:61
-msgid "Add files to the specified archive and quits."
-msgstr ""
-
-#: ../src/main.c:62
+#: ../src/main.c:59
msgid "[archive path] [file1] [file2] ... [fileN]"
msgstr "[archief map] [bestand1] [bestand2] ... [bestandN]"
-#: ../src/main.c:71
-msgid "Ask for the archive to be created, add files to it and quits."
-msgstr ""
-
-#: ../src/main.c:72
+#: ../src/main.c:63
msgid "[file1] [file2] ... [fileN]"
msgstr "[bestand1] [bestand2] ... [bestandN]"
-#: ../src/main.c:114
+#: ../src/main.c:105
#, c-format
msgid "Could not add file(s) to archive '%s'"
msgstr "Kan bestand(en) niet toevoegen aan archief '%s'"
-#: ../src/main.c:117 ../src/main.c:203
+#: ../src/main.c:108 ../src/main.c:197
#, c-format
msgid "Could not extract archive '%s'"
msgstr "Kan archief '%s' niet uitpakken"
-#: ../src/main.c:120
+#: ../src/main.c:111
#, c-format
msgid "Could not remove file(s) from archive '%s'"
msgstr "Kon bestand(en) niet verwijderen uit archief '%s'"
-#: ../src/main.c:143
+#: ../src/main.c:134
#, c-format
msgid "File '%s' does not exist: ABORTING"
msgstr "Bestand '%s' bestaat niet"
-#: ../src/main.c:174
+#: ../src/main.c:168
msgid "[archive name]"
msgstr "[archief naam]"
-#: ../src/main.c:215
+#: ../src/main.c:209
msgid "You should provide at least one file to add\n"
msgstr "U moet ten minste een bestand toevoegen\n"
-#: ../src/new_dialog.c:68
+#: ../src/main.c:302
+msgid "Archive type unknown\n"
+msgstr "Onbekend archieftype\n"
+
+#: ../src/new_dialog.c:76
msgid "Archive type:"
msgstr "Archieftype:"
-#: ../src/new_dialog.c:70
+#: ../src/new_dialog.c:88
msgid "Automatic"
msgstr "Automatisch"
-#: ../src/new_dialog.c:86
+#: ../src/new_dialog.c:98 ../src/new_dialog.c:163
+msgid "Tar (uncompressed) '.tar'"
+msgstr "Tar (ongecomprimeerd) '.tar'"
+
+#: ../src/new_dialog.c:108 ../src/new_dialog.c:169
+msgid "Gzip compressed Tar '.tar.gz'"
+msgstr "Gzip gecomprimeerde Tar '.tar.gz'"
+
+#: ../src/new_dialog.c:118 ../src/new_dialog.c:176
+msgid "Bzip2 compressed Tar '.tar.bz2'"
+msgstr "Bzip2 gecomprimeerde Tar '.tar.bz2'"
+
+#: ../src/new_dialog.c:129 ../src/new_dialog.c:185
+msgid "Zip archive '.zip'"
+msgstr "Zip archief '.zip'"
+
+#: ../src/new_dialog.c:157
msgid "Create new archive"
msgstr "Maak nieuw archief"
Modified: xarchiver/branches/xarchiver-psybsd/po/xarchiver.pot
===================================================================
--- xarchiver/branches/xarchiver-psybsd/po/xarchiver.pot 2006-07-28
12:23:49 UTC (rev 22547)
+++ xarchiver/branches/xarchiver-psybsd/po/xarchiver.pot 2006-07-28
12:59:33 UTC (rev 22548)
@@ -3,12 +3,13 @@
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <[EMAIL PROTECTED]>, YEAR.
#
+#: ../src/main.c:50 ../src/main.c:54 ../src/main.c:58 ../src/main.c:62
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: [EMAIL PROTECTED]"
-"POT-Creation-Date: 2006-07-22 19:29+0200\n"
+"POT-Creation-Date: 2006-07-28 14:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <[EMAIL PROTECTED]>\n"
"Language-Team: LANGUAGE <[EMAIL PROTECTED]>\n"
@@ -16,70 +17,74 @@
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/main.c:53
-msgid "Extract the archive to the specified folder and quits."
-msgstr ""
-
-#: ../src/main.c:54
+#: ../src/main.c:51
msgid "[destination path]"
msgstr ""
-#: ../src/main.c:57
-msgid "Extract the archive by asking the destination folder and quits."
-msgstr ""
-
-#: ../src/main.c:61
-msgid "Add files to the specified archive and quits."
-msgstr ""
-
-#: ../src/main.c:62
+#: ../src/main.c:59
msgid "[archive path] [file1] [file2] ... [fileN]"
msgstr ""
-#: ../src/main.c:71
-msgid "Ask for the archive to be created, add files to it and quits."
-msgstr ""
-
-#: ../src/main.c:72
+#: ../src/main.c:63
msgid "[file1] [file2] ... [fileN]"
msgstr ""
-#: ../src/main.c:114
+#: ../src/main.c:105
#, c-format
msgid "Could not add file(s) to archive '%s'"
msgstr ""
-#: ../src/main.c:117 ../src/main.c:203
+#: ../src/main.c:108 ../src/main.c:197
#, c-format
msgid "Could not extract archive '%s'"
msgstr ""
-#: ../src/main.c:120
+#: ../src/main.c:111
#, c-format
msgid "Could not remove file(s) from archive '%s'"
msgstr ""
-#: ../src/main.c:143
+#: ../src/main.c:134
#, c-format
msgid "File '%s' does not exist: ABORTING"
msgstr ""
-#: ../src/main.c:174
+#: ../src/main.c:168
msgid "[archive name]"
msgstr ""
-#: ../src/main.c:215
+#: ../src/main.c:209
msgid "You should provide at least one file to add\n"
msgstr ""
-#: ../src/new_dialog.c:68
+#: ../src/main.c:302
+msgid "Archive type unknown\n"
+msgstr ""
+
+#: ../src/new_dialog.c:76
msgid "Archive type:"
msgstr ""
-#: ../src/new_dialog.c:70
+#: ../src/new_dialog.c:88
msgid "Automatic"
msgstr ""
-#: ../src/new_dialog.c:86
+#: ../src/new_dialog.c:98 ../src/new_dialog.c:163
+msgid "Tar (uncompressed) '.tar'"
+msgstr ""
+
+#: ../src/new_dialog.c:108 ../src/new_dialog.c:169
+msgid "Gzip compressed Tar '.tar.gz'"
+msgstr ""
+
+#: ../src/new_dialog.c:118 ../src/new_dialog.c:176
+msgid "Bzip2 compressed Tar '.tar.bz2'"
+msgstr ""
+
+#: ../src/new_dialog.c:129 ../src/new_dialog.c:185
+msgid "Zip archive '.zip'"
+msgstr ""
+
+#: ../src/new_dialog.c:157
msgid "Create new archive"
msgstr ""
Modified: xarchiver/branches/xarchiver-psybsd/src/main.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/main.c 2006-07-28 12:23:49 UTC
(rev 22547)
+++ xarchiver/branches/xarchiver-psybsd/src/main.c 2006-07-28 12:59:33 UTC
(rev 22548)
@@ -44,31 +44,22 @@
gint opened_archives = 0;
-/*
- * Using roughly the same interface as File-roller.
- */
static GOptionEntry entries[] =
{
{ "extract-to", 'x', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_STRING,
&extract_archive_path,
- N_("Extract the archive to the specified folder and quits."),
+ N_(""),
N_("[destination path]")
},
{ "extract", 'e', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE,
&extract_archive,
- N_("Extract the archive by asking the destination folder and
quits."),
+ N_(""),
NULL
},
{ "add-to", 'd', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_STRING,
&add_archive_path,
- N_("Add files to the specified archive and quits."),
+ N_(""),
N_("[archive path] [file1] [file2] ... [fileN]")
},
- /*
- { "add", 'a', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE,
&add_archive,
- N_("Add files to the specified archive by asking their
filenames and quits."),
- NULL
- },
- */
{ "new", 'n', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE,
&new_archive,
- N_("Ask for the archive to be created, add files to it and
quits."),
+ N_(""),
N_("[file1] [file2] ... [fileN]")
},
{ NULL }
@@ -163,6 +154,9 @@
gint result = 0;
gint i = 0;
GSList *files = NULL;
+ LXAArchiveType new_archivetype;
+ LXACompressionType new_compressiontype;
+ gchar *temp_path;
#ifdef ENABLE_NLS
bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
@@ -227,21 +221,94 @@
}
else /* No file-name provided, a new archive has to be created:
*/
{
- /* TODO: Show new archive dialog */
dialog = xa_new_archive_dialog_new();
result = gtk_dialog_run (GTK_DIALOG (dialog) );
- gtk_widget_destroy (GTK_WIDGET (dialog) );
- if(result == GTK_RESPONSE_CANCEL)
+ if(result == GTK_RESPONSE_CANCEL || result ==
GTK_RESPONSE_DELETE_EVENT)
+ {
+ gtk_widget_destroy (GTK_WIDGET (dialog) );
return 2;
+ }
if(result == GTK_RESPONSE_OK)
{
/* do crazy stuff */
- return 0;
+ new_archivetype =
xa_new_archive_dialog_get_archive_type(XA_NEW_ARCHIVE_DIALOG(dialog));
+ new_compressiontype =
xa_new_archive_dialog_get_compression_type(XA_NEW_ARCHIVE_DIALOG(dialog));
+ add_archive_path =
gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
+ if(new_archivetype == LXA_ARCHIVETYPE_UNKNOWN)
+ {
+ /* auto-detect*/
+ if(g_str_has_suffix(add_archive_path,
".tgz") || g_str_has_suffix(add_archive_path, ".tar.gz"))
+ {
+ new_archivetype =
LXA_ARCHIVETYPE_TAR;
+ new_compressiontype =
LXA_COMPRESSIONTYPE_GZIP;
+ }
+ if(g_str_has_suffix(add_archive_path,
".tbz") || g_str_has_suffix(add_archive_path, ".tar.bz") ||
g_str_has_suffix(add_archive_path, ".tar.bz2"))
+ {
+ new_archivetype =
LXA_ARCHIVETYPE_TAR;
+ new_compressiontype =
LXA_COMPRESSIONTYPE_BZIP2;
+ }
+ if(g_str_has_suffix(add_archive_path,
".tar"))
+ {
+ new_archivetype =
LXA_ARCHIVETYPE_TAR;
+ new_compressiontype =
LXA_COMPRESSIONTYPE_NONE;
+ }
+ }
+ if(new_archivetype != LXA_ARCHIVETYPE_UNKNOWN)
+ {
+ if(new_archivetype ==
LXA_ARCHIVETYPE_TAR)
+ {
+ if(new_compressiontype ==
LXA_COMPRESSIONTYPE_GZIP)
+ {
+
if(!g_str_has_suffix(add_archive_path, ".tgz") &&
!g_str_has_suffix(add_archive_path, ".tar.gz"))
+ {
+ temp_path =
g_strconcat(add_archive_path, ".tar.gz", NULL);
+
g_free(add_archive_path);
+
add_archive_path = temp_path;
+ }
+ g_debug("TAR.GZ\n");
+ }
+ if(new_compressiontype ==
LXA_COMPRESSIONTYPE_BZIP2)
+ {
+
if(!g_str_has_suffix(add_archive_path, ".tbz") &&
!g_str_has_suffix(add_archive_path, ".tar.bz") &&
!g_str_has_suffix(add_archive_path, ".tar.bz2"))
+ {
+ temp_path =
g_strconcat(add_archive_path, ".tar.bz2", NULL);
+
g_free(add_archive_path);
+
add_archive_path = temp_path;
+ }
+ g_debug("TAR.BZ2\n");
+ }
+ if(new_compressiontype ==
LXA_COMPRESSIONTYPE_NONE)
+ {
+
if(!g_str_has_suffix(add_archive_path, ".tar"))
+ {
+ temp_path =
g_strconcat(add_archive_path, ".tar", NULL);
+
g_free(add_archive_path);
+
add_archive_path = temp_path;
+ }
+ g_debug("TAR\n");
+ }
+ }
+ if(!lxa_new_archive(add_archive_path,
new_archivetype, new_compressiontype, TRUE, &xa_archive,
G_CALLBACK(archive_initialized)))
+ {
+
g_signal_connect(G_OBJECT(xa_archive), "lxa_status_changed",
G_CALLBACK(archive_status_changed), NULL);
+
g_signal_connect(G_OBJECT(xa_archive), "lxa_init_complete",
G_CALLBACK(archive_initialized), NULL);
+
g_signal_connect(G_OBJECT(xa_archive), "lxa_operation_failure",
G_CALLBACK(archive_operation_failed), NULL);
+ opened_archives++;
+ }
+ }
+ else
+ {
+ gtk_widget_destroy (GTK_WIDGET (dialog)
);
+ dialog = gtk_message_dialog_new
(NULL,GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,_("Archive type
unknown\n"));
+ gtk_dialog_set_default_response
(GTK_DIALOG (dialog), GTK_RESPONSE_YES);
+ gtk_dialog_run (GTK_DIALOG (dialog) );
+ }
}
+ gtk_widget_destroy (GTK_WIDGET (dialog) );
}
}
- if(!add_archive && !extract_archive && !extract_archive_path &&
!add_archive_path)
+ if(!new_archive && !extract_archive && !extract_archive_path &&
!add_archive_path)
return 0;
gtk_main();
Modified: xarchiver/branches/xarchiver-psybsd/src/new_dialog.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/new_dialog.c 2006-07-28
12:23:49 UTC (rev 22547)
+++ xarchiver/branches/xarchiver-psybsd/src/new_dialog.c 2006-07-28
12:59:33 UTC (rev 22548)
@@ -18,7 +18,9 @@
#include <config.h>
#include <gettext.h>
+#include <glib.h>
#include <gtk/gtk.h>
+#include <libxarchiver/libxarchiver.h>
#include "new_dialog.h"
static void
@@ -64,10 +66,74 @@
static void
xa_new_archive_dialog_init(XANewArchiveDialog *dialog)
{
+ GtkTreeIter iter;
+ GtkCellRenderer *renderer = gtk_cell_renderer_text_new();
+ GValue *str_value = g_new0(GValue, 1);
+ GValue *at_value = g_new0(GValue, 1);
+ GValue *ct_value = g_new0(GValue, 1);
+
GtkWidget *hbox = gtk_hbox_new(FALSE, 10);
gtk_box_pack_start (GTK_BOX (hbox),gtk_label_new (_("Archive
type:")),FALSE, FALSE, 0);
- dialog->filetype_selector = gtk_combo_box_new_text();
- gtk_combo_box_append_text(GTK_COMBO_BOX(dialog->filetype_selector),
_("Automatic"));
+ dialog->filetype_model = gtk_list_store_new(3, G_TYPE_STRING,
G_TYPE_UINT, G_TYPE_UINT);
+ dialog->filetype_selector =
gtk_combo_box_new_with_model(GTK_TREE_MODEL(dialog->filetype_model));
+ gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(dialog->filetype_selector),
renderer, FALSE);
+
gtk_cell_layout_add_attribute(GTK_CELL_LAYOUT(dialog->filetype_selector),
renderer, "text", 0);
+
+ str_value = g_value_init(str_value, G_TYPE_STRING);
+ at_value = g_value_init(at_value, G_TYPE_UINT);
+ ct_value = g_value_init(ct_value, G_TYPE_UINT);
+
+ gtk_list_store_append(dialog->filetype_model, &iter);
+
+ g_value_set_string(str_value, _("Automatic"));
+ gtk_list_store_set_value(dialog->filetype_model, &iter, 0, str_value);
+ g_value_set_uint(at_value, LXA_ARCHIVETYPE_UNKNOWN);
+ g_value_set_uint(ct_value, LXA_COMPRESSIONTYPE_UNKNOWN);
+ gtk_list_store_set_value(dialog->filetype_model, &iter, 1, at_value);
+ gtk_list_store_set_value(dialog->filetype_model, &iter, 2, ct_value);
+
+ if(lxa_archivetype_supported(LXA_ARCHIVETYPE_TAR))
+ {
+ gtk_list_store_append(dialog->filetype_model, &iter);
+ g_value_set_string(str_value, _("Tar (uncompressed) '.tar'"));
+ gtk_list_store_set_value(dialog->filetype_model, &iter, 0,
str_value);
+
+ g_value_set_uint(at_value, LXA_ARCHIVETYPE_TAR);
+ g_value_set_uint(ct_value, LXA_COMPRESSIONTYPE_NONE);
+ gtk_list_store_set_value(dialog->filetype_model, &iter, 1,
at_value);
+ gtk_list_store_set_value(dialog->filetype_model, &iter, 2,
ct_value);
+ if(lxa_compressiontype_supported(LXA_COMPRESSIONTYPE_GZIP))
+ {
+ gtk_list_store_append(dialog->filetype_model, &iter);
+ g_value_set_string(str_value, _("Gzip compressed Tar
'.tar.gz'"));
+ gtk_list_store_set_value(dialog->filetype_model, &iter,
0, str_value);
+ g_value_set_uint(at_value, LXA_ARCHIVETYPE_TAR);
+ g_value_set_uint(ct_value, LXA_COMPRESSIONTYPE_GZIP);
+ gtk_list_store_set_value(dialog->filetype_model, &iter,
1, at_value);
+ gtk_list_store_set_value(dialog->filetype_model, &iter,
2, ct_value);
+ }
+ if(lxa_compressiontype_supported(LXA_COMPRESSIONTYPE_BZIP2))
+ {
+ gtk_list_store_append(dialog->filetype_model, &iter);
+ g_value_set_string(str_value, _("Bzip2 compressed Tar
'.tar.bz2'"));
+ gtk_list_store_set_value(dialog->filetype_model, &iter,
0, str_value);
+ g_value_set_uint(at_value, LXA_ARCHIVETYPE_TAR);
+ g_value_set_uint(ct_value, LXA_COMPRESSIONTYPE_BZIP2);
+ gtk_list_store_set_value(dialog->filetype_model, &iter,
1, at_value);
+ gtk_list_store_set_value(dialog->filetype_model, &iter,
2, ct_value);
+ }
+ }
+ if(lxa_archivetype_supported(LXA_ARCHIVETYPE_ZIP))
+ {
+ gtk_list_store_append(dialog->filetype_model, &iter);
+ g_value_set_string(str_value, _("Zip archive '.zip'"));
+ gtk_list_store_set_value(dialog->filetype_model, &iter, 0,
str_value);
+ g_value_set_uint(at_value, LXA_ARCHIVETYPE_ZIP);
+ g_value_set_uint(ct_value, LXA_COMPRESSIONTYPE_NONE);
+ gtk_list_store_set_value(dialog->filetype_model, &iter, 1,
at_value);
+ gtk_list_store_set_value(dialog->filetype_model, &iter, 2,
ct_value);
+ }
+
gtk_combo_box_set_active(GTK_COMBO_BOX(dialog->filetype_selector), 0);
gtk_box_pack_start (GTK_BOX (hbox), dialog->filetype_selector,TRUE ,
TRUE, 0);
@@ -77,12 +143,73 @@
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_NEW, GTK_RESPONSE_OK,
NULL);
+ g_free(str_value);
+ g_free(at_value);
+ g_free(ct_value);
}
GtkWidget *
xa_new_archive_dialog_new()
{
GtkWidget *dialog;
- dialog = g_object_new(xa_new_archive_dialog_get_type(), "title",
_("Create new archive"), "action", GTK_FILE_CHOOSER_ACTION_SAVE, NULL);
+ GtkFileFilter *filter = NULL;
+
+ dialog = g_object_new(xa_new_archive_dialog_get_type(), "title",
_("Create new archive"), "action", GTK_FILE_CHOOSER_ACTION_SAVE,
"do-overwrite-confirmation", TRUE, NULL);
+
+ if(lxa_archivetype_supported(LXA_ARCHIVETYPE_TAR))
+ {
+ filter = gtk_file_filter_new();
+ gtk_file_filter_add_mime_type(filter, "application/x-tar");
+ gtk_file_filter_set_name(filter, _("Tar (uncompressed)
'.tar'"));
+ gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter);
+ if(lxa_compressiontype_supported(LXA_COMPRESSIONTYPE_GZIP))
+ {
+ filter = gtk_file_filter_new();
+ gtk_file_filter_add_mime_type(filter,
"application/x-compressed-tar");
+ gtk_file_filter_set_name(filter, _("Gzip compressed Tar
'.tar.gz'"));
+ gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),
filter);
+ }
+ if(lxa_compressiontype_supported(LXA_COMPRESSIONTYPE_BZIP2))
+ {
+ filter = gtk_file_filter_new();
+ gtk_file_filter_add_mime_type(filter,
"application/x-bzip-compressed-tar");
+ gtk_file_filter_set_name(filter, _("Bzip2 compressed
Tar '.tar.bz2'"));
+ gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),
filter);
+ }
+ }
+ if(lxa_archivetype_supported(LXA_ARCHIVETYPE_ZIP))
+ {
+ filter = gtk_file_filter_new();
+ gtk_file_filter_add_mime_type(filter, "application/x-zip");
+ gtk_file_filter_add_mime_type(filter, "application/zip");
+ gtk_file_filter_set_name(filter, _("Zip archive '.zip'"));
+ gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter);
+ }
+
return dialog;
}
+
+LXAArchiveType
+xa_new_archive_dialog_get_archive_type (XANewArchiveDialog *dialog)
+{
+ GtkTreeIter iter;
+ GValue *at_value = g_new0(GValue, 1);
+ LXAArchiveType type;
+ gtk_combo_box_get_active_iter(GTK_COMBO_BOX(dialog->filetype_selector),
&iter);
+ gtk_tree_model_get_value(GTK_TREE_MODEL(dialog->filetype_model), &iter,
1, at_value);
+ type = g_value_get_uint(at_value);
+ g_free(at_value);
+ return type; }
+
+LXACompressionType
+xa_new_archive_dialog_get_compression_type (XANewArchiveDialog *dialog)
+{
+ GtkTreeIter iter;
+ GValue *ct_value = g_new0(GValue, 1);
+ LXACompressionType type;
+ gtk_combo_box_get_active_iter(GTK_COMBO_BOX(dialog->filetype_selector),
&iter);
+ gtk_tree_model_get_value(GTK_TREE_MODEL(dialog->filetype_model), &iter,
2, ct_value);
+ type = g_value_get_uint(ct_value);
+ g_free(ct_value);
+ return type;
+}
Modified: xarchiver/branches/xarchiver-psybsd/src/new_dialog.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/new_dialog.h 2006-07-28
12:23:49 UTC (rev 22547)
+++ xarchiver/branches/xarchiver-psybsd/src/new_dialog.h 2006-07-28
12:59:33 UTC (rev 22548)
@@ -42,18 +42,24 @@
struct _XANewArchiveDialog
{
- GtkFileChooserDialog parent;
+ GtkFileSelection parent;
GtkWidget *filetype_selector;
+ GtkListStore *filetype_model;
+ GSList *archivetype_list;
+ GSList *compressiontype_list;
};
typedef struct _XANewArchiveDialogClass XANewArchiveDialogClass;
struct _XANewArchiveDialogClass
{
- GtkFileChooserDialogClass parent;
+ GtkFileSelectionClass parent;
};
GtkWidget *xa_new_archive_dialog_new();
+LXAArchiveType xa_new_archive_dialog_get_archive_type (XANewArchiveDialog
*);
+LXACompressionType xa_new_archive_dialog_get_compression_type
(XANewArchiveDialog *);
+
G_END_DECLS
#endif /* __XARCHIVER_NEW_ARCHIVE_DIALOG_H__ */
Modified: xarchiver/branches/xarchiver-psybsd/xarchiver.desktop.in
===================================================================
--- xarchiver/branches/xarchiver-psybsd/xarchiver.desktop.in 2006-07-28
12:23:49 UTC (rev 22547)
+++ xarchiver/branches/xarchiver-psybsd/xarchiver.desktop.in 2006-07-28
12:59:33 UTC (rev 22548)
@@ -11,4 +11,4 @@
X-MultipleArgs=false
Categories=GTK;Application;Utility;
StartupNotify=true
-MimeType=application/x-gzip;application/x-bzip;application/x-bzip-compressed-tar;application/x-tar;application/x-compressed-tar;
+MimeType=application/x-gzip;application/x-bzip;application/x-bzip-compressed-tar;application/x-tar;application/x-compressed-tar;application/x-zip;application/zip;
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits