static void menu_cardview_context_menu(GtkWidget *treeview, GdkEventButton *event, gpointer userdata) /* Create a right click context menu */ { GtkWidget *menu, *menuitem; GtkTreeViewColumn *column2 = gtk_tree_view_get_column(GTK_TREE_VIEW(treeview),2); #if GTK_CHECK_VERSION(3,6,0) GtkWidget *menuitem_child; #endif UNUSED(userdata); menu = gtk_menu_new(); /* Menu Item */ menuitem = gtk_menu_item_new_with_label("Copy"); g_signal_connect(menuitem, "activate", (GCallback) menu_cardview_copy, treeview); #if GTK_CHECK_VERSION(3,6,0) menuitem_child = gtk_bin_get_child (GTK_BIN (menuitem)); gtk_accel_label_set_accel (GTK_ACCEL_LABEL (menuitem_child), GDK_KEY_c, GDK_CONTROL_MASK); #endif gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); /* Menu Item */ menuitem = gtk_menu_item_new_with_label("Expand all"); g_signal_connect(menuitem, "activate", (GCallback) menu_cardview_context_menu_expand_all, treeview); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); /* Menu Item */ if (gtk_tree_view_column_get_visible(column2)) { menuitem = gtk_menu_item_new_with_label("Show interpreted value"); g_signal_connect(menuitem, "activate", (GCallback) menu_cardview_context_menu_change_value_type, treeview); } else { menuitem = gtk_menu_item_new_with_label("Show raw value"); g_signal_connect(menuitem, "activate", (GCallback) menu_cardview_context_menu_change_value_type, treeview); } #if GTK_CHECK_VERSION(3,6,0) menuitem_child = gtk_bin_get_child (GTK_BIN (menuitem)); gtk_accel_label_set_accel (GTK_ACCEL_LABEL (menuitem_child), GDK_KEY_r, GDK_CONTROL_MASK); #endif gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); gtk_widget_show_all(menu); gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, (event != NULL) ? event->button : 0, gdk_event_get_time((GdkEvent *)event)); }
Gtk::ImageMenuItem * new_toc_menu_item () //create a menu item like: "[]_Table_of_Contents______Ctrl-Alt-1__>" { Gtk::ImageMenuItem * menu_item = manage(new Gtk::ImageMenuItem ()); menu_item->set_image(*manage(new Gtk::Image(Gtk::Stock::JUMP_TO, Gtk::ICON_SIZE_MENU))); Gtk::AccelLabel *acclabel = manage(new Gtk::AccelLabel(_("Table of Contents"))); acclabel->set_alignment (Gtk::ALIGN_START); /* I don't have gtkmm-3.6, but I have gtk-3.6 */ /* TO UNCOMMENT *///acclabel->set_accel (GDK_KEY_1, Gdk::CONTROL_MASK | Gdk::MOD1_MASK); /* TO DELETE */gtk_accel_label_set_accel (acclabel->gobj (),GDK_KEY_1, GdkModifierType (GDK_CONTROL_MASK | GDK_MOD1_MASK)); acclabel->show (); menu_item->add (*acclabel); return menu_item; }
static void set_accel (GtkApplication *app, GtkWidget *widget) { GtkWidget *accel_label; const gchar *action; gchar **accels; guint key; GdkModifierType mods; accel_label = gtk_bin_get_child (GTK_BIN (widget)); g_assert (GTK_IS_ACCEL_LABEL (accel_label)); action = gtk_actionable_get_action_name (GTK_ACTIONABLE (widget)); accels = gtk_application_get_accels_for_action (app, action); gtk_accelerator_parse (accels[0], &key, &mods); gtk_accel_label_set_accel (GTK_ACCEL_LABEL (accel_label), key, mods); g_strfreev (accels); }