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.