SF.net SVN: geany:[5305] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Wed Oct 20 11:49:50 UTC 2010
Revision: 5305
http://geany.svn.sourceforge.net/geany/?rev=5305&view=rev
Author: ntrel
Date: 2010-10-20 11:49:50 +0000 (Wed, 20 Oct 2010)
Log Message:
-----------
Use radio buttons for View->Editor->Color Schemes menu.
Don't hide the menu when only the default item is available.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/highlighting.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2010-10-20 11:38:37 UTC (rev 5304)
+++ trunk/ChangeLog 2010-10-20 11:49:50 UTC (rev 5305)
@@ -1,3 +1,10 @@
+2010-10-20 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
+
+ * src/highlighting.c:
+ Use radio buttons for View->Editor->Color Schemes menu.
+ Don't hide the menu when only the default item is available.
+
+
2010-10-18 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* data/filetypes.c, data/filetypes.d:
Modified: trunk/src/highlighting.c
===================================================================
--- trunk/src/highlighting.c 2010-10-20 11:38:37 UTC (rev 5304)
+++ trunk/src/highlighting.c 2010-10-20 11:49:50 UTC (rev 5305)
@@ -3477,8 +3477,12 @@
gchar *fname;
gchar *path;
+ /* prevent callback on setting initial value */
+ if (!GTK_WIDGET_MAPPED(menuitem))
+ return;
+
/* check if default item */
- if (user_data)
+ if (!user_data)
{
setptr(editor_prefs.color_scheme, NULL);
filetypes_reload();
@@ -3511,36 +3515,48 @@
}
-static void add_color_scheme_item(const gchar *fname, GtkWidget *menu)
+static void add_color_scheme_item(GtkWidget *menu, const gchar *fname)
{
- GtkWidget *tmp_button;
- gchar *label;
+ static GSList *group = NULL;
+ GtkWidget *item;
- g_return_if_fail(fname);
- g_return_if_fail(menu);
+ if (fname)
+ {
+ gchar *label = utils_get_utf8_from_locale(fname);
- label = utils_get_utf8_from_locale(fname);
+ item = gtk_radio_menu_item_new_with_label(group, label);
+ g_free(label);
+ }
+ else
+ item = gtk_radio_menu_item_new_with_mnemonic(group, _("_Default"));
- tmp_button = gtk_menu_item_new_with_label(label);
- gtk_widget_show(tmp_button);
- gtk_container_add(GTK_CONTAINER(menu), tmp_button);
- g_signal_connect(tmp_button, "activate", G_CALLBACK(on_color_scheme_clicked), NULL);
+ group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(item));
+ if (utils_str_equal(editor_prefs.color_scheme, fname))
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), TRUE);
- g_free(label);
+ gtk_widget_show(item);
+ gtk_container_add(GTK_CONTAINER(menu), item);
+ g_signal_connect(item, "activate",
+ G_CALLBACK(on_color_scheme_clicked), GINT_TO_POINTER(fname != NULL));
}
static gboolean add_color_scheme_items(GtkWidget *menu)
{
- GSList *list = utils_get_config_files(GEANY_COLORSCHEMES_SUBDIR);
- GSList *node;
+ GSList *list, *node;
+ g_return_val_if_fail(menu, FALSE);
+
+ add_color_scheme_item(menu, NULL);
+ list = utils_get_config_files(GEANY_COLORSCHEMES_SUBDIR);
+
foreach_slist(node, list)
{
gchar *fname = node->data;
if (g_str_has_suffix(fname, ".conf"))
- add_color_scheme_item(fname, menu);
+ add_color_scheme_item(menu, fname);
+
g_free(fname);
}
g_slist_free(list);
@@ -3560,13 +3576,8 @@
menu = gtk_menu_new();
gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), menu);
- item = gtk_menu_item_new_with_mnemonic(_("_Default"));
- gtk_container_add(GTK_CONTAINER(menu), item);
- g_signal_connect(item, "activate", G_CALLBACK(on_color_scheme_clicked), GINT_TO_POINTER(TRUE));
-
- /* for now we don't show the color scheme menu unless there are files */
- if (add_color_scheme_items(menu))
- gtk_widget_show_all(root);
+ add_color_scheme_items(menu);
+ gtk_widget_show_all(root);
}
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