[Xfce4-commits] r23595 - in xarchiver/branches/xarchiver-psybsd: libxarchiver src

Stephan Arts stephan at xfce.org
Thu Nov 2 10:29:13 CET 2006


Author: stephan
Date: 2006-11-02 09:29:09 +0000 (Thu, 02 Nov 2006)
New Revision: 23595

Modified:
   xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c
   xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h
   xarchiver/branches/xarchiver-psybsd/src/Makefile.am
   xarchiver/branches/xarchiver-psybsd/src/archive_store.c
   xarchiver/branches/xarchiver-psybsd/src/archive_store.h
   xarchiver/branches/xarchiver-psybsd/src/main.c
   xarchiver/branches/xarchiver-psybsd/src/main_window.c
   xarchiver/branches/xarchiver-psybsd/src/main_window.h
Log:
Started cleaning up main window
(added tabs, while i'm at it.)

Broke command-line opening of archive.



Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c	2006-11-02 06:43:28 UTC (rev 23594)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c	2006-11-02 09:29:09 UTC (rev 23595)
@@ -116,7 +116,7 @@
 	return strcmp(entry1->filename, entry2->filename);
 }
 
-static gint lxa_archive_signals[1];
+static gint lxa_archive_signals[2];
 
 GType
 lxa_archive_get_type ()
@@ -161,6 +161,17 @@
 			G_TYPE_NONE,
 			0,
 			NULL);
+
+	lxa_archive_signals[1] = g_signal_new("lxa_refreshed",
+			G_TYPE_FROM_CLASS(archive_class),
+			G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+			0,
+			NULL,
+			NULL,
+			g_cclosure_marshal_VOID__VOID,
+			G_TYPE_NONE,
+			0,
+			NULL);
 }
 
 static void
@@ -234,6 +245,9 @@
 			archive->old_status = archive->status;
 			archive->status = status;
 			g_signal_emit(G_OBJECT(archive), lxa_archive_signals[0], 0, archive);
+			if((archive->old_status == LXA_ARCHIVESTATUS_REFRESH) &&
+			  (archive->status == LXA_ARCHIVESTATUS_IDLE))
+				g_signal_emit(G_OBJECT(archive), lxa_archive_signals[1], 0, archive);
 		} 
 	}
 	LXA_ARCHIVE_WRITE_UNLOCK(&archive->rw_lock);
@@ -1258,3 +1272,8 @@
 	return (*((guint64 *)props_iter));
 }
 
+const gchar *
+lxa_archive_get_filename(LXAArchive *archive)
+{
+	return g_basename(archive->path);
+}

Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h	2006-11-02 06:43:28 UTC (rev 23594)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h	2006-11-02 09:29:09 UTC (rev 23595)
@@ -99,6 +99,7 @@
 LXAArchive         *lxa_archive_new(gchar *, const gchar *);
 
 void                lxa_archive_set_status(LXAArchive *archive, LXAArchiveStatus status);
+const gchar *       lxa_archive_get_filename(LXAArchive *archive);
 
 /* new */
 gboolean            lxa_archive_iter_is_directory(const LXAArchive *, const LXAArchiveIter *);

Modified: xarchiver/branches/xarchiver-psybsd/src/Makefile.am
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/Makefile.am	2006-11-02 06:43:28 UTC (rev 23594)
+++ xarchiver/branches/xarchiver-psybsd/src/Makefile.am	2006-11-02 09:29:09 UTC (rev 23595)
@@ -17,6 +17,7 @@
 	main.c main.h \
 	main_window.c main_window.h \
 	navigation_bar.c navigation_bar.h \
+	notebook.c notebook.h \
 	$(TOOLBAR_FILES) \
 	$(PATHBAR_FILES) \
 	settings.c settings.h \

Modified: xarchiver/branches/xarchiver-psybsd/src/archive_store.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/archive_store.c	2006-11-02 06:43:28 UTC (rev 23594)
+++ xarchiver/branches/xarchiver-psybsd/src/archive_store.c	2006-11-02 09:29:09 UTC (rev 23595)
@@ -465,8 +465,11 @@
 
 	g_return_if_fail(archive);
 
+/*
 	if(store->props._show_icons)
 		column--;
+		*/
+	column--;
 
 	if(entry)
 	{

Modified: xarchiver/branches/xarchiver-psybsd/src/archive_store.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/archive_store.h	2006-11-02 06:43:28 UTC (rev 23594)
+++ xarchiver/branches/xarchiver-psybsd/src/archive_store.h	2006-11-02 09:29:09 UTC (rev 23595)
@@ -45,6 +45,7 @@
 	GObject parent;
 	gint stamp;
 	LXAArchive *archive;
+	LXAArchiveSupport *support;
 	GSList *current_entry;
 	gint sort_column;
 	GtkSortType sort_order;

Modified: xarchiver/branches/xarchiver-psybsd/src/main.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/main.c	2006-11-02 06:43:28 UTC (rev 23594)
+++ xarchiver/branches/xarchiver-psybsd/src/main.c	2006-11-02 09:29:09 UTC (rev 23595)
@@ -30,6 +30,7 @@
 #include "main.h"
 #include "archive_store.h"
 #include "navigation_bar.h"
+#include "notebook.h"
 #include "main_window.h"
 
 gboolean version = FALSE;
@@ -93,15 +94,7 @@
 void
 cb_main_window_destroy(XAMainWindow *window, gpointer data)
 {
-	if(window->lp_xa_archive)
-	{
-		lxa_close_archive(window->lp_xa_archive);
-		opened_archives--;
-	}
-	if(opened_archives <= 0)
-	{
-		gtk_main_quit();
-	}
+	gtk_main_quit();
 }
 
 int main(int argc, char **argv)
@@ -238,7 +231,6 @@
 
 	if(!new_archive && !add_archive_path && !extract_archive && !extract_archive_path)
 	{
-		
 		xa_icon_theme = gtk_icon_theme_get_default();
 		if(argc > 1)
 		{
@@ -249,19 +241,6 @@
 				main_window = xa_main_window_new(xa_icon_theme);
 				g_signal_connect(G_OBJECT(main_window), "destroy", G_CALLBACK(cb_main_window_destroy), NULL);
 
-				if(!xa_main_window_open_archive(XA_MAIN_WINDOW(main_window), argv[i]))
-				{
-					opened_archives++;
-					gtk_widget_set_size_request(main_window, 500, 350);
-					gtk_widget_show_all(main_window);
-				} else
-				{
-					gtk_widget_destroy(main_window);
-					dialog = gtk_message_dialog_new (NULL,GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,_("Xarchiver\nERROR: Could not open file \"%s\""), argv[i]);
-					gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_YES);
-					gtk_dialog_run (GTK_DIALOG (dialog) );
-					gtk_widget_destroy (GTK_WIDGET (dialog) );
-				}
 			}
 			opened_archives--;
 			if(opened_archives <= 0)

Modified: xarchiver/branches/xarchiver-psybsd/src/main_window.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/main_window.c	2006-11-02 06:43:28 UTC (rev 23594)
+++ xarchiver/branches/xarchiver-psybsd/src/main_window.c	2006-11-02 09:29:09 UTC (rev 23595)
@@ -36,7 +36,9 @@
 #include "tool_bar.h"
 #endif /* ENABLE_TOOLBAR */
 
+#include "notebook.h"
 #include "main_window.h"
+
 #include "new_dialog.h"
 #include "extract_dialog.h"
 #include "add_dialog.h"
@@ -55,22 +57,14 @@
 static void
 xa_main_window_finalize(GObject *object);
 
-void 
-xa_main_window_set_contents(XAMainWindow *, LXAArchive *);
 
-void
-xa_main_window_reset_columns(XAMainWindow *window);
+static void cb_xa_main_new_archive(GtkWidget *widget, gpointer userdata);
+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_stop_archive(GtkWidget *widget, gpointer userdata);
 
-void
-xa_main_window_archive_destroyed(LXAArchive *archive, XAMainWindow *window);
 
-
-void
-cb_xa_main_close_archive(GtkWidget *widget, gpointer userdata);
-
-void
-cb_xa_main_settings_archive(GtkWidget *widget, gpointer userdata);
-
 GType
 xa_main_window_get_type ()
 {
@@ -136,24 +130,18 @@
 		xa_settings_write_entry(window->settings, "NavigationBar", "None");
 	}
 
-	xa_settings_write_bool_entry(window->settings, "ShowIcons", xa_archive_store_get_show_icons(XA_ARCHIVE_STORE(window->treemodel)));
-	xa_settings_write_bool_entry(window->settings, "SortCaseSensitive", xa_archive_store_get_sort_case_sensitive(XA_ARCHIVE_STORE(window->treemodel)));
-	xa_settings_write_bool_entry(window->settings, "SortFoldersFirst", xa_archive_store_get_sort_folders_first(XA_ARCHIVE_STORE(window->treemodel)));
 	xa_settings_save(window->settings);
 
 	gtk_widget_unref(GTK_WIDGET(window->navigationbar));
-	xa_archive_store_set_contents(XA_ARCHIVE_STORE(window->treemodel), NULL);
 }
 
 static void
 xa_main_window_init(XAMainWindow *window)
 {
 	GtkWidget     *main_vbox;
-	GtkWidget     *menubar, *toolbar;
-	GtkWidget     *menu_separator;
+	GtkWidget     *toolbar;
 	GtkToolItem   *tool_separator;
 	GtkWidget     *tmp_image;
-	GtkAccelGroup *accel_group = gtk_accel_group_new();
 	const gchar   *nav_bar;
 	gboolean up_dir = TRUE;
 	gboolean show_icons = TRUE;
@@ -164,86 +152,8 @@
 
 	main_vbox = gtk_vbox_new(FALSE, 0);
 
-	menubar = gtk_menu_bar_new();
 	toolbar = gtk_toolbar_new();
 
-	window->menubar.menu_item_archive = gtk_menu_item_new_with_mnemonic(_("_Archive"));
-	window->menubar.menu_item_action = gtk_menu_item_new_with_mnemonic(_("A_ction"));
-	window->menubar.menu_item_help = gtk_menu_item_new_with_mnemonic(_("_Help"));
-
-	gtk_container_add(GTK_CONTAINER(menubar), window->menubar.menu_item_archive);
-	gtk_container_add(GTK_CONTAINER(menubar), window->menubar.menu_item_action);
-	gtk_container_add(GTK_CONTAINER(menubar), window->menubar.menu_item_help);
-
-	window->menubar.menu_archive = gtk_menu_new();
-	window->menubar.menu_action = gtk_menu_new();
-	window->menubar.menu_help = gtk_menu_new();
-
-	gtk_menu_item_set_submenu(GTK_MENU_ITEM(window->menubar.menu_item_archive), window->menubar.menu_archive);
-	gtk_menu_item_set_submenu(GTK_MENU_ITEM(window->menubar.menu_item_action), window->menubar.menu_action);
-	gtk_menu_item_set_submenu(GTK_MENU_ITEM(window->menubar.menu_item_help), window->menubar.menu_help);
-
-/* Archive menu */
-	window->menubar.menu_item_new = gtk_image_menu_item_new_from_stock(GTK_STOCK_NEW, accel_group);
-	gtk_container_add(GTK_CONTAINER(window->menubar.menu_archive), window->menubar.menu_item_new);
-
-	window->menubar.menu_item_open = gtk_image_menu_item_new_from_stock(GTK_STOCK_OPEN, accel_group);
-	gtk_container_add(GTK_CONTAINER(window->menubar.menu_archive), window->menubar.menu_item_open);
-
-	menu_separator = gtk_separator_menu_item_new();
-	gtk_container_add(GTK_CONTAINER(window->menubar.menu_archive), menu_separator);
-
-	window->menubar.menu_item_properties = gtk_image_menu_item_new_from_stock(GTK_STOCK_PROPERTIES, accel_group);
-	gtk_container_add(GTK_CONTAINER(window->menubar.menu_archive), window->menubar.menu_item_properties);
-
-	window->menubar.menu_item_close = gtk_image_menu_item_new_from_stock(GTK_STOCK_CLOSE, accel_group);
-	gtk_container_add(GTK_CONTAINER(window->menubar.menu_archive), window->menubar.menu_item_close);
-
-	menu_separator = gtk_separator_menu_item_new();
-	gtk_container_add(GTK_CONTAINER(window->menubar.menu_archive), menu_separator);
-
-	window->menubar.menu_item_quit = gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT, accel_group);
-	gtk_container_add(GTK_CONTAINER(window->menubar.menu_archive), window->menubar.menu_item_quit);
-
-	g_signal_connect(G_OBJECT(window->menubar.menu_item_new), "activate", G_CALLBACK(cb_xa_main_new_archive), window);
-	g_signal_connect(G_OBJECT(window->menubar.menu_item_open), "activate", G_CALLBACK(cb_xa_main_open_archive), window);
-	g_signal_connect(G_OBJECT(window->menubar.menu_item_close), "activate", G_CALLBACK(cb_xa_main_close_archive), window);
-	/* g_signal_connect(G_OBJECT(window->menubar.menu_item_properties), "activate", NULL, NULL);*/
-	g_signal_connect(G_OBJECT(window->menubar.menu_item_quit), "activate", G_CALLBACK(gtk_main_quit), window);
-
-/* Action menu */
-	tmp_image = xa_main_window_find_image("add_button.png", GTK_ICON_SIZE_MENU);
-	window->menubar.menu_item_add = 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_container_add(GTK_CONTAINER(window->menubar.menu_action), window->menubar.menu_item_add);
-
-	tmp_image = xa_main_window_find_image("extract_button.png", GTK_ICON_SIZE_MENU);
-	window->menubar.menu_item_extract = 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);
-	gtk_container_add(GTK_CONTAINER(window->menubar.menu_action), window->menubar.menu_item_extract);
-
-	window->menubar.menu_item_remove = gtk_image_menu_item_new_from_stock(GTK_STOCK_DELETE, accel_group);
-	gtk_container_add(GTK_CONTAINER(window->menubar.menu_action), window->menubar.menu_item_remove);
-
-	menu_separator = gtk_separator_menu_item_new();
-	gtk_container_add(GTK_CONTAINER(window->menubar.menu_action), menu_separator);
-
-	window->menubar.menu_item_settings = gtk_image_menu_item_new_from_stock(GTK_STOCK_PREFERENCES, accel_group);
-	gtk_container_add(GTK_CONTAINER(window->menubar.menu_action), window->menubar.menu_item_settings);
-
-	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_settings), "activate", G_CALLBACK(cb_xa_main_settings_archive), window);
-
-	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);
-	gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_close), FALSE);
-
-/* Help menu */
-	window->menubar.menu_item_about = gtk_image_menu_item_new_from_stock(GTK_STOCK_ABOUT, accel_group);
-	gtk_container_add(GTK_CONTAINER(window->menubar.menu_help), window->menubar.menu_item_about);
-
 /* Archive pane */
 	window->toolbar.tool_item_new = gtk_tool_button_new_from_stock(GTK_STOCK_NEW);
 	window->toolbar.tool_item_open = gtk_tool_button_new_from_stock(GTK_STOCK_OPEN);
@@ -319,51 +229,25 @@
 	gtk_widget_ref(GTK_WIDGET(window->navigationbar));
 
 /* main view */
-	window->scrollwindow = gtk_scrolled_window_new(NULL, NULL);
-	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(window->scrollwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-
-	window->treeview = gtk_tree_view_new();
-	/* gtk_tree_view_set_rules_hint(window->treeview, TRUE); */
-
-	gtk_tree_view_set_enable_search(GTK_TREE_VIEW(window->treeview), TRUE);
-	GtkTreeSelection *selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW (window->treeview) );
-	gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
-
-	gtk_container_add(GTK_CONTAINER(window->scrollwindow), window->treeview);
-
-	gtk_widget_show(window->scrollwindow);
-	gtk_widget_show(window->treeview);
+	window->notebook = xa_notebook_new(window->navigationbar);
 /* Statusbar */
 
 	window->statusbar = gtk_statusbar_new();
 
-	gtk_box_pack_start(GTK_BOX(main_vbox), menubar, FALSE, FALSE, 0);
 	gtk_box_pack_start(GTK_BOX(main_vbox), toolbar, FALSE, FALSE, 0);
 
 	if(window->navigationbar)
 		gtk_box_pack_start(GTK_BOX(main_vbox), GTK_WIDGET(window->navigationbar), FALSE, FALSE, 0);
 
-	gtk_box_pack_start(GTK_BOX(main_vbox), window->scrollwindow, TRUE, TRUE, 0);
+	gtk_box_pack_start(GTK_BOX(main_vbox), window->notebook, TRUE, TRUE, 0);
 	gtk_box_pack_end(GTK_BOX(main_vbox), window->statusbar, FALSE, FALSE, 0);
 
 	gtk_widget_show(main_vbox);
-	gtk_widget_show_all(menubar);
 	gtk_widget_show_all(toolbar);
+	gtk_widget_show_all(window->notebook);
 	gtk_widget_show_all(window->statusbar);
 
 	gtk_container_add(GTK_CONTAINER(window), main_vbox);
-
-	/* archive model */
-	window->treemodel = xa_archive_store_new(NULL, show_icons, up_dir, window->icon_theme);
-
-	xa_archive_store_set_sort_case_sensitive(XA_ARCHIVE_STORE(window->treemodel), sort_case);
-	xa_archive_store_set_sort_folders_first (XA_ARCHIVE_STORE(window->treemodel), sort_folders);
-
-	xa_archive_store_connect_treeview(XA_ARCHIVE_STORE(window->treemodel), GTK_TREE_VIEW(window->treeview));
-	gtk_tree_view_set_model(GTK_TREE_VIEW(window->treeview), GTK_TREE_MODEL(window->treemodel));
-
-	if(window->navigationbar)
-		xa_navigation_bar_set_store(window->navigationbar, XA_ARCHIVE_STORE(window->treemodel));
 }
 
 GtkWidget *
@@ -378,12 +262,12 @@
 
 	XA_MAIN_WINDOW(window)->icon_theme = icon_theme;
 
+	xa_notebook_set_icon_theme(XA_NOTEBOOK(XA_MAIN_WINDOW(window)->notebook), icon_theme);
+
 	icon = gtk_icon_theme_load_icon(icon_theme, "xarchiver", 24, 0, NULL);
 
 	gtk_window_set_icon(GTK_WINDOW(window), icon);
 
-	xa_archive_store_set_icon_theme(XA_ARCHIVE_STORE(XA_MAIN_WINDOW(window)->treemodel), icon_theme);
-
 	return window;
 }
 
@@ -429,16 +313,17 @@
 	return file_image;
 }
 
-void
+
+static void
 cb_xa_main_new_archive(GtkWidget *widget, gpointer userdata)
 {
-	GtkWidget *dialog = NULL;
+	GtkWidget *dialog = xa_new_archive_dialog_new();
 	gchar *new_archive_path = NULL;
 	XAMainWindow *window = XA_MAIN_WINDOW(userdata);
-	LXAArchiveSupport *lp_support = NULL;
+	LXAArchive *archive = NULL;
+	LXAArchiveSupport *support = NULL;
 	gint result = 0;
-	
-	dialog = xa_new_archive_dialog_new();
+
 	result = gtk_dialog_run (GTK_DIALOG (dialog) );
 	if(result == GTK_RESPONSE_CANCEL || result == GTK_RESPONSE_DELETE_EVENT)
 	{
@@ -448,61 +333,29 @@
 	if(result == GTK_RESPONSE_OK)
 	{
 		new_archive_path = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
-		if(window->lp_xa_archive)
+		
+		if(!lxa_new_archive(new_archive_path, TRUE, NULL, &archive))
 		{
-			xa_archive_store_set_contents(XA_ARCHIVE_STORE(window->treemodel), NULL);
-			g_object_unref(window->lp_xa_archive);
-			window->lp_xa_archive = NULL;
+			support = lxa_get_support_for_mime(lxa_mime_info_get_name(archive->mime_info));
+			xa_notebook_add_archive(XA_NOTEBOOK(window->notebook), archive, support);
 		}
-		if(!lxa_new_archive(new_archive_path, TRUE, NULL, &(window->lp_xa_archive)))
+		else
 		{
-			g_debug("Archive opened");
-			g_signal_connect(G_OBJECT(window->lp_xa_archive), "lxa_status_changed", G_CALLBACK(xa_main_window_archive_status_changed), window);
-			lp_support = lxa_get_support_for_mime(lxa_mime_info_get_name(window->lp_xa_archive->mime_info));
 
-			gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_close), TRUE);
-			gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_new), TRUE);
-			gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_open), TRUE);
-			gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_add), TRUE);
-			gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_remove), FALSE);
-			gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_extract), FALSE);
-
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_new), TRUE);
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_open), TRUE);
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add), TRUE);
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_remove), FALSE);
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_extract), FALSE);
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_stop), FALSE);
 		}
-		else
-			g_debug("Archive-creation failed");
 		gtk_widget_destroy (GTK_WIDGET (dialog) );
 	}
-}
 
-void
-cb_xa_main_close_archive(GtkWidget *widget, gpointer userdata)
-{
-	XAMainWindow *window = XA_MAIN_WINDOW(userdata);
-	xa_archive_store_set_contents(XA_ARCHIVE_STORE(window->treemodel), NULL);
-	g_object_unref(window->lp_xa_archive);
-	window->lp_xa_archive = NULL;
 }
 
-void
-cb_xa_main_settings_archive(GtkWidget *widget, gpointer userdata)
-{
-	GtkWidget *dialog = xa_preferences_dialog_new();
-	gtk_dialog_run(GTK_DIALOG(dialog));
-	gtk_widget_destroy(dialog);
-}
-
-void
+static void
 cb_xa_main_open_archive(GtkWidget *widget, gpointer userdata)
 {
 	GtkWidget *dialog = NULL;
 	gchar *open_archive_path = NULL;
 	gint result = 0;
+	LXAArchive *archive = NULL;
+	LXAArchiveSupport *support = NULL;
 	XAMainWindow *window = XA_MAIN_WINDOW(userdata);
 	
 	dialog = gtk_file_chooser_dialog_new(_("Open archive"), 
@@ -513,317 +366,32 @@
 	result = gtk_dialog_run (GTK_DIALOG (dialog) );
 	if(result == GTK_RESPONSE_CANCEL || result == GTK_RESPONSE_DELETE_EVENT)
 	{
-		gtk_widget_destroy (GTK_WIDGET (dialog) );
+		gtk_widget_destroy (dialog);
 		return;
 	}
 	if(result == GTK_RESPONSE_OK)
 	{
 		open_archive_path = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
-		if(window->lp_xa_archive)
+		if(!lxa_open_archive(open_archive_path, &archive))
 		{
-			xa_archive_store_set_contents(XA_ARCHIVE_STORE(window->treemodel), NULL);
-			g_object_unref(window->lp_xa_archive);
-			window->lp_xa_archive = NULL;
+			support = lxa_get_support_for_mime(lxa_mime_info_get_name(archive->mime_info));
+			xa_notebook_add_archive(XA_NOTEBOOK(window->notebook), archive, support);
 		}
-
-		if(xa_main_window_open_archive(window, open_archive_path))
-		{
-			gtk_widget_destroy (GTK_WIDGET (dialog) );
-			dialog = gtk_message_dialog_new(GTK_WINDOW(window), 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Archive could not be opened");
-			gtk_dialog_run(GTK_DIALOG(dialog));
-		}
-
-		gtk_widget_destroy (GTK_WIDGET (dialog) );
+		gtk_widget_destroy(dialog);
 	}
-
 }
 
-void
+static void
 cb_xa_main_add_to_archive(GtkWidget *widget, gpointer userdata)
 {
-/*	XAMainWindow *window = XA_MAIN_WINDOW(userdata);*/
 }
 
-void
+static void
 cb_xa_main_extract_archive(GtkWidget *widget, gpointer userdata)
 {
-	GtkWidget *dialog = NULL;
-	gchar *extract_archive_path = NULL;
-	gint result = 0;
-	XAMainWindow *window = XA_MAIN_WINDOW(userdata);
-	LXAArchiveSupport *lp_support = NULL;
-	GSList *filenames = NULL;
-	gchar *filename = NULL;
-	GtkTreeModel *treemodel = gtk_tree_view_get_model(GTK_TREE_VIEW(window->treeview));
-	GtkTreeIter iter;
-	GtkTreeSelection *selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW (window->treeview) );
-
-	lp_support = lxa_get_support_for_mime(lxa_mime_info_get_name(window->lp_xa_archive->mime_info));
-
-
-	dialog = xa_extract_archive_dialog_new(lp_support, window->lp_xa_archive, gtk_tree_selection_count_selected_rows (selection));
-	result = gtk_dialog_run (GTK_DIALOG (dialog) );
-	if(result == GTK_RESPONSE_OK)
-	{
-		gtk_widget_hide(GTK_WIDGET(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)))
-		{
-			GList *rows = gtk_tree_selection_get_selected_rows(selection, &treemodel);
-			GList *_rows = rows;
-			while(_rows)
-			{
-				gtk_tree_model_get_iter(GTK_TREE_MODEL(treemodel), &iter, _rows->data);
-
-				filename = xa_archive_store_get_filename(XA_ARCHIVE_STORE(treemodel), &iter);
-				
-				filenames = g_slist_prepend(filenames, g_strconcat(xa_archive_store_get_pwd(XA_ARCHIVE_STORE(treemodel)), filename, NULL));
-
-				_rows = _rows->next;
-			}
-			g_list_free(rows);
-		}
-		lxa_archive_support_extract(lp_support, window->lp_xa_archive, extract_archive_path, filenames);
-		g_free(extract_archive_path);
-		extract_archive_path = NULL;
-	}
-	gtk_widget_destroy (GTK_WIDGET (dialog) );
 }
 
-void
+static void
 cb_xa_main_stop_archive(GtkWidget *widget, gpointer userdata)
 {
-	XAMainWindow *window = XA_MAIN_WINDOW(userdata);
-	
-	lxa_stop_archive_child(window->lp_xa_archive);
 }
-
-void
-xa_main_window_archive_destroyed(LXAArchive *archive, XAMainWindow *window)
-{
-	GtkTreeModel *liststore = window->treemodel;
-	GList *columns = gtk_tree_view_get_columns(GTK_TREE_VIEW(window->treeview));
-
-	xa_archive_store_set_contents(XA_ARCHIVE_STORE(liststore), NULL);
-/*	xa_archive_tree_store_set_contents(XA_ARCHIVE_TREE_STORE(liststore), NULL); */
-
-	while(columns)
-	{
-		gtk_tree_view_remove_column(GTK_TREE_VIEW(window->treeview), columns->data);
-		columns = columns->next;
-	}
-	g_list_free(columns);
-
-	if(archive == window->lp_xa_archive)
-		xa_archive_store_set_contents(XA_ARCHIVE_STORE(window->treemodel), NULL);
-		window->lp_xa_archive = NULL;
-	
-	gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_close), FALSE);
-	gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_new), TRUE);
-	gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_open), TRUE);
-	gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_add), FALSE);
-	gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_remove), FALSE);
-	gtk_widget_set_sensitive(GTK_WIDGET(window->menubar.menu_item_extract), FALSE);
-
-	gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_new), TRUE);
-	gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_open), TRUE);
-	gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add), FALSE);
-	gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_remove), FALSE);
-	gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_extract), FALSE);
-	gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_stop), FALSE);
-}
-
-gint
-xa_main_window_open_archive(XAMainWindow *window, gchar *archive_path)
-{
-	LXAArchiveSupport *lp_support = NULL;
-
-	if(!lxa_open_archive(archive_path, &window->lp_xa_archive))
-	{
-		g_signal_connect(G_OBJECT(window->lp_xa_archive), "lxa_status_changed", G_CALLBACK(xa_main_window_archive_status_changed), window);
-		lp_support = lxa_get_support_for_mime(lxa_mime_info_get_name(window->lp_xa_archive->mime_info));
-
-		lxa_archive_support_refresh(lp_support, window->lp_xa_archive);
-		return 0;
-	}
-
-	return 1;
-}
-
-/*
- *
- *
- */
-void
-xa_main_window_archive_status_changed(LXAArchive *archive, gpointer userdata)
-{
-	XAMainWindow *main_window = XA_MAIN_WINDOW(userdata);
-	gchar *status_message = NULL; 
-	switch(archive->status)
-	{
-		case(LXA_ARCHIVESTATUS_INIT):
-			status_message = g_strdup(_("Initializing archive..."));
-			break;
-		case(LXA_ARCHIVESTATUS_REFRESH):
-			status_message = g_strdup( _("Reading archive contents..."));
-			break;
-		case(LXA_ARCHIVESTATUS_EXTRACT):
-			status_message = g_strdup(_("Extracting archive..."));
-			break;
-		case(LXA_ARCHIVESTATUS_ADD):
-			status_message = g_strdup(_("Adding file(s) to archive..."));
-			break;
-		case(LXA_ARCHIVESTATUS_REMOVE):
-			status_message = g_strdup(_("Removing file(s) from archive..."));
-			break;
-		case(LXA_ARCHIVESTATUS_ERROR):
-			status_message = g_strdup(_("Error"));
-			break;
-		case(LXA_ARCHIVESTATUS_USERBREAK):
-			status_message = g_strdup(_("Cancelled"));
-			break;
-		case(LXA_ARCHIVESTATUS_IDLE):
-			status_message = g_strdup(_("Done"));
-			gtk_widget_set_sensitive(GTK_WIDGET(main_window->menubar.menu_item_close), TRUE);
-			switch(archive->old_status)
-			{
-
-				case(LXA_ARCHIVESTATUS_REFRESH):
-					xa_main_window_reset_columns(main_window);
-
-					xa_main_window_set_contents(main_window, archive);
-				case(LXA_ARCHIVESTATUS_EXTRACT):
-					gtk_widget_set_sensitive(GTK_WIDGET(main_window->menubar.menu_item_add), TRUE);
-					gtk_widget_set_sensitive(GTK_WIDGET(main_window->menubar.menu_item_remove), TRUE);
-					gtk_widget_set_sensitive(GTK_WIDGET(main_window->menubar.menu_item_extract), TRUE);
-					gtk_widget_set_sensitive(GTK_WIDGET(main_window->toolbar.tool_item_add), TRUE);
-					gtk_widget_set_sensitive(GTK_WIDGET(main_window->toolbar.tool_item_remove), TRUE);
-					gtk_widget_set_sensitive(GTK_WIDGET(main_window->toolbar.tool_item_extract), TRUE);
-					break;
-				default:
-					break;
-			}
-			break;
-	}
-	if((archive->status != LXA_ARCHIVESTATUS_IDLE) && 
-		(archive->status != LXA_ARCHIVESTATUS_ERROR) && 
-		(archive->status != LXA_ARCHIVESTATUS_USERBREAK))
-
-	{
-		gtk_widget_set_sensitive(GTK_WIDGET(main_window->menubar.menu_item_new), FALSE);
-		gtk_widget_set_sensitive(GTK_WIDGET(main_window->menubar.menu_item_open), FALSE);
-		gtk_widget_set_sensitive(GTK_WIDGET(main_window->menubar.menu_item_add), FALSE);
-		gtk_widget_set_sensitive(GTK_WIDGET(main_window->menubar.menu_item_remove), FALSE);
-		gtk_widget_set_sensitive(GTK_WIDGET(main_window->menubar.menu_item_extract), FALSE);
-
-		gtk_widget_set_sensitive(GTK_WIDGET(main_window->toolbar.tool_item_new), FALSE);
-		gtk_widget_set_sensitive(GTK_WIDGET(main_window->toolbar.tool_item_open), FALSE);
-		gtk_widget_set_sensitive(GTK_WIDGET(main_window->toolbar.tool_item_add), FALSE);
-		gtk_widget_set_sensitive(GTK_WIDGET(main_window->toolbar.tool_item_remove), FALSE);
-		gtk_widget_set_sensitive(GTK_WIDGET(main_window->toolbar.tool_item_extract), FALSE);
-
-		gtk_widget_set_sensitive(GTK_WIDGET(main_window->toolbar.tool_item_stop), TRUE);
-	}
-	else
-	{
-		gtk_widget_set_sensitive(GTK_WIDGET(main_window->menubar.menu_item_new), TRUE);
-		gtk_widget_set_sensitive(GTK_WIDGET(main_window->menubar.menu_item_open), TRUE);
-
-		gtk_widget_set_sensitive(GTK_WIDGET(main_window->toolbar.tool_item_new), TRUE);
-		gtk_widget_set_sensitive(GTK_WIDGET(main_window->toolbar.tool_item_open), TRUE);
-		gtk_widget_set_sensitive(GTK_WIDGET(main_window->toolbar.tool_item_stop), FALSE);
-	}
-	gtk_statusbar_push(GTK_STATUSBAR(main_window->statusbar), 1, status_message);
-}
-
-void
-xa_main_window_reset_columns(XAMainWindow *window)
-{
-	GtkCellRenderer *renderer = NULL;
-	GtkTreeViewColumn *column = NULL;
-	LXAArchive *archive = window->lp_xa_archive;
-	gint x = 0;
-
-	GValue *value = g_new0(GValue, 1);
-	value = g_value_init(value, G_TYPE_UINT);
-	g_value_set_uint(value, GTK_ICON_SIZE_SMALL_TOOLBAR);
-
-	GList *columns = gtk_tree_view_get_columns(GTK_TREE_VIEW(window->treeview));
-	gboolean show_only_filenames = FALSE;
-	while(columns)
-	{
-		gtk_tree_view_remove_column(GTK_TREE_VIEW(window->treeview), columns->data);
-		columns = columns->next;
-	}
-	g_list_free(columns);
-
-	if(xa_archive_store_get_show_icons(XA_ARCHIVE_STORE(window->treemodel)))
-	{
-		column = gtk_tree_view_column_new();
-		renderer = gtk_cell_renderer_pixbuf_new();
-		g_object_set_property(G_OBJECT(renderer), "stock-size", value);
-		gtk_tree_view_column_pack_start(column, renderer, FALSE);
-		gtk_tree_view_column_set_attributes(column, renderer, "icon-name", 0, NULL);
-
-		renderer = gtk_cell_renderer_text_new();
-		gtk_tree_view_column_pack_start(column, renderer, TRUE);
-		gtk_tree_view_column_set_attributes(column, renderer, "text", LXA_ARCHIVE_PROP_FILENAME + 1, NULL);
-
-		gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
-		gtk_tree_view_column_set_sort_column_id(column, LXA_ARCHIVE_PROP_FILENAME + 1);
-		gtk_tree_view_column_set_title(column, lxa_archive_get_property_name(archive, LXA_ARCHIVE_PROP_FILENAME));
-		gtk_tree_view_append_column(GTK_TREE_VIEW(window->treeview), column);
-	}
-	else
-	{
-		column = gtk_tree_view_column_new();
-		renderer = gtk_cell_renderer_text_new();
-		gtk_tree_view_column_pack_start(column, renderer, TRUE);
-		gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
-		gtk_tree_view_column_set_attributes(column, renderer, "text", LXA_ARCHIVE_PROP_FILENAME, NULL);
-		gtk_tree_view_column_set_sort_column_id(column, LXA_ARCHIVE_PROP_FILENAME);
-		gtk_tree_view_column_set_title(column, lxa_archive_get_property_name(archive, LXA_ARCHIVE_PROP_FILENAME));
-		gtk_tree_view_append_column(GTK_TREE_VIEW(window->treeview), column);
-	}
-
-
-	if(!show_only_filenames)
-	{
-		for(x = LXA_ARCHIVE_PROP_USER; x < lxa_archive_n_property(archive); ++x)
-		{
-			switch(lxa_archive_get_property_type(archive, x))
-			{
-				case(G_TYPE_STRING):
-				case(G_TYPE_UINT64):
-					renderer = gtk_cell_renderer_text_new();
-					if(xa_archive_store_get_show_icons(XA_ARCHIVE_STORE(window->treemodel)))
-						column = gtk_tree_view_column_new_with_attributes(lxa_archive_get_property_name(archive, x), renderer, "text", x+1, NULL);
-					else
-						column = gtk_tree_view_column_new_with_attributes(lxa_archive_get_property_name(archive, x), renderer, "text", x, NULL);
-					break;
-			}
-			gtk_tree_view_column_set_resizable(column, TRUE);
-			if(xa_archive_store_get_show_icons(XA_ARCHIVE_STORE(window->treemodel)))
-				gtk_tree_view_column_set_sort_column_id(column, x+1);
-			else
-				gtk_tree_view_column_set_sort_column_id(column, x);
-			gtk_tree_view_append_column(GTK_TREE_VIEW(window->treeview), column);
-		}
-	}
-	gtk_tree_view_set_search_column(GTK_TREE_VIEW(window->treeview), 1);
-}
-
-void
-xa_main_window_set_contents(XAMainWindow *main_window, LXAArchive *archive)
-{
-	GtkTreeModel *liststore = main_window->treemodel;
-	g_object_ref(liststore);
-
-	gtk_tree_view_set_model(GTK_TREE_VIEW(main_window->treeview), NULL);
-
-	xa_archive_store_set_contents(XA_ARCHIVE_STORE(liststore), archive);
-//	xa_archive_tree_store_set_contents(XA_ARCHIVE_TREE_STORE(liststore), archive);
-
-	gtk_tree_view_set_model(GTK_TREE_VIEW(main_window->treeview), GTK_TREE_MODEL(liststore));
-}
-

Modified: xarchiver/branches/xarchiver-psybsd/src/main_window.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/main_window.h	2006-11-02 06:43:28 UTC (rev 23594)
+++ xarchiver/branches/xarchiver-psybsd/src/main_window.h	2006-11-02 09:29:09 UTC (rev 23595)
@@ -51,12 +51,8 @@
 struct _XAMainWindow
 {
 	GtkWindow parent;
-	GtkWidget *treeview;
-	GtkTreeModel *treemodel;
-	GtkWidget *scrollwindow;
-	GtkWidget *statusbar;
-	XANavigationBar *navigationbar;
 	XASettings *settings;
+	GtkIconTheme *icon_theme;
 	struct {
 		GtkWidget *menu_item_archive;
 		GtkWidget *menu_archive;
@@ -98,12 +94,9 @@
 		GtkToolItem *tool_item_remove;
 		GtkToolItem *tool_item_stop;
 	} toolbar;
-	GtkIconTheme *icon_theme;
-	LXAArchive *lp_xa_archive;
-	LXAArchiveSupport *lp_xa_support;
-	//struct {
-	//	gboolean   _show_icons;
-	//} props;
+	XANavigationBar *navigationbar;
+	GtkWidget *notebook;
+	GtkWidget *statusbar;
 };
 
 typedef struct _XAMainWindowClass XAMainWindowClass;
@@ -117,15 +110,6 @@
 GtkWidget *xa_main_window_find_image(gchar *, GtkIconSize);
 GType      xa_main_window_get_type ();
 
-void cb_xa_main_new_archive(GtkWidget *widget, gpointer userdata);
-void cb_xa_main_open_archive(GtkWidget *widget, gpointer userdata);
-void cb_xa_main_extract_archive(GtkWidget *widget, gpointer userdata);
-void cb_xa_main_add_to_archive(GtkWidget *widget, gpointer userdata);
-void cb_xa_main_stop_archive(GtkWidget *widget, gpointer userdata);
 
-void xa_main_window_archive_status_changed(LXAArchive *archive, gpointer userdata);
-gint xa_main_window_open_archive(XAMainWindow *window, gchar *archive_path);
-gchar *xa_main_window_get_working_dir(XAMainWindow *window);
-
 G_END_DECLS
 #endif /* __XARCHIVER_MAIN_WINDOW_H__ */



More information about the Xfce4-commits mailing list