SF.net SVN: geany:[3661] branches/reorder-filetypes
ntrel at users.sourceforge.net
ntrel at xxxxx
Fri Mar 27 15:36:10 UTC 2009
Revision: 3661
http://geany.svn.sourceforge.net/geany/?rev=3661&view=rev
Author: ntrel
Date: 2009-03-27 15:36:10 +0000 (Fri, 27 Mar 2009)
Log Message:
-----------
Fix sorting Document menu filetype names.
Modified Paths:
--------------
branches/reorder-filetypes/ChangeLog
branches/reorder-filetypes/src/filetypes.c
Modified: branches/reorder-filetypes/ChangeLog
===================================================================
--- branches/reorder-filetypes/ChangeLog 2009-03-27 15:33:52 UTC (rev 3660)
+++ branches/reorder-filetypes/ChangeLog 2009-03-27 15:36:10 UTC (rev 3661)
@@ -5,8 +5,11 @@
Add filetypes_foreach_sorted(), filetypes_find().
* src/filetypes.h, src/plugindata.h:
Sort filetype IDs randomly (so we can append randomly).
+ * src/filetypes.c:
+ Fix sorting Document menu filetype names.
+
2009-03-20 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* src/highlighting.c, src/dialogs.c, src/plugindata.h,
Modified: branches/reorder-filetypes/src/filetypes.c
===================================================================
--- branches/reorder-filetypes/src/filetypes.c 2009-03-27 15:33:52 UTC (rev 3660)
+++ branches/reorder-filetypes/src/filetypes.c 2009-03-27 15:36:10 UTC (rev 3661)
@@ -74,7 +74,7 @@
static GSList *sorted_filetypes = NULL;
-static void create_radio_menu_item(GtkWidget *menu, const gchar *label, GeanyFiletype *ftype);
+static void create_radio_menu_item(GtkWidget *menu, GeanyFiletype *ftype);
/* Note: remember to update HACKING if this function is renamed. */
@@ -660,61 +660,41 @@
}
-#define create_sub_menu(menu, item, title) \
- (menu) = gtk_menu_new(); \
- (item) = gtk_menu_item_new_with_mnemonic((title)); \
- gtk_menu_item_set_submenu(GTK_MENU_ITEM((item)), (menu)); \
- gtk_container_add(GTK_CONTAINER(filetype_menu), (item)); \
- gtk_widget_show((item));
+static GtkWidget *group_menus[GEANY_FILETYPE_GROUP_NONE];
-
-static void create_set_filetype_menu(void)
+static void create_sub_menu(GtkWidget *parent, gsize group_id, const gchar *title)
{
- filetype_id ft_id;
- GtkWidget *filetype_menu = ui_lookup_widget(main_widgets.window, "set_filetype1_menu");
- GtkWidget *sub_menu = filetype_menu;
- GtkWidget *sub_menu_programming, *sub_menu_scripts, *sub_menu_markup, *sub_menu_misc;
- GtkWidget *sub_item_programming, *sub_item_scripts, *sub_item_markup, *sub_item_misc;
+ GtkWidget *menu, *item;
- create_sub_menu(sub_menu_programming, sub_item_programming, _("_Programming Languages"));
- create_sub_menu(sub_menu_scripts, sub_item_scripts, _("_Scripting Languages"));
- create_sub_menu(sub_menu_markup, sub_item_markup, _("_Markup Languages"));
- create_sub_menu(sub_menu_misc, sub_item_misc, _("M_iscellaneous Languages"));
+ menu = gtk_menu_new();
+ item = gtk_menu_item_new_with_mnemonic((title));
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), menu);
+ gtk_container_add(GTK_CONTAINER(parent), item);
+ gtk_widget_show(item);
+ group_menus[group_id] = menu;
+}
- /* Append all filetypes to the filetype menu */
- for (ft_id = 0; ft_id < filetypes_array->len; ft_id++)
- {
- GeanyFiletype *ft = filetypes[ft_id];
- const gchar *title = ft->title;
- /* insert separators for different filetype groups */
- switch (ft->group)
- {
- case GEANY_FILETYPE_GROUP_COMPILED: /* programming */
- sub_menu = sub_menu_programming;
- break;
+static void add_ft_menu_item(gpointer pft, gpointer user_data)
+{
+ GeanyFiletype *ft = pft;
- case GEANY_FILETYPE_GROUP_SCRIPT: /* scripts */
- sub_menu = sub_menu_scripts;
- break;
+ create_radio_menu_item(group_menus[ft->group], ft);
+}
- case GEANY_FILETYPE_GROUP_MARKUP: /* markup */
- sub_menu = sub_menu_markup;
- break;
- case GEANY_FILETYPE_GROUP_MISC: /* misc */
- sub_menu = sub_menu_misc;
- break;
+static void create_set_filetype_menu(void)
+{
+ GtkWidget *filetype_menu = ui_lookup_widget(main_widgets.window, "set_filetype1_menu");
- case GEANY_FILETYPE_GROUP_NONE: /* none */
- sub_menu = filetype_menu;
- title = _("None");
- break;
+ create_sub_menu(filetype_menu, GEANY_FILETYPE_GROUP_COMPILED, _("_Programming Languages"));
+ create_sub_menu(filetype_menu, GEANY_FILETYPE_GROUP_SCRIPT, _("_Scripting Languages"));
+ create_sub_menu(filetype_menu, GEANY_FILETYPE_GROUP_MARKUP, _("_Markup Languages"));
+ create_sub_menu(filetype_menu, GEANY_FILETYPE_GROUP_MISC, _("M_iscellaneous Languages"));
- default: break;
- }
- create_radio_menu_item(sub_menu, title, ft);
- }
+ /* Append all filetypes to the filetype menu */
+ filetypes_foreach_sorted(add_ft_menu_item, NULL);
+ create_radio_menu_item(filetype_menu, filetypes[GEANY_FILETYPES_NONE]);
}
@@ -994,12 +974,12 @@
}
-static void create_radio_menu_item(GtkWidget *menu, const gchar *label, GeanyFiletype *ftype)
+static void create_radio_menu_item(GtkWidget *menu, GeanyFiletype *ftype)
{
static GSList *group = NULL;
GtkWidget *tmp;
- tmp = gtk_radio_menu_item_new_with_label(group, label);
+ tmp = gtk_radio_menu_item_new_with_label(group, ftype->title);
group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(tmp));
ftype->priv->menu_item = tmp;
gtk_widget_show(tmp);
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