[Xfce4-commits] r23700 - xarchiver/branches/xarchiver-psybsd/src

Stephan Arts stephan at xfce.org
Sat Nov 4 21:40:46 CET 2006


Author: stephan
Date: 2006-11-04 20:40:44 +0000 (Sat, 04 Nov 2006)
New Revision: 23700

Modified:
   xarchiver/branches/xarchiver-psybsd/src/archive_store.c
   xarchiver/branches/xarchiver-psybsd/src/archive_store.h
   xarchiver/branches/xarchiver-psybsd/src/main_window.c
   xarchiver/branches/xarchiver-psybsd/src/navigation_bar.c
   xarchiver/branches/xarchiver-psybsd/src/notebook.c
   xarchiver/branches/xarchiver-psybsd/src/tool_bar.c
Log:
Fixed toolbar stuff and closing of archive and tabs.



Modified: xarchiver/branches/xarchiver-psybsd/src/archive_store.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/archive_store.c	2006-11-04 19:39:20 UTC (rev 23699)
+++ xarchiver/branches/xarchiver-psybsd/src/archive_store.c	2006-11-04 20:40:44 UTC (rev 23700)
@@ -875,7 +875,7 @@
 	if(tree_model->props._sort_folders_first)
 		tree_model->sort_column = 1;
 
-	xa_archive_store_set_contents(tree_model, archive);
+	xa_archive_store_set_archive(tree_model, archive);
 
 	return GTK_TREE_MODEL(tree_model);
 }
@@ -1041,7 +1041,7 @@
 }
 
 void
-xa_archive_store_set_contents(XAArchiveStore *store, LXAArchive *archive)
+xa_archive_store_set_archive(XAArchiveStore *store, LXAArchive *archive)
 {
 	gint i = 0;
 	GtkTreePath *path_ = NULL;
@@ -1373,3 +1373,9 @@
 {
 	return archive_store->support;
 }
+
+void
+xa_archive_store_set_support(XAArchiveStore *archive_store, LXAArchiveSupport *support)
+{
+	archive_store->support = support;
+}

Modified: xarchiver/branches/xarchiver-psybsd/src/archive_store.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/archive_store.h	2006-11-04 19:39:20 UTC (rev 23699)
+++ xarchiver/branches/xarchiver-psybsd/src/archive_store.h	2006-11-04 20:40:44 UTC (rev 23700)
@@ -73,7 +73,6 @@
 
 GType xa_archive_store_get_type();
 GtkTreeModel * xa_archive_store_new(LXAArchive *archive, gboolean show_icons, gboolean show_up_dir, GtkIconTheme *icon_theme);
-void xa_archive_store_set_contents(XAArchiveStore *archive_store, LXAArchive *archive);
 void xa_archive_store_connect_treeview(XAArchiveStore *store, GtkTreeView *treeview);
 void xa_archive_store_go_up(XAArchiveStore *store);
 gchar * xa_archive_store_get_pwd(XAArchiveStore *store);
@@ -104,4 +103,7 @@
 LXAArchiveSupport *
 xa_archive_store_get_support(XAArchiveStore *archive_store);
 
+void xa_archive_store_set_archive(XAArchiveStore *archive_store, LXAArchive *archive);
+void xa_archive_store_set_support(XAArchiveStore *archive_store, LXAArchiveSupport *support);
+
 #endif /* __XARCHIVER_ARCHIVE_STORE_H__ */

Modified: xarchiver/branches/xarchiver-psybsd/src/main_window.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/main_window.c	2006-11-04 19:39:20 UTC (rev 23699)
+++ xarchiver/branches/xarchiver-psybsd/src/main_window.c	2006-11-04 20:40:44 UTC (rev 23700)
@@ -66,6 +66,8 @@
 
 static void
 cb_xa_main_window_notebook_page_switched(XANotebook *notebook, GtkNotebookPage *page, guint page_nr, gpointer data);
+static void
+cb_xa_main_window_notebook_page_removed(XANotebook *notebook, GtkNotebookPage *page, guint page_nr, gpointer data);
 
 
 GType
@@ -234,6 +236,7 @@
 /* main view */
 	window->notebook = xa_notebook_new(window->navigationbar);
 	g_signal_connect(G_OBJECT(window->notebook), "switch-page", G_CALLBACK(cb_xa_main_window_notebook_page_switched), window);
+	g_signal_connect(G_OBJECT(window->notebook), "page-removed", G_CALLBACK(cb_xa_main_window_notebook_page_removed), window);
 /* Statusbar */
 
 	window->statusbar = gtk_statusbar_new();
@@ -450,13 +453,24 @@
 static void
 cb_xa_main_window_notebook_page_switched(XANotebook *notebook, GtkNotebookPage *page, guint page_nr, gpointer data)
 {
-	if(gtk_notebook_get_n_pages(GTK_NOTEBOOK(notebook)))
+	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);
+}
+
+static void
+cb_xa_main_window_notebook_page_removed(XANotebook *notebook, GtkNotebookPage *page, guint page_nr, gpointer data)
+{
+	XAMainWindow *window = XA_MAIN_WINDOW(data);
+
+	if(!gtk_notebook_get_n_pages(GTK_NOTEBOOK(notebook)))
 	{
-		g_debug("Page switched");
+		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);
 	}
-	else /* All pages are closed */
-	{
-		g_debug("Everything is ok, detected last page removal");
-	}
-
 }

Modified: xarchiver/branches/xarchiver-psybsd/src/navigation_bar.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/navigation_bar.c	2006-11-04 19:39:20 UTC (rev 23699)
+++ xarchiver/branches/xarchiver-psybsd/src/navigation_bar.c	2006-11-04 20:40:44 UTC (rev 23700)
@@ -159,10 +159,12 @@
 		g_signal_connect(G_OBJECT(store), "xa-pwd-changed", (GCallback)navigation_bar->_cb_pwd_changed, navigation_bar);
 		g_signal_connect(G_OBJECT(store), "xa-new-archive", (GCallback)navigation_bar->_cb_new_archive, navigation_bar);
 		xa_archive_store_get_history(store, &navigation_bar->history, &navigation_bar->pwd);
-
-		/* should be signal, window might want to know */
-		g_signal_emit(G_OBJECT(navigation_bar), xa_navigation_bar_signals[0], 0, navigation_bar);
 	}
+	else
+	{
+		xa_navigation_bar_clear_history(navigation_bar);
+	}
+	g_signal_emit(G_OBJECT(navigation_bar), xa_navigation_bar_signals[0], 0, navigation_bar);
 }
 
 XANavigationBar *

Modified: xarchiver/branches/xarchiver-psybsd/src/notebook.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/notebook.c	2006-11-04 19:39:20 UTC (rev 23699)
+++ xarchiver/branches/xarchiver-psybsd/src/notebook.c	2006-11-04 20:40:44 UTC (rev 23700)
@@ -44,7 +44,7 @@
 xa_notebook_treeview_reset_columns(LXAArchive *archive, GtkTreeView *treeview);
 
 void
-cb_notebook_close_archive(GtkButton *button, XANotebook *notebook);
+cb_notebook_close_archive(GtkButton *button, GtkTreeView *treeview);
 
 void
 cb_notebook_archive_status_changed(LXAArchive *archive, XANotebook *notebook);
@@ -52,6 +52,8 @@
 cb_notebook_archive_refreshed(LXAArchive *archive, GtkTreeView *tree_view);
 static void
 cb_xa_notebook_page_switched(XANotebook *notebook, GtkNotebookPage *, guint page_nr, gpointer data);
+static void
+cb_xa_notebook_page_removed(XANotebook *notebook, GtkNotebookPage *page, guint page_nr, gpointer data);
 
 enum {
 	XA_NOTEBOOK_MULTI_TAB = 1
@@ -106,6 +108,7 @@
 xa_notebook_init(XANotebook *notebook)
 {
 	g_signal_connect(G_OBJECT(notebook), "switch-page", G_CALLBACK(cb_xa_notebook_page_switched), NULL);
+	g_signal_connect(G_OBJECT(notebook), "page-removed", G_CALLBACK(cb_xa_notebook_page_removed), NULL);
 	notebook->tool_tips = gtk_tooltips_new();
 	gtk_tooltips_enable(notebook->tool_tips);
 	gtk_notebook_set_tab_border(GTK_NOTEBOOK(notebook), 0);
@@ -199,6 +202,7 @@
 	g_signal_connect(G_OBJECT(close_button), "clicked", G_CALLBACK(cb_notebook_close_archive), tree_view);
 
 
+	xa_archive_store_set_support(XA_ARCHIVE_STORE(tree_model), support);
 	lxa_archive_support_refresh(support, archive);
 
 	xa_archive_store_connect_treeview(XA_ARCHIVE_STORE(tree_model), GTK_TREE_VIEW(tree_view));
@@ -216,8 +220,12 @@
 }
 
 void
-cb_notebook_close_archive(GtkButton *button, XANotebook *notebook)
+cb_notebook_close_archive(GtkButton *button, GtkTreeView *treeview)
 {
+	GtkNotebook *notebook = GTK_NOTEBOOK(gtk_widget_get_parent(GTK_WIDGET(treeview)));
+
+	gint n = gtk_notebook_page_num(notebook, GTK_WIDGET(treeview));
+	gtk_notebook_remove_page(notebook, n);
 }
 
 void
@@ -228,7 +236,7 @@
 	GtkTreeModel *archive_store = gtk_tree_view_get_model(treeview);
 	g_object_ref(archive_store);
 	gtk_tree_view_set_model(treeview, NULL);
-	xa_archive_store_set_contents(XA_ARCHIVE_STORE(archive_store), archive);
+	xa_archive_store_set_archive(XA_ARCHIVE_STORE(archive_store), archive);
 	gtk_tree_view_set_model(treeview, archive_store);
 }
 
@@ -307,6 +315,13 @@
 	xa_navigation_bar_set_store(notebook->navigation_bar, XA_ARCHIVE_STORE(archive_store));
 }
 
+static void
+cb_xa_notebook_page_removed(XANotebook *notebook, GtkNotebookPage *page, guint page_nr, gpointer data)
+{
+	if(!gtk_notebook_get_n_pages(GTK_NOTEBOOK(notebook)))
+		xa_navigation_bar_set_store(notebook->navigation_bar, NULL);
+}
+
 void
 xa_notebook_get_active_archive(XANotebook *notebook, LXAArchive **lp_archive, LXAArchiveSupport **lp_support)
 {

Modified: xarchiver/branches/xarchiver-psybsd/src/tool_bar.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/tool_bar.c	2006-11-04 19:39:20 UTC (rev 23699)
+++ xarchiver/branches/xarchiver-psybsd/src/tool_bar.c	2006-11-04 20:40:44 UTC (rev 23700)
@@ -365,10 +365,16 @@
 cb_xa_tool_bar_store_set(XANavigationBar *bar)
 {
 	XAToolBar *tool_bar = XA_TOOL_BAR(bar);
-
-	gchar *path= xa_archive_store_get_pwd(bar->store);
-
-	xa_tool_bar_refresh(tool_bar, path);
-	gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->hbox), TRUE);
-	g_free(path);
+	if(bar->store)
+	{
+		gchar *path= xa_archive_store_get_pwd(bar->store);
+		xa_tool_bar_refresh(tool_bar, path);
+		gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->hbox), TRUE);
+		g_free(path);
+	}
+	else
+	{
+		gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->hbox), FALSE);
+		xa_tool_bar_refresh(tool_bar, "");
+	}
 }



More information about the Xfce4-commits mailing list