[Xfce4-commits] r25699 - in squeeze/trunk: libsqueeze src

Stephan Arts stephan at xfce.org
Thu May 10 12:02:38 CEST 2007


Author: stephan
Date: 2007-05-10 10:02:38 +0000 (Thu, 10 May 2007)
New Revision: 25699

Removed:
   squeeze/trunk/src/add_dialog.c
   squeeze/trunk/src/add_dialog.h
Modified:
   squeeze/trunk/libsqueeze/archive.c
   squeeze/trunk/libsqueeze/command-builder-compr.c
   squeeze/trunk/libsqueeze/command-builder-gnu-tar.c
   squeeze/trunk/libsqueeze/command-builder-rar.c
   squeeze/trunk/libsqueeze/command-builder-zip.c
   squeeze/trunk/libsqueeze/command-builder.h
   squeeze/trunk/libsqueeze/libsqueeze-archive.h
   squeeze/trunk/libsqueeze/libsqueeze.c
   squeeze/trunk/libsqueeze/libsqueeze.h
   squeeze/trunk/src/Makefile.am
   squeeze/trunk/src/application.c
   squeeze/trunk/src/main_window.c
   squeeze/trunk/src/main_window.h
   squeeze/trunk/src/new_dialog.c
Log:
changed stuff

Modified: squeeze/trunk/libsqueeze/archive.c
===================================================================
--- squeeze/trunk/libsqueeze/archive.c	2007-05-09 20:55:21 UTC (rev 25698)
+++ squeeze/trunk/libsqueeze/archive.c	2007-05-10 10:02:38 UTC (rev 25699)
@@ -356,6 +356,15 @@
 		return NULL;
 }
 
+LSQSupportType
+lsq_archive_get_support_mask(const LSQArchive *archive)
+{
+	if(archive->builder)
+		return archive->builder->support_mask;
+	else
+		return 0;
+}
+
 void
 lsq_archive_refreshed(const LSQArchive *archive)
 {

Modified: squeeze/trunk/libsqueeze/command-builder-compr.c
===================================================================
--- squeeze/trunk/libsqueeze/command-builder-compr.c	2007-05-09 20:55:21 UTC (rev 25698)
+++ squeeze/trunk/libsqueeze/command-builder-compr.c	2007-05-10 10:02:38 UTC (rev 25699)
@@ -99,6 +99,8 @@
 {
 	LSQCommandBuilder *command_builder = LSQ_COMMAND_BUILDER(command_builder_compr);
 
+	command_builder->support_mask = LSQ_SUPPORT_FILES;
+
 	command_builder->build_add = lsq_command_builder_compr_build_add;
 	command_builder->build_extract = lsq_command_builder_compr_build_extract;
 	command_builder->build_remove = lsq_command_builder_compr_build_remove;

Modified: squeeze/trunk/libsqueeze/command-builder-gnu-tar.c
===================================================================
--- squeeze/trunk/libsqueeze/command-builder-gnu-tar.c	2007-05-09 20:55:21 UTC (rev 25698)
+++ squeeze/trunk/libsqueeze/command-builder-gnu-tar.c	2007-05-10 10:02:38 UTC (rev 25699)
@@ -110,6 +110,10 @@
 {
 	LSQCommandBuilder *command_builder = LSQ_COMMAND_BUILDER(command_builder_gnu_tar);
 
+	command_builder->support_mask = LSQ_SUPPORT_FILES | 
+	                                LSQ_SUPPORT_FOLDERS |
+	                                LSQ_SUPPORT_MANY;
+
 	command_builder->build_add = lsq_command_builder_gnu_tar_build_add;
 	command_builder->build_extract = lsq_command_builder_gnu_tar_build_extract;
 	command_builder->build_remove = lsq_command_builder_gnu_tar_build_remove;

Modified: squeeze/trunk/libsqueeze/command-builder-rar.c
===================================================================
--- squeeze/trunk/libsqueeze/command-builder-rar.c	2007-05-09 20:55:21 UTC (rev 25698)
+++ squeeze/trunk/libsqueeze/command-builder-rar.c	2007-05-10 10:02:38 UTC (rev 25699)
@@ -105,6 +105,10 @@
 {
 	LSQCommandBuilder *command_builder = LSQ_COMMAND_BUILDER(command_builder_rar);
 
+	command_builder->support_mask = LSQ_SUPPORT_FILES | 
+	                                LSQ_SUPPORT_FOLDERS |
+	                                LSQ_SUPPORT_MANY;
+
 	gchar *rar_path = g_find_program_in_path("rar");
 	gchar *unrar_path = g_find_program_in_path("unrar");
 

Modified: squeeze/trunk/libsqueeze/command-builder-zip.c
===================================================================
--- squeeze/trunk/libsqueeze/command-builder-zip.c	2007-05-09 20:55:21 UTC (rev 25698)
+++ squeeze/trunk/libsqueeze/command-builder-zip.c	2007-05-10 10:02:38 UTC (rev 25699)
@@ -94,6 +94,10 @@
 {
 	LSQCommandBuilder *command_builder = LSQ_COMMAND_BUILDER(command_builder_zip);
 
+	command_builder->support_mask = LSQ_SUPPORT_FILES | 
+	                                LSQ_SUPPORT_FOLDERS |
+	                                LSQ_SUPPORT_MANY;
+
 	gchar *zip_path = g_find_program_in_path("zip");
 	gchar *unzip_path = g_find_program_in_path("unzip");
 

Modified: squeeze/trunk/libsqueeze/command-builder.h
===================================================================
--- squeeze/trunk/libsqueeze/command-builder.h	2007-05-09 20:55:21 UTC (rev 25698)
+++ squeeze/trunk/libsqueeze/command-builder.h	2007-05-10 10:02:38 UTC (rev 25699)
@@ -21,13 +21,16 @@
 		G_TYPE_CHECK_CLASS_TYPE ((klass),        \
 			LSQ_TYPE_COMMAND_BUILDER))
 
+
+
 typedef struct _LSQCommandBuilder LSQCommandBuilder;
 
 struct _LSQCommandBuilder
 {
-	GObject       parent;
-	gchar        *id;
-	gchar       **mime_types;
+	GObject          parent;
+	gchar           *id;
+	gchar          **mime_types;
+	LSQSupportType   support_mask;
 
 	LSQBuilderSettings *settings;
 

Modified: squeeze/trunk/libsqueeze/libsqueeze-archive.h
===================================================================
--- squeeze/trunk/libsqueeze/libsqueeze-archive.h	2007-05-09 20:55:21 UTC (rev 25698)
+++ squeeze/trunk/libsqueeze/libsqueeze-archive.h	2007-05-10 10:02:38 UTC (rev 25699)
@@ -24,6 +24,13 @@
 	LSQ_ARCHIVE_PROP_USER
 };
 
+typedef enum
+{
+	LSQ_SUPPORT_FILES    = 1 << 0x0,
+	LSQ_SUPPORT_FOLDERS  = 1 << 0x1,
+	LSQ_SUPPORT_MANY     = 1 << 0x2
+} LSQSupportType;
+
 typedef struct _LSQArchiveIter LSQArchiveIter;
 
 #define LSQ_TYPE_ARCHIVE lsq_archive_get_type()
@@ -55,6 +62,7 @@
 gchar          *lsq_archive_get_filename(const LSQArchive *archive);
 const gchar    *lsq_archive_get_mimetype(const LSQArchive *archive);
 gboolean        lsq_archive_exists(const LSQArchive *archive);
+LSQSupportType  lsq_archive_get_support_mask(const LSQArchive *archive);
 
 #ifdef DEBUG
 LSQArchiveIter *_lsq_archive_iter_ref(LSQArchiveIter *iter, const gchar*, int);
@@ -65,6 +73,7 @@
 */
 #endif
 
+
 LSQArchiveIter *lsq_archive_iter_ref(LSQArchiveIter *iter);
 void            lsq_archive_iter_unref(LSQArchiveIter *iter);
 

Modified: squeeze/trunk/libsqueeze/libsqueeze.c
===================================================================
--- squeeze/trunk/libsqueeze/libsqueeze.c	2007-05-09 20:55:21 UTC (rev 25698)
+++ squeeze/trunk/libsqueeze/libsqueeze.c	2007-05-10 10:02:38 UTC (rev 25699)
@@ -131,10 +131,10 @@
 
 
 GSList *
-lsq_get_supported_mime_types(LSQSupportTypes types)
+lsq_get_supported_mime_types(LSQOperationSupportType types)
 {
 	GSList *m_types = g_slist_copy(lsq_mime_info_list);
-	if(types &= LSQ_SUPPORT_ADD)
+	if(types &= LSQ_OPERATION_SUPPORT_ADD)
 	{
 		GSList *_types = m_types;
 		while(_types)

Modified: squeeze/trunk/libsqueeze/libsqueeze.h
===================================================================
--- squeeze/trunk/libsqueeze/libsqueeze.h	2007-05-09 20:55:21 UTC (rev 25698)
+++ squeeze/trunk/libsqueeze/libsqueeze.h	2007-05-10 10:02:38 UTC (rev 25699)
@@ -26,12 +26,13 @@
 
 typedef enum
 {
-	LSQ_SUPPORT_ADD = 1,
-	LSQ_SUPPORT_REMOVE = 2,
-	LSQ_SUPPORT_REFRESH = 3,
-	LSQ_SUPPORT_EXTRACT = 4
-} LSQSupportTypes;
+	LSQ_OPERATION_SUPPORT_ADD = 1 << 0x0,
+	LSQ_OPERATION_SUPPORT_REMOVE = 1 << 0x1,
+	LSQ_OPERATION_SUPPORT_EXTRACT = 1 << 0x2,
+	LSQ_OPERATION_SUPPORT_SHOW = 1 << 0x3
+} LSQOperationSupportType;
 
+
 /*
  * void
  * lsq_init()
@@ -81,7 +82,7 @@
 lsq_close_archive( LSQArchive *archive );
 
 GSList *
-lsq_get_supported_mime_types(LSQSupportTypes);
+lsq_get_supported_mime_types(LSQOperationSupportType types);
 
 gboolean
 lsq_is_supported(const gchar *filename);

Modified: squeeze/trunk/src/Makefile.am
===================================================================
--- squeeze/trunk/src/Makefile.am	2007-05-09 20:55:21 UTC (rev 25698)
+++ squeeze/trunk/src/Makefile.am	2007-05-10 10:02:38 UTC (rev 25699)
@@ -27,7 +27,6 @@
 	throbber-fallback.c	throbber-fallback.h \
 	throbber.c	throbber.h \
 	new_dialog.c new_dialog.h \
-	add_dialog.c add_dialog.h \
 	extract_dialog.c extract_dialog.h \
 	widget_factory.c widget_factory.h 
 #	location_entry.c location_entry.h

Deleted: squeeze/trunk/src/add_dialog.c

Deleted: squeeze/trunk/src/add_dialog.h

Modified: squeeze/trunk/src/application.c
===================================================================
--- squeeze/trunk/src/application.c	2007-05-09 20:55:21 UTC (rev 25698)
+++ squeeze/trunk/src/application.c	2007-05-10 10:02:38 UTC (rev 25699)
@@ -22,7 +22,6 @@
 #include <libsqueeze/libsqueeze.h>
 
 #include "new_dialog.h"
-#include "add_dialog.h"
 #include "message_dialog.h"
 #include "extract_dialog.h"
 

Modified: squeeze/trunk/src/main_window.c
===================================================================
--- squeeze/trunk/src/main_window.c	2007-05-09 20:55:21 UTC (rev 25698)
+++ squeeze/trunk/src/main_window.c	2007-05-10 10:02:38 UTC (rev 25699)
@@ -60,7 +60,6 @@
 
 #include "new_dialog.h"
 #include "extract_dialog.h"
-#include "add_dialog.h"
 
 #include "main.h"
 
@@ -86,7 +85,8 @@
 static void cb_sq_main_new_archive(GtkWidget *widget, gpointer userdata);
 static void cb_sq_main_open_archive(GtkWidget *widget, gpointer userdata);
 static void cb_sq_main_extract_archive(GtkWidget *widget, gpointer userdata);
-static void cb_sq_main_add_to_archive(GtkWidget *widget, gpointer userdata);
+static void cb_sq_main_add_files_to_archive(GtkWidget *widget, gpointer userdata);
+static void cb_sq_main_add_folders_to_archive(GtkWidget *widget, gpointer userdata);
 static void cb_sq_main_remove_from_archive(GtkWidget *widget, gpointer userdata);
 static void cb_sq_main_close_archive(GtkWidget *widget, gpointer userdata);
 static void cb_sq_main_stop_archive(GtkWidget *widget, gpointer userdata);
@@ -313,11 +313,17 @@
 		gtk_menu_item_set_submenu(GTK_MENU_ITEM(window->menubar.menu_item_action), window->menubar.menu_action);
 
 		tmp_image = sq_main_window_find_image("archive-add.png", GTK_ICON_SIZE_MENU);
-		window->menubar.menu_item_add = g_object_ref(gtk_image_menu_item_new_with_mnemonic(_("_Add")));
-		gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(window->menubar.menu_item_add), tmp_image);
-		gtk_widget_set_sensitive(window->menubar.menu_item_add, FALSE);
-		gtk_container_add(GTK_CONTAINER(window->menubar.menu_action), window->menubar.menu_item_add);
+		window->menubar.menu_item_add_files = g_object_ref(gtk_image_menu_item_new_with_mnemonic(_("_Add files")));
+		gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(window->menubar.menu_item_add_files), tmp_image);
+		gtk_widget_set_sensitive(window->menubar.menu_item_add_files, FALSE);
+		gtk_container_add(GTK_CONTAINER(window->menubar.menu_action), window->menubar.menu_item_add_files);
 
+		tmp_image = sq_main_window_find_image("archive-add.png", GTK_ICON_SIZE_MENU);
+		window->menubar.menu_item_add_folders = g_object_ref(gtk_image_menu_item_new_with_mnemonic(_("_Add _folders")));
+		gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(window->menubar.menu_item_add_folders), tmp_image);
+		gtk_widget_set_sensitive(window->menubar.menu_item_add_folders, FALSE);
+		gtk_container_add(GTK_CONTAINER(window->menubar.menu_action), window->menubar.menu_item_add_folders);
+
 		tmp_image = sq_main_window_find_image("archive-extract.png", GTK_ICON_SIZE_MENU);
 		window->menubar.menu_item_extract = g_object_ref(gtk_image_menu_item_new_with_mnemonic(_("_Extract")));
 		gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(window->menubar.menu_item_extract), tmp_image);
@@ -332,7 +338,8 @@
 		gtk_widget_set_sensitive(window->menubar.menu_item_refresh, FALSE);
 		gtk_container_add(GTK_CONTAINER(window->menubar.menu_action), window->menubar.menu_item_refresh);
 
-		g_signal_connect(G_OBJECT(window->menubar.menu_item_add), "activate", G_CALLBACK(cb_sq_main_add_to_archive), window);
+		g_signal_connect(G_OBJECT(window->menubar.menu_item_add_files), "activate", G_CALLBACK(cb_sq_main_add_files_to_archive), window);
+		g_signal_connect(G_OBJECT(window->menubar.menu_item_add_folders), "activate", G_CALLBACK(cb_sq_main_add_folders_to_archive), window);
 		g_signal_connect(G_OBJECT(window->menubar.menu_item_extract), "activate", G_CALLBACK(cb_sq_main_extract_archive), window);
 		g_signal_connect(G_OBJECT(window->menubar.menu_item_remove), "activate", G_CALLBACK(cb_sq_main_remove_from_archive), window);
 		g_signal_connect(G_OBJECT(window->menubar.menu_item_refresh), "activate", G_CALLBACK(cb_sq_main_refresh_archive), window);
@@ -421,9 +428,13 @@
 
 	/* Action pane */
 		tmp_image = sq_main_window_find_image("archive-add.png", GTK_ICON_SIZE_LARGE_TOOLBAR);
-		window->toolbar.tool_item_add = gtk_tool_button_new(tmp_image, _("Add"));
-		gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add), FALSE);
+		window->toolbar.tool_item_add_files = gtk_tool_button_new(tmp_image, _("Add files"));
+		gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add_files), FALSE);
 
+		tmp_image = sq_main_window_find_image("archive-add.png", GTK_ICON_SIZE_LARGE_TOOLBAR);
+		window->toolbar.tool_item_add_folders = gtk_tool_button_new(tmp_image, _("Add folders"));
+		gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add_folders), FALSE);
+
 		tmp_image = sq_main_window_find_image("archive-extract.png", GTK_ICON_SIZE_LARGE_TOOLBAR);
 		window->toolbar.tool_item_extract = gtk_tool_button_new(tmp_image, _("Extract"));
 		gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_extract), FALSE);
@@ -433,12 +444,14 @@
 
 		tool_separator = gtk_separator_tool_item_new ();
 
-		gtk_container_add(GTK_CONTAINER(window->tool_bar), GTK_WIDGET(window->toolbar.tool_item_add));
+		gtk_container_add(GTK_CONTAINER(window->tool_bar), GTK_WIDGET(window->toolbar.tool_item_add_files));
+		gtk_container_add(GTK_CONTAINER(window->tool_bar), GTK_WIDGET(window->toolbar.tool_item_add_folders));
 		gtk_container_add(GTK_CONTAINER(window->tool_bar), GTK_WIDGET(window->toolbar.tool_item_extract));
 		gtk_container_add(GTK_CONTAINER(window->tool_bar), GTK_WIDGET(window->toolbar.tool_item_remove));
 		gtk_container_add(GTK_CONTAINER(window->tool_bar), GTK_WIDGET(tool_separator));
 
-		g_signal_connect(G_OBJECT(window->toolbar.tool_item_add), "clicked", G_CALLBACK(cb_sq_main_add_to_archive), window);
+		g_signal_connect(G_OBJECT(window->toolbar.tool_item_add_files), "clicked", G_CALLBACK(cb_sq_main_add_files_to_archive), window);
+		g_signal_connect(G_OBJECT(window->toolbar.tool_item_add_folders), "clicked", G_CALLBACK(cb_sq_main_add_folders_to_archive), window);
 		g_signal_connect(G_OBJECT(window->toolbar.tool_item_extract), "clicked", G_CALLBACK(cb_sq_main_extract_archive), window);
 		g_signal_connect(G_OBJECT(window->toolbar.tool_item_remove), "clicked", G_CALLBACK(cb_sq_main_remove_from_archive), window);
 
@@ -633,6 +646,7 @@
 	gchar *archive_path = NULL;
 	SQMainWindow *window = SQ_MAIN_WINDOW(userdata);
 	LSQArchive *archive = NULL;
+	LSQSupportType support_mask = 0;
 	gint result = 0;
 
 	result = gtk_dialog_run (GTK_DIALOG (dialog) );
@@ -647,15 +661,24 @@
 		
 		if(!lsq_new_archive(archive_path, TRUE, NULL, &archive))
 		{
+			support_mask = lsq_archive_get_support_mask(archive);
 			sq_notebook_add_archive(SQ_NOTEBOOK(window->notebook), archive, TRUE);
-			gtk_widget_set_sensitive(window->menubar.menu_item_add, TRUE);
+			if(support_mask & LSQ_SUPPORT_FILES)
+				gtk_widget_set_sensitive(window->menubar.menu_item_add_files, TRUE);
+			if(support_mask & LSQ_SUPPORT_FOLDERS)
+				gtk_widget_set_sensitive(window->menubar.menu_item_add_folders, TRUE);
+
 			gtk_widget_set_sensitive(window->menubar.menu_item_extract, TRUE);
 			gtk_widget_set_sensitive(window->menubar.menu_item_remove, TRUE);
 			gtk_widget_set_sensitive(window->menubar.menu_item_refresh, TRUE);
 
 			if(window->tool_bar)
 			{
-				gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add), TRUE);
+				if(support_mask & LSQ_SUPPORT_FILES)
+					gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add_files), TRUE);
+				if(support_mask & LSQ_SUPPORT_FOLDERS)
+					gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add_folders), 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);
 
@@ -802,7 +825,7 @@
 }
 
 static void
-cb_sq_main_add_to_archive(GtkWidget *widget, gpointer userdata)
+cb_sq_main_add_files_to_archive(GtkWidget *widget, gpointer userdata)
 {
 	SQMainWindow *window = SQ_MAIN_WINDOW(userdata);
 
@@ -812,13 +835,20 @@
 	gint result;
 	sq_notebook_get_active_archive(SQ_NOTEBOOK(window->notebook), &lp_archive);
 
-	dialog = sq_add_dialog_new();
+	dialog = gtk_file_chooser_dialog_new(_("Add files"), 
+	                                     GTK_WINDOW(window),
+	                                     GTK_FILE_CHOOSER_ACTION_OPEN,
+	                                     GTK_STOCK_CANCEL,
+	                                     GTK_RESPONSE_CANCEL,
+	                                     GTK_STOCK_OPEN,
+	                                     GTK_RESPONSE_OK,
+	                                     NULL);
 
 	result = gtk_dialog_run (GTK_DIALOG(dialog));
 	if(result == GTK_RESPONSE_OK)
 	{
 		gtk_widget_hide(dialog);
-		filenames = sq_add_dialog_get_filenames(SQ_ADD_DIALOG(dialog));
+		filenames = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog));
 		if(filenames)
 		{
 			if(!lsq_archive_add(lp_archive, filenames))
@@ -837,6 +867,49 @@
 }
 
 static void
+cb_sq_main_add_folders_to_archive(GtkWidget *widget, gpointer userdata)
+{
+	SQMainWindow *window = SQ_MAIN_WINDOW(userdata);
+
+	LSQArchive        *lp_archive = NULL;
+	GtkWidget         *dialog = NULL;
+	GSList            *filenames = NULL;
+	gint result;
+	sq_notebook_get_active_archive(SQ_NOTEBOOK(window->notebook), &lp_archive);
+
+	dialog = gtk_file_chooser_dialog_new(_("Add folders"),
+	                                     GTK_WINDOW(window),
+	                                     GTK_FILE_CHOOSER_ACTION_OPEN,
+	                                     GTK_STOCK_CANCEL,
+	                                     GTK_RESPONSE_CANCEL,
+	                                     GTK_STOCK_OPEN,
+	                                     GTK_RESPONSE_OK,
+	                                     NULL);
+
+	result = gtk_dialog_run (GTK_DIALOG(dialog));
+	if(result == GTK_RESPONSE_OK)
+	{
+		gtk_widget_hide(dialog);
+		filenames = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog));
+		if(filenames)
+		{
+			if(!lsq_archive_add(lp_archive, filenames))
+			{
+				GtkWidget *warning_dialog = gtk_message_dialog_new(GTK_WINDOW(window),
+				                      GTK_DIALOG_DESTROY_WITH_PARENT, 
+				                      GTK_MESSAGE_WARNING,
+				                      GTK_BUTTONS_CLOSE,
+				                      _("Squeeze cannot add folders to this archive type,\n"
+				                        "the application to support this is missing."));
+				gtk_dialog_run (GTK_DIALOG (warning_dialog) );
+				gtk_widget_destroy(warning_dialog);
+			}
+		}
+	}
+	gtk_widget_destroy (dialog);
+}
+
+static void
 cb_sq_main_remove_from_archive(GtkWidget *widget, gpointer userdata)
 {
 	SQMainWindow *window = SQ_MAIN_WINDOW(userdata);
@@ -1051,14 +1124,15 @@
 		if(window->menu_bar)
 		{
 			sq_throbber_set_animated(SQ_THROBBER(window->throbber), FALSE);
-			gtk_widget_set_sensitive(window->menubar.menu_item_add, TRUE);
+			/* FIXME: */
+			/* gtk_widget_set_sensitive(window->menubar.menu_item_add, TRUE); */
 			gtk_widget_set_sensitive(window->menubar.menu_item_extract, TRUE);
 			gtk_widget_set_sensitive(window->menubar.menu_item_remove, TRUE);
 			gtk_widget_set_sensitive(window->menubar.menu_item_refresh, TRUE);
 		}
 		if(window->tool_bar)
 		{
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add), 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);
@@ -1069,7 +1143,8 @@
 		if(window->menu_bar)
 		{
 			sq_throbber_set_animated(SQ_THROBBER(window->throbber), TRUE);
-			gtk_widget_set_sensitive(window->menubar.menu_item_add, FALSE);
+			/* FIXME: */
+			/* gtk_widget_set_sensitive(window->menubar.menu_item_add, FALSE); */
 			gtk_widget_set_sensitive(window->menubar.menu_item_extract, FALSE);
 			gtk_widget_set_sensitive(window->menubar.menu_item_remove, FALSE);
 			gtk_widget_set_sensitive(window->menubar.menu_item_refresh, FALSE);
@@ -1077,7 +1152,7 @@
 
 		if(window->tool_bar)
 		{
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add), FALSE);
+			/* 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);
@@ -1099,7 +1174,8 @@
 			gtk_widget_set_sensitive(window->menubar.menu_item_close, FALSE);
 			/*gtk_widget_set_sensitive(window->menubar.menu_item_properties, FALSE);*/
 
-			gtk_widget_set_sensitive(window->menubar.menu_item_add, FALSE);
+			/* FIXME: */
+			/*gtk_widget_set_sensitive(window->menubar.menu_item_add, FALSE);*/
 			gtk_widget_set_sensitive(window->menubar.menu_item_extract, FALSE);
 			gtk_widget_set_sensitive(window->menubar.menu_item_remove, FALSE);
 			gtk_widget_set_sensitive(window->menubar.menu_item_refresh, FALSE);
@@ -1107,7 +1183,7 @@
 
 		if(window->tool_bar)
 		{
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add), FALSE);
+			/* 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), FALSE);
@@ -1276,6 +1352,7 @@
 cb_sq_main_window_notebook_state_changed(SQNotebook *notebook, LSQArchive *archive, gpointer userdata)
 {
 	SQMainWindow *window = SQ_MAIN_WINDOW(userdata);
+	LSQSupportType support_mask = lsq_archive_get_support_mask(archive);
 
 	guint context_id = gtk_statusbar_get_context_id(GTK_STATUSBAR(window->statusbar), "Window Statusbar");
 	const gchar *message = lsq_archive_get_status(archive);
@@ -1285,7 +1362,10 @@
 		message = _("Done");
 		if(window->menu_bar)
 		{
-			gtk_widget_set_sensitive(window->menubar.menu_item_add, TRUE);
+			if(support_mask & LSQ_SUPPORT_FILES)
+				gtk_widget_set_sensitive(window->menubar.menu_item_add_files, TRUE);
+			if(support_mask & LSQ_SUPPORT_FOLDERS)
+				gtk_widget_set_sensitive(window->menubar.menu_item_add_folders, TRUE);
 			gtk_widget_set_sensitive(window->menubar.menu_item_extract, TRUE);
 			gtk_widget_set_sensitive(window->menubar.menu_item_remove, TRUE);
 			gtk_widget_set_sensitive(window->menubar.menu_item_refresh, TRUE);
@@ -1293,7 +1373,10 @@
 
 		if(window->tool_bar)
 		{
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add), TRUE);
+			if(support_mask & LSQ_SUPPORT_FILES)
+				gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add_files), TRUE);
+			if(support_mask & LSQ_SUPPORT_FOLDERS)
+				gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add_folders), 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);
 
@@ -1306,7 +1389,8 @@
 		if(window->menu_bar)
 		{
 			sq_throbber_set_animated(SQ_THROBBER(window->throbber), TRUE);
-			gtk_widget_set_sensitive(window->menubar.menu_item_add, FALSE);
+			gtk_widget_set_sensitive(window->menubar.menu_item_add_files, FALSE);
+			gtk_widget_set_sensitive(window->menubar.menu_item_add_folders, FALSE);
 			gtk_widget_set_sensitive(window->menubar.menu_item_extract, FALSE);
 			gtk_widget_set_sensitive(window->menubar.menu_item_remove, FALSE);
 			gtk_widget_set_sensitive(window->menubar.menu_item_refresh, FALSE);
@@ -1314,7 +1398,8 @@
 
 		if(window->tool_bar)
 		{
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add), FALSE);
+			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add_files), FALSE);
+			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add_folders), 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);
 

Modified: squeeze/trunk/src/main_window.h
===================================================================
--- squeeze/trunk/src/main_window.h	2007-05-09 20:55:21 UTC (rev 25698)
+++ squeeze/trunk/src/main_window.h	2007-05-10 10:02:38 UTC (rev 25699)
@@ -90,7 +90,8 @@
 		GtkWidget *menu_item_action;
 		GtkWidget *menu_action;
 		/* contents of 'action' menu */
-			GtkWidget *menu_item_add;
+			GtkWidget *menu_item_add_files;
+			GtkWidget *menu_item_add_folders;
 			GtkWidget *menu_item_extract;
 			GtkWidget *menu_item_remove;
 			GtkWidget *menu_item_refresh;
@@ -116,7 +117,8 @@
 		GtkToolItem *tool_item_open;
 
 		/* contents of 'action' pane */
-		GtkToolItem *tool_item_add;
+		GtkToolItem *tool_item_add_files;
+		GtkToolItem *tool_item_add_folders;
 		GtkToolItem *tool_item_extract;
 		GtkToolItem *tool_item_remove;
 		GtkToolItem *tool_item_stop;

Modified: squeeze/trunk/src/new_dialog.c
===================================================================
--- squeeze/trunk/src/new_dialog.c	2007-05-09 20:55:21 UTC (rev 25698)
+++ squeeze/trunk/src/new_dialog.c	2007-05-10 10:02:38 UTC (rev 25699)
@@ -73,7 +73,7 @@
 
 	gtk_widget_show_all(hbox);
 
-	dialog->supported_mime_types = lsq_get_supported_mime_types(LSQ_SUPPORT_ADD);
+	dialog->supported_mime_types = lsq_get_supported_mime_types(LSQ_OPERATION_SUPPORT_ADD);
 	GSList *_supported_mime_types = dialog->supported_mime_types;
 
 	dialog->file_filter = gtk_file_filter_new();



More information about the Xfce4-commits mailing list