Sat, 14 Sep 2013 22:16:59 +0530
Refactored pidgin to use the new protocol API
| pidgin/gtkaccount.c | file | annotate | diff | comparison | revisions | |
| pidgin/gtkblist.c | file | annotate | diff | comparison | revisions | |
| pidgin/gtkconv.c | file | annotate | diff | comparison | revisions | |
| pidgin/gtkdocklet.c | file | annotate | diff | comparison | revisions | |
| pidgin/gtkimhtmltoolbar.c | file | annotate | diff | comparison | revisions | |
| pidgin/gtkroomlist.c | file | annotate | diff | comparison | revisions | |
| pidgin/gtkutils.c | file | annotate | diff | comparison | revisions | |
| pidgin/gtkwebviewtoolbar.c | file | annotate | diff | comparison | revisions |
--- a/pidgin/gtkaccount.c Sat Sep 14 22:16:47 2013 +0530 +++ b/pidgin/gtkaccount.c Sat Sep 14 22:16:59 2013 +0530 @@ -255,7 +255,7 @@ gtk_widget_grab_focus(dialog->protocol_menu); - if (!dialog->protocol || !PURPLE_PROTOCOL_IMPLEMENTS(dialog->protocol, register_user)) { + if (!dialog->protocol || !PURPLE_PROTOCOL_IMPLEMENTS(dialog->protocol, SERVER_IFACE, register_user)) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( dialog->register_button), FALSE); gtk_widget_hide(dialog->register_button); @@ -307,7 +307,7 @@ const char *label; if (!dialog->protocol || ! PURPLE_PROTOCOL_IMPLEMENTS( - dialog->protocol, get_account_text_table)) { + dialog->protocol, CLIENT_IFACE, get_account_text_table)) { return FALSE; } @@ -334,7 +334,7 @@ GHashTable *table = NULL; const char *label = NULL; - if(PURPLE_PROTOCOL_IMPLEMENTS(dialog->protocol, get_account_text_table)) { + if(PURPLE_PROTOCOL_IMPLEMENTS(dialog->protocol, CLIENT_IFACE, get_account_text_table)) { table = purple_protocol_client_iface_get_account_text_table(dialog->protocol, NULL); label = g_hash_table_lookup(table, "login_label"); @@ -626,7 +626,7 @@ username = g_strdup(purple_account_get_username(dialog->account)); if (!username && dialog->protocol - && PURPLE_PROTOCOL_IMPLEMENTS(dialog->protocol, get_account_text_table)) { + && PURPLE_PROTOCOL_IMPLEMENTS(dialog->protocol, CLIENT_IFACE, get_account_text_table)) { GHashTable *table; const char *label; table = purple_protocol_client_iface_get_account_text_table(dialog->protocol, NULL); @@ -1326,7 +1326,7 @@ add_voice_options(AccountPrefsDialog *dialog) { #ifdef USE_VV - if (!dialog->protocol || !PURPLE_PROTOCOL_IMPLEMENTS(dialog->protocol, initiate_media)) { + if (!dialog->protocol || !PURPLE_PROTOCOL_IMPLEMENTS(dialog->protocol, MEDIA_IFACE, initiate_session)) { if (dialog->voice_frame) { gtk_widget_destroy(dialog->voice_frame); dialog->voice_frame = NULL; @@ -1786,7 +1786,7 @@ if (dialog->account == NULL) gtk_widget_set_sensitive(button, FALSE); - if (!dialog->protocol || !PURPLE_PROTOCOL_IMPLEMENTS(dialog->protocol, register_user)) + if (!dialog->protocol || !PURPLE_PROTOCOL_IMPLEMENTS(dialog->protocol, SERVER_IFACE, register_user)) gtk_widget_hide(button); /* Setup the page with 'Advanced' (protocol options). */
--- a/pidgin/gtkblist.c Sat Sep 14 22:16:47 2013 +0530 +++ b/pidgin/gtkblist.c Sat Sep 14 22:16:59 2013 +0530 @@ -910,7 +910,7 @@ gc = purple_account_get_connection(data->rq_data.account); protocol = (gc != NULL) ? purple_connection_get_protocol(gc) : NULL; - sensitive = (protocol != NULL && PURPLE_PROTOCOL_IMPLEMENTS(protocol, roomlist_get_list)); + sensitive = (protocol != NULL && PURPLE_PROTOCOL_IMPLEMENTS(protocol, ROOMLIST_IFACE, get_list)); gtk_dialog_set_response_sensitive(GTK_DIALOG(data->rq_data.window), 1, sensitive); } @@ -950,7 +950,7 @@ protocol = purple_connection_get_protocol(gc); - return (PURPLE_PROTOCOL_IMPLEMENTS(protocol, chat_info)); + return (PURPLE_PROTOCOL_IMPLEMENTS(protocol, CHAT_IFACE, info)); } gboolean @@ -1422,7 +1422,7 @@ GList *l, *ll; PurpleProtocol *protocol = purple_connection_get_protocol(gc); - if(!protocol || !PURPLE_PROTOCOL_IMPLEMENTS(protocol, blist_node_menu)) + if(!protocol || !PURPLE_PROTOCOL_IMPLEMENTS(protocol, CLIENT_IFACE, blist_node_menu)) return; for(l = ll = purple_protocol_client_iface_blist_node_menu(protocol, node); l; l = l->next) { @@ -1496,7 +1496,7 @@ contact_expanded = node->contact_expanded; } - if (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, get_info)) { + if (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, SERVER_IFACE, get_info)) { pidgin_new_item_from_stock(menu, _("Get _Info"), PIDGIN_STOCK_TOOLBAR_USER_INFO, G_CALLBACK(gtk_blist_menu_info_cb), buddy, 0, 0, NULL); } @@ -1504,7 +1504,7 @@ G_CALLBACK(gtk_blist_menu_im_cb), buddy, 0, 0, NULL); #ifdef USE_VV - if (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, get_media_caps)) { + if (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, MEDIA_IFACE, get_caps)) { PurpleAccount *account = purple_buddy_get_account(buddy); const gchar *who = purple_buddy_get_name(buddy); PurpleMediaCaps caps = purple_protocol_get_media_caps(account, who); @@ -1526,8 +1526,8 @@ #endif - if (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, send_file)) { - if (!PURPLE_PROTOCOL_IMPLEMENTS(protocol, can_receive_file) || + if (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, XFER_IFACE, send)) { + if (!PURPLE_PROTOCOL_IMPLEMENTS(protocol, XFER_IFACE, can_receive) || purple_protocol_xfer_iface_can_receive(protocol, purple_account_get_connection(purple_buddy_get_account(buddy)), purple_buddy_get_name(buddy))) { @@ -1971,7 +1971,7 @@ protocol = purple_protocols_find(purple_account_get_protocol_id(purple_buddy_get_account(b))); - if (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, get_info)) + if (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, SERVER_IFACE, get_info)) pidgin_retrieve_user_info(purple_account_get_connection(purple_buddy_get_account(b)), purple_buddy_get_name(b)); handled = TRUE; } @@ -3624,7 +3624,7 @@ /* TODO: rlaager wants this sorted. */ /* TODO: darkrain wants it sorted post-translation */ - if (account && PURPLE_PROTOCOL_IMPLEMENTS(protocol, get_moods)) + if (account && PURPLE_PROTOCOL_IMPLEMENTS(protocol, CLIENT_IFACE, get_moods)) mood = purple_protocol_client_iface_get_moods(protocol, account); else mood = global_moods; @@ -3823,7 +3823,7 @@ conv = PURPLE_CHAT_CONVERSATION(bnode->conv.conv); } else { char *chat_name; - if (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, get_chat_name)) + if (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, CHAT_IFACE, get_name)) chat_name = purple_protocol_chat_iface_get_name(protocol, purple_chat_get_components(chat)); else chat_name = g_strdup(purple_chat_get_name(chat)); @@ -4363,7 +4363,7 @@ /* Status Info */ protocol = purple_protocols_find(purple_account_get_protocol_id(purple_buddy_get_account(b))); - if (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, status_text) && + if (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, CLIENT_IFACE, status_text) && purple_account_get_connection(purple_buddy_get_account(b))) { char *tmp = purple_protocol_client_iface_status_text(protocol, b); const char *end; @@ -7412,7 +7412,7 @@ gc = purple_account_get_connection(account); protocol = purple_connection_get_protocol(gc); - if (!PURPLE_PROTOCOL_IMPLEMENTS(protocol, join_chat)) { + if (!PURPLE_PROTOCOL_IMPLEMENTS(protocol, CHAT_IFACE, join)) { purple_notify_error(gc, NULL, _("This protocol does not support chat rooms."), NULL); return; } @@ -7422,7 +7422,7 @@ gc = (PurpleConnection *)l->data; protocol = purple_connection_get_protocol(gc); - if (PURPLE_PROTOCOL_IMPLEMENTS(protocol, join_chat)) { + if (PURPLE_PROTOCOL_IMPLEMENTS(protocol, CHAT_IFACE, join)) { account = purple_connection_get_account(gc); break; } @@ -8297,9 +8297,9 @@ purple_connection_get_protocol(gc) : NULL; if (protocol && - (PURPLE_PROTOCOL_IMPLEMENTS(protocol, get_moods) || - PURPLE_PROTOCOL_IMPLEMENTS(protocol, get_actions))) { - if (PURPLE_PROTOCOL_IMPLEMENTS(protocol, get_moods) && + (PURPLE_PROTOCOL_IMPLEMENTS(protocol, CLIENT_IFACE, get_moods) || + PURPLE_PROTOCOL_IMPLEMENTS(protocol, CLIENT_IFACE, get_actions))) { + if (PURPLE_PROTOCOL_IMPLEMENTS(protocol, CLIENT_IFACE, get_moods) && (purple_connection_get_flags(gc) & PURPLE_CONNECTION_FLAG_SUPPORT_MOODS)) { if (purple_account_get_status(account, "mood")) { @@ -8310,7 +8310,7 @@ } } - if (PURPLE_PROTOCOL_IMPLEMENTS(protocol, get_actions)) { + if (PURPLE_PROTOCOL_IMPLEMENTS(protocol, CLIENT_IFACE, get_actions)) { GtkWidget *menuitem; PurpleProtocolAction *action = NULL; GList *actions, *l;
--- a/pidgin/gtkconv.c Sat Sep 14 22:16:47 2013 +0530 +++ b/pidgin/gtkconv.c Sat Sep 14 22:16:59 2013 +0530 @@ -1661,7 +1661,7 @@ g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); - if (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, send_file)) + if (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, XFER_IFACE, send)) { gboolean can_receive_file = TRUE; @@ -1675,7 +1675,7 @@ gchar *real_who = NULL; real_who = purple_protocol_chat_iface_get_user_real_name(protocol, gc, purple_chat_conversation_get_id(chat), who); - if (!(!PURPLE_PROTOCOL_IMPLEMENTS(protocol, can_receive_file) || + if (!(!PURPLE_PROTOCOL_IMPLEMENTS(protocol, XFER_IFACE, can_receive) || purple_protocol_xfer_iface_can_receive(protocol, gc, real_who ? real_who : who))) can_receive_file = FALSE; g_free(real_who); @@ -1701,7 +1701,7 @@ g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free); } - if (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, get_info)) { + if (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, SERVER_IFACE, get_info)) { button = pidgin_new_item_from_stock(menu, _("Info"), PIDGIN_STOCK_TOOLBAR_USER_INFO, G_CALLBACK(menu_chat_info_cb), PIDGIN_CONVERSATION(conv), 0, 0, NULL); @@ -3272,7 +3272,7 @@ PurpleProtocol *protocol = purple_protocols_find(purple_account_get_protocol_id(account)); if (purple_account_get_connection(account) != NULL && - PURPLE_PROTOCOL_IMPLEMENTS(protocol, chat_info_defaults)) { + PURPLE_PROTOCOL_IMPLEMENTS(protocol, CHAT_IFACE, info_defaults)) { components = purple_protocol_chat_iface_info_defaults(protocol, purple_account_get_connection(account), purple_conversation_get_name(conv)); } else { @@ -3408,7 +3408,7 @@ if (pc != NULL) protocol = purple_connection_get_protocol(pc); - if (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, get_attention_types)) { + if (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, ATTENTION_IFACE, get_types)) { list = purple_protocol_attention_iface_get_types(protocol, purple_connection_get_account(pc)); /* Multiple attention types */ @@ -4464,7 +4464,7 @@ if(!gc || !(protocol = purple_connection_get_protocol(gc))) return; - if(!PURPLE_PROTOCOL_IMPLEMENTS(protocol, set_chat_topic)) + if(!PURPLE_PROTOCOL_IMPLEMENTS(protocol, CHAT_IFACE, set_topic)) return; gtkconv = PIDGIN_CONVERSATION(conv); @@ -4844,7 +4844,7 @@ gtkchat->topic_text = gtk_entry_new(); gtk_widget_set_size_request(gtkchat->topic_text, -1, BUDDYICON_SIZE_MIN); - if(!PURPLE_PROTOCOL_IMPLEMENTS(protocol, set_chat_topic)) { + if(!PURPLE_PROTOCOL_IMPLEMENTS(protocol, CHAT_IFACE, set_topic)) { gtk_editable_set_editable(GTK_EDITABLE(gtkchat->topic_text), FALSE); } else { g_signal_connect(G_OBJECT(gtkchat->topic_text), "activate", @@ -5537,7 +5537,7 @@ * invite him to the chat. */ if (PURPLE_IS_CHAT_CONVERSATION(conv) && - protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, chat_invite) && + protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, CHAT_IFACE, invite) && strcmp(purple_account_get_protocol_id(convaccount), purple_account_get_protocol_id(buddyaccount)) == 0) { purple_chat_conversation_invite_user(PURPLE_CHAT_CONVERSATION(conv), buddyname, NULL, TRUE); @@ -5593,7 +5593,7 @@ * invite him to the chat. */ if (PURPLE_IS_CHAT_CONVERSATION(conv) && - protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, chat_invite) && + protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, CHAT_IFACE, invite) && strcmp(purple_account_get_protocol_id(convaccount), protocol_id) == 0) { purple_chat_conversation_invite_user(PURPLE_CHAT_CONVERSATION(conv), username, NULL, TRUE); } else { @@ -7252,28 +7252,28 @@ /* Deal with menu items */ gtk_action_set_sensitive(win->menu.view_log, TRUE); gtk_action_set_sensitive(win->menu.add_pounce, TRUE); - gtk_action_set_sensitive(win->menu.get_info, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, get_info))); - gtk_action_set_sensitive(win->menu.invite, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, chat_invite))); + gtk_action_set_sensitive(win->menu.get_info, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, SERVER_IFACE, get_info))); + gtk_action_set_sensitive(win->menu.invite, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, CHAT_IFACE, invite))); gtk_action_set_sensitive(win->menu.insert_link, (features & PURPLE_CONNECTION_FLAG_HTML)); gtk_action_set_sensitive(win->menu.insert_image, !(features & PURPLE_CONNECTION_FLAG_NO_IMAGES)); if (PURPLE_IS_IM_CONVERSATION(conv)) { - gtk_action_set_sensitive(win->menu.add, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, add_buddy))); - gtk_action_set_sensitive(win->menu.remove, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, remove_buddy))); + gtk_action_set_sensitive(win->menu.add, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, SERVER_IFACE, add_buddy))); + gtk_action_set_sensitive(win->menu.remove, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, SERVER_IFACE, remove_buddy))); gtk_action_set_sensitive(win->menu.send_file, - (PURPLE_PROTOCOL_IMPLEMENTS(protocol, send_file) && - (!PURPLE_PROTOCOL_IMPLEMENTS(protocol, can_receive_file) || + (PURPLE_PROTOCOL_IMPLEMENTS(protocol, XFER_IFACE, send) && + (!PURPLE_PROTOCOL_IMPLEMENTS(protocol, XFER_IFACE, can_receive) || purple_protocol_xfer_iface_can_receive(protocol, gc, purple_conversation_get_name(conv))))); - gtk_action_set_sensitive(win->menu.get_attention, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, send_attention))); + gtk_action_set_sensitive(win->menu.get_attention, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, ATTENTION_IFACE, send))); gtk_action_set_sensitive(win->menu.alias, (account != NULL) && (purple_blist_find_buddy(account, purple_conversation_get_name(conv)) != NULL)); } else { - gtk_action_set_sensitive(win->menu.add, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, join_chat))); - gtk_action_set_sensitive(win->menu.remove, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, join_chat))); + gtk_action_set_sensitive(win->menu.add, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, CHAT_IFACE, join))); + gtk_action_set_sensitive(win->menu.remove, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, CHAT_IFACE, join))); gtk_action_set_sensitive(win->menu.alias, (account != NULL) && (purple_blist_find_chat(account, purple_conversation_get_name(conv)) != NULL)); @@ -9741,7 +9741,7 @@ gc = purple_conversation_get_connection(conv); if (gc != NULL) protocol = purple_connection_get_protocol(gc); - if (protocol && !PURPLE_PROTOCOL_IMPLEMENTS(protocol, set_chat_topic)) + if (protocol && !PURPLE_PROTOCOL_IMPLEMENTS(protocol, CHAT_IFACE, set_topic)) /* This protocol doesn't support setting the chat room topic */ return FALSE;
--- a/pidgin/gtkdocklet.c Sat Sep 14 22:16:47 2013 +0530 +++ b/pidgin/gtkdocklet.c Sat Sep 14 22:16:59 2013 +0530 @@ -261,7 +261,7 @@ while(c != NULL) { PurpleConnection *gc = c->data; PurpleProtocol *protocol = purple_connection_get_protocol(gc); - if (protocol != NULL && PURPLE_PROTOCOL_IMPLEMENTS(protocol, chat_info)) + if (protocol != NULL && PURPLE_PROTOCOL_IMPLEMENTS(protocol, CHAT_IFACE, info)) return TRUE; c = c->next; } @@ -297,7 +297,7 @@ docklet_signed_on_cb(PurpleConnection *gc) { if (!enable_join_chat) { - if (PURPLE_PROTOCOL_IMPLEMENTS(purple_connection_get_protocol(gc), chat_info)) + if (PURPLE_PROTOCOL_IMPLEMENTS(purple_connection_get_protocol(gc), CHAT_IFACE, info)) enable_join_chat = TRUE; } docklet_update_status(); @@ -307,7 +307,7 @@ docklet_signed_off_cb(PurpleConnection *gc) { if (enable_join_chat) { - if (PURPLE_PROTOCOL_IMPLEMENTS(purple_connection_get_protocol(gc), chat_info)) + if (PURPLE_PROTOCOL_IMPLEMENTS(purple_connection_get_protocol(gc), CHAT_IFACE, info)) enable_join_chat = online_account_supports_chat(); } docklet_update_status();
--- a/pidgin/gtkimhtmltoolbar.c Sat Sep 14 22:16:47 2013 +0530 +++ b/pidgin/gtkimhtmltoolbar.c Sat Sep 14 22:16:59 2013 +0530 @@ -1601,6 +1601,6 @@ for the time being it is always disabled for chats */ gtk_widget_set_sensitive(toolbar->attention, conv && protocol && PURPLE_IS_IM_CONVERSATION(conv) && - PURPLE_PROTOCOL_IMPLEMENTS(protocol, send_attention)); + PURPLE_PROTOCOL_IMPLEMENTS(protocol, ATTENTION_IFACE, send)); }
--- a/pidgin/gtkroomlist.c Sat Sep 14 22:16:47 2013 +0530 +++ b/pidgin/gtkroomlist.c Sat Sep 14 22:16:59 2013 +0530 @@ -235,7 +235,7 @@ if(gc != NULL) protocol = purple_connection_get_protocol(gc); - if(protocol != NULL && PURPLE_PROTOCOL_IMPLEMENTS(protocol, roomlist_room_serialize)) + if(protocol != NULL && PURPLE_PROTOCOL_IMPLEMENTS(protocol, ROOMLIST_IFACE, room_serialize)) name = purple_protocol_roomlist_iface_room_serialize(protocol, info->room); else name = g_strdup(purple_roomlist_room_get_name(info->room)); @@ -542,7 +542,7 @@ if (conn && PURPLE_CONNECTION_IS_CONNECTED(conn)) protocol = purple_connection_get_protocol(conn); - return (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, roomlist_get_list)); + return (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, ROOMLIST_IFACE, get_list)); } gboolean
--- a/pidgin/gtkutils.c Sat Sep 14 22:16:47 2013 +0530 +++ b/pidgin/gtkutils.c Sat Sep 14 22:16:59 2013 +0530 @@ -556,9 +556,6 @@ char *filename = NULL; GdkPixbuf *pixbuf; - if (!PURPLE_PROTOCOL_IMPLEMENTS(protocol, list_icon)) - return NULL; - protoname = purple_protocol_class_list_icon(protocol, account, NULL); if (protoname == NULL) return NULL; @@ -1489,9 +1486,9 @@ if (protocol && purple_protocol_get_options(protocol) & OPT_PROTO_IM_IMAGE) im = TRUE; - if (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, can_receive_file)) + if (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, XFER_IFACE, can_receive)) ft = purple_protocol_xfer_iface_can_receive(protocol, gc, who); - else if (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, send_file)) + else if (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, XFER_IFACE, send)) ft = TRUE; if (im && ft)
--- a/pidgin/gtkwebviewtoolbar.c Sat Sep 14 22:16:47 2013 +0530 +++ b/pidgin/gtkwebviewtoolbar.c Sat Sep 14 22:16:59 2013 +0530 @@ -1629,7 +1629,7 @@ for the time being it is always disabled for chats */ gtk_action_set_sensitive(priv->attention, conv && protocol && PURPLE_IS_IM_CONVERSATION(conv) && - PURPLE_PROTOCOL_IMPLEMENTS(protocol, send_attention)); + PURPLE_PROTOCOL_IMPLEMENTS(protocol, ATTENTION_IFACE, send)); gtk_action_set_sensitive(priv->smiley, (gboolean)pidgin_themes_get_proto_smileys(priv->sml));