SF.net SVN: geany:[3417] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Mon Dec 22 16:03:16 UTC 2008
Revision: 3417
http://geany.svn.sourceforge.net/geany/?rev=3417&view=rev
Author: ntrel
Date: 2008-12-22 16:03:16 +0000 (Mon, 22 Dec 2008)
Log Message:
-----------
Remove remaining PrefEntry code, use Stash instead.
Add stash_group_add_spin_button_integer(),
stash_group_add_combo_box().
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 13:01:50 UTC (rev 3416)
+++ trunk/ChangeLog 2008-12-22 16:03:16 UTC (rev 3417)
@@ -3,6 +3,10 @@
* src/stash.c, src/stash.h, src/keyfile.c:
Rename stash_group_load() -> stash_group_load_from_key_file().
Rename stash_group_save() -> stash_group_save_to_key_file().
+ * src/prefs.c, src/stash.c, src/stash.h, src/keyfile.c:
+ Remove remaining PrefEntry code, use Stash instead.
+ Add stash_group_add_spin_button_integer(),
+ stash_group_add_combo_box().
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 13:01:50 UTC (rev 3416)
+++ trunk/src/keyfile.c 2008-12-22 16:03:16 UTC (rev 3417)
@@ -131,20 +131,21 @@
"check_detect_indent", FALSE, "check_detect_indent");
stash_group_add_toggle_button(group, &editor_prefs.use_tab_to_indent,
"use_tab_to_indent", TRUE, "check_tab_key_indents");
- stash_group_add_integer(group, &editor_prefs.indentation->width,
- "pref_editor_tab_width", 4);
- stash_group_add_integer(group, &editor_prefs.indentation->hard_tab_width,
- "indent_hard_tab_width", 8);
- stash_group_add_integer(group, (gint*)&editor_prefs.indentation->auto_indent_mode,
- "indent_mode", GEANY_AUTOINDENT_CURRENTCHARS);
+ stash_group_add_spin_button_integer(group, &editor_prefs.indentation->width,
+ "pref_editor_tab_width", 4, "spin_indent_width");
+ stash_group_add_spin_button_integer(group, &editor_prefs.indentation->hard_tab_width,
+ "indent_hard_tab_width", 8, "spin_tab_width");
+ stash_group_add_combo_box(group, (gint*)&editor_prefs.indentation->auto_indent_mode,
+ "indent_mode", GEANY_AUTOINDENT_CURRENTCHARS, "combo_auto_indent_mode");
stash_group_add_radio_buttons(group, (gint*)&editor_prefs.indentation->type,
"indent_type", GEANY_INDENT_TYPE_TABS,
"radio_indent_spaces", GEANY_INDENT_TYPE_SPACES,
"radio_indent_tabs", GEANY_INDENT_TYPE_TABS,
"radio_indent_both", GEANY_INDENT_TYPE_BOTH,
NULL);
- stash_group_add_integer(group, (gint*)&editor_prefs.autocompletion_max_entries,
- "autocompletion_max_entries", GEANY_MAX_AUTOCOMPLETE_WORDS);
+ stash_group_add_spin_button_integer(group, (gint*)&editor_prefs.autocompletion_max_entries,
+ "autocompletion_max_entries", GEANY_MAX_AUTOCOMPLETE_WORDS,
+ "spin_autocompletion_max_entries");
/* hidden prefs (don't overwrite them so users can edit them manually) */
group = stash_group_new(PACKAGE);
Modified: trunk/src/prefs.c
===================================================================
--- trunk/src/prefs.c 2008-12-22 13:01:50 UTC (rev 3416)
+++ trunk/src/prefs.c 2008-12-22 16:03:16 UTC (rev 3417)
@@ -23,6 +23,7 @@
/*
* Preferences dialog support functions.
+ * New prefs should use Stash code in keyfile.c - init_pref_groups().
*/
#include <stdlib.h>
@@ -100,83 +101,9 @@
PrefCallbackAction;
-typedef struct PrefEntry
-{
- const gchar *widget_name;
- gpointer setting;
-}
-PrefEntry;
-
-
-static void spin_prefs_foreach(PrefCallbackAction action)
-{
- guint i;
- PrefEntry items[] =
- {
- {"spin_indent_width", &editor_prefs.indentation->width},
- {"spin_tab_width", &editor_prefs.indentation->hard_tab_width},
- {"spin_autocompletion_max_entries", &editor_prefs.autocompletion_max_entries}
- };
-
- for (i = 0; i < G_N_ELEMENTS(items); i++)
- {
- PrefEntry *pe = &items[i];
- GtkWidget *widget = ui_lookup_widget(ui_widgets.prefs_dialog, pe->widget_name);
- gint *setting = pe->setting;
-
- switch (action)
- {
- case PREF_DISPLAY:
- gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), *setting);
- break;
- case PREF_UPDATE:
- *setting = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
- break;
- }
- }
-}
-
-
-static void combo_prefs_foreach(PrefCallbackAction action)
-{
- guint i;
- PrefEntry items[] =
- {
- {"combo_auto_indent_mode", &editor_prefs.indentation->auto_indent_mode}
- };
-
- for (i = 0; i < G_N_ELEMENTS(items); i++)
- {
- PrefEntry *pe = &items[i];
- GtkWidget *widget = ui_lookup_widget(ui_widgets.prefs_dialog, pe->widget_name);
- gint *setting = pe->setting;
-
- switch (action)
- {
- case PREF_DISPLAY:
- gtk_combo_box_set_active(GTK_COMBO_BOX(widget), *setting);
- break;
- case PREF_UPDATE:
- *setting = gtk_combo_box_get_active(GTK_COMBO_BOX(widget));
- break;
- }
- }
-}
-
-
-typedef void (*PrefItemsCallback)(PrefCallbackAction action);
-
-/* List of functions which hold the PrefEntry arrays. These allow access to
- * runtime setting fields like EditorPrefs::indentation->width. */
-PrefItemsCallback pref_item_callbacks[] = {
- spin_prefs_foreach,
- combo_prefs_foreach
-};
-
-
+/* Synchronize Stash settings with widgets (see keyfile.c - init_pref_groups()). */
static void prefs_action(PrefCallbackAction action)
{
- guint i;
GeanyPrefGroup *group;
gpointer *ptr;
@@ -192,9 +119,6 @@
break;
}
}
-
- for (i = 0; i < G_N_ELEMENTS(pref_item_callbacks); i++)
- pref_item_callbacks[i](action);
}
@@ -271,11 +195,13 @@
}
+/* note: new prefs should use Stash code in keyfile.c */
void prefs_init_dialog(void)
{
GtkWidget *widget;
GdkColor *color;
+ /* Synchronize with Stash settings */
prefs_action(PREF_DISPLAY);
/* General settings */
@@ -683,6 +609,7 @@
/*
* callbacks
*/
+/* note: new prefs should use Stash code in keyfile.c */
static void
on_prefs_button_clicked(GtkDialog *dialog, gint response, gpointer user_data)
{
@@ -692,6 +619,7 @@
guint i;
guint autoclose_brackets[5];
+ /* Synchronize Stash settings */
prefs_action(PREF_UPDATE);
/* General settings */
Modified: trunk/src/stash.c
===================================================================
--- trunk/src/stash.c 2008-12-22 13:01:50 UTC (rev 3416)
+++ trunk/src/stash.c 2008-12-22 16:03:16 UTC (rev 3417)
@@ -257,6 +257,42 @@
}
+static void handle_spin_button(GtkWidget *widget, GeanyPrefEntry *entry,
+ PrefAction action)
+{
+ gint *setting = entry->setting;
+
+ g_assert(entry->type == G_TYPE_INT); /* only int spin prefs */
+
+ switch (action)
+ {
+ case PREF_DISPLAY:
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), *setting);
+ break;
+ case PREF_UPDATE:
+ *setting = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
+ break;
+ }
+}
+
+
+static void handle_combo_box(GtkWidget *widget, GeanyPrefEntry *entry,
+ PrefAction action)
+{
+ gint *setting = entry->setting;
+
+ switch (action)
+ {
+ case PREF_DISPLAY:
+ gtk_combo_box_set_active(GTK_COMBO_BOX(widget), *setting);
+ break;
+ case PREF_UPDATE:
+ *setting = gtk_combo_box_get_active(GTK_COMBO_BOX(widget));
+ break;
+ }
+}
+
+
/* taken from Glade 2.x generated support.c */
static GtkWidget*
lookup_widget (GtkWidget *widget,
@@ -372,8 +408,13 @@
continue;
}
+ /* note: can't use switch for GTK_TYPE macros */
if (entry->widget_type == GTK_TYPE_TOGGLE_BUTTON)
handle_toggle_button(widget, entry->setting, action);
+ else if (entry->widget_type == GTK_TYPE_SPIN_BUTTON)
+ handle_spin_button(widget, entry, action);
+ else if (entry->widget_type == GTK_TYPE_COMBO_BOX)
+ handle_combo_box(widget, entry, action);
else
g_warning("Unhandled type for %s::%s in %s!", group->name, entry->key_name,
G_GNUC_FUNCTION);
@@ -471,3 +512,20 @@
}
+void stash_group_add_spin_button_integer(GeanyPrefGroup *group, gint *setting,
+ const gchar *key_name, gint default_value, gpointer widget_id)
+{
+ add_widget_pref(group, G_TYPE_INT, setting, key_name, GINT_TO_POINTER(default_value),
+ GTK_TYPE_SPIN_BUTTON, widget_id);
+}
+
+
+/* TODO: 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)
+{
+ add_widget_pref(group, G_TYPE_INT, setting, key_name, GINT_TO_POINTER(default_value),
+ GTK_TYPE_COMBO_BOX, widget_id);
+}
+
+
Modified: trunk/src/stash.h
===================================================================
--- trunk/src/stash.h 2008-12-22 13:01:50 UTC (rev 3416)
+++ trunk/src/stash.h 2008-12-22 16:03:16 UTC (rev 3417)
@@ -43,13 +43,6 @@
void stash_group_add_string(GeanyPrefGroup *group, gchar **setting,
const gchar *key_name, const gchar *default_value);
-void stash_group_add_toggle_button(GeanyPrefGroup *group, gboolean *setting,
- const gchar *key_name, gboolean default_value, gpointer widget_id);
-
-void stash_group_add_radio_buttons(GeanyPrefGroup *group, gint *setting,
- const gchar *key_name, gint default_value,
- gpointer widget_id, gint enum_id, ...) G_GNUC_NULL_TERMINATED;
-
void stash_group_load_from_key_file(GeanyPrefGroup *group, GKeyFile *keyfile);
void stash_group_save_to_key_file(GeanyPrefGroup *group, GKeyFile *keyfile);
@@ -60,4 +53,20 @@
void stash_group_free(GeanyPrefGroup *group);
+
+/* *** GTK-related functions *** */
+
+void stash_group_add_toggle_button(GeanyPrefGroup *group, gboolean *setting,
+ const gchar *key_name, gboolean default_value, gpointer widget_id);
+
+void stash_group_add_radio_buttons(GeanyPrefGroup *group, gint *setting,
+ const gchar *key_name, gint default_value,
+ gpointer widget_id, gint enum_id, ...) G_GNUC_NULL_TERMINATED;
+
+void stash_group_add_spin_button_integer(GeanyPrefGroup *group, gint *setting,
+ const gchar *key_name, gint default_value, gpointer widget_id);
+
+void stash_group_add_combo_box(GeanyPrefGroup *group, gint *setting,
+ const gchar *key_name, gint 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