Mercurial > geeqie.yaz
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 |