/* stolen from autoaccept.c and gtkblist.c files. */ void buddy_context_menu_add_item (PurpleBlistNode * node, GList ** menu, PurplePlugin * plugin) { PurplePluginProtocolInfo *prpl_info; if (PURPLE_BLIST_NODE_IS_BUDDY (node)) { prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO (((PurpleBuddy *) node)->account-> gc->prpl); if (prpl_info && prpl_info->send_file) { if (!prpl_info->can_receive_file || prpl_info->can_receive_file (((PurpleBuddy *) node)-> account->gc, ((PurpleBuddy *) node)->name)) { PurpleMenuAction *action; if (!PURPLE_BLIST_NODE_IS_BUDDY (node) && !PURPLE_BLIST_NODE_IS_CONTACT (node) && !(purple_blist_node_get_flags (node) & PURPLE_BLIST_NODE_FLAG_NO_SAVE)) return; action = purple_menu_action_new (SCREENSHOT_SEND_MENUITEM_LABEL, PURPLE_CALLBACK (on_blist_context_menu_send_capture), plugin, NULL); (*menu) = g_list_prepend (*menu, action); /* add */ } } } }
static void extended_buddy_menu_cb(PurpleBlistNode *node, GList **menu) { PurpleMenuAction *action = NULL; GList *submenu = NULL; if( !PURPLE_BLIST_NODE_IS_CONTACT(node) && !PURPLE_BLIST_NODE_IS_BUDDY(node) && !PURPLE_BLIST_NODE_IS_CHAT(node) ) { return; } if(purple_blist_node_get_flags(node) & PURPLE_BLIST_NODE_FLAG_NO_SAVE) { return; } if( purple_prefs_get_int(PLUGIN_PREFS_PREFIX "/sort1") != SORT_METHOD_PRIORITY && purple_prefs_get_int(PLUGIN_PREFS_PREFIX "/sort2") != SORT_METHOD_PRIORITY && purple_prefs_get_int(PLUGIN_PREFS_PREFIX "/sort3") != SORT_METHOD_PRIORITY ) { return; } submenu = menu_append(submenu, node, PRIORITY_VERY_HIGH, _("Very High")); submenu = menu_append(submenu, node, PRIORITY_HIGH, _("High")); submenu = menu_append(submenu, node, PRIORITY_NORMAL, _("Normal")); submenu = menu_append(submenu, node, PRIORITY_LOW, _("Low")); submenu = menu_append(submenu, node, PRIORITY_VERY_LOW, _("Very Low")); action = purple_menu_action_new(_("Set Priority"), NULL, NULL, submenu); *menu = g_list_append(*menu, action); }
void purple_events_ui_menu_add(PurpleBlistNode *node, GList **menu, PurpleEventsContext *context) { PurpleBlistNode *group = NULL; node = _purple_events_ui_get_good_node(node); if ( ( node == NULL ) || ( ( purple_blist_node_get_flags(node) & PURPLE_BLIST_NODE_FLAG_NO_SAVE ) > 0 ) ) return; if ( PURPLE_BLIST_NODE_IS_CONTACT(node) ) group = PURPLE_BLIST_NODE(purple_buddy_get_group(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)))); gint current = purple_blist_node_get_int(node, "events"); GList *actions = NULL; PurpleMenuAction *action = NULL; const gchar *label = ""; if ( current != 0 ) { if ( PURPLE_BLIST_NODE_IS_GROUP(node) || ( purple_blist_node_get_int(group, "events") == 0 ) ) label = _("Use global settings"); else label = _("Use group settings"); action = purple_menu_action_new(label, (PurpleCallback)_purple_events_ui_reset_setting, NULL, NULL); actions = g_list_prepend(actions, action); } if ( current >= 0 ) { action = purple_menu_action_new(_("Disable all events"), (PurpleCallback)_purple_events_ui_disable_all_events, NULL, NULL); actions = g_list_prepend(actions, action); } action = purple_menu_action_new(_("Select events"), (PurpleCallback)_purple_events_ui_events_selection_dialog, context, NULL); actions = g_list_prepend(actions, action); switch ( current ) { case -1: label = _("Current events: all disabled"); break; case 0: if ( PURPLE_BLIST_NODE_IS_GROUP(node) || ( purple_blist_node_get_int(group, "events") == 0 ) ) label = _("Current events: global settings"); else label = _("Current events: group settings"); break; case 1: label = _("Current events: selection"); break; } actions = g_list_prepend(actions, NULL); action = purple_menu_action_new(label, NULL, NULL, NULL); actions = g_list_prepend(actions, action); *menu = g_list_append(*menu, NULL); action = purple_menu_action_new(_("Events"), NULL, NULL, actions); *menu = g_list_append(*menu, action); }
static void context_menu(PurpleBlistNode *node, GList **menu, gpointer plugin) { PurpleMenuAction *action; if (!PURPLE_BLIST_NODE_IS_BUDDY(node) && !PURPLE_BLIST_NODE_IS_CONTACT(node) && !(purple_blist_node_get_flags(node) & PURPLE_BLIST_NODE_FLAG_NO_SAVE)) return; action = purple_menu_action_new(_("Autoaccept File Transfers..."), PURPLE_CALLBACK(set_auto_accept_settings), plugin, NULL); (*menu) = g_list_prepend(*menu, action); }
static void gtksmartear_drawing_blist_menu_cb(PurpleBlistNode *node, GList **menu) { /* Don't do anything if the blistnode won't be saved */ if(purple_blist_node_get_flags(node) & PURPLE_BLIST_NODE_FLAG_NO_SAVE) return; /* We don't support setting anything for a chat, since there's no way * to get the name of a chat */ if(PURPLE_BLIST_NODE_IS_CHAT(node)) return; (*menu) = g_list_append(*menu, purple_menu_action_new(_("SmartEar Options"), PURPLE_CALLBACK(gtksmartear_blist_menu_cb), NULL, NULL)); }