void menu_chanmenu (struct session *sess, GdkEventButton * event, char *chan) { GtkWidget *menu; int is_joined = FALSE; if (find_channel (sess->server, chan)) is_joined = TRUE; if (str_copy) free (str_copy); str_copy = strdup (chan); menu = gtk_menu_new (); menu_quick_item (0, chan, menu, XCMENU_SHADED, str_copy, 0); menu_quick_item (0, 0, menu, XCMENU_SHADED, str_copy, 0); if (!is_joined) menu_quick_item_with_callback (menu_chan_join, _("Join Channel"), menu, str_copy); else { menu_quick_item_with_callback (menu_chan_part, _("Part Channel"), menu, str_copy); menu_quick_item_with_callback (menu_chan_cycle, _("Cycle Channel"), menu, str_copy); } menu_add_plugin_items (menu, "\x5$CHAN", str_copy); menu_popup (menu, event, NULL); }
void menu_urlmenu(GdkEventButton * event, char *url) { GtkWidget *menu; char *tmp, *chop; if (str_copy) free(str_copy); str_copy = strdup(url); menu = gtk_menu_new(); /* more than 51 chars? Chop it */ if (g_utf8_strlen(str_copy, -1) >= 52) { tmp = strdup(str_copy); chop = g_utf8_offset_to_pointer(tmp, 48); chop[0] = chop[1] = chop[2] = '.'; chop[3] = 0; menu_quick_item(0, tmp, menu, XCMENU_SHADED, 0, 0); free(tmp); } else { menu_quick_item(0, str_copy, menu, XCMENU_SHADED, 0, 0); } menu_quick_item(0, 0, menu, XCMENU_SHADED, 0, 0); /* Two hardcoded entries */ if (strncmp(str_copy, "irc://", 6) == 0 || strncmp(str_copy, "ircs://", 7) == 0) menu_quick_item_with_callback(open_url_cb, _("Connect"), menu, str_copy); else menu_quick_item_with_callback(open_url_cb, _("Open Link in Browser"), menu, str_copy); menu_quick_item_with_callback(copy_to_clipboard_cb, _("Copy Selected Link"), menu, str_copy); /* custom ones from urlhandlers.conf */ menu_create(menu, urlhandler_list, str_copy, TRUE); menu_add_plugin_items(menu, "\x4$URL", str_copy); menu_popup(menu, event, NULL); }
static void usermenu_create (GtkWidget *menu) { menu_create (menu, usermenu_list, "", FALSE); menu_quick_item (0, 0, menu, XCMENU_SHADED, 0, 0); /* sep */ menu_quick_item_with_callback (menu_usermenu, _("Edit This Menu..."), menu, 0); }