Mercurial > geeqie.yaz
comparison src/view_dir.c @ 1272:e0e12512cde2
read external editors from .desktop files
author | nadvornik |
---|---|
date | Sun, 01 Feb 2009 12:48:14 +0000 |
parents | 98be4a5e36f8 |
children | 8b89e3ff286b |
comparison
equal
deleted
inserted
replaced
1271:4fcdbb497df3 | 1272:e0e12512cde2 |
---|---|
325 static void vd_drop_menu_filter_cb(GtkWidget *widget, gpointer data) | 325 static void vd_drop_menu_filter_cb(GtkWidget *widget, gpointer data) |
326 { | 326 { |
327 ViewDir *vd = data; | 327 ViewDir *vd = data; |
328 const gchar *path; | 328 const gchar *path; |
329 GList *list; | 329 GList *list; |
330 guint n; | 330 const gchar *key; |
331 | 331 |
332 if (!vd->drop_fd) return; | 332 if (!vd->drop_fd) return; |
333 | 333 |
334 n = GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(widget), "filter_idx")); | 334 key = g_object_get_data(G_OBJECT(widget), "filter_key"); |
335 if (n == 0) return; | |
336 n--; | |
337 | 335 |
338 path = vd->drop_fd->path; | 336 path = vd->drop_fd->path; |
339 list = vd->drop_list; | 337 list = vd->drop_list; |
340 | 338 |
341 vd->drop_list = NULL; | 339 vd->drop_list = NULL; |
342 | 340 |
343 file_util_start_filter_from_filelist(n, list, path, vd->widget); | 341 file_util_start_filter_from_filelist(key, list, path, vd->widget); |
344 } | 342 } |
345 | 343 |
346 | 344 |
347 | 345 |
348 GtkWidget *vd_drop_menu(ViewDir *vd, gint active) | 346 GtkWidget *vd_drop_menu(ViewDir *vd, gint active) |
349 { | 347 { |
350 GtkWidget *menu; | 348 GtkWidget *menu; |
351 guint i; | 349 GList *editors_list = editor_list_get(); |
350 GList *work = editors_list; | |
352 | 351 |
353 menu = popup_menu_short_lived(); | 352 menu = popup_menu_short_lived(); |
354 g_signal_connect(G_OBJECT(menu), "destroy", | 353 g_signal_connect(G_OBJECT(menu), "destroy", |
355 G_CALLBACK(vd_popup_destroy_cb), vd); | 354 G_CALLBACK(vd_popup_destroy_cb), vd); |
356 | 355 |
357 menu_item_add_stock_sensitive(menu, _("_Copy"), GTK_STOCK_COPY, active, | 356 menu_item_add_stock_sensitive(menu, _("_Copy"), GTK_STOCK_COPY, active, |
358 G_CALLBACK(vd_drop_menu_copy_cb), vd); | 357 G_CALLBACK(vd_drop_menu_copy_cb), vd); |
359 menu_item_add_sensitive(menu, _("_Move"), active, G_CALLBACK(vd_drop_menu_move_cb), vd); | 358 menu_item_add_sensitive(menu, _("_Move"), active, G_CALLBACK(vd_drop_menu_move_cb), vd); |
360 | 359 |
361 for (i = 0; i < GQ_EDITOR_GENERIC_SLOTS; i++) | 360 while (work) |
362 { | 361 { |
363 GtkWidget *item; | 362 GtkWidget *item; |
364 | 363 const EditorDescription *editor = work->data; |
365 const gchar *name = editor_get_name(i); | 364 work = work->next; |
366 if (!name || !editor_is_filter(i)) continue; | 365 |
367 | 366 if (!editor_is_filter(editor->key)) continue; |
368 item = menu_item_add_sensitive(menu, name, active, G_CALLBACK(vd_drop_menu_filter_cb), vd); | 367 item = menu_item_add_sensitive(menu, editor->name, active, G_CALLBACK(vd_drop_menu_filter_cb), vd); |
369 | 368 |
370 g_object_set_data(G_OBJECT(item), "filter_idx", GUINT_TO_POINTER(i + 1)); | 369 g_object_set_data(G_OBJECT(item), "filter_key", editor->key); |
371 } | 370 } |
371 | |
372 g_list_free(editors_list); | |
372 | 373 |
373 menu_item_add_divider(menu); | 374 menu_item_add_divider(menu); |
374 menu_item_add_stock(menu, _("Cancel"), GTK_STOCK_CANCEL, NULL, vd); | 375 menu_item_add_stock(menu, _("Cancel"), GTK_STOCK_CANCEL, NULL, vd); |
375 | 376 |
376 return menu; | 377 return menu; |