SF.net SVN: geany:[2832] branches/custom-tab-width

ntrel at users.sourceforge.net ntrel at xxxxx
Mon Jul 28 17:31:33 UTC 2008


Revision: 2832
          http://geany.svn.sourceforge.net/geany/?rev=2832&view=rev
Author:   ntrel
Date:     2008-07-28 17:31:33 +0000 (Mon, 28 Jul 2008)

Log Message:
-----------
Add radio_items_foreach(), combo_items_foreach().

Modified Paths:
--------------
    branches/custom-tab-width/ChangeLog
    branches/custom-tab-width/src/prefs.c

Modified: branches/custom-tab-width/ChangeLog
===================================================================
--- branches/custom-tab-width/ChangeLog	2008-07-28 17:28:19 UTC (rev 2831)
+++ branches/custom-tab-width/ChangeLog	2008-07-28 17:31:33 UTC (rev 2832)
@@ -17,6 +17,8 @@
  * src/ui_utils.c, src/ui_utils.h:
    Add ui_radio_menu_item_set_active_index(),
    ui_radio_menu_item_get_active_index().
+ * src/prefs.c:
+   Add radio_items_foreach(), combo_items_foreach().
 
 
 2008-07-25  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>

Modified: branches/custom-tab-width/src/prefs.c
===================================================================
--- branches/custom-tab-width/src/prefs.c	2008-07-28 17:28:19 UTC (rev 2831)
+++ branches/custom-tab-width/src/prefs.c	2008-07-28 17:31:33 UTC (rev 2832)
@@ -164,13 +164,70 @@
 }
 
 
+static void radio_items_foreach(PrefCallbackAction action)
+{
+	guint i;
+	/* Only add one widget per radio-group */
+	PrefEntry items[] =
+	{
+		{"radio_indent_spaces", &editor_prefs.indentation->type},
+	};
+
+	for (i = 0; i < G_N_ELEMENTS(items); i++)
+	{
+		PrefEntry *pe = &items[i];
+		GtkWidget *widget = lookup_widget(ui_widgets.prefs_dialog, pe->widget_name);
+		gint *setting = pe->setting;
+
+		switch (action)
+		{
+			case PREF_DISPLAY:
+				ui_radio_menu_item_set_active_index(GTK_RADIO_MENU_ITEM(widget), *setting);
+				break;
+			case PREF_UPDATE:
+				*setting = ui_radio_menu_item_get_active_index(GTK_RADIO_MENU_ITEM(widget));
+				break;
+		}
+	}
+}
+
+
+static void combo_items_foreach(PrefCallbackAction action)
+{
+	guint i;
+	PrefEntry items[] =
+	{
+		{"combo_auto_indent_mode", &editor_prefs.indentation->type},
+	};
+
+	for (i = 0; i < G_N_ELEMENTS(items); i++)
+	{
+		PrefEntry *pe = &items[i];
+		GtkWidget *widget = 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. This allows access to
  * runtime setting fields like EditorPrefs::indentation->width. */
 PrefItemsCallback pref_item_callbacks[] = {
 	toggle_items_foreach,
-	spin_items_foreach
+	spin_items_foreach,
+	radio_items_foreach,
+	combo_items_foreach
 };
 
 
@@ -474,9 +531,6 @@
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_line_end");
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), editor_prefs.show_line_endings);
 
-	widget = lookup_widget(ui_widgets.prefs_dialog, "combo_auto_indent_mode");
-	gtk_combo_box_set_active(GTK_COMBO_BOX(widget), editor_prefs.indent_mode);
-
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_detect_indent");
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), editor_prefs.detect_tab_mode);
 
@@ -506,12 +560,6 @@
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_newline_strip");
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), editor_prefs.newline_strip);
 
-	if (editor_prefs.use_tabs)
-		widget = lookup_widget(ui_widgets.prefs_dialog, "radio_indent_tabs");
-	else
-		widget = lookup_widget(ui_widgets.prefs_dialog, "radio_indent_spaces");
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), TRUE);
-
 	widget = lookup_widget(ui_widgets.prefs_dialog, "check_indicators");
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), editor_prefs.use_indicators);
 
@@ -887,9 +935,6 @@
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_line_end");
 		editor_prefs.show_line_endings = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
-		widget = lookup_widget(ui_widgets.prefs_dialog, "combo_auto_indent_mode");
-		editor_prefs.indent_mode = gtk_combo_box_get_active(GTK_COMBO_BOX(widget));
-
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_line_wrapping");
 		editor_prefs.line_wrapping = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
@@ -911,22 +956,6 @@
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_newline_strip");
 		editor_prefs.newline_strip = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 
-		widget = lookup_widget(ui_widgets.prefs_dialog, "radio_indent_tabs");
-		{
-			gboolean use_tabs = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
-
-			/* override each document setting only if the default has changed */
-			if (editor_prefs.use_tabs != use_tabs)
-			{
-				editor_prefs.use_tabs = use_tabs;
-				for (i = 0; i < documents_array->len; i++)
-				{
-					if (documents[i]->is_valid)
-						editor_set_use_tabs(documents[i]->editor, editor_prefs.use_tabs);
-				}
-			}
-		}
-
 		widget = lookup_widget(ui_widgets.prefs_dialog, "check_detect_indent");
 		editor_prefs.detect_tab_mode = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 


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