[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