[Xfce4-commits] r23906 - in xarchiver/branches/xarchiver-psybsd: . src

Stephan Arts stephan at xfce.org
Mon Nov 20 13:21:24 CET 2006


Author: stephan
Date: 2006-11-20 12:21:23 +0000 (Mon, 20 Nov 2006)
New Revision: 23906

Modified:
   xarchiver/branches/xarchiver-psybsd/TODO
   xarchiver/branches/xarchiver-psybsd/src/main.c
   xarchiver/branches/xarchiver-psybsd/src/main_window.c
   xarchiver/branches/xarchiver-psybsd/src/main_window.h
   xarchiver/branches/xarchiver-psybsd/src/notebook.c
   xarchiver/branches/xarchiver-psybsd/src/path_bar.h
   xarchiver/branches/xarchiver-psybsd/src/tool_bar.c
Log:
Changed stuff (run-time navigationbar toggling PARTIALLY COMPLETE)
Updated TODO



Modified: xarchiver/branches/xarchiver-psybsd/TODO
===================================================================
--- xarchiver/branches/xarchiver-psybsd/TODO	2006-11-20 10:31:50 UTC (rev 23905)
+++ xarchiver/branches/xarchiver-psybsd/TODO	2006-11-20 12:21:23 UTC (rev 23906)
@@ -49,4 +49,12 @@
 	When retrieving selected items from the treeview, forget the updir item
 	Add trailing '/' to folder filenames when getting it from treeview
 
+	Add 'View' support, with internal optional internal or external viewer.
+
+	Let Tab-labels change style on archive-status.
+
+	Add progressbar to statusbar.
+
+	Toggle navigationbar at runtime
+
   ... Complete TODO-file

Modified: xarchiver/branches/xarchiver-psybsd/src/main.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/main.c	2006-11-20 10:31:50 UTC (rev 23905)
+++ xarchiver/branches/xarchiver-psybsd/src/main.c	2006-11-20 12:21:23 UTC (rev 23906)
@@ -25,13 +25,14 @@
 #include <gettext.h>
 
 #include "settings.h"
-#include "main.h"
 #include "archive_store.h"
 #include "navigation_bar.h"
 #include "notebook.h"
 #include "application.h"
 #include "main_window.h"
 
+#include "main.h"
+
 gboolean version = FALSE;
 
 gboolean extract_archive  = FALSE;
@@ -99,8 +100,8 @@
 int main(int argc, char **argv)
 {
 	GtkWidget *main_window = NULL;
-	XAApplication *xa_app;
 	GtkIconTheme *xa_icon_theme;
+	XAApplication *xa_app = NULL;
 	GError *cli_error = NULL;
 	gint i = 0;
 

Modified: xarchiver/branches/xarchiver-psybsd/src/main_window.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/main_window.c	2006-11-20 10:31:50 UTC (rev 23905)
+++ xarchiver/branches/xarchiver-psybsd/src/main_window.c	2006-11-20 12:21:23 UTC (rev 23906)
@@ -76,7 +76,12 @@
 static void
 cb_xa_main_window_notebook_file_activated(XANotebook *, gchar *, gpointer);
 
+static void
+cb_xa_main_window_set_tool_bar(GtkWidget *widget, gpointer userdata);
+static void
+cb_xa_main_window_set_path_bar(GtkWidget *widget, gpointer userdata);
 
+
 GType
 xa_main_window_get_type ()
 {
@@ -149,14 +154,15 @@
 
 	xa_settings_save(window->settings);
 
-	gtk_widget_unref(GTK_WIDGET(window->navigationbar));
+	if(window->navigationbar)
+		gtk_widget_destroy(GTK_WIDGET(window->navigationbar));
+
 	g_object_unref(G_OBJECT(window->app));
 }
 
 static void
 xa_main_window_init(XAMainWindow *window)
 {
-	GtkWidget     *main_vbox;
 	GtkWidget     *toolbar;
 	GtkToolItem   *tool_separator;
 	GtkWidget     *menu_separator;
@@ -176,7 +182,7 @@
 
 	xa_settings_set_group(window->settings, "Global");
 
-	main_vbox = gtk_vbox_new(FALSE, 0);
+	window->main_vbox = gtk_vbox_new(FALSE, 0);
 
 	show_menubar = xa_settings_read_bool_entry(window->settings, "MenuBar", TRUE);
 
@@ -256,10 +262,12 @@
 #ifdef ENABLE_TOOLBAR
 		window->menubar.menu_item_tool_bar = gtk_radio_menu_item_new_with_mnemonic_from_widget(GTK_RADIO_MENU_ITEM(window->menubar.menu_item_no_bar), _("Toolbar style"));
 		gtk_container_add(GTK_CONTAINER(window->menubar.menu_nav_bar), window->menubar.menu_item_tool_bar);
+		g_signal_connect(G_OBJECT(window->menubar.menu_item_tool_bar), "toggled", G_CALLBACK(cb_xa_main_window_set_tool_bar), window);
 #endif /* ENABLE_TOOLBAR */
 #ifdef ENABLE_PATHBAR
 		window->menubar.menu_item_path_bar = gtk_radio_menu_item_new_with_mnemonic_from_widget(GTK_RADIO_MENU_ITEM(window->menubar.menu_item_no_bar), _("Pathbar style"));
 		gtk_container_add(GTK_CONTAINER(window->menubar.menu_nav_bar), window->menubar.menu_item_path_bar);
+		g_signal_connect(G_OBJECT(window->menubar.menu_item_path_bar), "toggled", G_CALLBACK(cb_xa_main_window_set_path_bar), window);
 #endif /* ENABLE_PATHBAR */
 
 
@@ -334,18 +342,15 @@
 #endif
 
 	if(!window->navigationbar)
-	{
-		window->navigationbar = xa_navigation_bar_new(NULL);
 		up_dir = TRUE;
-	}
+	else
+		up_dir = FALSE;
 
 	show_icons = xa_settings_read_bool_entry(window->settings, "ShowIcons", TRUE);
 	sort_case = xa_settings_read_bool_entry(window->settings, "SortCaseSensitive", TRUE);
 	sort_folders = xa_settings_read_bool_entry(window->settings, "SortFoldersFirst", TRUE);
 	use_tabs = xa_settings_read_bool_entry(window->settings, "UseTabs", TRUE);
 
-	gtk_widget_ref(GTK_WIDGET(window->navigationbar));
-
 /* main view */
 	window->notebook = xa_notebook_new(window->navigationbar, use_tabs, window->accel_group);
 	g_signal_connect(G_OBJECT(window->notebook), "switch-page", G_CALLBACK(cb_xa_main_window_notebook_page_switched), window);
@@ -356,26 +361,26 @@
 	window->statusbar = gtk_statusbar_new();
 
 	if(show_menubar)
-		gtk_box_pack_start(GTK_BOX(main_vbox), window->menu_bar, FALSE, FALSE, 0);
+		gtk_box_pack_start(GTK_BOX(window->main_vbox), window->menu_bar, FALSE, FALSE, 0);
 
-	gtk_box_pack_start(GTK_BOX(main_vbox), toolbar, FALSE, FALSE, 0);
+	gtk_box_pack_start(GTK_BOX(window->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_widget_ref(GTK_WIDGET(window->navigationbar));
+		gtk_box_pack_start(GTK_BOX(window->main_vbox), GTK_WIDGET(window->navigationbar), FALSE, FALSE, 0);
 		gtk_widget_show_all(GTK_WIDGET(window->navigationbar));
 	}
 
-	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_box_pack_start(GTK_BOX(window->main_vbox), window->notebook, TRUE, TRUE, 0);
+	gtk_box_pack_end(GTK_BOX(window->main_vbox), window->statusbar, FALSE, FALSE, 0);
 
-	gtk_widget_show_all(main_vbox);
+	gtk_widget_show_all(window->main_vbox);
 	gtk_widget_show_all(toolbar);
-	gtk_widget_show_all(GTK_WIDGET(window->navigationbar));
 	gtk_widget_show_all(window->notebook);
 	gtk_widget_show_all(window->statusbar);
 
-	gtk_container_add(GTK_CONTAINER(window), main_vbox);
+	gtk_container_add(GTK_CONTAINER(window), window->main_vbox);
 }
 
 GtkWidget *
@@ -482,7 +487,8 @@
 cb_xa_main_open_archive(GtkWidget *widget, gpointer userdata)
 {
 	GtkWidget *dialog = NULL;
-	gchar *open_archive_path = NULL;
+	GSList *open_archive_paths = NULL;
+	GSList *_open_archive_paths = NULL;
 	gint result = 0;
 	XAMainWindow *window = XA_MAIN_WINDOW(userdata);
 	
@@ -491,6 +497,7 @@
 																			 GTK_FILE_CHOOSER_ACTION_OPEN,
 																			 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
 																			 GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL);
+	gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), TRUE);
 	result = gtk_dialog_run (GTK_DIALOG (dialog) );
 	if(result == GTK_RESPONSE_CANCEL || result == GTK_RESPONSE_DELETE_EVENT)
 	{
@@ -499,11 +506,18 @@
 	}
 	if(result == GTK_RESPONSE_OK)
 	{
-		open_archive_path = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
-		if(xa_notebook_get_multi_tab(XA_NOTEBOOK(window->notebook)))
-			xa_main_window_open_archive(window, open_archive_path, -1);
-		else
-			xa_main_window_open_archive(window, open_archive_path, 0);
+		open_archive_paths = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog));
+		_open_archive_paths = open_archive_paths;
+		while(_open_archive_paths)
+		{
+			if(xa_notebook_get_multi_tab(XA_NOTEBOOK(window->notebook)))
+				xa_application_open_archive(window->app, (GtkWidget *)window, _open_archive_paths->data);
+			else
+				xa_application_open_archive(window->app, NULL, _open_archive_paths->data);
+			_open_archive_paths = _open_archive_paths->next;
+		}
+		g_slist_foreach(open_archive_paths, (GFunc)g_free, NULL);
+		g_slist_free(open_archive_paths);
 		gtk_widget_destroy(dialog);
 	}
 }
@@ -740,3 +754,48 @@
 	return 1;
 }
 
+static void
+cb_xa_main_window_set_tool_bar(GtkWidget *widget, gpointer userdata)
+{
+	XAMainWindow *window = XA_MAIN_WINDOW(userdata);
+	XANavigationBar *tool_bar = NULL; 
+
+	if(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)))
+	{
+		tool_bar = xa_tool_bar_new(NULL);
+
+		xa_notebook_set_navigation_bar(XA_NOTEBOOK(window->notebook), tool_bar);
+
+		if(window->navigationbar)
+			gtk_widget_destroy(GTK_WIDGET(window->navigationbar));
+
+		window->navigationbar = tool_bar;
+		gtk_box_pack_start(GTK_BOX(window->main_vbox), (GtkWidget *)tool_bar, FALSE, FALSE, 0);
+		gtk_box_reorder_child(GTK_BOX(window->main_vbox), (GtkWidget *)tool_bar, 2);
+		gtk_widget_show_all((GtkWidget *)tool_bar);
+	}
+}
+
+static void
+cb_xa_main_window_set_path_bar(GtkWidget *widget, gpointer userdata)
+{
+	XAMainWindow *window = XA_MAIN_WINDOW(userdata);
+	XANavigationBar *path_bar = NULL; 
+
+	if(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)))
+	{
+		path_bar = xa_path_bar_new(NULL);
+
+		xa_notebook_set_navigation_bar(XA_NOTEBOOK(window->notebook), path_bar);
+
+		if(window->navigationbar)
+			gtk_widget_destroy(GTK_WIDGET(window->navigationbar));
+
+		window->navigationbar = path_bar;
+
+		gtk_container_set_border_width(GTK_CONTAINER(window->navigationbar), 3);
+		gtk_box_pack_start(GTK_BOX(window->main_vbox), (GtkWidget *)path_bar, FALSE, FALSE, 0);
+		gtk_box_reorder_child(GTK_BOX(window->main_vbox), (GtkWidget *)path_bar, 2);
+		gtk_widget_show_all((GtkWidget *)path_bar);
+	}
+}

Modified: xarchiver/branches/xarchiver-psybsd/src/main_window.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/main_window.h	2006-11-20 10:31:50 UTC (rev 23905)
+++ xarchiver/branches/xarchiver-psybsd/src/main_window.h	2006-11-20 12:21:23 UTC (rev 23906)
@@ -55,6 +55,7 @@
 	GtkIconTheme *icon_theme;
 	XAApplication *app;
 	GtkWidget *menu_bar;
+	GtkWidget *main_vbox;
 	struct {
 		/* 'file' menu */
 		GtkWidget *menu_item_file;

Modified: xarchiver/branches/xarchiver-psybsd/src/notebook.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/notebook.c	2006-11-20 10:31:50 UTC (rev 23905)
+++ xarchiver/branches/xarchiver-psybsd/src/notebook.c	2006-11-20 12:21:23 UTC (rev 23906)
@@ -224,7 +224,16 @@
 void
 xa_notebook_set_navigation_bar(XANotebook *notebook, XANavigationBar *bar)
 {
+	if(notebook->navigation_bar)
+		xa_navigation_bar_set_store(notebook->navigation_bar, NULL);
+
+	gint page_nr = gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook));
+	GtkWidget *scrolledwindow = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), page_nr);
+	GtkWidget *treeview = gtk_bin_get_child(GTK_BIN(scrolledwindow));
+	GtkTreeModel *archive_store = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview));
+
 	notebook->navigation_bar = bar;
+	xa_navigation_bar_set_store(notebook->navigation_bar, XA_ARCHIVE_STORE(archive_store));
 }
 
 void

Modified: xarchiver/branches/xarchiver-psybsd/src/path_bar.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/path_bar.h	2006-11-20 10:31:50 UTC (rev 23905)
+++ xarchiver/branches/xarchiver-psybsd/src/path_bar.h	2006-11-20 12:21:23 UTC (rev 23906)
@@ -64,7 +64,7 @@
 };
 
 GType      xa_path_bar_get_type();
-XANavigationBar *xa_path_bar_new();
+XANavigationBar *xa_path_bar_new(XAArchiveStore *);
 
 G_END_DECLS
 #endif /* __XARCHIVER_PATH_BAR_H__*/

Modified: xarchiver/branches/xarchiver-psybsd/src/tool_bar.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/tool_bar.c	2006-11-20 10:31:50 UTC (rev 23905)
+++ xarchiver/branches/xarchiver-psybsd/src/tool_bar.c	2006-11-20 12:21:23 UTC (rev 23906)
@@ -168,6 +168,7 @@
 	gtk_widget_set_sensitive(GTK_WIDGET(tool_bar->hbox), 0);
 
 	gtk_widget_show_all(GTK_WIDGET(tool_bar->bar));
+	gtk_widget_ref((GtkWidget *)tool_bar);
 }
 
 XANavigationBar *



More information about the Xfce4-commits mailing list