| 617 static void |
617 static void |
| 618 protocol_menu_cb(GtkWidget *optmenu, GCallback cb) |
618 protocol_menu_cb(GtkWidget *optmenu, GCallback cb) |
| 619 { |
619 { |
| 620 GtkWidget *menu; |
620 GtkWidget *menu; |
| 621 GtkWidget *item; |
621 GtkWidget *item; |
| 622 GaimProtocol protocol; |
622 const char *protocol; |
| 623 gpointer user_data; |
623 gpointer user_data; |
| 624 |
624 |
| 625 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(optmenu)); |
625 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(optmenu)); |
| 626 item = gtk_menu_get_active(GTK_MENU(menu)); |
626 item = gtk_menu_get_active(GTK_MENU(menu)); |
| 627 |
627 |
| 628 protocol = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(item), "protocol")); |
628 protocol = g_object_get_data(G_OBJECT(item), "protocol"); |
| 629 user_data = (g_object_get_data(G_OBJECT(optmenu), "user_data")); |
629 user_data = (g_object_get_data(G_OBJECT(optmenu), "user_data")); |
| 630 |
630 |
| 631 if (cb != NULL) |
631 if (cb != NULL) |
| 632 ((void (*)(GtkWidget *, GaimProtocol, gpointer))cb)(item, protocol, |
632 ((void (*)(GtkWidget *, const char *, gpointer))cb)(item, protocol, |
| 633 user_data); |
633 user_data); |
| 634 } |
634 } |
| 635 |
635 |
| 636 GtkWidget * |
636 GtkWidget * |
| 637 gaim_gtk_protocol_option_menu_new(GaimProtocol protocol, GCallback cb, |
637 gaim_gtk_protocol_option_menu_new(const char *id, GCallback cb, |
| 638 gpointer user_data) |
638 gpointer user_data) |
| 639 { |
639 { |
| 640 GaimPluginProtocolInfo *prpl_info; |
640 GaimPluginProtocolInfo *prpl_info; |
| 641 GaimPlugin *plugin; |
641 GaimPlugin *plugin; |
| 642 GtkWidget *hbox; |
642 GtkWidget *hbox; |
| 710 gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); |
710 gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); |
| 711 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
711 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
| 712 gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0); |
712 gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0); |
| 713 gtk_widget_show(label); |
713 gtk_widget_show(label); |
| 714 |
714 |
| 715 g_object_set_data(G_OBJECT(item), "protocol", |
715 g_object_set_data(G_OBJECT(item), "protocol", plugin->info->id); |
| 716 GINT_TO_POINTER(prpl_info->protocol)); |
|
| 717 |
716 |
| 718 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); |
717 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); |
| 719 gtk_widget_show(item); |
718 gtk_widget_show(item); |
| 720 |
719 |
| 721 if (prpl_info->protocol == protocol) |
720 if (!strcmp(plugin->info->id, id)) |
| 722 selected_index = i; |
721 selected_index = i; |
| 723 } |
722 } |
| 724 |
723 |
| 725 gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu), menu); |
724 gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu), menu); |
| 726 |
725 |