comparison pidgin/gtkblist.c @ 25382:c0b42d6c2785

propagate from branch 'im.pidgin.pidgin' (head f018e11a7ea08e07f22667e6daca2ec7e64f9710) to branch 'im.pidgin.pidgin.next.minor' (head 685e1461486f2e5322bc2952f8e8bbbf4313dee9)
author Richard Laager <rlaager@wiktel.com>
date Fri, 02 Jan 2009 22:35:12 +0000
parents 43b721aa4b76 289227f729ec
children 6c6846d169d6
comparison
equal deleted inserted replaced
25381:43b721aa4b76 25382:c0b42d6c2785
7823 { 7823 {
7824 GtkWidget *menuitem = NULL, *submenu = NULL; 7824 GtkWidget *menuitem = NULL, *submenu = NULL;
7825 GtkAccelGroup *accel_group = NULL; 7825 GtkAccelGroup *accel_group = NULL;
7826 GList *l = NULL, *accounts = NULL; 7826 GList *l = NULL, *accounts = NULL;
7827 gboolean disabled_accounts = FALSE; 7827 gboolean disabled_accounts = FALSE;
7828 gboolean enabled_accounts = FALSE;
7828 7829
7829 if (accountmenu == NULL) 7830 if (accountmenu == NULL)
7830 return; 7831 return;
7831 7832
7832 /* Clear the old Accounts menu */ 7833 /* Clear the old Accounts menu */
7876 } 7877 }
7877 g_signal_connect(G_OBJECT(menuitem), "activate", 7878 g_signal_connect(G_OBJECT(menuitem), "activate",
7878 G_CALLBACK(enable_account_cb), account); 7879 G_CALLBACK(enable_account_cb), account);
7879 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem); 7880 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
7880 gtk_widget_show(menuitem); 7881 gtk_widget_show(menuitem);
7881 } 7882 } else {
7882 } 7883 enabled_accounts = TRUE;
7884 }
7885 }
7886
7887 if (!enabled_accounts)
7888 return;
7883 7889
7884 pidgin_separator(accountmenu); 7890 pidgin_separator(accountmenu);
7891 accel_group = gtk_menu_get_accel_group(GTK_MENU(accountmenu));
7885 7892
7886 for (accounts = purple_accounts_get_all(); accounts; accounts = accounts->next) { 7893 for (accounts = purple_accounts_get_all(); accounts; accounts = accounts->next) {
7887 char *buf = NULL; 7894 char *buf = NULL;
7888 char *accel_path_buf = NULL; 7895 char *accel_path_buf = NULL;
7889 GtkWidget *image = NULL; 7896 GtkWidget *image = NULL;
7891 PurpleAccount *account = NULL; 7898 PurpleAccount *account = NULL;
7892 GdkPixbuf *pixbuf = NULL; 7899 GdkPixbuf *pixbuf = NULL;
7893 PurplePlugin *plugin = NULL; 7900 PurplePlugin *plugin = NULL;
7894 7901
7895 account = accounts->data; 7902 account = accounts->data;
7896 accel_group = gtk_menu_get_accel_group(GTK_MENU(accountmenu)); 7903
7897 7904 if (!purple_account_get_enabled(account, PIDGIN_UI))
7898 if(purple_account_get_enabled(account, PIDGIN_UI)) { 7905 continue;
7899 buf = g_strconcat(purple_account_get_username(account), " (", 7906
7900 purple_account_get_protocol_name(account), ")", NULL); 7907 buf = g_strconcat(purple_account_get_username(account), " (",
7901 menuitem = gtk_image_menu_item_new_with_label(buf); 7908 purple_account_get_protocol_name(account), ")", NULL);
7902 accel_path_buf = g_strconcat(N_("<PurpleMain>/Accounts/"), buf, NULL); 7909 menuitem = gtk_image_menu_item_new_with_label(buf);
7903 g_free(buf); 7910 accel_path_buf = g_strconcat(N_("<PurpleMain>/Accounts/"), buf, NULL);
7904 pixbuf = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_SMALL); 7911 g_free(buf);
7905 if (pixbuf != NULL) 7912 pixbuf = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_SMALL);
7906 { 7913 if (pixbuf != NULL) {
7907 if (!purple_account_is_connected(account)) 7914 if (!purple_account_is_connected(account))
7908 gdk_pixbuf_saturate_and_pixelate(pixbuf, pixbuf, 7915 gdk_pixbuf_saturate_and_pixelate(pixbuf, pixbuf,
7909 0.0, FALSE); 7916 0.0, FALSE);
7910 image = gtk_image_new_from_pixbuf(pixbuf); 7917 image = gtk_image_new_from_pixbuf(pixbuf);
7911 g_object_unref(G_OBJECT(pixbuf)); 7918 g_object_unref(G_OBJECT(pixbuf));
7912 gtk_widget_show(image); 7919 gtk_widget_show(image);
7913 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image); 7920 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image);
7914 } 7921 }
7915 gtk_menu_shell_append(GTK_MENU_SHELL(accountmenu), menuitem); 7922 gtk_menu_shell_append(GTK_MENU_SHELL(accountmenu), menuitem);
7923 gtk_widget_show(menuitem);
7924
7925 submenu = gtk_menu_new();
7926 gtk_menu_set_accel_group(GTK_MENU(submenu), accel_group);
7927 gtk_menu_set_accel_path(GTK_MENU(submenu), accel_path_buf);
7928 g_free(accel_path_buf);
7929 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
7930 gtk_widget_show(submenu);
7931
7932
7933 menuitem = gtk_menu_item_new_with_mnemonic(_("_Edit Account"));
7934 g_signal_connect(G_OBJECT(menuitem), "activate",
7935 G_CALLBACK(modify_account_cb), account);
7936 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
7937 gtk_widget_show(menuitem);
7938
7939 pidgin_separator(submenu);
7940
7941 gc = purple_account_get_connection(account);
7942 plugin = gc && PURPLE_CONNECTION_IS_CONNECTED(gc) ? gc->prpl : NULL;
7943 if (plugin && PURPLE_PLUGIN_HAS_ACTIONS(plugin)) {
7944 build_plugin_actions(submenu, plugin, gc);
7945 } else {
7946 menuitem = gtk_menu_item_new_with_label(_("No actions available"));
7947 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
7948 gtk_widget_set_sensitive(menuitem, FALSE);
7916 gtk_widget_show(menuitem); 7949 gtk_widget_show(menuitem);
7917 7950 }
7918 submenu = gtk_menu_new(); 7951
7919 gtk_menu_set_accel_group(GTK_MENU(submenu), accel_group); 7952 pidgin_separator(submenu);
7920 gtk_menu_set_accel_path(GTK_MENU(submenu), accel_path_buf); 7953
7921 g_free(accel_path_buf); 7954 menuitem = gtk_menu_item_new_with_mnemonic(_("_Disable"));
7922 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); 7955 g_signal_connect(G_OBJECT(menuitem), "activate",
7923 gtk_widget_show(submenu); 7956 G_CALLBACK(disable_account_cb), account);
7924 7957 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
7925 7958 gtk_widget_show(menuitem);
7926 menuitem = gtk_menu_item_new_with_mnemonic(_("_Edit Account")); 7959 }
7927 g_signal_connect(G_OBJECT(menuitem), "activate",
7928 G_CALLBACK(modify_account_cb), account);
7929 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
7930 gtk_widget_show(menuitem);
7931
7932 pidgin_separator(submenu);
7933
7934 gc = purple_account_get_connection(account);
7935 plugin = gc && PURPLE_CONNECTION_IS_CONNECTED(gc) ? gc->prpl : NULL;
7936 if (plugin && PURPLE_PLUGIN_HAS_ACTIONS(plugin)) {
7937 build_plugin_actions(submenu, plugin, gc);
7938 } else {
7939 menuitem = gtk_menu_item_new_with_label(_("No actions available"));
7940 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
7941 gtk_widget_set_sensitive(menuitem, FALSE);
7942 gtk_widget_show(menuitem);
7943 }
7944
7945 pidgin_separator(submenu);
7946
7947 menuitem = gtk_menu_item_new_with_mnemonic(_("_Disable"));
7948 g_signal_connect(G_OBJECT(menuitem), "activate",
7949 G_CALLBACK(disable_account_cb), account);
7950 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
7951 gtk_widget_show(menuitem);
7952 } else {
7953 disabled_accounts = TRUE;
7954 }
7955 }
7956
7957 } 7960 }
7958 7961
7959 static GList *plugin_submenus = NULL; 7962 static GList *plugin_submenus = NULL;
7960 7963
7961 void 7964 void