GtkWidget *vf_pop_menu(ViewFile *vf) { GtkWidget *menu; GtkWidget *item; GtkWidget *submenu; gboolean active = FALSE; switch (vf->type) { case FILEVIEW_LIST: vflist_color_set(vf, VFLIST(vf)->click_fd, TRUE); active = (VFLIST(vf)->click_fd != NULL); break; case FILEVIEW_ICON: active = (VFICON(vf)->click_id != NULL); break; } menu = popup_menu_short_lived(); g_signal_connect(G_OBJECT(menu), "destroy", G_CALLBACK(vf_popup_destroy_cb), vf); if (vf->clicked_mark > 0) { gint mark = vf->clicked_mark; gchar *str_set_mark = g_strdup_printf(_("_Set mark %d"), mark); gchar *str_res_mark = g_strdup_printf(_("_Reset mark %d"), mark); gchar *str_toggle_mark = g_strdup_printf(_("_Toggle mark %d"), mark); gchar *str_sel_mark = g_strdup_printf(_("_Select mark %d"), mark); gchar *str_sel_mark_or = g_strdup_printf(_("_Add mark %d"), mark); gchar *str_sel_mark_and = g_strdup_printf(_("_Intersection with mark %d"), mark); gchar *str_sel_mark_minus = g_strdup_printf(_("_Unselect mark %d"), mark); g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE); vf->active_mark = mark; vf->clicked_mark = 0; menu_item_add_sensitive(menu, str_set_mark, active, G_CALLBACK(vf_pop_menu_set_mark_sel_cb), vf); menu_item_add_sensitive(menu, str_res_mark, active, G_CALLBACK(vf_pop_menu_res_mark_sel_cb), vf); menu_item_add_sensitive(menu, str_toggle_mark, active, G_CALLBACK(vf_pop_menu_toggle_mark_sel_cb), vf); menu_item_add_divider(menu); menu_item_add_sensitive(menu, str_sel_mark, active, G_CALLBACK(vf_pop_menu_sel_mark_cb), vf); menu_item_add_sensitive(menu, str_sel_mark_or, active, G_CALLBACK(vf_pop_menu_sel_mark_or_cb), vf); menu_item_add_sensitive(menu, str_sel_mark_and, active, G_CALLBACK(vf_pop_menu_sel_mark_and_cb), vf); menu_item_add_sensitive(menu, str_sel_mark_minus, active, G_CALLBACK(vf_pop_menu_sel_mark_minus_cb), vf); menu_item_add_divider(menu); g_free(str_set_mark); g_free(str_res_mark); g_free(str_toggle_mark); g_free(str_sel_mark); g_free(str_sel_mark_and); g_free(str_sel_mark_or); g_free(str_sel_mark_minus); } vf->editmenu_fd_list = vf_pop_menu_file_list(vf); submenu_add_edit(menu, &item, G_CALLBACK(vf_pop_menu_edit_cb), vf, vf->editmenu_fd_list); gtk_widget_set_sensitive(item, active); menu_item_add_stock_sensitive(menu, _("View in _new window"), GTK_STOCK_NEW, active, G_CALLBACK(vf_pop_menu_view_cb), vf); menu_item_add_divider(menu); menu_item_add_stock_sensitive(menu, _("_Copy..."), GTK_STOCK_COPY, active, G_CALLBACK(vf_pop_menu_copy_cb), vf); menu_item_add_sensitive(menu, _("_Move..."), active, G_CALLBACK(vf_pop_menu_move_cb), vf); menu_item_add_sensitive(menu, _("_Rename..."), active, G_CALLBACK(vf_pop_menu_rename_cb), vf); menu_item_add_stock_sensitive(menu, _("_Delete..."), GTK_STOCK_DELETE, active, G_CALLBACK(vf_pop_menu_delete_cb), vf); menu_item_add_sensitive(menu, _("_Copy path"), active, G_CALLBACK(vf_pop_menu_copy_path_cb), vf); menu_item_add_sensitive(menu, _("Enable file _grouping"), active, G_CALLBACK(vf_pop_menu_enable_grouping_cb), vf); menu_item_add_sensitive(menu, _("Disable file groupi_ng"), active, G_CALLBACK(vf_pop_menu_disable_grouping_cb), vf); menu_item_add_divider(menu); submenu = submenu_add_sort(NULL, G_CALLBACK(vf_pop_menu_sort_cb), vf, FALSE, FALSE, TRUE, vf->sort_method); menu_item_add_divider(submenu); menu_item_add_check(submenu, _("Ascending"), vf->sort_ascend, G_CALLBACK(vf_pop_menu_sort_ascend_cb), vf); item = menu_item_add(menu, _("_Sort"), NULL, NULL); gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), submenu); item = menu_item_add_radio(menu, _("View as _List"), GINT_TO_POINTER(FILEVIEW_LIST), vf->type == FILEVIEW_LIST, G_CALLBACK(vf_pop_menu_toggle_view_type_cb), vf); item = menu_item_add_radio(menu, _("View as _Icons"), GINT_TO_POINTER(FILEVIEW_ICON), vf->type == FILEVIEW_ICON, G_CALLBACK(vf_pop_menu_toggle_view_type_cb), vf); switch (vf->type) { case FILEVIEW_LIST: menu_item_add_check(menu, _("Show _thumbnails"), VFLIST(vf)->thumbs_enabled, G_CALLBACK(vflist_pop_menu_thumbs_cb), vf); break; case FILEVIEW_ICON: menu_item_add_check(menu, _("Show filename _text"), VFICON(vf)->show_text, G_CALLBACK(vficon_pop_menu_show_names_cb), vf); break; } menu_item_add_stock(menu, _("Re_fresh"), GTK_STOCK_REFRESH, G_CALLBACK(vf_pop_menu_refresh_cb), vf); return menu; }
static GtkWidget *view_popup_menu(ViewWindow *vw) { GtkWidget *menu; GtkWidget *item; GList *editmenu_fd_list; menu = popup_menu_short_lived(); menu_item_add_stock(menu, _("Zoom _in"), GTK_STOCK_ZOOM_IN, G_CALLBACK(view_zoom_in_cb), vw); menu_item_add_stock(menu, _("Zoom _out"), GTK_STOCK_ZOOM_OUT, G_CALLBACK(view_zoom_out_cb), vw); menu_item_add_stock(menu, _("Zoom _1:1"), GTK_STOCK_ZOOM_100, G_CALLBACK(view_zoom_1_1_cb), vw); menu_item_add_stock(menu, _("Fit image to _window"), GTK_STOCK_ZOOM_FIT, G_CALLBACK(view_zoom_fit_cb), vw); menu_item_add_divider(menu); editmenu_fd_list = view_window_get_fd_list(vw); g_signal_connect(G_OBJECT(menu), "destroy", G_CALLBACK(view_popup_menu_destroy_cb), editmenu_fd_list); item = submenu_add_edit(menu, NULL, G_CALLBACK(view_edit_cb), vw, editmenu_fd_list); menu_item_add_divider(item); menu_item_add(item, _("Set as _wallpaper"), G_CALLBACK(view_wallpaper_cb), vw); submenu_add_alter(menu, G_CALLBACK(view_alter_cb), vw); menu_item_add_stock(menu, _("View in _new window"), GTK_STOCK_NEW, G_CALLBACK(view_new_window_cb), vw); item = menu_item_add(menu, _("_Go to directory view"), G_CALLBACK(view_set_layout_path_cb), vw); menu_item_add_divider(menu); menu_item_add_stock(menu, _("_Copy..."), GTK_STOCK_COPY, G_CALLBACK(view_copy_cb), vw); menu_item_add(menu, _("_Move..."), G_CALLBACK(view_move_cb), vw); menu_item_add(menu, _("_Rename..."), G_CALLBACK(view_rename_cb), vw); menu_item_add_stock(menu, _("_Delete..."), GTK_STOCK_DELETE, G_CALLBACK(view_delete_cb), vw); menu_item_add(menu, _("_Copy path"), G_CALLBACK(view_copy_path_cb), vw); menu_item_add_divider(menu); if (vw->ss) { menu_item_add(menu, _("_Stop slideshow"), G_CALLBACK(view_slideshow_stop_cb), vw); if (slideshow_paused(vw->ss)) { item = menu_item_add(menu, _("Continue slides_how"), G_CALLBACK(view_slideshow_pause_cb), vw); } else { item = menu_item_add(menu, _("Pause slides_how"), G_CALLBACK(view_slideshow_pause_cb), vw); } } else { item = menu_item_add(menu, _("_Start slideshow"), G_CALLBACK(view_slideshow_start_cb), vw); gtk_widget_set_sensitive(item, (vw->list != NULL) || view_window_contains_collection(vw)); item = menu_item_add(menu, _("Pause slides_how"), G_CALLBACK(view_slideshow_pause_cb), vw); gtk_widget_set_sensitive(item, FALSE); } if (vw->fs) { menu_item_add(menu, _("Exit _full screen"), G_CALLBACK(view_fullscreen_cb), vw); } else { menu_item_add(menu, _("_Full screen"), G_CALLBACK(view_fullscreen_cb), vw); } menu_item_add_divider(menu); menu_item_add_stock(menu, _("C_lose window"), GTK_STOCK_CLOSE, G_CALLBACK(view_close_cb), vw); return menu; }