[Xfce4-commits] r23858 - in xarchiver/branches/xarchiver-psybsd: libxarchiver src
Stephan Arts
stephan at xfce.org
Mon Nov 13 23:41:28 CET 2006
Author: stephan
Date: 2006-11-13 22:41:26 +0000 (Mon, 13 Nov 2006)
New Revision: 23858
Modified:
xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c
xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h
xarchiver/branches/xarchiver-psybsd/src/main_window.c
Log:
Added 'remove' callback
Fixed 'stop' button sensitivity
Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c 2006-11-13 20:19:53 UTC (rev 23857)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c 2006-11-13 22:41:26 UTC (rev 23858)
@@ -1278,3 +1278,10 @@
g_return_val_if_fail(LXA_IS_ARCHIVE(archive), "<unknown>");
return g_basename(archive->path);
}
+
+LXAArchiveStatus
+lxa_archive_get_status(LXAArchive *archive)
+{
+ g_return_if_fail(LXA_IS_ARCHIVE(archive));
+ return archive->status;
+}
Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h 2006-11-13 20:19:53 UTC (rev 23857)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h 2006-11-13 22:41:26 UTC (rev 23858)
@@ -99,6 +99,7 @@
LXAArchive *lxa_archive_new(gchar *, const gchar *);
void lxa_archive_set_status(LXAArchive *archive, LXAArchiveStatus status);
+LXAArchiveStatus lxa_archive_get_status(LXAArchive *archive);
const gchar * lxa_archive_get_filename(LXAArchive *archive);
/* new */
Modified: xarchiver/branches/xarchiver-psybsd/src/main_window.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/main_window.c 2006-11-13 20:19:53 UTC (rev 23857)
+++ xarchiver/branches/xarchiver-psybsd/src/main_window.c 2006-11-13 22:41:26 UTC (rev 23858)
@@ -63,6 +63,7 @@
static void cb_xa_main_open_archive(GtkWidget *widget, gpointer userdata);
static void cb_xa_main_extract_archive(GtkWidget *widget, gpointer userdata);
static void cb_xa_main_add_to_archive(GtkWidget *widget, gpointer userdata);
+static void cb_xa_main_remove_from_archive(GtkWidget *widget, gpointer userdata);
static void cb_xa_main_close_archive(GtkWidget *widget, gpointer userdata);
static void cb_xa_main_stop_archive(GtkWidget *widget, gpointer userdata);
@@ -235,6 +236,7 @@
g_signal_connect(G_OBJECT(window->menubar.menu_item_add), "activate", G_CALLBACK(cb_xa_main_add_to_archive), window);
g_signal_connect(G_OBJECT(window->menubar.menu_item_extract), "activate", G_CALLBACK(cb_xa_main_extract_archive), window);
+ g_signal_connect(G_OBJECT(window->menubar.menu_item_remove), "clicked", G_CALLBACK(cb_xa_main_remove_from_archive), window);
/* View menu */
window->menubar.menu_item_view = gtk_menu_item_new_with_mnemonic(_("_View"));
@@ -299,6 +301,7 @@
g_signal_connect(G_OBJECT(window->toolbar.tool_item_add), "clicked", G_CALLBACK(cb_xa_main_add_to_archive), window);
g_signal_connect(G_OBJECT(window->toolbar.tool_item_extract), "clicked", G_CALLBACK(cb_xa_main_extract_archive), window);
+ g_signal_connect(G_OBJECT(window->toolbar.tool_item_remove), "clicked", G_CALLBACK(cb_xa_main_remove_from_archive), window);
/* control pane */
@@ -577,6 +580,22 @@
}
static void
+cb_xa_main_remove_from_archive(GtkWidget *widget, gpointer userdata)
+{
+ XAMainWindow *window = XA_MAIN_WINDOW(userdata);
+ GtkWidget *dialog = NULL;
+ gint result = 0;
+
+ dialog = gtk_message_dialog_new(GTK_WINDOW(window), GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "Are you sure you want to remove the selected files?");
+ result = gtk_dialog_run(GTK_DIALOG(dialog));
+ if(result == GTK_RESPONSE_OK)
+ {
+ gtk_widget_hide(dialog);
+ }
+ gtk_widget_destroy (dialog);
+}
+
+static void
cb_xa_main_close_archive(GtkWidget *widget, gpointer userdata)
{
XAMainWindow *window = XA_MAIN_WINDOW(userdata);
@@ -598,20 +617,33 @@
static void
cb_xa_main_window_notebook_page_switched(XANotebook *notebook, GtkNotebookPage *page, guint page_nr, gpointer data)
{
- LXAArchive *lp_archive;
+ LXAArchive *lp_archive = xa_notebook_page_get_archive(notebook, page_nr);
XAMainWindow *window = XA_MAIN_WINDOW(data);
- gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_add), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_extract), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_remove), TRUE);
+ if(lp_archive || lxa_archive_get_status(lp_archive) == LXA_ARCHIVESTATUS_IDLE)
+ {
+ gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_add), TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_extract), TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_remove), TRUE);
- 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);
+ 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), FALSE);
+ }
+ else
+ {
+ gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_add), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_extract), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_remove), FALSE);
- lp_archive = xa_notebook_page_get_archive(notebook, page_nr);
+ gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_extract), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_remove), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_stop), TRUE);
+ }
+
gtk_window_set_title(GTK_WINDOW(window), lxa_archive_get_filename(lp_archive));
}
More information about the Xfce4-commits
mailing list