comparison pidgin/gtkblist.c @ 26251:8793f771eba4

propagate from branch 'im.pidgin.pidgin' (head df7280158976d27e9eaf4a660e32a5af5a484578) to branch 'im.pidgin.soc.2008.yahoo' (head c6eb815e9facc358b7724957f4a8351bc589b43e)
author Sulabh Mahajan <sulabh@soc.pidgin.im>
date Sun, 01 Mar 2009 13:55:33 +0000
parents 2cece7df80c3
children 0bb35311dfe0 4b8c4870b13a 9fcff08ce726 25319f536d93
comparison
equal deleted inserted replaced
26250:1520b67d792f 26251:8793f771eba4
64 64
65 #include <gdk/gdkkeysyms.h> 65 #include <gdk/gdkkeysyms.h>
66 #include <gtk/gtk.h> 66 #include <gtk/gtk.h>
67 #include <gdk/gdk.h> 67 #include <gdk/gdk.h>
68 68
69 #define HEADLINE_CLOSE_SIZE 12 69 #define HEADLINE_CLOSE_SIZE 11
70 70
71 typedef struct 71 typedef struct
72 { 72 {
73 PurpleAccount *account; 73 PurpleAccount *account;
74 74
953 if (value != NULL) 953 if (value != NULL)
954 gtk_entry_set_text(GTK_ENTRY(input), value); 954 gtk_entry_set_text(GTK_ENTRY(input), value);
955 if (pce->secret) 955 if (pce->secret)
956 { 956 {
957 gtk_entry_set_visibility(GTK_ENTRY(input), FALSE); 957 gtk_entry_set_visibility(GTK_ENTRY(input), FALSE);
958 #if !GTK_CHECK_VERSION(2,16,0)
958 if (gtk_entry_get_invisible_char(GTK_ENTRY(input)) == '*') 959 if (gtk_entry_get_invisible_char(GTK_ENTRY(input)) == '*')
959 gtk_entry_set_invisible_char(GTK_ENTRY(input), PIDGIN_INVISIBLE_CHAR); 960 gtk_entry_set_invisible_char(GTK_ENTRY(input), PIDGIN_INVISIBLE_CHAR);
961 #endif /* Less than GTK+ 2.16 */
960 } 962 }
961 pidgin_add_widget_to_vbox(GTK_BOX(data->entries_box), pce->label, data->sg, input, TRUE, NULL); 963 pidgin_add_widget_to_vbox(GTK_BOX(data->entries_box), pce->label, data->sg, input, TRUE, NULL);
962 g_signal_connect(G_OBJECT(input), "changed", 964 g_signal_connect(G_OBJECT(input), "changed",
963 G_CALLBACK(joinchat_set_sensitive_if_input_cb), data); 965 G_CALLBACK(joinchat_set_sensitive_if_input_cb), data);
964 } 966 }
4550 GtkWidget *widget; 4552 GtkWidget *widget;
4551 4553
4552 if (!gtkblist) 4554 if (!gtkblist)
4553 return FALSE; 4555 return FALSE;
4554 4556
4557 /* clear any tooltips */
4558 pidgin_blist_tooltip_destroy();
4559
4555 widget = gtk_window_get_focus(GTK_WINDOW(gtkblist->window)); 4560 widget = gtk_window_get_focus(GTK_WINDOW(gtkblist->window));
4556 4561
4557 if (GTK_IS_IMHTML(widget) || GTK_IS_ENTRY(widget)) { 4562 if (GTK_IS_IMHTML(widget) || GTK_IS_ENTRY(widget)) {
4558 if (gtk_bindings_activate(GTK_OBJECT(widget), event->keyval, event->state)) 4563 if (gtk_bindings_activate(GTK_OBJECT(widget), event->keyval, event->state))
4559 return TRUE; 4564 return TRUE;
5383 "expose_event", 5388 "expose_event",
5384 G_CALLBACK (paint_headline_hbox), 5389 G_CALLBACK (paint_headline_hbox),
5385 NULL); 5390 NULL);
5386 gtk_widget_set_name(gtkblist->headline_hbox, "gtk-tooltips"); 5391 gtk_widget_set_name(gtkblist->headline_hbox, "gtk-tooltips");
5387 5392
5388 gtkblist->headline_close = gtk_widget_render_icon(ebox, GTK_STOCK_CLOSE, HEADLINE_CLOSE_SIZE, NULL); 5393 gtkblist->headline_close = gtk_widget_render_icon(ebox, GTK_STOCK_CLOSE,
5394 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_MICROSCOPIC), NULL);
5389 gtkblist->hand_cursor = gdk_cursor_new (GDK_HAND2); 5395 gtkblist->hand_cursor = gdk_cursor_new (GDK_HAND2);
5390 gtkblist->arrow_cursor = gdk_cursor_new (GDK_LEFT_PTR); 5396 gtkblist->arrow_cursor = gdk_cursor_new (GDK_LEFT_PTR);
5391 5397
5392 g_signal_connect(G_OBJECT(ebox), "enter-notify-event", G_CALLBACK(headline_box_enter_cb), gtkblist); 5398 g_signal_connect(G_OBJECT(ebox), "enter-notify-event", G_CALLBACK(headline_box_enter_cb), gtkblist);
5393 g_signal_connect(G_OBJECT(ebox), "leave-notify-event", G_CALLBACK(headline_box_leave_cb), gtkblist); 5399 g_signal_connect(G_OBJECT(ebox), "leave-notify-event", G_CALLBACK(headline_box_leave_cb), gtkblist);
6824 if (value != NULL) 6830 if (value != NULL)
6825 gtk_entry_set_text(GTK_ENTRY(input), value); 6831 gtk_entry_set_text(GTK_ENTRY(input), value);
6826 if (pce->secret) 6832 if (pce->secret)
6827 { 6833 {
6828 gtk_entry_set_visibility(GTK_ENTRY(input), FALSE); 6834 gtk_entry_set_visibility(GTK_ENTRY(input), FALSE);
6835 #if !GTK_CHECK_VERSION(2,16,0)
6829 if (gtk_entry_get_invisible_char(GTK_ENTRY(input)) == '*') 6836 if (gtk_entry_get_invisible_char(GTK_ENTRY(input)) == '*')
6830 gtk_entry_set_invisible_char(GTK_ENTRY(input), PIDGIN_INVISIBLE_CHAR); 6837 gtk_entry_set_invisible_char(GTK_ENTRY(input), PIDGIN_INVISIBLE_CHAR);
6838 #endif /* Less than GTK+ 2.16 */
6831 } 6839 }
6832 pidgin_add_widget_to_vbox(GTK_BOX(data->entries_box), pce->label, data->sg, input, TRUE, NULL); 6840 pidgin_add_widget_to_vbox(GTK_BOX(data->entries_box), pce->label, data->sg, input, TRUE, NULL);
6833 g_signal_connect(G_OBJECT(input), "changed", 6841 g_signal_connect(G_OBJECT(input), "changed",
6834 G_CALLBACK(addchat_set_sensitive_if_input_cb), data); 6842 G_CALLBACK(addchat_set_sensitive_if_input_cb), data);
6835 } 6843 }
7670 7678
7671 if(!purple_account_get_enabled(account, PIDGIN_UI)) { 7679 if(!purple_account_get_enabled(account, PIDGIN_UI)) {
7672 if (!disabled_accounts) { 7680 if (!disabled_accounts) {
7673 menuitem = gtk_menu_item_new_with_label(_("Enable Account")); 7681 menuitem = gtk_menu_item_new_with_label(_("Enable Account"));
7674 gtk_menu_shell_append(GTK_MENU_SHELL(accountmenu), menuitem); 7682 gtk_menu_shell_append(GTK_MENU_SHELL(accountmenu), menuitem);
7675 gtk_widget_show(menuitem);
7676 7683
7677 submenu = gtk_menu_new(); 7684 submenu = gtk_menu_new();
7678 gtk_menu_set_accel_group(GTK_MENU(submenu), accel_group); 7685 gtk_menu_set_accel_group(GTK_MENU(submenu), accel_group);
7679 gtk_menu_set_accel_path(GTK_MENU(submenu), N_("<PurpleMain>/Accounts/Enable Account")); 7686 gtk_menu_set_accel_path(GTK_MENU(submenu), N_("<PurpleMain>/Accounts/Enable Account"));
7680 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); 7687 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
7681 gtk_widget_show(submenu);
7682 7688
7683 disabled_accounts = TRUE; 7689 disabled_accounts = TRUE;
7684 } 7690 }
7685 7691
7686 buf = g_strconcat(purple_account_get_username(account), " (", 7692 buf = g_strconcat(purple_account_get_username(account), " (",
7698 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image); 7704 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image);
7699 } 7705 }
7700 g_signal_connect(G_OBJECT(menuitem), "activate", 7706 g_signal_connect(G_OBJECT(menuitem), "activate",
7701 G_CALLBACK(enable_account_cb), account); 7707 G_CALLBACK(enable_account_cb), account);
7702 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem); 7708 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
7703 gtk_widget_show(menuitem);
7704 } else { 7709 } else {
7705 enabled_accounts = TRUE; 7710 enabled_accounts = TRUE;
7706 } 7711 }
7707 } 7712 }
7708 7713
7740 g_object_unref(G_OBJECT(pixbuf)); 7745 g_object_unref(G_OBJECT(pixbuf));
7741 gtk_widget_show(image); 7746 gtk_widget_show(image);
7742 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image); 7747 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image);
7743 } 7748 }
7744 gtk_menu_shell_append(GTK_MENU_SHELL(accountmenu), menuitem); 7749 gtk_menu_shell_append(GTK_MENU_SHELL(accountmenu), menuitem);
7745 gtk_widget_show(menuitem);
7746 7750
7747 submenu = gtk_menu_new(); 7751 submenu = gtk_menu_new();
7748 gtk_menu_set_accel_group(GTK_MENU(submenu), accel_group); 7752 gtk_menu_set_accel_group(GTK_MENU(submenu), accel_group);
7749 gtk_menu_set_accel_path(GTK_MENU(submenu), accel_path_buf); 7753 gtk_menu_set_accel_path(GTK_MENU(submenu), accel_path_buf);
7750 g_free(accel_path_buf); 7754 g_free(accel_path_buf);
7751 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); 7755 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
7752 gtk_widget_show(submenu);
7753 7756
7754 7757
7755 menuitem = gtk_menu_item_new_with_mnemonic(_("_Edit Account")); 7758 menuitem = gtk_menu_item_new_with_mnemonic(_("_Edit Account"));
7756 g_signal_connect(G_OBJECT(menuitem), "activate", 7759 g_signal_connect(G_OBJECT(menuitem), "activate",
7757 G_CALLBACK(modify_account_cb), account); 7760 G_CALLBACK(modify_account_cb), account);
7758 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem); 7761 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
7759 gtk_widget_show(menuitem);
7760 7762
7761 pidgin_separator(submenu); 7763 pidgin_separator(submenu);
7762 7764
7763 gc = purple_account_get_connection(account); 7765 gc = purple_account_get_connection(account);
7764 plugin = gc && PURPLE_CONNECTION_IS_CONNECTED(gc) ? gc->prpl : NULL; 7766 plugin = gc && PURPLE_CONNECTION_IS_CONNECTED(gc) ? gc->prpl : NULL;
7766 build_plugin_actions(submenu, plugin, gc); 7768 build_plugin_actions(submenu, plugin, gc);
7767 } else { 7769 } else {
7768 menuitem = gtk_menu_item_new_with_label(_("No actions available")); 7770 menuitem = gtk_menu_item_new_with_label(_("No actions available"));
7769 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem); 7771 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
7770 gtk_widget_set_sensitive(menuitem, FALSE); 7772 gtk_widget_set_sensitive(menuitem, FALSE);
7771 gtk_widget_show(menuitem);
7772 } 7773 }
7773 7774
7774 pidgin_separator(submenu); 7775 pidgin_separator(submenu);
7775 7776
7776 menuitem = gtk_menu_item_new_with_mnemonic(_("_Disable")); 7777 menuitem = gtk_menu_item_new_with_mnemonic(_("_Disable"));
7777 g_signal_connect(G_OBJECT(menuitem), "activate", 7778 g_signal_connect(G_OBJECT(menuitem), "activate",
7778 G_CALLBACK(disable_account_cb), account); 7779 G_CALLBACK(disable_account_cb), account);
7779 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem); 7780 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
7780 gtk_widget_show(menuitem); 7781 }
7781 } 7782 gtk_widget_show_all(accountmenu);
7782 } 7783 }
7783 7784
7784 static GList *plugin_submenus = NULL; 7785 static GList *plugin_submenus = NULL;
7785 7786
7786 void 7787 void
7815 if (!PURPLE_PLUGIN_HAS_ACTIONS(plugin)) 7816 if (!PURPLE_PLUGIN_HAS_ACTIONS(plugin))
7816 continue; 7817 continue;
7817 7818
7818 menuitem = gtk_image_menu_item_new_with_label(_(plugin->info->name)); 7819 menuitem = gtk_image_menu_item_new_with_label(_(plugin->info->name));
7819 gtk_menu_shell_append(GTK_MENU_SHELL(pluginmenu), menuitem); 7820 gtk_menu_shell_append(GTK_MENU_SHELL(pluginmenu), menuitem);
7820 gtk_widget_show(menuitem);
7821 7821
7822 plugin_submenus = g_list_append(plugin_submenus, menuitem); 7822 plugin_submenus = g_list_append(plugin_submenus, menuitem);
7823 7823
7824 submenu = gtk_menu_new(); 7824 submenu = gtk_menu_new();
7825 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); 7825 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
7826 gtk_widget_show(submenu);
7827 7826
7828 gtk_menu_set_accel_group(GTK_MENU(submenu), accel_group); 7827 gtk_menu_set_accel_group(GTK_MENU(submenu), accel_group);
7829 path = g_strdup_printf("%s/Tools/%s", gtkblist->ift->path, plugin->info->name); 7828 path = g_strdup_printf("%s/Tools/%s", gtkblist->ift->path, plugin->info->name);
7830 gtk_menu_set_accel_path(GTK_MENU(submenu), path); 7829 gtk_menu_set_accel_path(GTK_MENU(submenu), path);
7831 g_free(path); 7830 g_free(path);
7832 7831
7833 build_plugin_actions(submenu, plugin, NULL); 7832 build_plugin_actions(submenu, plugin, NULL);
7834 } 7833 }
7834 gtk_widget_show_all(pluginmenu);
7835 } 7835 }
7836 7836
7837 static void 7837 static void
7838 sortmethod_act(GtkCheckMenuItem *checkmenuitem, char *id) 7838 sortmethod_act(GtkCheckMenuItem *checkmenuitem, char *id)
7839 { 7839 {