[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