pidgin/gtkblist.c

Tue, 24 Apr 2007 17:00:22 +0000

author
Richard Laager <rlaager@pidgin.im>
date
Tue, 24 Apr 2007 17:00:22 +0000
branch
rlaager.gaim_migration
changeset 16446
3a6ed6c3400e
parent 16437
7ff7c3405ea2
child 16531
98363f6cdc6c
permissions
-rw-r--r--

Fix the custom icon stuff, and various memory leaks. At this point, custom
icons work properly, EXCEPT FOR A SERIOUS LEAK which I haven't fixed yet
because I'm seeing weird memory allocation issues. Once I deal with that, it's
just the account icon stuff that's left.

5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1 /*
10297
b36800725b7a [gaim-migrate @ 11480]
Evan Schoenberg <evands@pidgin.im>
parents: 10288
diff changeset
2 * @file gtkblist.c GTK+ BuddyList API
16254
eeb2bba4dc94 Rename the Doxygen group from gtkui to pidgin.
Richard Laager <rlaager@pidgin.im>
parents: 16184
diff changeset
3 * @ingroup pidgin
10297
b36800725b7a [gaim-migrate @ 11480]
Evan Schoenberg <evands@pidgin.im>
parents: 10288
diff changeset
4 *
15931
716b5fac1895 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
5 * pidgin
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
6 *
15931
716b5fac1895 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
7 * Pidgin is the legal property of its developers, whose names are too numerous
8046
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 8040
diff changeset
8 * to list here. Please refer to the COPYRIGHT file distributed with this
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 8040
diff changeset
9 * source distribution.
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
10 *
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 * This program is free software; you can redistribute it and/or modify
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 * it under the terms of the GNU General Public License as published by
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 * the Free Software Foundation; either version 2 of the License, or
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 * (at your option) any later version.
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 *
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 * This program is distributed in the hope that it will be useful,
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 * GNU General Public License for more details.
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 *
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
21 * You should have received a copy of the GNU General Public License
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
22 * along with this program; if not, write to the Free Software
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
24 *
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
25 */
9791
f5c5bda0b96b [gaim-migrate @ 10659]
Gary Kramlich <grim@pidgin.im>
parents: 9778
diff changeset
26 #include "internal.h"
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15571
diff changeset
27 #include "pidgin.h"
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
28
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
29 #include "account.h"
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 9013
diff changeset
30 #include "connection.h"
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
31 #include "core.h"
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
32 #include "debug.h"
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
33 #include "notify.h"
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
34 #include "prpl.h"
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
35 #include "prefs.h"
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
36 #include "plugin.h"
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
37 #include "request.h"
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
38 #include "signals.h"
15883
969b74a3e27a According to etags, pidgin/ should be completely clean of references to 'gaim' as a client
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
39 #include "pidginstock.h"
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
40 #include "util.h"
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
41
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
42 #include "gtkaccount.h"
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
43 #include "gtkblist.h"
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
44 #include "gtkcellrendererexpander.h"
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
45 #include "gtkconv.h"
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
46 #include "gtkdebug.h"
9709
2e73f176cc80 [gaim-migrate @ 10570]
Mark Doliner <markdoliner@pidgin.im>
parents: 9686
diff changeset
47 #include "gtkdialogs.h"
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
48 #include "gtkft.h"
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
49 #include "gtklog.h"
12116
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
50 #include "gtkmenutray.h"
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
51 #include "gtkpounce.h"
11740
2b605228ec11 [gaim-migrate @ 14031]
Sean Egan <seanegan@pidgin.im>
parents: 11732
diff changeset
52 #include "gtkplugin.h"
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
53 #include "gtkprefs.h"
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
54 #include "gtkprivacy.h"
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents: 8089
diff changeset
55 #include "gtkroomlist.h"
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents: 10623
diff changeset
56 #include "gtkstatusbox.h"
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15091
diff changeset
57 #include "gtkscrollbook.h"
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
58 #include "gtkutils.h"
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
59
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
60 #include <gdk/gdkkeysyms.h>
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
61 #include <gtk/gtk.h>
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
62 #include <gdk/gdk.h>
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
63
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
64 #define HEADLINE_CLOSE_SIZE 12
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
65
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
66 typedef struct
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
67 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
68 PurpleAccount *account;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
69
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
70 GtkWidget *window;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
71 GtkWidget *combo;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
72 GtkWidget *entry;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
73 GtkWidget *entry_for_alias;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
74 GtkWidget *account_box;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
75
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
76 } PidginAddBuddyData;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
77
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
78 typedef struct
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
79 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
80 PurpleAccount *account;
9812
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
81 gchar *default_chat_name;
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
82
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
83 GtkWidget *window;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
84 GtkWidget *account_menu;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
85 GtkWidget *alias_entry;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
86 GtkWidget *group_combo;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
87 GtkWidget *entries_box;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
88 GtkSizeGroup *sg;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
89
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
90 GList *entries;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
91
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
92 } PidginAddChatData;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
93
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
94 typedef struct
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
95 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
96 PurpleAccount *account;
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
97
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
98 GtkWidget *window;
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
99 GtkWidget *account_menu;
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
100 GtkWidget *entries_box;
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
101 GtkSizeGroup *sg;
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
102
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
103 GList *entries;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
104 } PidginJoinChatData;
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
105
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
106
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
107 static GtkWidget *accountmenu = NULL;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
108
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
109 static guint visibility_manager_count = 0;
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
110 static gboolean gtk_blist_obscured = FALSE;
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
111
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
112 static GList *pidgin_blist_sort_methods = NULL;
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
113 static struct pidgin_blist_sort_method *current_sort_method = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
114 static void sort_method_none(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
115
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
116 /* The functions we use for sorting aren't available in gtk 2.0.x, and
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
117 * segfault in 2.2.0. 2.2.1 is known to work, so I'll require that */
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
118 #if GTK_CHECK_VERSION(2,2,1)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
119 static void sort_method_alphabetical(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
120 static void sort_method_status(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
121 static void sort_method_log(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
122 #endif
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
123 static PidginBuddyList *gtkblist = NULL;
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
124
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
125 static gboolean pidgin_blist_refresh_timer(PurpleBuddyList *list);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
126 static void pidgin_blist_update_buddy(PurpleBuddyList *list, PurpleBlistNode *node, gboolean statusChange);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
127 static void pidgin_blist_selection_changed(GtkTreeSelection *selection, gpointer data);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
128 static void pidgin_blist_update(PurpleBuddyList *list, PurpleBlistNode *node);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
129 static void pidgin_blist_update_group(PurpleBuddyList *list, PurpleBlistNode *node);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
130 static void pidgin_blist_update_contact(PurpleBuddyList *list, PurpleBlistNode *node);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
131 static char *pidgin_get_tooltip_text(PurpleBlistNode *node, gboolean full);
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13091
diff changeset
132 static const char *item_factory_translate_func (const char *path, gpointer func_data);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
133 static gboolean get_iter_from_node(PurpleBlistNode *node, GtkTreeIter *iter);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
134 static void redo_buddy_list(PurpleBuddyList *list, gboolean remove, gboolean rerender);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
135 static void pidgin_blist_collapse_contact_cb(GtkWidget *w, PurpleBlistNode *node);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
136 static char *pidgin_get_group_title(PurpleBlistNode *gnode, gboolean expanded);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
137
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
138 static void pidgin_blist_tooltip_destroy(void);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
139
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
140 struct _pidgin_blist_node {
5256
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
141 GtkTreeRowReference *row;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
142 gboolean contact_expanded;
11910
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
143 gboolean recent_signonoff;
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
144 gint recent_signonoff_timer;
5256
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
145 };
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
146
10118
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
147 static char dim_grey_string[8] = "";
10144
22c7584a403d [gaim-migrate @ 11216]
Mark Doliner <markdoliner@pidgin.im>
parents: 10129
diff changeset
148 static char *dim_grey()
10118
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
149 {
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
150 if (!gtkblist)
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
151 return "dim grey";
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
152 if (!dim_grey_string[0]) {
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
153 GtkStyle *style = gtk_widget_get_style(gtkblist->treeview);
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
154 snprintf(dim_grey_string, sizeof(dim_grey_string), "#%02x%02x%02x",
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
155 style->text_aa[GTK_STATE_NORMAL].red >> 8,
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
156 style->text_aa[GTK_STATE_NORMAL].green >> 8,
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
157 style->text_aa[GTK_STATE_NORMAL].blue >> 8);
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
158 }
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
159 return dim_grey_string;
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
160 }
10144
22c7584a403d [gaim-migrate @ 11216]
Mark Doliner <markdoliner@pidgin.im>
parents: 10129
diff changeset
161
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
162 /***************************************************
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
163 * Callbacks *
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
164 ***************************************************/
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
165 static gboolean gtk_blist_visibility_cb(GtkWidget *w, GdkEventVisibility *event, gpointer data)
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
166 {
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
167 if (event->state == GDK_VISIBILITY_FULLY_OBSCURED)
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
168 gtk_blist_obscured = TRUE;
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
169 else if (gtk_blist_obscured) {
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
170 gtk_blist_obscured = FALSE;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
171 pidgin_blist_refresh_timer(purple_get_blist());
14239
661d2bb9eb86 [gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents: 14230
diff changeset
172 }
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
173
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
174 /* continue to handle event normally */
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
175 return FALSE;
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
176 }
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
177
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
178 static gboolean gtk_blist_window_state_cb(GtkWidget *w, GdkEventWindowState *event, gpointer data)
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
179 {
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
180 if(event->changed_mask & GDK_WINDOW_STATE_WITHDRAWN) {
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
181 if(event->new_window_state & GDK_WINDOW_STATE_WITHDRAWN)
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
182 purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/blist/list_visible", FALSE);
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
183 else {
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
184 purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/blist/list_visible", TRUE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
185 pidgin_blist_refresh_timer(purple_get_blist());
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
186 }
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
187 }
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
188
12279
9418540cb3bb [gaim-migrate @ 14583]
Casey Harkins <charkins@pidgin.im>
parents: 12246
diff changeset
189 if(event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED) {
9418540cb3bb [gaim-migrate @ 14583]
Casey Harkins <charkins@pidgin.im>
parents: 12246
diff changeset
190 if(event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED)
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
191 purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/blist/list_maximized", TRUE);
12279
9418540cb3bb [gaim-migrate @ 14583]
Casey Harkins <charkins@pidgin.im>
parents: 12246
diff changeset
192 else
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
193 purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/blist/list_maximized", FALSE);
12279
9418540cb3bb [gaim-migrate @ 14583]
Casey Harkins <charkins@pidgin.im>
parents: 12246
diff changeset
194 }
14239
661d2bb9eb86 [gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents: 14230
diff changeset
195
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
196 /* Refresh gtkblist if un-iconifying */
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
197 if (event->changed_mask & GDK_WINDOW_STATE_ICONIFIED){
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
198 if (!(event->new_window_state & GDK_WINDOW_STATE_ICONIFIED))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
199 pidgin_blist_refresh_timer(purple_get_blist());
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
200 }
14239
661d2bb9eb86 [gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents: 14230
diff changeset
201
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
202 return FALSE;
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
203 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
204
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
205 static gboolean gtk_blist_delete_cb(GtkWidget *w, GdkEventAny *event, gpointer data)
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
206 {
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
207 if(visibility_manager_count)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
208 purple_blist_set_visible(FALSE);
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
209 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
210 purple_core_quit();
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
211
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
212 /* we handle everything, event should not propogate further */
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
213 return TRUE;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
214 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
215
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
216 static gboolean gtk_blist_configure_cb(GtkWidget *w, GdkEventConfigure *event, gpointer data)
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
217 {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
218 /* unfortunately GdkEventConfigure ignores the window gravity, but *
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
219 * the only way we have of setting the position doesn't. we have to *
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
220 * call get_position because it does pay attention to the gravity. *
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
221 * this is inefficient and I agree it sucks, but it's more likely *
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
222 * to work correctly. - Robot101 */
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
223 gint x, y;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
224
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
225 /* check for visibility because when we aren't visible, this will *
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
226 * give us bogus (0,0) coordinates. - xOr */
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
227 if (GTK_WIDGET_VISIBLE(w))
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
228 gtk_window_get_position(GTK_WINDOW(w), &x, &y);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
229 else
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
230 return FALSE; /* carry on normally */
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
231
13768
4bf36498e887 [gaim-migrate @ 16178]
Daniel Atallah <datallah@pidgin.im>
parents: 13757
diff changeset
232 #ifdef _WIN32
4bf36498e887 [gaim-migrate @ 16178]
Daniel Atallah <datallah@pidgin.im>
parents: 13757
diff changeset
233 /* Workaround for GTK+ bug # 169811 - "configure_event" is fired
4bf36498e887 [gaim-migrate @ 16178]
Daniel Atallah <datallah@pidgin.im>
parents: 13757
diff changeset
234 * when the window is being maximized */
4bf36498e887 [gaim-migrate @ 16178]
Daniel Atallah <datallah@pidgin.im>
parents: 13757
diff changeset
235 if (gdk_window_get_state(w->window)
4bf36498e887 [gaim-migrate @ 16178]
Daniel Atallah <datallah@pidgin.im>
parents: 13757
diff changeset
236 & GDK_WINDOW_STATE_MAXIMIZED) {
4bf36498e887 [gaim-migrate @ 16178]
Daniel Atallah <datallah@pidgin.im>
parents: 13757
diff changeset
237 return FALSE;
4bf36498e887 [gaim-migrate @ 16178]
Daniel Atallah <datallah@pidgin.im>
parents: 13757
diff changeset
238 }
4bf36498e887 [gaim-migrate @ 16178]
Daniel Atallah <datallah@pidgin.im>
parents: 13757
diff changeset
239 #endif
4bf36498e887 [gaim-migrate @ 16178]
Daniel Atallah <datallah@pidgin.im>
parents: 13757
diff changeset
240
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
241 /* don't save if nothing changed */
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
242 if (x == purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/x") &&
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
243 y == purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/y") &&
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
244 event->width == purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/width") &&
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
245 event->height == purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/height")) {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
246
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
247 return FALSE; /* carry on normally */
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
248 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
249
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
250 /* don't save off-screen positioning */
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
251 if (x + event->width < 0 ||
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
252 y + event->height < 0 ||
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
253 x > gdk_screen_width() ||
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
254 y > gdk_screen_height()) {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
255
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
256 return FALSE; /* carry on normally */
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
257 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
258
12279
9418540cb3bb [gaim-migrate @ 14583]
Casey Harkins <charkins@pidgin.im>
parents: 12246
diff changeset
259 /* ignore changes when maximized */
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
260 if(purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/list_maximized"))
12279
9418540cb3bb [gaim-migrate @ 14583]
Casey Harkins <charkins@pidgin.im>
parents: 12246
diff changeset
261 return FALSE;
9418540cb3bb [gaim-migrate @ 14583]
Casey Harkins <charkins@pidgin.im>
parents: 12246
diff changeset
262
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
263 /* store the position */
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
264 purple_prefs_set_int(PIDGIN_PREFS_ROOT "/blist/x", x);
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
265 purple_prefs_set_int(PIDGIN_PREFS_ROOT "/blist/y", y);
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
266 purple_prefs_set_int(PIDGIN_PREFS_ROOT "/blist/width", event->width);
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
267 purple_prefs_set_int(PIDGIN_PREFS_ROOT "/blist/height", event->height);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
268
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
269 gtk_widget_set_size_request(gtkblist->headline_label,
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
270 purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/width")-25,-1);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
271 /* continue to handle event normally */
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
272 return FALSE;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
273 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
274
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
275 static void gtk_blist_menu_info_cb(GtkWidget *w, PurpleBuddy *b)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
276 {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
277 serv_get_info(b->account->gc, b->name);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
278 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
279
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
280 static void gtk_blist_menu_im_cb(GtkWidget *w, PurpleBuddy *b)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
281 {
16263
27e0ef0f38e6 Word on the street is that we don't want things named pidginfoo_bar(), but
Richard Laager <rlaager@pidgin.im>
parents: 16259
diff changeset
282 pidgin_dialogs_im_with_user(b->account, b->name);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
283 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
284
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
285 static void gtk_blist_menu_send_file_cb(GtkWidget *w, PurpleBuddy *b)
9466
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9460
diff changeset
286 {
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9460
diff changeset
287 serv_send_file(b->account->gc, b->name, NULL);
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9460
diff changeset
288 }
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9460
diff changeset
289
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
290 static void gtk_blist_menu_autojoin_cb(GtkWidget *w, PurpleChat *chat)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
291 {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
292 purple_blist_node_set_bool((PurpleBlistNode*)chat, "gtk-autojoin",
7693
1f736efbd12d [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7662
diff changeset
293 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w)));
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
294 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
295
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
296 static void gtk_blist_join_chat(PurpleChat *chat)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
297 {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
298 PurpleConversation *conv;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
299
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
300 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
301 purple_chat_get_name(chat),
12576
df739b5606f6 [gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents: 12569
diff changeset
302 chat->account);
df739b5606f6 [gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents: 12569
diff changeset
303
df739b5606f6 [gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents: 12569
diff changeset
304 if (conv != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
305 purple_conversation_present(conv);
12592
5e1ce1a49ddb [gaim-migrate @ 14922]
Richard Laager <rlaager@pidgin.im>
parents: 12589
diff changeset
306
5e1ce1a49ddb [gaim-migrate @ 14922]
Richard Laager <rlaager@pidgin.im>
parents: 12589
diff changeset
307 serv_join_chat(chat->account->gc, chat->components);
12576
df739b5606f6 [gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents: 12569
diff changeset
308 }
df739b5606f6 [gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents: 12569
diff changeset
309
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
310 static void gtk_blist_menu_join_cb(GtkWidget *w, PurpleChat *chat)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
311 {
12576
df739b5606f6 [gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents: 12569
diff changeset
312 gtk_blist_join_chat(chat);
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
313 }
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
314
16357
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
315 static void gtk_blist_renderer_editing_started_cb(GtkCellRenderer *renderer,
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
316 GtkCellEditable *editable,
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
317 gchar *path_str,
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
318 gpointer user_data)
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
319 {
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
320 GtkTreeIter iter;
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
321 GtkTreePath *path = NULL;
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
322 GValue val;
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
323 PurpleBlistNode *node;
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
324 const char *text = NULL;
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
325 char *esc;
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
326
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
327 path = gtk_tree_path_new_from_string (path_str);
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
328 gtk_tree_model_get_iter (GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
329 gtk_tree_path_free (path);
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
330 val.g_type = 0;
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
331 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
332 node = g_value_get_pointer(&val);
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
333
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
334 switch (node->type) {
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
335 case PURPLE_BLIST_CONTACT_NODE:
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
336 text = purple_contact_get_alias((PurpleContact *)node);
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
337 break;
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
338 case PURPLE_BLIST_BUDDY_NODE:
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
339 text = purple_buddy_get_alias((PurpleBuddy *)node);
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
340 break;
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
341 case PURPLE_BLIST_GROUP_NODE:
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
342 text = ((PurpleGroup *)node)->name;
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
343 break;
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
344 default:
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
345 g_return_if_reached();
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
346 }
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
347
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
348 esc = g_markup_escape_text(text, -1);
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
349 if (GTK_IS_ENTRY (editable)) {
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
350 GtkEntry *entry = GTK_ENTRY (editable);
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
351 gtk_entry_set_text(entry, esc);
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
352 }
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
353 g_free(esc);
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
354 }
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
355
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
356 static void gtk_blist_renderer_edited_cb(GtkCellRendererText *text_rend, char *arg1,
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
357 char *arg2, gpointer nada)
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
358 {
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
359 GtkTreeIter iter;
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
360 GtkTreePath *path;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
361 GValue val;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
362 PurpleBlistNode *node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
363 PurpleGroup *dest;
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
364
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
365 path = gtk_tree_path_new_from_string (arg1);
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
366 gtk_tree_model_get_iter (GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
367 gtk_tree_path_free (path);
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
368 val.g_type = 0;
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
369 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
370 node = g_value_get_pointer(&val);
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
371 gtk_tree_view_set_enable_search (GTK_TREE_VIEW(gtkblist->treeview), TRUE);
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
372 g_object_set(G_OBJECT(gtkblist->text_rend), "editable", FALSE, NULL);
12319
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
373
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
374 switch (node->type)
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
375 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
376 case PURPLE_BLIST_CONTACT_NODE:
12319
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
377 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
378 PurpleContact *contact = (PurpleContact *)node;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
379 struct _pidgin_blist_node *gtknode = (struct _pidgin_blist_node *)node->ui_data;
12319
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
380
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
381 if (contact->alias || gtknode->contact_expanded)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
382 purple_blist_alias_contact(contact, arg2);
12319
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
383 else
12478
e752c74ff854 [gaim-migrate @ 14789]
Aleksander Piotrowski <alek@nic.com.pl>
parents: 12474
diff changeset
384 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
385 PurpleBuddy *buddy = purple_contact_get_priority_buddy(contact);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
386 purple_blist_alias_buddy(buddy, arg2);
12478
e752c74ff854 [gaim-migrate @ 14789]
Aleksander Piotrowski <alek@nic.com.pl>
parents: 12474
diff changeset
387 serv_alias_buddy(buddy);
e752c74ff854 [gaim-migrate @ 14789]
Aleksander Piotrowski <alek@nic.com.pl>
parents: 12474
diff changeset
388 }
12319
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
389 }
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
390 break;
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
391
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
392 case PURPLE_BLIST_BUDDY_NODE:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
393 purple_blist_alias_buddy((PurpleBuddy*)node, arg2);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
394 serv_alias_buddy((PurpleBuddy *)node);
12319
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
395 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
396 case PURPLE_BLIST_GROUP_NODE:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
397 dest = purple_find_group(arg2);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
398 if (dest != NULL && strcmp(arg2, ((PurpleGroup*) node)->name)) {
16263
27e0ef0f38e6 Word on the street is that we don't want things named pidginfoo_bar(), but
Richard Laager <rlaager@pidgin.im>
parents: 16259
diff changeset
399 pidgin_dialogs_merge_groups((PurpleGroup*) node, arg2);
14526
272b75278ff1 [gaim-migrate @ 17178]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14518
diff changeset
400 } else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
401 purple_blist_rename_group((PurpleGroup*)node, arg2);
12319
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
402 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
403 case PURPLE_BLIST_CHAT_NODE:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
404 purple_blist_alias_chat((PurpleChat*)node, arg2);
12319
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
405 break;
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
406 default:
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
407 break;
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
408 }
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
409 }
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
410
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
411 static void gtk_blist_menu_alias_cb(GtkWidget *w, PurpleBlistNode *node)
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
412 {
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
413 GtkTreeIter iter;
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
414 GtkTreePath *path;
11494
60bfb30f6cba [gaim-migrate @ 13738]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11490
diff changeset
415
11258
6863ab327ec2 [gaim-migrate @ 13433]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11257
diff changeset
416 if (!(get_iter_from_node(node, &iter))) {
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
417 /* This is either a bug, or the buddy is in a collapsed contact */
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
418 node = node->parent;
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
419 if (!get_iter_from_node(node, &iter))
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
420 /* Now it's definitely a bug */
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
421 return;
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
422 }
11258
6863ab327ec2 [gaim-migrate @ 13433]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11257
diff changeset
423
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
424 path = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &iter);
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
425 g_object_set(G_OBJECT(gtkblist->text_rend), "editable", TRUE, NULL);
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
426 gtk_tree_view_set_enable_search (GTK_TREE_VIEW(gtkblist->treeview), FALSE);
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
427 gtk_widget_grab_focus(gtkblist->treeview);
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
428 #if GTK_CHECK_VERSION(2,2,0)
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
429 gtk_tree_view_set_cursor_on_cell(GTK_TREE_VIEW(gtkblist->treeview), path,
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
430 gtkblist->text_column, gtkblist->text_rend, TRUE);
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
431 #else
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
432 gtk_tree_view_set_cursor(GTK_TREE_VIEW(gtkblist->treeview), path, gtkblist->text_column, TRUE);
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
433 #endif
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
434 gtk_tree_path_free(path);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
435 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
436
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
437 static void gtk_blist_menu_bp_cb(GtkWidget *w, PurpleBuddy *b)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
438 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
439 pidgin_pounce_editor_show(b->account, b->name, NULL);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
440 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
441
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
442 static void gtk_blist_menu_showlog_cb(GtkWidget *w, PurpleBlistNode *node)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
443 {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
444 PurpleLogType type;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
445 PurpleAccount *account;
9917
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
446 char *name = NULL;
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
447
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
448 pidgin_set_cursor(gtkblist->window, GDK_WATCH);
12232
857f087ec86b [gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents: 12226
diff changeset
449
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
450 if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
451 PurpleBuddy *b = (PurpleBuddy*) node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
452 type = PURPLE_LOG_IM;
9917
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
453 name = g_strdup(b->name);
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
454 account = b->account;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
455 } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
456 PurpleChat *c = (PurpleChat*) node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
457 PurplePluginProtocolInfo *prpl_info = NULL;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
458 type = PURPLE_LOG_CHAT;
9917
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
459 account = c->account;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
460 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_find_prpl(purple_account_get_protocol_id(account)));
9917
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
461 if (prpl_info && prpl_info->get_chat_name) {
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
462 name = prpl_info->get_chat_name(c->components);
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
463 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
464 } else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
465 pidgin_log_show_contact((PurpleContact *)node);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
466 pidgin_clear_cursor(gtkblist->window);
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
467 return;
12232
857f087ec86b [gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents: 12226
diff changeset
468 } else {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
469 pidgin_clear_cursor(gtkblist->window);
12232
857f087ec86b [gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents: 12226
diff changeset
470
857f087ec86b [gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents: 12226
diff changeset
471 /* This callback should not have been registered for a node
857f087ec86b [gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents: 12226
diff changeset
472 * that doesn't match the type of one of the blocks above. */
857f087ec86b [gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents: 12226
diff changeset
473 g_return_if_reached();
857f087ec86b [gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents: 12226
diff changeset
474 }
9917
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
475
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
476 if (name && account) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
477 pidgin_log_show(type, name, account);
9917
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
478 g_free(name);
12232
857f087ec86b [gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents: 12226
diff changeset
479
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
480 pidgin_clear_cursor(gtkblist->window);
9917
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
481 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
482 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
483
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
484 static void gtk_blist_show_systemlog_cb()
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
485 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
486 pidgin_syslog_show();
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
487 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
488
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
489 static void gtk_blist_show_onlinehelp_cb()
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
490 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
491 purple_notify_uri(NULL, PURPLE_WEBSITE "documentation.php");
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
492 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
493
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
494 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
495 do_join_chat(PidginJoinChatData *data)
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
496 {
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
497 if (data)
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
498 {
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
499 GHashTable *components =
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
500 g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
501 GList *tmp;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
502 PurpleChat *chat;
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
503
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
504 for (tmp = data->entries; tmp != NULL; tmp = tmp->next)
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
505 {
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
506 if (g_object_get_data(tmp->data, "is_spin"))
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
507 {
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
508 g_hash_table_replace(components,
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
509 g_strdup(g_object_get_data(tmp->data, "identifier")),
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
510 g_strdup_printf("%d",
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
511 gtk_spin_button_get_value_as_int(tmp->data)));
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
512 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
513 else
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
514 {
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
515 g_hash_table_replace(components,
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
516 g_strdup(g_object_get_data(tmp->data, "identifier")),
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
517 g_strdup(gtk_entry_get_text(tmp->data)));
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
518 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
519 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
520
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
521 chat = purple_chat_new(data->account, NULL, components);
12576
df739b5606f6 [gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents: 12569
diff changeset
522 gtk_blist_join_chat(chat);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
523 purple_blist_remove_chat(chat);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
524 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
525 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
526
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
527 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
528 do_joinchat(GtkWidget *dialog, int id, PidginJoinChatData *info)
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
529 {
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
530 switch(id)
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
531 {
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
532 case GTK_RESPONSE_OK:
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
533 do_join_chat(info);
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
534
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
535 break;
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
536 }
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
537
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
538 gtk_widget_destroy(GTK_WIDGET(dialog));
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
539 g_list_free(info->entries);
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
540 g_free(info);
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
541 }
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
542
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
543 /*
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
544 * Check the values of all the text entry boxes. If any required input
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
545 * strings are empty then don't allow the user to click on "OK."
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
546 */
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
547 static void
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
548 joinchat_set_sensitive_if_input_cb(GtkWidget *entry, gpointer user_data)
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
549 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
550 PidginJoinChatData *data;
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
551 GList *tmp;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
552 const char *text;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
553 gboolean required;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
554 gboolean sensitive = TRUE;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
555
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
556 data = user_data;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
557
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
558 for (tmp = data->entries; tmp != NULL; tmp = tmp->next)
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
559 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
560 if (!g_object_get_data(tmp->data, "is_spin"))
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
561 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
562 required = GPOINTER_TO_INT(g_object_get_data(tmp->data, "required"));
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
563 text = gtk_entry_get_text(tmp->data);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
564 if (required && (*text == '\0'))
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
565 sensitive = FALSE;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
566 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
567 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
568
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
569 gtk_dialog_set_response_sensitive(GTK_DIALOG(data->window), GTK_RESPONSE_OK, sensitive);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
570 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
571
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
572 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
573 pidgin_blist_update_privacy_cb(PurpleBuddy *buddy)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
574 {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
575 pidgin_blist_update_buddy(purple_get_blist(), (PurpleBlistNode*)(buddy), TRUE);
14200
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
576 }
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
577
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
578 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
579 rebuild_joinchat_entries(PidginJoinChatData *data)
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
580 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
581 PurpleConnection *gc;
15051
1d0c9b4b68e6 [gaim-migrate @ 17768]
Daniel Atallah <datallah@pidgin.im>
parents: 15050
diff changeset
582 GList *list = NULL, *tmp;
9770
d61fe8dcb6d9 [gaim-migrate @ 10638]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9754
diff changeset
583 GHashTable *defaults = NULL;
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
584 struct proto_chat_entry *pce;
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
585 gboolean focus = TRUE;
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
586
10127
3ea502c95653 [gaim-migrate @ 11165]
Daniel Atallah <datallah@pidgin.im>
parents: 10118
diff changeset
587 g_return_if_fail(data->account != NULL);
3ea502c95653 [gaim-migrate @ 11165]
Daniel Atallah <datallah@pidgin.im>
parents: 10118
diff changeset
588
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
589 gc = purple_account_get_connection(data->account);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
590
15051
1d0c9b4b68e6 [gaim-migrate @ 17768]
Daniel Atallah <datallah@pidgin.im>
parents: 15050
diff changeset
591 while ((tmp = gtk_container_get_children(GTK_CONTAINER(data->entries_box))))
1d0c9b4b68e6 [gaim-migrate @ 17768]
Daniel Atallah <datallah@pidgin.im>
parents: 15050
diff changeset
592 gtk_widget_destroy(tmp->data);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
593
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
594 g_list_free(data->entries);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
595 data->entries = NULL;
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
596
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
597 if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info != NULL)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
598 list = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info(gc);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
599
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
600 if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults != NULL)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
601 defaults = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults(gc, NULL);
9770
d61fe8dcb6d9 [gaim-migrate @ 10638]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9754
diff changeset
602
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
603 for (tmp = list; tmp; tmp = tmp->next)
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
604 {
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
605 GtkWidget *label;
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
606 GtkWidget *rowbox;
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
607 GtkWidget *input;
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
608
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
609 pce = tmp->data;
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
610
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
611 rowbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
612 gtk_box_pack_start(GTK_BOX(data->entries_box), rowbox, FALSE, FALSE, 0);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
613
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
614 label = gtk_label_new_with_mnemonic(pce->label);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
615 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
616 gtk_size_group_add_widget(data->sg, label);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
617 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
618
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
619 if (pce->is_int)
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
620 {
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
621 GtkObject *adjust;
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
622 adjust = gtk_adjustment_new(pce->min, pce->min, pce->max,
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
623 1, 10, 10);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
624 input = gtk_spin_button_new(GTK_ADJUSTMENT(adjust), 1, 0);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
625 gtk_widget_set_size_request(input, 50, -1);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
626 gtk_box_pack_end(GTK_BOX(rowbox), input, FALSE, FALSE, 0);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
627 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
628 else
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
629 {
9770
d61fe8dcb6d9 [gaim-migrate @ 10638]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9754
diff changeset
630 char *value;
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
631 input = gtk_entry_new();
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
632 gtk_entry_set_activates_default(GTK_ENTRY(input), TRUE);
9770
d61fe8dcb6d9 [gaim-migrate @ 10638]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9754
diff changeset
633 value = g_hash_table_lookup(defaults, pce->identifier);
d61fe8dcb6d9 [gaim-migrate @ 10638]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9754
diff changeset
634 if (value != NULL)
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
635 gtk_entry_set_text(GTK_ENTRY(input), value);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
636 if (pce->secret)
11986
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11983
diff changeset
637 {
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
638 gtk_entry_set_visibility(GTK_ENTRY(input), FALSE);
15390
d429e03fc755 [gaim-migrate @ 18119]
Mark Doliner <markdoliner@pidgin.im>
parents: 15386
diff changeset
639 if (gtk_entry_get_invisible_char(GTK_ENTRY(input)) == '*')
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
640 gtk_entry_set_invisible_char(GTK_ENTRY(input), PIDGIN_INVISIBLE_CHAR);
11986
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11983
diff changeset
641 }
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
642 gtk_box_pack_end(GTK_BOX(rowbox), input, TRUE, TRUE, 0);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
643 g_signal_connect(G_OBJECT(input), "changed",
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
644 G_CALLBACK(joinchat_set_sensitive_if_input_cb), data);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
645 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
646
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
647 /* Do the following for any type of input widget */
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
648 if (focus)
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
649 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
650 gtk_widget_grab_focus(input);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
651 focus = FALSE;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
652 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
653 gtk_label_set_mnemonic_widget(GTK_LABEL(label), input);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
654 pidgin_set_accessible_label(input, label);
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13091
diff changeset
655 g_object_set_data(G_OBJECT(input), "identifier", (gpointer)pce->identifier);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
656 g_object_set_data(G_OBJECT(input), "is_spin", GINT_TO_POINTER(pce->is_int));
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
657 g_object_set_data(G_OBJECT(input), "required", GINT_TO_POINTER(pce->required));
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
658 data->entries = g_list_append(data->entries, input);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
659
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
660 g_free(pce);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
661 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
662
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
663 g_list_free(list);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
664 g_hash_table_destroy(defaults);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
665
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
666 /* Set whether the "OK" button should be clickable initially */
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
667 joinchat_set_sensitive_if_input_cb(NULL, data);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
668
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
669 gtk_widget_show_all(data->entries_box);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
670 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
671
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
672 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
673 joinchat_select_account_cb(GObject *w, PurpleAccount *account,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
674 PidginJoinChatData *data)
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
675 {
13560
bc440f376ffb [gaim-migrate @ 15938]
Etan Reisner <deryni@pidgin.im>
parents: 13546
diff changeset
676 data->account = account;
bc440f376ffb [gaim-migrate @ 15938]
Etan Reisner <deryni@pidgin.im>
parents: 13546
diff changeset
677 rebuild_joinchat_entries(data);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
678 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
679
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
680 static gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
681 chat_account_filter_func(PurpleAccount *account)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
682 {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
683 PurpleConnection *gc = purple_account_get_connection(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
684 PurplePluginProtocolInfo *prpl_info = NULL;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
685
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
686 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl);
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
687
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
688 return (prpl_info->chat_info != NULL);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
689 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
690
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
691 gboolean
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
692 pidgin_blist_joinchat_is_showable()
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
693 {
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
694 GList *c;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
695 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
696
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
697 for (c = purple_connections_get_all(); c != NULL; c = c->next) {
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
698 gc = c->data;
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
699
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
700 if (chat_account_filter_func(purple_connection_get_account(gc)))
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
701 return TRUE;
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
702 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
703
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
704 return FALSE;
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
705 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
706
8305
5a6d1168a8b3 [gaim-migrate @ 9029]
Christian Hammond <chipx86@chipx86.com>
parents: 8303
diff changeset
707 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
708 pidgin_blist_joinchat_show(void)
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
709 {
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
710 GtkWidget *hbox, *vbox;
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
711 GtkWidget *rowbox;
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
712 GtkWidget *label;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
713 PidginBuddyList *gtkblist;
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
714 GtkWidget *img = NULL;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
715 PidginJoinChatData *data = NULL;
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
716
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
717 gtkblist = PIDGIN_BLIST(purple_get_blist());
15497
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
718 img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION,
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
719 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE));
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
720 data = g_new0(PidginJoinChatData, 1);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
721
8975
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
722 data->window = gtk_dialog_new_with_buttons(_("Join a Chat"),
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
723 NULL, GTK_DIALOG_NO_SEPARATOR,
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
724 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
15570
81e9b7d13875 stock to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15569
diff changeset
725 PIDGIN_STOCK_CHAT, GTK_RESPONSE_OK, NULL);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
726 gtk_dialog_set_default_response(GTK_DIALOG(data->window), GTK_RESPONSE_OK);
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
727 gtk_container_set_border_width(GTK_CONTAINER(data->window), PIDGIN_HIG_BOX_SPACE);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
728 gtk_window_set_resizable(GTK_WINDOW(data->window), FALSE);
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
729 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(data->window)->vbox), PIDGIN_HIG_BORDER);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
730 gtk_container_set_border_width(
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
731 GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), PIDGIN_HIG_BOX_SPACE);
8975
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
732 gtk_window_set_role(GTK_WINDOW(data->window), "join_chat");
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
733
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
734 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
735 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), hbox);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
736 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
737 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
738
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
739 vbox = gtk_vbox_new(FALSE, 5);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
740 gtk_container_set_border_width(GTK_CONTAINER(vbox), 0);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
741 gtk_container_add(GTK_CONTAINER(hbox), vbox);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
742
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
743 label = gtk_label_new(_("Please enter the appropriate information "
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
744 "about the chat you would like to join.\n"));
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
745 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
746 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
747 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
748
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
749 rowbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
750 gtk_box_pack_start(GTK_BOX(vbox), rowbox, TRUE, TRUE, 0);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
751
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
752 data->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
753
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
754 label = gtk_label_new_with_mnemonic(_("_Account:"));
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
755 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
756 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0);
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
757 gtk_size_group_add_widget(data->sg, label);
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
758
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
759 data->account_menu = pidgin_account_option_menu_new(NULL, FALSE,
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
760 G_CALLBACK(joinchat_select_account_cb),
9987
2396bd099335 [gaim-migrate @ 10900]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9959
diff changeset
761 chat_account_filter_func, data);
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
762 gtk_box_pack_start(GTK_BOX(rowbox), data->account_menu, TRUE, TRUE, 0);
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
763 gtk_label_set_mnemonic_widget(GTK_LABEL(label),
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
764 GTK_WIDGET(data->account_menu));
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
765 pidgin_set_accessible_label (data->account_menu, label);
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
766
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
767 data->entries_box = gtk_vbox_new(FALSE, 5);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
768 gtk_container_add(GTK_CONTAINER(vbox), data->entries_box);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
769 gtk_container_set_border_width(GTK_CONTAINER(data->entries_box), 0);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
770
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
771 data->account = pidgin_account_option_menu_get_selected(data->account_menu);
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
772
8303
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
773 rebuild_joinchat_entries(data);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
774
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
775 g_signal_connect(G_OBJECT(data->window), "response",
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
776 G_CALLBACK(do_joinchat), data);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
777
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
778 g_object_unref(data->sg);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
779
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
780 gtk_widget_show_all(data->window);
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
781 }
bbe7d3420549 [gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents: 8302
diff changeset
782
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
783 static void gtk_blist_row_expanded_cb(GtkTreeView *tv, GtkTreeIter *iter, GtkTreePath *path, gpointer user_data) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
784 PurpleBlistNode *node;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
785 GValue val;
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
786
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
787 val.g_type = 0;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
788 gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), iter, NODE_COLUMN, &val);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
789
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
790 node = g_value_get_pointer(&val);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
791
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
792 if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
15385
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
793 char *title;
15409
37b46bbce4cb [gaim-migrate @ 18140]
Daniel Atallah <datallah@pidgin.im>
parents: 15403
diff changeset
794
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
795 title = pidgin_get_group_title(node, TRUE);
15409
37b46bbce4cb [gaim-migrate @ 18140]
Daniel Atallah <datallah@pidgin.im>
parents: 15403
diff changeset
796
15385
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
797 gtk_tree_store_set(gtkblist->treemodel, iter,
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
798 NAME_COLUMN, title,
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
799 -1);
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
800
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
801 g_free(title);
15409
37b46bbce4cb [gaim-migrate @ 18140]
Daniel Atallah <datallah@pidgin.im>
parents: 15403
diff changeset
802
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
803 purple_blist_node_set_bool(node, "collapsed", FALSE);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
804 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
805 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
806
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
807 static void gtk_blist_row_collapsed_cb(GtkTreeView *tv, GtkTreeIter *iter, GtkTreePath *path, gpointer user_data) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
808 PurpleBlistNode *node;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
809 GValue val;
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
810
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
811 val.g_type = 0;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
812 gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), iter, NODE_COLUMN, &val);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
813
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
814 node = g_value_get_pointer(&val);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
815
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
816 if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
15385
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
817 char *title;
15409
37b46bbce4cb [gaim-migrate @ 18140]
Daniel Atallah <datallah@pidgin.im>
parents: 15403
diff changeset
818
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
819 title = pidgin_get_group_title(node, FALSE);
15409
37b46bbce4cb [gaim-migrate @ 18140]
Daniel Atallah <datallah@pidgin.im>
parents: 15403
diff changeset
820
15385
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
821 gtk_tree_store_set(gtkblist->treemodel, iter,
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
822 NAME_COLUMN, title,
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
823 -1);
15409
37b46bbce4cb [gaim-migrate @ 18140]
Daniel Atallah <datallah@pidgin.im>
parents: 15403
diff changeset
824
15385
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
825 g_free(title);
15409
37b46bbce4cb [gaim-migrate @ 18140]
Daniel Atallah <datallah@pidgin.im>
parents: 15403
diff changeset
826
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
827 purple_blist_node_set_bool(node, "collapsed", TRUE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
828 } else if(PURPLE_BLIST_NODE_IS_CONTACT(node)) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
829 pidgin_blist_collapse_contact_cb(NULL, node);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
830 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
831 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
832
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
833 static void gtk_blist_row_activated_cb(GtkTreeView *tv, GtkTreePath *path, GtkTreeViewColumn *col, gpointer data) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
834 PurpleBlistNode *node;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
835 GtkTreeIter iter;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
836 GValue val;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
837
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
838 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
839
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
840 val.g_type = 0;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
841 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
842 node = g_value_get_pointer(&val);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
843
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
844 if(PURPLE_BLIST_NODE_IS_CONTACT(node) || PURPLE_BLIST_NODE_IS_BUDDY(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
845 PurpleBuddy *buddy;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
846
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
847 if(PURPLE_BLIST_NODE_IS_CONTACT(node))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
848 buddy = purple_contact_get_priority_buddy((PurpleContact*)node);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
849 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
850 buddy = (PurpleBuddy*)node;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
851
16263
27e0ef0f38e6 Word on the street is that we don't want things named pidginfoo_bar(), but
Richard Laager <rlaager@pidgin.im>
parents: 16259
diff changeset
852 pidgin_dialogs_im_with_user(buddy->account, buddy->name);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
853 } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
854 gtk_blist_join_chat((PurpleChat *)node);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
855 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
856 /* if (gtk_tree_view_row_expanded(tv, path))
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
857 gtk_tree_view_collapse_row(tv, path);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
858 else
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
859 gtk_tree_view_expand_row(tv,path,FALSE);*/
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
860 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
861 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
862
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
863 static void pidgin_blist_add_chat_cb()
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
864 {
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
865 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkblist->treeview));
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
866 GtkTreeIter iter;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
867 PurpleBlistNode *node;
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
868
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
869 if(gtk_tree_selection_get_selected(sel, NULL, &iter)){
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
870 gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &node, -1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
871 if (PURPLE_BLIST_NODE_IS_BUDDY(node))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
872 purple_blist_request_add_chat(NULL, (PurpleGroup*)node->parent->parent, NULL, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
873 if (PURPLE_BLIST_NODE_IS_CONTACT(node) || PURPLE_BLIST_NODE_IS_CHAT(node))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
874 purple_blist_request_add_chat(NULL, (PurpleGroup*)node->parent, NULL, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
875 else if (PURPLE_BLIST_NODE_IS_GROUP(node))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
876 purple_blist_request_add_chat(NULL, (PurpleGroup*)node, NULL, NULL);
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
877 }
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
878 else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
879 purple_blist_request_add_chat(NULL, NULL, NULL, NULL);
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
880 }
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
881 }
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
882
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
883 static void pidgin_blist_add_buddy_cb()
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
884 {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
885 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkblist->treeview));
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
886 GtkTreeIter iter;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
887 PurpleBlistNode *node;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
888
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
889 if(gtk_tree_selection_get_selected(sel, NULL, &iter)){
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
890 gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &node, -1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
891 if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
892 purple_blist_request_add_buddy(NULL, NULL, ((PurpleGroup*)node->parent->parent)->name,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
893 NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
894 } else if (PURPLE_BLIST_NODE_IS_CONTACT(node)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
895 || PURPLE_BLIST_NODE_IS_CHAT(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
896 purple_blist_request_add_buddy(NULL, NULL, ((PurpleGroup*)node->parent)->name, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
897 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
898 purple_blist_request_add_buddy(NULL, NULL, ((PurpleGroup*)node)->name, NULL);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
899 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
900 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
901 else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
902 purple_blist_request_add_buddy(NULL, NULL, NULL, NULL);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
903 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
904 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
905
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
906 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
907 pidgin_blist_remove_cb (GtkWidget *w, PurpleBlistNode *node)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
908 {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
909 if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
16263
27e0ef0f38e6 Word on the street is that we don't want things named pidginfoo_bar(), but
Richard Laager <rlaager@pidgin.im>
parents: 16259
diff changeset
910 pidgin_dialogs_remove_buddy((PurpleBuddy*)node);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
911 } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
16263
27e0ef0f38e6 Word on the street is that we don't want things named pidginfoo_bar(), but
Richard Laager <rlaager@pidgin.im>
parents: 16259
diff changeset
912 pidgin_dialogs_remove_chat((PurpleChat*)node);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
913 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
16263
27e0ef0f38e6 Word on the street is that we don't want things named pidginfoo_bar(), but
Richard Laager <rlaager@pidgin.im>
parents: 16259
diff changeset
914 pidgin_dialogs_remove_group((PurpleGroup*)node);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
915 } else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
16263
27e0ef0f38e6 Word on the street is that we don't want things named pidginfoo_bar(), but
Richard Laager <rlaager@pidgin.im>
parents: 16259
diff changeset
916 pidgin_dialogs_remove_contact((PurpleContact*)node);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
917 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
918 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
919
14230
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
920 struct _expand {
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
921 GtkTreeView *treeview;
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
922 GtkTreePath *path;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
923 PurpleBlistNode *node;
14230
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
924 };
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
925
14239
661d2bb9eb86 [gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents: 14230
diff changeset
926 static gboolean
661d2bb9eb86 [gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents: 14230
diff changeset
927 scroll_to_expanded_cell(gpointer data)
14230
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
928 {
14239
661d2bb9eb86 [gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents: 14230
diff changeset
929 struct _expand *ex = data;
14230
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
930 gtk_tree_view_scroll_to_cell(ex->treeview, ex->path, NULL, FALSE, 0, 0);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
931 pidgin_blist_update_contact(NULL, ex->node);
14230
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
932
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
933 gtk_tree_path_free(ex->path);
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
934 g_free(ex);
14239
661d2bb9eb86 [gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents: 14230
diff changeset
935
14230
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
936 return FALSE;
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
937 }
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
938
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
939 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
940 pidgin_blist_expand_contact_cb(GtkWidget *w, PurpleBlistNode *node)
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
941 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
942 struct _pidgin_blist_node *gtknode;
9632
e295aa712589 [gaim-migrate @ 10476]
Sean Egan <seanegan@pidgin.im>
parents: 9620
diff changeset
943 GtkTreeIter iter, parent;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
944 PurpleBlistNode *bnode;
10325
9bb530214bae [gaim-migrate @ 11532]
Mark Doliner <markdoliner@pidgin.im>
parents: 10320
diff changeset
945 GtkTreePath *path;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
946
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
947 if(!PURPLE_BLIST_NODE_IS_CONTACT(node))
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
948 return;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
949
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
950 gtknode = (struct _pidgin_blist_node *)node->ui_data;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
951
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
952 gtknode->contact_expanded = TRUE;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
953
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
954 for(bnode = node->child; bnode; bnode = bnode->next) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
955 pidgin_blist_update(NULL, bnode);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
956 }
10353
830e54bb7fa0 [gaim-migrate @ 11570]
Mark Doliner <markdoliner@pidgin.im>
parents: 10352
diff changeset
957
9632
e295aa712589 [gaim-migrate @ 10476]
Sean Egan <seanegan@pidgin.im>
parents: 9620
diff changeset
958 /* This ensures that the bottom buddy is visible, i.e. not scrolled off the alignment */
14748
03b0e1705115 [gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14723
diff changeset
959 if (get_iter_from_node(node, &parent)) {
03b0e1705115 [gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14723
diff changeset
960 struct _expand *ex = g_new0(struct _expand, 1);
03b0e1705115 [gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14723
diff changeset
961
03b0e1705115 [gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14723
diff changeset
962 gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(gtkblist->treemodel), &iter, &parent,
03b0e1705115 [gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14723
diff changeset
963 gtk_tree_model_iter_n_children(GTK_TREE_MODEL(gtkblist->treemodel), &parent) -1);
03b0e1705115 [gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14723
diff changeset
964 path = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &iter);
03b0e1705115 [gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14723
diff changeset
965
03b0e1705115 [gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14723
diff changeset
966 /* Let the treeview draw so it knows where to scroll */
03b0e1705115 [gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14723
diff changeset
967 ex->treeview = GTK_TREE_VIEW(gtkblist->treeview);
03b0e1705115 [gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14723
diff changeset
968 ex->path = path;
03b0e1705115 [gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14723
diff changeset
969 ex->node = node->child;
03b0e1705115 [gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14723
diff changeset
970 g_idle_add(scroll_to_expanded_cell, ex);
03b0e1705115 [gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14723
diff changeset
971 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
972 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
973
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
974 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
975 pidgin_blist_collapse_contact_cb(GtkWidget *w, PurpleBlistNode *node)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
976 {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
977 PurpleBlistNode *bnode;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
978 struct _pidgin_blist_node *gtknode;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
979
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
980 if(!PURPLE_BLIST_NODE_IS_CONTACT(node))
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
981 return;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
982
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
983 gtknode = (struct _pidgin_blist_node *)node->ui_data;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
984
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
985 gtknode->contact_expanded = FALSE;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
986
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
987 for(bnode = node->child; bnode; bnode = bnode->next) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
988 pidgin_blist_update(NULL, bnode);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
989 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
990 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
991
15380
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
992 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
993 toggle_privacy(GtkWidget *widget, PurpleBlistNode *node)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
994 {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
995 PurpleBuddy *buddy;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
996 PurpleAccount *account;
15380
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
997 gboolean permitted;
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
998 const char *name;
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
999
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1000 if (!PURPLE_BLIST_NODE_IS_BUDDY(node))
15380
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
1001 return;
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
1002
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1003 buddy = (PurpleBuddy *)node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1004 account = purple_buddy_get_account(buddy);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1005 name = purple_buddy_get_name(buddy);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1006
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1007 permitted = purple_privacy_check(account, name);
15380
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
1008
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
1009 /* XXX: Perhaps ask whether to restore the previous lists where appropirate? */
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
1010
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
1011 if (permitted)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1012 purple_privacy_deny(account, name, FALSE, FALSE);
15380
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
1013 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1014 purple_privacy_allow(account, name, FALSE, FALSE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1015
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1016 pidgin_blist_update(purple_get_blist(), node);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1017 }
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1018
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1019 void pidgin_append_blist_node_privacy_menu(GtkWidget *menu, PurpleBlistNode *node)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1020 {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1021 PurpleBuddy *buddy = (PurpleBuddy *)node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1022 PurpleAccount *account;
15380
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
1023 gboolean permitted;
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
1024
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1025 account = purple_buddy_get_account(buddy);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1026 permitted = purple_privacy_check(account, purple_buddy_get_name(buddy));
15380
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
1027
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1028 pidgin_new_item_from_stock(menu, permitted ? _("_Block") : _("Un_block"),
16068
b1dac315ed09 block and unblock have the right icons now
Nathan Walp <nwalp@pidgin.im>
parents: 16040
diff changeset
1029 permitted ? PIDGIN_STOCK_TOOLBAR_BLOCK : PIDGIN_STOCK_TOOLBAR_UNBLOCK, G_CALLBACK(toggle_privacy),
15380
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
1030 node, 0 ,0, NULL);
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
1031 }
1171796358b3 [gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15307
diff changeset
1032
9051
aebb592d4529 [gaim-migrate @ 9827]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9030
diff changeset
1033 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1034 pidgin_append_blist_node_proto_menu(GtkWidget *menu, PurpleConnection *gc,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1035 PurpleBlistNode *node)
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1036 {
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1037 GList *l, *ll;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1038 PurplePluginProtocolInfo *prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl);
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1039
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1040 if(!prpl_info || !prpl_info->blist_node_menu)
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1041 return;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1042
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1043 for(l = ll = prpl_info->blist_node_menu(node); l; l = l->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1044 PurpleMenuAction *act = (PurpleMenuAction *) l->data;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1045 pidgin_append_menu_action(menu, act, node);
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1046 }
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1047 g_list_free(ll);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1048 }
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1049
9051
aebb592d4529 [gaim-migrate @ 9827]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9030
diff changeset
1050 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1051 pidgin_append_blist_node_extended_menu(GtkWidget *menu, PurpleBlistNode *node)
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1052 {
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1053 GList *l, *ll;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1054
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1055 for(l = ll = purple_blist_node_get_extended_menu(node); l; l = l->next) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1056 PurpleMenuAction *act = (PurpleMenuAction *) l->data;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1057 pidgin_append_menu_action(menu, act, node);
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1058 }
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1059 g_list_free(ll);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1060 }
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1061
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1062 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1063 pidgin_blist_make_buddy_menu(GtkWidget *menu, PurpleBuddy *buddy, gboolean sub) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1064 PurplePluginProtocolInfo *prpl_info;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1065 PurpleContact *contact;
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1066 gboolean contact_expanded = FALSE;
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1067
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1068 g_return_if_fail(menu);
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1069 g_return_if_fail(buddy);
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1070
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1071 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(buddy->account->gc->prpl);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1072
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1073 contact = purple_buddy_get_contact(buddy);
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1074 if (contact) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1075 contact_expanded = ((struct _pidgin_blist_node *)(((PurpleBlistNode*)contact)->ui_data))->contact_expanded;
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1076 }
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1077
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1078 if (prpl_info && prpl_info->get_info) {
15623
bf485c598199 toolbar/menu icons. reduce the imhtmltoolbar spacing. more gaimstock pruning
Sean Egan <seanegan@pidgin.im>
parents: 15622
diff changeset
1079 pidgin_new_item_from_stock(menu, _("Get _Info"), PIDGIN_STOCK_TOOLBAR_USER_INFO,
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1080 G_CALLBACK(gtk_blist_menu_info_cb), buddy, 0, 0, NULL);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1081 }
15623
bf485c598199 toolbar/menu icons. reduce the imhtmltoolbar spacing. more gaimstock pruning
Sean Egan <seanegan@pidgin.im>
parents: 15622
diff changeset
1082 pidgin_new_item_from_stock(menu, _("I_M"), PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW,
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1083 G_CALLBACK(gtk_blist_menu_im_cb), buddy, 0, 0, NULL);
9466
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9460
diff changeset
1084 if (prpl_info && prpl_info->send_file) {
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1085 if (!prpl_info->can_receive_file ||
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1086 prpl_info->can_receive_file(buddy->account->gc, buddy->name))
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1087 {
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1088 pidgin_new_item_from_stock(menu, _("_Send File"),
15570
81e9b7d13875 stock to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15569
diff changeset
1089 PIDGIN_STOCK_FILE_TRANSFER,
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1090 G_CALLBACK(gtk_blist_menu_send_file_cb),
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1091 buddy, 0, 0, NULL);
9466
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9460
diff changeset
1092 }
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9460
diff changeset
1093 }
12024
5a87b77fcc3c [gaim-migrate @ 14317]
Sean Egan <seanegan@pidgin.im>
parents: 12016
diff changeset
1094
15622
024584b350fb context menu cleanup
Sean Egan <seanegan@pidgin.im>
parents: 15621
diff changeset
1095 pidgin_new_item_from_stock(menu, _("Add Buddy _Pounce"), NULL,
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1096 G_CALLBACK(gtk_blist_menu_bp_cb), buddy, 0, 0, NULL);
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1097
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1098 if(((PurpleBlistNode*)buddy)->parent->child->next && !sub && !contact_expanded) {
15623
bf485c598199 toolbar/menu icons. reduce the imhtmltoolbar spacing. more gaimstock pruning
Sean Egan <seanegan@pidgin.im>
parents: 15622
diff changeset
1099 pidgin_new_item_from_stock(menu, _("View _Log"), NULL,
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1100 G_CALLBACK(gtk_blist_menu_showlog_cb),
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1101 contact, 0, 0, NULL);
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1102 } else if (!sub) {
15622
024584b350fb context menu cleanup
Sean Egan <seanegan@pidgin.im>
parents: 15621
diff changeset
1103 pidgin_new_item_from_stock(menu, _("View _Log"), NULL,
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1104 G_CALLBACK(gtk_blist_menu_showlog_cb), buddy, 0, 0, NULL);
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1105 }
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1106
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1107
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1108 pidgin_append_blist_node_proto_menu(menu, buddy->account->gc,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1109 (PurpleBlistNode *)buddy);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1110 pidgin_append_blist_node_extended_menu(menu, (PurpleBlistNode *)buddy);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1111
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1112 if (((PurpleBlistNode*)buddy)->parent->child->next && !sub && !contact_expanded) {
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1113 pidgin_separator(menu);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1114 pidgin_append_blist_node_privacy_menu(menu, (PurpleBlistNode *)buddy);
15570
81e9b7d13875 stock to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15569
diff changeset
1115 pidgin_new_item_from_stock(menu, _("Alias..."), PIDGIN_STOCK_ALIAS,
9925
7f33ac0e1878 [gaim-migrate @ 10817]
Nathan Walp <nwalp@pidgin.im>
parents: 9918
diff changeset
1116 G_CALLBACK(gtk_blist_menu_alias_cb),
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1117 contact, 0, 0, NULL);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1118 pidgin_new_item_from_stock(menu, _("Remove"), GTK_STOCK_REMOVE,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1119 G_CALLBACK(pidgin_blist_remove_cb),
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1120 contact, 0, 0, NULL);
12319
42a0e8cecea3 [gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents: 12302
diff changeset
1121 } else if (!sub || contact_expanded) {
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1122 pidgin_separator(menu);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1123 pidgin_append_blist_node_privacy_menu(menu, (PurpleBlistNode *)buddy);
15570
81e9b7d13875 stock to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15569
diff changeset
1124 pidgin_new_item_from_stock(menu, _("_Alias..."), PIDGIN_STOCK_ALIAS,
9925
7f33ac0e1878 [gaim-migrate @ 10817]
Nathan Walp <nwalp@pidgin.im>
parents: 9918
diff changeset
1125 G_CALLBACK(gtk_blist_menu_alias_cb), buddy, 0, 0, NULL);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1126 pidgin_new_item_from_stock(menu, _("_Remove"), GTK_STOCK_REMOVE,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1127 G_CALLBACK(pidgin_blist_remove_cb), buddy,
9925
7f33ac0e1878 [gaim-migrate @ 10817]
Nathan Walp <nwalp@pidgin.im>
parents: 9918
diff changeset
1128 0, 0, NULL);
7f33ac0e1878 [gaim-migrate @ 10817]
Nathan Walp <nwalp@pidgin.im>
parents: 9918
diff changeset
1129 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1130 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1131
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1132 static gboolean
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1133 gtk_blist_key_press_cb(GtkWidget *tv, GdkEventKey *event, gpointer data) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1134 PurpleBlistNode *node;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1135 GValue val;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1136 GtkTreeIter iter;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1137 GtkTreeSelection *sel;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1138
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1139 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tv));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1140 if(!gtk_tree_selection_get_selected(sel, NULL, &iter))
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1141 return FALSE;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1142
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1143 val.g_type = 0;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1144 gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), &iter,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1145 NODE_COLUMN, &val);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1146 node = g_value_get_pointer(&val);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1147
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1148 if(event->state & GDK_CONTROL_MASK &&
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1149 (event->keyval == 'o' || event->keyval == 'O')) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1150 PurpleBuddy *buddy;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1151
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1152 if(PURPLE_BLIST_NODE_IS_CONTACT(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1153 buddy = purple_contact_get_priority_buddy((PurpleContact*)node);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1154 } else if(PURPLE_BLIST_NODE_IS_BUDDY(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1155 buddy = (PurpleBuddy*)node;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1156 } else {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1157 return FALSE;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1158 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1159 if(buddy)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1160 serv_get_info(buddy->account->gc, buddy->name);
16283
46f324c5465f Patch from SuperMMX, "I would like to be able to rename (alias)
Mark Doliner <markdoliner@pidgin.im>
parents: 16263
diff changeset
1161 } else if (event->keyval == GDK_F2) {
46f324c5465f Patch from SuperMMX, "I would like to be able to rename (alias)
Mark Doliner <markdoliner@pidgin.im>
parents: 16263
diff changeset
1162 gtk_blist_menu_alias_cb(tv, node);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1163 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1164
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1165 return FALSE;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1166 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1167
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1168 static GtkWidget *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1169 create_group_menu (PurpleBlistNode *node, PurpleGroup *g)
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1170 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1171 GtkWidget *menu;
11988
7ed733ed806b [gaim-migrate @ 14281]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11986
diff changeset
1172 GtkWidget *item;
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1173
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1174 menu = gtk_menu_new();
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1175 pidgin_new_item_from_stock(menu, _("Add a _Buddy"), GTK_STOCK_ADD,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1176 G_CALLBACK(pidgin_blist_add_buddy_cb), node, 0, 0, NULL);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1177 item = pidgin_new_item_from_stock(menu, _("Add a C_hat"), GTK_STOCK_ADD,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1178 G_CALLBACK(pidgin_blist_add_chat_cb), node, 0, 0, NULL);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1179 gtk_widget_set_sensitive(item, pidgin_blist_joinchat_is_showable());
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1180 pidgin_new_item_from_stock(menu, _("_Delete Group"), GTK_STOCK_REMOVE,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1181 G_CALLBACK(pidgin_blist_remove_cb), node, 0, 0, NULL);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1182 pidgin_new_item_from_stock(menu, _("_Rename"), NULL,
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
1183 G_CALLBACK(gtk_blist_menu_alias_cb), node, 0, 0, NULL);
8952
b8bf830b3731 [gaim-migrate @ 9724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8945
diff changeset
1184
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1185 pidgin_append_blist_node_extended_menu(menu, node);
8952
b8bf830b3731 [gaim-migrate @ 9724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8945
diff changeset
1186
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1187 return menu;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1188 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1189
8586
c8c7a19da549 [gaim-migrate @ 9336]
Pekka Riikonen <priikone@silcnet.org>
parents: 8573
diff changeset
1190
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1191 static GtkWidget *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1192 create_chat_menu(PurpleBlistNode *node, PurpleChat *c) {
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1193 GtkWidget *menu;
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1194 gboolean autojoin;
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1195
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1196 menu = gtk_menu_new();
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1197 autojoin = (purple_blist_node_get_bool(node, "gtk-autojoin") ||
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1198 (purple_blist_node_get_string(node, "gtk-autojoin") != NULL));
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1199
15570
81e9b7d13875 stock to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15569
diff changeset
1200 pidgin_new_item_from_stock(menu, _("_Join"), PIDGIN_STOCK_CHAT,
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1201 G_CALLBACK(gtk_blist_menu_join_cb), node, 0, 0, NULL);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1202 pidgin_new_check_item(menu, _("Auto-Join"),
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1203 G_CALLBACK(gtk_blist_menu_autojoin_cb), node, autojoin);
15623
bf485c598199 toolbar/menu icons. reduce the imhtmltoolbar spacing. more gaimstock pruning
Sean Egan <seanegan@pidgin.im>
parents: 15622
diff changeset
1204 pidgin_new_item_from_stock(menu, _("View _Log"), NULL,
9917
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9869
diff changeset
1205 G_CALLBACK(gtk_blist_menu_showlog_cb), node, 0, 0, NULL);
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9019
diff changeset
1206
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1207 pidgin_append_blist_node_proto_menu(menu, c->account->gc, node);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1208 pidgin_append_blist_node_extended_menu(menu, node);
8586
c8c7a19da549 [gaim-migrate @ 9336]
Pekka Riikonen <priikone@silcnet.org>
parents: 8573
diff changeset
1209
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1210 pidgin_separator(menu);
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1211
15570
81e9b7d13875 stock to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15569
diff changeset
1212 pidgin_new_item_from_stock(menu, _("_Alias..."), PIDGIN_STOCK_ALIAS,
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1213 G_CALLBACK(gtk_blist_menu_alias_cb), node, 0, 0, NULL);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1214 pidgin_new_item_from_stock(menu, _("_Remove"), GTK_STOCK_REMOVE,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1215 G_CALLBACK(pidgin_blist_remove_cb), node, 0, 0, NULL);
8586
c8c7a19da549 [gaim-migrate @ 9336]
Pekka Riikonen <priikone@silcnet.org>
parents: 8573
diff changeset
1216
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1217 return menu;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1218 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1219
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1220 static GtkWidget *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1221 create_contact_menu (PurpleBlistNode *node)
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1222 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1223 GtkWidget *menu;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1224
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1225 menu = gtk_menu_new();
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1226
15623
bf485c598199 toolbar/menu icons. reduce the imhtmltoolbar spacing. more gaimstock pruning
Sean Egan <seanegan@pidgin.im>
parents: 15622
diff changeset
1227 pidgin_new_item_from_stock(menu, _("View _Log"), NULL,
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1228 G_CALLBACK(gtk_blist_menu_showlog_cb),
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1229 node, 0, 0, NULL);
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1230
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1231 pidgin_separator(menu);
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1232
15570
81e9b7d13875 stock to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15569
diff changeset
1233 pidgin_new_item_from_stock(menu, _("_Alias..."), PIDGIN_STOCK_ALIAS,
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1234 G_CALLBACK(gtk_blist_menu_alias_cb), node, 0, 0, NULL);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1235 pidgin_new_item_from_stock(menu, _("_Remove"), GTK_STOCK_REMOVE,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1236 G_CALLBACK(pidgin_blist_remove_cb), node, 0, 0, NULL);
10663
1a5ab09c8475 [gaim-migrate @ 12202]
Sean Egan <seanegan@pidgin.im>
parents: 10662
diff changeset
1237
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1238 pidgin_separator(menu);
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1239
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1240 pidgin_new_item_from_stock(menu, _("_Collapse"), GTK_STOCK_ZOOM_OUT,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1241 G_CALLBACK(pidgin_blist_collapse_contact_cb),
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1242 node, 0, 0, NULL);
9051
aebb592d4529 [gaim-migrate @ 9827]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9030
diff changeset
1243
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1244 pidgin_append_blist_node_extended_menu(menu, node);
9051
aebb592d4529 [gaim-migrate @ 9827]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9030
diff changeset
1245
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1246 return menu;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1247 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1248
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1249 static GtkWidget *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1250 create_buddy_menu(PurpleBlistNode *node, PurpleBuddy *b) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1251 struct _pidgin_blist_node *gtknode = (struct _pidgin_blist_node *)node->ui_data;
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1252 GtkWidget *menu;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1253 GtkWidget *menuitem;
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
1254 gboolean show_offline = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_offline_buddies");
8470
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
1255
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1256 menu = gtk_menu_new();
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1257 pidgin_blist_make_buddy_menu(menu, b, FALSE);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1258
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1259 if(PURPLE_BLIST_NODE_IS_CONTACT(node)) {
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1260 pidgin_separator(menu);
8470
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
1261
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1262 if(gtknode->contact_expanded) {
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1263 pidgin_new_item_from_stock(menu, _("_Collapse"),
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1264 GTK_STOCK_ZOOM_OUT,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1265 G_CALLBACK(pidgin_blist_collapse_contact_cb),
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1266 node, 0, 0, NULL);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1267 } else {
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
1268 pidgin_new_item_from_stock(menu, _("_Expand"),
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1269 GTK_STOCK_ZOOM_IN,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1270 G_CALLBACK(pidgin_blist_expand_contact_cb), node,
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1271 0, 0, NULL);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1272 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1273 if(node->child->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1274 PurpleBlistNode *bnode;
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1275
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1276 for(bnode = node->child; bnode; bnode = bnode->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1277 PurpleBuddy *buddy = (PurpleBuddy*)bnode;
9340
d9a87f3abbdf [gaim-migrate @ 10148]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9337
diff changeset
1278 GdkPixbuf *buf;
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1279 GtkWidget *submenu;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1280 GtkWidget *image;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1281
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1282 if(buddy == b)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1283 continue;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1284 if(!buddy->account->gc)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1285 continue;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1286 if(!show_offline && !PURPLE_BUDDY_IS_ONLINE(buddy))
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1287 continue;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1288
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1289 menuitem = gtk_image_menu_item_new_with_label(buddy->name);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1290 buf = pidgin_create_prpl_icon(buddy->account,PIDGIN_PRPL_ICON_SMALL);
9340
d9a87f3abbdf [gaim-migrate @ 10148]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9337
diff changeset
1291 image = gtk_image_new_from_pixbuf(buf);
d9a87f3abbdf [gaim-migrate @ 10148]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9337
diff changeset
1292 g_object_unref(G_OBJECT(buf));
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1293 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem),
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
1294 image);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1295 gtk_widget_show(image);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1296 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1297 gtk_widget_show(menuitem);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1298
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1299 submenu = gtk_menu_new();
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1300 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1301 gtk_widget_show(submenu);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1302
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1303 pidgin_blist_make_buddy_menu(submenu, buddy, TRUE);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1304 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1305 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1306 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1307 return menu;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1308 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1309
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1310 static gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1311 pidgin_blist_show_context_menu(PurpleBlistNode *node,
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1312 GtkMenuPositionFunc func,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1313 GtkWidget *tv,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1314 guint button,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1315 guint32 time)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1316 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1317 struct _pidgin_blist_node *gtknode;
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1318 GtkWidget *menu = NULL;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1319 gboolean handled = FALSE;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1320
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1321 gtknode = (struct _pidgin_blist_node *)node->ui_data;
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1322
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1323 /* Create a menu based on the thing we right-clicked on */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1324 if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1325 PurpleGroup *g = (PurpleGroup *)node;
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1326
8952
b8bf830b3731 [gaim-migrate @ 9724]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8945
diff changeset
1327 menu = create_group_menu(node, g);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1328 } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1329 PurpleChat *c = (PurpleChat *)node;
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1330
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1331 menu = create_chat_menu(node, c);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1332 } else if ((PURPLE_BLIST_NODE_IS_CONTACT(node)) && (gtknode->contact_expanded)) {
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1333 menu = create_contact_menu(node);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1334 } else if (PURPLE_BLIST_NODE_IS_CONTACT(node) || PURPLE_BLIST_NODE_IS_BUDDY(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1335 PurpleBuddy *b;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1336
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1337 if (PURPLE_BLIST_NODE_IS_CONTACT(node))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1338 b = purple_contact_get_priority_buddy((PurpleContact*)node);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1339 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1340 b = (PurpleBuddy *)node;
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1341
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
1342 menu = create_buddy_menu(node, b);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1343 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1344
11059
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1345 #ifdef _WIN32
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1346 /* Unhook the tooltip-timeout since we don't want a tooltip
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1347 * to appear and obscure the context menu we are about to show
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1348 This is a workaround for GTK+ bug 107320. */
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1349 if (gtkblist->timeout) {
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1350 g_source_remove(gtkblist->timeout);
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1351 gtkblist->timeout = 0;
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1352 }
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1353 #endif
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1354
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1355 /* Now display the menu */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1356 if (menu != NULL) {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1357 gtk_widget_show_all(menu);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1358 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, func, tv, button, time);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1359 handled = TRUE;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1360 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1361
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1362 return handled;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1363 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1364
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1365 static gboolean gtk_blist_button_press_cb(GtkWidget *tv, GdkEventButton *event, gpointer user_data)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1366 {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1367 GtkTreePath *path;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1368 PurpleBlistNode *node;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1369 GValue val;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1370 GtkTreeIter iter;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1371 GtkTreeSelection *sel;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1372 PurplePlugin *prpl = NULL;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1373 PurplePluginProtocolInfo *prpl_info = NULL;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1374 struct _pidgin_blist_node *gtknode;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1375 gboolean handled = FALSE;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1376
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1377 /* Here we figure out which node was clicked */
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1378 if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), event->x, event->y, &path, NULL, NULL, NULL))
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1379 return FALSE;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1380 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1381 val.g_type = 0;
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1382 gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1383 node = g_value_get_pointer(&val);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1384 gtknode = (struct _pidgin_blist_node *)node->ui_data;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1385
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1386 /* Right click draws a context menu */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1387 if ((event->button == 3) && (event->type == GDK_BUTTON_PRESS)) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1388 handled = pidgin_blist_show_context_menu(node, NULL, tv, 3, event->time);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1389
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1390 /* CTRL+middle click expands or collapse a contact */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1391 } else if ((event->button == 2) && (event->type == GDK_BUTTON_PRESS) &&
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1392 (event->state & GDK_CONTROL_MASK) && (PURPLE_BLIST_NODE_IS_CONTACT(node))) {
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1393 if (gtknode->contact_expanded)
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1394 pidgin_blist_collapse_contact_cb(NULL, node);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1395 else
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1396 pidgin_blist_expand_contact_cb(NULL, node);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1397 handled = TRUE;
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1398
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1399 /* Double middle click gets info */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1400 } else if ((event->button == 2) && (event->type == GDK_2BUTTON_PRESS) &&
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1401 ((PURPLE_BLIST_NODE_IS_CONTACT(node)) || (PURPLE_BLIST_NODE_IS_BUDDY(node)))) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1402 PurpleBuddy *b;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1403 if(PURPLE_BLIST_NODE_IS_CONTACT(node))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1404 b = purple_contact_get_priority_buddy((PurpleContact*)node);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1405 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1406 b = (PurpleBuddy *)node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1407
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1408 prpl = purple_find_prpl(purple_account_get_protocol_id(b->account));
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1409 if (prpl != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1410 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1411
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1412 if (prpl && prpl_info->get_info)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1413 serv_get_info(b->account->gc, b->name);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1414 handled = TRUE;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1415 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1416
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1417 #if (1)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1418 /*
10814
7e17cb56b019 [gaim-migrate @ 12468]
Luke Schierer <lschiere@pidgin.im>
parents: 10780
diff changeset
1419 * This code only exists because GTK+ doesn't work. If we return
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1420 * FALSE here, as would be normal the event propoagates down and
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1421 * somehow gets interpreted as the start of a drag event.
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1422 *
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1423 * Um, isn't it _normal_ to return TRUE here? Since the event
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1424 * was handled? --Mark
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1425 */
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1426 if(handled) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1427 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tv));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1428 gtk_tree_selection_select_path(sel, path);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1429 gtk_tree_path_free(path);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1430 return TRUE;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1431 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1432 #endif
7753
f3f9394afe6d [gaim-migrate @ 8398]
Ethan Blanton <elb@pidgin.im>
parents: 7737
diff changeset
1433 gtk_tree_path_free(path);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1434
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1435 return FALSE;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1436 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1437
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1438 static gboolean
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1439 pidgin_blist_popup_menu_cb(GtkWidget *tv, void *user_data)
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1440 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1441 PurpleBlistNode *node;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1442 GValue val;
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1443 GtkTreeIter iter;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1444 GtkTreeSelection *sel;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1445 gboolean handled = FALSE;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1446
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1447 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tv));
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1448 if (!gtk_tree_selection_get_selected(sel, NULL, &iter))
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1449 return FALSE;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1450
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1451 val.g_type = 0;
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1452 gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel),
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1453 &iter, NODE_COLUMN, &val);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1454 node = g_value_get_pointer(&val);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1455
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1456 /* Shift+F10 draws a context menu */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1457 handled = pidgin_blist_show_context_menu(node, pidgin_treeview_popup_menu_position_func, tv, 0, GDK_CURRENT_TIME);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1458
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1459 return handled;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1460 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1461
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1462 static void pidgin_blist_buddy_details_cb(gpointer data, guint action, GtkWidget *item)
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1463 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1464 pidgin_set_cursor(gtkblist->window, GDK_WATCH);
12569
5ed47be3e4c3 [gaim-migrate @ 14888]
Richard Laager <rlaager@pidgin.im>
parents: 12530
diff changeset
1465
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
1466 purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons",
11796
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
1467 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(item)));
12569
5ed47be3e4c3 [gaim-migrate @ 14888]
Richard Laager <rlaager@pidgin.im>
parents: 12530
diff changeset
1468
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1469 pidgin_clear_cursor(gtkblist->window);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1470 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1471
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1472 static void pidgin_blist_show_idle_time_cb(gpointer data, guint action, GtkWidget *item)
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1473 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1474 pidgin_set_cursor(gtkblist->window, GDK_WATCH);
12656
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
1475
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
1476 purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/blist/show_idle_time",
12656
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
1477 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(item)));
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
1478
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1479 pidgin_clear_cursor(gtkblist->window);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1480 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1481
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1482 static void pidgin_blist_show_empty_groups_cb(gpointer data, guint action, GtkWidget *item)
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1483 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1484 pidgin_set_cursor(gtkblist->window, GDK_WATCH);
12569
5ed47be3e4c3 [gaim-migrate @ 14888]
Richard Laager <rlaager@pidgin.im>
parents: 12530
diff changeset
1485
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
1486 purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/blist/show_empty_groups",
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1487 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(item)));
12569
5ed47be3e4c3 [gaim-migrate @ 14888]
Richard Laager <rlaager@pidgin.im>
parents: 12530
diff changeset
1488
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1489 pidgin_clear_cursor(gtkblist->window);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1490 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1491
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1492 static void pidgin_blist_edit_mode_cb(gpointer callback_data, guint callback_action,
12569
5ed47be3e4c3 [gaim-migrate @ 14888]
Richard Laager <rlaager@pidgin.im>
parents: 12530
diff changeset
1493 GtkWidget *checkitem)
5ed47be3e4c3 [gaim-migrate @ 14888]
Richard Laager <rlaager@pidgin.im>
parents: 12530
diff changeset
1494 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1495 pidgin_set_cursor(gtkblist->window, GDK_WATCH);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1496
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
1497 purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/blist/show_offline_buddies",
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1498 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(checkitem)));
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1499
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1500 pidgin_clear_cursor(gtkblist->window);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1501 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1502
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1503 static void pidgin_blist_mute_sounds_cb(gpointer data, guint action, GtkWidget *item)
10074
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1504 {
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
1505 purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/sound/mute", GTK_CHECK_MENU_ITEM(item)->active);
10074
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1506 }
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1507
12816
5f93e09fa9a6 [gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents: 12799
diff changeset
1508 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1509 pidgin_blist_mute_pref_cb(const char *name, PurplePrefType type,
12816
5f93e09fa9a6 [gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents: 12799
diff changeset
1510 gconstpointer value, gpointer data)
10074
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1511 {
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1512 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item(gtkblist->ift,
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1513 N_("/Tools/Mute Sounds"))), (gboolean)GPOINTER_TO_INT(value));
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1514 }
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1515
12816
5f93e09fa9a6 [gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents: 12799
diff changeset
1516 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1517 pidgin_blist_sound_method_pref_cb(const char *name, PurplePrefType type,
12816
5f93e09fa9a6 [gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents: 12799
diff changeset
1518 gconstpointer value, gpointer data)
10074
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1519 {
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1520 gboolean sensitive = TRUE;
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1521
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1522 if(!strcmp(value, "none"))
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1523 sensitive = FALSE;
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1524
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1525 gtk_widget_set_sensitive(gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Mute Sounds")), sensitive);
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1526 }
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
1527
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1528 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1529 add_buddies_from_vcard(const char *prpl_id, PurpleGroup *group, GList *list,
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1530 const char *alias)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1531 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1532 GList *l;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1533 PurpleAccount *account = NULL;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1534 PurpleConnection *gc;
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1535
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1536 if (list == NULL)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1537 return;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1538
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1539 for (l = purple_connections_get_all(); l != NULL; l = l->next)
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1540 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1541 gc = (PurpleConnection *)l->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1542 account = purple_connection_get_account(gc);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1543
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1544 if (!strcmp(purple_account_get_protocol_id(account), prpl_id))
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1545 break;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1546
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1547 account = NULL;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1548 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1549
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1550 if (account != NULL)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1551 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1552 for (l = list; l != NULL; l = l->next)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1553 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1554 purple_blist_request_add_buddy(account, l->data,
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1555 (group ? group->name : NULL),
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1556 alias);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1557 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1558 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1559
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1560 g_list_foreach(list, (GFunc)g_free, NULL);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1561 g_list_free(list);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1562 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1563
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1564 static gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1565 parse_vcard(const char *vcard, PurpleGroup *group)
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1566 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1567 char *temp_vcard;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1568 char *s, *c;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1569 char *alias = NULL;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1570 GList *aims = NULL;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1571 GList *icqs = NULL;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1572 GList *yahoos = NULL;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1573 GList *msns = NULL;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1574 GList *jabbers = NULL;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1575
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1576 s = temp_vcard = g_strdup(vcard);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1577
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1578 while (*s != '\0' && strncmp(s, "END:vCard", strlen("END:vCard")))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1579 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1580 char *field, *value;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1581
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1582 field = s;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1583
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1584 /* Grab the field */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1585 while (*s != '\r' && *s != '\n' && *s != '\0' && *s != ':')
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1586 s++;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1587
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1588 if (*s == '\r') s++;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1589 if (*s == '\n')
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1590 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1591 s++;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1592 continue;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1593 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1594
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1595 if (*s != '\0') *s++ = '\0';
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1596
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1597 if ((c = strchr(field, ';')) != NULL)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1598 *c = '\0';
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1599
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1600 /* Proceed to the end of the line */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1601 value = s;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1602
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1603 while (*s != '\r' && *s != '\n' && *s != '\0')
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1604 s++;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1605
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1606 if (*s == '\r') *s++ = '\0';
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1607 if (*s == '\n') *s++ = '\0';
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1608
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1609 /* We only want to worry about a few fields here. */
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1610 if (!strcmp(field, "FN"))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1611 alias = g_strdup(value);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1612 else if (!strcmp(field, "X-AIM") || !strcmp(field, "X-ICQ") ||
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1613 !strcmp(field, "X-YAHOO") || !strcmp(field, "X-MSN") ||
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1614 !strcmp(field, "X-JABBER"))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1615 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1616 char **values = g_strsplit(value, ":", 0);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1617 char **im;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1618
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1619 for (im = values; *im != NULL; im++)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1620 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1621 if (!strcmp(field, "X-AIM"))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1622 aims = g_list_append(aims, g_strdup(*im));
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1623 else if (!strcmp(field, "X-ICQ"))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1624 icqs = g_list_append(icqs, g_strdup(*im));
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1625 else if (!strcmp(field, "X-YAHOO"))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1626 yahoos = g_list_append(yahoos, g_strdup(*im));
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1627 else if (!strcmp(field, "X-MSN"))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1628 msns = g_list_append(msns, g_strdup(*im));
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1629 else if (!strcmp(field, "X-JABBER"))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1630 jabbers = g_list_append(jabbers, g_strdup(*im));
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1631 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1632
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1633 g_strfreev(values);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1634 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1635 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1636
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1637 g_free(temp_vcard);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1638
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1639 if (aims == NULL && icqs == NULL && yahoos == NULL &&
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1640 msns == NULL && jabbers == NULL)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1641 {
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
1642 g_free(alias);
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1643
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1644 return FALSE;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1645 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1646
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1647 add_buddies_from_vcard("prpl-oscar", group, aims, alias);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1648 add_buddies_from_vcard("prpl-oscar", group, icqs, alias);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1649 add_buddies_from_vcard("prpl-yahoo", group, yahoos, alias);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1650 add_buddies_from_vcard("prpl-msn", group, msns, alias);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1651 add_buddies_from_vcard("prpl-jabber", group, jabbers, alias);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1652
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
1653 g_free(alias);
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1654
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1655 return TRUE;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1656 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1657
11059
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1658 #ifdef _WIN32
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1659 static void pidgin_blist_drag_begin(GtkWidget *widget,
11059
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1660 GdkDragContext *drag_context, gpointer user_data)
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1661 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1662 pidgin_blist_tooltip_destroy();
11059
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1663
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1664
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1665 /* Unhook the tooltip-timeout since we don't want a tooltip
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1666 * to appear and obscure the dragging operation.
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1667 * This is a workaround for GTK+ bug 107320. */
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1668 if (gtkblist->timeout) {
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1669 g_source_remove(gtkblist->timeout);
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1670 gtkblist->timeout = 0;
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1671 }
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1672 }
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1673 #endif
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1674
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1675 static void pidgin_blist_drag_data_get_cb(GtkWidget *widget,
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
1676 GdkDragContext *dc,
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
1677 GtkSelectionData *data,
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
1678 guint info,
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
1679 guint time,
11059
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1680 gpointer null)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1681 {
11059
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
1682
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1683 if (data->target == gdk_atom_intern("PURPLE_BLIST_NODE", FALSE))
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1684 {
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1685 GtkTreeRowReference *ref = g_object_get_data(G_OBJECT(dc), "gtk-tree-view-source-row");
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1686 GtkTreePath *sourcerow = gtk_tree_row_reference_get_path(ref);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1687 GtkTreeIter iter;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1688 PurpleBlistNode *node = NULL;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1689 GValue val;
5273
0d7e92ea8b97 [gaim-migrate @ 5645]
Nathan Walp <nwalp@pidgin.im>
parents: 5263
diff changeset
1690 if(!sourcerow)
0d7e92ea8b97 [gaim-migrate @ 5645]
Nathan Walp <nwalp@pidgin.im>
parents: 5263
diff changeset
1691 return;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1692 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, sourcerow);
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1693 val.g_type = 0;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1694 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1695 node = g_value_get_pointer(&val);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1696 gtk_selection_data_set (data,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1697 gdk_atom_intern ("PURPLE_BLIST_NODE", FALSE),
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1698 8, /* bits */
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1699 (void*)&node,
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1700 sizeof (node));
5273
0d7e92ea8b97 [gaim-migrate @ 5645]
Nathan Walp <nwalp@pidgin.im>
parents: 5263
diff changeset
1701
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1702 gtk_tree_path_free(sourcerow);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1703 }
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1704 else if (data->target == gdk_atom_intern("application/x-im-contact", FALSE))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
1705 {
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1706 GtkTreeRowReference *ref;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1707 GtkTreePath *sourcerow;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1708 GtkTreeIter iter;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1709 PurpleBlistNode *node = NULL;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1710 PurpleBuddy *buddy;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1711 PurpleConnection *gc;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1712 GValue val;
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1713 GString *str;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1714 const char *protocol;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1715
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1716 ref = g_object_get_data(G_OBJECT(dc), "gtk-tree-view-source-row");
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1717 sourcerow = gtk_tree_row_reference_get_path(ref);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1718
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1719 if (!sourcerow)
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1720 return;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1721
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1722 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter,
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1723 sourcerow);
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1724 val.g_type = 0;
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1725 gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), &iter,
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1726 NODE_COLUMN, &val);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1727
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1728 node = g_value_get_pointer(&val);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1729
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1730 if (PURPLE_BLIST_NODE_IS_CONTACT(node))
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1731 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1732 buddy = purple_contact_get_priority_buddy((PurpleContact *)node);
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1733 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1734 else if (!PURPLE_BLIST_NODE_IS_BUDDY(node))
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1735 {
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1736 gtk_tree_path_free(sourcerow);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1737 return;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1738 }
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1739 else
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1740 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1741 buddy = (PurpleBuddy *)node;
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1742 }
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1743
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1744 gc = purple_account_get_connection(buddy->account);
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1745
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1746 if (gc == NULL)
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1747 {
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1748 gtk_tree_path_free(sourcerow);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1749 return;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1750 }
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1751
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1752 protocol =
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1753 PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->list_icon(buddy->account,
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1754 buddy);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1755
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1756 str = g_string_new(NULL);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1757 g_string_printf(str,
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1758 "MIME-Version: 1.0\r\n"
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1759 "Content-Type: application/x-im-contact\r\n"
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1760 "X-IM-Protocol: %s\r\n"
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1761 "X-IM-Username: %s\r\n",
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1762 protocol,
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1763 buddy->name);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1764
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1765 if (buddy->alias != NULL)
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1766 {
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1767 g_string_append_printf(str,
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1768 "X-IM-Alias: %s\r\n",
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1769 buddy->alias);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1770 }
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1771
14239
661d2bb9eb86 [gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents: 14230
diff changeset
1772 g_string_append(str, "\r\n");
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1773
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1774 gtk_selection_data_set(data,
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1775 gdk_atom_intern("application/x-im-contact", FALSE),
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1776 8, /* bits */
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
1777 (const guchar *)str->str,
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
1778 strlen(str->str) + 1);
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
1779
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
1780 g_string_free(str, TRUE);
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1781 gtk_tree_path_free(sourcerow);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1782 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1783 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1784
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1785 static void pidgin_blist_drag_data_rcv_cb(GtkWidget *widget, GdkDragContext *dc, guint x, guint y,
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1786 GtkSelectionData *sd, guint info, guint t)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1787 {
13834
28f6ad6dc0f2 [gaim-migrate @ 16281]
Ka-Hing Cheung <khc@pidgin.im>
parents: 13821
diff changeset
1788 if (gtkblist->drag_timeout) {
28f6ad6dc0f2 [gaim-migrate @ 16281]
Ka-Hing Cheung <khc@pidgin.im>
parents: 13821
diff changeset
1789 g_source_remove(gtkblist->drag_timeout);
28f6ad6dc0f2 [gaim-migrate @ 16281]
Ka-Hing Cheung <khc@pidgin.im>
parents: 13821
diff changeset
1790 gtkblist->drag_timeout = 0;
28f6ad6dc0f2 [gaim-migrate @ 16281]
Ka-Hing Cheung <khc@pidgin.im>
parents: 13821
diff changeset
1791 }
28f6ad6dc0f2 [gaim-migrate @ 16281]
Ka-Hing Cheung <khc@pidgin.im>
parents: 13821
diff changeset
1792
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1793 if (sd->target == gdk_atom_intern("PURPLE_BLIST_NODE", FALSE) && sd->data) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1794 PurpleBlistNode *n = NULL;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1795 GtkTreePath *path = NULL;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1796 GtkTreeViewDropPosition position;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1797 memcpy(&n, sd->data, sizeof(n));
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1798 if(gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(widget), x, y, &path, &position)) {
8470
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
1799 /* if we're here, I think it means the drop is ok */
7642
4e1735a499f5 [gaim-migrate @ 8285]
Nathan Walp <nwalp@pidgin.im>
parents: 7636
diff changeset
1800 GtkTreeIter iter;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1801 PurpleBlistNode *node;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1802 GValue val;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1803 struct _pidgin_blist_node *gtknode;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1804
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1805 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel),
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1806 &iter, path);
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1807 val.g_type = 0;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1808 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel),
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1809 &iter, NODE_COLUMN, &val);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1810 node = g_value_get_pointer(&val);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1811 gtknode = node->ui_data;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1812
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1813 if (PURPLE_BLIST_NODE_IS_CONTACT(n)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1814 PurpleContact *c = (PurpleContact*)n;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1815 if (PURPLE_BLIST_NODE_IS_CONTACT(node) && gtknode->contact_expanded) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1816 purple_blist_merge_contact(c, node);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1817 } else if (PURPLE_BLIST_NODE_IS_CONTACT(node) ||
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1818 PURPLE_BLIST_NODE_IS_CHAT(node)) {
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1819 switch(position) {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1820 case GTK_TREE_VIEW_DROP_AFTER:
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1821 case GTK_TREE_VIEW_DROP_INTO_OR_AFTER:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1822 purple_blist_add_contact(c, (PurpleGroup*)node->parent,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1823 node);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1824 break;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1825 case GTK_TREE_VIEW_DROP_BEFORE:
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1826 case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1827 purple_blist_add_contact(c, (PurpleGroup*)node->parent,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1828 node->prev);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1829 break;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1830 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1831 } else if(PURPLE_BLIST_NODE_IS_GROUP(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1832 purple_blist_add_contact(c, (PurpleGroup*)node, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1833 } else if(PURPLE_BLIST_NODE_IS_BUDDY(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1834 purple_blist_merge_contact(c, node);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1835 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1836 } else if (PURPLE_BLIST_NODE_IS_BUDDY(n)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1837 PurpleBuddy *b = (PurpleBuddy*)n;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1838 if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1839 switch(position) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1840 case GTK_TREE_VIEW_DROP_AFTER:
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1841 case GTK_TREE_VIEW_DROP_INTO_OR_AFTER:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1842 purple_blist_add_buddy(b, (PurpleContact*)node->parent,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1843 (PurpleGroup*)node->parent->parent, node);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1844 break;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1845 case GTK_TREE_VIEW_DROP_BEFORE:
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1846 case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1847 purple_blist_add_buddy(b, (PurpleContact*)node->parent,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1848 (PurpleGroup*)node->parent->parent,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1849 node->prev);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1850 break;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1851 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1852 } else if(PURPLE_BLIST_NODE_IS_CHAT(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1853 purple_blist_add_buddy(b, NULL, (PurpleGroup*)node->parent,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1854 NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1855 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1856 purple_blist_add_buddy(b, NULL, (PurpleGroup*)node, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1857 } else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1858 if(gtknode->contact_expanded) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1859 switch(position) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1860 case GTK_TREE_VIEW_DROP_INTO_OR_AFTER:
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1861 case GTK_TREE_VIEW_DROP_AFTER:
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1862 case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1863 purple_blist_add_buddy(b, (PurpleContact*)node,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1864 (PurpleGroup*)node->parent, NULL);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1865 break;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1866 case GTK_TREE_VIEW_DROP_BEFORE:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1867 purple_blist_add_buddy(b, NULL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1868 (PurpleGroup*)node->parent, node->prev);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1869 break;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1870 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1871 } else {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1872 switch(position) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1873 case GTK_TREE_VIEW_DROP_INTO_OR_AFTER:
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1874 case GTK_TREE_VIEW_DROP_AFTER:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1875 purple_blist_add_buddy(b, NULL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1876 (PurpleGroup*)node->parent, NULL);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1877 break;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1878 case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE:
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1879 case GTK_TREE_VIEW_DROP_BEFORE:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1880 purple_blist_add_buddy(b, NULL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1881 (PurpleGroup*)node->parent, node->prev);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1882 break;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1883 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1884 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1885 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1886 } else if (PURPLE_BLIST_NODE_IS_CHAT(n)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1887 PurpleChat *chat = (PurpleChat *)n;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1888 if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1889 switch(position) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1890 case GTK_TREE_VIEW_DROP_AFTER:
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1891 case GTK_TREE_VIEW_DROP_INTO_OR_AFTER:
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1892 case GTK_TREE_VIEW_DROP_BEFORE:
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1893 case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1894 purple_blist_add_chat(chat,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1895 (PurpleGroup*)node->parent->parent,
13543
25f9c386270c [gaim-migrate @ 15919]
Daniel Atallah <datallah@pidgin.im>
parents: 13541
diff changeset
1896 node->parent);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1897 break;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1898 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1899 } else if(PURPLE_BLIST_NODE_IS_CONTACT(node) ||
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1900 PURPLE_BLIST_NODE_IS_CHAT(node)) {
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1901 switch(position) {
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1902 case GTK_TREE_VIEW_DROP_AFTER:
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1903 case GTK_TREE_VIEW_DROP_INTO_OR_AFTER:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1904 purple_blist_add_chat(chat, (PurpleGroup*)node->parent, node);
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1905 break;
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1906 case GTK_TREE_VIEW_DROP_BEFORE:
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1907 case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1908 purple_blist_add_chat(chat, (PurpleGroup*)node->parent, node->prev);
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1909 break;
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1910 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1911 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1912 purple_blist_add_chat(chat, (PurpleGroup*)node, NULL);
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
1913 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1914 } else if (PURPLE_BLIST_NODE_IS_GROUP(n)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1915 PurpleGroup *g = (PurpleGroup*)n;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1916 if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1917 switch (position) {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1918 case GTK_TREE_VIEW_DROP_INTO_OR_AFTER:
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1919 case GTK_TREE_VIEW_DROP_AFTER:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1920 purple_blist_add_group(g, node);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1921 break;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1922 case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE:
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1923 case GTK_TREE_VIEW_DROP_BEFORE:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1924 purple_blist_add_group(g, node->prev);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1925 break;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1926 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1927 } else if(PURPLE_BLIST_NODE_IS_BUDDY(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1928 purple_blist_add_group(g, node->parent->parent);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1929 } else if(PURPLE_BLIST_NODE_IS_CONTACT(node) ||
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1930 PURPLE_BLIST_NODE_IS_CHAT(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1931 purple_blist_add_group(g, node->parent);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1932 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1933 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1934
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1935 gtk_tree_path_free(path);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
1936 gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1937 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1938 }
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1939 else if (sd->target == gdk_atom_intern("application/x-im-contact",
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1940 FALSE) && sd->data)
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1941 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1942 PurpleGroup *group = NULL;
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1943 GtkTreePath *path = NULL;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1944 GtkTreeViewDropPosition position;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1945 PurpleAccount *account;
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1946 char *protocol = NULL;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1947 char *username = NULL;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1948 char *alias = NULL;
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1949
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1950 if (gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(widget),
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1951 x, y, &path, &position))
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1952 {
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1953 GtkTreeIter iter;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1954 PurpleBlistNode *node;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1955 GValue val;
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1956
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1957 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel),
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1958 &iter, path);
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
1959 val.g_type = 0;
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1960 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel),
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1961 &iter, NODE_COLUMN, &val);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1962 node = g_value_get_pointer(&val);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1963
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1964 if (PURPLE_BLIST_NODE_IS_BUDDY(node))
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1965 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1966 group = (PurpleGroup *)node->parent->parent;
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1967 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1968 else if (PURPLE_BLIST_NODE_IS_CHAT(node) ||
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1969 PURPLE_BLIST_NODE_IS_CONTACT(node))
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1970 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1971 group = (PurpleGroup *)node->parent;
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1972 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1973 else if (PURPLE_BLIST_NODE_IS_GROUP(node))
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1974 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1975 group = (PurpleGroup *)node;
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1976 }
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1977 }
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1978
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
1979 if (pidgin_parse_x_im_contact((const char *)sd->data, FALSE, &account,
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7706
diff changeset
1980 &protocol, &username, &alias))
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1981 {
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1982 if (account == NULL)
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1983 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1984 purple_notify_error(NULL, NULL,
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1985 _("You are not currently signed on with an account that "
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1986 "can add that buddy."), NULL);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1987 }
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1988 else
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1989 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1990 purple_blist_request_add_buddy(account, username,
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1991 (group ? group->name : NULL),
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1992 alias);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1993 }
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1994 }
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1995
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
1996 g_free(username);
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
1997 g_free(protocol);
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
1998 g_free(alias);
7706
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
1999
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
2000 if (path != NULL)
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
2001 gtk_tree_path_free(path);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
2002
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
2003 gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t);
e5e87715a42c [gaim-migrate @ 8351]
Sean Egan <seanegan@pidgin.im>
parents: 7693
diff changeset
2004 }
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2005 else if (sd->target == gdk_atom_intern("text/x-vcard", FALSE) && sd->data)
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2006 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2007 gboolean result;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2008 PurpleGroup *group = NULL;
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2009 GtkTreePath *path = NULL;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2010 GtkTreeViewDropPosition position;
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2011
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2012 if (gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(widget),
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2013 x, y, &path, &position))
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2014 {
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2015 GtkTreeIter iter;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2016 PurpleBlistNode *node;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2017 GValue val;
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2018
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2019 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel),
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2020 &iter, path);
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2021 val.g_type = 0;
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2022 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel),
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2023 &iter, NODE_COLUMN, &val);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2024 node = g_value_get_pointer(&val);
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2025
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2026 if (PURPLE_BLIST_NODE_IS_BUDDY(node))
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2027 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2028 group = (PurpleGroup *)node->parent->parent;
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2029 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2030 else if (PURPLE_BLIST_NODE_IS_CHAT(node) ||
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2031 PURPLE_BLIST_NODE_IS_CONTACT(node))
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2032 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2033 group = (PurpleGroup *)node->parent;
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2034 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2035 else if (PURPLE_BLIST_NODE_IS_GROUP(node))
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2036 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2037 group = (PurpleGroup *)node;
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2038 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2039 }
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2040
11137
cf40226ddff7 [gaim-migrate @ 13201]
Mark Doliner <markdoliner@pidgin.im>
parents: 11134
diff changeset
2041 result = parse_vcard((const gchar *)sd->data, group);
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2042
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2043 gtk_drag_finish(dc, result, (dc->action == GDK_ACTION_MOVE), t);
9525
28a430d517db [gaim-migrate @ 10352]
Sean Egan <seanegan@pidgin.im>
parents: 9498
diff changeset
2044 } else if (sd->target == gdk_atom_intern("text/uri-list", FALSE) && sd->data) {
9495
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2045 GtkTreePath *path = NULL;
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2046 GtkTreeViewDropPosition position;
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2047
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2048 if (gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(widget),
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
2049 x, y, &path, &position))
9495
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2050 {
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2051 GtkTreeIter iter;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2052 PurpleBlistNode *node;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2053 GValue val;
10382
32e07712e224 [gaim-migrate @ 11608]
Luke Schierer <lschiere@pidgin.im>
parents: 10357
diff changeset
2054
9495
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2055 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel),
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2056 &iter, path);
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2057 val.g_type = 0;
9495
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2058 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel),
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2059 &iter, NODE_COLUMN, &val);
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2060 node = g_value_get_pointer(&val);
10382
32e07712e224 [gaim-migrate @ 11608]
Luke Schierer <lschiere@pidgin.im>
parents: 10357
diff changeset
2061
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2062 if (PURPLE_BLIST_NODE_IS_BUDDY(node) || PURPLE_BLIST_NODE_IS_CONTACT(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2063 PurpleBuddy *b = PURPLE_BLIST_NODE_IS_BUDDY(node) ? (PurpleBuddy*)node : purple_contact_get_priority_buddy((PurpleContact*)node);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
2064 pidgin_dnd_file_manage(sd, b->account, b->name);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10222
diff changeset
2065 gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10222
diff changeset
2066 } else {
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10222
diff changeset
2067 gtk_drag_finish(dc, FALSE, FALSE, t);
9495
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
2068 }
10382
32e07712e224 [gaim-migrate @ 11608]
Luke Schierer <lschiere@pidgin.im>
parents: 10357
diff changeset
2069 }
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
2070 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2071 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2072
16150
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2073 static void
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2074 roundify(GdkPixbuf *pixbuf) {
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2075 int width, height, rowstride;
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2076 guchar *pixels;
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2077
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2078 if (!gdk_pixbuf_get_has_alpha(pixbuf))
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2079 return;
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2080
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2081 width = gdk_pixbuf_get_width(pixbuf);
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2082 height = gdk_pixbuf_get_height(pixbuf);
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2083 rowstride = gdk_pixbuf_get_rowstride(pixbuf);
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2084 pixels = gdk_pixbuf_get_pixels(pixbuf);
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2085
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2086 if (width < 6 || height < 6)
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2087 return;
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2088
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2089 /* Top left */
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2090 pixels[3] = 0;
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2091 pixels[7] = 0x80;
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2092 pixels[11] = 0xC0;
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2093 pixels[rowstride + 3] = 0x80;
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2094 pixels[rowstride * 2 + 3] = 0xC0;
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2095
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2096 /* Top right */
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2097 pixels[width * 4 - 1] = 0;
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2098 pixels[width * 4 - 5] = 0x80;
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2099 pixels[width * 4 - 9] = 0xC0;
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2100 pixels[rowstride + (width * 4) - 1] = 0x80;
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2101 pixels[(2 * rowstride) + (width * 4) - 1] = 0xC0;
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2102
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2103 /* Bottom left */
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2104 pixels[(height - 1) * rowstride + 3] = 0;
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2105 pixels[(height - 1) * rowstride + 7] = 0x80;
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2106 pixels[(height - 1) * rowstride + 11] = 0xC0;
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2107 pixels[(height - 2) * rowstride + 3] = 0x80;
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2108 pixels[(height - 3) * rowstride + 3] = 0xC0;
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2109
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2110 /* Bottom right */
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2111 pixels[height * rowstride - 1] = 0;
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2112 pixels[(height - 1) * rowstride - 1] = 0x80;
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2113 pixels[(height - 2) * rowstride - 1] = 0xC0;
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2114 pixels[height * rowstride - 5] = 0x80;
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2115 pixels[height * rowstride - 9] = 0xC0;
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2116 }
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2117
15552
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2118 /* Altered from do_colorshift in gnome-panel */
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2119 static void
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2120 do_alphashift (GdkPixbuf *dest, GdkPixbuf *src, int shift)
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2121 {
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2122 gint i, j;
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2123 gint width, height, has_alpha, srcrowstride, destrowstride;
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2124 guchar *target_pixels;
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2125 guchar *original_pixels;
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2126 guchar *pixsrc;
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2127 guchar *pixdest;
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2128 int val;
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2129 guchar a;
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2130
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2131 has_alpha = gdk_pixbuf_get_has_alpha (src);
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2132 if (!has_alpha)
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2133 return;
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2134
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2135 width = gdk_pixbuf_get_width (src);
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2136 height = gdk_pixbuf_get_height (src);
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2137 srcrowstride = gdk_pixbuf_get_rowstride (src);
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2138 destrowstride = gdk_pixbuf_get_rowstride (dest);
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2139 target_pixels = gdk_pixbuf_get_pixels (dest);
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2140 original_pixels = gdk_pixbuf_get_pixels (src);
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2141
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2142 for (i = 0; i < height; i++) {
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2143 pixdest = target_pixels + i*destrowstride;
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2144 pixsrc = original_pixels + i*srcrowstride;
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2145 for (j = 0; j < width; j++) {
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2146 *(pixdest++) = *(pixsrc++);
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2147 *(pixdest++) = *(pixsrc++);
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2148 *(pixdest++) = *(pixsrc++);
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2149 a = *(pixsrc++);
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2150 val = a - shift;
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2151 *(pixdest++) = CLAMP(val, 0, 255);
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2152 }
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2153 }
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2154 }
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2155
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
2156
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2157 static GdkPixbuf *pidgin_blist_get_buddy_icon(PurpleBlistNode *node,
16437
7ff7c3405ea2 Rework the buddy icon subsystem to use the imgstore subsystem, and modify the
Richard Laager <rlaager@pidgin.im>
parents: 16357
diff changeset
2158 gboolean scaled, gboolean greyed)
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2159 {
10483
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10482
diff changeset
2160 GdkPixbuf *buf, *ret = NULL;
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2161 GdkPixbufLoader *loader;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2162 PurpleBuddyIcon *icon;
14914
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2163 const guchar *data = NULL;
11137
cf40226ddff7 [gaim-migrate @ 13201]
Mark Doliner <markdoliner@pidgin.im>
parents: 11134
diff changeset
2164 gsize len;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2165 PurpleBuddy *buddy = NULL;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2166 PurpleChat *chat = NULL;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2167 PurpleAccount *account = NULL;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2168 PurplePluginProtocolInfo *prpl_info = NULL;
16437
7ff7c3405ea2 Rework the buddy icon subsystem to use the imgstore subsystem, and modify the
Richard Laager <rlaager@pidgin.im>
parents: 16357
diff changeset
2169 PurpleStoredImage *custom_img;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2170
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2171 if(PURPLE_BLIST_NODE_IS_CONTACT(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2172 buddy = purple_contact_get_priority_buddy((PurpleContact*)node);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2173 } else if(PURPLE_BLIST_NODE_IS_BUDDY(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2174 buddy = (PurpleBuddy*)node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2175 } else if(PURPLE_BLIST_NODE_IS_CHAT(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2176 chat = (PurpleChat*)node;
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2177 } else {
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2178 return NULL;
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2179 }
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2180
15490
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2181 if(buddy != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2182 account = purple_buddy_get_account(buddy);
15490
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2183 else if(chat != NULL)
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2184 account = chat->account;
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2185
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2186 if(account && account->gc)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2187 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(account->gc->prpl);
15490
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2188
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2189 #if 0
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
2190 if (!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"))
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2191 return NULL;
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2192 #endif
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2193
16437
7ff7c3405ea2 Rework the buddy icon subsystem to use the imgstore subsystem, and modify the
Richard Laager <rlaager@pidgin.im>
parents: 16357
diff changeset
2194 custom_img = purple_buddy_icons_find_custom_icon(purple_buddy_get_contact(buddy));
7ff7c3405ea2 Rework the buddy icon subsystem to use the imgstore subsystem, and modify the
Richard Laager <rlaager@pidgin.im>
parents: 16357
diff changeset
2195 if (custom_img)
7ff7c3405ea2 Rework the buddy icon subsystem to use the imgstore subsystem, and modify the
Richard Laager <rlaager@pidgin.im>
parents: 16357
diff changeset
2196 {
7ff7c3405ea2 Rework the buddy icon subsystem to use the imgstore subsystem, and modify the
Richard Laager <rlaager@pidgin.im>
parents: 16357
diff changeset
2197 data = purple_imgstore_get_data(custom_img);
7ff7c3405ea2 Rework the buddy icon subsystem to use the imgstore subsystem, and modify the
Richard Laager <rlaager@pidgin.im>
parents: 16357
diff changeset
2198 len = purple_imgstore_get_size(custom_img);
14914
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2199 }
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2200
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2201 if (data == NULL) {
15490
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2202 if(buddy != NULL) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2203 if (!(icon = purple_buddy_get_icon(buddy)))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2204 if (!(icon = purple_buddy_icons_find(buddy->account, buddy->name))) /* Not sure I like this...*/
15490
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2205 return NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2206 data = purple_buddy_icon_get_data(icon, &len);
16446
3a6ed6c3400e Fix the custom icon stuff, and various memory leaks. At this point, custom
Richard Laager <rlaager@pidgin.im>
parents: 16437
diff changeset
2207 if (data == NULL)
3a6ed6c3400e Fix the custom icon stuff, and various memory leaks. At this point, custom
Richard Laager <rlaager@pidgin.im>
parents: 16437
diff changeset
2208 return NULL;
15490
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2209 }
14914
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14882
diff changeset
2210 }
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2211
15490
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2212 if(data == NULL)
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2213 return NULL;
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
2214
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2215 loader = gdk_pixbuf_loader_new();
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2216 gdk_pixbuf_loader_write(loader, data, len, NULL);
12601
be19ef28e2ce [gaim-migrate @ 14935]
Richard Laager <rlaager@pidgin.im>
parents: 12600
diff changeset
2217 gdk_pixbuf_loader_close(loader, NULL);
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2218 buf = gdk_pixbuf_loader_get_pixbuf(loader);
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2219 if (buf)
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2220 g_object_ref(G_OBJECT(buf));
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2221 g_object_unref(G_OBJECT(loader));
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2222
16446
3a6ed6c3400e Fix the custom icon stuff, and various memory leaks. At this point, custom
Richard Laager <rlaager@pidgin.im>
parents: 16437
diff changeset
2223 // TODO: FIX THIS!!!
3a6ed6c3400e Fix the custom icon stuff, and various memory leaks. At this point, custom
Richard Laager <rlaager@pidgin.im>
parents: 16437
diff changeset
2224 //purple_imgstore_unref(custom_img);
3a6ed6c3400e Fix the custom icon stuff, and various memory leaks. At this point, custom
Richard Laager <rlaager@pidgin.im>
parents: 16437
diff changeset
2225
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2226 if (buf) {
10544
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2227 int orig_width, orig_height;
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2228 int scale_width, scale_height;
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2229
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2230 if (greyed) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2231 PurplePresence *presence = purple_buddy_get_presence(buddy);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2232 if (!PURPLE_BUDDY_IS_ONLINE(buddy))
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2233 gdk_pixbuf_saturate_and_pixelate(buf, buf, 0.0, FALSE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2234 if (purple_presence_is_idle(presence))
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2235 gdk_pixbuf_saturate_and_pixelate(buf, buf, 0.25, FALSE);
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2236 }
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2237
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2238 /* i'd use the pidgin_buddy_icon_get_scale_size() thing,
10544
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2239 * but it won't tell me the original size, which I need for scaling
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2240 * purposes */
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2241 scale_width = orig_width = gdk_pixbuf_get_width(buf);
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2242 scale_height = orig_height = gdk_pixbuf_get_height(buf);
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2243
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2244 if (prpl_info && prpl_info->icon_spec.scale_rules & PURPLE_ICON_SCALE_DISPLAY)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2245 purple_buddy_icon_get_scale_size(&prpl_info->icon_spec, &scale_width, &scale_height);
10544
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2246
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2247 if (scaled) {
10544
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2248 if(scale_height > scale_width) {
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2249 scale_width = 32.0 * (double)scale_width / (double)scale_height;
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2250 scale_height = 32;
10544
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2251 } else {
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2252 scale_height = 32.0 * (double)scale_height / (double)scale_width;
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2253 scale_width = 32;
10544
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2254 }
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2255
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2256 ret = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, 32, 32);
10544
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2257 gdk_pixbuf_fill(ret, 0x00000000);
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2258 gdk_pixbuf_scale(buf, ret, (32-scale_width)/2, (32-scale_height)/2, scale_width, scale_height, (32-scale_width)/2, (32-scale_height)/2, (double)scale_width/(double)orig_width, (double)scale_height/(double)orig_height, GDK_INTERP_BILINEAR);
16150
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2259 if (pidgin_gdk_pixbuf_is_opaque(ret))
d283d848c73c Hylke requested that we slightly round the corners of budy icons in the blist to better match the round status icons
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2260 roundify(ret);
10483
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10482
diff changeset
2261 } else {
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10482
diff changeset
2262 ret = gdk_pixbuf_scale_simple(buf,scale_width,scale_height, GDK_INTERP_BILINEAR);
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10482
diff changeset
2263 }
10544
149155149247 [gaim-migrate @ 11910]
Nathan Walp <nwalp@pidgin.im>
parents: 10515
diff changeset
2264 g_object_unref(G_OBJECT(buf));
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2265 }
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2266
10483
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10482
diff changeset
2267 return ret;
10482
01c1287da66f [gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10477
diff changeset
2268 }
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2269 /* # - Status Icon
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2270 * P - Protocol Icon
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2271 * A - Buddy Icon
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2272 * [ - SMALL_SPACE
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2273 * = - LARGE_SPACE
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2274 * +--- STATUS_SIZE +--- td->avatar_width
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2275 * | +-- td->name_width |
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2276 * +----+ +-------+ +---------+
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2277 * | | | | | |
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2278 * +-------------------------------------------+
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2279 * | [ = [ |--- TOOLTIP_BORDER
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2280 *name_height --+-| ######[BuddyName = PP [ AAAAAAAAAAA |--+
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2281 * | | ######[ = PP [ AAAAAAAAAAA | |
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2282 * STATUS SIZE -| | ######[[[[[[[[[[[[[[[[[[[[[ AAAAAAAAAAA | |
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2283 * +--+-| ######[Account: So-and-so [ AAAAAAAAAAA | |-- td->avatar_height
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2284 * | | [Idle: 4h 15m [ AAAAAAAAAAA | |
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2285 * height --+ | [Foo: Bar, Baz [ AAAAAAAAAAA | |
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2286 * | | [Status: Awesome [ AAAAAAAAAAA |--+
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2287 * +----| [Stop: Hammer Time [ |
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2288 * | [ [ |--- TOOLTIP_BORDER
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2289 * +-------------------------------------------+
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2290 * | | | |
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2291 * | +----------------+ |
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2292 * | | |
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2293 * | +-- td->width |
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2294 * | |
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2295 * +---- TOOLTIP_BORDER +---- TOOLTIP_BORDER
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2296 *
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
2297 *
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2298 */
15606
a070ac7366f8 Perhaps a 22px icon is better in the tooltip
Sean Egan <seanegan@pidgin.im>
parents: 15588
diff changeset
2299 #define STATUS_SIZE 22
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2300 #define TOOLTIP_BORDER 12
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2301 #define SMALL_SPACE 6
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2302 #define LARGE_SPACE 12
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
2303 #define PRPL_SIZE 16
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2304 struct tooltip_data {
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2305 PangoLayout *layout;
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2306 PangoLayout *name_layout;
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2307 GdkPixbuf *prpl_icon;
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2308 GdkPixbuf *status_icon;
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2309 GdkPixbuf *avatar;
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2310 gboolean avatar_is_prpl_icon;
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2311 int avatar_width;
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2312 int avatar_height;
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2313 int name_height;
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2314 int name_width;
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2315 int width;
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2316 int height;
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2317 };
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2318
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2319 static struct tooltip_data * create_tip_for_node(PurpleBlistNode *node, gboolean full)
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2320 {
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2321 char *tooltip_text = NULL;
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2322 struct tooltip_data *td = g_new0(struct tooltip_data, 1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2323 PurpleAccount *account = NULL;
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2324 char *tmp, *node_name;
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2325
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2326 if(PURPLE_BLIST_NODE_IS_BUDDY(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2327 account = ((PurpleBuddy*)(node))->account;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2328 } else if(PURPLE_BLIST_NODE_IS_CHAT(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2329 account = ((PurpleChat*)(node))->account;
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2330 }
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2331
15569
e85adc8d3b5c gtkblist changes to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2332 td->status_icon = pidgin_blist_get_status_icon(node, PIDGIN_STATUS_ICON_LARGE);
16437
7ff7c3405ea2 Rework the buddy icon subsystem to use the imgstore subsystem, and modify the
Richard Laager <rlaager@pidgin.im>
parents: 16357
diff changeset
2333 td->avatar = pidgin_blist_get_buddy_icon(node, !full, FALSE);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2334 td->prpl_icon = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_SMALL);
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
2335 tooltip_text = pidgin_get_tooltip_text(node, full);
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2336 td->layout = gtk_widget_create_pango_layout(gtkblist->tipwindow, NULL);
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2337 td->name_layout = gtk_widget_create_pango_layout(gtkblist->tipwindow, NULL);
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2338
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2339 if (PURPLE_BLIST_NODE_IS_BUDDY(node))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2340 tmp = g_markup_escape_text(purple_buddy_get_name((PurpleBuddy*)node), -1);
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2341 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2342 tmp = g_markup_escape_text(purple_chat_get_name((PurpleChat*)node), -1);
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2343 node_name = g_strdup_printf("<span size='x-large' weight='bold'>%s</span>", tmp);
15982
31ae61be5792 Fix a small tooltip-related memleak
Mark Doliner <markdoliner@pidgin.im>
parents: 15931
diff changeset
2344 g_free(tmp);
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2345
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2346 pango_layout_set_markup(td->layout, tooltip_text, -1);
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2347 pango_layout_set_wrap(td->layout, PANGO_WRAP_WORD);
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2348 pango_layout_set_width(td->layout, 300000);
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2349
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2350 pango_layout_get_size (td->layout, &td->width, &td->height);
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2351 td->width = PANGO_PIXELS(td->width);
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2352 td->height = PANGO_PIXELS(td->height);
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2353
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2354 pango_layout_set_markup(td->name_layout, node_name, -1);
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2355 pango_layout_set_wrap(td->name_layout, PANGO_WRAP_WORD);
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2356 pango_layout_set_width(td->name_layout, 300000);
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2357
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2358 pango_layout_get_size (td->name_layout, &td->name_width, &td->name_height);
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2359 td->name_width = PANGO_PIXELS(td->name_width) + SMALL_SPACE + PRPL_SIZE;
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2360 td->name_height = MAX(PANGO_PIXELS(td->name_height), PRPL_SIZE + SMALL_SPACE);
15526
2aa8c06f946e tooltip tweaks
Sean Egan <seanegan@pidgin.im>
parents: 15525
diff changeset
2361 #if 0 /* PRPL Icon as avatar */
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2362 if(!td->avatar && full) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2363 td->avatar = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_LARGE);
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2364 td->avatar_is_prpl_icon = TRUE;
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2365 }
15526
2aa8c06f946e tooltip tweaks
Sean Egan <seanegan@pidgin.im>
parents: 15525
diff changeset
2366 #endif
15769
813f36d31f6c Fix asserts when there is no buddy icon
Daniel Atallah <datallah@pidgin.im>
parents: 15692
diff changeset
2367
813f36d31f6c Fix asserts when there is no buddy icon
Daniel Atallah <datallah@pidgin.im>
parents: 15692
diff changeset
2368 if (td->avatar) {
813f36d31f6c Fix asserts when there is no buddy icon
Daniel Atallah <datallah@pidgin.im>
parents: 15692
diff changeset
2369 td->avatar_width = gdk_pixbuf_get_width(td->avatar);
813f36d31f6c Fix asserts when there is no buddy icon
Daniel Atallah <datallah@pidgin.im>
parents: 15692
diff changeset
2370 td->avatar_height = gdk_pixbuf_get_height(td->avatar);
813f36d31f6c Fix asserts when there is no buddy icon
Daniel Atallah <datallah@pidgin.im>
parents: 15692
diff changeset
2371 }
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2372
15550
d710f85e6d0e A small memory leak in the tooltip.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15546
diff changeset
2373 g_free(node_name);
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2374 g_free(tooltip_text);
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2375 return td;
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2376 }
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2377
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2378 static void pidgin_blist_paint_tip(GtkWidget *widget, GdkEventExpose *event, PurpleBlistNode *node)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2379 {
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2380 GtkStyle *style;
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2381 int current_height, max_width;
15542
8de6f9738f5b fix a weird tooltip rendering bug when the second buddy in a contact tooltip
Nathan Walp <nwalp@pidgin.im>
parents: 15539
diff changeset
2382 int max_text_width;
15546
f320e2b2a6e8 fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents: 15545
diff changeset
2383 int max_avatar_width;
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2384 GList *l;
15526
2aa8c06f946e tooltip tweaks
Sean Egan <seanegan@pidgin.im>
parents: 15525
diff changeset
2385 int prpl_col = 0;
15644
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2386 GtkTextDirection dir = gtk_widget_get_direction(widget);
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
2387
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2388 if(gtkblist->tooltipdata == NULL)
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2389 return;
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2390
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2391 style = gtkblist->tipwindow->style;
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2392 gtk_paint_flat_box(style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, GTK_SHADOW_OUT,
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2393 NULL, gtkblist->tipwindow, "tooltip", 0, 0, -1, -1);
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2394
15542
8de6f9738f5b fix a weird tooltip rendering bug when the second buddy in a contact tooltip
Nathan Walp <nwalp@pidgin.im>
parents: 15539
diff changeset
2395 max_text_width = 0;
15546
f320e2b2a6e8 fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents: 15545
diff changeset
2396 max_avatar_width = 0;
15545
46584790b5f0 really fix that tooltip display glitch
Nathan Walp <nwalp@pidgin.im>
parents: 15544
diff changeset
2397
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2398 for(l = gtkblist->tooltipdata; l; l = l->next)
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2399 {
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2400 struct tooltip_data *td = l->data;
15546
f320e2b2a6e8 fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents: 15545
diff changeset
2401
15542
8de6f9738f5b fix a weird tooltip rendering bug when the second buddy in a contact tooltip
Nathan Walp <nwalp@pidgin.im>
parents: 15539
diff changeset
2402 max_text_width = MAX(max_text_width,
8de6f9738f5b fix a weird tooltip rendering bug when the second buddy in a contact tooltip
Nathan Walp <nwalp@pidgin.im>
parents: 15539
diff changeset
2403 MAX(td->width, td->name_width));
15546
f320e2b2a6e8 fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents: 15545
diff changeset
2404 max_avatar_width = MAX(max_avatar_width, td->avatar_width);
f320e2b2a6e8 fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents: 15545
diff changeset
2405 }
f320e2b2a6e8 fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents: 15545
diff changeset
2406
f320e2b2a6e8 fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents: 15545
diff changeset
2407 max_width = TOOLTIP_BORDER + STATUS_SIZE + SMALL_SPACE + max_text_width + SMALL_SPACE + max_avatar_width + TOOLTIP_BORDER;
15644
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2408 if (dir == GTK_TEXT_DIR_RTL)
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2409 prpl_col = TOOLTIP_BORDER + max_avatar_width + SMALL_SPACE;
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2410 else
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2411 prpl_col = TOOLTIP_BORDER + STATUS_SIZE + SMALL_SPACE + max_text_width - PRPL_SIZE;
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2412
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2413 current_height = 12;
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2414 for(l = gtkblist->tooltipdata; l; l = l->next)
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2415 {
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2416 struct tooltip_data *td = l->data;
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2417
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
2418 if (td->avatar && pidgin_gdk_pixbuf_is_opaque(td->avatar))
15648
47e9eddcf323 Add some braces to eliminate a compiler warning about an ambiguous else.
Richard Laager <rlaager@pidgin.im>
parents: 15644
diff changeset
2419 {
15644
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2420 if (dir == GTK_TEXT_DIR_RTL)
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2421 gtk_paint_flat_box(style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, GTK_SHADOW_OUT,
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2422 NULL, gtkblist->tipwindow, "tooltip",
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2423 TOOLTIP_BORDER -1, current_height -1, td->avatar_width +2, td->avatar_height + 2);
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2424 else
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2425 gtk_paint_flat_box(style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, GTK_SHADOW_OUT,
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2426 NULL, gtkblist->tipwindow, "tooltip",
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2427 max_width - (td->avatar_width+ TOOLTIP_BORDER)-1,
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2428 current_height-1,td->avatar_width+2, td->avatar_height+2);
15648
47e9eddcf323 Add some braces to eliminate a compiler warning about an ambiguous else.
Richard Laager <rlaager@pidgin.im>
parents: 15644
diff changeset
2429 }
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2430
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2431 #if GTK_CHECK_VERSION(2,2,0)
15644
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2432 if (dir == GTK_TEXT_DIR_RTL)
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2433 gdk_draw_pixbuf(GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, td->status_icon,
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2434 0, 0, max_width - TOOLTIP_BORDER - STATUS_SIZE, current_height, -1, -1, GDK_RGB_DITHER_NONE, 0, 0);
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2435 else
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2436 gdk_draw_pixbuf(GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, td->status_icon,
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2437 0, 0, TOOLTIP_BORDER, current_height, -1 , -1, GDK_RGB_DITHER_NONE, 0, 0);
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2438 if(td->avatar)
15648
47e9eddcf323 Add some braces to eliminate a compiler warning about an ambiguous else.
Richard Laager <rlaager@pidgin.im>
parents: 15644
diff changeset
2439 {
15644
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2440 if (dir == GTK_TEXT_DIR_RTL)
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2441 gdk_draw_pixbuf(GDK_DRAWABLE(gtkblist->tipwindow->window), NULL,
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2442 td->avatar, 0, 0, TOOLTIP_BORDER, current_height, -1, -1, GDK_RGB_DITHER_NONE, 0, 0);
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2443 else
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2444 gdk_draw_pixbuf(GDK_DRAWABLE(gtkblist->tipwindow->window), NULL,
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2445 td->avatar, 0, 0, max_width - (td->avatar_width + TOOLTIP_BORDER),
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2446 current_height, -1 , -1, GDK_RGB_DITHER_NONE, 0, 0);
15648
47e9eddcf323 Add some braces to eliminate a compiler warning about an ambiguous else.
Richard Laager <rlaager@pidgin.im>
parents: 15644
diff changeset
2447 }
47e9eddcf323 Add some braces to eliminate a compiler warning about an ambiguous else.
Richard Laager <rlaager@pidgin.im>
parents: 15644
diff changeset
2448
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2449 if (!td->avatar_is_prpl_icon)
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2450 gdk_draw_pixbuf(GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, td->prpl_icon,
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2451 0, 0,
15526
2aa8c06f946e tooltip tweaks
Sean Egan <seanegan@pidgin.im>
parents: 15525
diff changeset
2452 prpl_col,
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2453 current_height + ((td->name_height / 2) - (PRPL_SIZE / 2)),
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2454 -1 , -1, GDK_RGB_DITHER_NONE, 0, 0);
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2455
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2456 #else
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2457 gdk_pixbuf_render_to_drawable(td->status_icon, GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, 0, 0, 12, current_height, -1, -1, GDK_RGB_DITHER_NONE, 0, 0);
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2458 if(td->avatar)
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2459 gdk_pixbuf_render_to_drawable(td->avatar,
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2460 GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, 0, 0,
15545
46584790b5f0 really fix that tooltip display glitch
Nathan Walp <nwalp@pidgin.im>
parents: 15544
diff changeset
2461 max_width - (td->avatar_width + TOOLTIP_BORDER),
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2462 current_height, -1, -1, GDK_RGB_DITHER_NONE, 0, 0);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2463 #endif
15644
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2464 if (dir == GTK_TEXT_DIR_RTL) {
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2465 gtk_paint_layout(style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, FALSE,
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2466 NULL, gtkblist->tipwindow, "tooltip",
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
2467 max_width -(TOOLTIP_BORDER + STATUS_SIZE +SMALL_SPACE) - PANGO_PIXELS(300000),
15644
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2468 current_height, td->name_layout);
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2469 } else {
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2470 gtk_paint_layout (style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, FALSE,
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2471 NULL, gtkblist->tipwindow, "tooltip",
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2472 TOOLTIP_BORDER + STATUS_SIZE + SMALL_SPACE, current_height, td->name_layout);
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2473 }
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2474 if (dir != GTK_TEXT_DIR_RTL) {
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2475 gtk_paint_layout (style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, FALSE,
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2476 NULL, gtkblist->tipwindow, "tooltip",
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2477 TOOLTIP_BORDER + STATUS_SIZE + SMALL_SPACE, current_height + td->name_height, td->layout);
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2478 } else {
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2479 gtk_paint_layout(style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, FALSE,
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2480 NULL, gtkblist->tipwindow, "tooltip",
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2481 max_width - (TOOLTIP_BORDER + STATUS_SIZE + SMALL_SPACE) - PANGO_PIXELS(300000),
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2482 current_height + td->name_height,
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2483 td->layout);
6ca1260680be RTL Tooltips.
Sean Egan <seanegan@pidgin.im>
parents: 15623
diff changeset
2484 }
15539
b204042fba24 fix overlapping in tooltips w/ large avatars
Nathan Walp <nwalp@pidgin.im>
parents: 15526
diff changeset
2485
b204042fba24 fix overlapping in tooltips w/ large avatars
Nathan Walp <nwalp@pidgin.im>
parents: 15526
diff changeset
2486 current_height += MAX(td->name_height + td->height, td->avatar_height) + TOOLTIP_BORDER;
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
2487 }
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2488 }
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2489
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2490
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2491 static void pidgin_blist_tooltip_destroy()
8254
3b3d86ef983b [gaim-migrate @ 8977]
Mark Doliner <markdoliner@pidgin.im>
parents: 8252
diff changeset
2492 {
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2493 while(gtkblist->tooltipdata) {
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2494 struct tooltip_data *td = gtkblist->tooltipdata->data;
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2495
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2496 if(td->avatar)
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2497 g_object_unref(td->avatar);
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2498 if(td->status_icon)
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2499 g_object_unref(td->status_icon);
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2500 if(td->prpl_icon)
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2501 g_object_unref(td->prpl_icon);
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2502 g_object_unref(td->layout);
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2503 g_object_unref(td->name_layout);
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2504 g_free(td);
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2505 gtkblist->tooltipdata = g_list_delete_link(gtkblist->tooltipdata, gtkblist->tooltipdata);
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2506 }
11636
7512e00792be [gaim-migrate @ 13912]
Mark Doliner <markdoliner@pidgin.im>
parents: 11634
diff changeset
2507
8254
3b3d86ef983b [gaim-migrate @ 8977]
Mark Doliner <markdoliner@pidgin.im>
parents: 8252
diff changeset
2508 if (gtkblist->tipwindow == NULL)
3b3d86ef983b [gaim-migrate @ 8977]
Mark Doliner <markdoliner@pidgin.im>
parents: 8252
diff changeset
2509 return;
3b3d86ef983b [gaim-migrate @ 8977]
Mark Doliner <markdoliner@pidgin.im>
parents: 8252
diff changeset
2510
3b3d86ef983b [gaim-migrate @ 8977]
Mark Doliner <markdoliner@pidgin.im>
parents: 8252
diff changeset
2511 gtk_widget_destroy(gtkblist->tipwindow);
3b3d86ef983b [gaim-migrate @ 8977]
Mark Doliner <markdoliner@pidgin.im>
parents: 8252
diff changeset
2512 gtkblist->tipwindow = NULL;
3b3d86ef983b [gaim-migrate @ 8977]
Mark Doliner <markdoliner@pidgin.im>
parents: 8252
diff changeset
2513 }
3b3d86ef983b [gaim-migrate @ 8977]
Mark Doliner <markdoliner@pidgin.im>
parents: 8252
diff changeset
2514
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2515 static gboolean pidgin_blist_expand_timeout(GtkWidget *tv)
10354
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2516 {
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2517 GtkTreePath *path;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2518 GtkTreeIter iter;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2519 PurpleBlistNode *node;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2520 GValue val;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2521 struct _pidgin_blist_node *gtknode;
10354
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2522
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2523 if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), gtkblist->tip_rect.x, gtkblist->tip_rect.y, &path, NULL, NULL, NULL))
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2524 return FALSE;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2525 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2526 val.g_type = 0;
10354
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2527 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2528 node = g_value_get_pointer(&val);
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2529
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2530 if(!PURPLE_BLIST_NODE_IS_CONTACT(node)) {
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10501
diff changeset
2531 gtk_tree_path_free(path);
10354
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2532 return FALSE;
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10501
diff changeset
2533 }
10354
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2534
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2535 gtknode = node->ui_data;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2536
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2537 if (!gtknode->contact_expanded) {
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2538 GtkTreeIter i;
10382
32e07712e224 [gaim-migrate @ 11608]
Luke Schierer <lschiere@pidgin.im>
parents: 10357
diff changeset
2539
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2540 pidgin_blist_expand_contact_cb(NULL, node);
10382
32e07712e224 [gaim-migrate @ 11608]
Luke Schierer <lschiere@pidgin.im>
parents: 10357
diff changeset
2541
10354
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2542 gtk_tree_view_get_cell_area(GTK_TREE_VIEW(tv), path, NULL, &gtkblist->contact_rect);
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2543 gdk_drawable_get_size(GDK_DRAWABLE(tv->window), &(gtkblist->contact_rect.width), NULL);
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2544 gtkblist->mouseover_contact = node;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2545 gtk_tree_path_down (path);
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2546 while (gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &i, path)) {
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2547 GdkRectangle rect;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2548 gtk_tree_view_get_cell_area(GTK_TREE_VIEW(tv), path, NULL, &rect);
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2549 gtkblist->contact_rect.height += rect.height;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2550 gtk_tree_path_next(path);
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2551 }
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2552 }
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2553 gtk_tree_path_free(path);
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2554 return FALSE;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2555 }
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2556
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2557 static gboolean buddy_is_displayable(PurpleBuddy *buddy)
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2558 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2559 struct _pidgin_blist_node *gtknode;
11910
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2560
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2561 if(!buddy)
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2562 return FALSE;
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2563
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2564 gtknode = ((PurpleBlistNode*)buddy)->ui_data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2565
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2566 return (purple_account_is_connected(buddy->account) &&
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2567 (purple_presence_is_online(buddy->presence) ||
11910
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
2568 (gtknode && gtknode->recent_signonoff) ||
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
2569 purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_offline_buddies") ||
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2570 purple_blist_node_get_bool((PurpleBlistNode*)buddy, "show_offline")));
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2571 }
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2572
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2573 static gboolean pidgin_blist_tooltip_timeout(GtkWidget *tv)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2574 {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2575 GtkTreePath *path;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2576 GtkTreeIter iter;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2577 PurpleBlistNode *node;
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2578 GValue val;
9869
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2579 int scr_w, scr_h, w, h, x, y;
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2580 #if GTK_CHECK_VERSION(2,2,0)
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2581 int mon_num;
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2582 GdkScreen *screen = NULL;
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2583 #endif
7636
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2584 gboolean tooltip_top = FALSE;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2585 struct _pidgin_blist_node *gtknode;
9773
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2586 GdkRectangle mon_size;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2587
11636
7512e00792be [gaim-migrate @ 13912]
Mark Doliner <markdoliner@pidgin.im>
parents: 11634
diff changeset
2588 /*
7512e00792be [gaim-migrate @ 13912]
Mark Doliner <markdoliner@pidgin.im>
parents: 11634
diff changeset
2589 * Attempt to free the previous tooltip. I have a feeling
7512e00792be [gaim-migrate @ 13912]
Mark Doliner <markdoliner@pidgin.im>
parents: 11634
diff changeset
2590 * this is never needed... but just in case.
7512e00792be [gaim-migrate @ 13912]
Mark Doliner <markdoliner@pidgin.im>
parents: 11634
diff changeset
2591 */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2592 pidgin_blist_tooltip_destroy();
11636
7512e00792be [gaim-migrate @ 13912]
Mark Doliner <markdoliner@pidgin.im>
parents: 11634
diff changeset
2593
7636
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2594 if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), gtkblist->tip_rect.x, gtkblist->tip_rect.y, &path, NULL, NULL, NULL))
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2595 return FALSE;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2596 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2597 val.g_type = 0;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2598 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2599 node = g_value_get_pointer(&val);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
2600
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10501
diff changeset
2601 gtk_tree_path_free(path);
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10501
diff changeset
2602
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2603 gtkblist->tipwindow = gtk_window_new(GTK_WINDOW_POPUP);
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2604
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2605 if(PURPLE_BLIST_NODE_IS_CHAT(node) || PURPLE_BLIST_NODE_IS_BUDDY(node)) {
12530
b33f97566985 [gaim-migrate @ 14843]
Nathan Walp <nwalp@pidgin.im>
parents: 12522
diff changeset
2606 struct tooltip_data *td = create_tip_for_node(node, TRUE);
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2607 gtkblist->tooltipdata = g_list_append(gtkblist->tooltipdata, td);
15542
8de6f9738f5b fix a weird tooltip rendering bug when the second buddy in a contact tooltip
Nathan Walp <nwalp@pidgin.im>
parents: 15539
diff changeset
2608 w = TOOLTIP_BORDER + STATUS_SIZE + SMALL_SPACE +
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2609 MAX(td->width, td->name_width) + SMALL_SPACE + td->avatar_width + TOOLTIP_BORDER;
16160
9bc0d03311bc The things that C will allow to compile astound me. Removes an errant apostrophe.
Sean Egan <seanegan@pidgin.im>
parents: 16159
diff changeset
2610 h = TOOLTIP_BORDER + MAX(td->height + td->name_height, MAX(STATUS_SIZE, td->avatar_height))
15503
40690461a1af PRPL Icons in tooltips
Sean Egan <seanegan@pidgin.im>
parents: 15498
diff changeset
2611 + TOOLTIP_BORDER;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2612 } else if(PURPLE_BLIST_NODE_IS_CONTACT(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2613 PurpleBlistNode *child;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2614 PurpleBuddy *b = purple_contact_get_priority_buddy((PurpleContact *)node);
15546
f320e2b2a6e8 fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents: 15545
diff changeset
2615 int max_text_width = 0;
f320e2b2a6e8 fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents: 15545
diff changeset
2616 int max_avatar_width = 0;
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2617 w = h = 0;
15545
46584790b5f0 really fix that tooltip display glitch
Nathan Walp <nwalp@pidgin.im>
parents: 15544
diff changeset
2618
12530
b33f97566985 [gaim-migrate @ 14843]
Nathan Walp <nwalp@pidgin.im>
parents: 12522
diff changeset
2619 for(child = node->child; child; child = child->next)
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2620 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2621 if(PURPLE_BLIST_NODE_IS_BUDDY(child) && buddy_is_displayable((PurpleBuddy*)child)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2622 struct tooltip_data *td = create_tip_for_node(child, (b == (PurpleBuddy*)child));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2623 if (b == (PurpleBuddy *)child) {
11988
7ed733ed806b [gaim-migrate @ 14281]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11986
diff changeset
2624 gtkblist->tooltipdata = g_list_prepend(gtkblist->tooltipdata, td);
7ed733ed806b [gaim-migrate @ 14281]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11986
diff changeset
2625 } else {
7ed733ed806b [gaim-migrate @ 14281]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11986
diff changeset
2626 gtkblist->tooltipdata = g_list_append(gtkblist->tooltipdata, td);
7ed733ed806b [gaim-migrate @ 14281]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11986
diff changeset
2627 }
15546
f320e2b2a6e8 fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents: 15545
diff changeset
2628 max_text_width = MAX(max_text_width, MAX(td->width, td->name_width));
f320e2b2a6e8 fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents: 15545
diff changeset
2629 max_avatar_width = MAX(max_avatar_width, td->avatar_width);
16159
67d12aa69723 Fix ticket #52
Sean Egan <seanegan@pidgin.im>
parents: 16152
diff changeset
2630 h += MAX(TOOLTIP_BORDER + MAX(STATUS_SIZE,td->avatar_height),
67d12aa69723 Fix ticket #52
Sean Egan <seanegan@pidgin.im>
parents: 16152
diff changeset
2631 TOOLTIP_BORDER + td->height + td->name_height);
15545
46584790b5f0 really fix that tooltip display glitch
Nathan Walp <nwalp@pidgin.im>
parents: 15544
diff changeset
2632 }
46584790b5f0 really fix that tooltip display glitch
Nathan Walp <nwalp@pidgin.im>
parents: 15544
diff changeset
2633 }
16159
67d12aa69723 Fix ticket #52
Sean Egan <seanegan@pidgin.im>
parents: 16152
diff changeset
2634 h += TOOLTIP_BORDER;
15546
f320e2b2a6e8 fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents: 15545
diff changeset
2635 w = TOOLTIP_BORDER + STATUS_SIZE + SMALL_SPACE + max_text_width + SMALL_SPACE + max_avatar_width + TOOLTIP_BORDER;
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2636 } else {
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2637 gtk_widget_destroy(gtkblist->tipwindow);
11892
88eba6864684 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2638 gtkblist->tipwindow = NULL;
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2639 return FALSE;
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2640 }
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2641
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2642 if (gtkblist->tooltipdata == NULL) {
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2643 gtk_widget_destroy(gtkblist->tipwindow);
11892
88eba6864684 [gaim-migrate @ 14183]
Nathan Walp <nwalp@pidgin.im>
parents: 11890
diff changeset
2644 gtkblist->tipwindow = NULL;
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2645 return FALSE;
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
2646 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2647
7636
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2648 gtknode = node->ui_data;
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2649
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2650 gtk_widget_set_app_paintable(gtkblist->tipwindow, TRUE);
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2651 gtk_window_set_resizable(GTK_WINDOW(gtkblist->tipwindow), FALSE);
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2652 gtk_widget_set_name(gtkblist->tipwindow, "gtk-tooltips");
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2653 g_signal_connect(G_OBJECT(gtkblist->tipwindow), "expose_event",
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2654 G_CALLBACK(pidgin_blist_paint_tip), NULL);
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2655 gtk_widget_ensure_style (gtkblist->tipwindow);
7837
edc688e327dc [gaim-migrate @ 8490]
Nathan Walp <nwalp@pidgin.im>
parents: 7811
diff changeset
2656
9773
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2657
9869
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2658 #if GTK_CHECK_VERSION(2,2,0)
9773
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2659 gdk_display_get_pointer(gdk_display_get_default(), &screen, &x, &y, NULL);
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2660 mon_num = gdk_screen_get_monitor_at_point(screen, x, y);
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2661 gdk_screen_get_monitor_geometry(screen, mon_num, &mon_size);
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2662
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2663 scr_w = mon_size.width + mon_size.x;
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2664 scr_h = mon_size.height + mon_size.y;
9869
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2665 #else
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2666 scr_w = gdk_screen_width();
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2667 scr_h = gdk_screen_height();
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2668 gdk_window_get_pointer(NULL, &x, &y, NULL);
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2669 mon_size.x = 0;
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2670 mon_size.y = 0;
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2671 #endif
9773
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2672
9869
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2673 #if GTK_CHECK_VERSION(2,2,0)
10046
7e9175ee9b63 [gaim-migrate @ 11007]
Mark Doliner <markdoliner@pidgin.im>
parents: 10036
diff changeset
2674 if (w > mon_size.width)
9773
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2675 w = mon_size.width - 10;
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2676
10046
7e9175ee9b63 [gaim-migrate @ 11007]
Mark Doliner <markdoliner@pidgin.im>
parents: 10036
diff changeset
2677 if (h > mon_size.height)
9773
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2678 h = mon_size.height - 10;
9869
22c820135ca5 [gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9834
diff changeset
2679 #endif
9773
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2680
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2681 if (GTK_WIDGET_NO_WINDOW(gtkblist->window))
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2682 y+=gtkblist->window->allocation.y;
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2683
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2684 x -= ((w >> 1) + 4);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2685
7636
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2686 if ((y + h + 4) > scr_h || tooltip_top)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
2687 y = y - h - 5;
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2688 else
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2689 y = y + 6;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
2690
9773
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2691 if (y < mon_size.y)
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2692 y = mon_size.y;
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2693
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2694 if (y != mon_size.y) {
7719
0cffc1b6ecbb [gaim-migrate @ 8364]
Sean Egan <seanegan@pidgin.im>
parents: 7712
diff changeset
2695 if ((x + w) > scr_w)
0cffc1b6ecbb [gaim-migrate @ 8364]
Sean Egan <seanegan@pidgin.im>
parents: 7712
diff changeset
2696 x -= (x + w + 5) - scr_w;
9773
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2697 else if (x < mon_size.x)
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2698 x = mon_size.x;
7719
0cffc1b6ecbb [gaim-migrate @ 8364]
Sean Egan <seanegan@pidgin.im>
parents: 7712
diff changeset
2699 } else {
0cffc1b6ecbb [gaim-migrate @ 8364]
Sean Egan <seanegan@pidgin.im>
parents: 7712
diff changeset
2700 x -= (w / 2 + 10);
9773
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2701 if (x < mon_size.x)
68834782c27a [gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents: 9770
diff changeset
2702 x = mon_size.x;
7719
0cffc1b6ecbb [gaim-migrate @ 8364]
Sean Egan <seanegan@pidgin.im>
parents: 7712
diff changeset
2703 }
0cffc1b6ecbb [gaim-migrate @ 8364]
Sean Egan <seanegan@pidgin.im>
parents: 7712
diff changeset
2704
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2705 gtk_widget_set_size_request(gtkblist->tipwindow, w, h);
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2706 gtk_window_move(GTK_WINDOW(gtkblist->tipwindow), x, y);
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
2707 gtk_widget_show(gtkblist->tipwindow);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2708
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2709 return FALSE;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2710 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2711
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2712 static gboolean pidgin_blist_drag_motion_cb(GtkWidget *tv, GdkDragContext *drag_context,
10354
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2713 gint x, gint y, guint time, gpointer user_data)
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2714 {
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2715 GtkTreePath *path;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2716 int delay;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2717
12679
42fa0799eef6 [gaim-migrate @ 15022]
Mark Doliner <markdoliner@pidgin.im>
parents: 12656
diff changeset
2718 /*
42fa0799eef6 [gaim-migrate @ 15022]
Mark Doliner <markdoliner@pidgin.im>
parents: 12656
diff changeset
2719 * When dragging a buddy into a contact, this is the delay before
42fa0799eef6 [gaim-migrate @ 15022]
Mark Doliner <markdoliner@pidgin.im>
parents: 12656
diff changeset
2720 * the contact auto-expands.
42fa0799eef6 [gaim-migrate @ 15022]
Mark Doliner <markdoliner@pidgin.im>
parents: 12656
diff changeset
2721 */
42fa0799eef6 [gaim-migrate @ 15022]
Mark Doliner <markdoliner@pidgin.im>
parents: 12656
diff changeset
2722 delay = 900;
10354
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2723
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2724 if (gtkblist->drag_timeout) {
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2725 if ((y > gtkblist->tip_rect.y) && ((y - gtkblist->tip_rect.height) < gtkblist->tip_rect.y))
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2726 return FALSE;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2727 /* We've left the cell. Remove the timeout and create a new one below */
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2728 g_source_remove(gtkblist->drag_timeout);
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2729 }
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2730
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2731 gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), x, y, &path, NULL, NULL, NULL);
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2732 gtk_tree_view_get_cell_area(GTK_TREE_VIEW(tv), path, NULL, &gtkblist->tip_rect);
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2733
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2734 if (path)
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2735 gtk_tree_path_free(path);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2736 gtkblist->drag_timeout = g_timeout_add(delay, (GSourceFunc)pidgin_blist_expand_timeout, tv);
10354
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2737
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2738 if (gtkblist->mouseover_contact) {
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2739 if ((y < gtkblist->contact_rect.y) || ((y - gtkblist->contact_rect.height) > gtkblist->contact_rect.y)) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2740 pidgin_blist_collapse_contact_cb(NULL, gtkblist->mouseover_contact);
10354
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2741 gtkblist->mouseover_contact = NULL;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2742 }
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2743 }
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2744
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2745 return FALSE;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2746 }
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2747
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2748 static gboolean pidgin_blist_motion_cb (GtkWidget *tv, GdkEventMotion *event, gpointer null)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2749 {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2750 GtkTreePath *path;
8470
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2751 int delay;
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2752
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
2753 delay = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/tooltip_delay");
8470
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2754
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2755 if (delay == 0)
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2756 return FALSE;
8083
312f60085554 [gaim-migrate @ 8782]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
2757
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2758 if (gtkblist->timeout) {
7636
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2759 if ((event->y > gtkblist->tip_rect.y) && ((event->y - gtkblist->tip_rect.height) < gtkblist->tip_rect.y))
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2760 return FALSE;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2761 /* We've left the cell. Remove the timeout and create a new one below */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2762 pidgin_blist_tooltip_destroy();
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2763 g_source_remove(gtkblist->timeout);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2764 }
8470
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2765
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2766 gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), event->x, event->y, &path, NULL, NULL, NULL);
7636
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2767 gtk_tree_view_get_cell_area(GTK_TREE_VIEW(tv), path, NULL, &gtkblist->tip_rect);
8470
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2768
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2769 if (path)
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2770 gtk_tree_path_free(path);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2771 gtkblist->timeout = g_timeout_add(delay, (GSourceFunc)pidgin_blist_tooltip_timeout, tv);
7636
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2772
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2773 if (gtkblist->mouseover_contact) {
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2774 if ((event->y < gtkblist->contact_rect.y) || ((event->y - gtkblist->contact_rect.height) > gtkblist->contact_rect.y)) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2775 pidgin_blist_collapse_contact_cb(NULL, gtkblist->mouseover_contact);
7636
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2776 gtkblist->mouseover_contact = NULL;
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2777 }
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2778 }
8470
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2779
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2780 return FALSE;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2781 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2782
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2783 static void pidgin_blist_leave_cb (GtkWidget *w, GdkEventCrossing *e, gpointer n)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2784 {
8083
312f60085554 [gaim-migrate @ 8782]
Nathan Walp <nwalp@pidgin.im>
parents: 8046
diff changeset
2785
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2786 if (gtkblist->timeout) {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2787 g_source_remove(gtkblist->timeout);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2788 gtkblist->timeout = 0;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2789 }
10382
32e07712e224 [gaim-migrate @ 11608]
Luke Schierer <lschiere@pidgin.im>
parents: 10357
diff changeset
2790
10354
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2791 if (gtkblist->drag_timeout) {
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2792 g_source_remove(gtkblist->drag_timeout);
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2793 gtkblist->drag_timeout = 0;
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2794 }
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
2795
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2796 pidgin_blist_tooltip_destroy();
7720
ee21f446e1fe [gaim-migrate @ 8365]
Sean Egan <seanegan@pidgin.im>
parents: 7719
diff changeset
2797
8470
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2798 if (gtkblist->mouseover_contact &&
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
2799 !((e->x > gtkblist->contact_rect.x) && (e->x < (gtkblist->contact_rect.x + gtkblist->contact_rect.width)) &&
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
2800 (e->y > gtkblist->contact_rect.y) && (e->y < (gtkblist->contact_rect.y + gtkblist->contact_rect.height)))) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2801 pidgin_blist_collapse_contact_cb(NULL, gtkblist->mouseover_contact);
7636
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2802 gtkblist->mouseover_contact = NULL;
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
2803 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2804 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2805
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2806 static void
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2807 toggle_debug(void)
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2808 {
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
2809 purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/debug/enabled",
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
2810 !purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/debug/enabled"));
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2811 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2812
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2813
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2814 /***************************************************
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2815 * Crap *
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2816 ***************************************************/
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2817 static GtkItemFactoryEntry blist_menu[] =
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2818 {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2819 /* Buddies menu */
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2820 { N_("/_Buddies"), NULL, NULL, 0, "<Branch>", NULL },
16263
27e0ef0f38e6 Word on the street is that we don't want things named pidginfoo_bar(), but
Richard Laager <rlaager@pidgin.im>
parents: 16259
diff changeset
2821 { N_("/Buddies/New Instant _Message..."), "<CTL>M", pidgin_dialogs_im, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW },
15614
8dcd6c09d69a Remove excess menu item icon clutter, especialy where our icons made no sense. The Redo icon for Buddy Pounces?! Come on.
Sean Egan <seanegan@pidgin.im>
parents: 15606
diff changeset
2822 { N_("/Buddies/Join a _Chat..."), "<CTL>C", pidgin_blist_joinchat_show, 0, "<Item>", NULL },
16263
27e0ef0f38e6 Word on the street is that we don't want things named pidginfoo_bar(), but
Richard Laager <rlaager@pidgin.im>
parents: 16259
diff changeset
2823 { N_("/Buddies/Get User _Info..."), "<CTL>I", pidgin_dialogs_info, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_USER_INFO },
27e0ef0f38e6 Word on the street is that we don't want things named pidginfoo_bar(), but
Richard Laager <rlaager@pidgin.im>
parents: 16259
diff changeset
2824 { N_("/Buddies/View User _Log..."), "<CTL>L", pidgin_dialogs_log, 0, "<Item>", NULL },
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2825 { "/Buddies/sep1", NULL, NULL, 0, "<Separator>", NULL },
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2826 { N_("/Buddies/Show _Offline Buddies"), NULL, pidgin_blist_edit_mode_cb, 1, "<CheckItem>", NULL },
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2827 { N_("/Buddies/Show _Empty Groups"), NULL, pidgin_blist_show_empty_groups_cb, 1, "<CheckItem>", NULL },
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2828 { N_("/Buddies/Show Buddy _Details"), NULL, pidgin_blist_buddy_details_cb, 1, "<CheckItem>", NULL },
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2829 { N_("/Buddies/Show Idle _Times"), NULL, pidgin_blist_show_idle_time_cb, 1, "<CheckItem>", NULL },
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2830 { N_("/Buddies/_Sort Buddies"), NULL, NULL, 0, "<Branch>", NULL },
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2831 { "/Buddies/sep2", NULL, NULL, 0, "<Separator>", NULL },
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2832 { N_("/Buddies/_Add Buddy..."), "<CTL>B", pidgin_blist_add_buddy_cb, 0, "<StockItem>", GTK_STOCK_ADD },
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2833 { N_("/Buddies/Add C_hat..."), NULL, pidgin_blist_add_chat_cb, 0, "<StockItem>", GTK_STOCK_ADD },
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2834 { N_("/Buddies/Add _Group..."), NULL, purple_blist_request_add_group, 0, "<StockItem>", GTK_STOCK_ADD },
12799
3a4678907219 [gaim-migrate @ 15146]
Mark Doliner <markdoliner@pidgin.im>
parents: 12797
diff changeset
2835 { "/Buddies/sep3", NULL, NULL, 0, "<Separator>", NULL },
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2836 { N_("/Buddies/_Quit"), "<CTL>Q", purple_core_quit, 0, "<StockItem>", GTK_STOCK_QUIT },
12300
c24609bae42d [gaim-migrate @ 14604]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12298
diff changeset
2837
c24609bae42d [gaim-migrate @ 14604]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12298
diff changeset
2838 /* Accounts menu */
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2839 { N_("/_Accounts"), NULL, NULL, 0, "<Branch>", NULL },
15614
8dcd6c09d69a Remove excess menu item icon clutter, especialy where our icons made no sense. The Redo icon for Buddy Pounces?! Come on.
Sean Egan <seanegan@pidgin.im>
parents: 15606
diff changeset
2840 { N_("/Accounts/Add\\/Edit"), "<CTL>A", pidgin_accounts_window_show, 0, "<Item>", NULL },
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2841
8470
100fc1feea95 [gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents: 8444
diff changeset
2842 /* Tools */
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2843 { N_("/_Tools"), NULL, NULL, 0, "<Branch>", NULL },
15614
8dcd6c09d69a Remove excess menu item icon clutter, especialy where our icons made no sense. The Redo icon for Buddy Pounces?! Come on.
Sean Egan <seanegan@pidgin.im>
parents: 15606
diff changeset
2844 { N_("/Tools/Buddy _Pounces"), NULL, pidgin_pounces_manager_show, 0, "<Item>", NULL },
15623
bf485c598199 toolbar/menu icons. reduce the imhtmltoolbar spacing. more gaimstock pruning
Sean Egan <seanegan@pidgin.im>
parents: 15622
diff changeset
2845 { N_("/Tools/Plu_gins"), "<CTL>U", pidgin_plugin_dialog_show, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_PLUGINS },
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2846 { N_("/Tools/Pr_eferences"), "<CTL>P", pidgin_prefs_show, 0, "<StockItem>", GTK_STOCK_PREFERENCES },
15614
8dcd6c09d69a Remove excess menu item icon clutter, especialy where our icons made no sense. The Redo icon for Buddy Pounces?! Come on.
Sean Egan <seanegan@pidgin.im>
parents: 15606
diff changeset
2847 { N_("/Tools/Pr_ivacy"), NULL, pidgin_privacy_dialog_show, 0, "<Item>", NULL },
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2848 { "/Tools/sep2", NULL, NULL, 0, "<Separator>", NULL },
16263
27e0ef0f38e6 Word on the street is that we don't want things named pidginfoo_bar(), but
Richard Laager <rlaager@pidgin.im>
parents: 16259
diff changeset
2849 { N_("/Tools/_File Transfers"), "<CTL>T", pidgin_xfer_dialog_show, 0, "<Item>", NULL },
15614
8dcd6c09d69a Remove excess menu item icon clutter, especialy where our icons made no sense. The Redo icon for Buddy Pounces?! Come on.
Sean Egan <seanegan@pidgin.im>
parents: 15606
diff changeset
2850 { N_("/Tools/R_oom List"), NULL, pidgin_roomlist_dialog_show, 0, "<Item>", NULL },
8dcd6c09d69a Remove excess menu item icon clutter, especialy where our icons made no sense. The Redo icon for Buddy Pounces?! Come on.
Sean Egan <seanegan@pidgin.im>
parents: 15606
diff changeset
2851 { N_("/Tools/System _Log"), NULL, gtk_blist_show_systemlog_cb, 0, "<Item>", NULL },
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2852 { "/Tools/sep3", NULL, NULL, 0, "<Separator>", NULL },
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
2853 { N_("/Tools/Mute _Sounds"), "<CTL>S", pidgin_blist_mute_sounds_cb, 0, "<CheckItem>", NULL },
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2854
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2855 /* Help */
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
2856 { N_("/_Help"), NULL, NULL, 0, "<Branch>", NULL },
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2857 { N_("/Help/Online _Help"), "F1", gtk_blist_show_onlinehelp_cb, 0, "<StockItem>", GTK_STOCK_HELP },
15614
8dcd6c09d69a Remove excess menu item icon clutter, especialy where our icons made no sense. The Redo icon for Buddy Pounces?! Come on.
Sean Egan <seanegan@pidgin.im>
parents: 15606
diff changeset
2858 { N_("/Help/_Debug Window"), NULL, toggle_debug, 0, "<Item>", NULL },
16263
27e0ef0f38e6 Word on the street is that we don't want things named pidginfoo_bar(), but
Richard Laager <rlaager@pidgin.im>
parents: 16259
diff changeset
2859 { N_("/Help/_About"), NULL, pidgin_dialogs_about, 0, "<StockItem>", PIDGIN_STOCK_ABOUT },
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2860 };
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2861
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2862 /*********************************************************
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2863 * Private Utility functions *
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2864 *********************************************************/
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2865
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2866 static char *pidgin_get_tooltip_text(PurpleBlistNode *node, gboolean full)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2867 {
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2868 GString *str = g_string_new("");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2869 PurplePlugin *prpl;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2870 PurplePluginProtocolInfo *prpl_info = NULL;
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2871 char *tmp;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2872
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2873 if (PURPLE_BLIST_NODE_IS_CHAT(node))
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2874 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2875 PurpleChat *chat;
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2876 GList *cur;
5274
71553f31db2e [gaim-migrate @ 5646]
Nathan Walp <nwalp@pidgin.im>
parents: 5273
diff changeset
2877 struct proto_chat_entry *pce;
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2878 char *name, *value;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2879
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2880 chat = (PurpleChat *)node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2881 prpl = purple_find_prpl(purple_account_get_protocol_id(chat->account));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2882 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2883
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2884 if (g_list_length(purple_connections_get_all()) > 1)
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2885 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2886 tmp = g_markup_escape_text(chat->account->username, -1);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2887 g_string_append_printf(str, _("\n<b>Account:</b> %s"), tmp);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2888 g_free(tmp);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2889 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2890
9959
e80396496a78 [gaim-migrate @ 10866]
Luke Schierer <lschiere@pidgin.im>
parents: 9954
diff changeset
2891 if (prpl_info->chat_info != NULL)
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2892 cur = prpl_info->chat_info(chat->account->gc);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2893 else
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2894 cur = NULL;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2895
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2896 while (cur != NULL)
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2897 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2898 pce = cur->data;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2899
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2900 if (!pce->secret && (!pce->required &&
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2901 g_hash_table_lookup(chat->components, pce->identifier) == NULL))
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2902 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2903 tmp = purple_text_strip_mnemonic(pce->label);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2904 name = g_markup_escape_text(tmp, -1);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2905 g_free(tmp);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2906 value = g_markup_escape_text(g_hash_table_lookup(
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2907 chat->components, pce->identifier), -1);
10924
248233a58180 [gaim-migrate @ 12695]
Daniel Atallah <datallah@pidgin.im>
parents: 10918
diff changeset
2908 g_string_append_printf(str, "\n<b>%s</b> %s",
248233a58180 [gaim-migrate @ 12695]
Daniel Atallah <datallah@pidgin.im>
parents: 10918
diff changeset
2909 name ? name : "",
248233a58180 [gaim-migrate @ 12695]
Daniel Atallah <datallah@pidgin.im>
parents: 10918
diff changeset
2910 value ? value : "");
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2911 g_free(name);
8020
9c5ae652fc7f [gaim-migrate @ 8700]
Nathan Walp <nwalp@pidgin.im>
parents: 8003
diff changeset
2912 g_free(value);
9c5ae652fc7f [gaim-migrate @ 8700]
Nathan Walp <nwalp@pidgin.im>
parents: 8003
diff changeset
2913 }
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2914
5274
71553f31db2e [gaim-migrate @ 5646]
Nathan Walp <nwalp@pidgin.im>
parents: 5273
diff changeset
2915 g_free(pce);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2916 cur = g_list_remove(cur, pce);
5274
71553f31db2e [gaim-migrate @ 5646]
Nathan Walp <nwalp@pidgin.im>
parents: 5273
diff changeset
2917 }
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2918 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2919 else if (PURPLE_BLIST_NODE_IS_CONTACT(node) || PURPLE_BLIST_NODE_IS_BUDDY(node))
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2920 {
15209
9dd48f6c8805 [gaim-migrate @ 17933]
Evan Schoenberg <evands@pidgin.im>
parents: 15206
diff changeset
2921 /* NOTE: THIS FUNCTION IS NO LONGER CALLED FOR CONTACTS.
9dd48f6c8805 [gaim-migrate @ 17933]
Evan Schoenberg <evands@pidgin.im>
parents: 15206
diff changeset
2922 * It is only called by create_tip_for_node(), and create_tip_for_node() is never called for a contact.
9dd48f6c8805 [gaim-migrate @ 17933]
Evan Schoenberg <evands@pidgin.im>
parents: 15206
diff changeset
2923 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2924 PurpleContact *c;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2925 PurpleBuddy *b;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2926 PurplePresence *presence;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2927 PurpleNotifyUserInfo *user_info;
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2928 char *tmp;
10567
87b02dd40349 [gaim-migrate @ 11951]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10544
diff changeset
2929 time_t idle_secs, signon;
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2930
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2931 if (PURPLE_BLIST_NODE_IS_CONTACT(node))
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2932 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2933 c = (PurpleContact *)node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2934 b = purple_contact_get_priority_buddy(c);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2935 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2936 else
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2937 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2938 b = (PurpleBuddy *)node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2939 c = purple_buddy_get_contact(b);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
2940 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
2941
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2942 prpl = purple_find_prpl(purple_account_get_protocol_id(b->account));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2943 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2944
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2945 presence = purple_buddy_get_presence(b);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2946 user_info = purple_notify_user_info_new();
15206
70520a610969 [gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents: 15177
diff changeset
2947
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2948 /* Account */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2949 if (full && g_list_length(purple_connections_get_all()) > 1)
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2950 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2951 tmp = g_markup_escape_text(purple_account_get_username(
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2952 purple_buddy_get_account(b)), -1);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2953 purple_notify_user_info_add_pair(user_info, _("Account"), tmp);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2954 g_free(tmp);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2955 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2956
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2957 /* Alias */
12942
b0b4accb55fb [gaim-migrate @ 15295]
Richard Laager <rlaager@pidgin.im>
parents: 12941
diff changeset
2958 /* If there's not a contact alias, the node is being displayed with
b0b4accb55fb [gaim-migrate @ 15295]
Richard Laager <rlaager@pidgin.im>
parents: 12941
diff changeset
2959 * this alias, so there's no point in showing it in the tooltip. */
b0b4accb55fb [gaim-migrate @ 15295]
Richard Laager <rlaager@pidgin.im>
parents: 12941
diff changeset
2960 if (full && b->alias != NULL && b->alias[0] != '\0' &&
13218
47708e4d453e [gaim-migrate @ 15581]
Richard Laager <rlaager@pidgin.im>
parents: 13202
diff changeset
2961 (c->alias != NULL && c->alias[0] != '\0') &&
47708e4d453e [gaim-migrate @ 15581]
Richard Laager <rlaager@pidgin.im>
parents: 13202
diff changeset
2962 strcmp(c->alias, b->alias) != 0)
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2963 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2964 tmp = g_markup_escape_text(b->alias, -1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2965 purple_notify_user_info_add_pair(user_info, _("Buddy Alias"), tmp);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2966 g_free(tmp);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2967 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2968
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2969 /* Nickname/Server Alias */
12966
4ef0b7997610 [gaim-migrate @ 15319]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
2970 /* I'd like to only show this if there's a contact or buddy
4ef0b7997610 [gaim-migrate @ 15319]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
2971 * alias, but many people on MSN set long nicknames, which
4ef0b7997610 [gaim-migrate @ 15319]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
2972 * get ellipsized, so the only way to see the whole thing is
4ef0b7997610 [gaim-migrate @ 15319]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
2973 * to look at the tooltip. */
4ef0b7997610 [gaim-migrate @ 15319]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
2974 if (full && b->server_alias != NULL && b->server_alias[0] != '\0')
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2975 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2976 tmp = g_markup_escape_text(b->server_alias, -1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2977 purple_notify_user_info_add_pair(user_info, _("Nickname"), tmp);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2978 g_free(tmp);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2979 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2980
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2981 /* Logged In */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2982 signon = purple_presence_get_login_time(presence);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2983 if (full && PURPLE_BUDDY_IS_ONLINE(b) && signon > 0)
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2984 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2985 tmp = purple_str_seconds_to_string(time(NULL) - signon);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2986 purple_notify_user_info_add_pair(user_info, _("Logged In"), tmp);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2987 g_free(tmp);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2988 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2989
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2990 /* Idle */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2991 if (purple_presence_is_idle(presence))
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2992 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2993 idle_secs = purple_presence_get_idle_time(presence);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2994 if (idle_secs > 0)
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2995 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2996 tmp = purple_str_seconds_to_string(time(NULL) - idle_secs);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2997 purple_notify_user_info_add_pair(user_info, _("Idle"), tmp);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2998 g_free(tmp);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
2999 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
3000 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
3001
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
3002 /* Last Seen */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3003 if (full && !PURPLE_BUDDY_IS_ONLINE(b))
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
3004 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3005 struct _pidgin_blist_node *gtknode = ((PurpleBlistNode *)c)->ui_data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3006 PurpleBlistNode *bnode;
11023
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
3007 int lastseen = 0;
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
3008
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3009 if (!gtknode->contact_expanded || PURPLE_BLIST_NODE_IS_CONTACT(node))
11023
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
3010 {
11437
20ba0815b4f8 [gaim-migrate @ 13674]
Richard Laager <rlaager@pidgin.im>
parents: 11436
diff changeset
3011 /* We're either looking at a buddy for a collapsed contact or
11438
46e5a461d0aa [gaim-migrate @ 13675]
Richard Laager <rlaager@pidgin.im>
parents: 11437
diff changeset
3012 * an expanded contact itself so we show the most recent
11023
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
3013 * (largest) last_seen time for any of the buddies under
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
3014 * the contact. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3015 for (bnode = ((PurpleBlistNode *)c)->child ; bnode != NULL ; bnode = bnode->next)
11023
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
3016 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3017 int value = purple_blist_node_get_int(bnode, "last_seen");
11023
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
3018 if (value > lastseen)
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
3019 lastseen = value;
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
3020 }
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
3021 }
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
3022 else
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
3023 {
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
3024 /* We're dealing with a buddy under an expanded contact,
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
3025 * so we show the last_seen time for the buddy. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3026 lastseen = purple_blist_node_get_int(&b->node, "last_seen");
11023
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
3027 }
1e39a0e74a18 [gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents: 11018
diff changeset
3028
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
3029 if (lastseen > 0)
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
3030 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3031 tmp = purple_str_seconds_to_string(time(NULL) - lastseen);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3032 purple_notify_user_info_add_pair(user_info, _("Last Seen"), tmp);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
3033 g_free(tmp);
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
3034 }
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
3035 }
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
3036
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
3037
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
3038 /* Offline? */
12970
c2f3b4dcf711 [gaim-migrate @ 15323]
Richard Laager <rlaager@pidgin.im>
parents: 12966
diff changeset
3039 /* FIXME: Why is this status special-cased by the core? -- rlaager */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3040 if (!PURPLE_BUDDY_IS_ONLINE(b)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3041 purple_notify_user_info_add_pair(user_info, _("Status"), _("Offline"));
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
3042 }
10992
ccf59743dae4 [gaim-migrate @ 12830]
Daniel Atallah <datallah@pidgin.im>
parents: 10968
diff changeset
3043
ccf59743dae4 [gaim-migrate @ 12830]
Daniel Atallah <datallah@pidgin.im>
parents: 10968
diff changeset
3044 if (prpl_info && prpl_info->tooltip_text)
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
3045 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
3046 /* Additional text from the PRPL */
15206
70520a610969 [gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents: 15177
diff changeset
3047 prpl_info->tooltip_text(b, user_info, full);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
3048 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
3049
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
3050 /* These are Easter Eggs. Patches to remove them will be rejected. */
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
3051 if (!g_ascii_strcasecmp(b->name, "robflynn"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3052 purple_notify_user_info_add_pair(user_info, _("Description"), _("Spooky"));
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
3053 if (!g_ascii_strcasecmp(b->name, "seanegn"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3054 purple_notify_user_info_add_pair(user_info, _("Status"), _("Awesome"));
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
3055 if (!g_ascii_strcasecmp(b->name, "chipx86"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3056 purple_notify_user_info_add_pair(user_info, _("Status"), _("Rockin'"));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3057
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3058 tmp = purple_notify_user_info_get_text_with_newline(user_info, "\n");
15206
70520a610969 [gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents: 15177
diff changeset
3059 g_string_append(str, tmp);
70520a610969 [gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents: 15177
diff changeset
3060 g_free(tmp);
70520a610969 [gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents: 15177
diff changeset
3061
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3062 purple_notify_user_info_destroy(user_info);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3063 }
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3064
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3065 purple_signal_emit(pidgin_blist_get_handle(),
12713
6f057a6e0516 [gaim-migrate @ 15057]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12679
diff changeset
3066 "drawing-tooltip", node, str, full);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
3067
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
3068 return g_string_free(str, FALSE);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3069 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3070
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3071 GdkPixbuf *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3072 pidgin_blist_get_emblem(PurpleBlistNode *node)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3073 {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3074 PurpleBuddy *buddy = NULL;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3075 struct _pidgin_blist_node *gtknode = node->ui_data;
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3076 struct _pidgin_blist_node *gtkbuddynode = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3077 PurplePlugin *prpl;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3078 PurplePluginProtocolInfo *prpl_info;
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3079 const char *name = NULL;
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3080 char *filename, *path;
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3081 GdkPixbuf *ret;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3082 PurplePresence *p;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3083
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3084
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3085
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3086 if(PURPLE_BLIST_NODE_IS_CONTACT(node)) {
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3087 if(!gtknode->contact_expanded) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3088 buddy = purple_contact_get_priority_buddy((PurpleContact*)node);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3089 gtkbuddynode = ((PurpleBlistNode*)buddy)->ui_data;
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3090 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3091 } else if(PURPLE_BLIST_NODE_IS_BUDDY(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3092 buddy = (PurpleBuddy*)node;
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3093 gtkbuddynode = node->ui_data;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3094 if (((struct _pidgin_blist_node*)(node->parent->ui_data))->contact_expanded)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3095 return pidgin_create_prpl_icon(((PurpleBuddy*)node)->account, PIDGIN_PRPL_ICON_SMALL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3096 } else if(PURPLE_BLIST_NODE_IS_CHAT(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3097 return pidgin_create_prpl_icon(((PurpleChat*)node)->account, PIDGIN_PRPL_ICON_SMALL);
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3098 } else {
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3099 return NULL;
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3100 }
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
3101
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3102 if (!purple_privacy_check(buddy->account, purple_buddy_get_name(buddy))) {
15561
bdb019a1f485 Blocked emblem
Sean Egan <seanegan@pidgin.im>
parents: 15559
diff changeset
3103 path = g_build_filename(DATADIR, "pixmaps", "pidgin", "emblems", "16", "blocked.png", NULL);
15588
e6e89a427ed5 Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
3104 ret = gdk_pixbuf_new_from_file(path, NULL);
e6e89a427ed5 Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
3105 g_free(path);
e6e89a427ed5 Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
3106 return ret;
e6e89a427ed5 Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
3107 }
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
3108
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3109 p = purple_buddy_get_presence(buddy);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3110 if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_MOBILE)) {
15588
e6e89a427ed5 Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
3111 path = g_build_filename(DATADIR, "pixmaps", "pidgin", "emblems", "16", "mobile.png", NULL);
e6e89a427ed5 Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
3112 ret = gdk_pixbuf_new_from_file(path, NULL);
e6e89a427ed5 Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents: 15577
diff changeset
3113 g_free(path);
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
3114 return ret;
15561
bdb019a1f485 Blocked emblem
Sean Egan <seanegan@pidgin.im>
parents: 15559
diff changeset
3115 }
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3116
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3117 prpl = purple_find_prpl(purple_account_get_protocol_id(buddy->account));
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3118 if (!prpl)
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3119 return NULL;
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3120
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3121 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3122 if (prpl_info && prpl_info->list_emblem)
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3123 name = prpl_info->list_emblem(buddy);
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3124
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3125 if (name == NULL)
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3126 return NULL;
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3127
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3128 filename = g_strdup_printf("%s.png", name);
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3129
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3130 path = g_build_filename(DATADIR, "pixmaps", "pidgin", "emblems", "16", filename, NULL);
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3131 ret = gdk_pixbuf_new_from_file(path, NULL);
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
3132
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3133 g_free(filename);
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3134 g_free(path);
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3135
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3136 return ret;
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3137 }
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
3138
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3139
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
3140 GdkPixbuf *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3141 pidgin_blist_get_status_icon(PurpleBlistNode *node, PidginStatusIconSize size)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3142 {
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
3143 GdkPixbuf *ret;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3144 const char *protoname = NULL;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3145 struct _pidgin_blist_node *gtknode = node->ui_data;
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3146 struct _pidgin_blist_node *gtkbuddynode = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3147 PurpleBuddy *buddy = NULL;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3148 PurpleChat *chat = NULL;
15606
a070ac7366f8 Perhaps a 22px icon is better in the tooltip
Sean Egan <seanegan@pidgin.im>
parents: 15588
diff changeset
3149 GtkIconSize icon_size = gtk_icon_size_from_name((size == PIDGIN_STATUS_ICON_LARGE) ? PIDGIN_ICON_SIZE_TANGO_SMALL :
15497
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
3150 PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3151
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3152 if(PURPLE_BLIST_NODE_IS_CONTACT(node)) {
11910
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
3153 if(!gtknode->contact_expanded) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3154 buddy = purple_contact_get_priority_buddy((PurpleContact*)node);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3155 gtkbuddynode = ((PurpleBlistNode*)buddy)->ui_data;
11910
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
3156 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3157 } else if(PURPLE_BLIST_NODE_IS_BUDDY(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3158 buddy = (PurpleBuddy*)node;
11910
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
3159 gtkbuddynode = node->ui_data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3160 } else if(PURPLE_BLIST_NODE_IS_CHAT(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3161 chat = (PurpleChat*)node;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3162 } else {
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3163 return NULL;
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
3164 }
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
3165
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3166 if(buddy || chat) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3167 PurpleAccount *account;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3168 PurplePlugin *prpl;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3169 PurplePluginProtocolInfo *prpl_info;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3170
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3171 if(buddy)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3172 account = buddy->account;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3173 else
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3174 account = chat->account;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3175
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3176 prpl = purple_find_prpl(purple_account_get_protocol_id(account));
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3177 if(!prpl)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3178 return NULL;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3179
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3180 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3181
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3182 if(prpl_info && prpl_info->list_icon) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3183 protoname = prpl_info->list_icon(account, buddy);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3184 }
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
3185 }
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
3186
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
3187 if(buddy) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3188 PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3189 purple_buddy_get_name(buddy),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3190 purple_buddy_get_account(buddy));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3191 PurplePresence *p;
15559
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3192 if(conv != NULL) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3193 PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv);
15569
e85adc8d3b5c gtkblist changes to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
3194 if(gtkconv != NULL && pidgin_conv_is_hidden(gtkconv) && size == PIDGIN_STATUS_ICON_SMALL) {
15559
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3195 return gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_MESSAGE,
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3196 icon_size, "GtkTreeView");
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3197 }
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3198 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3199 p = purple_buddy_get_presence(buddy);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3200
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3201 if (PURPLE_BUDDY_IS_ONLINE(buddy) && gtkbuddynode && gtkbuddynode->recent_signonoff)
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3202 ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_LOGIN,
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3203 icon_size, "GtkTreeView");
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3204 else if (gtkbuddynode && gtkbuddynode->recent_signonoff)
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3205 ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_LOGOUT,
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3206 icon_size, "GtkTreeView");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3207 else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_UNAVAILABLE))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3208 if (purple_presence_is_idle(p) && size == PIDGIN_STATUS_ICON_SMALL)
15554
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3209 ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_BUSY_I,
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3210 icon_size, "GtkTreeView");
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3211 else
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3212 ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_BUSY,
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3213 icon_size, "GtkTreeView");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3214 else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_AWAY))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3215 if (purple_presence_is_idle(p) && size == PIDGIN_STATUS_ICON_SMALL)
15554
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3216 ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_AWAY_I,
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3217 icon_size, "GtkTreeView");
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3218 else
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3219 ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_AWAY,
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3220 icon_size, "GtkTreeView");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3221 else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_EXTENDED_AWAY))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3222 if (purple_presence_is_idle(p) && size == PIDGIN_STATUS_ICON_SMALL)
15554
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3223 ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_XA_I,
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3224 icon_size, "GtkTreeView");
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3225 else
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3226 ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_XA,
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3227 icon_size, "GtkTreeView");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3228 else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_OFFLINE))
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3229 ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_OFFLINE,
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3230 icon_size, "GtkTreeView");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3231 else if (purple_presence_is_idle(p) && size == PIDGIN_STATUS_ICON_SMALL)
15554
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3232 ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_AVAILABLE_I,
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3233 icon_size, "GtkTreeView");
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3234 else
15554
9a0b1403e7f2 Faded idle status icons
Sean Egan <seanegan@pidgin.im>
parents: 15552
diff changeset
3235 ret = gtk_widget_render_icon(GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_AVAILABLE,
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3236 icon_size, "GtkTreeView");
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3237 } else if (chat) {
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3238 ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_CHAT,
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3239 icon_size, "GtkTreeView");
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3240 } else {
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3241 ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_PERSON,
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3242 icon_size, "GtkTreeView");
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
3243 }
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
3244
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
3245 return ret;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3246 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3247
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3248 static gchar *pidgin_blist_get_name_markup(PurpleBuddy *b, gboolean selected)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3249 {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3250 const char *name;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3251 char *esc, *text = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3252 PurplePlugin *prpl;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3253 PurplePluginProtocolInfo *prpl_info = NULL;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3254 PurpleContact *contact;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3255 PurplePresence *presence;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3256 struct _pidgin_blist_node *gtkcontactnode = NULL;
11257
9743367c935e [gaim-migrate @ 13432]
Sean Egan <seanegan@pidgin.im>
parents: 11256
diff changeset
3257 char *idletime = NULL, *statustext = NULL;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3258 time_t t;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3259 PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3260 purple_buddy_get_name(b),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3261 purple_buddy_get_account(b));
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3262 PidginConversation *gtkconv;
15559
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3263 gboolean hidden_conv = FALSE;
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3264
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3265 if(conv != NULL) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3266 gtkconv = PIDGIN_CONVERSATION(conv);
15563
9eea2b8c2846 pidginconv to pidgin_conv
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
3267 if(gtkconv != NULL && pidgin_conv_is_hidden(gtkconv)) {
15559
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3268 hidden_conv = TRUE;
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3269 }
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3270 }
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
3271
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3272 /* XXX Good luck cleaning up this crap */
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3273
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3274 contact = (PurpleContact*)((PurpleBlistNode*)b)->parent;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3275 if(contact)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3276 gtkcontactnode = ((PurpleBlistNode*)contact)->ui_data;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3277
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3278 if(gtkcontactnode && !gtkcontactnode->contact_expanded && contact->alias)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3279 name = contact->alias;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3280 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3281 name = purple_buddy_get_alias(b);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3282 esc = g_markup_escape_text(name, strlen(name));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3283
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3284 presence = purple_buddy_get_presence(b);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3285
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
3286 if (!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"))
13034
cfeb9826ba96 [gaim-migrate @ 15392]
Richard Laager <rlaager@pidgin.im>
parents: 13030
diff changeset
3287 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3288 if (!selected && purple_presence_is_idle(presence))
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
3289 {
10118
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
3290 text = g_strdup_printf("<span color='%s'>%s</span>",
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
3291 dim_grey(), esc);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3292 g_free(esc);
15559
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3293 if (hidden_conv) {
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3294 char *tmp = text;
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3295 text = g_strdup_printf("<b>%s</b>", text);
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3296 g_free(tmp);
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3297 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3298 return text;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3299 }
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
3300 else
15559
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3301 if (hidden_conv) {
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3302 char *tmp = esc;
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3303 esc = g_strdup_printf("<b>%s</b>", esc);
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3304 g_free(tmp);
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3305 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3306 return esc;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3307 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3308
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3309 prpl = purple_find_prpl(purple_account_get_protocol_id(b->account));
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3310
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3311 if (prpl != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3312 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3313
8122
64dc12809940 [gaim-migrate @ 8826]
Christian Hammond <chipx86@chipx86.com>
parents: 8113
diff changeset
3314 if (prpl_info && prpl_info->status_text && b->account->gc) {
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3315 char *tmp = prpl_info->status_text(b);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3316 const char *end;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3317
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3318 if(tmp && !g_utf8_validate(tmp, -1, &end)) {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3319 char *new = g_strndup(tmp,
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3320 g_utf8_pointer_to_offset(tmp, end));
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3321 g_free(tmp);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3322 tmp = new;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3323 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3324
10288
fc688f632351 [gaim-migrate @ 11462]
Nathan Walp <nwalp@pidgin.im>
parents: 10287
diff changeset
3325 #if !GTK_CHECK_VERSION(2,6,0)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3326 if(tmp) {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3327 char buf[32];
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3328 char *c = tmp;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3329 int length = 0, vis=0;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3330 gboolean inside = FALSE;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3331 g_strdelimit(tmp, "\n", ' ');
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3332 purple_str_strip_char(tmp, '\r');
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3333
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3334 while(*c && vis < 20) {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3335 if(*c == '&')
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3336 inside = TRUE;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3337 else if(*c == ';')
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3338 inside = FALSE;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3339 if(!inside)
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3340 vis++;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3341 c = g_utf8_next_char(c); /* this is fun */
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3342 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3343
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3344 length = c - tmp;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3345
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3346 if(vis == 20)
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3347 g_snprintf(buf, sizeof(buf), "%%.%ds...", length);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3348 else
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3349 g_snprintf(buf, sizeof(buf), "%%s ");
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3350
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3351 statustext = g_strdup_printf(buf, tmp);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3352
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3353 g_free(tmp);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3354 }
10288
fc688f632351 [gaim-migrate @ 11462]
Nathan Walp <nwalp@pidgin.im>
parents: 10287
diff changeset
3355 #else
13792
ceb938a873da [gaim-migrate @ 16202]
Joshua Honeycutt <coweater@users.sourceforge.net>
parents: 13768
diff changeset
3356 if(tmp) {
12437
8273decd4841 [gaim-migrate @ 14744]
Nathan Walp <nwalp@pidgin.im>
parents: 12436
diff changeset
3357 g_strdelimit(tmp, "\n", ' ');
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3358 purple_str_strip_char(tmp, '\r');
13792
ceb938a873da [gaim-migrate @ 16202]
Joshua Honeycutt <coweater@users.sourceforge.net>
parents: 13768
diff changeset
3359 }
10288
fc688f632351 [gaim-migrate @ 11462]
Nathan Walp <nwalp@pidgin.im>
parents: 10287
diff changeset
3360 statustext = tmp;
fc688f632351 [gaim-migrate @ 11462]
Nathan Walp <nwalp@pidgin.im>
parents: 10287
diff changeset
3361 #endif
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3362 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3363
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3364 if(!purple_presence_is_online(presence) && !statustext)
13034
cfeb9826ba96 [gaim-migrate @ 15392]
Richard Laager <rlaager@pidgin.im>
parents: 13030
diff changeset
3365 statustext = g_strdup(_("Offline"));
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3366 else if (!statustext)
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3367 text = g_strdup(esc);
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
3368
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3369 if (purple_presence_is_idle(presence)) {
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
3370 if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_idle_time")) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3371 time_t idle_secs = purple_presence_get_idle_time(presence);
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3372
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3373 if (idle_secs > 0) {
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3374 int ihrs, imin;
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3375
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3376 time(&t);
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3377 ihrs = (t - idle_secs) / 3600;
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3378 imin = ((t - idle_secs) / 60) % 60;
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3379
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3380 if (ihrs)
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3381 idletime = g_strdup_printf(_("Idle %dh %02dm"), ihrs, imin);
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3382 else
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3383 idletime = g_strdup_printf(_("Idle %dm"), imin);
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3384 }
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3385 else
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3386 idletime = g_strdup(_("Idle"));
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3387
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3388 if (!selected)
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3389 text = g_strdup_printf("<span color='%s'>%s</span>\n"
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3390 "<span color='%s' size='smaller'>%s%s%s</span>",
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3391 dim_grey(), esc, dim_grey(),
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3392 idletime != NULL ? idletime : "",
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3393 (idletime != NULL && statustext != NULL) ? " - " : "",
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3394 statustext != NULL ? statustext : "");
13034
cfeb9826ba96 [gaim-migrate @ 15392]
Richard Laager <rlaager@pidgin.im>
parents: 13030
diff changeset
3395 }
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3396 else if (!selected && !statustext) /* We handle selected text later */
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3397 text = g_strdup_printf("<span color='%s'>%s</span>", dim_grey(), esc);
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3398 else if (!selected && !text)
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3399 text = g_strdup_printf("<span color='%s'>%s</span>\n"
14199
6a78ca00a50f [gaim-migrate @ 16779]
Daniel Atallah <datallah@pidgin.im>
parents: 14195
diff changeset
3400 "<span color='%s' size='smaller'>%s</span>",
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3401 dim_grey(), esc, dim_grey(),
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3402 statustext != NULL ? statustext : "");
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3403 }
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3404
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3405 /* Not idle and not selected */
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3406 else if (!selected && !text)
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3407 {
13202
f5f21ca5b5a6 [gaim-migrate @ 15564]
Richard Laager <rlaager@pidgin.im>
parents: 13197
diff changeset
3408 text = g_strdup_printf("%s\n"
14136
0259a51abd4a [gaim-migrate @ 16695]
Daniel Atallah <datallah@pidgin.im>
parents: 14097
diff changeset
3409 "<span color='%s' size='smaller'>%s</span>",
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3410 esc, dim_grey(),
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3411 statustext != NULL ? statustext : "");
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3412 }
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3413
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3414 /* It is selected. */
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
3415 if ((selected && !text) || (selected && idletime))
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3416 text = g_strdup_printf("%s\n"
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3417 "<span size='smaller'>%s%s%s</span>",
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3418 esc,
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3419 idletime != NULL ? idletime : "",
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3420 (idletime != NULL && statustext != NULL) ? " - " : "",
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3421 statustext != NULL ? statustext : "");
12656
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
3422
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
3423 g_free(idletime);
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
3424 g_free(statustext);
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
3425 g_free(esc);
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
3426
15559
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3427 if (hidden_conv) {
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3428 char *tmp = text;
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3429 text = g_strdup_printf("<b>%s</b>", tmp);
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3430 g_free(tmp);
58a8f57c6970 Restore 'hidden convo' status icon in blist. Additionally, make the name text bold when you have a hidden convo
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
3431 }
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
3432
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3433 return text;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3434 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3435
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3436 static void pidgin_blist_restore_position()
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3437 {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3438 int blist_x, blist_y, blist_width, blist_height;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3439
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
3440 blist_width = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/width");
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3441
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3442 /* if the window exists, is hidden, we're saving positions, and the
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3443 * position is sane... */
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3444 if (gtkblist && gtkblist->window &&
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3445 !GTK_WIDGET_VISIBLE(gtkblist->window) && blist_width != 0) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3446
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
3447 blist_x = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/x");
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
3448 blist_y = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/y");
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
3449 blist_height = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/height");
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3450
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3451 /* ...check position is on screen... */
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3452 if (blist_x >= gdk_screen_width())
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3453 blist_x = gdk_screen_width() - 100;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3454 else if (blist_x + blist_width < 0)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3455 blist_x = 100;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3456
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3457 if (blist_y >= gdk_screen_height())
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3458 blist_y = gdk_screen_height() - 100;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3459 else if (blist_y + blist_height < 0)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3460 blist_y = 100;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3461
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3462 /* ...and move it back. */
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3463 gtk_window_move(GTK_WINDOW(gtkblist->window), blist_x, blist_y);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3464 gtk_window_resize(GTK_WINDOW(gtkblist->window), blist_width, blist_height);
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
3465 if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/list_maximized"))
12279
9418540cb3bb [gaim-migrate @ 14583]
Casey Harkins <charkins@pidgin.im>
parents: 12246
diff changeset
3466 gtk_window_maximize(GTK_WINDOW(gtkblist->window));
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3467 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3468 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3469
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3470 static gboolean pidgin_blist_refresh_timer(PurpleBuddyList *list)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3471 {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3472 PurpleBlistNode *gnode, *cnode;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3473
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3474 if (gtk_blist_obscured || !GTK_WIDGET_VISIBLE(gtkblist->window))
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
3475 return TRUE;
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
3476
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3477 for(gnode = list->root; gnode; gnode = gnode->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3478 if(!PURPLE_BLIST_NODE_IS_GROUP(gnode))
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
3479 continue;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3480 for(cnode = gnode->child; cnode; cnode = cnode->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3481 if(PURPLE_BLIST_NODE_IS_CONTACT(cnode)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3482 PurpleBuddy *buddy;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3483
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3484 buddy = purple_contact_get_priority_buddy((PurpleContact*)cnode);
10012
da9fdfbf4c5a [gaim-migrate @ 10929]
Nathan Walp <nwalp@pidgin.im>
parents: 10006
diff changeset
3485
da9fdfbf4c5a [gaim-migrate @ 10929]
Nathan Walp <nwalp@pidgin.im>
parents: 10006
diff changeset
3486 if (buddy &&
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3487 purple_presence_is_idle(purple_buddy_get_presence(buddy)))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3488 pidgin_blist_update_contact(list, (PurpleBlistNode*)buddy);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3489 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3490 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3491 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3492
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3493 /* keep on going */
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3494 return TRUE;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3495 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3496
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3497 static void pidgin_blist_hide_node(PurpleBuddyList *list, PurpleBlistNode *node, gboolean update)
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3498 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3499 struct _pidgin_blist_node *gtknode = (struct _pidgin_blist_node *)node->ui_data;
5260
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3500 GtkTreeIter iter;
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3501
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3502 if (!gtknode || !gtknode->row || !gtkblist)
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3503 return;
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3504
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3505 if(gtkblist->selected_node == node)
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3506 gtkblist->selected_node = NULL;
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3507 if (get_iter_from_node(node, &iter)) {
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3508 gtk_tree_store_remove(gtkblist->treemodel, &iter);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3509 if(update && (PURPLE_BLIST_NODE_IS_CONTACT(node) ||
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3510 PURPLE_BLIST_NODE_IS_BUDDY(node) || PURPLE_BLIST_NODE_IS_CHAT(node))) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3511 pidgin_blist_update(list, node->parent);
5260
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3512 }
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3513 }
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3514 gtk_tree_row_reference_free(gtknode->row);
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3515 gtknode->row = NULL;
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3516 }
7c37cf580e7c [gaim-migrate @ 5632]
Ethan Blanton <elb@pidgin.im>
parents: 5256
diff changeset
3517
10352
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3518 static const char *require_connection[] =
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3519 {
10352
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3520 N_("/Buddies/New Instant Message..."),
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3521 N_("/Buddies/Join a Chat..."),
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3522 N_("/Buddies/Get User Info..."),
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3523 N_("/Buddies/Add Buddy..."),
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3524 N_("/Buddies/Add Chat..."),
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3525 N_("/Buddies/Add Group..."),
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3526 };
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3527
10357
f5ad7a664200 [gaim-migrate @ 11575]
Mark Doliner <markdoliner@pidgin.im>
parents: 10354
diff changeset
3528 static const int require_connection_size = sizeof(require_connection)
f5ad7a664200 [gaim-migrate @ 11575]
Mark Doliner <markdoliner@pidgin.im>
parents: 10354
diff changeset
3529 / sizeof(*require_connection);
10352
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3530
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3531 /**
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3532 * Rebuild dynamic menus and make menu items sensitive/insensitive
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3533 * where appropriate.
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3534 */
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3535 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3536 update_menu_bar(PidginBuddyList *gtkblist)
10352
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3537 {
8937
b436e9cbd701 [gaim-migrate @ 9707]
Mark Doliner <markdoliner@pidgin.im>
parents: 8911
diff changeset
3538 GtkWidget *widget;
10352
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3539 gboolean sensitive;
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3540 int i;
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3541
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3542 g_return_if_fail(gtkblist != NULL);
8259
7ed91862683d [gaim-migrate @ 8982]
Christian Hammond <chipx86@chipx86.com>
parents: 8254
diff changeset
3543
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3544 pidgin_blist_update_accounts_menu();
8937
b436e9cbd701 [gaim-migrate @ 9707]
Mark Doliner <markdoliner@pidgin.im>
parents: 8911
diff changeset
3545
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3546 sensitive = (purple_connections_get_all() != NULL);
10352
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3547
10357
f5ad7a664200 [gaim-migrate @ 11575]
Mark Doliner <markdoliner@pidgin.im>
parents: 10354
diff changeset
3548 for (i = 0; i < require_connection_size; i++)
10352
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3549 {
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3550 widget = gtk_item_factory_get_widget(gtkblist->ift, require_connection[i]);
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3551 gtk_widget_set_sensitive(widget, sensitive);
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3552 }
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3553
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
3554 widget = gtk_item_factory_get_widget(gtkblist->ift, N_("/Buddies/Join a Chat..."));
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3555 gtk_widget_set_sensitive(widget, pidgin_blist_joinchat_is_showable());
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8939
diff changeset
3556
11988
7ed733ed806b [gaim-migrate @ 14281]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11986
diff changeset
3557 widget = gtk_item_factory_get_widget(gtkblist->ift, N_("/Buddies/Add Chat..."));
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3558 gtk_widget_set_sensitive(widget, pidgin_blist_joinchat_is_showable());
11988
7ed733ed806b [gaim-migrate @ 14281]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11986
diff changeset
3559
12136
027b7ebee256 [gaim-migrate @ 14436]
Kevin Stange <kstange@pidgin.im>
parents: 12133
diff changeset
3560 widget = gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Buddy Pounces"));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3561 gtk_widget_set_sensitive(widget, (purple_accounts_get_all() != NULL));
8938
d13ed7491e43 [gaim-migrate @ 9708]
Mark Doliner <markdoliner@pidgin.im>
parents: 8937
diff changeset
3562
d13ed7491e43 [gaim-migrate @ 9708]
Mark Doliner <markdoliner@pidgin.im>
parents: 8937
diff changeset
3563 widget = gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Privacy"));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3564 gtk_widget_set_sensitive(widget, (purple_connections_get_all() != NULL));
12136
027b7ebee256 [gaim-migrate @ 14436]
Kevin Stange <kstange@pidgin.im>
parents: 12133
diff changeset
3565
027b7ebee256 [gaim-migrate @ 14436]
Kevin Stange <kstange@pidgin.im>
parents: 12133
diff changeset
3566 widget = gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Room List"));
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3567 gtk_widget_set_sensitive(widget, pidgin_roomlist_is_showable());
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3568 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3569
10352
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3570 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3571 sign_on_off_cb(PurpleConnection *gc, PurpleBuddyList *blist)
10352
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3572 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3573 PidginBuddyList *gtkblist = PIDGIN_BLIST(blist);
10352
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3574
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3575 update_menu_bar(gtkblist);
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
3576 }
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
3577
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
3578 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3579 plugin_changed_cb(PurplePlugin *p, gpointer *data)
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
3580 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3581 pidgin_blist_update_plugin_actions();
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
3582 }
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
3583
12133
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3584 static void
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3585 unseen_conv_menu()
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3586 {
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3587 static GtkWidget *menu = NULL;
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3588 GList *convs = NULL;
12133
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3589
15110
2e4ae8a8dcec [gaim-migrate @ 17832]
Daniel Atallah <datallah@pidgin.im>
parents: 15096
diff changeset
3590 if (menu) {
12133
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3591 gtk_widget_destroy(menu);
15110
2e4ae8a8dcec [gaim-migrate @ 17832]
Daniel Atallah <datallah@pidgin.im>
parents: 15096
diff changeset
3592 menu = NULL;
2e4ae8a8dcec [gaim-migrate @ 17832]
Daniel Atallah <datallah@pidgin.im>
parents: 15096
diff changeset
3593 }
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3594
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3595 convs = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_IM, PIDGIN_UNSEEN_TEXT, TRUE, 0);
15110
2e4ae8a8dcec [gaim-migrate @ 17832]
Daniel Atallah <datallah@pidgin.im>
parents: 15096
diff changeset
3596 if (!convs)
12175
3e790a58d906 [gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents: 12163
diff changeset
3597 /* no conversations added, don't show the menu */
12133
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3598 return;
15110
2e4ae8a8dcec [gaim-migrate @ 17832]
Daniel Atallah <datallah@pidgin.im>
parents: 15096
diff changeset
3599
2e4ae8a8dcec [gaim-migrate @ 17832]
Daniel Atallah <datallah@pidgin.im>
parents: 15096
diff changeset
3600 menu = gtk_menu_new();
2e4ae8a8dcec [gaim-migrate @ 17832]
Daniel Atallah <datallah@pidgin.im>
parents: 15096
diff changeset
3601
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3602 pidgin_conversations_fill_menu(menu, convs);
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3603 g_list_free(convs);
12133
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3604 gtk_widget_show_all(menu);
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3605 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 3,
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3606 gtk_get_current_event_time());
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3607 }
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3608
12116
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3609 static gboolean
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3610 menutray_press_cb(GtkWidget *widget, GdkEventButton *event)
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3611 {
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3612 GList *convs;
12208
63faaf557886 [gaim-migrate @ 14510]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12191
diff changeset
3613
12133
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3614 switch (event->button) {
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3615 case 1:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3616 convs = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_IM,
15566
ce486027d329 GAIM_UNSEEN to PIDGIN_UNSEEN
Sean Egan <seanegan@pidgin.im>
parents: 15563
diff changeset
3617 PIDGIN_UNSEEN_TEXT, TRUE, 1);
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3618 if (convs) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3619 purple_conversation_present((PurpleConversation*)convs->data);
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3620 g_list_free(convs);
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3621 }
12133
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3622 break;
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3623 case 3:
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3624 unseen_conv_menu();
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3625 break;
c627533bb7a4 [gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents: 12124
diff changeset
3626 }
12116
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3627 return TRUE;
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3628 }
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3629
14239
661d2bb9eb86 [gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents: 14230
diff changeset
3630 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3631 conversation_updated_cb(PurpleConversation *conv, PurpleConvUpdateType type,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3632 PidginBuddyList *gtkblist)
12116
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3633 {
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3634 GList *convs = NULL;
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3635 GList *l = NULL;
12116
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3636
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3637 if (type != PURPLE_CONV_UPDATE_UNSEEN)
12175
3e790a58d906 [gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents: 12163
diff changeset
3638 return;
3e790a58d906 [gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents: 12163
diff changeset
3639
12744
45d72d69f399 [gaim-migrate @ 15091]
Casey Harkins <charkins@pidgin.im>
parents: 12713
diff changeset
3640 if(conv->account != NULL && conv->name != NULL) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3641 PurpleBuddy *buddy = purple_find_buddy(conv->account, conv->name);
12744
45d72d69f399 [gaim-migrate @ 15091]
Casey Harkins <charkins@pidgin.im>
parents: 12713
diff changeset
3642 if(buddy != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3643 pidgin_blist_update_buddy(NULL, (PurpleBlistNode *)buddy, TRUE);
12744
45d72d69f399 [gaim-migrate @ 15091]
Casey Harkins <charkins@pidgin.im>
parents: 12713
diff changeset
3644 }
45d72d69f399 [gaim-migrate @ 15091]
Casey Harkins <charkins@pidgin.im>
parents: 12713
diff changeset
3645
12175
3e790a58d906 [gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents: 12163
diff changeset
3646 if (gtkblist->menutrayicon) {
12116
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3647 gtk_widget_destroy(gtkblist->menutrayicon);
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3648 gtkblist->menutrayicon = NULL;
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3649 }
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3650
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3651 convs = pidgin_conversations_find_unseen_list(PURPLE_CONV_TYPE_IM, PIDGIN_UNSEEN_TEXT, TRUE, 0);
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3652 if (convs) {
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3653 GtkWidget *img = NULL;
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3654 GString *tooltip_text = NULL;
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3655
12117
b3781ac3f1da [gaim-migrate @ 14417]
Nathan Walp <nwalp@pidgin.im>
parents: 12116
diff changeset
3656 tooltip_text = g_string_new("");
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3657 l = convs;
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3658 while (l != NULL) {
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
3659 if (PIDGIN_IS_PIDGIN_CONVERSATION(l->data)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3660 PidginConversation *gtkconv = PIDGIN_CONVERSATION((PurpleConversation *)l->data);
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3661
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3662 g_string_append_printf(tooltip_text,
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3663 ngettext("%d unread message from %s\n", "%d unread messages from %s\n", gtkconv->unseen_count),
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3664 gtkconv->unseen_count,
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3665 gtk_label_get_text(GTK_LABEL(gtkconv->tab_label)));
12117
b3781ac3f1da [gaim-migrate @ 14417]
Nathan Walp <nwalp@pidgin.im>
parents: 12116
diff changeset
3666 }
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3667 l = l->next;
12117
b3781ac3f1da [gaim-migrate @ 14417]
Nathan Walp <nwalp@pidgin.im>
parents: 12116
diff changeset
3668 }
12239
e4f62729e2c7 [gaim-migrate @ 14541]
Nathan Walp <nwalp@pidgin.im>
parents: 12232
diff changeset
3669 if(tooltip_text->len > 0) {
12302
191d0fc44cfc [gaim-migrate @ 14606]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12301
diff changeset
3670 /* get rid of the last newline */
14239
661d2bb9eb86 [gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents: 14230
diff changeset
3671 g_string_truncate(tooltip_text, tooltip_text->len -1);
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15670
diff changeset
3672 img = gtk_image_new_from_stock(PIDGIN_STOCK_TOOLBAR_PENDING,
15623
bf485c598199 toolbar/menu icons. reduce the imhtmltoolbar spacing. more gaimstock pruning
Sean Egan <seanegan@pidgin.im>
parents: 15622
diff changeset
3673 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL));
12302
191d0fc44cfc [gaim-migrate @ 14606]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12301
diff changeset
3674
191d0fc44cfc [gaim-migrate @ 14606]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12301
diff changeset
3675 gtkblist->menutrayicon = gtk_event_box_new();
191d0fc44cfc [gaim-migrate @ 14606]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12301
diff changeset
3676 gtk_container_add(GTK_CONTAINER(gtkblist->menutrayicon), img);
191d0fc44cfc [gaim-migrate @ 14606]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12301
diff changeset
3677 gtk_widget_show(img);
191d0fc44cfc [gaim-migrate @ 14606]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12301
diff changeset
3678 gtk_widget_show(gtkblist->menutrayicon);
191d0fc44cfc [gaim-migrate @ 14606]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12301
diff changeset
3679 g_signal_connect(G_OBJECT(gtkblist->menutrayicon), "button-press-event", G_CALLBACK(menutray_press_cb), NULL);
191d0fc44cfc [gaim-migrate @ 14606]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12301
diff changeset
3680
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3681 pidgin_menu_tray_append(PIDGIN_MENU_TRAY(gtkblist->menutray), gtkblist->menutrayicon, tooltip_text->str);
12239
e4f62729e2c7 [gaim-migrate @ 14541]
Nathan Walp <nwalp@pidgin.im>
parents: 12232
diff changeset
3682 }
12302
191d0fc44cfc [gaim-migrate @ 14606]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12301
diff changeset
3683 g_string_free(tooltip_text, TRUE);
12468
fe558afb01b4 [gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents: 12466
diff changeset
3684 g_list_free(convs);
12116
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3685 }
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3686 }
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
3687
12208
63faaf557886 [gaim-migrate @ 14510]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12191
diff changeset
3688 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3689 conversation_deleting_cb(PurpleConversation *conv, PidginBuddyList *gtkblist)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3690 {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3691 conversation_updated_cb(conv, PURPLE_CONV_UPDATE_UNSEEN, gtkblist);
12208
63faaf557886 [gaim-migrate @ 14510]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12191
diff changeset
3692 }
63faaf557886 [gaim-migrate @ 14510]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12191
diff changeset
3693
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3694 /**********************************************************************************
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3695 * Public API Functions *
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3696 **********************************************************************************/
9774
220712654b8e [gaim-migrate @ 10642]
Gary Kramlich <grim@pidgin.im>
parents: 9773
diff changeset
3697
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3698 static void pidgin_blist_new_list(PurpleBuddyList *blist)
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3699 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3700 PidginBuddyList *gtkblist;
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3701
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3702 gtkblist = g_new0(PidginBuddyList, 1);
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3703 gtkblist->connection_errors = g_hash_table_new_full(g_direct_hash,
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3704 g_direct_equal, NULL, g_free);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3705 blist->ui_data = gtkblist;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3706 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3707
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3708 static void pidgin_blist_new_node(PurpleBlistNode *node)
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3709 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3710 node->ui_data = g_new0(struct _pidgin_blist_node, 1);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3711 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3712
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3713 gboolean pidgin_blist_node_is_contact_expanded(PurpleBlistNode *node)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3714 {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3715 if PURPLE_BLIST_NODE_IS_BUDDY(node)
11018
a3843543f132 [gaim-migrate @ 12888]
Richard Laager <rlaager@pidgin.im>
parents: 11016
diff changeset
3716 node = node->parent;
a3843543f132 [gaim-migrate @ 12888]
Richard Laager <rlaager@pidgin.im>
parents: 11016
diff changeset
3717
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3718 g_return_val_if_fail(PURPLE_BLIST_NODE_IS_CONTACT(node), FALSE);
11018
a3843543f132 [gaim-migrate @ 12888]
Richard Laager <rlaager@pidgin.im>
parents: 11016
diff changeset
3719
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3720 return ((struct _pidgin_blist_node *)node->ui_data)->contact_expanded;
11018
a3843543f132 [gaim-migrate @ 12888]
Richard Laager <rlaager@pidgin.im>
parents: 11016
diff changeset
3721 }
a3843543f132 [gaim-migrate @ 12888]
Richard Laager <rlaager@pidgin.im>
parents: 11016
diff changeset
3722
10433
04cf48e72655 [gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
3723 enum {
04cf48e72655 [gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
3724 DRAG_BUDDY,
04cf48e72655 [gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
3725 DRAG_ROW,
04cf48e72655 [gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
3726 DRAG_VCARD,
04cf48e72655 [gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
3727 DRAG_TEXT,
04cf48e72655 [gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
3728 DRAG_URI,
04cf48e72655 [gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
3729 NUM_TARGETS
04cf48e72655 [gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
3730 };
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3731
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13091
diff changeset
3732 static const char *
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3733 item_factory_translate_func (const char *path, gpointer func_data)
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3734 {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3735 return _((char *)path);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3736 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3737
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3738 void pidgin_blist_setup_sort_methods()
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3739 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3740 pidgin_blist_sort_method_reg("none", _("Manually"), sort_method_none);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3741 #if GTK_CHECK_VERSION(2,2,1)
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3742 pidgin_blist_sort_method_reg("alphabetical", _("Alphabetically"), sort_method_alphabetical);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3743 pidgin_blist_sort_method_reg("status", _("By status"), sort_method_status);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3744 pidgin_blist_sort_method_reg("log_size", _("By log size"), sort_method_log);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3745 #endif
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
3746 pidgin_blist_sort_method_set(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/blist/sort_type"));
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3747 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3748
10433
04cf48e72655 [gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
3749 static void _prefs_change_redo_list()
04cf48e72655 [gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
3750 {
13511
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3751 GtkTreeSelection *sel;
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3752 GtkTreeIter iter;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3753 PurpleBlistNode *node = NULL;
13511
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3754
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3755 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkblist->treeview));
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3756 if (gtk_tree_selection_get_selected(sel, NULL, &iter))
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3757 {
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3758 gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &node, -1);
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3759 }
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3760
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3761 redo_buddy_list(purple_get_blist(), FALSE, FALSE);
13162
43420c10065b [gaim-migrate @ 15524]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13147
diff changeset
3762 #if GTK_CHECK_VERSION(2,6,0)
43420c10065b [gaim-migrate @ 15524]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13147
diff changeset
3763 gtk_tree_view_columns_autosize(GTK_TREE_VIEW(gtkblist->treeview));
43420c10065b [gaim-migrate @ 15524]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13147
diff changeset
3764 #endif
13511
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3765
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3766 if (node)
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3767 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3768 struct _pidgin_blist_node *gtknode;
13511
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3769 GtkTreePath *path;
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3770
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3771 gtknode = node->ui_data;
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3772 if (gtknode && gtknode->row)
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3773 {
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3774 path = gtk_tree_row_reference_get_path(gtknode->row);
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3775 gtk_tree_selection_select_path(sel, path);
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3776 gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(gtkblist->treeview), path, NULL, FALSE, 0, 0);
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3777 gtk_tree_path_free(path);
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3778 }
743387e8099e [gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13510
diff changeset
3779 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3780 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
3781
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3782 static void _prefs_change_sort_method(const char *pref_name, PurplePrefType type,
12816
5f93e09fa9a6 [gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents: 12799
diff changeset
3783 gconstpointer val, gpointer data)
10433
04cf48e72655 [gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
3784 {
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
3785 if(!strcmp(pref_name, PIDGIN_PREFS_ROOT "/blist/sort_type"))
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3786 pidgin_blist_sort_method_set(val);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3787 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3788
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3789 static void account_modified(PurpleAccount *account, PidginBuddyList *gtkblist)
12522
5d2871278151 [gaim-migrate @ 14834]
Richard Laager <rlaager@pidgin.im>
parents: 12519
diff changeset
3790 {
15088
d5bb04caf6e1 [gaim-migrate @ 17809]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15086
diff changeset
3791 GList *list;
12522
5d2871278151 [gaim-migrate @ 14834]
Richard Laager <rlaager@pidgin.im>
parents: 12519
diff changeset
3792 if (!gtkblist)
5d2871278151 [gaim-migrate @ 14834]
Richard Laager <rlaager@pidgin.im>
parents: 12519
diff changeset
3793 return;
12589
e25ec53fe8b0 [gaim-migrate @ 14918]
Mark Doliner <markdoliner@pidgin.im>
parents: 12583
diff changeset
3794
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3795 if ((list = purple_accounts_get_all_active()) != NULL) {
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
3796 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkblist->notebook), 1);
15088
d5bb04caf6e1 [gaim-migrate @ 17809]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15086
diff changeset
3797 g_list_free(list);
d5bb04caf6e1 [gaim-migrate @ 17809]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15086
diff changeset
3798 } else
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
3799 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkblist->notebook), 0);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
3800
12522
5d2871278151 [gaim-migrate @ 14834]
Richard Laager <rlaager@pidgin.im>
parents: 12519
diff changeset
3801 update_menu_bar(gtkblist);
5d2871278151 [gaim-migrate @ 14834]
Richard Laager <rlaager@pidgin.im>
parents: 12519
diff changeset
3802 }
5d2871278151 [gaim-migrate @ 14834]
Richard Laager <rlaager@pidgin.im>
parents: 12519
diff changeset
3803
12766
b292b7a49197 [gaim-migrate @ 15113]
Nick Hebner <hebnern@gmail.com>
parents: 12744
diff changeset
3804 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3805 account_status_changed(PurpleAccount *account, PurpleStatus *old,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3806 PurpleStatus *new, PidginBuddyList *gtkblist)
12766
b292b7a49197 [gaim-migrate @ 15113]
Nick Hebner <hebnern@gmail.com>
parents: 12744
diff changeset
3807 {
b292b7a49197 [gaim-migrate @ 15113]
Nick Hebner <hebnern@gmail.com>
parents: 12744
diff changeset
3808 if (!gtkblist)
b292b7a49197 [gaim-migrate @ 15113]
Nick Hebner <hebnern@gmail.com>
parents: 12744
diff changeset
3809 return;
b292b7a49197 [gaim-migrate @ 15113]
Nick Hebner <hebnern@gmail.com>
parents: 12744
diff changeset
3810
b292b7a49197 [gaim-migrate @ 15113]
Nick Hebner <hebnern@gmail.com>
parents: 12744
diff changeset
3811 update_menu_bar(gtkblist);
b292b7a49197 [gaim-migrate @ 15113]
Nick Hebner <hebnern@gmail.com>
parents: 12744
diff changeset
3812 }
b292b7a49197 [gaim-migrate @ 15113]
Nick Hebner <hebnern@gmail.com>
parents: 12744
diff changeset
3813
12124
97ff43883157 [gaim-migrate @ 14424]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12119
diff changeset
3814 static gboolean
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3815 gtk_blist_window_key_press_cb(GtkWidget *w, GdkEventKey *event, PidginBuddyList *gtkblist)
12461
960ff25e0214 [gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12458
diff changeset
3816 {
960ff25e0214 [gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12458
diff changeset
3817 GtkWidget *imhtml;
960ff25e0214 [gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12458
diff changeset
3818
960ff25e0214 [gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12458
diff changeset
3819 if (!gtkblist)
960ff25e0214 [gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12458
diff changeset
3820 return FALSE;
960ff25e0214 [gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12458
diff changeset
3821
960ff25e0214 [gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12458
diff changeset
3822 imhtml = gtk_window_get_focus(GTK_WINDOW(gtkblist->window));
960ff25e0214 [gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12458
diff changeset
3823
12474
630f34dde22d [gaim-migrate @ 14785]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12473
diff changeset
3824 if (GTK_IS_IMHTML(imhtml) && gtk_bindings_activate(GTK_OBJECT(imhtml), event->keyval, event->state))
12461
960ff25e0214 [gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12458
diff changeset
3825 return TRUE;
960ff25e0214 [gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12458
diff changeset
3826 return FALSE;
960ff25e0214 [gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12458
diff changeset
3827 }
960ff25e0214 [gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12458
diff changeset
3828
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3829 static gboolean
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3830 headline_hover_close(int x, int y)
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3831 {
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3832 GtkWidget *w = gtkblist->headline_hbox;
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3833 if (x <= w->allocation.width && x >= w->allocation.width - HEADLINE_CLOSE_SIZE &&
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3834 y >= 0 && y <= HEADLINE_CLOSE_SIZE)
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3835 return TRUE;
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3836 return FALSE;
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3837 }
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3838
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3839 static gboolean
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3840 headline_box_enter_cb(GtkWidget *widget, GdkEventCrossing *event, PidginBuddyList *gtkblist)
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3841 {
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3842 gdk_window_set_cursor(widget->window, gtkblist->hand_cursor);
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3843
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3844 if (gtkblist->headline_close) {
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3845 #if GTK_CHECK_VERSION(2,2,0)
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3846 gdk_draw_pixbuf(widget->window, NULL, gtkblist->headline_close,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3847 #else
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3848 gdk_pixbuf_render_to_drawable(gtkblist->headline_close,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3849 GDK_DRAWABLE(widget->window), NULL,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3850 #endif
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3851 0, 0,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3852 widget->allocation.width - 2 - HEADLINE_CLOSE_SIZE, 2,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3853 HEADLINE_CLOSE_SIZE, HEADLINE_CLOSE_SIZE,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3854 GDK_RGB_DITHER_NONE, 0, 0);
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3855 gtk_paint_focus(widget->style, widget->window, GTK_STATE_PRELIGHT,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3856 NULL, widget, NULL,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3857 widget->allocation.width - HEADLINE_CLOSE_SIZE - 3, 1,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3858 HEADLINE_CLOSE_SIZE + 2, HEADLINE_CLOSE_SIZE + 2);
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3859 }
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3860
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3861 return FALSE;
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3862 }
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3863
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3864 #if 0
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3865 static gboolean
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3866 headline_box_motion_cb(GtkWidget *widget, GdkEventMotion *event, PidginBuddyList *gtkblist)
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3867 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3868 purple_debug_fatal("motion", "%d %d\n", (int)event->x, (int)event->y);
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3869 if (headline_hover_close((int)event->x, (int)event->y))
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3870 gtk_paint_focus(widget->style, widget->window, GTK_STATE_PRELIGHT,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3871 NULL, widget, NULL,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3872 widget->allocation.width - HEADLINE_CLOSE_SIZE - 3, 1,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3873 HEADLINE_CLOSE_SIZE + 2, HEADLINE_CLOSE_SIZE + 2);
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3874 return FALSE;
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3875 }
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3876 #endif
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3877
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3878 static gboolean
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3879 headline_box_leave_cb(GtkWidget *widget, GdkEventCrossing *event, PidginBuddyList *gtkblist)
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3880 {
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3881 gdk_window_set_cursor(widget->window, gtkblist->arrow_cursor);
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3882 if (gtkblist->headline_close) {
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3883 GdkRectangle rect = {widget->allocation.width - 3 - HEADLINE_CLOSE_SIZE, 1,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3884 HEADLINE_CLOSE_SIZE + 2, HEADLINE_CLOSE_SIZE + 2};
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3885 gdk_window_invalidate_rect(widget->window, &rect, TRUE);
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3886 }
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3887 return FALSE;
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3888 }
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3889
15386
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
3890 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3891 reset_headline(PidginBuddyList *gtkblist)
15386
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
3892 {
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
3893 gtkblist->headline_callback = NULL;
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
3894 gtkblist->headline_data = NULL;
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
3895 gtkblist->headline_destroy = NULL;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3896 pidgin_set_urgent(GTK_WINDOW(gtkblist->window), FALSE);
15386
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
3897 }
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
3898
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3899 static gboolean
15259
5d4dc3a3019f [gaim-migrate @ 17987]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15246
diff changeset
3900 headline_click_callback(gpointer data)
5d4dc3a3019f [gaim-migrate @ 17987]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15246
diff changeset
3901 {
5d4dc3a3019f [gaim-migrate @ 17987]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15246
diff changeset
3902 ((GSourceFunc)gtkblist->headline_callback)(gtkblist->headline_data);
15386
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
3903 reset_headline(gtkblist);
15259
5d4dc3a3019f [gaim-migrate @ 17987]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15246
diff changeset
3904 return FALSE;
5d4dc3a3019f [gaim-migrate @ 17987]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15246
diff changeset
3905 }
5d4dc3a3019f [gaim-migrate @ 17987]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15246
diff changeset
3906
5d4dc3a3019f [gaim-migrate @ 17987]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15246
diff changeset
3907 static gboolean
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3908 headline_box_press_cb(GtkWidget *widget, GdkEventButton *event, PidginBuddyList *gtkblist)
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3909 {
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3910 gtk_widget_hide(gtkblist->headline_hbox);
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
3911 if (gtkblist->headline_callback && !headline_hover_close((int)event->x, (int)event->y))
15259
5d4dc3a3019f [gaim-migrate @ 17987]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15246
diff changeset
3912 g_idle_add((GSourceFunc)headline_click_callback, gtkblist->headline_data);
15386
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
3913 else {
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
3914 if (gtkblist->headline_destroy)
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
3915 gtkblist->headline_destroy(gtkblist->headline_data);
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
3916 reset_headline(gtkblist);
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
3917 }
15259
5d4dc3a3019f [gaim-migrate @ 17987]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15246
diff changeset
3918 return TRUE;
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3919 }
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
3920
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3921 /***********************************/
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3922 /* Connection error handling stuff */
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3923 /***********************************/
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3924
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3925 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3926 ce_modify_account_cb(PurpleAccount *account)
13316
f3825018dc2b [gaim-migrate @ 15681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13294
diff changeset
3927 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
3928 pidgin_account_dialog_show(PIDGIN_MODIFY_ACCOUNT_DIALOG, account);
13316
f3825018dc2b [gaim-migrate @ 15681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13294
diff changeset
3929 }
f3825018dc2b [gaim-migrate @ 15681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13294
diff changeset
3930
f3825018dc2b [gaim-migrate @ 15681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13294
diff changeset
3931 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3932 ce_enable_account_cb(PurpleAccount *account)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3933 {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3934 purple_account_set_enabled(account, purple_core_get_ui(), TRUE);
13316
f3825018dc2b [gaim-migrate @ 15681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13294
diff changeset
3935 }
f3825018dc2b [gaim-migrate @ 15681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13294
diff changeset
3936
f3825018dc2b [gaim-migrate @ 15681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13294
diff changeset
3937 static void
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3938 connection_error_button_clicked_cb(GtkButton *widget, gpointer user_data)
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3939 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3940 PurpleAccount *account;
13023
6c85f34839bf [gaim-migrate @ 15376]
Mark Doliner <markdoliner@pidgin.im>
parents: 13022
diff changeset
3941 char *primary;
6c85f34839bf [gaim-migrate @ 15376]
Mark Doliner <markdoliner@pidgin.im>
parents: 13022
diff changeset
3942 const char *text;
13732
924f1827ea50 [gaim-migrate @ 16141]
Mark Doliner <markdoliner@pidgin.im>
parents: 13691
diff changeset
3943 gboolean enabled;
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3944
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3945 account = user_data;
13023
6c85f34839bf [gaim-migrate @ 15376]
Mark Doliner <markdoliner@pidgin.im>
parents: 13022
diff changeset
3946 primary = g_strdup_printf(_("%s disconnected"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3947 purple_account_get_username(account));
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3948 text = g_hash_table_lookup(gtkblist->connection_errors, account);
13376
4b4c3c4d068e [gaim-migrate @ 15748]
Mark Doliner <markdoliner@pidgin.im>
parents: 13337
diff changeset
3949
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3950 enabled = purple_account_get_enabled(account, purple_core_get_ui());
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3951 purple_request_action(account, _("Connection Error"), primary, text, 2,
13732
924f1827ea50 [gaim-migrate @ 16141]
Mark Doliner <markdoliner@pidgin.im>
parents: 13691
diff changeset
3952 account, 3,
924f1827ea50 [gaim-migrate @ 16141]
Mark Doliner <markdoliner@pidgin.im>
parents: 13691
diff changeset
3953 _("OK"), NULL,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3954 _("Modify Account"), PURPLE_CALLBACK(ce_modify_account_cb),
13732
924f1827ea50 [gaim-migrate @ 16141]
Mark Doliner <markdoliner@pidgin.im>
parents: 13691
diff changeset
3955 enabled ? _("Connect") : _("Re-enable Account"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3956 enabled ? PURPLE_CALLBACK(purple_account_connect) :
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3957 PURPLE_CALLBACK(ce_enable_account_cb));
13630
b41b3225c2ce [gaim-migrate @ 16016]
Daniel Atallah <datallah@pidgin.im>
parents: 13613
diff changeset
3958 g_free(primary);
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3959 gtk_widget_destroy(GTK_WIDGET(widget));
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3960 g_hash_table_remove(gtkblist->connection_errors, account);
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3961 }
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3962
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3963 /* Add some buttons that show connection errors */
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3964 static void
13022
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3965 create_connection_error_buttons(gpointer key, gpointer value,
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3966 gpointer user_data)
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3967 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3968 PurpleAccount *account;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3969 PurpleStatusType *status_type;
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13049
diff changeset
3970 gchar *escaped, *text;
13022
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3971 GtkWidget *button, *label, *image, *hbox;
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13049
diff changeset
3972 GdkPixbuf *pixbuf;
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3973
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
3974 account = key;
13049
5b9fac63e263 [gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents: 13038
diff changeset
3975 escaped = g_markup_escape_text((const gchar *)value, -1);
13023
6c85f34839bf [gaim-migrate @ 15376]
Mark Doliner <markdoliner@pidgin.im>
parents: 13022
diff changeset
3976 text = g_strdup_printf(_("<span color=\"red\">%s disconnected: %s</span>"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3977 purple_account_get_username(account),
13049
5b9fac63e263 [gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents: 13038
diff changeset
3978 escaped);
5b9fac63e263 [gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents: 13038
diff changeset
3979 g_free(escaped);
5b9fac63e263 [gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents: 13038
diff changeset
3980
13022
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3981 hbox = gtk_hbox_new(FALSE, 0);
13049
5b9fac63e263 [gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents: 13038
diff changeset
3982
5b9fac63e263 [gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents: 13038
diff changeset
3983 /* Create the icon */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3984 if ((status_type = purple_account_get_status_type_with_primitive(account,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
3985 PURPLE_STATUS_OFFLINE))) {
15799
ba7af742a0d1 Change some old, busted status icon stuff to use the new hotness
Sean Egan <seanegan@pidgin.im>
parents: 15769
diff changeset
3986 pixbuf = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_SMALL);
14137
48e2c0761c14 [gaim-migrate @ 16696]
Daniel Atallah <datallah@pidgin.im>
parents: 14136
diff changeset
3987 if (pixbuf != NULL) {
48e2c0761c14 [gaim-migrate @ 16696]
Daniel Atallah <datallah@pidgin.im>
parents: 14136
diff changeset
3988 image = gtk_image_new_from_pixbuf(pixbuf);
48e2c0761c14 [gaim-migrate @ 16696]
Daniel Atallah <datallah@pidgin.im>
parents: 14136
diff changeset
3989 g_object_unref(pixbuf);
48e2c0761c14 [gaim-migrate @ 16696]
Daniel Atallah <datallah@pidgin.im>
parents: 14136
diff changeset
3990
48e2c0761c14 [gaim-migrate @ 16696]
Daniel Atallah <datallah@pidgin.im>
parents: 14136
diff changeset
3991 gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE,
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
3992 PIDGIN_HIG_BOX_SPACE);
14137
48e2c0761c14 [gaim-migrate @ 16696]
Daniel Atallah <datallah@pidgin.im>
parents: 14136
diff changeset
3993 }
13022
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3994 }
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3995
13049
5b9fac63e263 [gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents: 13038
diff changeset
3996 /* Create the text */
13022
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3997 label = gtk_label_new("");
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3998 gtk_label_set_markup(GTK_LABEL(label), text);
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
3999 g_free(text);
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
4000 #if GTK_CHECK_VERSION(2,6,0)
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
4001 g_object_set(label, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
4002 #endif
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
4003 gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE,
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
4004 PIDGIN_HIG_BOX_SPACE);
13022
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
4005
13049
5b9fac63e263 [gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents: 13038
diff changeset
4006 /* Create the actual button and put the icon and text on it */
13022
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
4007 button = gtk_button_new();
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
4008 gtk_container_add(GTK_CONTAINER(button), hbox);
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4009 g_signal_connect(G_OBJECT(button), "clicked",
13022
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
4010 G_CALLBACK(connection_error_button_clicked_cb),
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
4011 account);
13049
5b9fac63e263 [gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents: 13038
diff changeset
4012 gtk_widget_show_all(button);
13022
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
4013 gtk_box_pack_end(GTK_BOX(gtkblist->error_buttons), button,
60db2ca976bf [gaim-migrate @ 15375]
Etan Reisner <deryni@pidgin.im>
parents: 13016
diff changeset
4014 FALSE, FALSE, 0);
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4015 }
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4016
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4017 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4018 pidgin_blist_update_account_error_state(PurpleAccount *account, const char *text)
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4019 {
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4020 GList *l;
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4021
13016
29dd619e4d41 [gaim-migrate @ 15369]
Mark Doliner <markdoliner@pidgin.im>
parents: 13015
diff changeset
4022 if (text == NULL)
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4023 g_hash_table_remove(gtkblist->connection_errors, account);
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4024 else
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4025 g_hash_table_insert(gtkblist->connection_errors, account, g_strdup(text));
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4026
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4027 /* Remove the old error buttons */
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4028 for (l = gtk_container_get_children(GTK_CONTAINER(gtkblist->error_buttons));
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4029 l != NULL;
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4030 l = l->next)
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4031 {
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4032 gtk_widget_destroy(GTK_WIDGET(l->data));
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4033 }
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4034
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4035 /* Add new error buttons */
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4036 g_hash_table_foreach(gtkblist->connection_errors,
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4037 create_connection_error_buttons, NULL);
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4038 }
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4039
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4040 static gboolean
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4041 paint_headline_hbox (GtkWidget *widget,
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4042 GdkEventExpose *event,
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4043 gpointer user_data)
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4044 {
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4045 gtk_paint_flat_box (widget->style,
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4046 widget->window,
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4047 GTK_STATE_NORMAL,
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4048 GTK_SHADOW_OUT,
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4049 NULL,
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4050 widget,
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4051 "tooltip",
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4052 widget->allocation.x + 1,
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4053 widget->allocation.y + 1,
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4054 widget->allocation.width - 2,
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4055 widget->allocation.height - 2);
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4056 return FALSE;
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4057 }
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4058
15621
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4059 /* This assumes there are not things like groupless buddies or multi-leveled groups.
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4060 * I'm sure other things in this code assumes that also.
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4061 */
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4062 static void
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4063 treeview_style_set (GtkWidget *widget,
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4064 GtkStyle *prev_style,
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4065 gpointer data)
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4066 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4067 PurpleBuddyList *list = data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4068 PurpleBlistNode *node = list->root;
15621
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4069 while (node) {
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4070 pidgin_blist_update_group(list, node);
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4071 node = node->next;
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4072 }
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4073 }
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4074
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4075 static void
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4076 headline_style_set (GtkWidget *widget,
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4077 GtkStyle *prev_style)
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4078 {
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4079 GtkTooltips *tooltips;
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4080 GtkStyle *style;
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4081
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4082 if (gtkblist->changing_style)
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4083 return;
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4084
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4085 tooltips = gtk_tooltips_new ();
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4086 #if GLIB_CHECK_VERSION(2,10,0)
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4087 g_object_ref_sink (tooltips);
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4088 #else
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4089 g_object_ref(tooltips);
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4090 gtk_object_sink(GTK_OBJECT(tooltips));
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4091 #endif
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4092
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4093 gtk_tooltips_force_window (tooltips);
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4094 gtk_widget_ensure_style (tooltips->tip_window);
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4095 style = gtk_widget_get_style (tooltips->tip_window);
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4096
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4097 gtkblist->changing_style = TRUE;
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4098 gtk_widget_set_style (gtkblist->headline_hbox, style);
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4099 gtkblist->changing_style = FALSE;
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4100
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4101 g_object_unref (tooltips);
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4102 }
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4103
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4104 /******************************************/
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4105 /* End of connection error handling stuff */
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4106 /******************************************/
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4107
15413
3f4d28fe3423 [gaim-migrate @ 18144]
Sean Egan <seanegan@pidgin.im>
parents: 15409
diff changeset
4108 static int
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4109 blist_focus_cb(GtkWidget *widget, gpointer data, PidginBuddyList *gtkblist)
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4110 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4111 pidgin_set_urgent(GTK_WINDOW(gtkblist->window), FALSE);
15413
3f4d28fe3423 [gaim-migrate @ 18144]
Sean Egan <seanegan@pidgin.im>
parents: 15409
diff changeset
4112 return 0;
3f4d28fe3423 [gaim-migrate @ 18144]
Sean Egan <seanegan@pidgin.im>
parents: 15409
diff changeset
4113 }
3f4d28fe3423 [gaim-migrate @ 18144]
Sean Egan <seanegan@pidgin.im>
parents: 15409
diff changeset
4114
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4115 #if 0
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4116 static GtkWidget *
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4117 kiosk_page()
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4118 {
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
4119 GtkWidget *ret = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4120 GtkWidget *label;
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4121 GtkWidget *entry;
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4122 GtkWidget *bbox;
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4123 GtkWidget *button;
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4124
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4125 label = gtk_label_new(NULL);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4126 gtk_box_pack_start(GTK_BOX(ret), label, TRUE, TRUE, 0);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4127
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4128 label = gtk_label_new(NULL);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4129 gtk_label_set_markup(GTK_LABEL(label), _("<b>Username:</b>"));
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4130 gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4131 gtk_box_pack_start(GTK_BOX(ret), label, FALSE, FALSE, 0);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4132 entry = gtk_entry_new();
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4133 gtk_box_pack_start(GTK_BOX(ret), entry, FALSE, FALSE, 0);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4134
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4135 label = gtk_label_new(NULL);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4136 gtk_label_set_markup(GTK_LABEL(label), _("<b>Password:</b>"));
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4137 gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4138 gtk_box_pack_start(GTK_BOX(ret), label, FALSE, FALSE, 0);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4139 entry = gtk_entry_new();
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4140 gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4141 gtk_box_pack_start(GTK_BOX(ret), entry, FALSE, FALSE, 0);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4142
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4143 label = gtk_label_new(" ");
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4144 gtk_box_pack_start(GTK_BOX(ret), label, FALSE, FALSE, 0);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4145
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4146 bbox = gtk_hbutton_box_new();
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4147 button = gtk_button_new_with_mnemonic(_("_Login"));
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4148 gtk_box_pack_start(GTK_BOX(ret), bbox, FALSE, FALSE, 0);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4149 gtk_container_add(GTK_CONTAINER(bbox), button);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4150
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4151
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4152 label = gtk_label_new(NULL);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4153 gtk_box_pack_start(GTK_BOX(ret), label, TRUE, TRUE, 0);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4154
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
4155 gtk_container_set_border_width(GTK_CONTAINER(ret), PIDGIN_HIG_BORDER);
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4156
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4157 gtk_widget_show_all(ret);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4158 return ret;
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4159 }
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4160 #endif
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4161
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4162 static void pidgin_blist_show(PurpleBuddyList *list)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4163 {
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10079
diff changeset
4164 void *handle;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4165 GtkCellRenderer *rend;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4166 GtkTreeViewColumn *column;
10178
16a2e27759fe [gaim-migrate @ 11293]
Christian Hammond <chipx86@chipx86.com>
parents: 10144
diff changeset
4167 GtkWidget *menu;
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4168 GtkWidget *ebox;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4169 GtkWidget *sw;
14608
6eea6c122238 [gaim-migrate @ 17269]
Sean Egan <seanegan@pidgin.im>
parents: 14603
diff changeset
4170 GtkWidget *sep;
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4171 GtkWidget *label;
15091
5eb0bf57d5a2 [gaim-migrate @ 17812]
Sean Egan <seanegan@pidgin.im>
parents: 15089
diff changeset
4172 GList *accounts;
16071
044392e01c96 make things cleaner for translators
Nathan Walp <nwalp@pidgin.im>
parents: 16068
diff changeset
4173 char *pretty, *tmp;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4174 GtkAccelGroup *accel_group;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4175 GtkTreeSelection *selection;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4176 GtkTargetEntry dte[] = {{"PURPLE_BLIST_NODE", GTK_TARGET_SAME_APP, DRAG_ROW},
8089
0adbe5c66985 [gaim-migrate @ 8788]
Sean Egan <seanegan@pidgin.im>
parents: 8083
diff changeset
4177 {"application/x-im-contact", 0, DRAG_BUDDY},
9495
e9b2ece77b70 [gaim-migrate @ 10321]
Sean Egan <seanegan@pidgin.im>
parents: 9466
diff changeset
4178 {"text/x-vcard", 0, DRAG_VCARD },
9525
28a430d517db [gaim-migrate @ 10352]
Sean Egan <seanegan@pidgin.im>
parents: 9498
diff changeset
4179 {"text/uri-list", 0, DRAG_URI},
28a430d517db [gaim-migrate @ 10352]
Sean Egan <seanegan@pidgin.im>
parents: 9498
diff changeset
4180 {"text/plain", 0, DRAG_TEXT}};
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4181 GtkTargetEntry ste[] = {{"PURPLE_BLIST_NODE", GTK_TARGET_SAME_APP, DRAG_ROW},
9556
26e2e1141081 [gaim-migrate @ 10392]
Sean Egan <seanegan@pidgin.im>
parents: 9533
diff changeset
4182 {"application/x-im-contact", 0, DRAG_BUDDY},
26e2e1141081 [gaim-migrate @ 10392]
Sean Egan <seanegan@pidgin.im>
parents: 9533
diff changeset
4183 {"text/x-vcard", 0, DRAG_VCARD }};
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4184 if (gtkblist && gtkblist->window) {
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
4185 purple_blist_set_visible(purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/list_visible"));
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4186 return;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4187 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4188
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4189 gtkblist = PIDGIN_BLIST(list);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4190
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
4191 gtkblist->empty_avatar = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, 32, 32);
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
4192 gdk_pixbuf_fill(gtkblist->empty_avatar, 0x00000000);
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
4193
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4194 gtkblist->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4195 gtk_window_set_role(GTK_WINDOW(gtkblist->window), "buddy_list");
9746
c4f6dab73e01 [gaim-migrate @ 10611]
Luke Schierer <lschiere@pidgin.im>
parents: 9737
diff changeset
4196 gtk_window_set_title(GTK_WINDOW(gtkblist->window), _("Buddy List"));
15413
3f4d28fe3423 [gaim-migrate @ 18144]
Sean Egan <seanegan@pidgin.im>
parents: 15409
diff changeset
4197 g_signal_connect(G_OBJECT(gtkblist->window), "focus-in-event",
3f4d28fe3423 [gaim-migrate @ 18144]
Sean Egan <seanegan@pidgin.im>
parents: 15409
diff changeset
4198 G_CALLBACK(blist_focus_cb), gtkblist);
12328
4a2611214a15 [gaim-migrate @ 14632]
Nathan Walp <nwalp@pidgin.im>
parents: 12326
diff changeset
4199 GTK_WINDOW(gtkblist->window)->allow_shrink = TRUE;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4200
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4201 gtkblist->main_vbox = gtk_vbox_new(FALSE, 0);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4202 gtk_widget_show(gtkblist->main_vbox);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4203 gtk_container_add(GTK_CONTAINER(gtkblist->window), gtkblist->main_vbox);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4204
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
4205 g_signal_connect(G_OBJECT(gtkblist->window), "delete_event", G_CALLBACK(gtk_blist_delete_cb), NULL);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4206 g_signal_connect(G_OBJECT(gtkblist->window), "configure_event", G_CALLBACK(gtk_blist_configure_cb), NULL);
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
4207 g_signal_connect(G_OBJECT(gtkblist->window), "visibility_notify_event", G_CALLBACK(gtk_blist_visibility_cb), NULL);
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
4208 g_signal_connect(G_OBJECT(gtkblist->window), "window_state_event", G_CALLBACK(gtk_blist_window_state_cb), NULL);
12461
960ff25e0214 [gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12458
diff changeset
4209 g_signal_connect(G_OBJECT(gtkblist->window), "key_press_event", G_CALLBACK(gtk_blist_window_key_press_cb), gtkblist);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4210 gtk_widget_add_events(gtkblist->window, GDK_VISIBILITY_NOTIFY_MASK);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4211
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4212 /******************************* Menu bar *************************************/
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4213 accel_group = gtk_accel_group_new();
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4214 gtk_window_add_accel_group(GTK_WINDOW (gtkblist->window), accel_group);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4215 g_object_unref(accel_group);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4216 gtkblist->ift = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<PurpleMain>", accel_group);
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
4217 gtk_item_factory_set_translate_func(gtkblist->ift,
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13091
diff changeset
4218 (GtkTranslateFunc)item_factory_translate_func,
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
4219 NULL, NULL);
5427
a45fa07ef20d [gaim-migrate @ 5806]
Mark Doliner <markdoliner@pidgin.im>
parents: 5422
diff changeset
4220 gtk_item_factory_create_items(gtkblist->ift, sizeof(blist_menu) / sizeof(*blist_menu),
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
4221 blist_menu, NULL);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4222 pidgin_load_accels();
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4223 g_signal_connect(G_OBJECT(accel_group), "accel-changed",
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4224 G_CALLBACK(pidgin_save_accels_cb), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4225 menu = gtk_item_factory_get_widget(gtkblist->ift, "<PurpleMain>");
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4226 gtkblist->menutray = pidgin_menu_tray_new();
12116
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
4227 gtk_menu_shell_append(GTK_MENU_SHELL(menu), gtkblist->menutray);
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
4228 gtk_widget_show(gtkblist->menutray);
10178
16a2e27759fe [gaim-migrate @ 11293]
Christian Hammond <chipx86@chipx86.com>
parents: 10144
diff changeset
4229 gtk_widget_show(menu);
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4230 gtk_box_pack_start(GTK_BOX(gtkblist->main_vbox), menu, FALSE, FALSE, 0);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4231
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
4232 accountmenu = gtk_item_factory_get_widget(gtkblist->ift, N_("/Accounts"));
10352
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
4233
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4234
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4235 /****************************** Notebook *************************************/
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4236 gtkblist->notebook = gtk_notebook_new();
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4237 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkblist->notebook), FALSE);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4238 gtk_notebook_set_show_border(GTK_NOTEBOOK(gtkblist->notebook), FALSE);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4239 gtk_box_pack_start(GTK_BOX(gtkblist->main_vbox), gtkblist->notebook, TRUE, TRUE, 0);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4240
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4241 #if 0
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4242 gtk_notebook_append_page(GTK_NOTEBOOK(gtkblist->notebook), kiosk_page(), NULL);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4243 #endif
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4244
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4245 /* Translators: Please maintain the use of -> and <- to refer to menu heirarchy */
16071
044392e01c96 make things cleaner for translators
Nathan Walp <nwalp@pidgin.im>
parents: 16068
diff changeset
4246 tmp = g_strdup_printf(_("<span weight='bold' size='larger'>Welcome to %s!</span>\n\n"
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4247
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4248 "You have no accounts enabled. Enable your IM accounts from the "
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4249 "<b>Accounts</b> window at <b>Accounts->Add/Edit</b>. Once you "
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4250 "enable accounts, you'll be able to sign on, set your status, "
16071
044392e01c96 make things cleaner for translators
Nathan Walp <nwalp@pidgin.im>
parents: 16068
diff changeset
4251 "and talk to your friends."), PIDGIN_NAME);
044392e01c96 make things cleaner for translators
Nathan Walp <nwalp@pidgin.im>
parents: 16068
diff changeset
4252 pretty = pidgin_make_pretty_arrows(tmp);
044392e01c96 make things cleaner for translators
Nathan Walp <nwalp@pidgin.im>
parents: 16068
diff changeset
4253 g_free(tmp);
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4254 label = gtk_label_new(NULL);
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
4255 gtk_widget_set_size_request(label, purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/width") - 12, -1);
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4256 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4257 gtk_misc_set_alignment(GTK_MISC(label), 0.5, 0.2);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4258 gtk_label_set_markup(GTK_LABEL(label), pretty);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4259 g_free(pretty);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4260 gtk_notebook_append_page(GTK_NOTEBOOK(gtkblist->notebook),label, NULL);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4261 gtkblist->vbox = gtk_vbox_new(FALSE, 0);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4262 gtk_notebook_append_page(GTK_NOTEBOOK(gtkblist->notebook), gtkblist->vbox, NULL);
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4263 gtk_widget_show_all(gtkblist->notebook);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4264 if ((accounts = purple_accounts_get_all_active())) {
15091
5eb0bf57d5a2 [gaim-migrate @ 17812]
Sean Egan <seanegan@pidgin.im>
parents: 15089
diff changeset
4265 g_list_free(accounts);
15089
0522a7934420 [gaim-migrate @ 17810]
Sean Egan <seanegan@pidgin.im>
parents: 15088
diff changeset
4266 gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkblist->notebook), 1);
15091
5eb0bf57d5a2 [gaim-migrate @ 17812]
Sean Egan <seanegan@pidgin.im>
parents: 15089
diff changeset
4267 }
15086
c680354b7c95 [gaim-migrate @ 17806]
Sean Egan <seanegan@pidgin.im>
parents: 15063
diff changeset
4268
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4269 ebox = gtk_event_box_new();
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4270 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), ebox, FALSE, FALSE, 0);
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4271 gtkblist->headline_hbox = gtk_hbox_new(FALSE, 3);
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4272 gtk_container_set_border_width(GTK_CONTAINER(gtkblist->headline_hbox), 6);
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4273 gtk_container_add(GTK_CONTAINER(ebox), gtkblist->headline_hbox);
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4274 gtkblist->headline_image = gtk_image_new_from_pixbuf(NULL);
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4275 gtk_misc_set_alignment(GTK_MISC(gtkblist->headline_image), 0.0, 0);
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4276 gtkblist->headline_label = gtk_label_new(NULL);
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4277 gtk_widget_set_size_request(gtkblist->headline_label,
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
4278 purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/width")-25,-1);
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4279 gtk_label_set_line_wrap(GTK_LABEL(gtkblist->headline_label), TRUE);
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4280 gtk_box_pack_start(GTK_BOX(gtkblist->headline_hbox), gtkblist->headline_image, FALSE, FALSE, 0);
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4281 gtk_box_pack_start(GTK_BOX(gtkblist->headline_hbox), gtkblist->headline_label, TRUE, TRUE, 0);
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4282 g_signal_connect(gtkblist->headline_hbox,
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4283 "style-set",
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4284 G_CALLBACK(headline_style_set),
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4285 NULL);
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4286 g_signal_connect (gtkblist->headline_hbox,
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4287 "expose_event",
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4288 G_CALLBACK (paint_headline_hbox),
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4289 NULL);
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4290 gtk_widget_set_name(gtkblist->headline_hbox, "gtk-tooltips");
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4291
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4292 gtkblist->headline_close = gtk_widget_render_icon(ebox, GTK_STOCK_CLOSE, -1, NULL);
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4293 if (gtkblist->headline_close) {
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4294 GdkPixbuf *scale = gdk_pixbuf_scale_simple(gtkblist->headline_close,
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4295 HEADLINE_CLOSE_SIZE, HEADLINE_CLOSE_SIZE, GDK_INTERP_BILINEAR);
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4296 gdk_pixbuf_unref(gtkblist->headline_close);
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4297 gtkblist->headline_close = scale;
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4298 }
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4299
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4300 gtkblist->hand_cursor = gdk_cursor_new (GDK_HAND2);
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4301 gtkblist->arrow_cursor = gdk_cursor_new (GDK_LEFT_PTR);
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4302
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4303 g_signal_connect(G_OBJECT(ebox), "enter-notify-event", G_CALLBACK(headline_box_enter_cb), gtkblist);
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4304 g_signal_connect(G_OBJECT(ebox), "leave-notify-event", G_CALLBACK(headline_box_leave_cb), gtkblist);
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4305 g_signal_connect(G_OBJECT(ebox), "button-press-event", G_CALLBACK(headline_box_press_cb), gtkblist);
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4306 #if 0
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4307 /* I couldn't get this to work. The idea was to draw the focus-border only
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4308 * when hovering over the close image. So for now, the focus-border is
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4309 * always there. -- sad */
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4310 gtk_widget_set_events(ebox, gtk_widget_get_events(ebox) | GDK_POINTER_MOTION_HINT_MASK);
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4311 g_signal_connect(G_OBJECT(ebox), "motion-notify-event", G_CALLBACK(headline_box_motion_cb), gtkblist);
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
4312 #endif
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4313
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4314 /****************************** GtkTreeView **********************************/
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4315 sw = gtk_scrolled_window_new(NULL,NULL);
10178
16a2e27759fe [gaim-migrate @ 11293]
Christian Hammond <chipx86@chipx86.com>
parents: 10144
diff changeset
4316 gtk_widget_show(sw);
14476
4a36547d336c [gaim-migrate @ 17122]
Sean Egan <seanegan@pidgin.im>
parents: 14471
diff changeset
4317 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_NONE);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4318 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4319
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4320 gtkblist->treemodel = gtk_tree_store_new(BLIST_COLUMNS,
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4321 GDK_TYPE_PIXBUF, /* Status icon */
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4322 G_TYPE_BOOLEAN, /* Status icon visible */
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4323 G_TYPE_STRING, /* Name */
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4324 G_TYPE_STRING, /* Idle */
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4325 G_TYPE_BOOLEAN, /* Idle visible */
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4326 GDK_TYPE_PIXBUF, /* Buddy icon */
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4327 G_TYPE_BOOLEAN, /* Buddy icon visible */
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4328 G_TYPE_POINTER, /* Node */
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4329 GDK_TYPE_COLOR, /* bgcolor */
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4330 G_TYPE_BOOLEAN, /* Group expander */
16182
88b7040408c8 Set the disable maximize button hint on the blist. I couldn't find a window manager that supports this, but I bet win32 does.
Sean Egan <seanegan@pidgin.im>
parents: 16162
diff changeset
4331 G_TYPE_BOOLEAN, /* Group expander visible */
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4332 G_TYPE_BOOLEAN, /* Contact expander */
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4333 G_TYPE_BOOLEAN, /* Contact expander visible */
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4334 GDK_TYPE_PIXBUF, /* Emblem */
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4335 G_TYPE_BOOLEAN); /* Emblem visible */
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4336
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4337 gtkblist->treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(gtkblist->treemodel));
14230
82177a4e23ab [gaim-migrate @ 16818]
Sean Egan <seanegan@pidgin.im>
parents: 14215
diff changeset
4338
10178
16a2e27759fe [gaim-migrate @ 11293]
Christian Hammond <chipx86@chipx86.com>
parents: 10144
diff changeset
4339 gtk_widget_show(gtkblist->treeview);
16259
73b7c796c8d3 I don't like the pidginfoo_bar widget names that resulted from the sed.
Richard Laager <rlaager@pidgin.im>
parents: 16254
diff changeset
4340 gtk_widget_set_name(gtkblist->treeview, "pidgin_blist_treeview");
15621
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4341
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4342 g_signal_connect(gtkblist->treeview,
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4343 "style-set",
947891574425 Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents: 15614
diff changeset
4344 G_CALLBACK(treeview_style_set), list);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4345 /* Set up selection stuff */
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4346 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkblist->treeview));
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4347 g_signal_connect(G_OBJECT(selection), "changed", G_CALLBACK(pidgin_blist_selection_changed), NULL);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4348
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4349 /* Set up dnd */
7650
bd193cc04594 [gaim-migrate @ 8293]
Mark Doliner <markdoliner@pidgin.im>
parents: 7642
diff changeset
4350 gtk_tree_view_enable_model_drag_source(GTK_TREE_VIEW(gtkblist->treeview),
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
4351 GDK_BUTTON1_MASK, ste, 3,
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
4352 GDK_ACTION_COPY);
7650
bd193cc04594 [gaim-migrate @ 8293]
Mark Doliner <markdoliner@pidgin.im>
parents: 7642
diff changeset
4353 gtk_tree_view_enable_model_drag_dest(GTK_TREE_VIEW(gtkblist->treeview),
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
4354 dte, 5,
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
4355 GDK_ACTION_COPY | GDK_ACTION_MOVE);
7636
34f4cb560c8e [gaim-migrate @ 8278]
Sean Egan <seanegan@pidgin.im>
parents: 7628
diff changeset
4356
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4357 g_signal_connect(G_OBJECT(gtkblist->treeview), "drag-data-received", G_CALLBACK(pidgin_blist_drag_data_rcv_cb), NULL);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4358 g_signal_connect(G_OBJECT(gtkblist->treeview), "drag-data-get", G_CALLBACK(pidgin_blist_drag_data_get_cb), NULL);
11059
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
4359 #ifdef _WIN32
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4360 g_signal_connect(G_OBJECT(gtkblist->treeview), "drag-begin", G_CALLBACK(pidgin_blist_drag_begin), NULL);
11059
52e4f595fd27 [gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents: 11038
diff changeset
4361 #endif
10433
04cf48e72655 [gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
4362
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4363 g_signal_connect(G_OBJECT(gtkblist->treeview), "drag-motion", G_CALLBACK(pidgin_blist_drag_motion_cb), NULL);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4364
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4365 /* Tooltips */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4366 g_signal_connect(G_OBJECT(gtkblist->treeview), "motion-notify-event", G_CALLBACK(pidgin_blist_motion_cb), NULL);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4367 g_signal_connect(G_OBJECT(gtkblist->treeview), "leave-notify-event", G_CALLBACK(pidgin_blist_leave_cb), NULL);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4368
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4369 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(gtkblist->treeview), FALSE);
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4370
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4371 column = gtk_tree_view_column_new();
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4372 gtk_tree_view_append_column(GTK_TREE_VIEW(gtkblist->treeview), column);
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4373 gtk_tree_view_column_set_visible(column, FALSE);
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4374 gtk_tree_view_set_expander_column(GTK_TREE_VIEW(gtkblist->treeview), column);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4375
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
4376 gtkblist->text_column = column = gtk_tree_view_column_new ();
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4377 rend = pidgin_cell_renderer_expander_new();
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4378 gtk_tree_view_column_pack_start(column, rend, FALSE);
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4379 gtk_tree_view_column_set_attributes(column, rend,
16182
88b7040408c8 Set the disable maximize button hint on the blist. I couldn't find a window manager that supports this, but I bet win32 does.
Sean Egan <seanegan@pidgin.im>
parents: 16162
diff changeset
4380 "visible", GROUP_EXPANDER_VISIBLE_COLUMN,
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4381 "expander-visible", GROUP_EXPANDER_COLUMN,
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
4382 #if GTK_CHECK_VERSION(2,6,0)
14626
964677efbddf [gaim-migrate @ 17287]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14624
diff changeset
4383 "sensitive", GROUP_EXPANDER_COLUMN,
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4384 "cell-background-gdk", BGCOLOR_COLUMN,
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
4385 #endif
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4386 NULL);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4387
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4388 rend = pidgin_cell_renderer_expander_new();
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
4389 gtk_tree_view_column_pack_start(column, rend, FALSE);
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
4390 gtk_tree_view_column_set_attributes(column, rend,
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4391 "expander-visible", CONTACT_EXPANDER_COLUMN,
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
4392 #if GTK_CHECK_VERSION(2,6,0)
14626
964677efbddf [gaim-migrate @ 17287]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14624
diff changeset
4393 "sensitive", CONTACT_EXPANDER_COLUMN,
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
4394 "cell-background-gdk", BGCOLOR_COLUMN,
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
4395 #endif
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4396 "visible", CONTACT_EXPANDER_VISIBLE_COLUMN,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4397 NULL);
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4398
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4399 rend = gtk_cell_renderer_pixbuf_new();
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4400 gtk_tree_view_column_pack_start(column, rend, FALSE);
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4401 gtk_tree_view_column_set_attributes(column, rend,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4402 "pixbuf", STATUS_ICON_COLUMN,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4403 "visible", STATUS_ICON_VISIBLE_COLUMN,
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
4404 #if GTK_CHECK_VERSION(2,6,0)
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4405 "cell-background-gdk", BGCOLOR_COLUMN,
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
4406 #endif
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4407 NULL);
16182
88b7040408c8 Set the disable maximize button hint on the blist. I couldn't find a window manager that supports this, but I bet win32 does.
Sean Egan <seanegan@pidgin.im>
parents: 16162
diff changeset
4408 g_object_set(rend, "xalign", 0.0, "xpad", 6, "ypad", 0, NULL);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4409
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
4410 gtkblist->text_rend = rend = gtk_cell_renderer_text_new();
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4411 gtk_tree_view_column_pack_start (column, rend, TRUE);
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
4412 gtk_tree_view_column_set_attributes(column, rend,
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
4413 #if GTK_CHECK_VERSION(2,6,0)
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4414 "cell-background-gdk", BGCOLOR_COLUMN,
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
4415 #endif
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
4416 "markup", NAME_COLUMN,
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
4417 NULL);
16357
c23b4d440efd Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents: 16284
diff changeset
4418 g_signal_connect(G_OBJECT(rend), "editing-started", G_CALLBACK(gtk_blist_renderer_editing_started_cb), NULL);
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
4419 g_signal_connect(G_OBJECT(rend), "edited", G_CALLBACK(gtk_blist_renderer_edited_cb), NULL);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4420 g_object_set(rend, "ypad", 0, "yalign", 0.5, NULL);
10285
22d4d807c5c3 [gaim-migrate @ 11456]
Sean Egan <seanegan@pidgin.im>
parents: 10282
diff changeset
4421 #if GTK_CHECK_VERSION(2,6,0)
10501
0dd069ed110e [gaim-migrate @ 11793]
Sean Egan <seanegan@pidgin.im>
parents: 10499
diff changeset
4422 g_object_set(rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
10285
22d4d807c5c3 [gaim-migrate @ 11456]
Sean Egan <seanegan@pidgin.im>
parents: 10282
diff changeset
4423 #endif
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4424 gtk_tree_view_append_column(GTK_TREE_VIEW(gtkblist->treeview), column);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4425
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4426 rend = gtk_cell_renderer_text_new();
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4427 g_object_set(rend, "xalign", 1.0, "ypad", 0, NULL);
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4428 gtk_tree_view_column_pack_start(column, rend, FALSE);
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4429 gtk_tree_view_column_set_attributes(column, rend,
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4430 "markup", IDLE_COLUMN,
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4431 "visible", IDLE_VISIBLE_COLUMN,
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
4432 #if GTK_CHECK_VERSION(2,6,0)
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4433 "cell-background-gdk", BGCOLOR_COLUMN,
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
4434 #endif
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4435 NULL);
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4436
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4437 rend = gtk_cell_renderer_pixbuf_new();
16152
09e510e8b83b Add some padding between the emblem and the buddy icon
Sean Egan <seanegan@pidgin.im>
parents: 16151
diff changeset
4438 g_object_set(rend, "xalign", 1.0, "yalign", 0.5, "ypad", 0, "xpad", 3, NULL);
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4439 gtk_tree_view_column_pack_start(column, rend, FALSE);
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4440 gtk_tree_view_column_set_attributes(column, rend, "pixbuf", EMBLEM_COLUMN,
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4441 #if GTK_CHECK_VERSION(2,6,0)
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4442 "cell-background-gdk", BGCOLOR_COLUMN,
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4443 #endif
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4444 "visible", EMBLEM_VISIBLE_COLUMN, NULL);
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4445
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4446 rend = gtk_cell_renderer_pixbuf_new();
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4447 g_object_set(rend, "xalign", 1.0, "ypad", 0, NULL);
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4448 gtk_tree_view_column_pack_start(column, rend, FALSE);
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4449 gtk_tree_view_column_set_attributes(column, rend, "pixbuf", BUDDY_ICON_COLUMN,
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
4450 #if GTK_CHECK_VERSION(2,6,0)
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4451 "cell-background-gdk", BGCOLOR_COLUMN,
14723
5e5b5c192df3 [gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14722
diff changeset
4452 #endif
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4453 "visible", BUDDY_ICON_VISIBLE_COLUMN,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4454 NULL);
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4455
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4456
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4457 g_signal_connect(G_OBJECT(gtkblist->treeview), "row-activated", G_CALLBACK(gtk_blist_row_activated_cb), NULL);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4458 g_signal_connect(G_OBJECT(gtkblist->treeview), "row-expanded", G_CALLBACK(gtk_blist_row_expanded_cb), NULL);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4459 g_signal_connect(G_OBJECT(gtkblist->treeview), "row-collapsed", G_CALLBACK(gtk_blist_row_collapsed_cb), NULL);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4460 g_signal_connect(G_OBJECT(gtkblist->treeview), "button-press-event", G_CALLBACK(gtk_blist_button_press_cb), NULL);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4461 g_signal_connect(G_OBJECT(gtkblist->treeview), "key-press-event", G_CALLBACK(gtk_blist_key_press_cb), NULL);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4462 g_signal_connect(G_OBJECT(gtkblist->treeview), "popup-menu", G_CALLBACK(pidgin_blist_popup_menu_cb), NULL);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4463
5419
062efd736788 [gaim-migrate @ 5798]
Mark Doliner <markdoliner@pidgin.im>
parents: 5398
diff changeset
4464 /* Enable CTRL+F searching */
062efd736788 [gaim-migrate @ 5798]
Mark Doliner <markdoliner@pidgin.im>
parents: 5398
diff changeset
4465 gtk_tree_view_set_search_column(GTK_TREE_VIEW(gtkblist->treeview), NAME_COLUMN);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4466 gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(gtkblist->treeview), pidgin_tree_view_search_equal_func, NULL, NULL);
5419
062efd736788 [gaim-migrate @ 5798]
Mark Doliner <markdoliner@pidgin.im>
parents: 5398
diff changeset
4467
12583
d4f1bc373c67 [gaim-migrate @ 14911]
Sean Egan <seanegan@pidgin.im>
parents: 12576
diff changeset
4468 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), sw, TRUE, TRUE, 0);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4469 gtk_container_add(GTK_CONTAINER(sw), gtkblist->treeview);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4470
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4471 sep = gtk_hseparator_new();
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4472 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), sep, FALSE, FALSE, 0);
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
4473
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15571
diff changeset
4474 gtkblist->scrollbook = pidgin_scroll_book_new();
15096
128dd2bdf71d [gaim-migrate @ 17817]
Sean Egan <seanegan@pidgin.im>
parents: 15094
diff changeset
4475 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), gtkblist->scrollbook, FALSE, FALSE, 0);
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4476
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4477 /* Create an empty vbox used for showing connection errors */
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4478 gtkblist->error_buttons = gtk_vbox_new(FALSE, 0);
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4479 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), gtkblist->error_buttons, FALSE, FALSE, 0);
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4480
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
4481 /* Add the statusbox */
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15571
diff changeset
4482 gtkblist->statusbox = pidgin_status_box_new();
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14137
diff changeset
4483 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), gtkblist->statusbox, FALSE, TRUE, 0);
16259
73b7c796c8d3 I don't like the pidginfoo_bar widget names that resulted from the sed.
Richard Laager <rlaager@pidgin.im>
parents: 16254
diff changeset
4484 gtk_widget_set_name(gtkblist->statusbox, "pidgin_blist_statusbox");
14608
6eea6c122238 [gaim-migrate @ 17269]
Sean Egan <seanegan@pidgin.im>
parents: 14603
diff changeset
4485 gtk_container_set_border_width(GTK_CONTAINER(gtkblist->statusbox), 3);
12583
d4f1bc373c67 [gaim-migrate @ 14911]
Sean Egan <seanegan@pidgin.im>
parents: 12576
diff changeset
4486 gtk_widget_show(gtkblist->statusbox);
14239
661d2bb9eb86 [gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents: 14230
diff changeset
4487
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4488 /* set the Show Offline Buddies option. must be done
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4489 * after the treeview or faceprint gets mad. -Robot101
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4490 */
5427
a45fa07ef20d [gaim-migrate @ 5806]
Mark Doliner <markdoliner@pidgin.im>
parents: 5422
diff changeset
4491 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Buddies/Show Offline Buddies"))),
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
4492 purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_offline_buddies"));
12656
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
4493
5427
a45fa07ef20d [gaim-migrate @ 5806]
Mark Doliner <markdoliner@pidgin.im>
parents: 5422
diff changeset
4494 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Buddies/Show Empty Groups"))),
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
4495 purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_empty_groups"));
12656
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
4496
10074
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
4497 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Tools/Mute Sounds"))),
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
4498 purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/sound/mute"));
12656
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
4499
11796
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
4500 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Buddies/Show Buddy Details"))),
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
4501 purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"));
12656
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
4502
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
4503 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Buddies/Show Idle Times"))),
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
4504 purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_idle_time"));
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
4505
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
4506 if(!strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/sound/method"), "none"))
11494
60bfb30f6cba [gaim-migrate @ 13738]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11490
diff changeset
4507 gtk_widget_set_sensitive(gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Mute Sounds")), FALSE);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4508
10353
830e54bb7fa0 [gaim-migrate @ 11570]
Mark Doliner <markdoliner@pidgin.im>
parents: 10352
diff changeset
4509 /* Update some dynamic things */
830e54bb7fa0 [gaim-migrate @ 11570]
Mark Doliner <markdoliner@pidgin.im>
parents: 10352
diff changeset
4510 update_menu_bar(gtkblist);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4511 pidgin_blist_update_plugin_actions();
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4512 pidgin_blist_update_sort_methods();
10353
830e54bb7fa0 [gaim-migrate @ 11570]
Mark Doliner <markdoliner@pidgin.im>
parents: 10352
diff changeset
4513
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4514 /* OK... let's show this bad boy. */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4515 pidgin_blist_refresh(list);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4516 pidgin_blist_restore_position();
14543
cc2f90ffee6f [gaim-migrate @ 17200]
Casey Harkins <charkins@pidgin.im>
parents: 14526
diff changeset
4517 gtk_widget_show_all(GTK_WIDGET(gtkblist->vbox));
14574
4a60d4fadfc4 [gaim-migrate @ 17232]
Casey Harkins <charkins@pidgin.im>
parents: 14543
diff changeset
4518 gtk_widget_realize(GTK_WIDGET(gtkblist->window));
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
4519 purple_blist_set_visible(purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/list_visible"));
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4520
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4521 /* start the refresh timer */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4522 gtkblist->refresh_timer = g_timeout_add(30000, (GSourceFunc)pidgin_blist_refresh_timer, list);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4523
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4524 handle = pidgin_blist_get_handle();
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10079
diff changeset
4525
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4526 /* things that affect how buddies are displayed */
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
4527 purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/blist/show_buddy_icons",
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10079
diff changeset
4528 _prefs_change_redo_list, NULL);
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
4529 purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/blist/show_idle_time",
12656
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
4530 _prefs_change_redo_list, NULL);
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
4531 purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/blist/show_empty_groups",
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10079
diff changeset
4532 _prefs_change_redo_list, NULL);
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
4533 purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/blist/show_offline_buddies",
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10079
diff changeset
4534 _prefs_change_redo_list, NULL);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4535
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4536 /* sorting */
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
4537 purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/blist/sort_type",
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10079
diff changeset
4538 _prefs_change_sort_method, NULL);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4539
10074
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
4540 /* menus */
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
4541 purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/sound/mute",
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4542 pidgin_blist_mute_pref_cb, NULL);
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
4543 purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/sound/method",
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4544 pidgin_blist_sound_method_pref_cb, NULL);
10074
4fab99572bf1 [gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10046
diff changeset
4545
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4546 /* Setup some purple signal handlers. */
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4547 purple_signal_connect(purple_accounts_get_handle(), "account-enabled",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4548 gtkblist, PURPLE_CALLBACK(account_modified), gtkblist);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4549 purple_signal_connect(purple_accounts_get_handle(), "account-disabled",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4550 gtkblist, PURPLE_CALLBACK(account_modified), gtkblist);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4551 purple_signal_connect(purple_accounts_get_handle(), "account-removed",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4552 gtkblist, PURPLE_CALLBACK(account_modified), gtkblist);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4553 purple_signal_connect(purple_accounts_get_handle(), "account-status-changed",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4554 gtkblist, PURPLE_CALLBACK(account_status_changed), gtkblist);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4555
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4556 purple_signal_connect(pidgin_account_get_handle(), "account-modified",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4557 gtkblist, PURPLE_CALLBACK(account_modified), gtkblist);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4558
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4559 purple_signal_connect(purple_connections_get_handle(), "signed-on",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4560 gtkblist, PURPLE_CALLBACK(sign_on_off_cb), list);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4561 purple_signal_connect(purple_connections_get_handle(), "signed-off",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4562 gtkblist, PURPLE_CALLBACK(sign_on_off_cb), list);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4563
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4564 purple_signal_connect(purple_plugins_get_handle(), "plugin-load",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4565 gtkblist, PURPLE_CALLBACK(plugin_changed_cb), NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4566 purple_signal_connect(purple_plugins_get_handle(), "plugin-unload",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4567 gtkblist, PURPLE_CALLBACK(plugin_changed_cb), NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4568
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4569 purple_signal_connect(purple_conversations_get_handle(), "conversation-updated",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4570 gtkblist, PURPLE_CALLBACK(conversation_updated_cb),
12116
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
4571 gtkblist);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4572 purple_signal_connect(purple_conversations_get_handle(), "deleting-conversation",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4573 gtkblist, PURPLE_CALLBACK(conversation_deleting_cb),
12208
63faaf557886 [gaim-migrate @ 14510]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12191
diff changeset
4574 gtkblist);
12116
17bf39d2678f [gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents: 12115
diff changeset
4575
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
4576 gtk_widget_hide(gtkblist->headline_hbox);
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4577
8815
efd18a7c99dd [gaim-migrate @ 9577]
Gary Kramlich <grim@pidgin.im>
parents: 8710
diff changeset
4578 /* emit our created signal */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4579 purple_signal_emit(handle, "gtkblist-created", list);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4580 }
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4581
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4582 static void redo_buddy_list(PurpleBuddyList *list, gboolean remove, gboolean rerender)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4583 {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4584 PurpleBlistNode *node;
15307
57f6de61c714 [gaim-migrate @ 18035]
Mark Doliner <markdoliner@pidgin.im>
parents: 15306
diff changeset
4585
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4586 gtkblist = PIDGIN_BLIST(list);
15306
b4bb51751de0 [gaim-migrate @ 18034]
Ethan Blanton <elb@pidgin.im>
parents: 15300
diff changeset
4587 if(!gtkblist || !gtkblist->treeview)
b4bb51751de0 [gaim-migrate @ 18034]
Ethan Blanton <elb@pidgin.im>
parents: 15300
diff changeset
4588 return;
b4bb51751de0 [gaim-migrate @ 18034]
Ethan Blanton <elb@pidgin.im>
parents: 15300
diff changeset
4589
15307
57f6de61c714 [gaim-migrate @ 18035]
Mark Doliner <markdoliner@pidgin.im>
parents: 15306
diff changeset
4590 node = list->root;
12112
86a24bbf9a2c [gaim-migrate @ 14412]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12080
diff changeset
4591
86a24bbf9a2c [gaim-migrate @ 14412]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12080
diff changeset
4592 while (node)
86a24bbf9a2c [gaim-migrate @ 14412]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12080
diff changeset
4593 {
14200
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
4594 /* This is only needed when we're reverting to a non-GTK+ sorted
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
4595 * status. We shouldn't need to remove otherwise.
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
4596 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4597 if (remove && !PURPLE_BLIST_NODE_IS_GROUP(node))
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4598 pidgin_blist_hide_node(list, node, FALSE);
14200
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
4599
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4600 if (PURPLE_BLIST_NODE_IS_BUDDY(node))
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4601 pidgin_blist_update_buddy(list, node, rerender);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4602 else if (PURPLE_BLIST_NODE_IS_CHAT(node))
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4603 pidgin_blist_update(list, node);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4604 else if (PURPLE_BLIST_NODE_IS_GROUP(node))
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4605 pidgin_blist_update(list, node);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4606 node = purple_blist_node_next(node, FALSE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4607 }
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4608
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4609 }
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4610
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4611 void pidgin_blist_refresh(PurpleBuddyList *list)
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
4612 {
14200
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
4613 redo_buddy_list(list, FALSE, TRUE);
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
4614 }
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
4615
5297
d0fa35e02d4a [gaim-migrate @ 5669]
Luke Schierer <lschiere@pidgin.im>
parents: 5296
diff changeset
4616 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4617 pidgin_blist_update_refresh_timeout()
5297
d0fa35e02d4a [gaim-migrate @ 5669]
Luke Schierer <lschiere@pidgin.im>
parents: 5296
diff changeset
4618 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4619 PurpleBuddyList *blist;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4620 PidginBuddyList *gtkblist;
5297
d0fa35e02d4a [gaim-migrate @ 5669]
Luke Schierer <lschiere@pidgin.im>
parents: 5296
diff changeset
4621
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4622 blist = purple_get_blist();
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4623 gtkblist = PIDGIN_BLIST(purple_get_blist());
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4624
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4625 gtkblist->refresh_timer = g_timeout_add(30000,(GSourceFunc)pidgin_blist_refresh_timer, blist);
5297
d0fa35e02d4a [gaim-migrate @ 5669]
Luke Schierer <lschiere@pidgin.im>
parents: 5296
diff changeset
4626 }
d0fa35e02d4a [gaim-migrate @ 5669]
Luke Schierer <lschiere@pidgin.im>
parents: 5296
diff changeset
4627
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4628 static gboolean get_iter_from_node(PurpleBlistNode *node, GtkTreeIter *iter) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4629 struct _pidgin_blist_node *gtknode = (struct _pidgin_blist_node *)node->ui_data;
5256
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
4630 GtkTreePath *path;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4631
5263
ed3dfef87785 [gaim-migrate @ 5635]
Ethan Blanton <elb@pidgin.im>
parents: 5260
diff changeset
4632 if (!gtknode) {
ed3dfef87785 [gaim-migrate @ 5635]
Ethan Blanton <elb@pidgin.im>
parents: 5260
diff changeset
4633 return FALSE;
ed3dfef87785 [gaim-migrate @ 5635]
Ethan Blanton <elb@pidgin.im>
parents: 5260
diff changeset
4634 }
ed3dfef87785 [gaim-migrate @ 5635]
Ethan Blanton <elb@pidgin.im>
parents: 5260
diff changeset
4635
ed3dfef87785 [gaim-migrate @ 5635]
Ethan Blanton <elb@pidgin.im>
parents: 5260
diff changeset
4636 if (!gtkblist) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4637 purple_debug_error("gtkblist", "get_iter_from_node was called, but we don't seem to have a blist\n");
5263
ed3dfef87785 [gaim-migrate @ 5635]
Ethan Blanton <elb@pidgin.im>
parents: 5260
diff changeset
4638 return FALSE;
ed3dfef87785 [gaim-migrate @ 5635]
Ethan Blanton <elb@pidgin.im>
parents: 5260
diff changeset
4639 }
ed3dfef87785 [gaim-migrate @ 5635]
Ethan Blanton <elb@pidgin.im>
parents: 5260
diff changeset
4640
ed3dfef87785 [gaim-migrate @ 5635]
Ethan Blanton <elb@pidgin.im>
parents: 5260
diff changeset
4641 if (!gtknode->row)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4642 return FALSE;
11494
60bfb30f6cba [gaim-migrate @ 13738]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11490
diff changeset
4643
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4644
5256
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
4645 if ((path = gtk_tree_row_reference_get_path(gtknode->row)) == NULL)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4646 return FALSE;
11016
9990e360ee9c [gaim-migrate @ 12885]
Sean Egan <seanegan@pidgin.im>
parents: 10992
diff changeset
4647
5256
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
4648 if (!gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), iter, path)) {
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
4649 gtk_tree_path_free(path);
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
4650 return FALSE;
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
4651 }
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
4652 gtk_tree_path_free(path);
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
4653 return TRUE;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4654 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4655
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4656 static void pidgin_blist_remove(PurpleBuddyList *list, PurpleBlistNode *node)
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4657 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4658 struct _pidgin_blist_node *gtknode = node->ui_data;
11910
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
4659
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4660 purple_request_close_with_handle(node);
10222
5371b5459fb9 [gaim-migrate @ 11351]
Andrew Hart <arhart@users.sourceforge.net>
parents: 10209
diff changeset
4661
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4662 pidgin_blist_hide_node(list, node, TRUE);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4663
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4664 if(node->parent)
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4665 pidgin_blist_update(list, node->parent);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4666
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10501
diff changeset
4667 /* There's something I don't understand here - Ethan */
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10501
diff changeset
4668 /* Ethan said that back in 2003, but this g_free has been left commented
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10501
diff changeset
4669 * out ever since. I can't find any reason at all why this is bad and
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10501
diff changeset
4670 * valgrind found several reasons why it's good. If this causes problems
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10501
diff changeset
4671 * comment it out again. Stu */
10510
a9d90a5b7556 [gaim-migrate @ 11808]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10504
diff changeset
4672 /* Of course it still causes problems - this breaks dragging buddies into
10515
865130ede44a [gaim-migrate @ 11816]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10510
diff changeset
4673 * contacts, the dragged buddy mysteriously 'disappears'. Stu. */
865130ede44a [gaim-migrate @ 11816]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10510
diff changeset
4674 /* I think it's fixed now. Stu. */
11910
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
4675
11915
2803eadda83e [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
4676 if(gtknode) {
2803eadda83e [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
4677 if(gtknode->recent_signonoff_timer > 0)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4678 purple_timeout_remove(gtknode->recent_signonoff_timer);
11915
2803eadda83e [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
4679
2803eadda83e [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
4680 g_free(node->ui_data);
2803eadda83e [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
4681 node->ui_data = NULL;
2803eadda83e [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
4682 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4683 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4684
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4685 static gboolean do_selection_changed(PurpleBlistNode *new_selection)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4686 {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4687 PurpleBlistNode *old_selection = NULL;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4688
5254
6717daf94719 [gaim-migrate @ 5626]
Robert McQueen <robot101@debian.org>
parents: 5241
diff changeset
4689 /* test for gtkblist because crazy timeout means we can be called after the blist is gone */
6717daf94719 [gaim-migrate @ 5626]
Robert McQueen <robot101@debian.org>
parents: 5241
diff changeset
4690 if (gtkblist && new_selection != gtkblist->selected_node) {
6717daf94719 [gaim-migrate @ 5626]
Robert McQueen <robot101@debian.org>
parents: 5241
diff changeset
4691 old_selection = gtkblist->selected_node;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4692 gtkblist->selected_node = new_selection;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4693 if(new_selection)
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4694 pidgin_blist_update(NULL, new_selection);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4695 if(old_selection)
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4696 pidgin_blist_update(NULL, old_selection);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4697 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4698
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4699 return FALSE;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4700 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4701
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4702 static void pidgin_blist_selection_changed(GtkTreeSelection *selection, gpointer data)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4703 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4704 PurpleBlistNode *new_selection = NULL;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4705 GtkTreeIter iter;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4706
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4707 if(gtk_tree_selection_get_selected(selection, NULL, &iter)){
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4708 gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &iter,
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4709 NODE_COLUMN, &new_selection, -1);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4710 }
5254
6717daf94719 [gaim-migrate @ 5626]
Robert McQueen <robot101@debian.org>
parents: 5241
diff changeset
4711
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4712 /* we set this up as a timeout, otherwise the blist flickers */
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4713 g_timeout_add(0, (GSourceFunc)do_selection_changed, new_selection);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4714 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4715
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4716 static gboolean insert_node(PurpleBuddyList *list, PurpleBlistNode *node, GtkTreeIter *iter)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4717 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4718 GtkTreeIter parent_iter, cur, *curptr = NULL;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4719 struct _pidgin_blist_node *gtknode = node->ui_data;
5256
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
4720 GtkTreePath *newpath;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4721
10515
865130ede44a [gaim-migrate @ 11816]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10510
diff changeset
4722 if(!iter)
8252
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4723 return FALSE;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4724
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4725 if(node->parent && !get_iter_from_node(node->parent, &parent_iter))
8252
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4726 return FALSE;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4727
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4728 if(get_iter_from_node(node, &cur))
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4729 curptr = &cur;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4730
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4731 if(PURPLE_BLIST_NODE_IS_CONTACT(node) || PURPLE_BLIST_NODE_IS_CHAT(node)) {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
4732 current_sort_method->func(node, list, parent_iter, curptr, iter);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4733 } else {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
4734 sort_method_none(node, list, parent_iter, curptr, iter);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4735 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4736
10515
865130ede44a [gaim-migrate @ 11816]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10510
diff changeset
4737 if(gtknode != NULL) {
865130ede44a [gaim-migrate @ 11816]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10510
diff changeset
4738 gtk_tree_row_reference_free(gtknode->row);
865130ede44a [gaim-migrate @ 11816]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10510
diff changeset
4739 } else {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4740 pidgin_blist_new_node(node);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4741 gtknode = (struct _pidgin_blist_node *)node->ui_data;
10515
865130ede44a [gaim-migrate @ 11816]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10510
diff changeset
4742 }
865130ede44a [gaim-migrate @ 11816]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10510
diff changeset
4743
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4744 newpath = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel),
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4745 iter);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4746 gtknode->row =
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4747 gtk_tree_row_reference_new(GTK_TREE_MODEL(gtkblist->treemodel),
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4748 newpath);
11494
60bfb30f6cba [gaim-migrate @ 13738]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11490
diff changeset
4749
5256
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
4750 gtk_tree_path_free(newpath);
9d90b7aaf38e [gaim-migrate @ 5628]
Oh-One-inator
parents: 5254
diff changeset
4751
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4752 gtk_tree_store_set(gtkblist->treemodel, iter,
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4753 NODE_COLUMN, node,
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4754 -1);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4755
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4756 if(node->parent) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4757 GtkTreePath *expand = NULL;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4758 struct _pidgin_blist_node *gtkparentnode = node->parent->ui_data;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4759
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4760 if(PURPLE_BLIST_NODE_IS_GROUP(node->parent)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4761 if(!purple_blist_node_get_bool(node->parent, "collapsed"))
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4762 expand = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &parent_iter);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4763 } else if(PURPLE_BLIST_NODE_IS_CONTACT(node->parent) &&
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4764 gtkparentnode->contact_expanded) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4765 expand = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &parent_iter);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4766 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4767 if(expand) {
7693
1f736efbd12d [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7662
diff changeset
4768 gtk_tree_view_expand_row(GTK_TREE_VIEW(gtkblist->treeview), expand, FALSE);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4769 gtk_tree_path_free(expand);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4770 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4771 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4772
8252
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4773 return TRUE;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4774 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4775
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4776 /*This version of pidgin_blist_update_group can take the original buddy
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4777 or a group, but has much better algorithmic performance with a pre-known buddy*/
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4778 static void pidgin_blist_update_group(PurpleBuddyList *list, PurpleBlistNode *node)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4779 {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4780 PurpleGroup *group;
8203
23f66d41ff8c [gaim-migrate @ 8926]
Alex Smith <madalex@users.sourceforge.net>
parents: 8198
diff changeset
4781 int count;
12341
a4b5f9eb0d83 [gaim-migrate @ 14645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12338
diff changeset
4782 gboolean show = FALSE;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4783 PurpleBlistNode* gnode;
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4784
13982
b1d1248b2789 [gaim-migrate @ 16432]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13951
diff changeset
4785 g_return_if_fail(node != NULL);
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4786
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4787 if (PURPLE_BLIST_NODE_IS_GROUP(node))
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4788 gnode = node;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4789 else if (PURPLE_BLIST_NODE_IS_BUDDY(node))
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4790 gnode = node->parent->parent;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4791 else if (PURPLE_BLIST_NODE_IS_CONTACT(node) || PURPLE_BLIST_NODE_IS_CHAT(node))
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4792 gnode = node->parent;
13982
b1d1248b2789 [gaim-migrate @ 16432]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13951
diff changeset
4793 else
b1d1248b2789 [gaim-migrate @ 16432]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13951
diff changeset
4794 return;
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4795
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4796 group = (PurpleGroup*)gnode;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4797
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
4798 if(purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_offline_buddies"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4799 count = purple_blist_get_group_size(group, FALSE);
8203
23f66d41ff8c [gaim-migrate @ 8926]
Alex Smith <madalex@users.sourceforge.net>
parents: 8198
diff changeset
4800 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4801 count = purple_blist_get_group_online_count(group);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4802
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
4803 if (count > 0 || purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_empty_groups"))
12341
a4b5f9eb0d83 [gaim-migrate @ 14645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12338
diff changeset
4804 show = TRUE;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4805 else if (PURPLE_BLIST_NODE_IS_BUDDY(node)){ /* Or chat? */
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4806 if (buddy_is_displayable((PurpleBuddy*)node))
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4807 show = TRUE;}
12341
a4b5f9eb0d83 [gaim-migrate @ 14645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12338
diff changeset
4808
a4b5f9eb0d83 [gaim-migrate @ 14645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12338
diff changeset
4809 if (show) {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4810 GtkTreeIter iter;
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4811 GtkTreePath *path;
14722
6f567e2961ae [gaim-migrate @ 17406]
Etan Reisner <deryni@pidgin.im>
parents: 14682
diff changeset
4812 gboolean expanded;
14501
17032cb417f9 [gaim-migrate @ 17153]
Gary Kramlich <grim@reaperworld.com>
parents: 14476
diff changeset
4813 GdkColor bgcolor;
15385
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4814 char *title;
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4815
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4816
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4817 if(!insert_node(list, gnode, &iter))
8252
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4818 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4819
14603
ad5c97d0d32b [gaim-migrate @ 17262]
Sean Egan <seanegan@pidgin.im>
parents: 14574
diff changeset
4820 bgcolor = gtkblist->treeview->style->bg[GTK_STATE_ACTIVE];
14501
17032cb417f9 [gaim-migrate @ 17153]
Gary Kramlich <grim@reaperworld.com>
parents: 14476
diff changeset
4821
17032cb417f9 [gaim-migrate @ 17153]
Gary Kramlich <grim@reaperworld.com>
parents: 14476
diff changeset
4822 path = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &iter);
17032cb417f9 [gaim-migrate @ 17153]
Gary Kramlich <grim@reaperworld.com>
parents: 14476
diff changeset
4823 expanded = gtk_tree_view_row_expanded(GTK_TREE_VIEW(gtkblist->treeview), path);
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4824 gtk_tree_path_free(path);
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4825
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
4826 title = pidgin_get_group_title(gnode, expanded);
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
4827
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4828 gtk_tree_store_set(gtkblist->treemodel, &iter,
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4829 STATUS_ICON_VISIBLE_COLUMN, FALSE,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4830 STATUS_ICON_COLUMN, NULL,
15385
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4831 NAME_COLUMN, title,
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4832 NODE_COLUMN, gnode,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4833 BGCOLOR_COLUMN, &bgcolor,
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
4834 GROUP_EXPANDER_COLUMN, TRUE,
16182
88b7040408c8 Set the disable maximize button hint on the blist. I couldn't find a window manager that supports this, but I bet win32 does.
Sean Egan <seanegan@pidgin.im>
parents: 16162
diff changeset
4835 GROUP_EXPANDER_VISIBLE_COLUMN, TRUE,
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4836 CONTACT_EXPANDER_VISIBLE_COLUMN, FALSE,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4837 BUDDY_ICON_VISIBLE_COLUMN, FALSE,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4838 IDLE_VISIBLE_COLUMN, FALSE,
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4839 EMBLEM_VISIBLE_COLUMN, FALSE,
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4840 -1);
15385
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4841 g_free(title);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4842 } else {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4843 pidgin_blist_hide_node(list, gnode, TRUE);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4844 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4845 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4846
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4847 static char *pidgin_get_group_title(PurpleBlistNode *gnode, gboolean expanded)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4848 {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4849 PurpleGroup *group;
15385
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4850 GdkColor textcolor;
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4851 gboolean selected;
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4852 char group_count[12] = "";
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4853 char *mark, *esc;
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4854
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4855 group = (PurpleGroup*)gnode;
15385
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4856 textcolor = gtkblist->treeview->style->fg[GTK_STATE_ACTIVE];
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4857 selected = gtkblist ? (gtkblist->selected_node == gnode) : FALSE;
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4858
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4859 if (!expanded) {
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4860 g_snprintf(group_count, sizeof(group_count), " (%d/%d)",
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4861 purple_blist_get_group_online_count(group),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4862 purple_blist_get_group_size(group, FALSE));
15385
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4863 }
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4864
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4865 esc = g_markup_escape_text(group->name, -1);
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4866 if (selected)
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4867 mark = g_strdup_printf("<span weight='bold'>%s</span>%s", esc, group_count);
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4868 else
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4869 mark = g_strdup_printf("<span color='#%02x%02x%02x' weight='bold'>%s</span>%s",
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4870 textcolor.red>>8, textcolor.green>>8, textcolor.blue>>8,
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4871 esc, group_count);
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4872
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4873 g_free(esc);
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4874 return mark;
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4875 }
d9ef6b4281fd [gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15380
diff changeset
4876
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4877 static void buddy_node(PurpleBuddy *buddy, GtkTreeIter *iter, PurpleBlistNode *node)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4878 {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4879 PurplePresence *presence;
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4880 GdkPixbuf *status, *avatar, *emblem;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4881 char *mark;
11257
9743367c935e [gaim-migrate @ 13432]
Sean Egan <seanegan@pidgin.im>
parents: 11256
diff changeset
4882 char *idle = NULL;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4883 gboolean expanded = ((struct _pidgin_blist_node *)(node->parent->ui_data))->contact_expanded;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4884 gboolean selected = (gtkblist->selected_node == node);
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
4885 gboolean biglist = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4886 presence = purple_buddy_get_presence(buddy);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4887
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4888 status = pidgin_blist_get_status_icon((PurpleBlistNode*)buddy,
15569
e85adc8d3b5c gtkblist changes to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
4889 PIDGIN_STATUS_ICON_SMALL);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4890
16437
7ff7c3405ea2 Rework the buddy icon subsystem to use the imgstore subsystem, and modify the
Richard Laager <rlaager@pidgin.im>
parents: 16357
diff changeset
4891 avatar = pidgin_blist_get_buddy_icon((PurpleBlistNode *)buddy, TRUE, TRUE);
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
4892 if (!avatar) {
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
4893 g_object_ref(G_OBJECT(gtkblist->empty_avatar));
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
4894 avatar = gtkblist->empty_avatar;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4895 } else if ((!PURPLE_BUDDY_IS_ONLINE(buddy) || purple_presence_is_idle(presence))) {
15552
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
4896 do_alphashift(avatar, avatar, 77);
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
4897 }
e66ed02bc8c9 dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents: 15551
diff changeset
4898
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4899 emblem = pidgin_blist_get_emblem((PurpleBlistNode*) buddy);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4900 mark = pidgin_blist_get_name_markup(buddy, selected);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4901
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
4902 if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_idle_time") &&
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4903 purple_presence_is_idle(presence) &&
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
4904 !purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"))
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4905 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4906 time_t idle_secs = purple_presence_get_idle_time(presence);
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4907
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4908 if (idle_secs > 0)
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4909 {
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4910 time_t t;
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4911 int ihrs, imin;
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4912 time(&t);
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4913 ihrs = (t - idle_secs) / 3600;
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4914 imin = ((t - idle_secs) / 60) % 60;
13821
3eda6c8a2b75 [gaim-migrate @ 16251]
Richard Laager <rlaager@pidgin.im>
parents: 13792
diff changeset
4915 idle = g_strdup_printf("%d:%02d", ihrs, imin);
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4916 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4917 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4918
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4919 if (purple_presence_is_idle(presence))
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4920 {
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
4921 if (idle && !selected) {
10118
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
4922 char *i2 = g_strdup_printf("<span color='%s'>%s</span>",
3e672eabe428 [gaim-migrate @ 11155]
Sean Egan <seanegan@pidgin.im>
parents: 10087
diff changeset
4923 dim_grey(), idle);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4924 g_free(idle);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4925 idle = i2;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4926 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4927 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4928
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4929 gtk_tree_store_set(gtkblist->treemodel, iter,
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4930 STATUS_ICON_COLUMN, status,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4931 STATUS_ICON_VISIBLE_COLUMN, TRUE,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4932 NAME_COLUMN, mark,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4933 IDLE_COLUMN, idle,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4934 IDLE_VISIBLE_COLUMN, !biglist && idle,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4935 BUDDY_ICON_COLUMN, avatar,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4936 BUDDY_ICON_VISIBLE_COLUMN, biglist,
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4937 EMBLEM_COLUMN, emblem,
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
4938 EMBLEM_VISIBLE_COLUMN, emblem,
14603
ad5c97d0d32b [gaim-migrate @ 17262]
Sean Egan <seanegan@pidgin.im>
parents: 14574
diff changeset
4939 BGCOLOR_COLUMN, NULL,
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4940 CONTACT_EXPANDER_COLUMN, NULL,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4941 CONTACT_EXPANDER_VISIBLE_COLUMN, expanded,
16182
88b7040408c8 Set the disable maximize button hint on the blist. I couldn't find a window manager that supports this, but I bet win32 does.
Sean Egan <seanegan@pidgin.im>
parents: 16162
diff changeset
4942 GROUP_EXPANDER_VISIBLE_COLUMN, FALSE,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4943 -1);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4944
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4945 g_free(mark);
12656
77de7b9c23bf [gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents: 12649
diff changeset
4946 g_free(idle);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4947 if(status)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4948 g_object_unref(status);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4949 if(avatar)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4950 g_object_unref(avatar);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4951 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4952
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4953 /* This is a variation on the original gtk_blist_update_contact. Here we
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4954 can know in advance which buddy has changed so we can just update that */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4955 static void pidgin_blist_update_contact(PurpleBuddyList *list, PurpleBlistNode *node)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4956 {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4957 PurpleBlistNode *cnode;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4958 PurpleContact *contact;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4959 PurpleBuddy *buddy;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4960 struct _pidgin_blist_node *gtknode;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4961
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4962 if (PURPLE_BLIST_NODE_IS_BUDDY(node))
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4963 cnode = node->parent;
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4964 else
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4965 cnode = node;
14239
661d2bb9eb86 [gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents: 14230
diff changeset
4966
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4967 g_return_if_fail(PURPLE_BLIST_NODE_IS_CONTACT(cnode));
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4968
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4969 /* First things first, update the group */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4970 if (PURPLE_BLIST_NODE_IS_BUDDY(node))
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4971 pidgin_blist_update_group(list, node);
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4972 else
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4973 pidgin_blist_update_group(list, cnode->parent);
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4974
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4975 contact = (PurpleContact*)cnode;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4976 buddy = purple_contact_get_priority_buddy(contact);
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
4977
11890
3126a9d03cbd [gaim-migrate @ 14181]
Nathan Walp <nwalp@pidgin.im>
parents: 11798
diff changeset
4978 if (buddy_is_displayable(buddy))
10006
800a81666868 [gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents: 9993
diff changeset
4979 {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4980 GtkTreeIter iter;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4981
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
4982 if(!insert_node(list, cnode, &iter))
8252
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
4983 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4984
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4985 gtknode = (struct _pidgin_blist_node *)cnode->ui_data;
10515
865130ede44a [gaim-migrate @ 11816]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10510
diff changeset
4986
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4987 if(gtknode->contact_expanded) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4988 GdkPixbuf *status;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4989 char *mark;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4990
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
4991 status = pidgin_blist_get_status_icon(cnode,
15569
e85adc8d3b5c gtkblist changes to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
4992 PIDGIN_STATUS_ICON_SMALL);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
4993
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
4994 mark = g_markup_escape_text(purple_contact_get_alias(contact), -1);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4995 gtk_tree_store_set(gtkblist->treemodel, &iter,
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4996 STATUS_ICON_COLUMN, status,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4997 STATUS_ICON_VISIBLE_COLUMN, TRUE,
14603
ad5c97d0d32b [gaim-migrate @ 17262]
Sean Egan <seanegan@pidgin.im>
parents: 14574
diff changeset
4998 NAME_COLUMN, mark,
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
4999 IDLE_COLUMN, NULL,
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
5000 IDLE_VISIBLE_COLUMN, FALSE,
14603
ad5c97d0d32b [gaim-migrate @ 17262]
Sean Egan <seanegan@pidgin.im>
parents: 14574
diff changeset
5001 BGCOLOR_COLUMN, NULL,
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
5002 BUDDY_ICON_COLUMN, NULL,
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14622
diff changeset
5003 CONTACT_EXPANDER_COLUMN, TRUE,
14471
edec88079240 [gaim-migrate @ 17117]
Sean Egan <seanegan@pidgin.im>
parents: 14456
diff changeset
5004 CONTACT_EXPANDER_VISIBLE_COLUMN, TRUE,
16182
88b7040408c8 Set the disable maximize button hint on the blist. I couldn't find a window manager that supports this, but I bet win32 does.
Sean Egan <seanegan@pidgin.im>
parents: 16162
diff changeset
5005 GROUP_EXPANDER_VISIBLE_COLUMN, FALSE,
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5006 -1);
14603
ad5c97d0d32b [gaim-migrate @ 17262]
Sean Egan <seanegan@pidgin.im>
parents: 14574
diff changeset
5007 g_free(mark);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5008 if(status)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5009 g_object_unref(status);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5010 } else {
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
5011 buddy_node(buddy, &iter, cnode);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5012 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5013 } else {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5014 pidgin_blist_hide_node(list, cnode, TRUE);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5015 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5016 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5017
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5018
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5019
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5020 static void pidgin_blist_update_buddy(PurpleBuddyList *list, PurpleBlistNode *node, gboolean statusChange)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5021 {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5022 PurpleBuddy *buddy;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5023 struct _pidgin_blist_node *gtkparentnode;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5024
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5025 g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5026
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
5027 if (node->parent == NULL)
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
5028 return;
13951
4a340b669170 [gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 13942
diff changeset
5029
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5030 buddy = (PurpleBuddy*)node;
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
5031
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5032 /* First things first, update the contact */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5033 pidgin_blist_update_contact(list, node);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5034
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5035 gtkparentnode = (struct _pidgin_blist_node *)node->parent->ui_data;
10918
77103f5ad580 [gaim-migrate @ 12681]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10884
diff changeset
5036
12341
a4b5f9eb0d83 [gaim-migrate @ 14645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12338
diff changeset
5037 if (gtkparentnode->contact_expanded && buddy_is_displayable(buddy))
10006
800a81666868 [gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents: 9993
diff changeset
5038 {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5039 GtkTreeIter iter;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5040
10006
800a81666868 [gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents: 9993
diff changeset
5041 if (!insert_node(list, node, &iter))
8252
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
5042 return;
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
5043
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5044 buddy_node(buddy, &iter, node);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5045
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5046 } else {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5047 pidgin_blist_hide_node(list, node, TRUE);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5048 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5049
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5050 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5051
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5052 static void pidgin_blist_update_chat(PurpleBuddyList *list, PurpleBlistNode *node)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5053 {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5054 PurpleChat *chat;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5055
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5056 g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node));
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5057
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5058 /* First things first, update the group */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5059 pidgin_blist_update_group(list, node->parent);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5060
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5061 chat = (PurpleChat*)node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5062
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5063 if(purple_account_is_connected(chat->account)) {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5064 GtkTreeIter iter;
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
5065 GdkPixbuf *status;
15490
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
5066 GdkPixbuf *avatar;
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
5067 GdkPixbuf *emblem;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5068 char *mark;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5069
8252
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
5070 if(!insert_node(list, node, &iter))
15c6f400498a [gaim-migrate @ 8975]
Nathan Walp <nwalp@pidgin.im>
parents: 8235
diff changeset
5071 return;
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
5072
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5073 status = pidgin_blist_get_status_icon(node,
15569
e85adc8d3b5c gtkblist changes to pidgin
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
5074 PIDGIN_STATUS_ICON_SMALL);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5075 emblem = pidgin_blist_get_emblem(node);
16437
7ff7c3405ea2 Rework the buddy icon subsystem to use the imgstore subsystem, and modify the
Richard Laager <rlaager@pidgin.im>
parents: 16357
diff changeset
5076 avatar = pidgin_blist_get_buddy_icon(node, TRUE, FALSE);
15490
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
5077
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5078 mark = g_markup_escape_text(purple_chat_get_name(chat), -1);
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
5079
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
5080 gtk_tree_store_set(gtkblist->treemodel, &iter,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5081 STATUS_ICON_COLUMN, status,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5082 STATUS_ICON_VISIBLE_COLUMN, TRUE,
15490
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
5083 BUDDY_ICON_COLUMN, avatar ? avatar : gtkblist->empty_avatar,
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
5084 BUDDY_ICON_VISIBLE_COLUMN, purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"),
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
5085 EMBLEM_COLUMN, emblem,
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15509
diff changeset
5086 EMBLEM_VISIBLE_COLUMN, emblem != NULL,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5087 NAME_COLUMN, mark,
16182
88b7040408c8 Set the disable maximize button hint on the blist. I couldn't find a window manager that supports this, but I bet win32 does.
Sean Egan <seanegan@pidgin.im>
parents: 16162
diff changeset
5088 GROUP_EXPANDER_VISIBLE_COLUMN, FALSE,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5089 -1);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5090
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5091 g_free(mark);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5092 if(status)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5093 g_object_unref(status);
15490
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
5094 if(avatar)
b96a1c748fca this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents: 15479
diff changeset
5095 g_object_unref(avatar);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5096 } else {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5097 pidgin_blist_hide_node(list, node, TRUE);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5098 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5099 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5100
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5101 static void pidgin_blist_update(PurpleBuddyList *list, PurpleBlistNode *node)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5102 {
15282
376816e3cb9e [gaim-migrate @ 18010]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15260
diff changeset
5103 if (list)
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5104 gtkblist = PIDGIN_BLIST(list);
15306
b4bb51751de0 [gaim-migrate @ 18034]
Ethan Blanton <elb@pidgin.im>
parents: 15300
diff changeset
5105 if(!gtkblist || !gtkblist->treeview || !node)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5106 return;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5107
13196
b34319a69167 [gaim-migrate @ 15558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13162
diff changeset
5108 if (node->ui_data == NULL)
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5109 pidgin_blist_new_node(node);
13196
b34319a69167 [gaim-migrate @ 15558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13162
diff changeset
5110
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5111 switch(node->type) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5112 case PURPLE_BLIST_GROUP_NODE:
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5113 pidgin_blist_update_group(list, node);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5114 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5115 case PURPLE_BLIST_CONTACT_NODE:
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5116 pidgin_blist_update_contact(list, node);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5117 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5118 case PURPLE_BLIST_BUDDY_NODE:
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5119 pidgin_blist_update_buddy(list, node, TRUE);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5120 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5121 case PURPLE_BLIST_CHAT_NODE:
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5122 pidgin_blist_update_chat(list, node);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5123 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5124 case PURPLE_BLIST_OTHER_NODE:
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5125 return;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5126 }
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5228
diff changeset
5127
13147
5442361b3f40 [gaim-migrate @ 15509]
Mart Raudsepp
parents: 13141
diff changeset
5128 #if !GTK_CHECK_VERSION(2,6,0)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5129 gtk_tree_view_columns_autosize(GTK_TREE_VIEW(gtkblist->treeview));
13147
5442361b3f40 [gaim-migrate @ 15509]
Mart Raudsepp
parents: 13141
diff changeset
5130 #endif
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5131 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5132
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5133
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5134 static void pidgin_blist_destroy(PurpleBuddyList *list)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5135 {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5136 if (!gtkblist)
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5137 return;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5138
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5139 purple_signals_disconnect_by_handle(gtkblist);
8259
7ed91862683d [gaim-migrate @ 8982]
Christian Hammond <chipx86@chipx86.com>
parents: 8254
diff changeset
5140
15300
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
5141 if (gtkblist->headline_close)
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
5142 gdk_pixbuf_unref(gtkblist->headline_close);
454ddc38e700 [gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15286
diff changeset
5143
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5144 gtk_widget_destroy(gtkblist->window);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5145
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5146 pidgin_blist_tooltip_destroy();
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5147
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5148 if (gtkblist->refresh_timer)
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5149 g_source_remove(gtkblist->refresh_timer);
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5150 if (gtkblist->timeout)
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5151 g_source_remove(gtkblist->timeout);
10354
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
5152 if (gtkblist->drag_timeout)
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
5153 g_source_remove(gtkblist->drag_timeout);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5154
13015
79ca1e6153bd [gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents: 13001
diff changeset
5155 g_hash_table_destroy(gtkblist->connection_errors);
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5156 gtkblist->refresh_timer = 0;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5157 gtkblist->timeout = 0;
10354
997ffe337bad [gaim-migrate @ 11571]
Sean Egan <seanegan@pidgin.im>
parents: 10353
diff changeset
5158 gtkblist->drag_timeout = 0;
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5159 gtkblist->window = gtkblist->vbox = gtkblist->treeview = NULL;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5160 gtkblist->treemodel = NULL;
5427
a45fa07ef20d [gaim-migrate @ 5806]
Mark Doliner <markdoliner@pidgin.im>
parents: 5422
diff changeset
5161 g_object_unref(G_OBJECT(gtkblist->ift));
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
5162 g_object_unref(G_OBJECT(gtkblist->empty_avatar));
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
5163
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
5164 gdk_cursor_unref(gtkblist->hand_cursor);
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
5165 gdk_cursor_unref(gtkblist->arrow_cursor);
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
5166 gtkblist->hand_cursor = NULL;
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
5167 gtkblist->arrow_cursor = NULL;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5168
15282
376816e3cb9e [gaim-migrate @ 18010]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15260
diff changeset
5169 g_free(gtkblist);
376816e3cb9e [gaim-migrate @ 18010]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15260
diff changeset
5170 accountmenu = NULL;
376816e3cb9e [gaim-migrate @ 18010]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15260
diff changeset
5171 gtkblist = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5172 purple_prefs_disconnect_by_handle(pidgin_blist_get_handle());
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5173 }
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5174
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5175 static void pidgin_blist_set_visible(PurpleBuddyList *list, gboolean show)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5176 {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5177 if (!(gtkblist && gtkblist->window))
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5178 return;
10325
9bb530214bae [gaim-migrate @ 11532]
Mark Doliner <markdoliner@pidgin.im>
parents: 10320
diff changeset
5179
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5180 if (show) {
15571
812bd6c69c8c dialogs
Sean Egan <seanegan@pidgin.im>
parents: 15570
diff changeset
5181 if(!PIDGIN_WINDOW_ICONIFIED(gtkblist->window) && !GTK_WIDGET_VISIBLE(gtkblist->window))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5182 purple_signal_emit(pidgin_blist_get_handle(), "gtkblist-unhiding", gtkblist);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5183 pidgin_blist_restore_position();
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5184 gtk_window_present(GTK_WINDOW(gtkblist->window));
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5185 } else {
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5186 if(visibility_manager_count) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5187 purple_signal_emit(pidgin_blist_get_handle(), "gtkblist-hiding", gtkblist);
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5188 gtk_widget_hide(gtkblist->window);
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5189 } else {
12479
01ea9120820a [gaim-migrate @ 14790]
Casey Harkins <charkins@pidgin.im>
parents: 12478
diff changeset
5190 if (!GTK_WIDGET_VISIBLE(gtkblist->window))
01ea9120820a [gaim-migrate @ 14790]
Casey Harkins <charkins@pidgin.im>
parents: 12478
diff changeset
5191 gtk_widget_show(gtkblist->window);
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5192 gtk_window_iconify(GTK_WINDOW(gtkblist->window));
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5193 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5194 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5195 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5196
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5197 static GList *
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5198 groups_tree(void)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5199 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5200 GList *tmp = NULL;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5201 char *tmp2;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5202 PurpleGroup *g;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5203 PurpleBlistNode *gnode;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5204
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5205 if (purple_get_blist()->root == NULL)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5206 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5207 tmp2 = g_strdup(_("Buddies"));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5208 tmp = g_list_append(tmp, tmp2);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5209 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5210 else
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5211 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5212 for (gnode = purple_get_blist()->root;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5213 gnode != NULL;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5214 gnode = gnode->next)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5215 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5216 if (PURPLE_BLIST_NODE_IS_GROUP(gnode))
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5217 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5218 g = (PurpleGroup *)gnode;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5219 tmp2 = g->name;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5220 tmp = g_list_append(tmp, tmp2);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5221 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5222 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5223 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5224
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5225 return tmp;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5226 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5227
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5228 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5229 add_buddy_select_account_cb(GObject *w, PurpleAccount *account,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5230 PidginAddBuddyData *data)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5231 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5232 /* Save our account */
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5233 data->account = account;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5234 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5235
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5236 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5237 destroy_add_buddy_dialog_cb(GtkWidget *win, PidginAddBuddyData *data)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5238 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5239 g_free(data);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5240 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5241
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5242 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5243 add_buddy_cb(GtkWidget *w, int resp, PidginAddBuddyData *data)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5244 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5245 const char *grp, *who, *whoalias;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5246 PurpleGroup *g;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5247 PurpleBuddy *b;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5248 PurpleConversation *c;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5249 PurpleBuddyIcon *icon;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5250
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5251 if (resp == GTK_RESPONSE_OK)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5252 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5253 who = gtk_entry_get_text(GTK_ENTRY(data->entry));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5254 grp = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(data->combo)->entry));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5255 whoalias = gtk_entry_get_text(GTK_ENTRY(data->entry_for_alias));
9658
261c1ce87287 [gaim-migrate @ 10506]
Mark Doliner <markdoliner@pidgin.im>
parents: 9646
diff changeset
5256 if (*whoalias == '\0')
261c1ce87287 [gaim-migrate @ 10506]
Mark Doliner <markdoliner@pidgin.im>
parents: 9646
diff changeset
5257 whoalias = NULL;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5258
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5259 if ((g = purple_find_group(grp)) == NULL)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5260 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5261 g = purple_group_new(grp);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5262 purple_blist_add_group(g, NULL);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5263 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5264
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5265 b = purple_buddy_new(data->account, who, whoalias);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5266 purple_blist_add_buddy(b, NULL, g, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5267 purple_account_add_buddy(data->account, b);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5268
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7879
diff changeset
5269 /*
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9236
diff changeset
5270 * XXX
11643
f04408721780 [gaim-migrate @ 13920]
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 11638
diff changeset
5271 * It really seems like it would be better if the call to
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5272 * purple_account_add_buddy() and purple_conversation_update() were done in
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5273 * blist.c, possibly in the purple_blist_add_buddy() function. Maybe
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5274 * purple_account_add_buddy() should be renamed to
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5275 * purple_blist_add_new_buddy() or something, and have it call
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5276 * purple_blist_add_buddy() after it creates it. --Mark
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9236
diff changeset
5277 *
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9236
diff changeset
5278 * No that's not good. blist.c should only deal with adding nodes to the
11643
f04408721780 [gaim-migrate @ 13920]
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 11638
diff changeset
5279 * local list. We need a new, non-gtk file that calls both
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5280 * purple_account_add_buddy and purple_blist_add_buddy().
11643
f04408721780 [gaim-migrate @ 13920]
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 11638
diff changeset
5281 * Or something. --Mark
7887
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7879
diff changeset
5282 */
4b2925a88897 [gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents: 7879
diff changeset
5283
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5284 c = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, who, data->account);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5285 if (c != NULL) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5286 icon = purple_conv_im_get_icon(PURPLE_CONV_IM(c));
13942
77bc33d555f8 [gaim-migrate @ 16358]
Mark Doliner <markdoliner@pidgin.im>
parents: 13834
diff changeset
5287 if (icon != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5288 purple_buddy_icon_update(icon);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5289 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5290 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5291
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5292 gtk_widget_destroy(data->window);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5293 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5294
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5295 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5296 pidgin_blist_request_add_buddy(PurpleAccount *account, const char *username,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5297 const char *group, const char *alias)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5298 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5299 GtkWidget *table;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5300 GtkWidget *label;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5301 GtkWidget *hbox;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5302 GtkWidget *vbox;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5303 GtkWidget *img;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5304 PidginBuddyList *gtkblist;
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5305 PidginAddBuddyData *data = g_new0(PidginAddBuddyData, 1);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5306
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5307 data->account =
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5308 (account != NULL
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5309 ? account
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5310 : purple_connection_get_account(purple_connections_get_all()->data));
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5311
15497
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
5312 img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION,
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
5313 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE));
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5314
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5315 gtkblist = PIDGIN_BLIST(purple_get_blist());
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5316
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5317 data->window = gtk_dialog_new_with_buttons(_("Add Buddy"),
8975
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5318 NULL, GTK_DIALOG_NO_SEPARATOR,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5319 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5320 GTK_STOCK_ADD, GTK_RESPONSE_OK,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5321 NULL);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5322
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5323 gtk_dialog_set_default_response(GTK_DIALOG(data->window), GTK_RESPONSE_OK);
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
5324 gtk_container_set_border_width(GTK_CONTAINER(data->window), PIDGIN_HIG_BOX_SPACE);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5325 gtk_window_set_resizable(GTK_WINDOW(data->window), FALSE);
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
5326 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(data->window)->vbox), PIDGIN_HIG_BORDER);
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
5327 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), PIDGIN_HIG_BOX_SPACE);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5328 gtk_window_set_role(GTK_WINDOW(data->window), "add_buddy");
8975
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5329 gtk_window_set_type_hint(GTK_WINDOW(data->window),
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
5330 GDK_WINDOW_TYPE_HINT_DIALOG);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5331
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
5332 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5333 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), hbox);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5334 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5335 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5336
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5337 vbox = gtk_vbox_new(FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5338 gtk_container_add(GTK_CONTAINER(hbox), vbox);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5339
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5340 label = gtk_label_new(
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5341 _("Please enter the screen name of the person you would like "
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5342 "to add to your buddy list. You may optionally enter an alias, "
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5343 "or nickname, for the buddy. The alias will be displayed in "
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5344 "place of the screen name whenever possible.\n"));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5345
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5346 gtk_widget_set_size_request(GTK_WIDGET(label), 400, -1);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5347 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5348 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5349 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5350
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
5351 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5352 gtk_container_add(GTK_CONTAINER(vbox), hbox);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5353
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5354 g_signal_connect(G_OBJECT(data->window), "destroy",
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5355 G_CALLBACK(destroy_add_buddy_dialog_cb), data);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5356
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5357 table = gtk_table_new(4, 2, FALSE);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5358 gtk_table_set_row_spacings(GTK_TABLE(table), 5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5359 gtk_table_set_col_spacings(GTK_TABLE(table), 5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5360 gtk_container_set_border_width(GTK_CONTAINER(table), 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5361 gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5362
13546
0700f0c29e14 [gaim-migrate @ 15922]
Richard Laager <rlaager@pidgin.im>
parents: 13543
diff changeset
5363 label = gtk_label_new(_("Screen name:"));
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5364 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5365 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5366
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5367 data->entry = gtk_entry_new();
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5368 gtk_table_attach_defaults(GTK_TABLE(table), data->entry, 1, 2, 0, 1);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5369 gtk_widget_grab_focus(data->entry);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5370
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5371 if (username != NULL)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5372 gtk_entry_set_text(GTK_ENTRY(data->entry), username);
12337
1c9251d1f005 [gaim-migrate @ 14641]
Mark Doliner <markdoliner@pidgin.im>
parents: 12334
diff changeset
5373 else
1c9251d1f005 [gaim-migrate @ 14641]
Mark Doliner <markdoliner@pidgin.im>
parents: 12334
diff changeset
5374 gtk_dialog_set_response_sensitive(GTK_DIALOG(data->window),
1c9251d1f005 [gaim-migrate @ 14641]
Mark Doliner <markdoliner@pidgin.im>
parents: 12334
diff changeset
5375 GTK_RESPONSE_OK, FALSE);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5376
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5377 gtk_entry_set_activates_default (GTK_ENTRY(data->entry), TRUE);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
5378 pidgin_set_accessible_label (data->entry, label);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5379
12337
1c9251d1f005 [gaim-migrate @ 14641]
Mark Doliner <markdoliner@pidgin.im>
parents: 12334
diff changeset
5380 g_signal_connect(G_OBJECT(data->entry), "changed",
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5381 G_CALLBACK(pidgin_set_sensitive_if_input),
12337
1c9251d1f005 [gaim-migrate @ 14641]
Mark Doliner <markdoliner@pidgin.im>
parents: 12334
diff changeset
5382 data->window);
1c9251d1f005 [gaim-migrate @ 14641]
Mark Doliner <markdoliner@pidgin.im>
parents: 12334
diff changeset
5383
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5384 label = gtk_label_new(_("Alias:"));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5385 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5386 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5387
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5388 data->entry_for_alias = gtk_entry_new();
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5389 gtk_table_attach_defaults(GTK_TABLE(table),
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5390 data->entry_for_alias, 1, 2, 1, 2);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5391
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5392 if (alias != NULL)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5393 gtk_entry_set_text(GTK_ENTRY(data->entry_for_alias), alias);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5394
10734
4e49449724ec [gaim-migrate @ 12336]
Richard Laager <rlaager@pidgin.im>
parents: 10694
diff changeset
5395 if (username != NULL)
4e49449724ec [gaim-migrate @ 12336]
Richard Laager <rlaager@pidgin.im>
parents: 10694
diff changeset
5396 gtk_widget_grab_focus(GTK_WIDGET(data->entry_for_alias));
4e49449724ec [gaim-migrate @ 12336]
Richard Laager <rlaager@pidgin.im>
parents: 10694
diff changeset
5397
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5398 gtk_entry_set_activates_default (GTK_ENTRY(data->entry_for_alias), TRUE);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
5399 pidgin_set_accessible_label (data->entry_for_alias, label);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5400
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5401 label = gtk_label_new(_("Group:"));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5402 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5403 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 2, 3);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5404
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5405 data->combo = gtk_combo_new();
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5406 gtk_combo_set_popdown_strings(GTK_COMBO(data->combo), groups_tree());
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5407 gtk_table_attach_defaults(GTK_TABLE(table), data->combo, 1, 2, 2, 3);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
5408 pidgin_set_accessible_label (data->combo, label);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5409
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5410 /* Set up stuff for the account box */
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5411 label = gtk_label_new(_("Account:"));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5412 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5413 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 3, 4);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5414
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5415 data->account_box = pidgin_account_option_menu_new(account, FALSE,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5416 G_CALLBACK(add_buddy_select_account_cb), NULL, data);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5417
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5418 gtk_table_attach_defaults(GTK_TABLE(table), data->account_box, 1, 2, 3, 4);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
5419 pidgin_set_accessible_label (data->account_box, label);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5420 /* End of account box */
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5421
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5422 g_signal_connect(G_OBJECT(data->window), "response",
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5423 G_CALLBACK(add_buddy_cb), data);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5424
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5425 gtk_widget_show_all(data->window);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5426
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5427 if (group != NULL)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5428 gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(data->combo)->entry), group);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5429 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5430
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5431 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5432 add_chat_cb(GtkWidget *w, PidginAddChatData *data)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5433 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5434 GHashTable *components;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5435 GList *tmp;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5436 PurpleChat *chat;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5437 PurpleGroup *group;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5438 const char *group_name;
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5439 const char *value;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5440
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5441 components = g_hash_table_new_full(g_str_hash, g_str_equal,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5442 g_free, g_free);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5443
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5444 for (tmp = data->entries; tmp; tmp = tmp->next)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5445 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5446 if (g_object_get_data(tmp->data, "is_spin"))
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5447 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5448 g_hash_table_replace(components,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5449 g_strdup(g_object_get_data(tmp->data, "identifier")),
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5450 g_strdup_printf("%d",
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5451 gtk_spin_button_get_value_as_int(tmp->data)));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5452 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5453 else
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5454 {
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5455 value = gtk_entry_get_text(tmp->data);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5456 if (*value != '\0')
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5457 g_hash_table_replace(components,
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5458 g_strdup(g_object_get_data(tmp->data, "identifier")),
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5459 g_strdup(value));
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5460 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5461 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5462
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5463 chat = purple_chat_new(data->account,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5464 gtk_entry_get_text(GTK_ENTRY(data->alias_entry)),
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5465 components);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5466
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5467 group_name = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(data->group_combo)->entry));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5468
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5469 if ((group = purple_find_group(group_name)) == NULL)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5470 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5471 group = purple_group_new(group_name);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5472 purple_blist_add_group(group, NULL);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5473 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5474
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5475 if (chat != NULL)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5476 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5477 purple_blist_add_chat(chat, group, NULL);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5478 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5479
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5480 gtk_widget_destroy(data->window);
9812
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5481 g_free(data->default_chat_name);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5482 g_list_free(data->entries);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5483 g_free(data);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5484 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5485
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5486 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5487 add_chat_resp_cb(GtkWidget *w, int resp, PidginAddChatData *data)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5488 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5489 if (resp == GTK_RESPONSE_OK)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5490 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5491 add_chat_cb(NULL, data);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5492 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5493 else
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5494 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5495 gtk_widget_destroy(data->window);
9812
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5496 g_free(data->default_chat_name);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5497 g_list_free(data->entries);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5498 g_free(data);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5499 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5500 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5501
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5502 /*
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5503 * Check the values of all the text entry boxes. If any required input
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5504 * strings are empty then don't allow the user to click on "OK."
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5505 */
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5506 static void
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5507 addchat_set_sensitive_if_input_cb(GtkWidget *entry, gpointer user_data)
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5508 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5509 PidginAddChatData *data;
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5510 GList *tmp;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5511 const char *text;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5512 gboolean required;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5513 gboolean sensitive = TRUE;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5514
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5515 data = user_data;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5516
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5517 for (tmp = data->entries; tmp != NULL; tmp = tmp->next)
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5518 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5519 if (!g_object_get_data(tmp->data, "is_spin"))
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5520 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5521 required = GPOINTER_TO_INT(g_object_get_data(tmp->data, "required"));
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5522 text = gtk_entry_get_text(tmp->data);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5523 if (required && (*text == '\0'))
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5524 sensitive = FALSE;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5525 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5526 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5527
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5528 gtk_dialog_set_response_sensitive(GTK_DIALOG(data->window), GTK_RESPONSE_OK, sensitive);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5529 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5530
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5531 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5532 rebuild_addchat_entries(PidginAddChatData *data)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5533 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5534 PurpleConnection *gc;
15051
1d0c9b4b68e6 [gaim-migrate @ 17768]
Daniel Atallah <datallah@pidgin.im>
parents: 15050
diff changeset
5535 GList *list = NULL, *tmp;
9754
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
5536 GHashTable *defaults = NULL;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5537 struct proto_chat_entry *pce;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5538 gboolean focus = TRUE;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5539
10127
3ea502c95653 [gaim-migrate @ 11165]
Daniel Atallah <datallah@pidgin.im>
parents: 10118
diff changeset
5540 g_return_if_fail(data->account != NULL);
3ea502c95653 [gaim-migrate @ 11165]
Daniel Atallah <datallah@pidgin.im>
parents: 10118
diff changeset
5541
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5542 gc = purple_account_get_connection(data->account);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5543
15051
1d0c9b4b68e6 [gaim-migrate @ 17768]
Daniel Atallah <datallah@pidgin.im>
parents: 15050
diff changeset
5544 while ((tmp = gtk_container_get_children(GTK_CONTAINER(data->entries_box))))
1d0c9b4b68e6 [gaim-migrate @ 17768]
Daniel Atallah <datallah@pidgin.im>
parents: 15050
diff changeset
5545 gtk_widget_destroy(tmp->data);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5546
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
5547 g_list_free(data->entries);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5548
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5549 data->entries = NULL;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5550
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5551 if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info != NULL)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5552 list = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info(gc);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5553
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5554 if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults != NULL)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5555 defaults = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults(gc, data->default_chat_name);
9754
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
5556
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5557 for (tmp = list; tmp; tmp = tmp->next)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5558 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5559 GtkWidget *label;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5560 GtkWidget *rowbox;
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5561 GtkWidget *input;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5562
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5563 pce = tmp->data;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5564
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5565 rowbox = gtk_hbox_new(FALSE, 5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5566 gtk_box_pack_start(GTK_BOX(data->entries_box), rowbox, FALSE, FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5567
7889
34cc5467bf55 [gaim-migrate @ 8547]
Nathan Walp <nwalp@pidgin.im>
parents: 7887
diff changeset
5568 label = gtk_label_new_with_mnemonic(pce->label);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5569 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5570 gtk_size_group_add_widget(data->sg, label);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5571 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5572
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5573 if (pce->is_int)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5574 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5575 GtkObject *adjust;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5576 adjust = gtk_adjustment_new(pce->min, pce->min, pce->max,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5577 1, 10, 10);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5578 input = gtk_spin_button_new(GTK_ADJUSTMENT(adjust), 1, 0);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5579 gtk_widget_set_size_request(input, 50, -1);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5580 gtk_box_pack_end(GTK_BOX(rowbox), input, FALSE, FALSE, 0);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5581 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5582 else
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5583 {
9754
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
5584 char *value;
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5585 input = gtk_entry_new();
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5586 gtk_entry_set_activates_default(GTK_ENTRY(input), TRUE);
9754
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
5587 value = g_hash_table_lookup(defaults, pce->identifier);
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
5588 if (value != NULL)
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5589 gtk_entry_set_text(GTK_ENTRY(input), value);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5590 if (pce->secret)
11986
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11983
diff changeset
5591 {
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5592 gtk_entry_set_visibility(GTK_ENTRY(input), FALSE);
15390
d429e03fc755 [gaim-migrate @ 18119]
Mark Doliner <markdoliner@pidgin.im>
parents: 15386
diff changeset
5593 if (gtk_entry_get_invisible_char(GTK_ENTRY(input)) == '*')
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
5594 gtk_entry_set_invisible_char(GTK_ENTRY(input), PIDGIN_INVISIBLE_CHAR);
11986
21d2ab6421a7 [gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents: 11983
diff changeset
5595 }
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5596 gtk_box_pack_end(GTK_BOX(rowbox), input, TRUE, TRUE, 0);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5597 g_signal_connect(G_OBJECT(input), "changed",
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5598 G_CALLBACK(addchat_set_sensitive_if_input_cb), data);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5599 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5600
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5601 /* Do the following for any type of input widget */
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5602 if (focus)
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5603 {
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5604 gtk_widget_grab_focus(input);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5605 focus = FALSE;
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5606 }
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5607 gtk_label_set_mnemonic_widget(GTK_LABEL(label), input);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
5608 pidgin_set_accessible_label(input, label);
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13091
diff changeset
5609 g_object_set_data(G_OBJECT(input), "identifier", (gpointer)pce->identifier);
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5610 g_object_set_data(G_OBJECT(input), "is_spin", GINT_TO_POINTER(pce->is_int));
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5611 g_object_set_data(G_OBJECT(input), "required", GINT_TO_POINTER(pce->required));
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5612 data->entries = g_list_append(data->entries, input);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5613
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5614 g_free(pce);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5615 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5616
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5617 g_list_free(list);
9754
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
5618 g_hash_table_destroy(defaults);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5619
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5620 /* Set whether the "OK" button should be clickable initially */
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5621 addchat_set_sensitive_if_input_cb(NULL, data);
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5622
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5623 gtk_widget_show_all(data->entries_box);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5624 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5625
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5626 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5627 addchat_select_account_cb(GObject *w, PurpleAccount *account,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5628 PidginAddChatData *data)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5629 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5630 if (strcmp(purple_account_get_protocol_id(data->account),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5631 purple_account_get_protocol_id(account)) == 0)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5632 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5633 data->account = account;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5634 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5635 else
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5636 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5637 data->account = account;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5638 rebuild_addchat_entries(data);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5639 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5640 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5641
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
5642 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5643 pidgin_blist_request_add_chat(PurpleAccount *account, PurpleGroup *group,
9754
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
5644 const char *alias, const char *name)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5645 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5646 PidginAddChatData *data;
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5647 PidginBuddyList *gtkblist;
8975
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5648 GList *l;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5649 PurpleConnection *gc;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5650 GtkWidget *label;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5651 GtkWidget *rowbox;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5652 GtkWidget *hbox;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5653 GtkWidget *vbox;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5654 GtkWidget *img;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5655
9812
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5656 if (account != NULL) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5657 gc = purple_account_get_connection(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5658
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5659 if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->join_chat == NULL) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5660 purple_notify_error(gc, NULL, _("This protocol does not support chat rooms."), NULL);
9812
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5661 return;
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5662 }
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5663 } else {
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5664 /* Find an account with chat capabilities */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5665 for (l = purple_connections_get_all(); l != NULL; l = l->next) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5666 gc = (PurpleConnection *)l->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5667
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5668 if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->join_chat != NULL) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5669 account = purple_connection_get_account(gc);
9812
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5670 break;
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5671 }
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5672 }
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5673
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5674 if (account == NULL) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5675 purple_notify_error(NULL, NULL,
9812
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5676 _("You are not currently signed on with any "
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5677 "protocols that have the ability to chat."), NULL);
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5678 return;
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5679 }
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5680 }
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5681
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5682 data = g_new0(PidginAddChatData, 1);
9812
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5683 data->account = account;
26cf39e74774 [gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents: 9811
diff changeset
5684 data->default_chat_name = g_strdup(name);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5685
15497
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
5686 img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION,
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15496
diff changeset
5687 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE));
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5688
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5689 gtkblist = PIDGIN_BLIST(purple_get_blist());
8975
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5690
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5691 data->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5692
8975
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5693 data->window = gtk_dialog_new_with_buttons(_("Add Chat"),
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5694 NULL, GTK_DIALOG_NO_SEPARATOR,
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5695 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5696 GTK_STOCK_ADD, GTK_RESPONSE_OK,
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5697 NULL);
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5698
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5699 gtk_dialog_set_default_response(GTK_DIALOG(data->window), GTK_RESPONSE_OK);
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
5700 gtk_container_set_border_width(GTK_CONTAINER(data->window), PIDGIN_HIG_BOX_SPACE);
8975
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5701 gtk_window_set_resizable(GTK_WINDOW(data->window), FALSE);
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
5702 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(data->window)->vbox), PIDGIN_HIG_BORDER);
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
5703 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), PIDGIN_HIG_BOX_SPACE);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5704 gtk_window_set_role(GTK_WINDOW(data->window), "add_chat");
8975
729d25bd6c96 [gaim-migrate @ 9749]
Etan Reisner <deryni@pidgin.im>
parents: 8960
diff changeset
5705 gtk_window_set_type_hint(GTK_WINDOW(data->window),
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
5706 GDK_WINDOW_TYPE_HINT_DIALOG);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5707
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
5708 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5709 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), hbox);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5710 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5711 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5712
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5713 vbox = gtk_vbox_new(FALSE, 5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5714 gtk_container_add(GTK_CONTAINER(hbox), vbox);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5715
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5716 label = gtk_label_new(
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5717 _("Please enter an alias, and the appropriate information "
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5718 "about the chat you would like to add to your buddy list.\n"));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5719 gtk_widget_set_size_request(label, 400, -1);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5720 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5721 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5722 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5723
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5724 rowbox = gtk_hbox_new(FALSE, 5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5725 gtk_box_pack_start(GTK_BOX(vbox), rowbox, FALSE, FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5726
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5727 label = gtk_label_new(_("Account:"));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5728 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5729 gtk_size_group_add_widget(data->sg, label);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5730 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5731
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5732 data->account_menu = pidgin_account_option_menu_new(account, FALSE,
10475
1b7fe16233f3 [gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents: 10439
diff changeset
5733 G_CALLBACK(addchat_select_account_cb),
9987
2396bd099335 [gaim-migrate @ 10900]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9959
diff changeset
5734 chat_account_filter_func, data);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5735 gtk_box_pack_start(GTK_BOX(rowbox), data->account_menu, TRUE, TRUE, 0);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
5736 pidgin_set_accessible_label (data->account_menu, label);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5737
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5738 data->entries_box = gtk_vbox_new(FALSE, 5);
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
5739 gtk_container_set_border_width(GTK_CONTAINER(data->entries_box), 0);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5740 gtk_box_pack_start(GTK_BOX(vbox), data->entries_box, TRUE, TRUE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5741
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5742 rebuild_addchat_entries(data);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5743
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5744 rowbox = gtk_hbox_new(FALSE, 5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5745 gtk_box_pack_start(GTK_BOX(vbox), rowbox, FALSE, FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5746
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5747 label = gtk_label_new(_("Alias:"));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5748 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5749 gtk_size_group_add_widget(data->sg, label);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5750 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5751
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5752 data->alias_entry = gtk_entry_new();
7859
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7856
diff changeset
5753 if (alias != NULL)
b0f646df7125 [gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents: 7856
diff changeset
5754 gtk_entry_set_text(GTK_ENTRY(data->alias_entry), alias);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5755 gtk_box_pack_end(GTK_BOX(rowbox), data->alias_entry, TRUE, TRUE, 0);
10311
2380cae46dbd [gaim-migrate @ 11505]
Andrew Hart <arhart@users.sourceforge.net>
parents: 10297
diff changeset
5756 gtk_entry_set_activates_default(GTK_ENTRY(data->alias_entry), TRUE);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
5757 pidgin_set_accessible_label (data->alias_entry, label);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5758
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5759 rowbox = gtk_hbox_new(FALSE, 5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5760 gtk_box_pack_start(GTK_BOX(vbox), rowbox, FALSE, FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5761
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
5762 label = gtk_label_new(_("Group:"));
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5763 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5764 gtk_size_group_add_widget(data->sg, label);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5765 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5766
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
5767 data->group_combo = gtk_combo_new();
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
5768 gtk_combo_set_popdown_strings(GTK_COMBO(data->group_combo), groups_tree());
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5769 gtk_box_pack_end(GTK_BOX(rowbox), data->group_combo, TRUE, TRUE, 0);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5770
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5771 if (group)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5772 {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5773 gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(data->group_combo)->entry),
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5774 group->name);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5775 }
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
5776 pidgin_set_accessible_label (data->group_combo, label);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5777
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5778 g_signal_connect(G_OBJECT(data->window), "response",
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5779 G_CALLBACK(add_chat_resp_cb), data);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5780
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5781 gtk_widget_show_all(data->window);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5782 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5783
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5784 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5785 add_group_cb(PurpleConnection *gc, const char *group_name)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5786 {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5787 PurpleGroup *group;
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9236
diff changeset
5788
12458
c1bb7ec2fb26 [gaim-migrate @ 14767]
Mark Doliner <markdoliner@pidgin.im>
parents: 12450
diff changeset
5789 if ((group_name == NULL) || (*group_name == '\0'))
c1bb7ec2fb26 [gaim-migrate @ 14767]
Mark Doliner <markdoliner@pidgin.im>
parents: 12450
diff changeset
5790 return;
c1bb7ec2fb26 [gaim-migrate @ 14767]
Mark Doliner <markdoliner@pidgin.im>
parents: 12450
diff changeset
5791
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5792 group = purple_group_new(group_name);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5793 purple_blist_add_group(group, NULL);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5794 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5795
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
5796 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5797 pidgin_blist_request_add_group(void)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5798 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5799 purple_request_input(NULL, _("Add Group"), NULL,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5800 _("Please enter the name of the group to be added."),
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8592
diff changeset
5801 NULL, FALSE, FALSE, NULL,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5802 _("Add"), G_CALLBACK(add_group_cb),
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5803 _("Cancel"), NULL, NULL);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5804 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5805
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5806 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5807 pidgin_blist_toggle_visibility()
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5808 {
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5809 if (gtkblist && gtkblist->window) {
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5810 if (GTK_WIDGET_VISIBLE(gtkblist->window)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5811 purple_blist_set_visible(PIDGIN_WINDOW_ICONIFIED(gtkblist->window) || gtk_blist_obscured);
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5812 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5813 purple_blist_set_visible(TRUE);
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5814 }
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5815 }
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5816 }
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5817
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5818 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5819 pidgin_blist_visibility_manager_add()
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5820 {
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5821 visibility_manager_count++;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5822 purple_debug_info("gtkblist", "added visibility manager: %d\n", visibility_manager_count);
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5823 }
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5824
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5825 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5826 pidgin_blist_visibility_manager_remove()
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5827 {
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5828 if (visibility_manager_count)
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5829 visibility_manager_count--;
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5830 if (!visibility_manager_count)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5831 purple_blist_set_visible(TRUE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5832 purple_debug_info("gtkblist", "removed visibility manager: %d\n", visibility_manager_count);
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5833 }
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5834
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5835 void pidgin_blist_add_alert(GtkWidget *widget)
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15091
diff changeset
5836 {
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15091
diff changeset
5837 gtk_container_add(GTK_CONTAINER(gtkblist->scrollbook), widget);
15413
3f4d28fe3423 [gaim-migrate @ 18144]
Sean Egan <seanegan@pidgin.im>
parents: 15409
diff changeset
5838 if (!GTK_WIDGET_HAS_FOCUS(gtkblist->window))
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5839 pidgin_set_urgent(GTK_WINDOW(gtkblist->window), TRUE);
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15091
diff changeset
5840 }
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15091
diff changeset
5841
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
5842 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5843 pidgin_blist_set_headline(const char *text, GdkPixbuf *pixbuf, GCallback callback,
15386
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
5844 gpointer user_data, GDestroyNotify destroy)
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
5845 {
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
5846 /* Destroy any existing headline first */
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
5847 if (gtkblist->headline_destroy)
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
5848 gtkblist->headline_destroy(gtkblist->headline_data);
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
5849
15246
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
5850 gtk_label_set_markup(GTK_LABEL(gtkblist->headline_label), text);
9663c7183a75 [gaim-migrate @ 17973]
Sean Egan <seanegan@pidgin.im>
parents: 15243
diff changeset
5851 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkblist->headline_image), pixbuf);
15260
a9e3babd5686 [gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents: 15259
diff changeset
5852
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
5853 gtkblist->headline_callback = callback;
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
5854 gtkblist->headline_data = user_data;
15386
2cfff7893ed0 [gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15385
diff changeset
5855 gtkblist->headline_destroy = destroy;
15413
3f4d28fe3423 [gaim-migrate @ 18144]
Sean Egan <seanegan@pidgin.im>
parents: 15409
diff changeset
5856 if (!GTK_WIDGET_HAS_FOCUS(gtkblist->window))
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5857 pidgin_set_urgent(GTK_WINDOW(gtkblist->window), TRUE);
15243
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
5858 gtk_widget_show_all(gtkblist->headline_hbox);
87dafc34b920 [gaim-migrate @ 17968]
Sean Egan <seanegan@pidgin.im>
parents: 15209
diff changeset
5859 }
12016
0517ad5d0196 [gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents: 11988
diff changeset
5860
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5861 static PurpleBlistUiOps blist_ui_ops =
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5862 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5863 pidgin_blist_new_list,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5864 pidgin_blist_new_node,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5865 pidgin_blist_show,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5866 pidgin_blist_update,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5867 pidgin_blist_remove,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5868 pidgin_blist_destroy,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5869 pidgin_blist_set_visible,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5870 pidgin_blist_request_add_buddy,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5871 pidgin_blist_request_add_chat,
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5872 pidgin_blist_request_add_group
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5873 };
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5874
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5875
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5876 PurpleBlistUiOps *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5877 pidgin_blist_get_ui_ops(void)
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5878 {
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5879 return &blist_ui_ops;
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5880 }
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5881
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5882 PidginBuddyList *pidgin_blist_get_default_gtk_blist()
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents: 10623
diff changeset
5883 {
15509
068826834dd2 re-indentation.
Nathan Walp <nwalp@pidgin.im>
parents: 15505
diff changeset
5884 return gtkblist;
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents: 10623
diff changeset
5885 }
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents: 10623
diff changeset
5886
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5887 static void account_signon_cb(PurpleConnection *gc, gpointer z)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5888 {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5889 PurpleAccount *account = purple_connection_get_account(gc);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5890 PurpleBlistNode *gnode, *cnode;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5891 for(gnode = purple_get_blist()->root; gnode; gnode = gnode->next)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5892 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5893 if(!PURPLE_BLIST_NODE_IS_GROUP(gnode))
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5894 continue;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5895 for(cnode = gnode->child; cnode; cnode = cnode->next)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5896 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5897 PurpleChat *chat;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5898
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5899 if(!PURPLE_BLIST_NODE_IS_CHAT(cnode))
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5900 continue;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5901
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5902 chat = (PurpleChat *)cnode;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5903
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5904 if(chat->account != account)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5905 continue;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5906
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5907 if(purple_blist_node_get_bool((PurpleBlistNode*)chat, "gtk-autojoin") ||
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5908 (purple_blist_node_get_string((PurpleBlistNode*)chat,
8198
867abd109161 [gaim-migrate @ 8921]
Nathan Walp <nwalp@pidgin.im>
parents: 8197
diff changeset
5909 "gtk-autojoin") != NULL))
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5910 serv_join_chat(gc, chat->components);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5911 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5912 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5913 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5914
8815
efd18a7c99dd [gaim-migrate @ 9577]
Gary Kramlich <grim@pidgin.im>
parents: 8710
diff changeset
5915 void *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5916 pidgin_blist_get_handle() {
8815
efd18a7c99dd [gaim-migrate @ 9577]
Gary Kramlich <grim@pidgin.im>
parents: 8710
diff changeset
5917 static int handle;
efd18a7c99dd [gaim-migrate @ 9577]
Gary Kramlich <grim@pidgin.im>
parents: 8710
diff changeset
5918
efd18a7c99dd [gaim-migrate @ 9577]
Gary Kramlich <grim@pidgin.im>
parents: 8710
diff changeset
5919 return &handle;
efd18a7c99dd [gaim-migrate @ 9577]
Gary Kramlich <grim@pidgin.im>
parents: 8710
diff changeset
5920 }
efd18a7c99dd [gaim-migrate @ 9577]
Gary Kramlich <grim@pidgin.im>
parents: 8710
diff changeset
5921
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5922 static gboolean buddy_signonoff_timeout_cb(PurpleBuddy *buddy)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5923 {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5924 struct _pidgin_blist_node *gtknode = ((PurpleBlistNode*)buddy)->ui_data;
11910
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5925
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5926 gtknode->recent_signonoff = FALSE;
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5927 gtknode->recent_signonoff_timer = 0;
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5928
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5929 pidgin_blist_update(NULL, (PurpleBlistNode*)buddy);
11910
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5930
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5931 return FALSE;
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5932 }
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5933
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5934 static void buddy_signonoff_cb(PurpleBuddy *buddy)
11910
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5935 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5936 struct _pidgin_blist_node *gtknode;
11915
2803eadda83e [gaim-migrate @ 14206]
Nathan Walp <nwalp@pidgin.im>
parents: 11910
diff changeset
5937
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5938 if(!((PurpleBlistNode*)buddy)->ui_data) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5939 pidgin_blist_new_node((PurpleBlistNode*)buddy);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5940 }
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5941
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5942 gtknode = ((PurpleBlistNode*)buddy)->ui_data;
11910
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5943
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5944 gtknode->recent_signonoff = TRUE;
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5945
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5946 if(gtknode->recent_signonoff_timer > 0)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5947 purple_timeout_remove(gtknode->recent_signonoff_timer);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5948 gtknode->recent_signonoff_timer = purple_timeout_add(10000,
11910
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5949 (GSourceFunc)buddy_signonoff_timeout_cb, buddy);
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5950 }
4f8184cdcfff [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11906
diff changeset
5951
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5952 void pidgin_blist_init(void)
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5953 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
5954 void *gtk_blist_handle = pidgin_blist_get_handle();
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5955
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5956 purple_signal_connect(purple_connections_get_handle(), "signed-on",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5957 gtk_blist_handle, PURPLE_CALLBACK(account_signon_cb),
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
5958 NULL);
7731
7c3bb30a94c4 [gaim-migrate @ 8376]
Nathan Walp <nwalp@pidgin.im>
parents: 7723
diff changeset
5959
7c3bb30a94c4 [gaim-migrate @ 8376]
Nathan Walp <nwalp@pidgin.im>
parents: 7723
diff changeset
5960 /* Initialize prefs */
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
5961 purple_prefs_add_none(PIDGIN_PREFS_ROOT "/blist");
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
5962 purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons", TRUE);
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
5963 purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/blist/show_empty_groups", FALSE);
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
5964 purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/blist/show_idle_time", TRUE);
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
5965 purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/blist/show_offline_buddies", FALSE);
16162
5c3fb6457918 For a first time user, don't show the buddy list telling him to go to Accounts>Add/Edit, because Accounts->Add/Edit is already open with its own instructions. Show only one window with instructions and then present the Buddy List when you create your first account.
Sean Egan <seanegan@pidgin.im>
parents: 16160
diff changeset
5966 purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/blist/list_visible", FALSE);
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
5967 purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/blist/list_maximized", FALSE);
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
5968 purple_prefs_add_string(PIDGIN_PREFS_ROOT "/blist/sort_type", "alphabetical");
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
5969 purple_prefs_add_int(PIDGIN_PREFS_ROOT "/blist/x", 0);
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
5970 purple_prefs_add_int(PIDGIN_PREFS_ROOT "/blist/y", 0);
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
5971 purple_prefs_add_int(PIDGIN_PREFS_ROOT "/blist/width", 250); /* Golden ratio, baby */
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
5972 purple_prefs_add_int(PIDGIN_PREFS_ROOT "/blist/height", 405); /* Golden ratio, baby */
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
5973 purple_prefs_add_int(PIDGIN_PREFS_ROOT "/blist/tooltip_delay", 500);
7731
7c3bb30a94c4 [gaim-migrate @ 8376]
Nathan Walp <nwalp@pidgin.im>
parents: 7723
diff changeset
5974
8815
efd18a7c99dd [gaim-migrate @ 9577]
Gary Kramlich <grim@pidgin.im>
parents: 8710
diff changeset
5975 /* Register our signals */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5976 purple_signal_register(gtk_blist_handle, "gtkblist-hiding",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5977 purple_marshal_VOID__POINTER, NULL, 1,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5978 purple_value_new(PURPLE_TYPE_SUBTYPE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5979 PURPLE_SUBTYPE_BLIST));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5980
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5981 purple_signal_register(gtk_blist_handle, "gtkblist-unhiding",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5982 purple_marshal_VOID__POINTER, NULL, 1,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5983 purple_value_new(PURPLE_TYPE_SUBTYPE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5984 PURPLE_SUBTYPE_BLIST));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5985
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5986 purple_signal_register(gtk_blist_handle, "gtkblist-created",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5987 purple_marshal_VOID__POINTER, NULL, 1,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5988 purple_value_new(PURPLE_TYPE_SUBTYPE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5989 PURPLE_SUBTYPE_BLIST));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5990
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5991 purple_signal_register(gtk_blist_handle, "drawing-tooltip",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5992 purple_marshal_VOID__POINTER_POINTER_UINT, NULL, 3,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5993 purple_value_new(PURPLE_TYPE_SUBTYPE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5994 PURPLE_SUBTYPE_BLIST_NODE),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5995 purple_value_new_outgoing(PURPLE_TYPE_BOXED, "GString *"),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5996 purple_value_new(PURPLE_TYPE_BOOLEAN));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5997
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5998
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
5999 purple_signal_connect(purple_blist_get_handle(), "buddy-signed-on", gtk_blist_handle, PURPLE_CALLBACK(buddy_signonoff_cb), NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6000 purple_signal_connect(purple_blist_get_handle(), "buddy-signed-off", gtk_blist_handle, PURPLE_CALLBACK(buddy_signonoff_cb), NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6001 purple_signal_connect(purple_blist_get_handle(), "buddy-privacy-changed", gtk_blist_handle, PURPLE_CALLBACK(pidgin_blist_update_privacy_cb), NULL);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6002 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6003
8815
efd18a7c99dd [gaim-migrate @ 9577]
Gary Kramlich <grim@pidgin.im>
parents: 8710
diff changeset
6004 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6005 pidgin_blist_uninit(void) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6006 purple_signals_unregister_by_instance(pidgin_blist_get_handle());
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6007 purple_signals_disconnect_by_handle(pidgin_blist_get_handle());
8815
efd18a7c99dd [gaim-migrate @ 9577]
Gary Kramlich <grim@pidgin.im>
parents: 8710
diff changeset
6008 }
5228
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
6009
83adaad2deb1 [gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
6010 /*********************************************************************
9811
2cbca162a09f [gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents: 9791
diff changeset
6011 * Buddy List sorting functions *
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6012 *********************************************************************/
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6013
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6014 GList *pidgin_blist_get_sort_methods()
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6015 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6016 return pidgin_blist_sort_methods;
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6017 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6018
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6019 void pidgin_blist_sort_method_reg(const char *id, const char *name, pidgin_blist_sort_function func)
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6020 {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6021 struct pidgin_blist_sort_method *method = g_new0(struct pidgin_blist_sort_method, 1);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6022 method->id = g_strdup(id);
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6023 method->name = g_strdup(name);
9775
e3a3555b0621 [gaim-migrate @ 10643]
Daniel Atallah <datallah@pidgin.im>
parents: 9774
diff changeset
6024 method->func = func;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6025 pidgin_blist_sort_methods = g_list_append(pidgin_blist_sort_methods, method);
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6026 pidgin_blist_update_sort_methods();
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6027 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6028
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6029 void pidgin_blist_sort_method_unreg(const char *id){
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6030 GList *l = pidgin_blist_sort_methods;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6031
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6032 while(l) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6033 struct pidgin_blist_sort_method *method = l->data;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6034 if(!strcmp(method->id, id)) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6035 pidgin_blist_sort_methods = g_list_delete_link(pidgin_blist_sort_methods, l);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6036 g_free(method->id);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6037 g_free(method->name);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6038 g_free(method);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6039 break;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6040 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6041 }
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6042 pidgin_blist_update_sort_methods();
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6043 }
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6044
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6045 void pidgin_blist_sort_method_set(const char *id){
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6046 GList *l = pidgin_blist_sort_methods;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6047
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6048 if(!id)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6049 id = "none";
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6050
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6051 while (l && strcmp(((struct pidgin_blist_sort_method*)l->data)->id, id))
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6052 l = l->next;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6053
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6054 if (l) {
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6055 current_sort_method = l->data;
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6056 } else if (!current_sort_method) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6057 pidgin_blist_sort_method_set("none");
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6058 return;
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6059 }
14200
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
6060 if (!strcmp(id, "none")) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6061 redo_buddy_list(purple_get_blist(), TRUE, FALSE);
14200
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
6062 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6063 redo_buddy_list(purple_get_blist(), FALSE, FALSE);
14200
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
6064 }
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6065 }
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6066
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6067 /******************************************
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6068 ** Sort Methods
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6069 ******************************************/
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6070
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6071 static void sort_method_none(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter parent_iter, GtkTreeIter *cur, GtkTreeIter *iter)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6072 {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6073 PurpleBlistNode *sibling = node->prev;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6074 GtkTreeIter sibling_iter;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6075
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6076 if (cur != NULL) {
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6077 *iter = *cur;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6078 return;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6079 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6080
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6081 while (sibling && !get_iter_from_node(sibling, &sibling_iter)) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6082 sibling = sibling->prev;
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6083 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6084
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6085 gtk_tree_store_insert_after(gtkblist->treemodel, iter,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6086 node->parent ? &parent_iter : NULL,
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6087 sibling ? &sibling_iter : NULL);
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6088 }
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6089
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6090 #if GTK_CHECK_VERSION(2,2,1)
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6091
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6092 static void sort_method_alphabetical(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter)
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6093 {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6094 GtkTreeIter more_z;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6095
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6096 const char *my_name;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6097
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6098 if(PURPLE_BLIST_NODE_IS_CONTACT(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6099 my_name = purple_contact_get_alias((PurpleContact*)node);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6100 } else if(PURPLE_BLIST_NODE_IS_CHAT(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6101 my_name = purple_chat_get_name((PurpleChat*)node);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6102 } else {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6103 sort_method_none(node, blist, groupiter, cur, iter);
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6104 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6105 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6106
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6107
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6108 if (!gtk_tree_model_iter_children(GTK_TREE_MODEL(gtkblist->treemodel), &more_z, &groupiter)) {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6109 gtk_tree_store_insert(gtkblist->treemodel, iter, &groupiter, 0);
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6110 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6111 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6112
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6113 do {
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
6114 GValue val;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6115 PurpleBlistNode *n;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6116 const char *this_name;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6117 int cmp;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6118
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
6119 val.g_type = 0;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6120 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &more_z, NODE_COLUMN, &val);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6121 n = g_value_get_pointer(&val);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6122
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6123 if(PURPLE_BLIST_NODE_IS_CONTACT(n)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6124 this_name = purple_contact_get_alias((PurpleContact*)n);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6125 } else if(PURPLE_BLIST_NODE_IS_CHAT(n)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6126 this_name = purple_chat_get_name((PurpleChat*)n);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6127 } else {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6128 this_name = NULL;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6129 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6130
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6131 cmp = purple_utf8_strcasecmp(my_name, this_name);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6132
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6133 if(this_name && (cmp < 0 || (cmp == 0 && node < n))) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6134 if(cur) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6135 gtk_tree_store_move_before(gtkblist->treemodel, cur, &more_z);
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6136 *iter = *cur;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6137 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6138 } else {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6139 gtk_tree_store_insert_before(gtkblist->treemodel, iter,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6140 &groupiter, &more_z);
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6141 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6142 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6143 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6144 g_value_unset(&val);
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6145 } while (gtk_tree_model_iter_next (GTK_TREE_MODEL(gtkblist->treemodel), &more_z));
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6146
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6147 if(cur) {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6148 gtk_tree_store_move_before(gtkblist->treemodel, cur, NULL);
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6149 *iter = *cur;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6150 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6151 } else {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6152 gtk_tree_store_append(gtkblist->treemodel, iter, &groupiter);
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6153 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6154 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6155 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6156
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6157 static void sort_method_status(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6158 {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6159 GtkTreeIter more_z;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6160
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6161 PurpleBuddy *my_buddy, *this_buddy;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6162
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6163 if(PURPLE_BLIST_NODE_IS_CONTACT(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6164 my_buddy = purple_contact_get_priority_buddy((PurpleContact*)node);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6165 } else if(PURPLE_BLIST_NODE_IS_CHAT(node)) {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6166 if (cur != NULL) {
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6167 *iter = *cur;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6168 return;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6169 }
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6170
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6171 gtk_tree_store_append(gtkblist->treemodel, iter, &groupiter);
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6172 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6173 } else {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6174 sort_method_none(node, blist, groupiter, cur, iter);
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6175 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6176 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6177
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6178
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6179 if (!gtk_tree_model_iter_children(GTK_TREE_MODEL(gtkblist->treemodel), &more_z, &groupiter)) {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6180 gtk_tree_store_insert(gtkblist->treemodel, iter, &groupiter, 0);
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6181 return;
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6182 }
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6183
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6184 do {
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
6185 GValue val;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6186 PurpleBlistNode *n;
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6187 gint name_cmp;
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6188 gint presence_cmp;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6189
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
6190 val.g_type = 0;
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6191 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &more_z, NODE_COLUMN, &val);
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6192 n = g_value_get_pointer(&val);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6193
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6194 if(PURPLE_BLIST_NODE_IS_CONTACT(n)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6195 this_buddy = purple_contact_get_priority_buddy((PurpleContact*)n);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6196 } else {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6197 this_buddy = NULL;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6198 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6199
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6200 name_cmp = purple_utf8_strcasecmp(
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6201 purple_contact_get_alias(purple_buddy_get_contact(my_buddy)),
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6202 (this_buddy
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6203 ? purple_contact_get_alias(purple_buddy_get_contact(this_buddy))
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6204 : NULL));
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6205
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6206 presence_cmp = purple_presence_compare(
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6207 purple_buddy_get_presence(my_buddy),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6208 this_buddy ? purple_buddy_get_presence(this_buddy) : NULL);
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6209
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6210 if (this_buddy == NULL ||
10860
8f600347b9e4 [gaim-migrate @ 12543]
Palmer Cox <enix@users.sourceforge.net>
parents: 10850
diff changeset
6211 (presence_cmp < 0 ||
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6212 (presence_cmp == 0 &&
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6213 (name_cmp < 0 || (name_cmp == 0 && node < n)))))
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6214 {
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6215 if (cur != NULL)
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6216 {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6217 gtk_tree_store_move_before(gtkblist->treemodel, cur, &more_z);
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6218 *iter = *cur;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6219 return;
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6220 }
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6221 else
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6222 {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6223 gtk_tree_store_insert_before(gtkblist->treemodel, iter,
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6224 &groupiter, &more_z);
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6225 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6226 }
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6227 }
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6228
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6229 g_value_unset(&val);
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6230 }
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6231 while (gtk_tree_model_iter_next(GTK_TREE_MODEL(gtkblist->treemodel),
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9925
diff changeset
6232 &more_z));
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6233
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6234 if (cur) {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6235 gtk_tree_store_move_before(gtkblist->treemodel, cur, NULL);
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6236 *iter = *cur;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6237 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6238 } else {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6239 gtk_tree_store_append(gtkblist->treemodel, iter, &groupiter);
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6240 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6241 }
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6242 }
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6243
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6244 static void sort_method_log(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter)
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6245 {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6246 GtkTreeIter more_z;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6247
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6248 int log_size = 0, this_log_size = 0;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6249 const char *buddy_name, *this_buddy_name;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6250
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6251 if(cur && (gtk_tree_model_iter_n_children(GTK_TREE_MODEL(gtkblist->treemodel), &groupiter) == 1)) {
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6252 *iter = *cur;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6253 return;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6254 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6255
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6256 if(PURPLE_BLIST_NODE_IS_CONTACT(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6257 PurpleBlistNode *n;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6258 for (n = node->child; n; n = n->next)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6259 log_size += purple_log_get_total_size(PURPLE_LOG_IM, ((PurpleBuddy*)(n))->name, ((PurpleBuddy*)(n))->account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6260 buddy_name = purple_contact_get_alias((PurpleContact*)node);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6261 } else if(PURPLE_BLIST_NODE_IS_CHAT(node)) {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6262 /* we don't have a reliable way of getting the log filename
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6263 * from the chat info in the blist, yet */
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6264 if (cur != NULL) {
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6265 *iter = *cur;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6266 return;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6267 }
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6268
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6269 gtk_tree_store_append(gtkblist->treemodel, iter, &groupiter);
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6270 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6271 } else {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6272 sort_method_none(node, blist, groupiter, cur, iter);
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6273 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6274 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6275
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6276
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6277 if (!gtk_tree_model_iter_children(GTK_TREE_MODEL(gtkblist->treemodel), &more_z, &groupiter)) {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6278 gtk_tree_store_insert(gtkblist->treemodel, iter, &groupiter, 0);
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6279 return;
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6280 }
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6281
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6282 do {
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
6283 GValue val;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6284 PurpleBlistNode *n;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6285 PurpleBlistNode *n2;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6286 int cmp;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6287
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12592
diff changeset
6288 val.g_type = 0;
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6289 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &more_z, NODE_COLUMN, &val);
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6290 n = g_value_get_pointer(&val);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6291 this_log_size = 0;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6292
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6293 if(PURPLE_BLIST_NODE_IS_CONTACT(n)) {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6294 for (n2 = n->child; n2; n2 = n2->next)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6295 this_log_size += purple_log_get_total_size(PURPLE_LOG_IM, ((PurpleBuddy*)(n2))->name, ((PurpleBuddy*)(n2))->account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6296 this_buddy_name = purple_contact_get_alias((PurpleContact*)n);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6297 } else {
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6298 this_buddy_name = NULL;
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6299 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6300
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6301 cmp = purple_utf8_strcasecmp(buddy_name, this_buddy_name);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6302
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6303 if (!PURPLE_BLIST_NODE_IS_CONTACT(n) || log_size > this_log_size ||
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6304 ((log_size == this_log_size) &&
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6305 (cmp < 0 || (cmp == 0 && node < n)))) {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6306 if (cur != NULL) {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6307 gtk_tree_store_move_before(gtkblist->treemodel, cur, &more_z);
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6308 *iter = *cur;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6309 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6310 } else {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6311 gtk_tree_store_insert_before(gtkblist->treemodel, iter,
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6312 &groupiter, &more_z);
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6313 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6314 }
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6315 }
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6316 g_value_unset(&val);
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6317 } while (gtk_tree_model_iter_next (GTK_TREE_MODEL(gtkblist->treemodel), &more_z));
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6318
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6319 if (cur != NULL) {
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6320 gtk_tree_store_move_before(gtkblist->treemodel, cur, NULL);
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6321 *iter = *cur;
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6322 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6323 } else {
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6324 gtk_tree_store_append(gtkblist->treemodel, iter, &groupiter);
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6325 return;
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6326 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6327 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6328
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6329 #endif
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6330
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6331 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6332 plugin_act(GtkObject *obj, PurplePluginAction *pam)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6333 {
13197
734f8ef469b8 [gaim-migrate @ 15559]
Gary Kramlich <grim@reaperworld.com>
parents: 13196
diff changeset
6334 if (pam && pam->callback)
10352
802e7ab5b838 [gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents: 10351
diff changeset
6335 pam->callback(pam);
5422
066c98fd4fa8 [gaim-migrate @ 5801]
Sean Egan <seanegan@pidgin.im>
parents: 5419
diff changeset
6336 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6337
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
6338 static void
16040
d213ae510895 sf patch #1689182, from Will Thompson
Mark Doliner <markdoliner@pidgin.im>
parents: 15982
diff changeset
6339 build_plugin_actions(GtkWidget *menu, PurplePlugin *plugin,
d213ae510895 sf patch #1689182, from Will Thompson
Mark Doliner <markdoliner@pidgin.im>
parents: 15982
diff changeset
6340 gpointer context)
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
6341 {
12333
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6342 GtkWidget *menuitem;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6343 PurplePluginAction *action = NULL;
12333
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6344 GList *actions, *l;
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6345
16040
d213ae510895 sf patch #1689182, from Will Thompson
Mark Doliner <markdoliner@pidgin.im>
parents: 15982
diff changeset
6346 actions = PURPLE_PLUGIN_ACTIONS(plugin, context);
12333
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6347
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6348 for (l = actions; l != NULL; l = l->next)
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6349 {
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6350 if (l->data)
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6351 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6352 action = (PurplePluginAction *) l->data;
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 9013
diff changeset
6353 action->plugin = plugin;
16040
d213ae510895 sf patch #1689182, from Will Thompson
Mark Doliner <markdoliner@pidgin.im>
parents: 15982
diff changeset
6354 action->context = context;
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 9013
diff changeset
6355
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 9013
diff changeset
6356 menuitem = gtk_menu_item_new_with_label(action->label);
12333
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6357 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6358
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 9013
diff changeset
6359 g_signal_connect(G_OBJECT(menuitem), "activate",
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 9013
diff changeset
6360 G_CALLBACK(plugin_act), action);
13197
734f8ef469b8 [gaim-migrate @ 15559]
Gary Kramlich <grim@reaperworld.com>
parents: 13196
diff changeset
6361 g_object_set_data_full(G_OBJECT(menuitem), "plugin_action",
734f8ef469b8 [gaim-migrate @ 15559]
Gary Kramlich <grim@reaperworld.com>
parents: 13196
diff changeset
6362 action,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6363 (GDestroyNotify)purple_plugin_action_free);
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 9013
diff changeset
6364 gtk_widget_show(menuitem);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 9013
diff changeset
6365 }
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 9013
diff changeset
6366 else
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
6367 pidgin_separator(menu);
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 9013
diff changeset
6368 }
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 9013
diff changeset
6369
12333
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6370 g_list_free(actions);
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
6371 }
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
6372
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6373 static void
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6374 modify_account_cb(GtkWidget *widget, gpointer data)
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6375 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6376 pidgin_account_dialog_show(PIDGIN_MODIFY_ACCOUNT_DIALOG, data);
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6377 }
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6378
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6379 static void
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6380 enable_account_cb(GtkCheckMenuItem *widget, gpointer data)
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6381 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6382 PurpleAccount *account = data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6383 const PurpleSavedStatus *saved_status;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6384
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6385 saved_status = purple_savedstatus_get_current();
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6386 purple_savedstatus_activate_for_account(saved_status, account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6387
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6388 purple_account_set_enabled(account, PIDGIN_UI, TRUE);
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6389 }
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6390
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6391 static void
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6392 disable_account_cb(GtkCheckMenuItem *widget, gpointer data)
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6393 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6394 PurpleAccount *account = data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6395
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6396 purple_account_set_enabled(account, PIDGIN_UI, FALSE);
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6397 }
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
6398
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6399 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6400 pidgin_blist_update_accounts_menu(void)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6401 {
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6402 GtkWidget *menuitem = NULL, *submenu = NULL;
15063
f049d0515fd8 [gaim-migrate @ 17781]
Richard Laager <rlaager@pidgin.im>
parents: 15058
diff changeset
6403 GtkAccelGroup *accel_group = NULL;
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6404 GList *l = NULL, *accounts = NULL;
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6405 gboolean disabled_accounts = FALSE;
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6406
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6407 if (accountmenu == NULL)
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6408 return;
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6409
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6410 /* Clear the old Accounts menu */
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6411 for (l = gtk_container_get_children(GTK_CONTAINER(accountmenu)); l; l = l->next) {
12348
847b6a8f2d07 [gaim-migrate @ 14652]
Etan Reisner <deryni@pidgin.im>
parents: 12341
diff changeset
6412 menuitem = l->data;
847b6a8f2d07 [gaim-migrate @ 14652]
Etan Reisner <deryni@pidgin.im>
parents: 12341
diff changeset
6413
847b6a8f2d07 [gaim-migrate @ 14652]
Etan Reisner <deryni@pidgin.im>
parents: 12341
diff changeset
6414 if (menuitem != gtk_item_factory_get_widget(gtkblist->ift, N_("/Accounts/Add\\/Edit")))
15050
f99d78ac44e9 [gaim-migrate @ 17767]
Daniel Atallah <datallah@pidgin.im>
parents: 14914
diff changeset
6415 gtk_widget_destroy(menuitem);
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6416 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6417
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6418 for (accounts = purple_accounts_get_all(); accounts; accounts = accounts->next) {
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6419 char *buf = NULL;
15063
f049d0515fd8 [gaim-migrate @ 17781]
Richard Laager <rlaager@pidgin.im>
parents: 15058
diff changeset
6420 char *accel_path_buf = NULL;
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6421 GtkWidget *image = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6422 PurpleConnection *gc = NULL;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6423 PurpleAccount *account = NULL;
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13049
diff changeset
6424 GdkPixbuf *pixbuf = NULL;
16040
d213ae510895 sf patch #1689182, from Will Thompson
Mark Doliner <markdoliner@pidgin.im>
parents: 15982
diff changeset
6425 PurplePlugin *plugin = NULL;
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6426
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6427 account = accounts->data;
15063
f049d0515fd8 [gaim-migrate @ 17781]
Richard Laager <rlaager@pidgin.im>
parents: 15058
diff changeset
6428 accel_group = gtk_menu_get_accel_group(GTK_MENU(accountmenu));
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6429
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6430 if(purple_account_get_enabled(account, PIDGIN_UI)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6431 buf = g_strconcat(purple_account_get_username(account), " (",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6432 purple_account_get_protocol_name(account), ")", NULL);
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6433 menuitem = gtk_image_menu_item_new_with_label(buf);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6434 accel_path_buf = g_strconcat(N_("<PurpleMain>/Accounts/"), buf, NULL);
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6435 g_free(buf);
15799
ba7af742a0d1 Change some old, busted status icon stuff to use the new hotness
Sean Egan <seanegan@pidgin.im>
parents: 15769
diff changeset
6436 pixbuf = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_SMALL);
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13049
diff changeset
6437 if (pixbuf != NULL)
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13049
diff changeset
6438 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6439 if (!purple_account_is_connected(account))
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13049
diff changeset
6440 gdk_pixbuf_saturate_and_pixelate(pixbuf, pixbuf,
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6441 0.0, FALSE);
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13049
diff changeset
6442 image = gtk_image_new_from_pixbuf(pixbuf);
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6443 g_object_unref(G_OBJECT(pixbuf));
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6444 gtk_widget_show(image);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6445 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6446 }
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6447 gtk_menu_shell_append(GTK_MENU_SHELL(accountmenu), menuitem);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6448 gtk_widget_show(menuitem);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6449
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6450 submenu = gtk_menu_new();
15063
f049d0515fd8 [gaim-migrate @ 17781]
Richard Laager <rlaager@pidgin.im>
parents: 15058
diff changeset
6451 gtk_menu_set_accel_group(GTK_MENU(submenu), accel_group);
f049d0515fd8 [gaim-migrate @ 17781]
Richard Laager <rlaager@pidgin.im>
parents: 15058
diff changeset
6452 gtk_menu_set_accel_path(GTK_MENU(submenu), accel_path_buf);
f049d0515fd8 [gaim-migrate @ 17781]
Richard Laager <rlaager@pidgin.im>
parents: 15058
diff changeset
6453 g_free(accel_path_buf);
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6454 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6455 gtk_widget_show(submenu);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6456
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6457
12334
f88c9f928f51 [gaim-migrate @ 14638]
Mark Doliner <markdoliner@pidgin.im>
parents: 12333
diff changeset
6458 menuitem = gtk_menu_item_new_with_mnemonic(_("_Edit Account"));
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6459 g_signal_connect(G_OBJECT(menuitem), "activate",
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6460 G_CALLBACK(modify_account_cb), account);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6461 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6462 gtk_widget_show(menuitem);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6463
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
6464 pidgin_separator(submenu);
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6465
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6466 gc = purple_account_get_connection(account);
16040
d213ae510895 sf patch #1689182, from Will Thompson
Mark Doliner <markdoliner@pidgin.im>
parents: 15982
diff changeset
6467 plugin = gc && PURPLE_CONNECTION_IS_CONNECTED(gc) ? gc->prpl : NULL;
d213ae510895 sf patch #1689182, from Will Thompson
Mark Doliner <markdoliner@pidgin.im>
parents: 15982
diff changeset
6468 if (plugin && PURPLE_PLUGIN_HAS_ACTIONS(plugin)) {
d213ae510895 sf patch #1689182, from Will Thompson
Mark Doliner <markdoliner@pidgin.im>
parents: 15982
diff changeset
6469 build_plugin_actions(submenu, plugin, gc);
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6470 } else {
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6471 menuitem = gtk_menu_item_new_with_label(_("No actions available"));
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6472 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6473 gtk_widget_set_sensitive(menuitem, FALSE);
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6474 gtk_widget_show(menuitem);
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6475 }
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6476
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
6477 pidgin_separator(submenu);
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6478
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6479 menuitem = gtk_menu_item_new_with_mnemonic(_("_Disable"));
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6480 g_signal_connect(G_OBJECT(menuitem), "activate",
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6481 G_CALLBACK(disable_account_cb), account);
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6482 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6483 gtk_widget_show(menuitem);
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6484 } else {
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6485 disabled_accounts = TRUE;
12296
488cc1a84a50 [gaim-migrate @ 14600]
Etan Reisner <deryni@pidgin.im>
parents: 12279
diff changeset
6486 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6487 }
9019
b9a333b36763 [gaim-migrate @ 9795]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
6488
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6489 if(disabled_accounts) {
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15566
diff changeset
6490 pidgin_separator(accountmenu);
12338
3548ced0c9ff [gaim-migrate @ 14642]
Mark Doliner <markdoliner@pidgin.im>
parents: 12337
diff changeset
6491 menuitem = gtk_menu_item_new_with_label(_("Enable Account"));
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6492 gtk_menu_shell_append(GTK_MENU_SHELL(accountmenu), menuitem);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6493 gtk_widget_show(menuitem);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6494
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6495 submenu = gtk_menu_new();
15063
f049d0515fd8 [gaim-migrate @ 17781]
Richard Laager <rlaager@pidgin.im>
parents: 15058
diff changeset
6496 gtk_menu_set_accel_group(GTK_MENU(submenu), accel_group);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6497 gtk_menu_set_accel_path(GTK_MENU(submenu), N_("<PurpleMain>/Accounts/Enable Account"));
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6498 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6499 gtk_widget_show(submenu);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6500
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6501 for (accounts = purple_accounts_get_all(); accounts; accounts = accounts->next) {
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6502 char *buf = NULL;
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6503 GtkWidget *image = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6504 PurpleAccount *account = NULL;
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13049
diff changeset
6505 GdkPixbuf *pixbuf = NULL;
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6506
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6507 account = accounts->data;
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6508
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6509 if(!purple_account_get_enabled(account, PIDGIN_UI)) {
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6510
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6511 disabled_accounts = TRUE;
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6512
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6513 buf = g_strconcat(purple_account_get_username(account), " (",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6514 purple_account_get_protocol_name(account), ")", NULL);
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6515 menuitem = gtk_image_menu_item_new_with_label(buf);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6516 g_free(buf);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6517 pixbuf = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_SMALL);
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13049
diff changeset
6518 if (pixbuf != NULL)
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13049
diff changeset
6519 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6520 if (!purple_account_is_connected(account))
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13049
diff changeset
6521 gdk_pixbuf_saturate_and_pixelate(pixbuf, pixbuf, 0.0, FALSE);
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13049
diff changeset
6522 image = gtk_image_new_from_pixbuf(pixbuf);
12330
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6523 g_object_unref(G_OBJECT(pixbuf));
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6524 gtk_widget_show(image);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6525 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6526 }
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6527 g_signal_connect(G_OBJECT(menuitem), "activate",
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6528 G_CALLBACK(enable_account_cb), account);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6529 gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6530 gtk_widget_show(menuitem);
ad4b7fa046c5 [gaim-migrate @ 14634]
Nathan Walp <nwalp@pidgin.im>
parents: 12328
diff changeset
6531 }
9019
b9a333b36763 [gaim-migrate @ 9795]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
6532 }
7620
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6533 }
18cf42f8955c [gaim-migrate @ 8244]
Sean Egan <seanegan@pidgin.im>
parents: 5516
diff changeset
6534 }
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
6535
12333
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6536 static GList *plugin_submenus = NULL;
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6537
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
6538 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6539 pidgin_blist_update_plugin_actions(void)
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
6540 {
12333
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6541 GtkWidget *menuitem, *submenu;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6542 PurplePlugin *plugin = NULL;
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
6543 GList *l;
12464
bfe63ab6ebcf [gaim-migrate @ 14774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12461
diff changeset
6544 GtkAccelGroup *accel_group;
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
6545
11742
ddba58b25836 [gaim-migrate @ 14033]
Sean Egan <seanegan@pidgin.im>
parents: 11740
diff changeset
6546 GtkWidget *pluginmenu = gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools"));
ddba58b25836 [gaim-migrate @ 14033]
Sean Egan <seanegan@pidgin.im>
parents: 11740
diff changeset
6547
12333
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6548 g_return_if_fail(pluginmenu != NULL);
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6549
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6550 /* Remove old plugin action submenus from the Tools menu */
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6551 for (l = plugin_submenus; l; l = l->next)
15057
909e807e3070 [gaim-migrate @ 17774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15051
diff changeset
6552 gtk_widget_destroy(GTK_WIDGET(l->data));
12333
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6553 g_list_free(plugin_submenus);
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6554 plugin_submenus = NULL;
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6555
12464
bfe63ab6ebcf [gaim-migrate @ 14774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12461
diff changeset
6556 accel_group = gtk_menu_get_accel_group(GTK_MENU(pluginmenu));
bfe63ab6ebcf [gaim-migrate @ 14774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12461
diff changeset
6557
12333
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6558 /* Add a submenu for each plugin with custom actions */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6559 for (l = purple_plugins_get_loaded(); l; l = l->next) {
12464
bfe63ab6ebcf [gaim-migrate @ 14774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12461
diff changeset
6560 char *path;
11923
a492ccce1a12 [gaim-migrate @ 14214]
Mark Doliner <markdoliner@pidgin.im>
parents: 11920
diff changeset
6561
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6562 plugin = (PurplePlugin *) l->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6563
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6564 if (PURPLE_IS_PROTOCOL_PLUGIN(plugin))
11742
ddba58b25836 [gaim-migrate @ 14033]
Sean Egan <seanegan@pidgin.im>
parents: 11740
diff changeset
6565 continue;
ddba58b25836 [gaim-migrate @ 14033]
Sean Egan <seanegan@pidgin.im>
parents: 11740
diff changeset
6566
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
6567 if (!PURPLE_PLUGIN_HAS_ACTIONS(plugin))
11742
ddba58b25836 [gaim-migrate @ 14033]
Sean Egan <seanegan@pidgin.im>
parents: 11740
diff changeset
6568 continue;
9019
b9a333b36763 [gaim-migrate @ 9795]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
6569
13337
1a425a37dcf7 [gaim-migrate @ 15706]
Richard Laager <rlaager@pidgin.im>
parents: 13316
diff changeset
6570 menuitem = gtk_image_menu_item_new_with_label(_(plugin->info->name));
12333
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6571 gtk_menu_shell_append(GTK_MENU_SHELL(pluginmenu), menuitem);
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6572 gtk_widget_show(menuitem);
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6573
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6574 plugin_submenus = g_list_append(plugin_submenus, menuitem);
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6575
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6576 submenu = gtk_menu_new();
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6577 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6578 gtk_widget_show(submenu);
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
6579
12464
bfe63ab6ebcf [gaim-migrate @ 14774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12461
diff changeset
6580 gtk_menu_set_accel_group(GTK_MENU(submenu), accel_group);
bfe63ab6ebcf [gaim-migrate @ 14774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12461
diff changeset
6581 path = g_strdup_printf("%s/Tools/%s", gtkblist->ift->path, plugin->info->name);
bfe63ab6ebcf [gaim-migrate @ 14774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12461
diff changeset
6582 gtk_menu_set_accel_path(GTK_MENU(submenu), path);
bfe63ab6ebcf [gaim-migrate @ 14774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12461
diff changeset
6583 g_free(path);
12333
8e39e95c81b6 [gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents: 12330
diff changeset
6584
16040
d213ae510895 sf patch #1689182, from Will Thompson
Mark Doliner <markdoliner@pidgin.im>
parents: 15982
diff changeset
6585 build_plugin_actions(submenu, plugin, NULL);
8986
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
6586 }
30ba617356bb [gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents: 8975
diff changeset
6587 }
11796
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6588
12246
7af1ef3b1cc4 [gaim-migrate @ 14548]
Mark Doliner <markdoliner@pidgin.im>
parents: 12240
diff changeset
6589 static void
7af1ef3b1cc4 [gaim-migrate @ 14548]
Mark Doliner <markdoliner@pidgin.im>
parents: 12240
diff changeset
6590 sortmethod_act(GtkCheckMenuItem *checkmenuitem, char *id)
11796
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6591 {
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6592 if (gtk_check_menu_item_get_active(checkmenuitem))
11923
a492ccce1a12 [gaim-migrate @ 14214]
Mark Doliner <markdoliner@pidgin.im>
parents: 11920
diff changeset
6593 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6594 pidgin_set_cursor(gtkblist->window, GDK_WATCH);
14200
799dfae258cf [gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents: 14199
diff changeset
6595 /* This is redundant. I think. */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6596 /* pidgin_blist_sort_method_set(id); */
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
6597 purple_prefs_set_string(PIDGIN_PREFS_ROOT "/blist/sort_type", id);
12413
ce06aa90beee [gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents: 12368
diff changeset
6598
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6599 pidgin_clear_cursor(gtkblist->window);
11923
a492ccce1a12 [gaim-migrate @ 14214]
Mark Doliner <markdoliner@pidgin.im>
parents: 11920
diff changeset
6600 }
11796
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6601 }
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6602
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6603 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6604 pidgin_blist_update_sort_methods(void)
11796
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6605 {
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6606 GtkWidget *menuitem = NULL, *activeitem = NULL;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6607 PidginBlistSortMethod *method = NULL;
11796
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6608 GList *l;
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6609 GSList *sl = NULL;
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6610 GtkWidget *sortmenu;
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
6611 const char *m = purple_prefs_get_string(PIDGIN_PREFS_ROOT "/blist/sort_type");
11796
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6612
15286
ecc4149f47fb [gaim-migrate @ 18014]
Mark Doliner <markdoliner@pidgin.im>
parents: 15284
diff changeset
6613 if ((gtkblist == NULL) || (gtkblist->ift == NULL))
11796
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6614 return;
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6615
11798
481b46227443 [gaim-migrate @ 14089]
Etan Reisner <deryni@pidgin.im>
parents: 11797
diff changeset
6616 sortmenu = gtk_item_factory_get_widget(gtkblist->ift, N_("/Buddies/Sort Buddies"));
11796
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6617
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6618 if (sortmenu == NULL)
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6619 return;
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6620
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6621 /* Clear the old menu */
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6622 for (l = gtk_container_get_children(GTK_CONTAINER(sortmenu)); l; l = l->next) {
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6623 menuitem = l->data;
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6624 gtk_widget_destroy(GTK_WIDGET(menuitem));
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6625 }
11923
a492ccce1a12 [gaim-migrate @ 14214]
Mark Doliner <markdoliner@pidgin.im>
parents: 11920
diff changeset
6626
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6627 for (l = pidgin_blist_sort_methods; l; l = l->next) {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15561
diff changeset
6628 method = (PidginBlistSortMethod *) l->data;
11796
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6629 menuitem = gtk_radio_menu_item_new_with_label(sl, _(method->name));
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6630 if (!strcmp(m, method->id))
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6631 activeitem = menuitem;
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6632 sl = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem));
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6633 gtk_menu_shell_append(GTK_MENU_SHELL(sortmenu), menuitem);
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6634 g_signal_connect(G_OBJECT(menuitem), "toggled",
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6635 G_CALLBACK(sortmethod_act), method->id);
11923
a492ccce1a12 [gaim-migrate @ 14214]
Mark Doliner <markdoliner@pidgin.im>
parents: 11920
diff changeset
6636 gtk_widget_show(menuitem);
11796
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6637 }
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6638 if (activeitem)
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6639 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(activeitem), TRUE);
bc7e0950806e [gaim-migrate @ 14087]
Sean Egan <seanegan@pidgin.im>
parents: 11768
diff changeset
6640 }

mercurial