[Xfce4-commits] r23816 - in xarchiver/branches/xarchiver-psybsd: libxarchiver src
Stephan Arts
stephan at xfce.org
Sat Nov 11 00:04:13 CET 2006
Author: stephan
Date: 2006-11-10 23:04:11 +0000 (Fri, 10 Nov 2006)
New Revision: 23816
Modified:
xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-gnu-tar.c
xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-gnu-tar.h
xarchiver/branches/xarchiver-psybsd/src/add_dialog.c
xarchiver/branches/xarchiver-psybsd/src/main_window.c
xarchiver/branches/xarchiver-psybsd/src/notebook.c
xarchiver/branches/xarchiver-psybsd/src/notebook.h
xarchiver/branches/xarchiver-psybsd/src/tool_bar.c
Log:
- Fixed segfault in tool-bar
- Added options to gnu-tar support-object
- Window-title now shows archive-filename
- Changed some stuff to add-dialog
Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-gnu-tar.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-gnu-tar.c 2006-11-10 22:00:24 UTC (rev 23815)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-gnu-tar.c 2006-11-10 23:04:11 UTC (rev 23816)
@@ -36,6 +36,8 @@
LXA_ARCHIVE_SUPPORT_GNU_TAR_EXTRACT_OVERWRITE = 1,
LXA_ARCHIVE_SUPPORT_GNU_TAR_EXTRACT_TOUCH,
LXA_ARCHIVE_SUPPORT_GNU_TAR_EXTRACT_STRIP,
+ LXA_ARCHIVE_SUPPORT_GNU_TAR_EXTRACT_KEEP_NEW,
+ LXA_ARCHIVE_SUPPORT_GNU_TAR_ADD_MODE,
LXA_ARCHIVE_SUPPORT_GNU_TAR_VIEW_SIZE,
LXA_ARCHIVE_SUPPORT_GNU_TAR_VIEW_DATE,
LXA_ARCHIVE_SUPPORT_GNU_TAR_VIEW_TIME,
@@ -157,52 +159,66 @@
g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_GNU_TAR_EXTRACT_OVERWRITE, pspec);
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,
G_PARAM_READWRITE);
g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_GNU_TAR_EXTRACT_STRIP, pspec);
+ pspec = g_param_spec_boolean("extract-keep-new",
+ _("Keep newer files"),
+ _("Do not overwrite files newer then those in the archive"),
+ FALSE,
+ G_PARAM_READWRITE);
+ g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_GNU_TAR_EXTRACT_KEEP_NEW, pspec);
+
+ pspec = g_param_spec_string("add-mode",
+ _("Override permissions"),
+ "Override permissions",
+ "",
+ G_PARAM_READWRITE);
+ g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_GNU_TAR_ADD_MODE, pspec);
+
pspec = g_param_spec_boolean("view-size",
- "View file-size",
- "View file-size",
+ _("Filesize"),
+ _("View filesize"),
FALSE,
G_PARAM_READWRITE);
g_object_class_install_property(object_class, LXA_ARCHIVE_SUPPORT_GNU_TAR_VIEW_SIZE, pspec);
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",
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);
@@ -255,15 +271,30 @@
if(!g_file_test(archive->path, G_FILE_TEST_EXISTS))
{
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);
+ command = g_strconcat(LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->app_name,
+ " -cf ", archive->path,
+ " --mode=", LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_add_mode,
+ " ", archive->files, NULL);
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);
+ command = g_strconcat(LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->app_name,
+ " -Zcf ", archive->path,
+ " --mode=", LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_add_mode,
+ " ", archive->files, NULL);
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);
+ command = g_strconcat(LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->app_name,
+ " -zcf ", archive->path,
+ " --mode=", LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_add_mode,
+ " ", archive->files, NULL);
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);
+ command = g_strconcat(LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->app_name,
+ " -jcf ", archive->path,
+ " --mode=", LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_add_mode,
+ " ", archive->files, NULL);
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);
+ command = g_strconcat(LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->app_name,
+ " --use-compress-program=lzop -cf ", archive->path,
+ " --mode=", LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_add_mode,
+ " ", archive->files, NULL);
if(command)
lxa_execute(command, archive, NULL, NULL, NULL, NULL);
} else
@@ -297,6 +328,13 @@
lxa_archive_support_gnu_tar_extract(LXAArchive *archive, gchar *dest_path, GSList *filenames)
{
gchar *command = NULL;
+ gchar *command_options = g_strconcat(
+ LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_extr_keep_newer?" --keep-newer-files ":" ",
+ LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_extr_overwrite?" --overwrite ":" ",
+ LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_extr_touch?" --touch ":" ",
+ NULL
+ );
+
if(!LXA_IS_ARCHIVE_SUPPORT_GNU_TAR(archive->support))
{
g_critical("Support is not GNU TAR");
@@ -317,48 +355,47 @@
{
command = g_strconcat(LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->app_name, " -xf ", archive->path,
" -C \"", dest_path, "\"",
- LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_extr_overwrite?" --overwrite ":" ",
- LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_extr_touch?" --touch ":" ",
+ command_options,
archive->files, NULL);
}
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, "\"",
- LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_extr_overwrite?" --overwrite ":" ",
- LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_extr_touch?" --touch ":" ",
+ command_options,
archive->files, NULL);
}
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, "\"",
- LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_extr_overwrite?" --overwrite ":" ",
- LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_extr_touch?" --touch ":" ",
+ command_options,
archive->files, NULL);
}
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, "\"",
- LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_extr_overwrite?" --overwrite ":" ",
- LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_extr_touch?" --touch ":" ",
+ command_options,
archive->files, NULL);
}
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, "\"",
- LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_extr_overwrite?" --overwrite ":" ",
- LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_extr_touch?" --touch ":" ",
+ command_options,
archive->files, NULL);
}
} else
+ {
+ LXA_FREE(command_options);
return 1;
+ }
if(command)
{
lxa_execute(command, archive, NULL, NULL, NULL, NULL);
g_debug("Extracting archive '%s' to '%s'\nUsing command '%s'", archive->path, dest_path, command);
+ LXA_FREE(command_options);
LXA_FREE(command);
}
}
@@ -438,7 +475,7 @@
i++;
}
if(LXA_ARCHIVE_SUPPORT_GNU_TAR(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, _("Filesize"));
i++;
}
if(LXA_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_view_date) {
@@ -703,15 +740,23 @@
{
switch(prop_id)
{
+/* EXTRACT */
case LXA_ARCHIVE_SUPPORT_GNU_TAR_EXTRACT_OVERWRITE:
LXA_ARCHIVE_SUPPORT_GNU_TAR(object)->_extr_overwrite = g_value_get_boolean(value);
break;
case LXA_ARCHIVE_SUPPORT_GNU_TAR_EXTRACT_TOUCH:
LXA_ARCHIVE_SUPPORT_GNU_TAR(object)->_extr_touch = g_value_get_boolean(value);
break;
+ case LXA_ARCHIVE_SUPPORT_GNU_TAR_EXTRACT_KEEP_NEW:
+ LXA_ARCHIVE_SUPPORT_GNU_TAR(object)->_extr_keep_newer = g_value_get_boolean(value);
+ break;
case LXA_ARCHIVE_SUPPORT_GNU_TAR_EXTRACT_STRIP:
LXA_ARCHIVE_SUPPORT_GNU_TAR(object)->_extr_strip = g_value_get_uint(value);
break;
+/* ADD */
+ case LXA_ARCHIVE_SUPPORT_GNU_TAR_ADD_MODE:
+ LXA_ARCHIVE_SUPPORT_GNU_TAR(object)->_add_mode = g_value_dup_string(value);
+ break;
/* */
case LXA_ARCHIVE_SUPPORT_GNU_TAR_VIEW_SIZE:
@@ -740,6 +785,7 @@
{
switch(prop_id)
{
+/* EXTRACT */
case LXA_ARCHIVE_SUPPORT_GNU_TAR_EXTRACT_OVERWRITE:
g_value_set_boolean(value, LXA_ARCHIVE_SUPPORT_GNU_TAR(object)->_extr_overwrite);
break;
@@ -749,6 +795,13 @@
case LXA_ARCHIVE_SUPPORT_GNU_TAR_EXTRACT_STRIP:
g_value_set_uint(value, LXA_ARCHIVE_SUPPORT_GNU_TAR(object)->_extr_strip);
break;
+ case LXA_ARCHIVE_SUPPORT_GNU_TAR_EXTRACT_KEEP_NEW:
+ g_value_set_boolean(value, LXA_ARCHIVE_SUPPORT_GNU_TAR(object)->_extr_keep_newer);
+ break;
+/* ADD */
+ case LXA_ARCHIVE_SUPPORT_GNU_TAR_ADD_MODE:
+ g_value_set_string(value, LXA_ARCHIVE_SUPPORT_GNU_TAR(object)->_add_mode);
+ break;
/* */
case LXA_ARCHIVE_SUPPORT_GNU_TAR_VIEW_SIZE:
Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-gnu-tar.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-gnu-tar.h 2006-11-10 22:00:24 UTC (rev 23815)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-gnu-tar.h 2006-11-10 23:04:11 UTC (rev 23816)
@@ -49,7 +49,11 @@
gboolean _extr_overwrite;
gboolean _extr_touch;
guint _extr_strip;
+ gboolean _extr_keep_old;
+ gboolean _extr_keep_newer;
+ gchar *_add_mode;
+
/* Optional properties */
gboolean _view_size;
gboolean _view_date;
Modified: xarchiver/branches/xarchiver-psybsd/src/add_dialog.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/add_dialog.c 2006-11-10 22:00:24 UTC (rev 23815)
+++ xarchiver/branches/xarchiver-psybsd/src/add_dialog.c 2006-11-10 23:04:11 UTC (rev 23816)
@@ -22,6 +22,7 @@
#include <gettext.h>
#include "add_dialog.h"
+#include "widget_factory.h"
static void
xa_add_dialog_class_init(XAAddDialogClass *archive_class);
@@ -66,10 +67,10 @@
GtkWidget *frame = gtk_frame_new(_("Drag Files and folders to bottom list"));
dialog->optionframe = gtk_frame_new(_("Options:"));
GtkWidget *vpaned = gtk_vpaned_new();
- GtkWidget *chooser = gtk_file_chooser_widget_new(GTK_FILE_CHOOSER_ACTION_OPEN);
+ //GtkWidget *chooser = gtk_file_chooser_widget_new(GTK_FILE_CHOOSER_ACTION_OPEN);
GtkWidget *scrolled_window = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled_window), GTK_SHADOW_IN);
- gtk_paned_pack1(GTK_PANED(vpaned), chooser, TRUE, FALSE);
+ //gtk_paned_pack1(GTK_PANED(vpaned), chooser, TRUE, FALSE);
gtk_paned_pack2(GTK_PANED(vpaned), scrolled_window, TRUE, FALSE);
gtk_container_add(GTK_CONTAINER(frame), vpaned);
@@ -92,7 +93,8 @@
{
GSList *add_options;
XAAddDialog *dialog;
- GtkWidget *optionbox, *test, *hbox;
+ GtkWidget *optionbox, *test;
+ XAWidgetFactory *factory = xa_widget_factory_new();
dialog = g_object_new(xa_add_dialog_get_type(),
"title", _("Add file(s) to archive"),
@@ -107,29 +109,14 @@
add_options = lxa_archive_support_list_properties(support, "add");
while(add_options)
{
- switch(G_PARAM_SPEC(add_options->data)->value_type)
- {
- case G_TYPE_BOOLEAN:
- test = gtk_check_button_new_with_label(g_param_spec_get_nick(G_PARAM_SPEC(add_options->data)));
- // g_signal_connect(G_OBJECT(test), "toggled", G_CALLBACK(cb_xa_add_dialog_option_toggled), g_param_spec_get_name(G_PARAM_SPEC(add_options->data)));
- gtk_box_pack_start(GTK_BOX(optionbox), test, FALSE, FALSE, 0);
- break;
- case G_TYPE_STRING:
- hbox = gtk_hbox_new(FALSE, 4);
- test = gtk_label_new(g_param_spec_get_nick(G_PARAM_SPEC(add_options->data)));
- gtk_box_pack_start(GTK_BOX(hbox), test, FALSE, FALSE, 3);
-
- test = gtk_entry_new();
- gtk_box_pack_start(GTK_BOX(hbox), test, TRUE, TRUE, 3);
-
- // g_signal_connect(G_OBJECT(test), "child_notify", G_CALLBACK(cb_xa_add_dialog_option_child_norify), g_param_spec_get_name(G_PARAM_SPEC(add_options->data)));
- gtk_box_pack_start(GTK_BOX(optionbox), hbox, FALSE, FALSE, 0);
- break;
- }
+ test = xa_widget_factory_create_property_widget(factory, G_OBJECT(support), g_param_spec_get_name(G_PARAM_SPEC(add_options->data)));
+ gtk_box_pack_start(GTK_BOX(optionbox), test, FALSE, FALSE, 0);
add_options = add_options->next;
}
}
+ gtk_widget_set_size_request(GTK_WIDGET(dialog), 600,400);
+
gtk_widget_show_all(optionbox);
return (GtkWidget*)dialog;
}
Modified: xarchiver/branches/xarchiver-psybsd/src/main_window.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/main_window.c 2006-11-10 22:00:24 UTC (rev 23815)
+++ xarchiver/branches/xarchiver-psybsd/src/main_window.c 2006-11-10 23:04:11 UTC (rev 23816)
@@ -377,7 +377,7 @@
{
}
- gtk_widget_destroy (GTK_WIDGET (dialog) );
+ gtk_widget_destroy (dialog );
}
}
@@ -438,7 +438,7 @@
result = gtk_dialog_run (GTK_DIALOG (dialog) );
if(result == GTK_RESPONSE_OK)
{
- gtk_widget_hide(GTK_WIDGET(dialog));
+ gtk_widget_hide(dialog);
extract_archive_path = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(XA_EXTRACT_ARCHIVE_DIALOG(dialog)->sel_files_radio)))
{
@@ -461,7 +461,7 @@
g_free(extract_archive_path);
extract_archive_path = NULL;
}
- gtk_widget_destroy (GTK_WIDGET (dialog) );
+ gtk_widget_destroy (dialog);
}
@@ -472,9 +472,18 @@
LXAArchive *lp_archive = NULL;
LXAArchiveSupport *lp_support = NULL;
+ GtkWidget *dialog = NULL;
+ gint result;
+ xa_notebook_get_active_archive(XA_NOTEBOOK(window->notebook), &lp_archive, &lp_support);
- xa_notebook_get_active_archive(XA_NOTEBOOK(window->notebook), &lp_archive, &lp_support);
- gtk_dialog_run (GTK_DIALOG (xa_add_dialog_new(lp_support)));
+ dialog = xa_add_dialog_new(lp_support);
+
+ result = gtk_dialog_run (GTK_DIALOG(dialog));
+ if(result == GTK_RESPONSE_OK)
+ {
+ gtk_widget_hide(dialog);
+ }
+ gtk_widget_destroy (dialog);
}
static void
@@ -485,12 +494,17 @@
static void
cb_xa_main_window_notebook_page_switched(XANotebook *notebook, GtkNotebookPage *page, guint page_nr, gpointer data)
{
+ LXAArchive *lp_archive;
XAMainWindow *window = XA_MAIN_WINDOW(data);
gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add), TRUE);
gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_extract), TRUE);
gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_remove), TRUE);
gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_stop), TRUE);
+
+ lp_archive = xa_notebook_page_get_archive(notebook, page_nr);
+
+ gtk_window_set_title(GTK_WINDOW(window), lxa_archive_get_filename(lp_archive));
}
static void
Modified: xarchiver/branches/xarchiver-psybsd/src/notebook.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/notebook.c 2006-11-10 22:00:24 UTC (rev 23815)
+++ xarchiver/branches/xarchiver-psybsd/src/notebook.c 2006-11-10 23:04:11 UTC (rev 23816)
@@ -360,8 +360,10 @@
GtkWidget *treeview = gtk_bin_get_child(GTK_BIN(scrolledwindow));
GtkTreeModel *archive_store = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview));
- (*lp_archive) = xa_archive_store_get_archive(XA_ARCHIVE_STORE(archive_store));
- (*lp_support) = xa_archive_store_get_support(XA_ARCHIVE_STORE(archive_store));
+ if(lp_archive)
+ (*lp_archive) = xa_archive_store_get_archive(XA_ARCHIVE_STORE(archive_store));
+ if(lp_support)
+ (*lp_support) = xa_archive_store_get_support(XA_ARCHIVE_STORE(archive_store));
}
GtkWidget *
@@ -394,3 +396,13 @@
else
xa_notebook_add_archive(XA_NOTEBOOK(notebook), archive, support);
}
+
+LXAArchive*
+xa_notebook_page_get_archive(XANotebook *notebook, gint n)
+{
+ GtkWidget *scrolledwindow = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), n);
+ GtkWidget *treeview = gtk_bin_get_child(GTK_BIN(scrolledwindow));
+ GtkTreeModel *store = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview));
+
+ return xa_archive_store_get_archive(XA_ARCHIVE_STORE(store));
+}
Modified: xarchiver/branches/xarchiver-psybsd/src/notebook.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/notebook.h 2006-11-10 22:00:24 UTC (rev 23815)
+++ xarchiver/branches/xarchiver-psybsd/src/notebook.h 2006-11-10 23:04:11 UTC (rev 23816)
@@ -63,14 +63,15 @@
GtkNotebookClass parent;
};
-GtkWidget *xa_notebook_new (XANavigationBar *bar, gboolean use_tabs);
-GType xa_notebook_get_type ();
+GtkWidget *xa_notebook_new (XANavigationBar *bar, gboolean use_tabs);
+GType xa_notebook_get_type ();
-void xa_notebook_set_navigation_bar(XANotebook *, XANavigationBar *);
-void xa_notebook_add_archive(XANotebook *, LXAArchive *, LXAArchiveSupport *);
-void xa_notebook_page_set_archive(XANotebook *, LXAArchive *, LXAArchiveSupport *, gint n);
-void xa_notebook_set_icon_theme(XANotebook *, GtkIconTheme *);
-void xa_notebook_get_active_archive(XANotebook *, LXAArchive **, LXAArchiveSupport **);
+void xa_notebook_set_navigation_bar(XANotebook *, XANavigationBar *);
+void xa_notebook_add_archive(XANotebook *, LXAArchive *, LXAArchiveSupport *);
+void xa_notebook_page_set_archive(XANotebook *, LXAArchive *, LXAArchiveSupport *, gint n);
+LXAArchive* xa_notebook_page_get_archive(XANotebook *, gint n);
+void xa_notebook_set_icon_theme(XANotebook *, GtkIconTheme *);
+void xa_notebook_get_active_archive(XANotebook *, LXAArchive **, LXAArchiveSupport **);
GtkWidget * xa_notebook_get_active_child(XANotebook *notebook);
gboolean xa_notebook_get_multi_tab(XANotebook *notebook);
Modified: xarchiver/branches/xarchiver-psybsd/src/tool_bar.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/tool_bar.c 2006-11-10 22:00:24 UTC (rev 23815)
+++ xarchiver/branches/xarchiver-psybsd/src/tool_bar.c 2006-11-10 23:04:11 UTC (rev 23816)
@@ -200,15 +200,23 @@
gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->up_button), 1);
gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->home_button), 1);
}
- if(xa_archive_store_has_future(XA_NAVIGATION_BAR(tool_bar)->store))
- gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->forward_button), 1);
- else
- gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->forward_button), 0);
+ if(XA_NAVIGATION_BAR(tool_bar)->store)
+ {
+ if(xa_archive_store_has_future(XA_NAVIGATION_BAR(tool_bar)->store))
+ gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->forward_button), 1);
+ else
+ gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->forward_button), 0);
- if(xa_archive_store_has_history(XA_NAVIGATION_BAR(tool_bar)->store))
- gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->back_button), 1);
+ if(xa_archive_store_has_history(XA_NAVIGATION_BAR(tool_bar)->store))
+ gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->back_button), 1);
+ else
+ gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->back_button), 0);
+ }
else
+ {
gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->back_button), 0);
+ gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->forward_button), 0);
+ }
}
static void
More information about the Xfce4-commits
mailing list