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

Stephan Arts stephan at xfce.org
Mon Oct 16 07:40:14 UTC 2006


Author: stephan
Date: 2006-10-16 07:40:11 +0000 (Mon, 16 Oct 2006)
New Revision: 23428

Modified:
   xarchiver/branches/xarchiver-psybsd/TODO
   xarchiver/branches/xarchiver-psybsd/configure.in.in
   xarchiver/branches/xarchiver-psybsd/src/Makefile.am
   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/settings.c
   xarchiver/branches/xarchiver-psybsd/src/settings.h
Log:
Add Configuration stuff.


Modified: xarchiver/branches/xarchiver-psybsd/TODO
===================================================================
--- xarchiver/branches/xarchiver-psybsd/TODO	2006-10-15 22:30:37 UTC (rev 23427)
+++ xarchiver/branches/xarchiver-psybsd/TODO	2006-10-16 07:40:11 UTC (rev 23428)
@@ -9,10 +9,10 @@
 ---------------------------------------------------------------
 
   Make thunar-vfs dependency optional.
-    (Can be replaced by an internal libmime)
+  Make libxfce4-util dependency optional.
 +-+-+-+
 
-	Implement UnRar Support object.
+  Add Settings support
 +-+-+-+
 
   Comment library functions

Modified: xarchiver/branches/xarchiver-psybsd/configure.in.in
===================================================================
--- xarchiver/branches/xarchiver-psybsd/configure.in.in	2006-10-15 22:30:37 UTC (rev 23427)
+++ xarchiver/branches/xarchiver-psybsd/configure.in.in	2006-10-16 07:40:11 UTC (rev 23428)
@@ -57,8 +57,12 @@
 
 XDT_CHECK_OPTIONAL_PACKAGE([THUNAR_VFS], [thunar-vfs-1], [0.4.0], [thunar-vfs],
     AC_HELP_STRING([--disable-thunar-vfs],
-                   [Disable the use Thunar's VFS layer)]))
+                   [Disable the use of Thunar's VFS layer)]))
 
+XDT_CHECK_OPTIONAL_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0], [4.3.99], [libxfce4util],
+    AC_HELP_STRING([--disable-libxfce4util],
+                   [Disable the use of libxfce4util)]))
+
 dnl check for debugging support
 XDT_FEATURE_DEBUG
 

Modified: xarchiver/branches/xarchiver-psybsd/src/Makefile.am
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/Makefile.am	2006-10-15 22:30:37 UTC (rev 23427)
+++ xarchiver/branches/xarchiver-psybsd/src/Makefile.am	2006-10-16 07:40:11 UTC (rev 23428)
@@ -16,7 +16,8 @@
 xarchiver_CFLAGS = \
 	@GTK_CFLAGS@ \
 	@GLIB_CFLAGS@ \
-	@THUNAR_VFS_CFLAGS@ \
+	$(THUNAR_VFS_CFLAGS) \
+	$(XFCE4UTIL_CFLAGS) \
 	-DDATADIR=\"$(datadir)\" \
 	-DSRCDIR=\"$(top_srcdir)\" \
 	-DLOCALEDIR=\"$(localedir)\"

Modified: xarchiver/branches/xarchiver-psybsd/src/main.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/main.c	2006-10-15 22:30:37 UTC (rev 23427)
+++ xarchiver/branches/xarchiver-psybsd/src/main.c	2006-10-16 07:40:11 UTC (rev 23428)
@@ -23,6 +23,7 @@
 
 #include <gettext.h>
 
+#include "settings.h"
 #include "new_dialog.h"
 #include "add_dialog.h"
 #include "extract_dialog.h"

Modified: xarchiver/branches/xarchiver-psybsd/src/main_window.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/main_window.c	2006-10-15 22:30:37 UTC (rev 23427)
+++ xarchiver/branches/xarchiver-psybsd/src/main_window.c	2006-10-16 07:40:11 UTC (rev 23428)
@@ -28,6 +28,7 @@
 #include <libxarchiver/mime.h>
 #include <gettext.h>
 
+#include "settings.h"
 #include "archive_store.h"
 #include "navigation_bar.h"
 #include "tool_bar.h"
@@ -52,6 +53,8 @@
 xa_main_window_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
 static void
 xa_main_window_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void
+xa_main_window_finalize(GObject *object);
 
 gboolean
 xa_main_window_add_item(LXAEntry *entry, gpointer data);
@@ -61,7 +64,6 @@
 void
 xa_main_window_reset_columns(XAMainWindow *window);
 
-
 void
 xa_main_window_archive_destroyed(LXAArchive *archive, XAMainWindow *window);
 
@@ -106,6 +108,7 @@
 
 	object_class->set_property = xa_main_window_set_property;
 	object_class->get_property = xa_main_window_get_property;
+	object_class->finalize     = xa_main_window_finalize;
 
 	pspec = g_param_spec_boolean("show_icons",
 		_("Show icons"),
@@ -116,6 +119,20 @@
 }
 
 static void
+xa_main_window_finalize(GObject *object)
+{
+	XAMainWindow *window = XA_MAIN_WINDOW(object);
+	xa_settings_set_group(window->settings, "Global");
+	if(!window->navigationbar)
+			xa_settings_write_entry(window->settings, "NavigationBar", "None");
+	if(G_OBJECT_TYPE(window->navigationbar) == XA_TYPE_PATH_BAR)
+			xa_settings_write_entry(window->settings, "NavigationBar", "PathBar");
+	if(G_OBJECT_TYPE(window->navigationbar) == XA_TYPE_TOOL_BAR)
+			xa_settings_write_entry(window->settings, "NavigationBar", "ToolBar");
+	xa_settings_save(window->settings);
+}
+
+static void
 xa_main_window_init(XAMainWindow *window)
 {
 	GtkWidget     *main_vbox;
@@ -124,12 +141,15 @@
 	GtkToolItem   *tool_separator;
 	GtkWidget     *tmp_image;
 	GtkAccelGroup *accel_group = gtk_accel_group_new();
+	const gchar   *nav_bar;
 
 	window->working_node = NULL;
 	window->parent_node = g_new0(GValue, 1);
 	window->parent_node = g_value_init(window->parent_node, G_TYPE_STRING);
 	g_value_set_string(window->parent_node, "..");
 
+	window->settings = xa_settings_new(NULL);
+
 	main_vbox = gtk_vbox_new(FALSE, 0);
 
 	menubar = gtk_menu_bar_new();
@@ -255,10 +275,18 @@
 
 	g_signal_connect(G_OBJECT(window->toolbar.tool_item_stop), "clicked", G_CALLBACK(cb_xa_main_stop_archive), window);
 
-	//window->navigationbar = xa_tool_bar_new(NULL); 
-	window->navigationbar = xa_path_bar_new(NULL);
-	gtk_container_set_border_width(GTK_CONTAINER(window->navigationbar), 3);
+	xa_settings_set_group(window->settings, "Global");
+	nav_bar = xa_settings_read_entry(window->settings, "NavigationBar", "PathBar");
+	if(!strcmp(nav_bar, "ToolBar"))
+		window->navigationbar = xa_tool_bar_new(NULL); 
+	if(!strcmp(nav_bar, "PathBar"))
+		window->navigationbar = xa_path_bar_new(NULL);
+	if(!strcmp(nav_bar, "None"))
+		window->navigationbar = NULL;
 
+	if(window->navigationbar)
+		gtk_container_set_border_width(GTK_CONTAINER(window->navigationbar), 3);
+
 /* 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);
@@ -294,10 +322,14 @@
 	gtk_container_add(GTK_CONTAINER(window), main_vbox);
 
 	/* archive model */
-	window->treemodel = xa_archive_store_new(NULL, TRUE, TRUE, window->icon_theme);
+	if(window->navigationbar)
+		window->treemodel = xa_archive_store_new(NULL, TRUE, FALSE, window->icon_theme);
+	else
+		window->treemodel = xa_archive_store_new(NULL, TRUE, TRUE, window->icon_theme);
 	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));
-	xa_navigation_bar_set_store(window->navigationbar, XA_ARCHIVE_STORE(window->treemodel));
+	if(window->navigationbar)
+		xa_navigation_bar_set_store(window->navigationbar, XA_ARCHIVE_STORE(window->treemodel));
 }
 
 GtkWidget *

Modified: xarchiver/branches/xarchiver-psybsd/src/main_window.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/main_window.h	2006-10-15 22:30:37 UTC (rev 23427)
+++ xarchiver/branches/xarchiver-psybsd/src/main_window.h	2006-10-16 07:40:11 UTC (rev 23428)
@@ -56,6 +56,7 @@
 	GtkWidget *scrollwindow;
 	GtkWidget *statusbar;
 	XANavigationBar *navigationbar;
+	XASettings *settings;
 	struct {
 		GtkWidget *menu_item_archive;
 		GtkWidget *menu_archive;

Modified: xarchiver/branches/xarchiver-psybsd/src/settings.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/settings.c	2006-10-15 22:30:37 UTC (rev 23427)
+++ xarchiver/branches/xarchiver-psybsd/src/settings.c	2006-10-16 07:40:11 UTC (rev 23428)
@@ -19,6 +19,10 @@
 #include <glib.h>
 #include <glib-object.h>
 
+#ifdef HAVE_LIBXFCE4UTIL
+#include <libxfce4util/libxfce4util.h>
+#endif
+
 #include "settings.h"
 
 static void
@@ -55,7 +59,11 @@
 static void
 xa_settings_init(XASettings *object)
 {
+#ifdef HAVE_LIBXFCE4UTIL
+	object->xfce_rc = (GObject *)xfce_rc_config_open(XFCE_RESOURCE_CONFIG, "xarchiver/xarchiverrc", FALSE);
+#else
 
+#endif /* HAVE_LIBXFCE4UTIL */
 }
 
 static void
@@ -65,12 +73,9 @@
 }
 
 XASettings *
-xa_settings_new(gchar *config_dir)
+xa_settings_new()
 {
 	XASettings *object = g_object_new(XA_TYPE_SETTINGS, NULL);
-	if(!config_dir)
-		config_dir = "~/.config/";
-	object->config_file = g_strconcat(config_dir, "/xarchiver/config.xml", NULL);
 
 	return object;
 }
@@ -78,6 +83,51 @@
 gboolean
 xa_settings_load(XASettings *settings)
 {
-//	gint fd = g_open(settings->config_file, O_RDONLY, 0);
-	return FALSE;
+#ifdef HAVE_LIBXFCE4UTIL
+
+#else
+
+#endif /* HAVE_LIBXFCE4UTIL */
+	return TRUE;
 }
+
+gboolean
+xa_settings_save(XASettings *settings)
+{
+#ifdef HAVE_LIBXFCE4UTIL
+	xfce_rc_flush(XFCE_RC(settings->xfce_rc));
+#else
+
+#endif /* HAVE_LIBXFCE4UTIL */
+	return TRUE;
+}
+
+void
+xa_settings_set_group(XASettings *settings, const gchar *group)
+{
+#ifdef HAVE_LIBXFCE4UTIL
+	xfce_rc_set_group(XFCE_RC(settings->xfce_rc), group);
+#else
+
+#endif /* HAVE_LIBXFCE4UTIL */
+}
+
+void
+xa_settings_write_entry(XASettings *settings, const gchar *key, const gchar *value)
+{
+#ifdef HAVE_LIBXFCE4UTIL
+	xfce_rc_write_entry(XFCE_RC(settings->xfce_rc), key, value);
+#else
+
+#endif /* HAVE_LIBXFCE4UTIL */
+}
+
+const gchar *
+xa_settings_read_entry(XASettings *settings, const gchar *key, const gchar *fallback)
+{
+#ifdef HAVE_LIBXFCE4UTIL
+	return xfce_rc_read_entry(XFCE_RC(settings->xfce_rc), key, fallback);
+#else
+
+#endif /* HAVE_LIBXFCE4UTIL */
+}

Modified: xarchiver/branches/xarchiver-psybsd/src/settings.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/settings.h	2006-10-15 22:30:37 UTC (rev 23427)
+++ xarchiver/branches/xarchiver-psybsd/src/settings.h	2006-10-16 07:40:11 UTC (rev 23428)
@@ -45,6 +45,7 @@
 {
 	GObject parent;
 	gchar *config_file;
+	GObject *xfce_rc;
 };
 
 typedef struct _XASettingsClass XASettingsClass;
@@ -54,11 +55,16 @@
 	GObjectClass parent;
 };
 
-XASettings  *xa_settings_new(gchar *config_dir);
-GType        xa_settings_get_type ();
+XASettings   *xa_settings_new();
+GType         xa_settings_get_type ();
 
-gboolean     xa_settings_load(XASettings *);
+gboolean      xa_settings_load(XASettings *);
+gboolean      xa_settings_save(XASettings *);
 
+const gchar  *xa_settings_read_entry(XASettings *settings, const gchar *key, const gchar *fallback);
+void          xa_settings_write_entry(XASettings *settings, const gchar *key, const gchar *value);
+void          xa_settings_set_group(XASettings *settings, const gchar *group);
+
 G_END_DECLS
 
 #endif /* __XA_SETTINGS_H__ */



More information about the Xfce4-commits mailing list