comparison src/dupe.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 fe4da037be21
children 3a9fb1b52559
comparison
equal deleted inserted replaced
1396:58f0b4586c8c 1397:a0bd58a6535f
2209 DupeWindow *dw = data; 2209 DupeWindow *dw = data;
2210 2210
2211 dupe_window_close(dw); 2211 dupe_window_close(dw);
2212 } 2212 }
2213 2213
2214 static void dupe_menu_popup_destroy_cb(GtkWidget *widget, gpointer data)
2215 {
2216 DupeWindow *dw = data;
2217
2218 filelist_free(dw->editmenu_fd_list);
2219 dw->editmenu_fd_list = NULL;
2220 }
2221
2222 static GList *dupe_window_get_fd_list(DupeWindow *dw)
2223 {
2224 GList *list;
2225
2226 if (GTK_WIDGET_HAS_FOCUS(dw->second_listview))
2227 {
2228 list = dupe_listview_get_selection(dw, dw->second_listview);
2229 }
2230 else
2231 {
2232 list = dupe_listview_get_selection(dw, dw->listview);
2233 }
2234
2235 return list;
2236 }
2237
2214 static GtkWidget *dupe_menu_popup_main(DupeWindow *dw, DupeItem *di) 2238 static GtkWidget *dupe_menu_popup_main(DupeWindow *dw, DupeItem *di)
2215 { 2239 {
2216 GtkWidget *menu; 2240 GtkWidget *menu;
2217 GtkWidget *item; 2241 GtkWidget *item;
2218 gint on_row; 2242 gint on_row;
2219 2243
2220 on_row = (di != NULL); 2244 on_row = (di != NULL);
2221 2245
2222 menu = popup_menu_short_lived(); 2246 menu = popup_menu_short_lived();
2247 g_signal_connect(G_OBJECT(menu), "destroy",
2248 G_CALLBACK(dupe_menu_popup_destroy_cb), dw);
2249
2223 menu_item_add_sensitive(menu, _("_View"), on_row, 2250 menu_item_add_sensitive(menu, _("_View"), on_row,
2224 G_CALLBACK(dupe_menu_view_cb), dw); 2251 G_CALLBACK(dupe_menu_view_cb), dw);
2225 menu_item_add_stock_sensitive(menu, _("View in _new window"), GTK_STOCK_NEW, on_row, 2252 menu_item_add_stock_sensitive(menu, _("View in _new window"), GTK_STOCK_NEW, on_row,
2226 G_CALLBACK(dupe_menu_viewnew_cb), dw); 2253 G_CALLBACK(dupe_menu_viewnew_cb), dw);
2227 menu_item_add_divider(menu); 2254 menu_item_add_divider(menu);
2232 menu_item_add_sensitive(menu, _("Select group _1 duplicates"), (dw->dupes != NULL), 2259 menu_item_add_sensitive(menu, _("Select group _1 duplicates"), (dw->dupes != NULL),
2233 G_CALLBACK(dupe_menu_select_dupes_set1_cb), dw); 2260 G_CALLBACK(dupe_menu_select_dupes_set1_cb), dw);
2234 menu_item_add_sensitive(menu, _("Select group _2 duplicates"), (dw->dupes != NULL), 2261 menu_item_add_sensitive(menu, _("Select group _2 duplicates"), (dw->dupes != NULL),
2235 G_CALLBACK(dupe_menu_select_dupes_set2_cb), dw); 2262 G_CALLBACK(dupe_menu_select_dupes_set2_cb), dw);
2236 menu_item_add_divider(menu); 2263 menu_item_add_divider(menu);
2237 submenu_add_edit(menu, &item, G_CALLBACK(dupe_menu_edit_cb), dw); 2264
2265 dw->editmenu_fd_list = dupe_window_get_fd_list(dw);
2266 submenu_add_edit(menu, &item, G_CALLBACK(dupe_menu_edit_cb), dw, dw->editmenu_fd_list);
2238 if (!on_row) gtk_widget_set_sensitive(item, FALSE); 2267 if (!on_row) gtk_widget_set_sensitive(item, FALSE);
2239 menu_item_add_stock_sensitive(menu, _("Add to new collection"), GTK_STOCK_INDEX, on_row, 2268 menu_item_add_stock_sensitive(menu, _("Add to new collection"), GTK_STOCK_INDEX, on_row,
2240 G_CALLBACK(dupe_menu_collection_cb), dw); 2269 G_CALLBACK(dupe_menu_collection_cb), dw);
2241 menu_item_add_stock_sensitive(menu, _("Print..."), GTK_STOCK_PRINT, on_row, 2270 menu_item_add_stock_sensitive(menu, _("Print..."), GTK_STOCK_PRINT, on_row,
2242 G_CALLBACK(dupe_menu_print_cb), dw); 2271 G_CALLBACK(dupe_menu_print_cb), dw);