comparison src/menu.c @ 1397:a0bd58a6535f

In various Edit context menus, only display editors that match the file types in the selection.
author zas_
date Sun, 08 Mar 2009 13:23:25 +0000
parents 8b89e3ff286b
children 9e7aed6ba6bd
comparison
equal deleted inserted replaced
1396:58f0b4586c8c 1397:a0bd58a6535f
62 *----------------------------------------------------------------------------- 62 *-----------------------------------------------------------------------------
63 * edit menu 63 * edit menu
64 *----------------------------------------------------------------------------- 64 *-----------------------------------------------------------------------------
65 */ 65 */
66 66
67 static void add_edit_items(GtkWidget *menu, GCallback func) 67 static void add_edit_items(GtkWidget *menu, GCallback func, GList *fd_list)
68 { 68 {
69 GList *editors_list = editor_list_get(); 69 GList *editors_list = editor_list_get();
70 GList *work = editors_list; 70 GList *work = editors_list;
71 71
72 while (work) 72 while (work)
73 { 73 {
74 const EditorDescription *editor = work->data; 74 const EditorDescription *editor = work->data;
75 work = work->next; 75 work = work->next;
76 76 gboolean active = TRUE;
77 menu_item_add(menu, editor->name, func, editor->key); 77
78 if (fd_list)
79 {
80 gint flags = editor_command_parse(editor, fd_list, NULL);
81 if ((flags & EDITOR_ERROR_MASK) != 0)
82 active = FALSE;
83 }
84
85 if (active)
86 menu_item_add(menu, editor->name, func, editor->key);
78 } 87 }
79 88
80 g_list_free(editors_list); 89 g_list_free(editors_list);
81 } 90 }
82 91
83 92
84 GtkWidget *submenu_add_edit(GtkWidget *menu, GtkWidget **menu_item, GCallback func, gpointer data) 93 GtkWidget *submenu_add_edit(GtkWidget *menu, GtkWidget **menu_item, GCallback func, gpointer data, GList *fd_list)
85 { 94 {
86 GtkWidget *item; 95 GtkWidget *item;
87 GtkWidget *submenu; 96 GtkWidget *submenu;
88 97
89 item = menu_item_add(menu, _("_Edit"), NULL, NULL); 98 item = menu_item_add(menu, _("_Edit"), NULL, NULL);
90 99
91 submenu = gtk_menu_new(); 100 submenu = gtk_menu_new();
92 g_object_set_data(G_OBJECT(submenu), "submenu_data", data); 101 g_object_set_data(G_OBJECT(submenu), "submenu_data", data);
93 add_edit_items(submenu, func); 102 add_edit_items(submenu, func, fd_list);
94 103
95 gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), submenu); 104 gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), submenu);
96 105
97 if (menu_item) *menu_item = item; 106 if (menu_item) *menu_item = item;
98 107