SF.net SVN: geany:[3419] trunk

ntrel at users.sourceforge.net ntrel at xxxxx
Mon Dec 22 17:13:37 UTC 2008


Revision: 3419
          http://geany.svn.sourceforge.net/geany/?rev=3419&view=rev
Author:   ntrel
Date:     2008-12-22 17:13:37 +0000 (Mon, 22 Dec 2008)

Log Message:
-----------
Add stash_group_add_combo_box_entry(), stash_group_add_entry().

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/keyfile.c
    trunk/src/prefs.c
    trunk/src/stash.c
    trunk/src/stash.h

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2008-12-22 16:14:48 UTC (rev 3418)
+++ trunk/ChangeLog	2008-12-22 17:13:37 UTC (rev 3419)
@@ -7,6 +7,8 @@
    Remove remaining PrefEntry code, use Stash instead.
    Add stash_group_add_spin_button_integer(),
    stash_group_add_combo_box().
+ * src/prefs.c, src/stash.c, src/stash.h, src/keyfile.c:
+   Add stash_group_add_combo_box_entry(), stash_group_add_entry().
 
 
 2008-12-21  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>

Modified: trunk/src/keyfile.c
===================================================================
--- trunk/src/keyfile.c	2008-12-22 16:14:48 UTC (rev 3418)
+++ trunk/src/keyfile.c	2008-12-22 17:13:37 UTC (rev 3419)
@@ -113,8 +113,8 @@
 
 	group = stash_group_new(PACKAGE);
 	configuration_add_pref_group(group, TRUE);
-	stash_group_add_string(group, &prefs.default_open_path,
-		"default_open_path", "");
+	stash_group_add_entry(group, &prefs.default_open_path,
+		"default_open_path", "", "startup_path_entry");
 
 	stash_group_add_toggle_button(group, &file_prefs.cmdline_new_files,
 		"cmdline_new_files", TRUE, "check_cmdline_new_files");

Modified: trunk/src/prefs.c
===================================================================
--- trunk/src/prefs.c	2008-12-22 16:14:48 UTC (rev 3418)
+++ trunk/src/prefs.c	2008-12-22 17:13:37 UTC (rev 3419)
@@ -240,9 +240,6 @@
 	widget = ui_lookup_widget(ui_widgets.prefs_dialog, "entry_contextaction");
 	gtk_entry_set_text(GTK_ENTRY(widget), tool_prefs.context_action_cmd);
 
-	widget = ui_lookup_widget(ui_widgets.prefs_dialog, "startup_path_entry");
-	gtk_entry_set_text(GTK_ENTRY(widget), prefs.default_open_path);
-
 	project_setup_prefs();	/* project files path */
 
 
@@ -659,10 +656,6 @@
 		g_free(tool_prefs.context_action_cmd);
 		tool_prefs.context_action_cmd = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
 
-		widget = ui_lookup_widget(ui_widgets.prefs_dialog, "startup_path_entry");
-		g_free(prefs.default_open_path);
-		prefs.default_open_path = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
-
 		project_apply_prefs();	/* project file path */
 
 

Modified: trunk/src/stash.c
===================================================================
--- trunk/src/stash.c	2008-12-22 16:14:48 UTC (rev 3418)
+++ trunk/src/stash.c	2008-12-22 17:13:37 UTC (rev 3419)
@@ -25,19 +25,21 @@
 /* Mini-library for reading/writing GKeyFile settings and synchronizing widgets with
  * C variables. */
 
-/* Memory Usage
+/* Terms
+ * 'Setting' is used only for data stored on disk or in memory.
+ * 'Pref' can also include visual widget information.
+ *
+ * Memory Usage
  * Stash will not duplicate strings if they are normally static arrays, such as
- * keyfile group names and key names.
- *
- * Terms
- * 'Setting' is used for data stored on disk or in memory.
- * 'Pref' is used mainly for visual widget information.  */
+ * keyfile group names and key names, string default values or widget_id names.
+ * String settings and other dynamically allocated settings must be initialized to NULL.
+ */
 
 
 #include <gtk/gtk.h>
 
 #include "stash.h"
-#include "utils.h"		/* utils_get_setting_*() */
+#include "utils.h"		/* only for utils_get_setting_*(). Stash should not depend on Geany. */
 
 #define foreach_array(type, item, array) \
 	foreach_c_array(item, ((type*)(gpointer)array->data), array->len)
@@ -236,7 +238,9 @@
 }
 
 
-/* @param default_value Not duplicated. */
+/* The contents of @a setting will be freed before being replaced, so make sure it is
+ * initialized to @c NULL.
+ * @param default_value Not duplicated. */
 void stash_group_add_string(GeanyPrefGroup *group, gchar **setting,
 		const gchar *key_name, const gchar *default_value)
 {
@@ -297,6 +301,32 @@
 }
 
 
+static void handle_entry(GtkWidget *widget, GeanyPrefEntry *entry,
+		PrefAction action)
+{
+	gchararray *setting = entry->setting;
+
+	switch (action)
+	{
+		case PREF_DISPLAY:
+			gtk_entry_set_text(GTK_ENTRY(widget), *setting);
+			break;
+		case PREF_UPDATE:
+			g_free(*setting);
+			*setting = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
+			break;
+	}
+}
+
+
+static void handle_combo_box_entry(GtkWidget *widget, GeanyPrefEntry *entry,
+		PrefAction action)
+{
+	widget = gtk_bin_get_child(GTK_BIN(widget));
+	handle_entry(widget, entry, action);
+}
+
+
 /* taken from Glade 2.x generated support.c */
 static GtkWidget*
 lookup_widget                          (GtkWidget       *widget,
@@ -419,6 +449,10 @@
 			handle_spin_button(widget, entry, action);
 		else if (entry->widget_type == GTK_TYPE_COMBO_BOX)
 			handle_combo_box(widget, entry, action);
+		else if (entry->widget_type == GTK_TYPE_COMBO_BOX_ENTRY)
+			handle_combo_box_entry(widget, entry, action);
+		else if (entry->widget_type == GTK_TYPE_ENTRY)
+			handle_entry(widget, entry, action);
 		else
 			g_warning("Unhandled type for %s::%s in %s!", group->name, entry->key_name,
 				G_GNUC_FUNCTION);
@@ -524,7 +558,7 @@
 }
 
 
-/* TODO: stash_group_add_combo_box_entry(). */
+/* @see stash_group_add_combo_box_entry(). */
 void stash_group_add_combo_box(GeanyPrefGroup *group, gint *setting,
 		const gchar *key_name, gint default_value, gpointer widget_id)
 {
@@ -533,3 +567,19 @@
 }
 
 
+void stash_group_add_combo_box_entry(GeanyPrefGroup *group, gchar **setting,
+		const gchar *key_name, const gchar *default_value, gpointer widget_id)
+{
+	add_widget_pref(group, G_TYPE_STRING, setting, key_name, (gpointer)default_value,
+		GTK_TYPE_COMBO_BOX_ENTRY, widget_id);
+}
+
+
+void stash_group_add_entry(GeanyPrefGroup *group, gchar **setting,
+		const gchar *key_name, const gchar *default_value, gpointer widget_id)
+{
+	add_widget_pref(group, G_TYPE_STRING, setting, key_name, (gpointer)default_value,
+		GTK_TYPE_ENTRY, widget_id);
+}
+
+

Modified: trunk/src/stash.h
===================================================================
--- trunk/src/stash.h	2008-12-22 16:14:48 UTC (rev 3418)
+++ trunk/src/stash.h	2008-12-22 17:13:37 UTC (rev 3419)
@@ -69,4 +69,10 @@
 void stash_group_add_combo_box(GeanyPrefGroup *group, gint *setting,
 		const gchar *key_name, gint default_value, gpointer widget_id);
 
+void stash_group_add_combo_box_entry(GeanyPrefGroup *group, gchar **setting,
+		const gchar *key_name, const gchar *default_value, gpointer widget_id);
+
+void stash_group_add_entry(GeanyPrefGroup *group, gchar **setting,
+		const gchar *key_name, const gchar *default_value, gpointer widget_id);
+
 #endif


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list