Fri, 15 Jun 2007 02:01:30 +0000
disapproval of revision 'e582f0260df20a57244730dc433866e754975417'
| 5228 | 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 | 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 | 8 | * to list here. Please refer to the COPYRIGHT file distributed with this |
| 9 | * source distribution. | |
| 5228 | 10 | * |
| 11 | * This program is free software; you can redistribute it and/or modify | |
| 12 | * it under the terms of the GNU General Public License as published by | |
| 13 | * the Free Software Foundation; either version 2 of the License, or | |
| 14 | * (at your option) any later version. | |
| 15 | * | |
| 16 | * This program is distributed in the hope that it will be useful, | |
| 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 19 | * GNU General Public License for more details. | |
| 20 | * | |
| 21 | * You should have received a copy of the GNU General Public License | |
| 22 | * along with this program; if not, write to the Free Software | |
| 23 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 24 | * | |
| 25 | */ | |
| 9791 | 26 | #include "internal.h" |
| 15577 | 27 | #include "pidgin.h" |
| 7620 | 28 | |
| 29 | #include "account.h" | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
9013
diff
changeset
|
30 | #include "connection.h" |
| 7620 | 31 | #include "core.h" |
| 32 | #include "debug.h" | |
| 33 | #include "notify.h" | |
| 34 | #include "prpl.h" | |
| 35 | #include "prefs.h" | |
|
8986
30ba617356bb
[gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents:
8975
diff
changeset
|
36 | #include "plugin.h" |
| 7620 | 37 | #include "request.h" |
| 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 | 40 | #include "util.h" |
| 41 | ||
| 42 | #include "gtkaccount.h" | |
| 43 | #include "gtkblist.h" | |
| 14623 | 44 | #include "gtkcellrendererexpander.h" |
| 7620 | 45 | #include "gtkconv.h" |
| 46 | #include "gtkdebug.h" | |
|
9709
2e73f176cc80
[gaim-migrate @ 10570]
Mark Doliner <markdoliner@pidgin.im>
parents:
9686
diff
changeset
|
47 | #include "gtkdialogs.h" |
| 7620 | 48 | #include "gtkft.h" |
| 49 | #include "gtklog.h" | |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12115
diff
changeset
|
50 | #include "gtkmenutray.h" |
| 7620 | 51 | #include "gtkpounce.h" |
| 11740 | 52 | #include "gtkplugin.h" |
| 7620 | 53 | #include "gtkprefs.h" |
| 54 | #include "gtkprivacy.h" | |
| 8113 | 55 | #include "gtkroomlist.h" |
| 10643 | 56 | #include "gtkstatusbox.h" |
| 15094 | 57 | #include "gtkscrollbook.h" |
| 7620 | 58 | #include "gtkutils.h" |
| 59 | ||
| 5228 | 60 | #include <gdk/gdkkeysyms.h> |
| 61 | #include <gtk/gtk.h> | |
| 7620 | 62 | #include <gdk/gdk.h> |
| 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 | 66 | typedef struct |
| 67 | { | |
| 15884 | 68 | PurpleAccount *account; |
| 7620 | 69 | |
| 70 | GtkWidget *window; | |
| 71 | GtkWidget *combo; | |
| 72 | GtkWidget *entry; | |
| 73 | GtkWidget *entry_for_alias; | |
| 74 | GtkWidget *account_box; | |
| 75 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
76 | } PidginAddBuddyData; |
| 7620 | 77 | |
| 78 | typedef struct | |
| 79 | { | |
| 15884 | 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 | 84 | GtkWidget *account_menu; |
| 85 | GtkWidget *alias_entry; | |
| 86 | GtkWidget *group_combo; | |
| 87 | GtkWidget *entries_box; | |
| 88 | GtkSizeGroup *sg; | |
| 89 | ||
| 90 | GList *entries; | |
| 91 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
92 | } PidginAddChatData; |
| 7620 | 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 | 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 | 106 | |
| 12296 | 107 | static GtkWidget *accountmenu = NULL; |
| 5228 | 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 | 114 | static void sort_method_none(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter); |
| 7620 | 115 | |
| 116 | /* The functions we use for sorting aren't available in gtk 2.0.x, and | |
| 117 | * segfault in 2.2.0. 2.2.1 is known to work, so I'll require that */ | |
| 118 | #if GTK_CHECK_VERSION(2,2,1) | |
| 15884 | 119 | static void sort_method_alphabetical(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter); |
| 120 | static void sort_method_status(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter); | |
| 121 | static void sort_method_log(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter); | |
| 7620 | 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 | 125 | static gboolean pidgin_blist_refresh_timer(PurpleBuddyList *list); |
| 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 | 128 | static void pidgin_blist_update(PurpleBuddyList *list, PurpleBlistNode *node); |
| 129 | static void pidgin_blist_update_group(PurpleBuddyList *list, PurpleBlistNode *node); | |
| 130 | static void pidgin_blist_update_contact(PurpleBuddyList *list, PurpleBlistNode *node); | |
| 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 | 133 | static gboolean get_iter_from_node(PurpleBlistNode *node, GtkTreeIter *iter); |
| 134 | static void redo_buddy_list(PurpleBuddyList *list, gboolean remove, gboolean rerender); | |
| 135 | static void pidgin_blist_collapse_contact_cb(GtkWidget *w, PurpleBlistNode *node); | |
| 136 | static char *pidgin_get_group_title(PurpleBlistNode *gnode, gboolean expanded); | |
| 7620 | 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 | 141 | GtkTreeRowReference *row; |
| 7620 | 142 | gboolean contact_expanded; |
| 11910 | 143 | gboolean recent_signonoff; |
| 144 | gint recent_signonoff_timer; | |
| 5256 | 145 | }; |
| 146 | ||
| 10118 | 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 | 149 | { |
| 150 | if (!gtkblist) | |
| 151 | return "dim grey"; | |
| 152 | if (!dim_grey_string[0]) { | |
| 153 | GtkStyle *style = gtk_widget_get_style(gtkblist->treeview); | |
| 154 | snprintf(dim_grey_string, sizeof(dim_grey_string), "#%02x%02x%02x", | |
| 155 | style->text_aa[GTK_STATE_NORMAL].red >> 8, | |
| 156 | style->text_aa[GTK_STATE_NORMAL].green >> 8, | |
| 157 | style->text_aa[GTK_STATE_NORMAL].blue >> 8); | |
| 158 | } | |
| 159 | return dim_grey_string; | |
| 160 | } | |
|
10144
22c7584a403d
[gaim-migrate @ 11216]
Mark Doliner <markdoliner@pidgin.im>
parents:
10129
diff
changeset
|
161 | |
| 5228 | 162 | /*************************************************** |
| 163 | * Callbacks * | |
| 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 | 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 | 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 | 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 | 204 | |
| 205 | static gboolean gtk_blist_delete_cb(GtkWidget *w, GdkEventAny *event, gpointer data) | |
| 206 | { | |
|
12016
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
207 | if(visibility_manager_count) |
| 15884 | 208 | purple_blist_set_visible(FALSE); |
|
12016
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
209 | else |
| 15884 | 210 | purple_core_quit(); |
| 5228 | 211 | |
| 212 | /* we handle everything, event should not propogate further */ | |
| 213 | return TRUE; | |
| 214 | } | |
| 215 | ||
| 216 | static gboolean gtk_blist_configure_cb(GtkWidget *w, GdkEventConfigure *event, gpointer data) | |
| 217 | { | |
| 218 | /* unfortunately GdkEventConfigure ignores the window gravity, but * | |
| 219 | * the only way we have of setting the position doesn't. we have to * | |
| 7620 | 220 | * call get_position because it does pay attention to the gravity. * |
| 221 | * this is inefficient and I agree it sucks, but it's more likely * | |
| 222 | * to work correctly. - Robot101 */ | |
| 5228 | 223 | gint x, y; |
| 224 | ||
| 225 | /* check for visibility because when we aren't visible, this will * | |
| 226 | * give us bogus (0,0) coordinates. - xOr */ | |
| 7620 | 227 | if (GTK_WIDGET_VISIBLE(w)) |
| 5228 | 228 | gtk_window_get_position(GTK_WINDOW(w), &x, &y); |
| 7620 | 229 | else |
| 230 | return FALSE; /* carry on normally */ | |
| 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 | 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 | 246 | |
| 247 | return FALSE; /* carry on normally */ | |
| 5228 | 248 | } |
| 249 | ||
| 7620 | 250 | /* don't save off-screen positioning */ |
| 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 | 255 | |
| 256 | return FALSE; /* carry on normally */ | |
| 257 | } | |
| 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 | 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 | 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 | 271 | /* continue to handle event normally */ |
| 272 | return FALSE; | |
| 273 | } | |
| 274 | ||
| 15884 | 275 | static void gtk_blist_menu_info_cb(GtkWidget *w, PurpleBuddy *b) |
| 5228 | 276 | { |
|
17027
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16950
diff
changeset
|
277 | PurpleNotifyUserInfo *info = purple_notify_user_info_new(); |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16950
diff
changeset
|
278 | purple_notify_user_info_add_pair(info, _("Information"), _("Retrieving...")); |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16950
diff
changeset
|
279 | purple_notify_userinfo(b->account->gc, purple_buddy_get_name(b), info, NULL, NULL); |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16950
diff
changeset
|
280 | purple_notify_user_info_destroy(info); |
|
cad1dc392f1a
Fix ticket #387.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16950
diff
changeset
|
281 | |
| 5228 | 282 | serv_get_info(b->account->gc, b->name); |
| 283 | } | |
| 284 | ||
| 15884 | 285 | static void gtk_blist_menu_im_cb(GtkWidget *w, PurpleBuddy *b) |
| 5228 | 286 | { |
|
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
|
287 | pidgin_dialogs_im_with_user(b->account, b->name); |
| 5228 | 288 | } |
| 289 | ||
| 15884 | 290 | 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
|
291 | { |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
292 | serv_send_file(b->account->gc, b->name, NULL); |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
293 | } |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
294 | |
| 15884 | 295 | static void gtk_blist_menu_autojoin_cb(GtkWidget *w, PurpleChat *chat) |
| 296 | { | |
| 297 | purple_blist_node_set_bool((PurpleBlistNode*)chat, "gtk-autojoin", | |
| 7693 | 298 | gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w))); |
| 7620 | 299 | } |
| 300 | ||
| 15884 | 301 | static void gtk_blist_join_chat(PurpleChat *chat) |
| 302 | { | |
| 303 | PurpleConversation *conv; | |
| 304 | ||
| 305 | conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, | |
| 306 | purple_chat_get_name(chat), | |
|
12576
df739b5606f6
[gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents:
12569
diff
changeset
|
307 | chat->account); |
|
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 | if (conv != NULL) |
| 15884 | 310 | purple_conversation_present(conv); |
|
12592
5e1ce1a49ddb
[gaim-migrate @ 14922]
Richard Laager <rlaager@pidgin.im>
parents:
12589
diff
changeset
|
311 | |
|
5e1ce1a49ddb
[gaim-migrate @ 14922]
Richard Laager <rlaager@pidgin.im>
parents:
12589
diff
changeset
|
312 | serv_join_chat(chat->account->gc, chat->components); |
|
12576
df739b5606f6
[gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents:
12569
diff
changeset
|
313 | } |
|
df739b5606f6
[gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents:
12569
diff
changeset
|
314 | |
| 15884 | 315 | static void gtk_blist_menu_join_cb(GtkWidget *w, PurpleChat *chat) |
| 5228 | 316 | { |
|
12576
df739b5606f6
[gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents:
12569
diff
changeset
|
317 | gtk_blist_join_chat(chat); |
| 5234 | 318 | } |
| 319 | ||
|
16357
c23b4d440efd
Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents:
16284
diff
changeset
|
320 | 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
|
321 | 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
|
322 | 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
|
323 | 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
|
324 | { |
|
c23b4d440efd
Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents:
16284
diff
changeset
|
325 | 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
|
326 | 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
|
327 | 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
|
328 | 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
|
329 | 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
|
330 | |
|
c23b4d440efd
Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents:
16284
diff
changeset
|
331 | 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
|
332 | 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
|
333 | 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
|
334 | 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
|
335 | 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
|
336 | 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
|
337 | |
|
c23b4d440efd
Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents:
16284
diff
changeset
|
338 | 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
|
339 | 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
|
340 | 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
|
341 | break; |
|
c23b4d440efd
Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents:
16284
diff
changeset
|
342 | 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
|
343 | 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
|
344 | break; |
|
c23b4d440efd
Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents:
16284
diff
changeset
|
345 | 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
|
346 | 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
|
347 | break; |
|
c23b4d440efd
Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents:
16284
diff
changeset
|
348 | default: |
|
c23b4d440efd
Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents:
16284
diff
changeset
|
349 | 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
|
350 | } |
|
c23b4d440efd
Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents:
16284
diff
changeset
|
351 | |
|
c23b4d440efd
Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents:
16284
diff
changeset
|
352 | 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
|
353 | GtkEntry *entry = GTK_ENTRY (editable); |
|
17143
fbc8a7bdb006
Patch #702, Info not reset on URL redirect
Sean Egan <seanegan@pidgin.im>
parents:
17141
diff
changeset
|
354 | gtk_entry_set_text(entry, text); |
|
fbc8a7bdb006
Patch #702, Info not reset on URL redirect
Sean Egan <seanegan@pidgin.im>
parents:
17141
diff
changeset
|
355 | } |
|
16357
c23b4d440efd
Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents:
16284
diff
changeset
|
356 | } |
|
c23b4d440efd
Patch #205, from SuperMMX. Fix a bug related to using F2 to alias
Mark Doliner <markdoliner@pidgin.im>
parents:
16284
diff
changeset
|
357 | |
| 11016 | 358 | static void gtk_blist_renderer_edited_cb(GtkCellRendererText *text_rend, char *arg1, |
| 359 | char *arg2, gpointer nada) | |
| 360 | { | |
| 361 | GtkTreeIter iter; | |
| 362 | GtkTreePath *path; | |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
363 | GValue val; |
| 15884 | 364 | PurpleBlistNode *node; |
| 365 | PurpleGroup *dest; | |
| 11016 | 366 | |
| 367 | path = gtk_tree_path_new_from_string (arg1); | |
| 368 | gtk_tree_model_get_iter (GTK_TREE_MODEL(gtkblist->treemodel), &iter, path); | |
| 369 | gtk_tree_path_free (path); | |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
370 | val.g_type = 0; |
| 11016 | 371 | gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val); |
| 372 | node = g_value_get_pointer(&val); | |
| 373 | gtk_tree_view_set_enable_search (GTK_TREE_VIEW(gtkblist->treeview), TRUE); | |
| 374 | 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
|
375 | |
|
42a0e8cecea3
[gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents:
12302
diff
changeset
|
376 | switch (node->type) |
|
42a0e8cecea3
[gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents:
12302
diff
changeset
|
377 | { |
| 15884 | 378 | case PURPLE_BLIST_CONTACT_NODE: |
|
12319
42a0e8cecea3
[gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents:
12302
diff
changeset
|
379 | { |
| 15884 | 380 | PurpleContact *contact = (PurpleContact *)node; |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
381 | 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
|
382 | |
|
42a0e8cecea3
[gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents:
12302
diff
changeset
|
383 | if (contact->alias || gtknode->contact_expanded) |
| 15884 | 384 | purple_blist_alias_contact(contact, arg2); |
|
12319
42a0e8cecea3
[gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents:
12302
diff
changeset
|
385 | else |
|
12478
e752c74ff854
[gaim-migrate @ 14789]
Aleksander Piotrowski <alek@nic.com.pl>
parents:
12474
diff
changeset
|
386 | { |
| 15884 | 387 | PurpleBuddy *buddy = purple_contact_get_priority_buddy(contact); |
| 388 | purple_blist_alias_buddy(buddy, arg2); | |
|
12478
e752c74ff854
[gaim-migrate @ 14789]
Aleksander Piotrowski <alek@nic.com.pl>
parents:
12474
diff
changeset
|
389 | serv_alias_buddy(buddy); |
|
e752c74ff854
[gaim-migrate @ 14789]
Aleksander Piotrowski <alek@nic.com.pl>
parents:
12474
diff
changeset
|
390 | } |
|
12319
42a0e8cecea3
[gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents:
12302
diff
changeset
|
391 | } |
|
42a0e8cecea3
[gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents:
12302
diff
changeset
|
392 | break; |
|
42a0e8cecea3
[gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents:
12302
diff
changeset
|
393 | |
| 15884 | 394 | case PURPLE_BLIST_BUDDY_NODE: |
| 395 | purple_blist_alias_buddy((PurpleBuddy*)node, arg2); | |
| 396 | serv_alias_buddy((PurpleBuddy *)node); | |
|
12319
42a0e8cecea3
[gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents:
12302
diff
changeset
|
397 | break; |
| 15884 | 398 | case PURPLE_BLIST_GROUP_NODE: |
| 399 | dest = purple_find_group(arg2); | |
| 400 | 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
|
401 | pidgin_dialogs_merge_groups((PurpleGroup*) node, arg2); |
|
14526
272b75278ff1
[gaim-migrate @ 17178]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
14518
diff
changeset
|
402 | } else |
| 15884 | 403 | purple_blist_rename_group((PurpleGroup*)node, arg2); |
|
12319
42a0e8cecea3
[gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents:
12302
diff
changeset
|
404 | break; |
| 15884 | 405 | case PURPLE_BLIST_CHAT_NODE: |
| 406 | purple_blist_alias_chat((PurpleChat*)node, arg2); | |
|
12319
42a0e8cecea3
[gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents:
12302
diff
changeset
|
407 | break; |
|
42a0e8cecea3
[gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents:
12302
diff
changeset
|
408 | default: |
|
42a0e8cecea3
[gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents:
12302
diff
changeset
|
409 | break; |
| 11016 | 410 | } |
| 411 | } | |
| 412 | ||
| 15884 | 413 | static void gtk_blist_menu_alias_cb(GtkWidget *w, PurpleBlistNode *node) |
| 5234 | 414 | { |
| 11016 | 415 | GtkTreeIter iter; |
| 416 | GtkTreePath *path; | |
|
11494
60bfb30f6cba
[gaim-migrate @ 13738]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11490
diff
changeset
|
417 | |
|
11258
6863ab327ec2
[gaim-migrate @ 13433]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11257
diff
changeset
|
418 | if (!(get_iter_from_node(node, &iter))) { |
| 11016 | 419 | /* This is either a bug, or the buddy is in a collapsed contact */ |
| 420 | node = node->parent; | |
| 421 | if (!get_iter_from_node(node, &iter)) | |
| 422 | /* Now it's definitely a bug */ | |
| 423 | return; | |
| 424 | } | |
|
11258
6863ab327ec2
[gaim-migrate @ 13433]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11257
diff
changeset
|
425 | |
| 11016 | 426 | path = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &iter); |
| 427 | g_object_set(G_OBJECT(gtkblist->text_rend), "editable", TRUE, NULL); | |
| 428 | gtk_tree_view_set_enable_search (GTK_TREE_VIEW(gtkblist->treeview), FALSE); | |
| 429 | gtk_widget_grab_focus(gtkblist->treeview); | |
|
14723
5e5b5c192df3
[gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14722
diff
changeset
|
430 | #if GTK_CHECK_VERSION(2,2,0) |
|
5e5b5c192df3
[gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14722
diff
changeset
|
431 | 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
|
432 | gtkblist->text_column, gtkblist->text_rend, TRUE); |
|
5e5b5c192df3
[gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14722
diff
changeset
|
433 | #else |
| 11016 | 434 | 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
|
435 | #endif |
| 11016 | 436 | gtk_tree_path_free(path); |
| 5228 | 437 | } |
| 438 | ||
| 15884 | 439 | static void gtk_blist_menu_bp_cb(GtkWidget *w, PurpleBuddy *b) |
| 5228 | 440 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
441 | pidgin_pounce_editor_show(b->account, b->name, NULL); |
| 5228 | 442 | } |
| 443 | ||
| 15884 | 444 | static void gtk_blist_menu_showlog_cb(GtkWidget *w, PurpleBlistNode *node) |
| 445 | { | |
| 446 | PurpleLogType type; | |
| 447 | PurpleAccount *account; | |
|
9917
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9869
diff
changeset
|
448 | char *name = NULL; |
| 10663 | 449 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
450 | pidgin_set_cursor(gtkblist->window, GDK_WATCH); |
|
12232
857f087ec86b
[gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents:
12226
diff
changeset
|
451 | |
| 15884 | 452 | if (PURPLE_BLIST_NODE_IS_BUDDY(node)) { |
| 453 | PurpleBuddy *b = (PurpleBuddy*) node; | |
| 454 | type = PURPLE_LOG_IM; | |
|
9917
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9869
diff
changeset
|
455 | name = g_strdup(b->name); |
|
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9869
diff
changeset
|
456 | account = b->account; |
| 15884 | 457 | } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) { |
| 458 | PurpleChat *c = (PurpleChat*) node; | |
| 459 | PurplePluginProtocolInfo *prpl_info = NULL; | |
| 460 | type = PURPLE_LOG_CHAT; | |
|
9917
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9869
diff
changeset
|
461 | account = c->account; |
| 15884 | 462 | 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
|
463 | if (prpl_info && prpl_info->get_chat_name) { |
|
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9869
diff
changeset
|
464 | name = prpl_info->get_chat_name(c->components); |
|
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9869
diff
changeset
|
465 | } |
| 15884 | 466 | } else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) { |
| 467 | pidgin_log_show_contact((PurpleContact *)node); | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
468 | pidgin_clear_cursor(gtkblist->window); |
| 10663 | 469 | return; |
|
12232
857f087ec86b
[gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents:
12226
diff
changeset
|
470 | } else { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
471 | pidgin_clear_cursor(gtkblist->window); |
|
12232
857f087ec86b
[gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents:
12226
diff
changeset
|
472 | |
|
857f087ec86b
[gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents:
12226
diff
changeset
|
473 | /* This callback should not have been registered for a node |
|
857f087ec86b
[gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents:
12226
diff
changeset
|
474 | * 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
|
475 | g_return_if_reached(); |
|
857f087ec86b
[gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents:
12226
diff
changeset
|
476 | } |
|
9917
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9869
diff
changeset
|
477 | |
|
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9869
diff
changeset
|
478 | if (name && account) { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
479 | pidgin_log_show(type, name, account); |
|
9917
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9869
diff
changeset
|
480 | g_free(name); |
|
12232
857f087ec86b
[gaim-migrate @ 14534]
Richard Laager <rlaager@pidgin.im>
parents:
12226
diff
changeset
|
481 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
482 | pidgin_clear_cursor(gtkblist->window); |
|
9917
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9869
diff
changeset
|
483 | } |
| 7620 | 484 | } |
| 485 | ||
| 5228 | 486 | static void gtk_blist_show_systemlog_cb() |
| 487 | { | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
488 | pidgin_syslog_show(); |
| 5228 | 489 | } |
| 490 | ||
|
17419
2a7045fc50bf
disapproval of revision 'e582f0260df20a57244730dc433866e754975417'
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
17417
diff
changeset
|
491 | static void gtk_blist_show_onlinehelp_cb() |
|
2a7045fc50bf
disapproval of revision 'e582f0260df20a57244730dc433866e754975417'
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
17417
diff
changeset
|
492 | { |
|
2a7045fc50bf
disapproval of revision 'e582f0260df20a57244730dc433866e754975417'
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
17417
diff
changeset
|
493 | purple_notify_uri(NULL, PURPLE_WEBSITE "documentation.php"); |
|
2a7045fc50bf
disapproval of revision 'e582f0260df20a57244730dc433866e754975417'
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
17417
diff
changeset
|
494 | } |
|
2a7045fc50bf
disapproval of revision 'e582f0260df20a57244730dc433866e754975417'
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
17417
diff
changeset
|
495 | |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
496 | static void |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
497 | do_join_chat(PidginJoinChatData *data) |
|
8303
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 | if (data) |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
500 | { |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
501 | GHashTable *components = |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
502 | 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
|
503 | GList *tmp; |
| 15884 | 504 | PurpleChat *chat; |
|
8303
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 | for (tmp = data->entries; tmp != NULL; tmp = tmp->next) |
|
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 | if (g_object_get_data(tmp->data, "is_spin")) |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
509 | { |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
510 | g_hash_table_replace(components, |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
511 | g_strdup(g_object_get_data(tmp->data, "identifier")), |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
512 | g_strdup_printf("%d", |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
513 | gtk_spin_button_get_value_as_int(tmp->data))); |
|
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 | else |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
516 | { |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
517 | g_hash_table_replace(components, |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
518 | g_strdup(g_object_get_data(tmp->data, "identifier")), |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
519 | g_strdup(gtk_entry_get_text(tmp->data))); |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
520 | } |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
521 | } |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
522 | |
| 15884 | 523 | chat = purple_chat_new(data->account, NULL, components); |
|
12576
df739b5606f6
[gaim-migrate @ 14898]
Richard Laager <rlaager@pidgin.im>
parents:
12569
diff
changeset
|
524 | gtk_blist_join_chat(chat); |
| 15884 | 525 | purple_blist_remove_chat(chat); |
|
8303
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 | } |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
528 | |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
529 | static void |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
530 | do_joinchat(GtkWidget *dialog, int id, PidginJoinChatData *info) |
|
8940
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 | switch(id) |
|
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
533 | { |
|
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
534 | case GTK_RESPONSE_OK: |
|
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
535 | do_join_chat(info); |
|
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 | break; |
|
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
538 | } |
|
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
539 | |
|
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
540 | gtk_widget_destroy(GTK_WIDGET(dialog)); |
|
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
541 | g_list_free(info->entries); |
|
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
542 | g_free(info); |
|
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
543 | } |
|
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
544 | |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
545 | /* |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
546 | * 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
|
547 | * 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
|
548 | */ |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
549 | static void |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
550 | joinchat_set_sensitive_if_input_cb(GtkWidget *entry, gpointer user_data) |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
551 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
552 | PidginJoinChatData *data; |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
553 | GList *tmp; |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
554 | const char *text; |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
555 | gboolean required; |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
556 | gboolean sensitive = TRUE; |
|
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 | data = user_data; |
|
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 | for (tmp = data->entries; tmp != NULL; tmp = tmp->next) |
|
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 | if (!g_object_get_data(tmp->data, "is_spin")) |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
563 | { |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
564 | required = GPOINTER_TO_INT(g_object_get_data(tmp->data, "required")); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
565 | text = gtk_entry_get_text(tmp->data); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
566 | if (required && (*text == '\0')) |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
567 | sensitive = FALSE; |
|
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 | } |
|
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 | 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
|
572 | } |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
573 | |
|
8940
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
574 | static void |
| 15884 | 575 | pidgin_blist_update_privacy_cb(PurpleBuddy *buddy) |
| 576 | { | |
| 577 | 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
|
578 | } |
|
799dfae258cf
[gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
14199
diff
changeset
|
579 | |
|
799dfae258cf
[gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
14199
diff
changeset
|
580 | static void |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
581 | rebuild_joinchat_entries(PidginJoinChatData *data) |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
582 | { |
| 15884 | 583 | PurpleConnection *gc; |
|
15051
1d0c9b4b68e6
[gaim-migrate @ 17768]
Daniel Atallah <datallah@pidgin.im>
parents:
15050
diff
changeset
|
584 | GList *list = NULL, *tmp; |
|
9770
d61fe8dcb6d9
[gaim-migrate @ 10638]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9754
diff
changeset
|
585 | GHashTable *defaults = NULL; |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
586 | struct proto_chat_entry *pce; |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
587 | gboolean focus = TRUE; |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
588 | |
|
10127
3ea502c95653
[gaim-migrate @ 11165]
Daniel Atallah <datallah@pidgin.im>
parents:
10118
diff
changeset
|
589 | g_return_if_fail(data->account != NULL); |
|
3ea502c95653
[gaim-migrate @ 11165]
Daniel Atallah <datallah@pidgin.im>
parents:
10118
diff
changeset
|
590 | |
| 15884 | 591 | gc = purple_account_get_connection(data->account); |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
592 | |
|
15051
1d0c9b4b68e6
[gaim-migrate @ 17768]
Daniel Atallah <datallah@pidgin.im>
parents:
15050
diff
changeset
|
593 | while ((tmp = gtk_container_get_children(GTK_CONTAINER(data->entries_box)))) |
|
1d0c9b4b68e6
[gaim-migrate @ 17768]
Daniel Atallah <datallah@pidgin.im>
parents:
15050
diff
changeset
|
594 | gtk_widget_destroy(tmp->data); |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
595 | |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
596 | g_list_free(data->entries); |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
597 | data->entries = NULL; |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
598 | |
| 15884 | 599 | if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info != NULL) |
| 600 | list = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info(gc); | |
| 601 | ||
| 602 | if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults != NULL) | |
| 603 | 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
|
604 | |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
605 | for (tmp = list; tmp; tmp = tmp->next) |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
606 | { |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
607 | GtkWidget *label; |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
608 | GtkWidget *rowbox; |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
609 | GtkWidget *input; |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
610 | |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
611 | pce = tmp->data; |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
612 | |
| 15882 | 613 | rowbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER); |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
614 | 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
|
615 | |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
616 | label = gtk_label_new_with_mnemonic(pce->label); |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
617 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
618 | gtk_size_group_add_widget(data->sg, label); |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
619 | gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0); |
|
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 | if (pce->is_int) |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
622 | { |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
623 | GtkObject *adjust; |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
624 | adjust = gtk_adjustment_new(pce->min, pce->min, pce->max, |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
625 | 1, 10, 10); |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
626 | input = gtk_spin_button_new(GTK_ADJUSTMENT(adjust), 1, 0); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
627 | gtk_widget_set_size_request(input, 50, -1); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
628 | 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
|
629 | } |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
630 | else |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
631 | { |
|
9770
d61fe8dcb6d9
[gaim-migrate @ 10638]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9754
diff
changeset
|
632 | char *value; |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
633 | input = gtk_entry_new(); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
634 | gtk_entry_set_activates_default(GTK_ENTRY(input), TRUE); |
|
9770
d61fe8dcb6d9
[gaim-migrate @ 10638]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9754
diff
changeset
|
635 | value = g_hash_table_lookup(defaults, pce->identifier); |
|
d61fe8dcb6d9
[gaim-migrate @ 10638]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9754
diff
changeset
|
636 | if (value != NULL) |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
637 | gtk_entry_set_text(GTK_ENTRY(input), value); |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
638 | if (pce->secret) |
|
11986
21d2ab6421a7
[gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents:
11983
diff
changeset
|
639 | { |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
640 | gtk_entry_set_visibility(GTK_ENTRY(input), FALSE); |
|
15390
d429e03fc755
[gaim-migrate @ 18119]
Mark Doliner <markdoliner@pidgin.im>
parents:
15386
diff
changeset
|
641 | if (gtk_entry_get_invisible_char(GTK_ENTRY(input)) == '*') |
| 15882 | 642 | 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
|
643 | } |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
644 | gtk_box_pack_end(GTK_BOX(rowbox), input, TRUE, TRUE, 0); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
645 | g_signal_connect(G_OBJECT(input), "changed", |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
646 | G_CALLBACK(joinchat_set_sensitive_if_input_cb), data); |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
647 | } |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
648 | |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
649 | /* Do the following for any type of input widget */ |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
650 | if (focus) |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
651 | { |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
652 | gtk_widget_grab_focus(input); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
653 | focus = FALSE; |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
654 | } |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
655 | gtk_label_set_mnemonic_widget(GTK_LABEL(label), input); |
| 15568 | 656 | pidgin_set_accessible_label(input, label); |
|
13107
704041197f4d
[gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents:
13091
diff
changeset
|
657 | 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
|
658 | 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
|
659 | 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
|
660 | data->entries = g_list_append(data->entries, input); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
661 | |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
662 | g_free(pce); |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
663 | } |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
664 | |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
665 | g_list_free(list); |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
666 | g_hash_table_destroy(defaults); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
667 | |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
668 | /* Set whether the "OK" button should be clickable initially */ |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
669 | joinchat_set_sensitive_if_input_cb(NULL, data); |
|
8303
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 | gtk_widget_show_all(data->entries_box); |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
672 | } |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
673 | |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
674 | static void |
| 15884 | 675 | 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
|
676 | PidginJoinChatData *data) |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
677 | { |
| 13560 | 678 | data->account = account; |
| 679 | rebuild_joinchat_entries(data); | |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
680 | } |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
681 | |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
682 | static gboolean |
| 15884 | 683 | chat_account_filter_func(PurpleAccount *account) |
| 684 | { | |
| 685 | PurpleConnection *gc = purple_account_get_connection(account); | |
| 686 | PurplePluginProtocolInfo *prpl_info = NULL; | |
| 687 | ||
| 688 | prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
|
8940
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
689 | |
|
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
690 | return (prpl_info->chat_info != NULL); |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
691 | } |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
692 | |
|
8940
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
693 | gboolean |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
694 | pidgin_blist_joinchat_is_showable() |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
695 | { |
|
8940
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
696 | GList *c; |
| 15884 | 697 | PurpleConnection *gc; |
| 698 | ||
| 699 | 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
|
700 | gc = c->data; |
|
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
701 | |
| 15884 | 702 | if (chat_account_filter_func(purple_connection_get_account(gc))) |
|
8940
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
703 | return TRUE; |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
704 | } |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
705 | |
|
8940
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
706 | return FALSE; |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
707 | } |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
708 | |
|
8305
5a6d1168a8b3
[gaim-migrate @ 9029]
Christian Hammond <chipx86@chipx86.com>
parents:
8303
diff
changeset
|
709 | void |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
710 | pidgin_blist_joinchat_show(void) |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
711 | { |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
712 | GtkWidget *hbox, *vbox; |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
713 | GtkWidget *rowbox; |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
714 | GtkWidget *label; |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
715 | PidginBuddyList *gtkblist; |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
716 | GtkWidget *img = NULL; |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
717 | PidginJoinChatData *data = NULL; |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
718 | |
| 15884 | 719 | gtkblist = PIDGIN_BLIST(purple_get_blist()); |
| 15497 | 720 | img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION, |
| 721 | 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
|
722 | data = g_new0(PidginJoinChatData, 1); |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
723 | |
| 8975 | 724 | data->window = gtk_dialog_new_with_buttons(_("Join a Chat"), |
| 725 | NULL, GTK_DIALOG_NO_SEPARATOR, | |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
726 | GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, |
| 15570 | 727 | PIDGIN_STOCK_CHAT, GTK_RESPONSE_OK, NULL); |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
728 | gtk_dialog_set_default_response(GTK_DIALOG(data->window), GTK_RESPONSE_OK); |
| 15882 | 729 | 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
|
730 | gtk_window_set_resizable(GTK_WINDOW(data->window), FALSE); |
| 15882 | 731 | 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
|
732 | gtk_container_set_border_width( |
| 15882 | 733 | GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), PIDGIN_HIG_BOX_SPACE); |
| 8975 | 734 | gtk_window_set_role(GTK_WINDOW(data->window), "join_chat"); |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
735 | |
| 15882 | 736 | hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER); |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
737 | gtk_container_add(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), hbox); |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
738 | gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
739 | gtk_misc_set_alignment(GTK_MISC(img), 0, 0); |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
740 | |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
741 | vbox = gtk_vbox_new(FALSE, 5); |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
742 | gtk_container_set_border_width(GTK_CONTAINER(vbox), 0); |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
743 | gtk_container_add(GTK_CONTAINER(hbox), vbox); |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
744 | |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
745 | label = gtk_label_new(_("Please enter the appropriate information " |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
746 | "about the chat you would like to join.\n")); |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
747 | gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
748 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0); |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
749 | gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
750 | |
| 15882 | 751 | rowbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER); |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
752 | gtk_box_pack_start(GTK_BOX(vbox), rowbox, TRUE, TRUE, 0); |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
753 | |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
754 | data->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
755 | |
|
8940
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
756 | label = gtk_label_new_with_mnemonic(_("_Account:")); |
|
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
757 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
|
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
758 | gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0); |
|
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
759 | gtk_size_group_add_widget(data->sg, label); |
|
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
760 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
761 | data->account_menu = pidgin_account_option_menu_new(NULL, FALSE, |
|
8940
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
762 | G_CALLBACK(joinchat_select_account_cb), |
|
9987
2396bd099335
[gaim-migrate @ 10900]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9959
diff
changeset
|
763 | chat_account_filter_func, data); |
|
8940
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
764 | 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
|
765 | gtk_label_set_mnemonic_widget(GTK_LABEL(label), |
|
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
766 | GTK_WIDGET(data->account_menu)); |
| 15568 | 767 | pidgin_set_accessible_label (data->account_menu, label); |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
768 | |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
769 | data->entries_box = gtk_vbox_new(FALSE, 5); |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
770 | gtk_container_add(GTK_CONTAINER(vbox), data->entries_box); |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
771 | gtk_container_set_border_width(GTK_CONTAINER(data->entries_box), 0); |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
772 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
773 | 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
|
774 | |
|
8303
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
775 | rebuild_joinchat_entries(data); |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
776 | |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
777 | g_signal_connect(G_OBJECT(data->window), "response", |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
778 | G_CALLBACK(do_joinchat), data); |
|
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 | g_object_unref(data->sg); |
|
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 | gtk_widget_show_all(data->window); |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
783 | } |
|
bbe7d3420549
[gaim-migrate @ 9027]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
784 | |
|
17180
280b99127139
Patch from SuperMMX to correctly update the expand state of contacts
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17143
diff
changeset
|
785 | static void gtk_blist_row_expanded_cb(GtkTreeView *tv, GtkTreeIter *iter, GtkTreePath *path, gpointer user_data) |
|
280b99127139
Patch from SuperMMX to correctly update the expand state of contacts
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17143
diff
changeset
|
786 | { |
| 15884 | 787 | PurpleBlistNode *node; |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
788 | GValue val; |
|
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
789 | |
|
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
790 | val.g_type = 0; |
| 5228 | 791 | gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), iter, NODE_COLUMN, &val); |
| 792 | ||
| 793 | node = g_value_get_pointer(&val); | |
| 794 | ||
| 15884 | 795 | if (PURPLE_BLIST_NODE_IS_GROUP(node)) { |
|
15385
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
796 | char *title; |
|
15409
37b46bbce4cb
[gaim-migrate @ 18140]
Daniel Atallah <datallah@pidgin.im>
parents:
15403
diff
changeset
|
797 | |
| 15882 | 798 | title = pidgin_get_group_title(node, TRUE); |
|
15409
37b46bbce4cb
[gaim-migrate @ 18140]
Daniel Atallah <datallah@pidgin.im>
parents:
15403
diff
changeset
|
799 | |
|
15385
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
800 | gtk_tree_store_set(gtkblist->treemodel, iter, |
|
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
801 | NAME_COLUMN, title, |
|
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
802 | -1); |
|
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
803 | |
|
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
804 | g_free(title); |
|
15409
37b46bbce4cb
[gaim-migrate @ 18140]
Daniel Atallah <datallah@pidgin.im>
parents:
15403
diff
changeset
|
805 | |
| 15884 | 806 | purple_blist_node_set_bool(node, "collapsed", FALSE); |
| 5228 | 807 | } |
| 808 | } | |
| 809 | ||
|
17180
280b99127139
Patch from SuperMMX to correctly update the expand state of contacts
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17143
diff
changeset
|
810 | static void gtk_blist_row_collapsed_cb(GtkTreeView *tv, GtkTreeIter *iter, GtkTreePath *path, gpointer user_data) |
|
280b99127139
Patch from SuperMMX to correctly update the expand state of contacts
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17143
diff
changeset
|
811 | { |
| 15884 | 812 | PurpleBlistNode *node; |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
813 | GValue val; |
|
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
814 | |
|
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
815 | val.g_type = 0; |
| 5228 | 816 | gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), iter, NODE_COLUMN, &val); |
| 817 | ||
| 818 | node = g_value_get_pointer(&val); | |
| 819 | ||
| 15884 | 820 | if (PURPLE_BLIST_NODE_IS_GROUP(node)) { |
|
15385
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
821 | char *title; |
|
17180
280b99127139
Patch from SuperMMX to correctly update the expand state of contacts
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17143
diff
changeset
|
822 | struct _pidgin_blist_node *gtknode; |
|
280b99127139
Patch from SuperMMX to correctly update the expand state of contacts
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17143
diff
changeset
|
823 | PurpleBlistNode *cnode; |
|
15409
37b46bbce4cb
[gaim-migrate @ 18140]
Daniel Atallah <datallah@pidgin.im>
parents:
15403
diff
changeset
|
824 | |
| 15882 | 825 | title = pidgin_get_group_title(node, FALSE); |
|
15409
37b46bbce4cb
[gaim-migrate @ 18140]
Daniel Atallah <datallah@pidgin.im>
parents:
15403
diff
changeset
|
826 | |
|
15385
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
827 | gtk_tree_store_set(gtkblist->treemodel, iter, |
|
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
828 | NAME_COLUMN, title, |
|
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
829 | -1); |
|
15409
37b46bbce4cb
[gaim-migrate @ 18140]
Daniel Atallah <datallah@pidgin.im>
parents:
15403
diff
changeset
|
830 | |
|
15385
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
831 | g_free(title); |
|
15409
37b46bbce4cb
[gaim-migrate @ 18140]
Daniel Atallah <datallah@pidgin.im>
parents:
15403
diff
changeset
|
832 | |
| 15884 | 833 | purple_blist_node_set_bool(node, "collapsed", TRUE); |
|
17180
280b99127139
Patch from SuperMMX to correctly update the expand state of contacts
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17143
diff
changeset
|
834 | |
|
280b99127139
Patch from SuperMMX to correctly update the expand state of contacts
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17143
diff
changeset
|
835 | for(cnode = node->child; cnode; cnode = cnode->next) { |
|
280b99127139
Patch from SuperMMX to correctly update the expand state of contacts
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17143
diff
changeset
|
836 | if (PURPLE_BLIST_NODE_IS_CONTACT(cnode)) { |
|
280b99127139
Patch from SuperMMX to correctly update the expand state of contacts
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17143
diff
changeset
|
837 | gtknode = cnode->ui_data; |
|
280b99127139
Patch from SuperMMX to correctly update the expand state of contacts
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17143
diff
changeset
|
838 | if (!gtknode->contact_expanded) |
|
280b99127139
Patch from SuperMMX to correctly update the expand state of contacts
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17143
diff
changeset
|
839 | continue; |
|
280b99127139
Patch from SuperMMX to correctly update the expand state of contacts
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17143
diff
changeset
|
840 | gtknode->contact_expanded = FALSE; |
|
280b99127139
Patch from SuperMMX to correctly update the expand state of contacts
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17143
diff
changeset
|
841 | pidgin_blist_update_contact(NULL, cnode); |
|
280b99127139
Patch from SuperMMX to correctly update the expand state of contacts
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17143
diff
changeset
|
842 | } |
|
280b99127139
Patch from SuperMMX to correctly update the expand state of contacts
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17143
diff
changeset
|
843 | } |
|
280b99127139
Patch from SuperMMX to correctly update the expand state of contacts
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17143
diff
changeset
|
844 | |
| 15884 | 845 | } 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
|
846 | pidgin_blist_collapse_contact_cb(NULL, node); |
| 5228 | 847 | } |
| 848 | } | |
| 849 | ||
| 850 | static void gtk_blist_row_activated_cb(GtkTreeView *tv, GtkTreePath *path, GtkTreeViewColumn *col, gpointer data) { | |
| 15884 | 851 | PurpleBlistNode *node; |
| 5228 | 852 | GtkTreeIter iter; |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
853 | GValue val; |
| 5228 | 854 | |
| 855 | gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, path); | |
| 856 | ||
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
857 | val.g_type = 0; |
| 5228 | 858 | gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val); |
| 859 | node = g_value_get_pointer(&val); | |
| 860 | ||
| 15884 | 861 | if(PURPLE_BLIST_NODE_IS_CONTACT(node) || PURPLE_BLIST_NODE_IS_BUDDY(node)) { |
| 862 | PurpleBuddy *buddy; | |
| 863 | ||
| 864 | if(PURPLE_BLIST_NODE_IS_CONTACT(node)) | |
| 865 | buddy = purple_contact_get_priority_buddy((PurpleContact*)node); | |
| 7620 | 866 | else |
| 15884 | 867 | buddy = (PurpleBuddy*)node; |
| 7620 | 868 | |
|
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
|
869 | pidgin_dialogs_im_with_user(buddy->account, buddy->name); |
| 15884 | 870 | } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) { |
| 871 | gtk_blist_join_chat((PurpleChat *)node); | |
| 872 | } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) { | |
| 14623 | 873 | /* if (gtk_tree_view_row_expanded(tv, path)) |
| 5228 | 874 | gtk_tree_view_collapse_row(tv, path); |
| 875 | else | |
| 14623 | 876 | gtk_tree_view_expand_row(tv,path,FALSE);*/ |
| 5228 | 877 | } |
| 878 | } | |
| 879 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
880 | static void pidgin_blist_add_chat_cb() |
| 5234 | 881 | { |
| 882 | GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkblist->treeview)); | |
| 883 | GtkTreeIter iter; | |
| 15884 | 884 | PurpleBlistNode *node; |
| 5234 | 885 | |
| 886 | if(gtk_tree_selection_get_selected(sel, NULL, &iter)){ | |
| 887 | gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &node, -1); | |
| 15884 | 888 | if (PURPLE_BLIST_NODE_IS_BUDDY(node)) |
| 889 | purple_blist_request_add_chat(NULL, (PurpleGroup*)node->parent->parent, NULL, NULL); | |
| 890 | if (PURPLE_BLIST_NODE_IS_CONTACT(node) || PURPLE_BLIST_NODE_IS_CHAT(node)) | |
| 891 | purple_blist_request_add_chat(NULL, (PurpleGroup*)node->parent, NULL, NULL); | |
| 892 | else if (PURPLE_BLIST_NODE_IS_GROUP(node)) | |
| 893 | purple_blist_request_add_chat(NULL, (PurpleGroup*)node, NULL, NULL); | |
| 5234 | 894 | } |
| 895 | else { | |
| 15884 | 896 | purple_blist_request_add_chat(NULL, NULL, NULL, NULL); |
| 5234 | 897 | } |
| 898 | } | |
| 899 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
900 | static void pidgin_blist_add_buddy_cb() |
| 5228 | 901 | { |
| 902 | GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkblist->treeview)); | |
| 903 | GtkTreeIter iter; | |
| 15884 | 904 | PurpleBlistNode *node; |
| 5228 | 905 | |
| 906 | if(gtk_tree_selection_get_selected(sel, NULL, &iter)){ | |
| 907 | gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &node, -1); | |
| 15884 | 908 | if (PURPLE_BLIST_NODE_IS_BUDDY(node)) { |
| 909 | purple_blist_request_add_buddy(NULL, NULL, ((PurpleGroup*)node->parent->parent)->name, | |
| 7620 | 910 | NULL); |
| 15884 | 911 | } else if (PURPLE_BLIST_NODE_IS_CONTACT(node) |
| 912 | || PURPLE_BLIST_NODE_IS_CHAT(node)) { | |
| 913 | purple_blist_request_add_buddy(NULL, NULL, ((PurpleGroup*)node->parent)->name, NULL); | |
| 914 | } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) { | |
| 915 | purple_blist_request_add_buddy(NULL, NULL, ((PurpleGroup*)node)->name, NULL); | |
| 7620 | 916 | } |
| 5228 | 917 | } |
| 918 | else { | |
| 15884 | 919 | purple_blist_request_add_buddy(NULL, NULL, NULL, NULL); |
| 7620 | 920 | } |
| 921 | } | |
| 922 | ||
| 923 | static void | |
| 15884 | 924 | pidgin_blist_remove_cb (GtkWidget *w, PurpleBlistNode *node) |
| 925 | { | |
| 926 | 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
|
927 | pidgin_dialogs_remove_buddy((PurpleBuddy*)node); |
| 15884 | 928 | } 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
|
929 | pidgin_dialogs_remove_chat((PurpleChat*)node); |
| 15884 | 930 | } 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
|
931 | pidgin_dialogs_remove_group((PurpleGroup*)node); |
| 15884 | 932 | } 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
|
933 | pidgin_dialogs_remove_contact((PurpleContact*)node); |
| 5228 | 934 | } |
| 935 | } | |
| 936 | ||
| 14230 | 937 | struct _expand { |
| 938 | GtkTreeView *treeview; | |
| 939 | GtkTreePath *path; | |
| 15884 | 940 | PurpleBlistNode *node; |
| 14230 | 941 | }; |
| 942 | ||
|
14239
661d2bb9eb86
[gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents:
14230
diff
changeset
|
943 | static gboolean |
|
661d2bb9eb86
[gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents:
14230
diff
changeset
|
944 | scroll_to_expanded_cell(gpointer data) |
| 14230 | 945 | { |
|
14239
661d2bb9eb86
[gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents:
14230
diff
changeset
|
946 | struct _expand *ex = data; |
| 14230 | 947 | 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
|
948 | pidgin_blist_update_contact(NULL, ex->node); |
| 14230 | 949 | |
| 950 | gtk_tree_path_free(ex->path); | |
| 951 | g_free(ex); | |
|
14239
661d2bb9eb86
[gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents:
14230
diff
changeset
|
952 | |
| 14230 | 953 | return FALSE; |
| 954 | } | |
| 955 | ||
| 5228 | 956 | static void |
| 15884 | 957 | 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
|
958 | { |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
959 | struct _pidgin_blist_node *gtknode; |
| 9632 | 960 | GtkTreeIter iter, parent; |
| 15884 | 961 | PurpleBlistNode *bnode; |
|
10325
9bb530214bae
[gaim-migrate @ 11532]
Mark Doliner <markdoliner@pidgin.im>
parents:
10320
diff
changeset
|
962 | GtkTreePath *path; |
| 7620 | 963 | |
| 15884 | 964 | if(!PURPLE_BLIST_NODE_IS_CONTACT(node)) |
| 7620 | 965 | return; |
| 966 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
967 | gtknode = (struct _pidgin_blist_node *)node->ui_data; |
| 7620 | 968 | |
| 969 | gtknode->contact_expanded = TRUE; | |
| 970 | ||
| 971 | 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
|
972 | pidgin_blist_update(NULL, bnode); |
| 7620 | 973 | } |
|
10353
830e54bb7fa0
[gaim-migrate @ 11570]
Mark Doliner <markdoliner@pidgin.im>
parents:
10352
diff
changeset
|
974 | |
| 9632 | 975 | /* 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
|
976 | if (get_iter_from_node(node, &parent)) { |
|
03b0e1705115
[gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
14723
diff
changeset
|
977 | struct _expand *ex = g_new0(struct _expand, 1); |
|
03b0e1705115
[gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
14723
diff
changeset
|
978 | |
|
03b0e1705115
[gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
14723
diff
changeset
|
979 | 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
|
980 | 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
|
981 | 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
|
982 | |
|
03b0e1705115
[gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
14723
diff
changeset
|
983 | /* Let the treeview draw so it knows where to scroll */ |
|
03b0e1705115
[gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
14723
diff
changeset
|
984 | ex->treeview = GTK_TREE_VIEW(gtkblist->treeview); |
|
03b0e1705115
[gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
14723
diff
changeset
|
985 | ex->path = path; |
|
03b0e1705115
[gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
14723
diff
changeset
|
986 | ex->node = node->child; |
|
03b0e1705115
[gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
14723
diff
changeset
|
987 | g_idle_add(scroll_to_expanded_cell, ex); |
|
03b0e1705115
[gaim-migrate @ 17438]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
14723
diff
changeset
|
988 | } |
| 7620 | 989 | } |
| 990 | ||
| 991 | static void | |
| 15884 | 992 | pidgin_blist_collapse_contact_cb(GtkWidget *w, PurpleBlistNode *node) |
| 993 | { | |
| 994 | PurpleBlistNode *bnode; | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
995 | struct _pidgin_blist_node *gtknode; |
| 7620 | 996 | |
| 15884 | 997 | if(!PURPLE_BLIST_NODE_IS_CONTACT(node)) |
| 7620 | 998 | return; |
| 999 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1000 | gtknode = (struct _pidgin_blist_node *)node->ui_data; |
| 7620 | 1001 | |
| 1002 | gtknode->contact_expanded = FALSE; | |
| 1003 | ||
| 1004 | 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
|
1005 | pidgin_blist_update(NULL, bnode); |
| 5228 | 1006 | } |
| 1007 | } | |
| 1008 | ||
|
15380
1171796358b3
[gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15307
diff
changeset
|
1009 | static void |
| 15884 | 1010 | toggle_privacy(GtkWidget *widget, PurpleBlistNode *node) |
| 1011 | { | |
| 1012 | PurpleBuddy *buddy; | |
| 1013 | PurpleAccount *account; | |
|
15380
1171796358b3
[gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15307
diff
changeset
|
1014 | gboolean permitted; |
|
1171796358b3
[gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15307
diff
changeset
|
1015 | const char *name; |
|
1171796358b3
[gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15307
diff
changeset
|
1016 | |
| 15884 | 1017 | if (!PURPLE_BLIST_NODE_IS_BUDDY(node)) |
|
15380
1171796358b3
[gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15307
diff
changeset
|
1018 | return; |
|
1171796358b3
[gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15307
diff
changeset
|
1019 | |
| 15884 | 1020 | buddy = (PurpleBuddy *)node; |
| 1021 | account = purple_buddy_get_account(buddy); | |
| 1022 | name = purple_buddy_get_name(buddy); | |
| 1023 | ||
| 1024 | permitted = purple_privacy_check(account, name); | |
|
15380
1171796358b3
[gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15307
diff
changeset
|
1025 | |
|
1171796358b3
[gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15307
diff
changeset
|
1026 | /* 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
|
1027 | |
|
1171796358b3
[gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15307
diff
changeset
|
1028 | if (permitted) |
| 15884 | 1029 | purple_privacy_deny(account, name, FALSE, FALSE); |
|
15380
1171796358b3
[gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15307
diff
changeset
|
1030 | else |
| 15884 | 1031 | purple_privacy_allow(account, name, FALSE, FALSE); |
| 1032 | ||
| 1033 | pidgin_blist_update(purple_get_blist(), node); | |
| 1034 | } | |
| 1035 | ||
| 1036 | void pidgin_append_blist_node_privacy_menu(GtkWidget *menu, PurpleBlistNode *node) | |
| 1037 | { | |
| 1038 | PurpleBuddy *buddy = (PurpleBuddy *)node; | |
| 1039 | PurpleAccount *account; | |
|
15380
1171796358b3
[gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15307
diff
changeset
|
1040 | gboolean permitted; |
|
1171796358b3
[gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15307
diff
changeset
|
1041 | |
| 15884 | 1042 | account = purple_buddy_get_account(buddy); |
| 1043 | 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
|
1044 | |
| 15568 | 1045 | 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
|
1046 | 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
|
1047 | node, 0 ,0, NULL); |
|
1171796358b3
[gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15307
diff
changeset
|
1048 | } |
|
1171796358b3
[gaim-migrate @ 18109]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15307
diff
changeset
|
1049 | |
| 9051 | 1050 | void |
| 15884 | 1051 | pidgin_append_blist_node_proto_menu(GtkWidget *menu, PurpleConnection *gc, |
| 1052 | PurpleBlistNode *node) | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9019
diff
changeset
|
1053 | { |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9019
diff
changeset
|
1054 | GList *l, *ll; |
| 15884 | 1055 | PurplePluginProtocolInfo *prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9019
diff
changeset
|
1056 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9019
diff
changeset
|
1057 | if(!prpl_info || !prpl_info->blist_node_menu) |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9019
diff
changeset
|
1058 | return; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9019
diff
changeset
|
1059 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9019
diff
changeset
|
1060 | for(l = ll = prpl_info->blist_node_menu(node); l; l = l->next) { |
| 15884 | 1061 | PurpleMenuAction *act = (PurpleMenuAction *) l->data; |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1062 | pidgin_append_menu_action(menu, act, node); |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9019
diff
changeset
|
1063 | } |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9019
diff
changeset
|
1064 | g_list_free(ll); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9019
diff
changeset
|
1065 | } |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9019
diff
changeset
|
1066 | |
| 9051 | 1067 | void |
| 15884 | 1068 | pidgin_append_blist_node_extended_menu(GtkWidget *menu, PurpleBlistNode *node) |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9019
diff
changeset
|
1069 | { |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9019
diff
changeset
|
1070 | GList *l, *ll; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9019
diff
changeset
|
1071 | |
| 15884 | 1072 | for(l = ll = purple_blist_node_get_extended_menu(node); l; l = l->next) { |
| 1073 | PurpleMenuAction *act = (PurpleMenuAction *) l->data; | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1074 | pidgin_append_menu_action(menu, act, node); |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9019
diff
changeset
|
1075 | } |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9019
diff
changeset
|
1076 | g_list_free(ll); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9019
diff
changeset
|
1077 | } |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9019
diff
changeset
|
1078 | |
| 9774 | 1079 | void |
| 15884 | 1080 | pidgin_blist_make_buddy_menu(GtkWidget *menu, PurpleBuddy *buddy, gboolean sub) { |
| 1081 | PurplePluginProtocolInfo *prpl_info; | |
| 1082 | PurpleContact *contact; | |
| 10663 | 1083 | gboolean contact_expanded = FALSE; |
| 9774 | 1084 | |
| 1085 | g_return_if_fail(menu); | |
| 1086 | g_return_if_fail(buddy); | |
| 1087 | ||
| 15884 | 1088 | prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(buddy->account->gc->prpl); |
| 1089 | ||
| 1090 | contact = purple_buddy_get_contact(buddy); | |
| 10663 | 1091 | if (contact) { |
| 15884 | 1092 | contact_expanded = ((struct _pidgin_blist_node *)(((PurpleBlistNode*)contact)->ui_data))->contact_expanded; |
| 10663 | 1093 | } |
| 1094 | ||
| 7620 | 1095 | 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
|
1096 | pidgin_new_item_from_stock(menu, _("Get _Info"), PIDGIN_STOCK_TOOLBAR_USER_INFO, |
| 9774 | 1097 | G_CALLBACK(gtk_blist_menu_info_cb), buddy, 0, 0, NULL); |
| 7620 | 1098 | } |
|
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, _("I_M"), PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW, |
| 9774 | 1100 | 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
|
1101 | if (prpl_info && prpl_info->send_file) { |
| 9774 | 1102 | if (!prpl_info->can_receive_file || |
| 1103 | prpl_info->can_receive_file(buddy->account->gc, buddy->name)) | |
| 1104 | { | |
| 15568 | 1105 | pidgin_new_item_from_stock(menu, _("_Send File"), |
| 16881 | 1106 | PIDGIN_STOCK_TOOLBAR_SEND_FILE, |
| 9774 | 1107 | G_CALLBACK(gtk_blist_menu_send_file_cb), |
| 1108 | buddy, 0, 0, NULL); | |
|
9466
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
1109 | } |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
1110 | } |
| 12024 | 1111 | |
| 15622 | 1112 | pidgin_new_item_from_stock(menu, _("Add Buddy _Pounce"), NULL, |
| 9774 | 1113 | G_CALLBACK(gtk_blist_menu_bp_cb), buddy, 0, 0, NULL); |
| 10663 | 1114 | |
| 15884 | 1115 | 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
|
1116 | pidgin_new_item_from_stock(menu, _("View _Log"), NULL, |
| 10663 | 1117 | G_CALLBACK(gtk_blist_menu_showlog_cb), |
| 1118 | contact, 0, 0, NULL); | |
| 1119 | } else if (!sub) { | |
| 15622 | 1120 | pidgin_new_item_from_stock(menu, _("View _Log"), NULL, |
| 10663 | 1121 | G_CALLBACK(gtk_blist_menu_showlog_cb), buddy, 0, 0, NULL); |
| 1122 | } | |
| 9774 | 1123 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1124 | |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1125 | pidgin_append_blist_node_proto_menu(menu, buddy->account->gc, |
| 15884 | 1126 | (PurpleBlistNode *)buddy); |
| 1127 | pidgin_append_blist_node_extended_menu(menu, (PurpleBlistNode *)buddy); | |
| 1128 | ||
| 1129 | if (((PurpleBlistNode*)buddy)->parent->child->next && !sub && !contact_expanded) { | |
| 15568 | 1130 | pidgin_separator(menu); |
| 15884 | 1131 | pidgin_append_blist_node_privacy_menu(menu, (PurpleBlistNode *)buddy); |
| 15570 | 1132 | pidgin_new_item_from_stock(menu, _("Alias..."), PIDGIN_STOCK_ALIAS, |
| 9925 | 1133 | G_CALLBACK(gtk_blist_menu_alias_cb), |
| 10663 | 1134 | contact, 0, 0, NULL); |
| 15568 | 1135 | 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
|
1136 | G_CALLBACK(pidgin_blist_remove_cb), |
| 10663 | 1137 | contact, 0, 0, NULL); |
|
12319
42a0e8cecea3
[gaim-migrate @ 14623]
Richard Laager <rlaager@pidgin.im>
parents:
12302
diff
changeset
|
1138 | } else if (!sub || contact_expanded) { |
| 15568 | 1139 | pidgin_separator(menu); |
| 15884 | 1140 | pidgin_append_blist_node_privacy_menu(menu, (PurpleBlistNode *)buddy); |
| 15570 | 1141 | pidgin_new_item_from_stock(menu, _("_Alias..."), PIDGIN_STOCK_ALIAS, |
| 9925 | 1142 | G_CALLBACK(gtk_blist_menu_alias_cb), buddy, 0, 0, NULL); |
| 15568 | 1143 | 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
|
1144 | G_CALLBACK(pidgin_blist_remove_cb), buddy, |
| 9925 | 1145 | 0, 0, NULL); |
| 1146 | } | |
| 7620 | 1147 | } |
| 1148 | ||
| 9774 | 1149 | static gboolean |
| 1150 | gtk_blist_key_press_cb(GtkWidget *tv, GdkEventKey *event, gpointer data) { | |
| 15884 | 1151 | PurpleBlistNode *node; |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
1152 | GValue val; |
| 7620 | 1153 | GtkTreeIter iter; |
| 1154 | GtkTreeSelection *sel; | |
| 1155 | ||
| 1156 | sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tv)); | |
| 1157 | if(!gtk_tree_selection_get_selected(sel, NULL, &iter)) | |
| 1158 | return FALSE; | |
| 1159 | ||
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
1160 | val.g_type = 0; |
| 7620 | 1161 | gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), &iter, |
| 1162 | NODE_COLUMN, &val); | |
| 1163 | node = g_value_get_pointer(&val); | |
| 1164 | ||
| 1165 | if(event->state & GDK_CONTROL_MASK && | |
| 1166 | (event->keyval == 'o' || event->keyval == 'O')) { | |
| 15884 | 1167 | PurpleBuddy *buddy; |
| 1168 | ||
| 1169 | if(PURPLE_BLIST_NODE_IS_CONTACT(node)) { | |
| 1170 | buddy = purple_contact_get_priority_buddy((PurpleContact*)node); | |
| 1171 | } else if(PURPLE_BLIST_NODE_IS_BUDDY(node)) { | |
| 1172 | buddy = (PurpleBuddy*)node; | |
| 7620 | 1173 | } else { |
| 1174 | return FALSE; | |
| 1175 | } | |
| 1176 | if(buddy) | |
| 1177 | 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
|
1178 | } 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
|
1179 | gtk_blist_menu_alias_cb(tv, node); |
| 7620 | 1180 | } |
| 1181 | ||
| 1182 | return FALSE; | |
| 1183 | } | |
| 1184 | ||
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1185 | static GtkWidget * |
| 15884 | 1186 | create_group_menu (PurpleBlistNode *node, PurpleGroup *g) |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1187 | { |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1188 | GtkWidget *menu; |
|
11988
7ed733ed806b
[gaim-migrate @ 14281]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11986
diff
changeset
|
1189 | GtkWidget *item; |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1190 | |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1191 | menu = gtk_menu_new(); |
|
16825
e81d38d1f0e6
if you're offline, and right-click on a group, you shouldn't be presented
Nathan Walp <nwalp@pidgin.im>
parents:
16805
diff
changeset
|
1192 | item = 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
|
1193 | G_CALLBACK(pidgin_blist_add_buddy_cb), node, 0, 0, NULL); |
|
16825
e81d38d1f0e6
if you're offline, and right-click on a group, you shouldn't be presented
Nathan Walp <nwalp@pidgin.im>
parents:
16805
diff
changeset
|
1194 | gtk_widget_set_sensitive(item, purple_connections_get_all() != NULL); |
| 15568 | 1195 | 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
|
1196 | 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
|
1197 | gtk_widget_set_sensitive(item, pidgin_blist_joinchat_is_showable()); |
| 15568 | 1198 | 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
|
1199 | G_CALLBACK(pidgin_blist_remove_cb), node, 0, 0, NULL); |
| 15568 | 1200 | pidgin_new_item_from_stock(menu, _("_Rename"), NULL, |
| 11016 | 1201 | G_CALLBACK(gtk_blist_menu_alias_cb), node, 0, 0, NULL); |
| 8952 | 1202 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1203 | pidgin_append_blist_node_extended_menu(menu, node); |
| 8952 | 1204 | |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1205 | return menu; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1206 | } |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1207 | |
|
8586
c8c7a19da549
[gaim-migrate @ 9336]
Pekka Riikonen <priikone@silcnet.org>
parents:
8573
diff
changeset
|
1208 | |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1209 | static GtkWidget * |
| 15884 | 1210 | create_chat_menu(PurpleBlistNode *node, PurpleChat *c) { |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1211 | GtkWidget *menu; |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9019
diff
changeset
|
1212 | gboolean autojoin; |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1213 | |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1214 | menu = gtk_menu_new(); |
| 15884 | 1215 | autojoin = (purple_blist_node_get_bool(node, "gtk-autojoin") || |
| 1216 | (purple_blist_node_get_string(node, "gtk-autojoin") != NULL)); | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9019
diff
changeset
|
1217 | |
| 15570 | 1218 | pidgin_new_item_from_stock(menu, _("_Join"), PIDGIN_STOCK_CHAT, |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9019
diff
changeset
|
1219 | G_CALLBACK(gtk_blist_menu_join_cb), node, 0, 0, NULL); |
| 15568 | 1220 | pidgin_new_check_item(menu, _("Auto-Join"), |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9019
diff
changeset
|
1221 | 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
|
1222 | pidgin_new_item_from_stock(menu, _("View _Log"), NULL, |
|
9917
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9869
diff
changeset
|
1223 | 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
|
1224 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1225 | 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
|
1226 | pidgin_append_blist_node_extended_menu(menu, node); |
|
8586
c8c7a19da549
[gaim-migrate @ 9336]
Pekka Riikonen <priikone@silcnet.org>
parents:
8573
diff
changeset
|
1227 | |
| 15568 | 1228 | pidgin_separator(menu); |
| 1229 | ||
| 15570 | 1230 | pidgin_new_item_from_stock(menu, _("_Alias..."), PIDGIN_STOCK_ALIAS, |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1231 | G_CALLBACK(gtk_blist_menu_alias_cb), node, 0, 0, NULL); |
| 15568 | 1232 | 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
|
1233 | G_CALLBACK(pidgin_blist_remove_cb), node, 0, 0, NULL); |
|
8586
c8c7a19da549
[gaim-migrate @ 9336]
Pekka Riikonen <priikone@silcnet.org>
parents:
8573
diff
changeset
|
1234 | |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1235 | return menu; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1236 | } |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1237 | |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1238 | static GtkWidget * |
| 15884 | 1239 | create_contact_menu (PurpleBlistNode *node) |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1240 | { |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1241 | GtkWidget *menu; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1242 | |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1243 | menu = gtk_menu_new(); |
| 10663 | 1244 | |
|
15623
bf485c598199
toolbar/menu icons. reduce the imhtmltoolbar spacing. more gaimstock pruning
Sean Egan <seanegan@pidgin.im>
parents:
15622
diff
changeset
|
1245 | pidgin_new_item_from_stock(menu, _("View _Log"), NULL, |
| 10663 | 1246 | G_CALLBACK(gtk_blist_menu_showlog_cb), |
| 1247 | node, 0, 0, NULL); | |
| 1248 | ||
| 15568 | 1249 | pidgin_separator(menu); |
| 1250 | ||
| 15570 | 1251 | pidgin_new_item_from_stock(menu, _("_Alias..."), PIDGIN_STOCK_ALIAS, |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1252 | G_CALLBACK(gtk_blist_menu_alias_cb), node, 0, 0, NULL); |
| 15568 | 1253 | 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
|
1254 | G_CALLBACK(pidgin_blist_remove_cb), node, 0, 0, NULL); |
| 10663 | 1255 | |
| 15568 | 1256 | pidgin_separator(menu); |
| 1257 | ||
| 1258 | 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
|
1259 | G_CALLBACK(pidgin_blist_collapse_contact_cb), |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1260 | node, 0, 0, NULL); |
| 9051 | 1261 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1262 | pidgin_append_blist_node_extended_menu(menu, node); |
| 9051 | 1263 | |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1264 | return menu; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1265 | } |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1266 | |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1267 | static GtkWidget * |
| 15884 | 1268 | create_buddy_menu(PurpleBlistNode *node, PurpleBuddy *b) { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1269 | 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
|
1270 | GtkWidget *menu; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1271 | 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
|
1272 | 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
|
1273 | |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1274 | menu = gtk_menu_new(); |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1275 | pidgin_blist_make_buddy_menu(menu, b, FALSE); |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1276 | |
| 15884 | 1277 | if(PURPLE_BLIST_NODE_IS_CONTACT(node)) { |
| 15568 | 1278 | pidgin_separator(menu); |
|
8470
100fc1feea95
[gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents:
8444
diff
changeset
|
1279 | |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1280 | if(gtknode->contact_expanded) { |
| 15568 | 1281 | pidgin_new_item_from_stock(menu, _("_Collapse"), |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1282 | GTK_STOCK_ZOOM_OUT, |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1283 | G_CALLBACK(pidgin_blist_collapse_contact_cb), |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1284 | node, 0, 0, NULL); |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1285 | } else { |
| 15568 | 1286 | pidgin_new_item_from_stock(menu, _("_Expand"), |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1287 | GTK_STOCK_ZOOM_IN, |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1288 | G_CALLBACK(pidgin_blist_expand_contact_cb), node, |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1289 | 0, 0, NULL); |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1290 | } |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1291 | if(node->child->next) { |
| 15884 | 1292 | PurpleBlistNode *bnode; |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1293 | |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1294 | for(bnode = node->child; bnode; bnode = bnode->next) { |
| 15884 | 1295 | PurpleBuddy *buddy = (PurpleBuddy*)bnode; |
|
9340
d9a87f3abbdf
[gaim-migrate @ 10148]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9337
diff
changeset
|
1296 | GdkPixbuf *buf; |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1297 | GtkWidget *submenu; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1298 | GtkWidget *image; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1299 | |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1300 | if(buddy == b) |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1301 | continue; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1302 | if(!buddy->account->gc) |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1303 | continue; |
| 15884 | 1304 | if(!show_offline && !PURPLE_BUDDY_IS_ONLINE(buddy)) |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1305 | continue; |
|
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 | 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
|
1308 | 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
|
1309 | image = gtk_image_new_from_pixbuf(buf); |
|
d9a87f3abbdf
[gaim-migrate @ 10148]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9337
diff
changeset
|
1310 | g_object_unref(G_OBJECT(buf)); |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1311 | 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
|
1312 | image); |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1313 | gtk_widget_show(image); |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1314 | gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1315 | gtk_widget_show(menuitem); |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1316 | |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1317 | submenu = gtk_menu_new(); |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1318 | gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1319 | gtk_widget_show(submenu); |
|
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 | pidgin_blist_make_buddy_menu(submenu, buddy, TRUE); |
|
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 | } |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1324 | } |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1325 | return menu; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1326 | } |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1327 | |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1328 | static gboolean |
| 15884 | 1329 | pidgin_blist_show_context_menu(PurpleBlistNode *node, |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1330 | GtkMenuPositionFunc func, |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1331 | GtkWidget *tv, |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1332 | guint button, |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1333 | guint32 time) |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1334 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1335 | struct _pidgin_blist_node *gtknode; |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1336 | GtkWidget *menu = NULL; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1337 | gboolean handled = FALSE; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1338 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1339 | gtknode = (struct _pidgin_blist_node *)node->ui_data; |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1340 | |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1341 | /* Create a menu based on the thing we right-clicked on */ |
| 15884 | 1342 | if (PURPLE_BLIST_NODE_IS_GROUP(node)) { |
| 1343 | PurpleGroup *g = (PurpleGroup *)node; | |
| 9774 | 1344 | |
| 8952 | 1345 | menu = create_group_menu(node, g); |
| 15884 | 1346 | } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) { |
| 1347 | PurpleChat *c = (PurpleChat *)node; | |
| 9774 | 1348 | |
| 1349 | menu = create_chat_menu(node, c); | |
| 15884 | 1350 | } 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
|
1351 | menu = create_contact_menu(node); |
| 15884 | 1352 | } else if (PURPLE_BLIST_NODE_IS_CONTACT(node) || PURPLE_BLIST_NODE_IS_BUDDY(node)) { |
| 1353 | PurpleBuddy *b; | |
| 1354 | ||
| 1355 | if (PURPLE_BLIST_NODE_IS_CONTACT(node)) | |
| 1356 | b = purple_contact_get_priority_buddy((PurpleContact*)node); | |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1357 | else |
| 15884 | 1358 | b = (PurpleBuddy *)node; |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1359 | |
| 9774 | 1360 | menu = create_buddy_menu(node, b); |
|
8143
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 | |
|
11059
52e4f595fd27
[gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents:
11038
diff
changeset
|
1363 | #ifdef _WIN32 |
|
52e4f595fd27
[gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents:
11038
diff
changeset
|
1364 | /* Unhook the tooltip-timeout since we don't want a tooltip |
|
52e4f595fd27
[gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents:
11038
diff
changeset
|
1365 | * 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
|
1366 | This is a workaround for GTK+ bug 107320. */ |
|
52e4f595fd27
[gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents:
11038
diff
changeset
|
1367 | if (gtkblist->timeout) { |
|
52e4f595fd27
[gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents:
11038
diff
changeset
|
1368 | g_source_remove(gtkblist->timeout); |
|
52e4f595fd27
[gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents:
11038
diff
changeset
|
1369 | gtkblist->timeout = 0; |
|
52e4f595fd27
[gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents:
11038
diff
changeset
|
1370 | } |
|
52e4f595fd27
[gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents:
11038
diff
changeset
|
1371 | #endif |
|
52e4f595fd27
[gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents:
11038
diff
changeset
|
1372 | |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1373 | /* Now display the menu */ |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1374 | if (menu != NULL) { |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1375 | gtk_widget_show_all(menu); |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1376 | 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
|
1377 | handled = TRUE; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1378 | } |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1379 | |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1380 | return handled; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1381 | } |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1382 | |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1383 | static gboolean gtk_blist_button_press_cb(GtkWidget *tv, GdkEventButton *event, gpointer user_data) |
| 5228 | 1384 | { |
| 1385 | GtkTreePath *path; | |
| 15884 | 1386 | PurpleBlistNode *node; |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
1387 | GValue val; |
| 5228 | 1388 | GtkTreeIter iter; |
| 1389 | GtkTreeSelection *sel; | |
| 15884 | 1390 | PurplePlugin *prpl = NULL; |
| 1391 | PurplePluginProtocolInfo *prpl_info = NULL; | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1392 | struct _pidgin_blist_node *gtknode; |
| 7620 | 1393 | gboolean handled = FALSE; |
| 5228 | 1394 | |
| 1395 | /* Here we figure out which node was clicked */ | |
| 1396 | if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), event->x, event->y, &path, NULL, NULL, NULL)) | |
| 1397 | return FALSE; | |
| 1398 | 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
|
1399 | val.g_type = 0; |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1400 | gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val); |
| 5228 | 1401 | node = g_value_get_pointer(&val); |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1402 | gtknode = (struct _pidgin_blist_node *)node->ui_data; |
| 7620 | 1403 | |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1404 | /* Right click draws a context menu */ |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1405 | 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
|
1406 | 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
|
1407 | |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1408 | /* CTRL+middle click expands or collapse a contact */ |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1409 | } else if ((event->button == 2) && (event->type == GDK_BUTTON_PRESS) && |
| 15884 | 1410 | (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
|
1411 | if (gtknode->contact_expanded) |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1412 | pidgin_blist_collapse_contact_cb(NULL, node); |
| 7620 | 1413 | else |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1414 | pidgin_blist_expand_contact_cb(NULL, node); |
| 7620 | 1415 | handled = TRUE; |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1416 | |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1417 | /* Double middle click gets info */ |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1418 | } else if ((event->button == 2) && (event->type == GDK_2BUTTON_PRESS) && |
| 15884 | 1419 | ((PURPLE_BLIST_NODE_IS_CONTACT(node)) || (PURPLE_BLIST_NODE_IS_BUDDY(node)))) { |
| 1420 | PurpleBuddy *b; | |
| 1421 | if(PURPLE_BLIST_NODE_IS_CONTACT(node)) | |
| 1422 | b = purple_contact_get_priority_buddy((PurpleContact*)node); | |
| 7620 | 1423 | else |
| 15884 | 1424 | b = (PurpleBuddy *)node; |
| 1425 | ||
| 1426 | prpl = purple_find_prpl(purple_account_get_protocol_id(b->account)); | |
| 5228 | 1427 | if (prpl != NULL) |
| 15884 | 1428 | prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); |
| 5228 | 1429 | |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1430 | if (prpl && prpl_info->get_info) |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1431 | serv_get_info(b->account->gc, b->name); |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1432 | handled = TRUE; |
| 5228 | 1433 | } |
| 1434 | ||
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1435 | #if (1) |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1436 | /* |
|
10814
7e17cb56b019
[gaim-migrate @ 12468]
Luke Schierer <lschiere@pidgin.im>
parents:
10780
diff
changeset
|
1437 | * 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
|
1438 | * FALSE here, as would be normal the event propoagates down and |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1439 | * somehow gets interpreted as the start of a drag event. |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1440 | * |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1441 | * 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
|
1442 | * was handled? --Mark |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1443 | */ |
| 7620 | 1444 | if(handled) { |
| 1445 | sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tv)); | |
| 1446 | gtk_tree_selection_select_path(sel, path); | |
| 1447 | gtk_tree_path_free(path); | |
| 1448 | return TRUE; | |
| 1449 | } | |
| 5228 | 1450 | #endif |
| 7753 | 1451 | gtk_tree_path_free(path); |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1452 | |
| 7620 | 1453 | return FALSE; |
| 5228 | 1454 | } |
| 1455 | ||
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1456 | static gboolean |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1457 | pidgin_blist_popup_menu_cb(GtkWidget *tv, void *user_data) |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1458 | { |
| 15884 | 1459 | PurpleBlistNode *node; |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
1460 | GValue val; |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1461 | GtkTreeIter iter; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1462 | GtkTreeSelection *sel; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1463 | gboolean handled = FALSE; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1464 | |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1465 | sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tv)); |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1466 | if (!gtk_tree_selection_get_selected(sel, NULL, &iter)) |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1467 | return FALSE; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1468 | |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
1469 | val.g_type = 0; |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1470 | gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1471 | &iter, NODE_COLUMN, &val); |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1472 | node = g_value_get_pointer(&val); |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1473 | |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1474 | /* Shift+F10 draws a context menu */ |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1475 | 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
|
1476 | |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1477 | return handled; |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1478 | } |
|
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8137
diff
changeset
|
1479 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1480 | 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
|
1481 | { |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1482 | pidgin_set_cursor(gtkblist->window, GDK_WATCH); |
|
12569
5ed47be3e4c3
[gaim-migrate @ 14888]
Richard Laager <rlaager@pidgin.im>
parents:
12530
diff
changeset
|
1483 | |
|
16123
8b98683319e7
Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16071
diff
changeset
|
1484 | purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons", |
| 11796 | 1485 | 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
|
1486 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1487 | pidgin_clear_cursor(gtkblist->window); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1488 | } |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1489 | |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1490 | 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
|
1491 | { |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1492 | pidgin_set_cursor(gtkblist->window, GDK_WATCH); |
|
12656
77de7b9c23bf
[gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents:
12649
diff
changeset
|
1493 | |
|
16123
8b98683319e7
Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16071
diff
changeset
|
1494 | 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
|
1495 | gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(item))); |
|
77de7b9c23bf
[gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents:
12649
diff
changeset
|
1496 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1497 | pidgin_clear_cursor(gtkblist->window); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1498 | } |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1499 | |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1500 | 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
|
1501 | { |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1502 | pidgin_set_cursor(gtkblist->window, GDK_WATCH); |
|
12569
5ed47be3e4c3
[gaim-migrate @ 14888]
Richard Laager <rlaager@pidgin.im>
parents:
12530
diff
changeset
|
1503 | |
|
16123
8b98683319e7
Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16071
diff
changeset
|
1504 | purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/blist/show_empty_groups", |
| 7620 | 1505 | 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
|
1506 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1507 | pidgin_clear_cursor(gtkblist->window); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1508 | } |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1509 | |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1510 | 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
|
1511 | GtkWidget *checkitem) |
|
5ed47be3e4c3
[gaim-migrate @ 14888]
Richard Laager <rlaager@pidgin.im>
parents:
12530
diff
changeset
|
1512 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1513 | pidgin_set_cursor(gtkblist->window, GDK_WATCH); |
| 5228 | 1514 | |
|
16123
8b98683319e7
Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16071
diff
changeset
|
1515 | purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/blist/show_offline_buddies", |
| 7620 | 1516 | gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(checkitem))); |
| 5228 | 1517 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1518 | pidgin_clear_cursor(gtkblist->window); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1519 | } |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1520 | |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1521 | 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
|
1522 | { |
|
16123
8b98683319e7
Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16071
diff
changeset
|
1523 | 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
|
1524 | } |
|
4fab99572bf1
[gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10046
diff
changeset
|
1525 | |
|
12816
5f93e09fa9a6
[gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents:
12799
diff
changeset
|
1526 | static void |
| 15884 | 1527 | pidgin_blist_mute_pref_cb(const char *name, PurplePrefType type, |
|
12816
5f93e09fa9a6
[gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents:
12799
diff
changeset
|
1528 | gconstpointer value, gpointer data) |
|
10074
4fab99572bf1
[gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10046
diff
changeset
|
1529 | { |
|
4fab99572bf1
[gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10046
diff
changeset
|
1530 | 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
|
1531 | N_("/Tools/Mute Sounds"))), (gboolean)GPOINTER_TO_INT(value)); |
|
4fab99572bf1
[gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10046
diff
changeset
|
1532 | } |
|
4fab99572bf1
[gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10046
diff
changeset
|
1533 | |
|
12816
5f93e09fa9a6
[gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents:
12799
diff
changeset
|
1534 | static void |
| 15884 | 1535 | 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
|
1536 | gconstpointer value, gpointer data) |
|
10074
4fab99572bf1
[gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10046
diff
changeset
|
1537 | { |
|
4fab99572bf1
[gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10046
diff
changeset
|
1538 | gboolean sensitive = TRUE; |
|
4fab99572bf1
[gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10046
diff
changeset
|
1539 | |
|
4fab99572bf1
[gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10046
diff
changeset
|
1540 | if(!strcmp(value, "none")) |
|
4fab99572bf1
[gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10046
diff
changeset
|
1541 | sensitive = FALSE; |
|
4fab99572bf1
[gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10046
diff
changeset
|
1542 | |
|
4fab99572bf1
[gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10046
diff
changeset
|
1543 | 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
|
1544 | } |
|
4fab99572bf1
[gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10046
diff
changeset
|
1545 | |
| 8089 | 1546 | static void |
| 15884 | 1547 | add_buddies_from_vcard(const char *prpl_id, PurpleGroup *group, GList *list, |
| 8089 | 1548 | const char *alias) |
| 1549 | { | |
| 1550 | GList *l; | |
| 15884 | 1551 | PurpleAccount *account = NULL; |
| 1552 | PurpleConnection *gc; | |
| 8089 | 1553 | |
| 1554 | if (list == NULL) | |
| 1555 | return; | |
| 1556 | ||
| 15884 | 1557 | for (l = purple_connections_get_all(); l != NULL; l = l->next) |
| 8089 | 1558 | { |
| 15884 | 1559 | gc = (PurpleConnection *)l->data; |
| 1560 | account = purple_connection_get_account(gc); | |
| 1561 | ||
| 1562 | if (!strcmp(purple_account_get_protocol_id(account), prpl_id)) | |
| 8089 | 1563 | break; |
| 1564 | ||
| 1565 | account = NULL; | |
| 1566 | } | |
| 1567 | ||
| 1568 | if (account != NULL) | |
| 1569 | { | |
| 1570 | for (l = list; l != NULL; l = l->next) | |
| 1571 | { | |
| 15884 | 1572 | purple_blist_request_add_buddy(account, l->data, |
| 8089 | 1573 | (group ? group->name : NULL), |
| 1574 | alias); | |
| 1575 | } | |
| 1576 | } | |
| 1577 | ||
| 1578 | g_list_foreach(list, (GFunc)g_free, NULL); | |
| 1579 | g_list_free(list); | |
| 1580 | } | |
| 1581 | ||
| 1582 | static gboolean | |
| 15884 | 1583 | parse_vcard(const char *vcard, PurpleGroup *group) |
| 8089 | 1584 | { |
| 1585 | char *temp_vcard; | |
| 1586 | char *s, *c; | |
| 1587 | char *alias = NULL; | |
| 1588 | GList *aims = NULL; | |
| 1589 | GList *icqs = NULL; | |
| 1590 | GList *yahoos = NULL; | |
| 1591 | GList *msns = NULL; | |
| 1592 | GList *jabbers = NULL; | |
| 1593 | ||
| 1594 | s = temp_vcard = g_strdup(vcard); | |
| 1595 | ||
| 1596 | while (*s != '\0' && strncmp(s, "END:vCard", strlen("END:vCard"))) | |
| 1597 | { | |
| 1598 | char *field, *value; | |
| 1599 | ||
| 1600 | field = s; | |
| 1601 | ||
| 1602 | /* Grab the field */ | |
| 1603 | while (*s != '\r' && *s != '\n' && *s != '\0' && *s != ':') | |
| 1604 | s++; | |
| 1605 | ||
| 1606 | if (*s == '\r') s++; | |
| 1607 | if (*s == '\n') | |
| 1608 | { | |
| 1609 | s++; | |
| 1610 | continue; | |
| 1611 | } | |
| 1612 | ||
| 1613 | if (*s != '\0') *s++ = '\0'; | |
| 1614 | ||
| 1615 | if ((c = strchr(field, ';')) != NULL) | |
| 1616 | *c = '\0'; | |
| 1617 | ||
| 1618 | /* Proceed to the end of the line */ | |
| 1619 | value = s; | |
| 1620 | ||
| 1621 | while (*s != '\r' && *s != '\n' && *s != '\0') | |
| 1622 | s++; | |
| 1623 | ||
| 1624 | if (*s == '\r') *s++ = '\0'; | |
| 1625 | if (*s == '\n') *s++ = '\0'; | |
| 1626 | ||
| 1627 | /* We only want to worry about a few fields here. */ | |
| 1628 | if (!strcmp(field, "FN")) | |
| 1629 | alias = g_strdup(value); | |
| 1630 | else if (!strcmp(field, "X-AIM") || !strcmp(field, "X-ICQ") || | |
| 1631 | !strcmp(field, "X-YAHOO") || !strcmp(field, "X-MSN") || | |
| 1632 | !strcmp(field, "X-JABBER")) | |
| 1633 | { | |
| 1634 | char **values = g_strsplit(value, ":", 0); | |
| 1635 | char **im; | |
| 1636 | ||
| 1637 | for (im = values; *im != NULL; im++) | |
| 1638 | { | |
| 1639 | if (!strcmp(field, "X-AIM")) | |
| 1640 | aims = g_list_append(aims, g_strdup(*im)); | |
| 1641 | else if (!strcmp(field, "X-ICQ")) | |
| 1642 | icqs = g_list_append(icqs, g_strdup(*im)); | |
| 1643 | else if (!strcmp(field, "X-YAHOO")) | |
| 1644 | yahoos = g_list_append(yahoos, g_strdup(*im)); | |
| 1645 | else if (!strcmp(field, "X-MSN")) | |
| 1646 | msns = g_list_append(msns, g_strdup(*im)); | |
| 1647 | else if (!strcmp(field, "X-JABBER")) | |
| 1648 | jabbers = g_list_append(jabbers, g_strdup(*im)); | |
| 1649 | } | |
| 1650 | ||
| 1651 | g_strfreev(values); | |
| 1652 | } | |
| 1653 | } | |
| 1654 | ||
| 1655 | g_free(temp_vcard); | |
| 1656 | ||
| 1657 | if (aims == NULL && icqs == NULL && yahoos == NULL && | |
| 1658 | msns == NULL && jabbers == NULL) | |
| 1659 | { | |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
1660 | g_free(alias); |
| 8089 | 1661 | |
| 1662 | return FALSE; | |
| 1663 | } | |
| 1664 | ||
| 1665 | add_buddies_from_vcard("prpl-oscar", group, aims, alias); | |
| 1666 | add_buddies_from_vcard("prpl-oscar", group, icqs, alias); | |
| 1667 | add_buddies_from_vcard("prpl-yahoo", group, yahoos, alias); | |
| 1668 | add_buddies_from_vcard("prpl-msn", group, msns, alias); | |
| 1669 | add_buddies_from_vcard("prpl-jabber", group, jabbers, alias); | |
| 1670 | ||
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
1671 | g_free(alias); |
| 8089 | 1672 | |
| 1673 | return TRUE; | |
| 1674 | } | |
| 1675 | ||
|
11059
52e4f595fd27
[gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents:
11038
diff
changeset
|
1676 | #ifdef _WIN32 |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1677 | static void pidgin_blist_drag_begin(GtkWidget *widget, |
|
11059
52e4f595fd27
[gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents:
11038
diff
changeset
|
1678 | GdkDragContext *drag_context, gpointer user_data) |
|
52e4f595fd27
[gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents:
11038
diff
changeset
|
1679 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1680 | pidgin_blist_tooltip_destroy(); |
|
11059
52e4f595fd27
[gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents:
11038
diff
changeset
|
1681 | |
|
52e4f595fd27
[gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents:
11038
diff
changeset
|
1682 | |
|
52e4f595fd27
[gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents:
11038
diff
changeset
|
1683 | /* Unhook the tooltip-timeout since we don't want a tooltip |
|
52e4f595fd27
[gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents:
11038
diff
changeset
|
1684 | * to appear and obscure the dragging operation. |
|
52e4f595fd27
[gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents:
11038
diff
changeset
|
1685 | * This is a workaround for GTK+ bug 107320. */ |
|
52e4f595fd27
[gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents:
11038
diff
changeset
|
1686 | if (gtkblist->timeout) { |
|
52e4f595fd27
[gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents:
11038
diff
changeset
|
1687 | g_source_remove(gtkblist->timeout); |
|
52e4f595fd27
[gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents:
11038
diff
changeset
|
1688 | gtkblist->timeout = 0; |
|
52e4f595fd27
[gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents:
11038
diff
changeset
|
1689 | } |
|
52e4f595fd27
[gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents:
11038
diff
changeset
|
1690 | } |
|
52e4f595fd27
[gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents:
11038
diff
changeset
|
1691 | #endif |
|
52e4f595fd27
[gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents:
11038
diff
changeset
|
1692 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1693 | static void pidgin_blist_drag_data_get_cb(GtkWidget *widget, |
|
9811
2cbca162a09f
[gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents:
9791
diff
changeset
|
1694 | GdkDragContext *dc, |
|
2cbca162a09f
[gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents:
9791
diff
changeset
|
1695 | GtkSelectionData *data, |
|
2cbca162a09f
[gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents:
9791
diff
changeset
|
1696 | guint info, |
|
2cbca162a09f
[gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents:
9791
diff
changeset
|
1697 | guint time, |
|
11059
52e4f595fd27
[gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents:
11038
diff
changeset
|
1698 | gpointer null) |
| 5228 | 1699 | { |
|
11059
52e4f595fd27
[gaim-migrate @ 13012]
Daniel Atallah <datallah@pidgin.im>
parents:
11038
diff
changeset
|
1700 | |
| 15884 | 1701 | if (data->target == gdk_atom_intern("PURPLE_BLIST_NODE", FALSE)) |
| 8089 | 1702 | { |
| 5228 | 1703 | GtkTreeRowReference *ref = g_object_get_data(G_OBJECT(dc), "gtk-tree-view-source-row"); |
| 1704 | GtkTreePath *sourcerow = gtk_tree_row_reference_get_path(ref); | |
| 1705 | GtkTreeIter iter; | |
| 15884 | 1706 | PurpleBlistNode *node = NULL; |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
1707 | GValue val; |
| 5273 | 1708 | if(!sourcerow) |
| 1709 | return; | |
| 5228 | 1710 | 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
|
1711 | val.g_type = 0; |
| 5228 | 1712 | gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val); |
| 1713 | node = g_value_get_pointer(&val); | |
| 1714 | gtk_selection_data_set (data, | |
| 15884 | 1715 | gdk_atom_intern ("PURPLE_BLIST_NODE", FALSE), |
| 5228 | 1716 | 8, /* bits */ |
| 1717 | (void*)&node, | |
| 1718 | sizeof (node)); | |
| 5273 | 1719 | |
| 5228 | 1720 | gtk_tree_path_free(sourcerow); |
| 1721 | } | |
| 8089 | 1722 | else if (data->target == gdk_atom_intern("application/x-im-contact", FALSE)) |
| 1723 | { | |
| 7706 | 1724 | GtkTreeRowReference *ref; |
| 1725 | GtkTreePath *sourcerow; | |
| 1726 | GtkTreeIter iter; | |
| 15884 | 1727 | PurpleBlistNode *node = NULL; |
| 1728 | PurpleBuddy *buddy; | |
| 1729 | PurpleConnection *gc; | |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
1730 | GValue val; |
| 7706 | 1731 | GString *str; |
| 1732 | const char *protocol; | |
| 1733 | ||
| 1734 | ref = g_object_get_data(G_OBJECT(dc), "gtk-tree-view-source-row"); | |
| 1735 | sourcerow = gtk_tree_row_reference_get_path(ref); | |
| 1736 | ||
| 1737 | if (!sourcerow) | |
| 1738 | return; | |
| 1739 | ||
| 1740 | gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, | |
| 1741 | sourcerow); | |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
1742 | val.g_type = 0; |
| 7706 | 1743 | gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), &iter, |
| 1744 | NODE_COLUMN, &val); | |
| 1745 | ||
| 1746 | node = g_value_get_pointer(&val); | |
| 1747 | ||
| 15884 | 1748 | if (PURPLE_BLIST_NODE_IS_CONTACT(node)) |
| 7706 | 1749 | { |
| 15884 | 1750 | buddy = purple_contact_get_priority_buddy((PurpleContact *)node); |
| 7706 | 1751 | } |
| 15884 | 1752 | else if (!PURPLE_BLIST_NODE_IS_BUDDY(node)) |
| 7706 | 1753 | { |
| 1754 | gtk_tree_path_free(sourcerow); | |
| 1755 | return; | |
| 1756 | } | |
| 1757 | else | |
| 1758 | { | |
| 15884 | 1759 | buddy = (PurpleBuddy *)node; |
| 7706 | 1760 | } |
| 1761 | ||
| 15884 | 1762 | gc = purple_account_get_connection(buddy->account); |
| 7706 | 1763 | |
| 1764 | if (gc == NULL) | |
| 1765 | { | |
| 1766 | gtk_tree_path_free(sourcerow); | |
| 1767 | return; | |
| 1768 | } | |
| 1769 | ||
| 1770 | protocol = | |
| 15884 | 1771 | PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->list_icon(buddy->account, |
| 7706 | 1772 | buddy); |
| 1773 | ||
| 1774 | str = g_string_new(NULL); | |
| 1775 | g_string_printf(str, | |
| 1776 | "MIME-Version: 1.0\r\n" | |
| 1777 | "Content-Type: application/x-im-contact\r\n" | |
| 1778 | "X-IM-Protocol: %s\r\n" | |
| 1779 | "X-IM-Username: %s\r\n", | |
| 1780 | protocol, | |
| 1781 | buddy->name); | |
| 1782 | ||
| 1783 | if (buddy->alias != NULL) | |
| 1784 | { | |
| 1785 | g_string_append_printf(str, | |
| 1786 | "X-IM-Alias: %s\r\n", | |
| 1787 | buddy->alias); | |
| 1788 | } | |
| 1789 | ||
|
14239
661d2bb9eb86
[gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents:
14230
diff
changeset
|
1790 | g_string_append(str, "\r\n"); |
| 7706 | 1791 | |
| 1792 | gtk_selection_data_set(data, | |
| 1793 | gdk_atom_intern("application/x-im-contact", FALSE), | |
| 1794 | 8, /* bits */ | |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
1795 | (const guchar *)str->str, |
|
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
1796 | strlen(str->str) + 1); |
|
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
1797 | |
|
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
1798 | g_string_free(str, TRUE); |
| 7706 | 1799 | gtk_tree_path_free(sourcerow); |
| 1800 | } | |
| 5228 | 1801 | } |
| 1802 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1803 | static void pidgin_blist_drag_data_rcv_cb(GtkWidget *widget, GdkDragContext *dc, guint x, guint y, |
| 5228 | 1804 | GtkSelectionData *sd, guint info, guint t) |
| 7620 | 1805 | { |
| 13834 | 1806 | if (gtkblist->drag_timeout) { |
| 1807 | g_source_remove(gtkblist->drag_timeout); | |
| 1808 | gtkblist->drag_timeout = 0; | |
| 1809 | } | |
| 1810 | ||
| 15884 | 1811 | if (sd->target == gdk_atom_intern("PURPLE_BLIST_NODE", FALSE) && sd->data) { |
| 1812 | PurpleBlistNode *n = NULL; | |
| 5228 | 1813 | GtkTreePath *path = NULL; |
| 1814 | GtkTreeViewDropPosition position; | |
| 1815 | memcpy(&n, sd->data, sizeof(n)); | |
| 1816 | 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
|
1817 | /* if we're here, I think it means the drop is ok */ |
| 7642 | 1818 | GtkTreeIter iter; |
| 15884 | 1819 | PurpleBlistNode *node; |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
1820 | GValue val; |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1821 | struct _pidgin_blist_node *gtknode; |
| 7620 | 1822 | |
| 1823 | gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), | |
| 1824 | &iter, path); | |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
1825 | val.g_type = 0; |
| 7620 | 1826 | gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), |
| 1827 | &iter, NODE_COLUMN, &val); | |
| 5228 | 1828 | node = g_value_get_pointer(&val); |
| 7620 | 1829 | gtknode = node->ui_data; |
| 1830 | ||
| 15884 | 1831 | if (PURPLE_BLIST_NODE_IS_CONTACT(n)) { |
| 1832 | PurpleContact *c = (PurpleContact*)n; | |
| 1833 | if (PURPLE_BLIST_NODE_IS_CONTACT(node) && gtknode->contact_expanded) { | |
| 1834 | purple_blist_merge_contact(c, node); | |
| 1835 | } else if (PURPLE_BLIST_NODE_IS_CONTACT(node) || | |
| 1836 | PURPLE_BLIST_NODE_IS_CHAT(node)) { | |
| 5228 | 1837 | switch(position) { |
| 1838 | case GTK_TREE_VIEW_DROP_AFTER: | |
| 1839 | case GTK_TREE_VIEW_DROP_INTO_OR_AFTER: | |
| 15884 | 1840 | purple_blist_add_contact(c, (PurpleGroup*)node->parent, |
| 7620 | 1841 | node); |
| 1842 | break; | |
| 1843 | case GTK_TREE_VIEW_DROP_BEFORE: | |
| 1844 | case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE: | |
| 15884 | 1845 | purple_blist_add_contact(c, (PurpleGroup*)node->parent, |
| 7620 | 1846 | node->prev); |
| 1847 | break; | |
| 1848 | } | |
| 15884 | 1849 | } else if(PURPLE_BLIST_NODE_IS_GROUP(node)) { |
| 1850 | purple_blist_add_contact(c, (PurpleGroup*)node, NULL); | |
| 1851 | } else if(PURPLE_BLIST_NODE_IS_BUDDY(node)) { | |
| 1852 | purple_blist_merge_contact(c, node); | |
| 7620 | 1853 | } |
| 15884 | 1854 | } else if (PURPLE_BLIST_NODE_IS_BUDDY(n)) { |
| 1855 | PurpleBuddy *b = (PurpleBuddy*)n; | |
| 1856 | if (PURPLE_BLIST_NODE_IS_BUDDY(node)) { | |
| 7620 | 1857 | switch(position) { |
| 1858 | case GTK_TREE_VIEW_DROP_AFTER: | |
| 1859 | case GTK_TREE_VIEW_DROP_INTO_OR_AFTER: | |
| 15884 | 1860 | purple_blist_add_buddy(b, (PurpleContact*)node->parent, |
| 1861 | (PurpleGroup*)node->parent->parent, node); | |
| 5228 | 1862 | break; |
| 1863 | case GTK_TREE_VIEW_DROP_BEFORE: | |
| 1864 | case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE: | |
| 15884 | 1865 | purple_blist_add_buddy(b, (PurpleContact*)node->parent, |
| 1866 | (PurpleGroup*)node->parent->parent, | |
| 7620 | 1867 | node->prev); |
| 5228 | 1868 | break; |
| 1869 | } | |
| 15884 | 1870 | } else if(PURPLE_BLIST_NODE_IS_CHAT(node)) { |
| 1871 | purple_blist_add_buddy(b, NULL, (PurpleGroup*)node->parent, | |
| 7620 | 1872 | NULL); |
| 15884 | 1873 | } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) { |
| 1874 | purple_blist_add_buddy(b, NULL, (PurpleGroup*)node, NULL); | |
| 1875 | } else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) { | |
| 7620 | 1876 | if(gtknode->contact_expanded) { |
| 1877 | switch(position) { | |
| 1878 | case GTK_TREE_VIEW_DROP_INTO_OR_AFTER: | |
| 1879 | case GTK_TREE_VIEW_DROP_AFTER: | |
| 1880 | case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE: | |
| 15884 | 1881 | purple_blist_add_buddy(b, (PurpleContact*)node, |
| 1882 | (PurpleGroup*)node->parent, NULL); | |
| 7620 | 1883 | break; |
| 1884 | case GTK_TREE_VIEW_DROP_BEFORE: | |
| 15884 | 1885 | purple_blist_add_buddy(b, NULL, |
| 1886 | (PurpleGroup*)node->parent, node->prev); | |
| 7620 | 1887 | break; |
| 1888 | } | |
| 1889 | } else { | |
| 1890 | switch(position) { | |
| 1891 | case GTK_TREE_VIEW_DROP_INTO_OR_AFTER: | |
| 1892 | case GTK_TREE_VIEW_DROP_AFTER: | |
| 15884 | 1893 | purple_blist_add_buddy(b, NULL, |
| 1894 | (PurpleGroup*)node->parent, NULL); | |
| 7620 | 1895 | break; |
| 1896 | case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE: | |
| 1897 | case GTK_TREE_VIEW_DROP_BEFORE: | |
| 15884 | 1898 | purple_blist_add_buddy(b, NULL, |
| 1899 | (PurpleGroup*)node->parent, node->prev); | |
| 7620 | 1900 | break; |
| 1901 | } | |
| 1902 | } | |
| 5228 | 1903 | } |
| 15884 | 1904 | } else if (PURPLE_BLIST_NODE_IS_CHAT(n)) { |
| 1905 | PurpleChat *chat = (PurpleChat *)n; | |
| 1906 | if (PURPLE_BLIST_NODE_IS_BUDDY(node)) { | |
| 7620 | 1907 | switch(position) { |
| 1908 | case GTK_TREE_VIEW_DROP_AFTER: | |
| 1909 | case GTK_TREE_VIEW_DROP_INTO_OR_AFTER: | |
| 1910 | case GTK_TREE_VIEW_DROP_BEFORE: | |
| 1911 | case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE: | |
| 15884 | 1912 | purple_blist_add_chat(chat, |
| 1913 | (PurpleGroup*)node->parent->parent, | |
|
13543
25f9c386270c
[gaim-migrate @ 15919]
Daniel Atallah <datallah@pidgin.im>
parents:
13541
diff
changeset
|
1914 | node->parent); |
| 7620 | 1915 | break; |
| 1916 | } | |
| 15884 | 1917 | } else if(PURPLE_BLIST_NODE_IS_CONTACT(node) || |
| 1918 | PURPLE_BLIST_NODE_IS_CHAT(node)) { | |
| 5234 | 1919 | switch(position) { |
| 1920 | case GTK_TREE_VIEW_DROP_AFTER: | |
| 1921 | case GTK_TREE_VIEW_DROP_INTO_OR_AFTER: | |
| 15884 | 1922 | purple_blist_add_chat(chat, (PurpleGroup*)node->parent, node); |
| 5234 | 1923 | break; |
| 1924 | case GTK_TREE_VIEW_DROP_BEFORE: | |
| 1925 | case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE: | |
| 15884 | 1926 | purple_blist_add_chat(chat, (PurpleGroup*)node->parent, node->prev); |
| 5234 | 1927 | break; |
| 1928 | } | |
| 15884 | 1929 | } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) { |
| 1930 | purple_blist_add_chat(chat, (PurpleGroup*)node, NULL); | |
| 5234 | 1931 | } |
| 15884 | 1932 | } else if (PURPLE_BLIST_NODE_IS_GROUP(n)) { |
| 1933 | PurpleGroup *g = (PurpleGroup*)n; | |
| 1934 | if (PURPLE_BLIST_NODE_IS_GROUP(node)) { | |
| 5228 | 1935 | switch (position) { |
| 1936 | case GTK_TREE_VIEW_DROP_INTO_OR_AFTER: | |
| 1937 | case GTK_TREE_VIEW_DROP_AFTER: | |
| 15884 | 1938 | purple_blist_add_group(g, node); |
| 5228 | 1939 | break; |
| 1940 | case GTK_TREE_VIEW_DROP_INTO_OR_BEFORE: | |
| 1941 | case GTK_TREE_VIEW_DROP_BEFORE: | |
| 15884 | 1942 | purple_blist_add_group(g, node->prev); |
| 5228 | 1943 | break; |
| 1944 | } | |
| 15884 | 1945 | } else if(PURPLE_BLIST_NODE_IS_BUDDY(node)) { |
| 1946 | purple_blist_add_group(g, node->parent->parent); | |
| 1947 | } else if(PURPLE_BLIST_NODE_IS_CONTACT(node) || | |
| 1948 | PURPLE_BLIST_NODE_IS_CHAT(node)) { | |
| 1949 | purple_blist_add_group(g, node->parent); | |
| 5228 | 1950 | } |
| 1951 | } | |
| 1952 | ||
| 1953 | gtk_tree_path_free(path); | |
| 7620 | 1954 | gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t); |
| 5228 | 1955 | } |
| 1956 | } | |
| 7706 | 1957 | else if (sd->target == gdk_atom_intern("application/x-im-contact", |
| 1958 | FALSE) && sd->data) | |
| 1959 | { | |
| 15884 | 1960 | PurpleGroup *group = NULL; |
| 7706 | 1961 | GtkTreePath *path = NULL; |
| 1962 | GtkTreeViewDropPosition position; | |
| 15884 | 1963 | PurpleAccount *account; |
| 7706 | 1964 | char *protocol = NULL; |
| 1965 | char *username = NULL; | |
| 1966 | char *alias = NULL; | |
| 1967 | ||
| 1968 | if (gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(widget), | |
| 1969 | x, y, &path, &position)) | |
| 1970 | { | |
| 1971 | GtkTreeIter iter; | |
| 15884 | 1972 | PurpleBlistNode *node; |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
1973 | GValue val; |
| 7706 | 1974 | |
| 1975 | gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), | |
| 1976 | &iter, path); | |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
1977 | val.g_type = 0; |
| 7706 | 1978 | gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), |
| 1979 | &iter, NODE_COLUMN, &val); | |
| 1980 | node = g_value_get_pointer(&val); | |
| 1981 | ||
| 15884 | 1982 | if (PURPLE_BLIST_NODE_IS_BUDDY(node)) |
| 7706 | 1983 | { |
| 15884 | 1984 | group = (PurpleGroup *)node->parent->parent; |
| 7706 | 1985 | } |
| 15884 | 1986 | else if (PURPLE_BLIST_NODE_IS_CHAT(node) || |
| 1987 | PURPLE_BLIST_NODE_IS_CONTACT(node)) | |
| 7706 | 1988 | { |
| 15884 | 1989 | group = (PurpleGroup *)node->parent; |
| 7706 | 1990 | } |
| 15884 | 1991 | else if (PURPLE_BLIST_NODE_IS_GROUP(node)) |
| 7706 | 1992 | { |
| 15884 | 1993 | group = (PurpleGroup *)node; |
| 7706 | 1994 | } |
| 1995 | } | |
| 1996 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
1997 | 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
|
1998 | &protocol, &username, &alias)) |
| 7706 | 1999 | { |
| 2000 | if (account == NULL) | |
| 2001 | { | |
| 15884 | 2002 | purple_notify_error(NULL, NULL, |
| 7706 | 2003 | _("You are not currently signed on with an account that " |
| 2004 | "can add that buddy."), NULL); | |
| 2005 | } | |
| 2006 | else | |
| 2007 | { | |
| 15884 | 2008 | purple_blist_request_add_buddy(account, username, |
| 7706 | 2009 | (group ? group->name : NULL), |
| 2010 | alias); | |
| 2011 | } | |
| 2012 | } | |
| 2013 | ||
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
2014 | g_free(username); |
|
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
2015 | g_free(protocol); |
|
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
2016 | g_free(alias); |
| 7706 | 2017 | |
| 2018 | if (path != NULL) | |
| 2019 | gtk_tree_path_free(path); | |
| 2020 | ||
| 2021 | gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t); | |
| 2022 | } | |
| 8089 | 2023 | else if (sd->target == gdk_atom_intern("text/x-vcard", FALSE) && sd->data) |
| 2024 | { | |
| 2025 | gboolean result; | |
| 15884 | 2026 | PurpleGroup *group = NULL; |
| 8089 | 2027 | GtkTreePath *path = NULL; |
| 2028 | GtkTreeViewDropPosition position; | |
| 2029 | ||
| 2030 | if (gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(widget), | |
| 2031 | x, y, &path, &position)) | |
| 2032 | { | |
| 2033 | GtkTreeIter iter; | |
| 15884 | 2034 | PurpleBlistNode *node; |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
2035 | GValue val; |
| 8089 | 2036 | |
| 2037 | gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), | |
| 2038 | &iter, path); | |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
2039 | val.g_type = 0; |
| 8089 | 2040 | gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), |
| 2041 | &iter, NODE_COLUMN, &val); | |
| 2042 | node = g_value_get_pointer(&val); | |
| 2043 | ||
| 15884 | 2044 | if (PURPLE_BLIST_NODE_IS_BUDDY(node)) |
| 8089 | 2045 | { |
| 15884 | 2046 | group = (PurpleGroup *)node->parent->parent; |
| 8089 | 2047 | } |
| 15884 | 2048 | else if (PURPLE_BLIST_NODE_IS_CHAT(node) || |
| 2049 | PURPLE_BLIST_NODE_IS_CONTACT(node)) | |
| 8089 | 2050 | { |
| 15884 | 2051 | group = (PurpleGroup *)node->parent; |
| 8089 | 2052 | } |
| 15884 | 2053 | else if (PURPLE_BLIST_NODE_IS_GROUP(node)) |
| 8089 | 2054 | { |
| 15884 | 2055 | group = (PurpleGroup *)node; |
| 8089 | 2056 | } |
| 2057 | } | |
| 2058 | ||
|
11137
cf40226ddff7
[gaim-migrate @ 13201]
Mark Doliner <markdoliner@pidgin.im>
parents:
11134
diff
changeset
|
2059 | result = parse_vcard((const gchar *)sd->data, group); |
| 8089 | 2060 | |
| 2061 | gtk_drag_finish(dc, result, (dc->action == GDK_ACTION_MOVE), t); | |
| 9525 | 2062 | } else if (sd->target == gdk_atom_intern("text/uri-list", FALSE) && sd->data) { |
| 9495 | 2063 | GtkTreePath *path = NULL; |
| 2064 | GtkTreeViewDropPosition position; | |
| 2065 | ||
| 2066 | 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
|
2067 | x, y, &path, &position)) |
| 9495 | 2068 | { |
| 2069 | GtkTreeIter iter; | |
| 15884 | 2070 | PurpleBlistNode *node; |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
2071 | GValue val; |
|
10382
32e07712e224
[gaim-migrate @ 11608]
Luke Schierer <lschiere@pidgin.im>
parents:
10357
diff
changeset
|
2072 | |
| 9495 | 2073 | gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), |
| 2074 | &iter, path); | |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
2075 | val.g_type = 0; |
| 9495 | 2076 | gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), |
| 2077 | &iter, NODE_COLUMN, &val); | |
| 2078 | node = g_value_get_pointer(&val); | |
|
10382
32e07712e224
[gaim-migrate @ 11608]
Luke Schierer <lschiere@pidgin.im>
parents:
10357
diff
changeset
|
2079 | |
| 15884 | 2080 | if (PURPLE_BLIST_NODE_IS_BUDDY(node) || PURPLE_BLIST_NODE_IS_CONTACT(node)) { |
| 2081 | PurpleBuddy *b = PURPLE_BLIST_NODE_IS_BUDDY(node) ? (PurpleBuddy*)node : purple_contact_get_priority_buddy((PurpleContact*)node); | |
| 15568 | 2082 | pidgin_dnd_file_manage(sd, b->account, b->name); |
|
10229
39ffee70c286
[gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents:
10222
diff
changeset
|
2083 | 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
|
2084 | } else { |
|
39ffee70c286
[gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents:
10222
diff
changeset
|
2085 | gtk_drag_finish(dc, FALSE, FALSE, t); |
| 9495 | 2086 | } |
|
10382
32e07712e224
[gaim-migrate @ 11608]
Luke Schierer <lschiere@pidgin.im>
parents:
10357
diff
changeset
|
2087 | } |
| 8089 | 2088 | } |
| 5228 | 2089 | } |
| 2090 | ||
|
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
|
2091 | 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
|
2092 | 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
|
2093 | 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
|
2094 | 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
|
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 | 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
|
2097 | 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
|
2098 | |
|
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 | 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
|
2100 | 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
|
2101 | 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
|
2102 | 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
|
2103 | |
|
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 | 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
|
2105 | return; |
|
17086
4b6d59cdfaca
This is what I actually intended to commit in aee2b2d67b643d59beb0b75b460c553c804e8220. The rest of the mess being pushed is me trying to clean up my mess.
Daniel Atallah <datallah@pidgin.im>
parents:
17082
diff
changeset
|
2106 | |
|
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
|
2107 | /* 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
|
2108 | 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
|
2109 | 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
|
2110 | 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
|
2111 | 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
|
2112 | pixels[rowstride * 2 + 3] = 0xC0; |
|
17086
4b6d59cdfaca
This is what I actually intended to commit in aee2b2d67b643d59beb0b75b460c553c804e8220. The rest of the mess being pushed is me trying to clean up my mess.
Daniel Atallah <datallah@pidgin.im>
parents:
17082
diff
changeset
|
2113 | |
|
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
|
2114 | /* 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
|
2115 | 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
|
2116 | 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
|
2117 | 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
|
2118 | 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
|
2119 | pixels[(2 * rowstride) + (width * 4) - 1] = 0xC0; |
|
17086
4b6d59cdfaca
This is what I actually intended to commit in aee2b2d67b643d59beb0b75b460c553c804e8220. The rest of the mess being pushed is me trying to clean up my mess.
Daniel Atallah <datallah@pidgin.im>
parents:
17082
diff
changeset
|
2120 | |
|
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
|
2121 | /* 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
|
2122 | 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
|
2123 | 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
|
2124 | 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
|
2125 | 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
|
2126 | pixels[(height - 3) * rowstride + 3] = 0xC0; |
|
17086
4b6d59cdfaca
This is what I actually intended to commit in aee2b2d67b643d59beb0b75b460c553c804e8220. The rest of the mess being pushed is me trying to clean up my mess.
Daniel Atallah <datallah@pidgin.im>
parents:
17082
diff
changeset
|
2127 | |
|
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
|
2128 | /* 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
|
2129 | 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
|
2130 | 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
|
2131 | 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
|
2132 | 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
|
2133 | 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
|
2134 | } |
|
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
|
2135 | |
|
15552
e66ed02bc8c9
dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents:
15551
diff
changeset
|
2136 | /* 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
|
2137 | 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
|
2138 | 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
|
2139 | { |
|
e66ed02bc8c9
dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents:
15551
diff
changeset
|
2140 | 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
|
2141 | 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
|
2142 | 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
|
2143 | 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
|
2144 | 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
|
2145 | 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
|
2146 | 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
|
2147 | 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
|
2148 | |
|
e66ed02bc8c9
dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents:
15551
diff
changeset
|
2149 | 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
|
2150 | 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
|
2151 | return; |
|
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 | 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
|
2154 | 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
|
2155 | 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
|
2156 | 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
|
2157 | 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
|
2158 | 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
|
2159 | |
|
e66ed02bc8c9
dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents:
15551
diff
changeset
|
2160 | 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
|
2161 | 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
|
2162 | 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
|
2163 | 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
|
2164 | *(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
|
2165 | *(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
|
2166 | *(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
|
2167 | 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
|
2168 | 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
|
2169 | *(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
|
2170 | } |
|
e66ed02bc8c9
dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents:
15551
diff
changeset
|
2171 | } |
|
e66ed02bc8c9
dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents:
15551
diff
changeset
|
2172 | } |
|
e66ed02bc8c9
dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents:
15551
diff
changeset
|
2173 | |
|
e66ed02bc8c9
dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents:
15551
diff
changeset
|
2174 | |
| 15884 | 2175 | 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
|
2176 | gboolean scaled, gboolean greyed) |
|
10482
01c1287da66f
[gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10477
diff
changeset
|
2177 | { |
| 10483 | 2178 | GdkPixbuf *buf, *ret = NULL; |
|
10482
01c1287da66f
[gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10477
diff
changeset
|
2179 | GdkPixbufLoader *loader; |
|
16900
e9f12eb06c5b
Rework purple_buddy_icons_find() to return a reference for the caller, which
Richard Laager <rlaager@pidgin.im>
parents:
16825
diff
changeset
|
2180 | PurpleBuddyIcon *icon = NULL; |
|
14914
290eb2170f38
[gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14882
diff
changeset
|
2181 | const guchar *data = NULL; |
|
11137
cf40226ddff7
[gaim-migrate @ 13201]
Mark Doliner <markdoliner@pidgin.im>
parents:
11134
diff
changeset
|
2182 | gsize len; |
| 15884 | 2183 | PurpleBuddy *buddy = NULL; |
| 2184 | PurpleAccount *account = NULL; | |
| 2185 | 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
|
2186 | PurpleStoredImage *custom_img; |
| 15884 | 2187 | |
| 2188 | if(PURPLE_BLIST_NODE_IS_CONTACT(node)) { | |
| 2189 | buddy = purple_contact_get_priority_buddy((PurpleContact*)node); | |
| 2190 | } else if(PURPLE_BLIST_NODE_IS_BUDDY(node)) { | |
| 2191 | buddy = (PurpleBuddy*)node; | |
|
10482
01c1287da66f
[gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10477
diff
changeset
|
2192 | } else { |
|
01c1287da66f
[gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10477
diff
changeset
|
2193 | return NULL; |
|
01c1287da66f
[gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10477
diff
changeset
|
2194 | } |
|
01c1287da66f
[gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10477
diff
changeset
|
2195 | |
|
16625
d0a4891b5127
This is Sadrul's icon-migrate.patch from ticket #314.
Richard Laager <rlaager@pidgin.im>
parents:
16545
diff
changeset
|
2196 | if(buddy == NULL) |
|
d0a4891b5127
This is Sadrul's icon-migrate.patch from ticket #314.
Richard Laager <rlaager@pidgin.im>
parents:
16545
diff
changeset
|
2197 | return NULL; |
|
d0a4891b5127
This is Sadrul's icon-migrate.patch from ticket #314.
Richard Laager <rlaager@pidgin.im>
parents:
16545
diff
changeset
|
2198 | |
|
d0a4891b5127
This is Sadrul's icon-migrate.patch from ticket #314.
Richard Laager <rlaager@pidgin.im>
parents:
16545
diff
changeset
|
2199 | 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
|
2200 | |
|
b96a1c748fca
this would use the protocol icons in place of the buddy icon for chats,
Nathan Walp <nwalp@pidgin.im>
parents:
15479
diff
changeset
|
2201 | if(account && account->gc) |
| 15884 | 2202 | 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
|
2203 | |
|
10482
01c1287da66f
[gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10477
diff
changeset
|
2204 | #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
|
2205 | 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
|
2206 | return NULL; |
|
01c1287da66f
[gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10477
diff
changeset
|
2207 | #endif |
|
01c1287da66f
[gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10477
diff
changeset
|
2208 | |
|
16437
7ff7c3405ea2
Rework the buddy icon subsystem to use the imgstore subsystem, and modify the
Richard Laager <rlaager@pidgin.im>
parents:
16357
diff
changeset
|
2209 | 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
|
2210 | 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
|
2211 | { |
|
7ff7c3405ea2
Rework the buddy icon subsystem to use the imgstore subsystem, and modify the
Richard Laager <rlaager@pidgin.im>
parents:
16357
diff
changeset
|
2212 | 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
|
2213 | len = purple_imgstore_get_size(custom_img); |
|
14914
290eb2170f38
[gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14882
diff
changeset
|
2214 | } |
|
290eb2170f38
[gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14882
diff
changeset
|
2215 | |
|
290eb2170f38
[gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14882
diff
changeset
|
2216 | if (data == NULL) { |
|
16900
e9f12eb06c5b
Rework purple_buddy_icons_find() to return a reference for the caller, which
Richard Laager <rlaager@pidgin.im>
parents:
16825
diff
changeset
|
2217 | /* Not sure I like this...*/ |
|
e9f12eb06c5b
Rework purple_buddy_icons_find() to return a reference for the caller, which
Richard Laager <rlaager@pidgin.im>
parents:
16825
diff
changeset
|
2218 | if (!(icon = purple_buddy_icons_find(buddy->account, buddy->name))) |
|
e9f12eb06c5b
Rework purple_buddy_icons_find() to return a reference for the caller, which
Richard Laager <rlaager@pidgin.im>
parents:
16825
diff
changeset
|
2219 | return NULL; |
|
16625
d0a4891b5127
This is Sadrul's icon-migrate.patch from ticket #314.
Richard Laager <rlaager@pidgin.im>
parents:
16545
diff
changeset
|
2220 | data = purple_buddy_icon_get_data(icon, &len); |
|
d0a4891b5127
This is Sadrul's icon-migrate.patch from ticket #314.
Richard Laager <rlaager@pidgin.im>
parents:
16545
diff
changeset
|
2221 | |
|
d0a4891b5127
This is Sadrul's icon-migrate.patch from ticket #314.
Richard Laager <rlaager@pidgin.im>
parents:
16545
diff
changeset
|
2222 | if(data == NULL) |
|
d0a4891b5127
This is Sadrul's icon-migrate.patch from ticket #314.
Richard Laager <rlaager@pidgin.im>
parents:
16545
diff
changeset
|
2223 | return NULL; |
|
d0a4891b5127
This is Sadrul's icon-migrate.patch from ticket #314.
Richard Laager <rlaager@pidgin.im>
parents:
16545
diff
changeset
|
2224 | } |
|
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
|
2225 | |
|
10482
01c1287da66f
[gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10477
diff
changeset
|
2226 | loader = gdk_pixbuf_loader_new(); |
|
01c1287da66f
[gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10477
diff
changeset
|
2227 | gdk_pixbuf_loader_write(loader, data, len, NULL); |
|
12601
be19ef28e2ce
[gaim-migrate @ 14935]
Richard Laager <rlaager@pidgin.im>
parents:
12600
diff
changeset
|
2228 | gdk_pixbuf_loader_close(loader, NULL); |
|
16531
98363f6cdc6c
Fix the memory leaking and improper calls to ref_filename(). Also, remove some debugging code.
Richard Laager <rlaager@pidgin.im>
parents:
16446
diff
changeset
|
2229 | |
|
98363f6cdc6c
Fix the memory leaking and improper calls to ref_filename(). Also, remove some debugging code.
Richard Laager <rlaager@pidgin.im>
parents:
16446
diff
changeset
|
2230 | purple_imgstore_unref(custom_img); |
|
16900
e9f12eb06c5b
Rework purple_buddy_icons_find() to return a reference for the caller, which
Richard Laager <rlaager@pidgin.im>
parents:
16825
diff
changeset
|
2231 | purple_buddy_icon_unref(icon); |
|
16531
98363f6cdc6c
Fix the memory leaking and improper calls to ref_filename(). Also, remove some debugging code.
Richard Laager <rlaager@pidgin.im>
parents:
16446
diff
changeset
|
2232 | |
|
10482
01c1287da66f
[gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10477
diff
changeset
|
2233 | buf = gdk_pixbuf_loader_get_pixbuf(loader); |
|
01c1287da66f
[gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10477
diff
changeset
|
2234 | if (buf) |
|
01c1287da66f
[gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10477
diff
changeset
|
2235 | g_object_ref(G_OBJECT(buf)); |
|
01c1287da66f
[gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10477
diff
changeset
|
2236 | g_object_unref(G_OBJECT(loader)); |
|
01c1287da66f
[gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10477
diff
changeset
|
2237 | |
|
01c1287da66f
[gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10477
diff
changeset
|
2238 | if (buf) { |
| 10544 | 2239 | int orig_width, orig_height; |
| 2240 | int scale_width, scale_height; | |
| 2241 | ||
|
10482
01c1287da66f
[gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10477
diff
changeset
|
2242 | if (greyed) { |
| 15884 | 2243 | PurplePresence *presence = purple_buddy_get_presence(buddy); |
| 2244 | if (!PURPLE_BUDDY_IS_ONLINE(buddy)) | |
|
10482
01c1287da66f
[gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10477
diff
changeset
|
2245 | gdk_pixbuf_saturate_and_pixelate(buf, buf, 0.0, FALSE); |
| 15884 | 2246 | if (purple_presence_is_idle(presence)) |
|
10482
01c1287da66f
[gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10477
diff
changeset
|
2247 | gdk_pixbuf_saturate_and_pixelate(buf, buf, 0.25, FALSE); |
|
01c1287da66f
[gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10477
diff
changeset
|
2248 | } |
|
01c1287da66f
[gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10477
diff
changeset
|
2249 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
2250 | /* i'd use the pidgin_buddy_icon_get_scale_size() thing, |
| 10544 | 2251 | * but it won't tell me the original size, which I need for scaling |
| 2252 | * purposes */ | |
| 2253 | scale_width = orig_width = gdk_pixbuf_get_width(buf); | |
| 2254 | scale_height = orig_height = gdk_pixbuf_get_height(buf); | |
| 2255 | ||
| 15884 | 2256 | if (prpl_info && prpl_info->icon_spec.scale_rules & PURPLE_ICON_SCALE_DISPLAY) |
| 2257 | purple_buddy_icon_get_scale_size(&prpl_info->icon_spec, &scale_width, &scale_height); | |
| 10544 | 2258 | |
|
10482
01c1287da66f
[gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10477
diff
changeset
|
2259 | if (scaled) { |
| 10544 | 2260 | if(scale_height > scale_width) { |
|
15458
39c79dc7c965
A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
2261 | 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
|
2262 | scale_height = 32; |
| 10544 | 2263 | } else { |
|
15458
39c79dc7c965
A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
2264 | 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
|
2265 | scale_width = 32; |
| 10544 | 2266 | } |
| 2267 | ||
|
15458
39c79dc7c965
A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
2268 | ret = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, 32, 32); |
| 10544 | 2269 | gdk_pixbuf_fill(ret, 0x00000000); |
|
15458
39c79dc7c965
A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
2270 | 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
|
2271 | 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
|
2272 | roundify(ret); |
| 10483 | 2273 | } else { |
| 2274 | ret = gdk_pixbuf_scale_simple(buf,scale_width,scale_height, GDK_INTERP_BILINEAR); | |
| 2275 | } | |
| 10544 | 2276 | g_object_unref(G_OBJECT(buf)); |
|
10482
01c1287da66f
[gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10477
diff
changeset
|
2277 | } |
|
01c1287da66f
[gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10477
diff
changeset
|
2278 | |
| 10483 | 2279 | return ret; |
|
10482
01c1287da66f
[gaim-migrate @ 11772]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
10477
diff
changeset
|
2280 | } |
| 15503 | 2281 | /* # - Status Icon |
| 2282 | * P - Protocol Icon | |
| 2283 | * A - Buddy Icon | |
| 2284 | * [ - SMALL_SPACE | |
| 2285 | * = - LARGE_SPACE | |
| 2286 | * +--- STATUS_SIZE +--- td->avatar_width | |
| 2287 | * | +-- td->name_width | | |
| 2288 | * +----+ +-------+ +---------+ | |
| 2289 | * | | | | | | | |
| 2290 | * +-------------------------------------------+ | |
| 2291 | * | [ = [ |--- TOOLTIP_BORDER | |
| 2292 | *name_height --+-| ######[BuddyName = PP [ AAAAAAAAAAA |--+ | |
| 2293 | * | | ######[ = PP [ AAAAAAAAAAA | | | |
| 2294 | * STATUS SIZE -| | ######[[[[[[[[[[[[[[[[[[[[[ AAAAAAAAAAA | | | |
| 2295 | * +--+-| ######[Account: So-and-so [ AAAAAAAAAAA | |-- td->avatar_height | |
| 2296 | * | | [Idle: 4h 15m [ AAAAAAAAAAA | | | |
| 2297 | * height --+ | [Foo: Bar, Baz [ AAAAAAAAAAA | | | |
| 2298 | * | | [Status: Awesome [ AAAAAAAAAAA |--+ | |
| 2299 | * +----| [Stop: Hammer Time [ | | |
| 2300 | * | [ [ |--- TOOLTIP_BORDER | |
| 2301 | * +-------------------------------------------+ | |
| 2302 | * | | | | | |
| 2303 | * | +----------------+ | | |
| 2304 | * | | | | |
| 2305 | * | +-- td->width | | |
| 2306 | * | | | |
| 2307 | * +---- TOOLTIP_BORDER +---- TOOLTIP_BORDER | |
| 2308 | * | |
|
15692
ecda27df58b9
Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents:
15670
diff
changeset
|
2309 | * |
| 15503 | 2310 | */ |
|
15606
a070ac7366f8
Perhaps a 22px icon is better in the tooltip
Sean Egan <seanegan@pidgin.im>
parents:
15588
diff
changeset
|
2311 | #define STATUS_SIZE 22 |
| 15503 | 2312 | #define TOOLTIP_BORDER 12 |
| 2313 | #define SMALL_SPACE 6 | |
| 2314 | #define LARGE_SPACE 12 | |
|
15692
ecda27df58b9
Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents:
15670
diff
changeset
|
2315 | #define PRPL_SIZE 16 |
| 11890 | 2316 | struct tooltip_data { |
| 15509 | 2317 | PangoLayout *layout; |
| 15503 | 2318 | PangoLayout *name_layout; |
| 2319 | GdkPixbuf *prpl_icon; | |
| 15509 | 2320 | GdkPixbuf *status_icon; |
| 2321 | GdkPixbuf *avatar; | |
| 2322 | gboolean avatar_is_prpl_icon; | |
| 15503 | 2323 | int avatar_width; |
| 15509 | 2324 | int avatar_height; |
| 15503 | 2325 | int name_height; |
| 2326 | int name_width; | |
| 15509 | 2327 | int width; |
| 2328 | int height; | |
| 11890 | 2329 | }; |
| 2330 | ||
| 15884 | 2331 | static struct tooltip_data * create_tip_for_node(PurpleBlistNode *node, gboolean full) |
| 11890 | 2332 | { |
| 15509 | 2333 | char *tooltip_text = NULL; |
| 2334 | struct tooltip_data *td = g_new0(struct tooltip_data, 1); | |
| 15884 | 2335 | PurpleAccount *account = NULL; |
| 15503 | 2336 | char *tmp, *node_name; |
|
15458
39c79dc7c965
A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
2337 | |
| 15884 | 2338 | if(PURPLE_BLIST_NODE_IS_BUDDY(node)) { |
| 2339 | account = ((PurpleBuddy*)(node))->account; | |
| 2340 | } else if(PURPLE_BLIST_NODE_IS_CHAT(node)) { | |
| 2341 | account = ((PurpleChat*)(node))->account; | |
| 15509 | 2342 | } |
| 2343 | ||
|
15569
e85adc8d3b5c
gtkblist changes to pidgin
Sean Egan <seanegan@pidgin.im>
parents:
15568
diff
changeset
|
2344 | 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
|
2345 | 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
|
2346 | td->prpl_icon = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_SMALL); |
| 15882 | 2347 | tooltip_text = pidgin_get_tooltip_text(node, full); |
| 15509 | 2348 | td->layout = gtk_widget_create_pango_layout(gtkblist->tipwindow, NULL); |
| 15503 | 2349 | td->name_layout = gtk_widget_create_pango_layout(gtkblist->tipwindow, NULL); |
| 2350 | ||
| 15884 | 2351 | if (PURPLE_BLIST_NODE_IS_BUDDY(node)) |
| 2352 | tmp = g_markup_escape_text(purple_buddy_get_name((PurpleBuddy*)node), -1); | |
| 15503 | 2353 | else |
| 15884 | 2354 | tmp = g_markup_escape_text(purple_chat_get_name((PurpleChat*)node), -1); |
| 15503 | 2355 | 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
|
2356 | g_free(tmp); |
| 15503 | 2357 | |
| 15509 | 2358 | pango_layout_set_markup(td->layout, tooltip_text, -1); |
| 2359 | pango_layout_set_wrap(td->layout, PANGO_WRAP_WORD); | |
| 2360 | pango_layout_set_width(td->layout, 300000); | |
| 2361 | ||
| 15503 | 2362 | pango_layout_get_size (td->layout, &td->width, &td->height); |
| 2363 | td->width = PANGO_PIXELS(td->width); | |
| 15509 | 2364 | td->height = PANGO_PIXELS(td->height); |
| 15503 | 2365 | |
| 2366 | pango_layout_set_markup(td->name_layout, node_name, -1); | |
| 2367 | pango_layout_set_wrap(td->name_layout, PANGO_WRAP_WORD); | |
| 2368 | pango_layout_set_width(td->name_layout, 300000); | |
| 2369 | ||
| 2370 | pango_layout_get_size (td->name_layout, &td->name_width, &td->name_height); | |
| 15509 | 2371 | td->name_width = PANGO_PIXELS(td->name_width) + SMALL_SPACE + PRPL_SIZE; |
| 15503 | 2372 | td->name_height = MAX(PANGO_PIXELS(td->name_height), PRPL_SIZE + SMALL_SPACE); |
| 15526 | 2373 | #if 0 /* PRPL Icon as avatar */ |
| 15509 | 2374 | if(!td->avatar && full) { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
2375 | td->avatar = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_LARGE); |
| 15503 | 2376 | td->avatar_is_prpl_icon = TRUE; |
| 2377 | } | |
| 15526 | 2378 | #endif |
|
15769
813f36d31f6c
Fix asserts when there is no buddy icon
Daniel Atallah <datallah@pidgin.im>
parents:
15692
diff
changeset
|
2379 | |
|
813f36d31f6c
Fix asserts when there is no buddy icon
Daniel Atallah <datallah@pidgin.im>
parents:
15692
diff
changeset
|
2380 | if (td->avatar) { |
|
813f36d31f6c
Fix asserts when there is no buddy icon
Daniel Atallah <datallah@pidgin.im>
parents:
15692
diff
changeset
|
2381 | 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
|
2382 | 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
|
2383 | } |
| 15509 | 2384 | |
|
15550
d710f85e6d0e
A small memory leak in the tooltip.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15546
diff
changeset
|
2385 | g_free(node_name); |
| 15509 | 2386 | g_free(tooltip_text); |
| 2387 | return td; | |
|
15458
39c79dc7c965
A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
2388 | } |
|
39c79dc7c965
A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
2389 | |
| 15884 | 2390 | static void pidgin_blist_paint_tip(GtkWidget *widget, GdkEventExpose *event, PurpleBlistNode *node) |
| 5228 | 2391 | { |
| 15509 | 2392 | GtkStyle *style; |
| 2393 | 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
|
2394 | int max_text_width; |
|
15546
f320e2b2a6e8
fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents:
15545
diff
changeset
|
2395 | int max_avatar_width; |
| 15509 | 2396 | GList *l; |
| 15526 | 2397 | int prpl_col = 0; |
| 15644 | 2398 | GtkTextDirection dir = gtk_widget_get_direction(widget); |
|
15692
ecda27df58b9
Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents:
15670
diff
changeset
|
2399 | |
| 15509 | 2400 | if(gtkblist->tooltipdata == NULL) |
| 2401 | return; | |
| 2402 | ||
| 2403 | style = gtkblist->tipwindow->style; | |
| 2404 | gtk_paint_flat_box(style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, GTK_SHADOW_OUT, | |
| 2405 | NULL, gtkblist->tipwindow, "tooltip", 0, 0, -1, -1); | |
| 2406 | ||
|
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
|
2407 | max_text_width = 0; |
|
15546
f320e2b2a6e8
fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents:
15545
diff
changeset
|
2408 | max_avatar_width = 0; |
|
15545
46584790b5f0
really fix that tooltip display glitch
Nathan Walp <nwalp@pidgin.im>
parents:
15544
diff
changeset
|
2409 | |
| 15509 | 2410 | for(l = gtkblist->tooltipdata; l; l = l->next) |
| 2411 | { | |
| 2412 | struct tooltip_data *td = l->data; | |
|
15546
f320e2b2a6e8
fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents:
15545
diff
changeset
|
2413 | |
|
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
|
2414 | 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
|
2415 | MAX(td->width, td->name_width)); |
|
15546
f320e2b2a6e8
fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents:
15545
diff
changeset
|
2416 | 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
|
2417 | } |
|
f320e2b2a6e8
fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents:
15545
diff
changeset
|
2418 | |
|
f320e2b2a6e8
fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents:
15545
diff
changeset
|
2419 | max_width = TOOLTIP_BORDER + STATUS_SIZE + SMALL_SPACE + max_text_width + SMALL_SPACE + max_avatar_width + TOOLTIP_BORDER; |
| 15644 | 2420 | if (dir == GTK_TEXT_DIR_RTL) |
| 2421 | prpl_col = TOOLTIP_BORDER + max_avatar_width + SMALL_SPACE; | |
| 2422 | else | |
| 2423 | prpl_col = TOOLTIP_BORDER + STATUS_SIZE + SMALL_SPACE + max_text_width - PRPL_SIZE; | |
| 15509 | 2424 | |
| 2425 | current_height = 12; | |
| 2426 | for(l = gtkblist->tooltipdata; l; l = l->next) | |
| 2427 | { | |
| 2428 | struct tooltip_data *td = l->data; | |
| 2429 | ||
| 15568 | 2430 | 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
|
2431 | { |
| 15644 | 2432 | if (dir == GTK_TEXT_DIR_RTL) |
| 2433 | gtk_paint_flat_box(style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, GTK_SHADOW_OUT, | |
| 2434 | NULL, gtkblist->tipwindow, "tooltip", | |
| 2435 | TOOLTIP_BORDER -1, current_height -1, td->avatar_width +2, td->avatar_height + 2); | |
| 2436 | else | |
| 2437 | gtk_paint_flat_box(style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, GTK_SHADOW_OUT, | |
| 2438 | NULL, gtkblist->tipwindow, "tooltip", | |
| 2439 | max_width - (td->avatar_width+ TOOLTIP_BORDER)-1, | |
| 2440 | 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
|
2441 | } |
|
15458
39c79dc7c965
A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
2442 | |
| 5228 | 2443 | #if GTK_CHECK_VERSION(2,2,0) |
| 15644 | 2444 | if (dir == GTK_TEXT_DIR_RTL) |
| 2445 | gdk_draw_pixbuf(GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, td->status_icon, | |
| 2446 | 0, 0, max_width - TOOLTIP_BORDER - STATUS_SIZE, current_height, -1, -1, GDK_RGB_DITHER_NONE, 0, 0); | |
| 2447 | else | |
| 2448 | gdk_draw_pixbuf(GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, td->status_icon, | |
| 2449 | 0, 0, TOOLTIP_BORDER, current_height, -1 , -1, GDK_RGB_DITHER_NONE, 0, 0); | |
| 15509 | 2450 | 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
|
2451 | { |
| 15644 | 2452 | if (dir == GTK_TEXT_DIR_RTL) |
| 2453 | gdk_draw_pixbuf(GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, | |
| 2454 | td->avatar, 0, 0, TOOLTIP_BORDER, current_height, -1, -1, GDK_RGB_DITHER_NONE, 0, 0); | |
| 2455 | else | |
| 2456 | gdk_draw_pixbuf(GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, | |
| 2457 | td->avatar, 0, 0, max_width - (td->avatar_width + TOOLTIP_BORDER), | |
| 2458 | 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
|
2459 | } |
|
47e9eddcf323
Add some braces to eliminate a compiler warning about an ambiguous else.
Richard Laager <rlaager@pidgin.im>
parents:
15644
diff
changeset
|
2460 | |
| 15509 | 2461 | if (!td->avatar_is_prpl_icon) |
| 15503 | 2462 | gdk_draw_pixbuf(GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, td->prpl_icon, |
| 15509 | 2463 | 0, 0, |
| 15526 | 2464 | prpl_col, |
| 15503 | 2465 | current_height + ((td->name_height / 2) - (PRPL_SIZE / 2)), |
| 15509 | 2466 | -1 , -1, GDK_RGB_DITHER_NONE, 0, 0); |
| 2467 | ||
| 5228 | 2468 | #else |
| 15509 | 2469 | 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); |
| 2470 | if(td->avatar) | |
| 2471 | gdk_pixbuf_render_to_drawable(td->avatar, | |
| 2472 | 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
|
2473 | max_width - (td->avatar_width + TOOLTIP_BORDER), |
| 15509 | 2474 | current_height, -1, -1, GDK_RGB_DITHER_NONE, 0, 0); |
| 5228 | 2475 | #endif |
| 15644 | 2476 | if (dir == GTK_TEXT_DIR_RTL) { |
| 2477 | gtk_paint_layout(style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, FALSE, | |
| 2478 | NULL, gtkblist->tipwindow, "tooltip", | |
|
15692
ecda27df58b9
Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents:
15670
diff
changeset
|
2479 | max_width -(TOOLTIP_BORDER + STATUS_SIZE +SMALL_SPACE) - PANGO_PIXELS(300000), |
| 15644 | 2480 | current_height, td->name_layout); |
| 2481 | } else { | |
| 2482 | gtk_paint_layout (style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, FALSE, | |
| 2483 | NULL, gtkblist->tipwindow, "tooltip", | |
| 2484 | TOOLTIP_BORDER + STATUS_SIZE + SMALL_SPACE, current_height, td->name_layout); | |
| 2485 | } | |
| 2486 | if (dir != GTK_TEXT_DIR_RTL) { | |
| 2487 | gtk_paint_layout (style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, FALSE, | |
| 2488 | NULL, gtkblist->tipwindow, "tooltip", | |
| 2489 | TOOLTIP_BORDER + STATUS_SIZE + SMALL_SPACE, current_height + td->name_height, td->layout); | |
| 2490 | } else { | |
| 2491 | gtk_paint_layout(style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, FALSE, | |
| 2492 | NULL, gtkblist->tipwindow, "tooltip", | |
| 2493 | max_width - (TOOLTIP_BORDER + STATUS_SIZE + SMALL_SPACE) - PANGO_PIXELS(300000), | |
| 2494 | current_height + td->name_height, | |
| 2495 | td->layout); | |
| 2496 | } | |
|
15539
b204042fba24
fix overlapping in tooltips w/ large avatars
Nathan Walp <nwalp@pidgin.im>
parents:
15526
diff
changeset
|
2497 | |
|
b204042fba24
fix overlapping in tooltips w/ large avatars
Nathan Walp <nwalp@pidgin.im>
parents:
15526
diff
changeset
|
2498 | current_height += MAX(td->name_height + td->height, td->avatar_height) + TOOLTIP_BORDER; |
| 15509 | 2499 | } |
|
15458
39c79dc7c965
A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
2500 | } |
|
39c79dc7c965
A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
2501 | |
| 5228 | 2502 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
2503 | static void pidgin_blist_tooltip_destroy() |
|
8254
3b3d86ef983b
[gaim-migrate @ 8977]
Mark Doliner <markdoliner@pidgin.im>
parents:
8252
diff
changeset
|
2504 | { |
| 11890 | 2505 | while(gtkblist->tooltipdata) { |
| 2506 | struct tooltip_data *td = gtkblist->tooltipdata->data; | |
| 2507 | ||
| 2508 | if(td->avatar) | |
| 2509 | g_object_unref(td->avatar); | |
| 2510 | if(td->status_icon) | |
| 2511 | g_object_unref(td->status_icon); | |
| 15503 | 2512 | if(td->prpl_icon) |
| 2513 | g_object_unref(td->prpl_icon); | |
| 11890 | 2514 | g_object_unref(td->layout); |
| 15503 | 2515 | g_object_unref(td->name_layout); |
| 11890 | 2516 | g_free(td); |
| 2517 | gtkblist->tooltipdata = g_list_delete_link(gtkblist->tooltipdata, gtkblist->tooltipdata); | |
| 2518 | } | |
|
11636
7512e00792be
[gaim-migrate @ 13912]
Mark Doliner <markdoliner@pidgin.im>
parents:
11634
diff
changeset
|
2519 | |
|
8254
3b3d86ef983b
[gaim-migrate @ 8977]
Mark Doliner <markdoliner@pidgin.im>
parents:
8252
diff
changeset
|
2520 | if (gtkblist->tipwindow == NULL) |
|
3b3d86ef983b
[gaim-migrate @ 8977]
Mark Doliner <markdoliner@pidgin.im>
parents:
8252
diff
changeset
|
2521 | return; |
|
3b3d86ef983b
[gaim-migrate @ 8977]
Mark Doliner <markdoliner@pidgin.im>
parents:
8252
diff
changeset
|
2522 | |
|
3b3d86ef983b
[gaim-migrate @ 8977]
Mark Doliner <markdoliner@pidgin.im>
parents:
8252
diff
changeset
|
2523 | gtk_widget_destroy(gtkblist->tipwindow); |
|
3b3d86ef983b
[gaim-migrate @ 8977]
Mark Doliner <markdoliner@pidgin.im>
parents:
8252
diff
changeset
|
2524 | gtkblist->tipwindow = NULL; |
|
3b3d86ef983b
[gaim-migrate @ 8977]
Mark Doliner <markdoliner@pidgin.im>
parents:
8252
diff
changeset
|
2525 | } |
|
3b3d86ef983b
[gaim-migrate @ 8977]
Mark Doliner <markdoliner@pidgin.im>
parents:
8252
diff
changeset
|
2526 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
2527 | static gboolean pidgin_blist_expand_timeout(GtkWidget *tv) |
| 10354 | 2528 | { |
| 2529 | GtkTreePath *path; | |
| 2530 | GtkTreeIter iter; | |
| 15884 | 2531 | PurpleBlistNode *node; |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
2532 | GValue val; |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
2533 | struct _pidgin_blist_node *gtknode; |
| 10354 | 2534 | |
| 2535 | if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), gtkblist->tip_rect.x, gtkblist->tip_rect.y, &path, NULL, NULL, NULL)) | |
| 2536 | return FALSE; | |
| 2537 | 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
|
2538 | val.g_type = 0; |
| 10354 | 2539 | gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val); |
| 2540 | node = g_value_get_pointer(&val); | |
| 2541 | ||
| 15884 | 2542 | if(!PURPLE_BLIST_NODE_IS_CONTACT(node)) { |
|
10504
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10501
diff
changeset
|
2543 | gtk_tree_path_free(path); |
| 10354 | 2544 | return FALSE; |
|
10504
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10501
diff
changeset
|
2545 | } |
| 10354 | 2546 | |
| 2547 | gtknode = node->ui_data; | |
| 2548 | ||
| 2549 | if (!gtknode->contact_expanded) { | |
| 2550 | GtkTreeIter i; | |
|
10382
32e07712e224
[gaim-migrate @ 11608]
Luke Schierer <lschiere@pidgin.im>
parents:
10357
diff
changeset
|
2551 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
2552 | pidgin_blist_expand_contact_cb(NULL, node); |
|
10382
32e07712e224
[gaim-migrate @ 11608]
Luke Schierer <lschiere@pidgin.im>
parents:
10357
diff
changeset
|
2553 | |
| 10354 | 2554 | gtk_tree_view_get_cell_area(GTK_TREE_VIEW(tv), path, NULL, >kblist->contact_rect); |
| 2555 | gdk_drawable_get_size(GDK_DRAWABLE(tv->window), &(gtkblist->contact_rect.width), NULL); | |
| 2556 | gtkblist->mouseover_contact = node; | |
| 2557 | gtk_tree_path_down (path); | |
| 2558 | while (gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &i, path)) { | |
| 2559 | GdkRectangle rect; | |
| 2560 | gtk_tree_view_get_cell_area(GTK_TREE_VIEW(tv), path, NULL, &rect); | |
| 2561 | gtkblist->contact_rect.height += rect.height; | |
| 2562 | gtk_tree_path_next(path); | |
| 2563 | } | |
| 2564 | } | |
| 2565 | gtk_tree_path_free(path); | |
| 2566 | return FALSE; | |
| 2567 | } | |
| 2568 | ||
| 15884 | 2569 | static gboolean buddy_is_displayable(PurpleBuddy *buddy) |
| 11890 | 2570 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
2571 | struct _pidgin_blist_node *gtknode; |
| 11910 | 2572 | |
| 2573 | if(!buddy) | |
| 2574 | return FALSE; | |
| 2575 | ||
| 15884 | 2576 | gtknode = ((PurpleBlistNode*)buddy)->ui_data; |
| 2577 | ||
| 2578 | return (purple_account_is_connected(buddy->account) && | |
| 2579 | (purple_presence_is_online(buddy->presence) || | |
| 11910 | 2580 | (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
|
2581 | purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_offline_buddies") || |
| 15884 | 2582 | purple_blist_node_get_bool((PurpleBlistNode*)buddy, "show_offline"))); |
| 11890 | 2583 | } |
| 2584 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
2585 | static gboolean pidgin_blist_tooltip_timeout(GtkWidget *tv) |
| 5228 | 2586 | { |
| 2587 | GtkTreePath *path; | |
| 2588 | GtkTreeIter iter; | |
| 15884 | 2589 | PurpleBlistNode *node; |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
2590 | GValue val; |
|
9869
22c820135ca5
[gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9834
diff
changeset
|
2591 | int scr_w, scr_h, w, h, x, y; |
|
22c820135ca5
[gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9834
diff
changeset
|
2592 | #if GTK_CHECK_VERSION(2,2,0) |
|
22c820135ca5
[gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9834
diff
changeset
|
2593 | int mon_num; |
|
22c820135ca5
[gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9834
diff
changeset
|
2594 | GdkScreen *screen = NULL; |
|
22c820135ca5
[gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9834
diff
changeset
|
2595 | #endif |
| 7636 | 2596 | gboolean tooltip_top = FALSE; |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
2597 | struct _pidgin_blist_node *gtknode; |
|
9773
68834782c27a
[gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents:
9770
diff
changeset
|
2598 | GdkRectangle mon_size; |
| 5228 | 2599 | |
|
11636
7512e00792be
[gaim-migrate @ 13912]
Mark Doliner <markdoliner@pidgin.im>
parents:
11634
diff
changeset
|
2600 | /* |
|
7512e00792be
[gaim-migrate @ 13912]
Mark Doliner <markdoliner@pidgin.im>
parents:
11634
diff
changeset
|
2601 | * Attempt to free the previous tooltip. I have a feeling |
|
7512e00792be
[gaim-migrate @ 13912]
Mark Doliner <markdoliner@pidgin.im>
parents:
11634
diff
changeset
|
2602 | * this is never needed... but just in case. |
|
7512e00792be
[gaim-migrate @ 13912]
Mark Doliner <markdoliner@pidgin.im>
parents:
11634
diff
changeset
|
2603 | */ |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
2604 | pidgin_blist_tooltip_destroy(); |
|
11636
7512e00792be
[gaim-migrate @ 13912]
Mark Doliner <markdoliner@pidgin.im>
parents:
11634
diff
changeset
|
2605 | |
| 7636 | 2606 | 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 | 2607 | return FALSE; |
| 2608 | 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
|
2609 | val.g_type = 0; |
| 5228 | 2610 | gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val); |
| 2611 | node = g_value_get_pointer(&val); | |
| 7620 | 2612 | |
|
10504
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10501
diff
changeset
|
2613 | gtk_tree_path_free(path); |
|
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10501
diff
changeset
|
2614 | |
| 11890 | 2615 | gtkblist->tipwindow = gtk_window_new(GTK_WINDOW_POPUP); |
| 2616 | ||
| 15884 | 2617 | if(PURPLE_BLIST_NODE_IS_CHAT(node) || PURPLE_BLIST_NODE_IS_BUDDY(node)) { |
| 12530 | 2618 | struct tooltip_data *td = create_tip_for_node(node, TRUE); |
| 11890 | 2619 | 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
|
2620 | w = TOOLTIP_BORDER + STATUS_SIZE + SMALL_SPACE + |
| 15503 | 2621 | 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
|
2622 | h = TOOLTIP_BORDER + MAX(td->height + td->name_height, MAX(STATUS_SIZE, td->avatar_height)) |
| 15503 | 2623 | + TOOLTIP_BORDER; |
| 15884 | 2624 | } else if(PURPLE_BLIST_NODE_IS_CONTACT(node)) { |
| 2625 | PurpleBlistNode *child; | |
| 2626 | 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
|
2627 | int max_text_width = 0; |
|
f320e2b2a6e8
fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents:
15545
diff
changeset
|
2628 | int max_avatar_width = 0; |
| 11890 | 2629 | w = h = 0; |
|
15545
46584790b5f0
really fix that tooltip display glitch
Nathan Walp <nwalp@pidgin.im>
parents:
15544
diff
changeset
|
2630 | |
| 12530 | 2631 | for(child = node->child; child; child = child->next) |
| 11890 | 2632 | { |
| 15884 | 2633 | if(PURPLE_BLIST_NODE_IS_BUDDY(child) && buddy_is_displayable((PurpleBuddy*)child)) { |
| 2634 | struct tooltip_data *td = create_tip_for_node(child, (b == (PurpleBuddy*)child)); | |
| 2635 | if (b == (PurpleBuddy *)child) { | |
|
11988
7ed733ed806b
[gaim-migrate @ 14281]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11986
diff
changeset
|
2636 | gtkblist->tooltipdata = g_list_prepend(gtkblist->tooltipdata, td); |
|
7ed733ed806b
[gaim-migrate @ 14281]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11986
diff
changeset
|
2637 | } else { |
|
7ed733ed806b
[gaim-migrate @ 14281]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11986
diff
changeset
|
2638 | gtkblist->tooltipdata = g_list_append(gtkblist->tooltipdata, td); |
|
7ed733ed806b
[gaim-migrate @ 14281]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11986
diff
changeset
|
2639 | } |
|
15546
f320e2b2a6e8
fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents:
15545
diff
changeset
|
2640 | 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
|
2641 | max_avatar_width = MAX(max_avatar_width, td->avatar_width); |
| 16159 | 2642 | h += MAX(TOOLTIP_BORDER + MAX(STATUS_SIZE,td->avatar_height), |
| 2643 | TOOLTIP_BORDER + td->height + td->name_height); | |
|
15545
46584790b5f0
really fix that tooltip display glitch
Nathan Walp <nwalp@pidgin.im>
parents:
15544
diff
changeset
|
2644 | } |
|
46584790b5f0
really fix that tooltip display glitch
Nathan Walp <nwalp@pidgin.im>
parents:
15544
diff
changeset
|
2645 | } |
| 16159 | 2646 | h += TOOLTIP_BORDER; |
|
15546
f320e2b2a6e8
fix the display bug a bit smarter
Nathan Walp <nwalp@pidgin.im>
parents:
15545
diff
changeset
|
2647 | w = TOOLTIP_BORDER + STATUS_SIZE + SMALL_SPACE + max_text_width + SMALL_SPACE + max_avatar_width + TOOLTIP_BORDER; |
| 11890 | 2648 | } else { |
| 2649 | gtk_widget_destroy(gtkblist->tipwindow); | |
| 11892 | 2650 | gtkblist->tipwindow = NULL; |
| 5234 | 2651 | return FALSE; |
| 11890 | 2652 | } |
| 2653 | ||
| 2654 | if (gtkblist->tooltipdata == NULL) { | |
| 2655 | gtk_widget_destroy(gtkblist->tipwindow); | |
| 11892 | 2656 | gtkblist->tipwindow = NULL; |
| 11890 | 2657 | return FALSE; |
| 2658 | } | |
| 5228 | 2659 | |
| 7636 | 2660 | gtknode = node->ui_data; |
| 2661 | ||
| 5234 | 2662 | gtk_widget_set_app_paintable(gtkblist->tipwindow, TRUE); |
| 2663 | gtk_window_set_resizable(GTK_WINDOW(gtkblist->tipwindow), FALSE); | |
| 2664 | gtk_widget_set_name(gtkblist->tipwindow, "gtk-tooltips"); | |
| 2665 | 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
|
2666 | G_CALLBACK(pidgin_blist_paint_tip), NULL); |
| 5234 | 2667 | gtk_widget_ensure_style (gtkblist->tipwindow); |
| 7837 | 2668 | |
|
9773
68834782c27a
[gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents:
9770
diff
changeset
|
2669 | |
|
9869
22c820135ca5
[gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9834
diff
changeset
|
2670 | #if GTK_CHECK_VERSION(2,2,0) |
|
9773
68834782c27a
[gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents:
9770
diff
changeset
|
2671 | 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
|
2672 | mon_num = gdk_screen_get_monitor_at_point(screen, x, y); |
|
68834782c27a
[gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents:
9770
diff
changeset
|
2673 | gdk_screen_get_monitor_geometry(screen, mon_num, &mon_size); |
|
68834782c27a
[gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents:
9770
diff
changeset
|
2674 | |
|
68834782c27a
[gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents:
9770
diff
changeset
|
2675 | scr_w = mon_size.width + mon_size.x; |
|
68834782c27a
[gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents:
9770
diff
changeset
|
2676 | scr_h = mon_size.height + mon_size.y; |
|
9869
22c820135ca5
[gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9834
diff
changeset
|
2677 | #else |
|
22c820135ca5
[gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9834
diff
changeset
|
2678 | scr_w = gdk_screen_width(); |
|
22c820135ca5
[gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9834
diff
changeset
|
2679 | scr_h = gdk_screen_height(); |
|
22c820135ca5
[gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9834
diff
changeset
|
2680 | gdk_window_get_pointer(NULL, &x, &y, NULL); |
|
22c820135ca5
[gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9834
diff
changeset
|
2681 | mon_size.x = 0; |
|
22c820135ca5
[gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9834
diff
changeset
|
2682 | mon_size.y = 0; |
|
22c820135ca5
[gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9834
diff
changeset
|
2683 | #endif |
|
9773
68834782c27a
[gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents:
9770
diff
changeset
|
2684 | |
|
9869
22c820135ca5
[gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9834
diff
changeset
|
2685 | #if GTK_CHECK_VERSION(2,2,0) |
|
10046
7e9175ee9b63
[gaim-migrate @ 11007]
Mark Doliner <markdoliner@pidgin.im>
parents:
10036
diff
changeset
|
2686 | if (w > mon_size.width) |
|
9773
68834782c27a
[gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents:
9770
diff
changeset
|
2687 | w = mon_size.width - 10; |
|
68834782c27a
[gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents:
9770
diff
changeset
|
2688 | |
|
10046
7e9175ee9b63
[gaim-migrate @ 11007]
Mark Doliner <markdoliner@pidgin.im>
parents:
10036
diff
changeset
|
2689 | if (h > mon_size.height) |
|
9773
68834782c27a
[gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents:
9770
diff
changeset
|
2690 | h = mon_size.height - 10; |
|
9869
22c820135ca5
[gaim-migrate @ 10748]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9834
diff
changeset
|
2691 | #endif |
|
9773
68834782c27a
[gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents:
9770
diff
changeset
|
2692 | |
| 5234 | 2693 | if (GTK_WIDGET_NO_WINDOW(gtkblist->window)) |
| 2694 | y+=gtkblist->window->allocation.y; | |
| 2695 | ||
| 2696 | x -= ((w >> 1) + 4); | |
| 5228 | 2697 | |
| 7636 | 2698 | if ((y + h + 4) > scr_h || tooltip_top) |
| 7620 | 2699 | y = y - h - 5; |
| 5234 | 2700 | else |
| 2701 | y = y + 6; | |
| 7620 | 2702 | |
|
9773
68834782c27a
[gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents:
9770
diff
changeset
|
2703 | if (y < mon_size.y) |
|
68834782c27a
[gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents:
9770
diff
changeset
|
2704 | y = mon_size.y; |
|
68834782c27a
[gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents:
9770
diff
changeset
|
2705 | |
|
68834782c27a
[gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents:
9770
diff
changeset
|
2706 | if (y != mon_size.y) { |
| 7719 | 2707 | if ((x + w) > scr_w) |
| 2708 | x -= (x + w + 5) - scr_w; | |
|
9773
68834782c27a
[gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents:
9770
diff
changeset
|
2709 | else if (x < mon_size.x) |
|
68834782c27a
[gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents:
9770
diff
changeset
|
2710 | x = mon_size.x; |
| 7719 | 2711 | } else { |
| 2712 | x -= (w / 2 + 10); | |
|
9773
68834782c27a
[gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents:
9770
diff
changeset
|
2713 | if (x < mon_size.x) |
|
68834782c27a
[gaim-migrate @ 10641]
Mark Doliner <markdoliner@pidgin.im>
parents:
9770
diff
changeset
|
2714 | x = mon_size.x; |
| 7719 | 2715 | } |
| 2716 | ||
| 5234 | 2717 | gtk_widget_set_size_request(gtkblist->tipwindow, w, h); |
| 2718 | gtk_window_move(GTK_WINDOW(gtkblist->tipwindow), x, y); | |
| 2719 | gtk_widget_show(gtkblist->tipwindow); | |
| 5228 | 2720 | |
| 2721 | return FALSE; | |
| 2722 | } | |
| 2723 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
2724 | static gboolean pidgin_blist_drag_motion_cb(GtkWidget *tv, GdkDragContext *drag_context, |
| 10354 | 2725 | gint x, gint y, guint time, gpointer user_data) |
| 2726 | { | |
| 2727 | GtkTreePath *path; | |
| 2728 | int delay; | |
| 2729 | ||
|
12679
42fa0799eef6
[gaim-migrate @ 15022]
Mark Doliner <markdoliner@pidgin.im>
parents:
12656
diff
changeset
|
2730 | /* |
|
42fa0799eef6
[gaim-migrate @ 15022]
Mark Doliner <markdoliner@pidgin.im>
parents:
12656
diff
changeset
|
2731 | * 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
|
2732 | * the contact auto-expands. |
|
42fa0799eef6
[gaim-migrate @ 15022]
Mark Doliner <markdoliner@pidgin.im>
parents:
12656
diff
changeset
|
2733 | */ |
|
42fa0799eef6
[gaim-migrate @ 15022]
Mark Doliner <markdoliner@pidgin.im>
parents:
12656
diff
changeset
|
2734 | delay = 900; |
| 10354 | 2735 | |
| 2736 | if (gtkblist->drag_timeout) { | |
| 2737 | if ((y > gtkblist->tip_rect.y) && ((y - gtkblist->tip_rect.height) < gtkblist->tip_rect.y)) | |
| 2738 | return FALSE; | |
| 2739 | /* We've left the cell. Remove the timeout and create a new one below */ | |
| 2740 | g_source_remove(gtkblist->drag_timeout); | |
| 2741 | } | |
| 2742 | ||
| 2743 | gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), x, y, &path, NULL, NULL, NULL); | |
| 2744 | gtk_tree_view_get_cell_area(GTK_TREE_VIEW(tv), path, NULL, >kblist->tip_rect); | |
| 2745 | ||
| 2746 | if (path) | |
| 2747 | gtk_tree_path_free(path); | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
2748 | gtkblist->drag_timeout = g_timeout_add(delay, (GSourceFunc)pidgin_blist_expand_timeout, tv); |
| 10354 | 2749 | |
| 2750 | if (gtkblist->mouseover_contact) { | |
| 2751 | 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
|
2752 | pidgin_blist_collapse_contact_cb(NULL, gtkblist->mouseover_contact); |
| 10354 | 2753 | gtkblist->mouseover_contact = NULL; |
| 2754 | } | |
| 2755 | } | |
| 2756 | ||
| 2757 | return FALSE; | |
| 2758 | } | |
| 2759 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
2760 | static gboolean pidgin_blist_motion_cb (GtkWidget *tv, GdkEventMotion *event, gpointer null) |
| 5228 | 2761 | { |
| 2762 | GtkTreePath *path; | |
|
8470
100fc1feea95
[gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents:
8444
diff
changeset
|
2763 | int delay; |
|
100fc1feea95
[gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents:
8444
diff
changeset
|
2764 | |
|
16123
8b98683319e7
Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16071
diff
changeset
|
2765 | 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
|
2766 | |
|
100fc1feea95
[gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents:
8444
diff
changeset
|
2767 | if (delay == 0) |
|
100fc1feea95
[gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents:
8444
diff
changeset
|
2768 | return FALSE; |
| 8083 | 2769 | |
| 5228 | 2770 | if (gtkblist->timeout) { |
| 7636 | 2771 | if ((event->y > gtkblist->tip_rect.y) && ((event->y - gtkblist->tip_rect.height) < gtkblist->tip_rect.y)) |
| 5228 | 2772 | return FALSE; |
| 2773 | /* 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
|
2774 | pidgin_blist_tooltip_destroy(); |
| 5228 | 2775 | g_source_remove(gtkblist->timeout); |
| 2776 | } | |
|
8470
100fc1feea95
[gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents:
8444
diff
changeset
|
2777 | |
| 5228 | 2778 | gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), event->x, event->y, &path, NULL, NULL, NULL); |
| 7636 | 2779 | gtk_tree_view_get_cell_area(GTK_TREE_VIEW(tv), path, NULL, >kblist->tip_rect); |
|
8470
100fc1feea95
[gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents:
8444
diff
changeset
|
2780 | |
| 5228 | 2781 | if (path) |
| 2782 | gtk_tree_path_free(path); | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
2783 | gtkblist->timeout = g_timeout_add(delay, (GSourceFunc)pidgin_blist_tooltip_timeout, tv); |
| 7636 | 2784 | |
| 2785 | if (gtkblist->mouseover_contact) { | |
| 2786 | 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
|
2787 | pidgin_blist_collapse_contact_cb(NULL, gtkblist->mouseover_contact); |
| 7636 | 2788 | gtkblist->mouseover_contact = NULL; |
| 2789 | } | |
| 2790 | } | |
|
8470
100fc1feea95
[gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents:
8444
diff
changeset
|
2791 | |
| 5228 | 2792 | return FALSE; |
| 2793 | } | |
| 2794 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
2795 | static void pidgin_blist_leave_cb (GtkWidget *w, GdkEventCrossing *e, gpointer n) |
| 5228 | 2796 | { |
| 8083 | 2797 | |
| 5228 | 2798 | if (gtkblist->timeout) { |
| 2799 | g_source_remove(gtkblist->timeout); | |
| 2800 | gtkblist->timeout = 0; | |
| 2801 | } | |
|
10382
32e07712e224
[gaim-migrate @ 11608]
Luke Schierer <lschiere@pidgin.im>
parents:
10357
diff
changeset
|
2802 | |
| 10354 | 2803 | if (gtkblist->drag_timeout) { |
| 2804 | g_source_remove(gtkblist->drag_timeout); | |
| 2805 | gtkblist->drag_timeout = 0; | |
| 2806 | } | |
| 2807 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
2808 | pidgin_blist_tooltip_destroy(); |
| 7720 | 2809 | |
|
8470
100fc1feea95
[gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents:
8444
diff
changeset
|
2810 | if (gtkblist->mouseover_contact && |
|
9811
2cbca162a09f
[gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents:
9791
diff
changeset
|
2811 | !((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
|
2812 | (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
|
2813 | pidgin_blist_collapse_contact_cb(NULL, gtkblist->mouseover_contact); |
| 7636 | 2814 | gtkblist->mouseover_contact = NULL; |
| 2815 | } | |
| 5228 | 2816 | } |
| 2817 | ||
| 2818 | static void | |
| 2819 | toggle_debug(void) | |
| 2820 | { | |
|
16123
8b98683319e7
Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16071
diff
changeset
|
2821 | 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
|
2822 | !purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/debug/enabled")); |
| 5228 | 2823 | } |
| 2824 | ||
| 2825 | ||
| 2826 | /*************************************************** | |
| 2827 | * Crap * | |
| 2828 | ***************************************************/ | |
| 2829 | static GtkItemFactoryEntry blist_menu[] = | |
| 2830 | { | |
| 2831 | /* Buddies menu */ | |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
2832 | { 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
|
2833 | { 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
|
2834 | { 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
|
2835 | { 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
|
2836 | { 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
|
2837 | { "/Buddies/sep1", NULL, NULL, 0, "<Separator>", NULL }, |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
2838 | { 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
|
2839 | { 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
|
2840 | { 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
|
2841 | { 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
|
2842 | { N_("/Buddies/_Sort Buddies"), NULL, NULL, 0, "<Branch>", NULL }, |
|
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
2843 | { "/Buddies/sep2", NULL, NULL, 0, "<Separator>", NULL }, |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
2844 | { 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
|
2845 | { N_("/Buddies/Add C_hat..."), NULL, pidgin_blist_add_chat_cb, 0, "<StockItem>", GTK_STOCK_ADD }, |
| 15884 | 2846 | { 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
|
2847 | { "/Buddies/sep3", NULL, NULL, 0, "<Separator>", NULL }, |
| 15884 | 2848 | { 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
|
2849 | |
|
c24609bae42d
[gaim-migrate @ 14604]
Peter Lawler <pidgin@bleeter.id.au>
parents:
12298
diff
changeset
|
2850 | /* Accounts menu */ |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
2851 | { 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
|
2852 | { N_("/Accounts/Add\\/Edit"), "<CTL>A", pidgin_accounts_window_show, 0, "<Item>", NULL }, |
| 5228 | 2853 | |
|
8470
100fc1feea95
[gaim-migrate @ 9203]
Christian Hammond <chipx86@chipx86.com>
parents:
8444
diff
changeset
|
2854 | /* Tools */ |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
2855 | { 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
|
2856 | { 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
|
2857 | { 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
|
2858 | { 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
|
2859 | { 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
|
2860 | { "/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
|
2861 | { 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
|
2862 | { 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
|
2863 | { 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
|
2864 | { "/Tools/sep3", NULL, NULL, 0, "<Separator>", NULL }, |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
2865 | { N_("/Tools/Mute _Sounds"), "<CTL>S", pidgin_blist_mute_sounds_cb, 0, "<CheckItem>", NULL }, |
|
17419
2a7045fc50bf
disapproval of revision 'e582f0260df20a57244730dc433866e754975417'
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
17417
diff
changeset
|
2866 | |
|
2a7045fc50bf
disapproval of revision 'e582f0260df20a57244730dc433866e754975417'
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
17417
diff
changeset
|
2867 | /* Help */ |
|
2a7045fc50bf
disapproval of revision 'e582f0260df20a57244730dc433866e754975417'
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
17417
diff
changeset
|
2868 | { N_("/_Help"), NULL, NULL, 0, "<Branch>", NULL }, |
|
2a7045fc50bf
disapproval of revision 'e582f0260df20a57244730dc433866e754975417'
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
17417
diff
changeset
|
2869 | { N_("/Help/Online _Help"), "F1", gtk_blist_show_onlinehelp_cb, 0, "<StockItem>", GTK_STOCK_HELP }, |
|
2a7045fc50bf
disapproval of revision 'e582f0260df20a57244730dc433866e754975417'
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
17417
diff
changeset
|
2870 | { N_("/Help/_Debug Window"), NULL, toggle_debug, 0, "<Item>", NULL }, |
|
2a7045fc50bf
disapproval of revision 'e582f0260df20a57244730dc433866e754975417'
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
17417
diff
changeset
|
2871 | { N_("/Help/_About"), NULL, pidgin_dialogs_about, 0, "<Item>", NULL }, |
| 5228 | 2872 | }; |
| 2873 | ||
| 2874 | /********************************************************* | |
| 2875 | * Private Utility functions * | |
| 2876 | *********************************************************/ | |
| 2877 | ||
| 15884 | 2878 | static char *pidgin_get_tooltip_text(PurpleBlistNode *node, gboolean full) |
| 5228 | 2879 | { |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2880 | GString *str = g_string_new(""); |
| 15884 | 2881 | PurplePlugin *prpl; |
| 2882 | PurplePluginProtocolInfo *prpl_info = NULL; | |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2883 | char *tmp; |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2884 | |
| 15884 | 2885 | if (PURPLE_BLIST_NODE_IS_CHAT(node)) |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2886 | { |
| 15884 | 2887 | PurpleChat *chat; |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2888 | GList *cur; |
| 5274 | 2889 | struct proto_chat_entry *pce; |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2890 | char *name, *value; |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2891 | |
| 15884 | 2892 | chat = (PurpleChat *)node; |
| 2893 | prpl = purple_find_prpl(purple_account_get_protocol_id(chat->account)); | |
| 2894 | prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); | |
| 2895 | ||
| 2896 | if (g_list_length(purple_connections_get_all()) > 1) | |
|
10475
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 | tmp = g_markup_escape_text(chat->account->username, -1); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2899 | g_string_append_printf(str, _("\n<b>Account:</b> %s"), tmp); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2900 | g_free(tmp); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2901 | } |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2902 | |
| 9959 | 2903 | if (prpl_info->chat_info != NULL) |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2904 | cur = prpl_info->chat_info(chat->account->gc); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2905 | else |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2906 | cur = NULL; |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2907 | |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2908 | while (cur != NULL) |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2909 | { |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2910 | pce = cur->data; |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2911 | |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2912 | if (!pce->secret && (!pce->required && |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2913 | g_hash_table_lookup(chat->components, pce->identifier) == NULL)) |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2914 | { |
| 15884 | 2915 | tmp = purple_text_strip_mnemonic(pce->label); |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2916 | name = g_markup_escape_text(tmp, -1); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2917 | g_free(tmp); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2918 | value = g_markup_escape_text(g_hash_table_lookup( |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2919 | chat->components, pce->identifier), -1); |
|
10924
248233a58180
[gaim-migrate @ 12695]
Daniel Atallah <datallah@pidgin.im>
parents:
10918
diff
changeset
|
2920 | g_string_append_printf(str, "\n<b>%s</b> %s", |
|
248233a58180
[gaim-migrate @ 12695]
Daniel Atallah <datallah@pidgin.im>
parents:
10918
diff
changeset
|
2921 | name ? name : "", |
|
248233a58180
[gaim-migrate @ 12695]
Daniel Atallah <datallah@pidgin.im>
parents:
10918
diff
changeset
|
2922 | value ? value : ""); |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2923 | g_free(name); |
| 8020 | 2924 | g_free(value); |
| 2925 | } | |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2926 | |
| 5274 | 2927 | g_free(pce); |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2928 | cur = g_list_remove(cur, pce); |
| 5274 | 2929 | } |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2930 | } |
| 15884 | 2931 | 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
|
2932 | { |
|
15209
9dd48f6c8805
[gaim-migrate @ 17933]
Evan Schoenberg <evands@pidgin.im>
parents:
15206
diff
changeset
|
2933 | /* NOTE: THIS FUNCTION IS NO LONGER CALLED FOR CONTACTS. |
|
9dd48f6c8805
[gaim-migrate @ 17933]
Evan Schoenberg <evands@pidgin.im>
parents:
15206
diff
changeset
|
2934 | * 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
|
2935 | */ |
| 15884 | 2936 | PurpleContact *c; |
| 2937 | PurpleBuddy *b; | |
| 2938 | PurplePresence *presence; | |
| 2939 | PurpleNotifyUserInfo *user_info; | |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2940 | char *tmp; |
|
10567
87b02dd40349
[gaim-migrate @ 11951]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10544
diff
changeset
|
2941 | time_t idle_secs, signon; |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2942 | |
| 15884 | 2943 | if (PURPLE_BLIST_NODE_IS_CONTACT(node)) |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2944 | { |
| 15884 | 2945 | c = (PurpleContact *)node; |
| 2946 | b = purple_contact_get_priority_buddy(c); | |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2947 | } |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2948 | else |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2949 | { |
| 15884 | 2950 | b = (PurpleBuddy *)node; |
| 2951 | c = purple_buddy_get_contact(b); | |
| 7620 | 2952 | } |
| 2953 | ||
| 15884 | 2954 | prpl = purple_find_prpl(purple_account_get_protocol_id(b->account)); |
| 2955 | prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); | |
| 2956 | ||
| 2957 | presence = purple_buddy_get_presence(b); | |
| 2958 | user_info = purple_notify_user_info_new(); | |
|
15206
70520a610969
[gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents:
15177
diff
changeset
|
2959 | |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2960 | /* Account */ |
| 15884 | 2961 | if (full && g_list_length(purple_connections_get_all()) > 1) |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2962 | { |
| 15884 | 2963 | tmp = g_markup_escape_text(purple_account_get_username( |
| 2964 | purple_buddy_get_account(b)), -1); | |
| 2965 | purple_notify_user_info_add_pair(user_info, _("Account"), 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 | /* Alias */ |
|
12942
b0b4accb55fb
[gaim-migrate @ 15295]
Richard Laager <rlaager@pidgin.im>
parents:
12941
diff
changeset
|
2970 | /* 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
|
2971 | * 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
|
2972 | if (full && b->alias != NULL && b->alias[0] != '\0' && |
|
13218
47708e4d453e
[gaim-migrate @ 15581]
Richard Laager <rlaager@pidgin.im>
parents:
13202
diff
changeset
|
2973 | (c->alias != NULL && c->alias[0] != '\0') && |
|
47708e4d453e
[gaim-migrate @ 15581]
Richard Laager <rlaager@pidgin.im>
parents:
13202
diff
changeset
|
2974 | strcmp(c->alias, b->alias) != 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->alias, -1); |
| 15884 | 2977 | 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
|
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 | /* Nickname/Server Alias */ |
|
12966
4ef0b7997610
[gaim-migrate @ 15319]
Richard Laager <rlaager@pidgin.im>
parents:
12943
diff
changeset
|
2982 | /* 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
|
2983 | * alias, but many people on MSN set long nicknames, which |
|
4ef0b7997610
[gaim-migrate @ 15319]
Richard Laager <rlaager@pidgin.im>
parents:
12943
diff
changeset
|
2984 | * 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
|
2985 | * to look at the tooltip. */ |
|
4ef0b7997610
[gaim-migrate @ 15319]
Richard Laager <rlaager@pidgin.im>
parents:
12943
diff
changeset
|
2986 | 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
|
2987 | { |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2988 | tmp = g_markup_escape_text(b->server_alias, -1); |
| 15884 | 2989 | purple_notify_user_info_add_pair(user_info, _("Nickname"), tmp); |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2990 | g_free(tmp); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2991 | } |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2992 | |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2993 | /* Logged In */ |
| 15884 | 2994 | signon = purple_presence_get_login_time(presence); |
| 2995 | if (full && PURPLE_BUDDY_IS_ONLINE(b) && signon > 0) | |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
2996 | { |
| 15884 | 2997 | tmp = purple_str_seconds_to_string(time(NULL) - signon); |
| 2998 | 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
|
2999 | g_free(tmp); |
|
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 | /* Idle */ |
| 15884 | 3003 | if (purple_presence_is_idle(presence)) |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
3004 | { |
| 15884 | 3005 | idle_secs = purple_presence_get_idle_time(presence); |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
3006 | if (idle_secs > 0) |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
3007 | { |
| 15884 | 3008 | tmp = purple_str_seconds_to_string(time(NULL) - idle_secs); |
| 3009 | purple_notify_user_info_add_pair(user_info, _("Idle"), tmp); | |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
3010 | g_free(tmp); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
3011 | } |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
3012 | } |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
3013 | |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
3014 | /* Last Seen */ |
| 15884 | 3015 | if (full && !PURPLE_BUDDY_IS_ONLINE(b)) |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
3016 | { |
| 15884 | 3017 | struct _pidgin_blist_node *gtknode = ((PurpleBlistNode *)c)->ui_data; |
| 3018 | PurpleBlistNode *bnode; | |
|
11023
1e39a0e74a18
[gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents:
11018
diff
changeset
|
3019 | int lastseen = 0; |
|
1e39a0e74a18
[gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents:
11018
diff
changeset
|
3020 | |
| 15884 | 3021 | if (!gtknode->contact_expanded || PURPLE_BLIST_NODE_IS_CONTACT(node)) |
|
11023
1e39a0e74a18
[gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents:
11018
diff
changeset
|
3022 | { |
|
11437
20ba0815b4f8
[gaim-migrate @ 13674]
Richard Laager <rlaager@pidgin.im>
parents:
11436
diff
changeset
|
3023 | /* 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
|
3024 | * an expanded contact itself so we show the most recent |
|
11023
1e39a0e74a18
[gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents:
11018
diff
changeset
|
3025 | * (largest) last_seen time for any of the buddies under |
|
1e39a0e74a18
[gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents:
11018
diff
changeset
|
3026 | * the contact. */ |
| 15884 | 3027 | for (bnode = ((PurpleBlistNode *)c)->child ; bnode != NULL ; bnode = bnode->next) |
|
11023
1e39a0e74a18
[gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents:
11018
diff
changeset
|
3028 | { |
| 15884 | 3029 | int value = purple_blist_node_get_int(bnode, "last_seen"); |
|
11023
1e39a0e74a18
[gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents:
11018
diff
changeset
|
3030 | if (value > lastseen) |
|
1e39a0e74a18
[gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents:
11018
diff
changeset
|
3031 | lastseen = value; |
|
1e39a0e74a18
[gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents:
11018
diff
changeset
|
3032 | } |
|
1e39a0e74a18
[gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents:
11018
diff
changeset
|
3033 | } |
|
1e39a0e74a18
[gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents:
11018
diff
changeset
|
3034 | else |
|
1e39a0e74a18
[gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents:
11018
diff
changeset
|
3035 | { |
|
1e39a0e74a18
[gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents:
11018
diff
changeset
|
3036 | /* We're dealing with a buddy under an expanded contact, |
|
1e39a0e74a18
[gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents:
11018
diff
changeset
|
3037 | * so we show the last_seen time for the buddy. */ |
| 15884 | 3038 | lastseen = purple_blist_node_get_int(&b->node, "last_seen"); |
|
11023
1e39a0e74a18
[gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents:
11018
diff
changeset
|
3039 | } |
|
1e39a0e74a18
[gaim-migrate @ 12895]
Richard Laager <rlaager@pidgin.im>
parents:
11018
diff
changeset
|
3040 | |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
3041 | if (lastseen > 0) |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
3042 | { |
| 15884 | 3043 | tmp = purple_str_seconds_to_string(time(NULL) - lastseen); |
| 3044 | 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
|
3045 | g_free(tmp); |
| 5234 | 3046 | } |
| 3047 | } | |
| 3048 | ||
|
10475
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 | /* Offline? */ |
|
12970
c2f3b4dcf711
[gaim-migrate @ 15323]
Richard Laager <rlaager@pidgin.im>
parents:
12966
diff
changeset
|
3051 | /* FIXME: Why is this status special-cased by the core? -- rlaager */ |
| 15884 | 3052 | if (!PURPLE_BUDDY_IS_ONLINE(b)) { |
| 3053 | purple_notify_user_info_add_pair(user_info, _("Status"), _("Offline")); | |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
3054 | } |
|
10992
ccf59743dae4
[gaim-migrate @ 12830]
Daniel Atallah <datallah@pidgin.im>
parents:
10968
diff
changeset
|
3055 | |
|
ccf59743dae4
[gaim-migrate @ 12830]
Daniel Atallah <datallah@pidgin.im>
parents:
10968
diff
changeset
|
3056 | if (prpl_info && prpl_info->tooltip_text) |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
3057 | { |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
3058 | /* Additional text from the PRPL */ |
|
15206
70520a610969
[gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents:
15177
diff
changeset
|
3059 | prpl_info->tooltip_text(b, user_info, full); |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
3060 | } |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
3061 | |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
3062 | /* These are Easter Eggs. Patches to remove them will be rejected. */ |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
3063 | if (!g_ascii_strcasecmp(b->name, "robflynn")) |
| 15884 | 3064 | purple_notify_user_info_add_pair(user_info, _("Description"), _("Spooky")); |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
3065 | if (!g_ascii_strcasecmp(b->name, "seanegn")) |
| 15884 | 3066 | purple_notify_user_info_add_pair(user_info, _("Status"), _("Awesome")); |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
3067 | if (!g_ascii_strcasecmp(b->name, "chipx86")) |
| 15884 | 3068 | purple_notify_user_info_add_pair(user_info, _("Status"), _("Rockin'")); |
| 3069 | ||
| 3070 | 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
|
3071 | g_string_append(str, tmp); |
|
70520a610969
[gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents:
15177
diff
changeset
|
3072 | g_free(tmp); |
|
70520a610969
[gaim-migrate @ 17930]
Evan Schoenberg <evands@pidgin.im>
parents:
15177
diff
changeset
|
3073 | |
| 15884 | 3074 | purple_notify_user_info_destroy(user_info); |
| 3075 | } | |
| 3076 | ||
| 3077 | purple_signal_emit(pidgin_blist_get_handle(), | |
|
12713
6f057a6e0516
[gaim-migrate @ 15057]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12679
diff
changeset
|
3078 | "drawing-tooltip", node, str, full); |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
3079 | |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
3080 | return g_string_free(str, FALSE); |
| 5228 | 3081 | } |
| 3082 | ||
| 15524 | 3083 | GdkPixbuf * |
| 15884 | 3084 | pidgin_blist_get_emblem(PurpleBlistNode *node) |
| 3085 | { | |
| 3086 | PurpleBuddy *buddy = NULL; | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3087 | struct _pidgin_blist_node *gtknode = node->ui_data; |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3088 | struct _pidgin_blist_node *gtkbuddynode = NULL; |
| 15884 | 3089 | PurplePlugin *prpl; |
| 3090 | PurplePluginProtocolInfo *prpl_info; | |
| 15524 | 3091 | const char *name = NULL; |
| 3092 | char *filename, *path; | |
| 3093 | GdkPixbuf *ret; | |
| 15884 | 3094 | PurplePresence *p; |
| 3095 | ||
| 3096 | ||
| 3097 | ||
| 3098 | if(PURPLE_BLIST_NODE_IS_CONTACT(node)) { | |
| 15524 | 3099 | if(!gtknode->contact_expanded) { |
| 15884 | 3100 | buddy = purple_contact_get_priority_buddy((PurpleContact*)node); |
| 3101 | gtkbuddynode = ((PurpleBlistNode*)buddy)->ui_data; | |
| 15524 | 3102 | } |
| 15884 | 3103 | } else if(PURPLE_BLIST_NODE_IS_BUDDY(node)) { |
| 3104 | buddy = (PurpleBuddy*)node; | |
| 15524 | 3105 | gtkbuddynode = node->ui_data; |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3106 | if (((struct _pidgin_blist_node*)(node->parent->ui_data))->contact_expanded) |
| 15884 | 3107 | return pidgin_create_prpl_icon(((PurpleBuddy*)node)->account, PIDGIN_PRPL_ICON_SMALL); |
| 3108 | } else if(PURPLE_BLIST_NODE_IS_CHAT(node)) { | |
| 3109 | return pidgin_create_prpl_icon(((PurpleChat*)node)->account, PIDGIN_PRPL_ICON_SMALL); | |
| 15524 | 3110 | } else { |
| 3111 | return NULL; | |
| 3112 | } | |
|
15692
ecda27df58b9
Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents:
15670
diff
changeset
|
3113 | |
| 15884 | 3114 | if (!purple_privacy_check(buddy->account, purple_buddy_get_name(buddy))) { |
| 15561 | 3115 | 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
|
3116 | 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
|
3117 | 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
|
3118 | 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
|
3119 | } |
|
15692
ecda27df58b9
Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents:
15670
diff
changeset
|
3120 | |
| 15884 | 3121 | p = purple_buddy_get_presence(buddy); |
| 3122 | 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
|
3123 | 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
|
3124 | 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
|
3125 | g_free(path); |
|
15692
ecda27df58b9
Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents:
15670
diff
changeset
|
3126 | return ret; |
| 15561 | 3127 | } |
| 15524 | 3128 | |
| 15884 | 3129 | prpl = purple_find_prpl(purple_account_get_protocol_id(buddy->account)); |
| 15524 | 3130 | if (!prpl) |
| 3131 | return NULL; | |
| 3132 | ||
| 15884 | 3133 | prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); |
| 15524 | 3134 | if (prpl_info && prpl_info->list_emblem) |
| 3135 | name = prpl_info->list_emblem(buddy); | |
| 3136 | ||
| 3137 | if (name == NULL) | |
| 3138 | return NULL; | |
| 3139 | ||
| 3140 | filename = g_strdup_printf("%s.png", name); | |
| 3141 | ||
| 3142 | path = g_build_filename(DATADIR, "pixmaps", "pidgin", "emblems", "16", filename, NULL); | |
| 3143 | ret = gdk_pixbuf_new_from_file(path, NULL); | |
|
15692
ecda27df58b9
Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents:
15670
diff
changeset
|
3144 | |
| 15524 | 3145 | g_free(filename); |
| 3146 | g_free(path); | |
| 3147 | ||
| 3148 | return ret; | |
| 3149 | } | |
| 3150 | ||
| 7620 | 3151 | |
|
9944
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
3152 | GdkPixbuf * |
| 15884 | 3153 | pidgin_blist_get_status_icon(PurpleBlistNode *node, PidginStatusIconSize size) |
| 5228 | 3154 | { |
|
15458
39c79dc7c965
A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
3155 | GdkPixbuf *ret; |
| 5228 | 3156 | const char *protoname = NULL; |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3157 | struct _pidgin_blist_node *gtknode = node->ui_data; |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3158 | struct _pidgin_blist_node *gtkbuddynode = NULL; |
| 15884 | 3159 | PurpleBuddy *buddy = NULL; |
| 3160 | PurpleChat *chat = NULL; | |
|
15606
a070ac7366f8
Perhaps a 22px icon is better in the tooltip
Sean Egan <seanegan@pidgin.im>
parents:
15588
diff
changeset
|
3161 | GtkIconSize icon_size = gtk_icon_size_from_name((size == PIDGIN_STATUS_ICON_LARGE) ? PIDGIN_ICON_SIZE_TANGO_SMALL : |
| 15497 | 3162 | PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL); |
| 7620 | 3163 | |
| 15884 | 3164 | if(PURPLE_BLIST_NODE_IS_CONTACT(node)) { |
| 11910 | 3165 | if(!gtknode->contact_expanded) { |
| 15884 | 3166 | buddy = purple_contact_get_priority_buddy((PurpleContact*)node); |
|
17086
4b6d59cdfaca
This is what I actually intended to commit in aee2b2d67b643d59beb0b75b460c553c804e8220. The rest of the mess being pushed is me trying to clean up my mess.
Daniel Atallah <datallah@pidgin.im>
parents:
17082
diff
changeset
|
3167 | if (buddy != NULL) |
|
4b6d59cdfaca
This is what I actually intended to commit in aee2b2d67b643d59beb0b75b460c553c804e8220. The rest of the mess being pushed is me trying to clean up my mess.
Daniel Atallah <datallah@pidgin.im>
parents:
17082
diff
changeset
|
3168 | gtkbuddynode = ((PurpleBlistNode*)buddy)->ui_data; |
| 11910 | 3169 | } |
| 15884 | 3170 | } else if(PURPLE_BLIST_NODE_IS_BUDDY(node)) { |
| 3171 | buddy = (PurpleBuddy*)node; | |
| 11910 | 3172 | gtkbuddynode = node->ui_data; |
| 15884 | 3173 | } else if(PURPLE_BLIST_NODE_IS_CHAT(node)) { |
| 3174 | chat = (PurpleChat*)node; | |
| 7620 | 3175 | } else { |
| 5228 | 3176 | return NULL; |
| 5234 | 3177 | } |
| 3178 | ||
| 7620 | 3179 | if(buddy || chat) { |
| 15884 | 3180 | PurpleAccount *account; |
| 3181 | PurplePlugin *prpl; | |
| 3182 | PurplePluginProtocolInfo *prpl_info; | |
| 7620 | 3183 | |
| 3184 | if(buddy) | |
| 3185 | account = buddy->account; | |
| 3186 | else | |
| 3187 | account = chat->account; | |
| 3188 | ||
| 15884 | 3189 | prpl = purple_find_prpl(purple_account_get_protocol_id(account)); |
| 7620 | 3190 | if(!prpl) |
| 3191 | return NULL; | |
| 3192 | ||
| 15884 | 3193 | prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); |
| 7620 | 3194 | |
| 3195 | if(prpl_info && prpl_info->list_icon) { | |
| 3196 | protoname = prpl_info->list_icon(account, buddy); | |
| 3197 | } | |
| 5234 | 3198 | } |
|
15692
ecda27df58b9
Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents:
15670
diff
changeset
|
3199 | |
|
15458
39c79dc7c965
A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
3200 | if(buddy) { |
| 15884 | 3201 | PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, |
| 3202 | purple_buddy_get_name(buddy), | |
| 3203 | purple_buddy_get_account(buddy)); | |
| 3204 | 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
|
3205 | if(conv != NULL) { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3206 | PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv); |
|
15569
e85adc8d3b5c
gtkblist changes to pidgin
Sean Egan <seanegan@pidgin.im>
parents:
15568
diff
changeset
|
3207 | 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
|
3208 | 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
|
3209 | 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
|
3210 | } |
|
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
|
3211 | } |
| 15884 | 3212 | p = purple_buddy_get_presence(buddy); |
| 3213 | ||
| 3214 | if (PURPLE_BUDDY_IS_ONLINE(buddy) && gtkbuddynode && gtkbuddynode->recent_signonoff) | |
| 15509 | 3215 | ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_LOGIN, |
| 3216 | icon_size, "GtkTreeView"); | |
| 3217 | else if (gtkbuddynode && gtkbuddynode->recent_signonoff) | |
| 3218 | ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_LOGOUT, | |
| 3219 | icon_size, "GtkTreeView"); | |
| 15884 | 3220 | else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_UNAVAILABLE)) |
| 3221 | if (purple_presence_is_idle(p) && size == PIDGIN_STATUS_ICON_SMALL) | |
| 15554 | 3222 | ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_BUSY_I, |
| 3223 | icon_size, "GtkTreeView"); | |
| 3224 | else | |
| 3225 | ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_BUSY, | |
| 3226 | icon_size, "GtkTreeView"); | |
| 15884 | 3227 | else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_AWAY)) |
| 3228 | if (purple_presence_is_idle(p) && size == PIDGIN_STATUS_ICON_SMALL) | |
| 15554 | 3229 | ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_AWAY_I, |
| 3230 | icon_size, "GtkTreeView"); | |
| 3231 | else | |
| 3232 | ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_AWAY, | |
| 3233 | icon_size, "GtkTreeView"); | |
| 15884 | 3234 | else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_EXTENDED_AWAY)) |
| 3235 | if (purple_presence_is_idle(p) && size == PIDGIN_STATUS_ICON_SMALL) | |
| 15554 | 3236 | ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_XA_I, |
| 3237 | icon_size, "GtkTreeView"); | |
| 3238 | else | |
| 3239 | ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_XA, | |
| 3240 | icon_size, "GtkTreeView"); | |
| 15884 | 3241 | else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_OFFLINE)) |
| 17412 | 3242 | ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_OFFLINE_I, |
| 15509 | 3243 | icon_size, "GtkTreeView"); |
| 15884 | 3244 | else if (purple_presence_is_idle(p) && size == PIDGIN_STATUS_ICON_SMALL) |
| 15554 | 3245 | ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_AVAILABLE_I, |
| 3246 | icon_size, "GtkTreeView"); | |
| 15509 | 3247 | else |
| 15554 | 3248 | ret = gtk_widget_render_icon(GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_AVAILABLE, |
| 15509 | 3249 | icon_size, "GtkTreeView"); |
| 3250 | } else if (chat) { | |
| 3251 | ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_CHAT, | |
| 3252 | icon_size, "GtkTreeView"); | |
| 3253 | } else { | |
| 3254 | ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), PIDGIN_STOCK_STATUS_PERSON, | |
| 3255 | icon_size, "GtkTreeView"); | |
| 3256 | } | |
|
15458
39c79dc7c965
A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
3257 | |
|
39c79dc7c965
A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
3258 | return ret; |
| 5228 | 3259 | } |
| 3260 | ||
| 15884 | 3261 | static gchar *pidgin_blist_get_name_markup(PurpleBuddy *b, gboolean selected) |
| 5228 | 3262 | { |
| 7620 | 3263 | const char *name; |
| 3264 | char *esc, *text = NULL; | |
| 15884 | 3265 | PurplePlugin *prpl; |
| 3266 | PurplePluginProtocolInfo *prpl_info = NULL; | |
| 3267 | PurpleContact *contact; | |
| 3268 | PurplePresence *presence; | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3269 | struct _pidgin_blist_node *gtkcontactnode = NULL; |
| 11257 | 3270 | char *idletime = NULL, *statustext = NULL; |
| 5228 | 3271 | time_t t; |
| 15884 | 3272 | PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, |
| 3273 | purple_buddy_get_name(b), | |
| 3274 | purple_buddy_get_account(b)); | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3275 | 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
|
3276 | 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
|
3277 | |
|
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
|
3278 | if(conv != NULL) { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3279 | gtkconv = PIDGIN_CONVERSATION(conv); |
| 15563 | 3280 | 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
|
3281 | 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
|
3282 | } |
|
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
|
3283 | } |
|
15692
ecda27df58b9
Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents:
15670
diff
changeset
|
3284 | |
|
13951
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3285 | /* XXX Good luck cleaning up this crap */ |
| 7620 | 3286 | |
| 15884 | 3287 | contact = (PurpleContact*)((PurpleBlistNode*)b)->parent; |
| 7620 | 3288 | if(contact) |
| 15884 | 3289 | gtkcontactnode = ((PurpleBlistNode*)contact)->ui_data; |
| 7620 | 3290 | |
| 3291 | if(gtkcontactnode && !gtkcontactnode->contact_expanded && contact->alias) | |
| 3292 | name = contact->alias; | |
| 3293 | else | |
| 15884 | 3294 | name = purple_buddy_get_alias(b); |
| 7620 | 3295 | esc = g_markup_escape_text(name, strlen(name)); |
| 3296 | ||
| 15884 | 3297 | presence = purple_buddy_get_presence(b); |
| 3298 | ||
|
16123
8b98683319e7
Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16071
diff
changeset
|
3299 | 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
|
3300 | { |
| 15884 | 3301 | if (!selected && purple_presence_is_idle(presence)) |
|
9944
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
3302 | { |
| 10118 | 3303 | text = g_strdup_printf("<span color='%s'>%s</span>", |
| 3304 | dim_grey(), esc); | |
| 5228 | 3305 | 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
|
3306 | 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
|
3307 | 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
|
3308 | 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
|
3309 | 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
|
3310 | } |
| 5228 | 3311 | return text; |
| 7620 | 3312 | } |
|
9944
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
3313 | 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
|
3314 | 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
|
3315 | 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
|
3316 | 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
|
3317 | 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
|
3318 | } |
| 5228 | 3319 | return esc; |
| 3320 | } | |
| 3321 | ||
| 15884 | 3322 | 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
|
3323 | |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3324 | if (prpl != NULL) |
| 15884 | 3325 | prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); |
|
13951
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3326 | |
|
8122
64dc12809940
[gaim-migrate @ 8826]
Christian Hammond <chipx86@chipx86.com>
parents:
8113
diff
changeset
|
3327 | if (prpl_info && prpl_info->status_text && b->account->gc) { |
| 5228 | 3328 | char *tmp = prpl_info->status_text(b); |
| 3329 | const char *end; | |
| 3330 | ||
| 3331 | if(tmp && !g_utf8_validate(tmp, -1, &end)) { | |
| 3332 | char *new = g_strndup(tmp, | |
| 3333 | g_utf8_pointer_to_offset(tmp, end)); | |
| 3334 | g_free(tmp); | |
| 3335 | tmp = new; | |
| 3336 | } | |
| 3337 | ||
| 10288 | 3338 | #if !GTK_CHECK_VERSION(2,6,0) |
| 5228 | 3339 | if(tmp) { |
| 3340 | char buf[32]; | |
| 3341 | char *c = tmp; | |
| 3342 | int length = 0, vis=0; | |
| 3343 | gboolean inside = FALSE; | |
| 3344 | g_strdelimit(tmp, "\n", ' '); | |
| 15884 | 3345 | purple_str_strip_char(tmp, '\r'); |
| 5228 | 3346 | |
| 3347 | while(*c && vis < 20) { | |
| 3348 | if(*c == '&') | |
| 3349 | inside = TRUE; | |
| 3350 | else if(*c == ';') | |
| 3351 | inside = FALSE; | |
| 3352 | if(!inside) | |
| 3353 | vis++; | |
| 7620 | 3354 | c = g_utf8_next_char(c); /* this is fun */ |
| 5228 | 3355 | } |
| 3356 | ||
| 7620 | 3357 | length = c - tmp; |
| 3358 | ||
| 5228 | 3359 | if(vis == 20) |
| 3360 | g_snprintf(buf, sizeof(buf), "%%.%ds...", length); | |
| 3361 | else | |
| 3362 | g_snprintf(buf, sizeof(buf), "%%s "); | |
| 3363 | ||
| 3364 | statustext = g_strdup_printf(buf, tmp); | |
| 3365 | ||
| 3366 | g_free(tmp); | |
| 3367 | } | |
| 10288 | 3368 | #else |
|
13792
ceb938a873da
[gaim-migrate @ 16202]
Joshua Honeycutt <coweater@users.sourceforge.net>
parents:
13768
diff
changeset
|
3369 | if(tmp) { |
| 12437 | 3370 | g_strdelimit(tmp, "\n", ' '); |
| 15884 | 3371 | purple_str_strip_char(tmp, '\r'); |
|
13792
ceb938a873da
[gaim-migrate @ 16202]
Joshua Honeycutt <coweater@users.sourceforge.net>
parents:
13768
diff
changeset
|
3372 | } |
| 10288 | 3373 | statustext = tmp; |
| 3374 | #endif | |
| 5228 | 3375 | } |
| 3376 | ||
| 15884 | 3377 | if(!purple_presence_is_online(presence) && !statustext) |
|
13034
cfeb9826ba96
[gaim-migrate @ 15392]
Richard Laager <rlaager@pidgin.im>
parents:
13030
diff
changeset
|
3378 | statustext = g_strdup(_("Offline")); |
|
13951
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3379 | else if (!statustext) |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3380 | text = g_strdup(esc); |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
3381 | |
| 15884 | 3382 | 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
|
3383 | if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_idle_time")) { |
| 15884 | 3384 | 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
|
3385 | |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3386 | if (idle_secs > 0) { |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3387 | int ihrs, imin; |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3388 | |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3389 | time(&t); |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3390 | ihrs = (t - idle_secs) / 3600; |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3391 | imin = ((t - idle_secs) / 60) % 60; |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3392 | |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3393 | if (ihrs) |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3394 | idletime = g_strdup_printf(_("Idle %dh %02dm"), ihrs, imin); |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3395 | else |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3396 | idletime = g_strdup_printf(_("Idle %dm"), imin); |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3397 | } |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3398 | else |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3399 | idletime = g_strdup(_("Idle")); |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3400 | |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3401 | if (!selected) |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3402 | text = g_strdup_printf("<span color='%s'>%s</span>\n" |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3403 | "<span color='%s' size='smaller'>%s%s%s</span>", |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3404 | dim_grey(), esc, dim_grey(), |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3405 | idletime != NULL ? idletime : "", |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3406 | (idletime != NULL && statustext != NULL) ? " - " : "", |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3407 | statustext != NULL ? statustext : ""); |
|
13034
cfeb9826ba96
[gaim-migrate @ 15392]
Richard Laager <rlaager@pidgin.im>
parents:
13030
diff
changeset
|
3408 | } |
|
13951
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3409 | else if (!selected && !statustext) /* We handle selected text later */ |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3410 | 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
|
3411 | else if (!selected && !text) |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3412 | text = g_strdup_printf("<span color='%s'>%s</span>\n" |
|
14199
6a78ca00a50f
[gaim-migrate @ 16779]
Daniel Atallah <datallah@pidgin.im>
parents:
14195
diff
changeset
|
3413 | "<span color='%s' size='smaller'>%s</span>", |
|
13951
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3414 | dim_grey(), esc, dim_grey(), |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3415 | statustext != NULL ? statustext : ""); |
| 17412 | 3416 | } else if (!PURPLE_BUDDY_IS_ONLINE(b)) { |
| 3417 | if (!selected && !statustext) /* We handle selected text later */ | |
| 3418 | text = g_strdup_printf("<span color='%s'>%s</span>", dim_grey(), esc); | |
| 3419 | else if (!selected && !text) | |
| 3420 | text = g_strdup_printf("<span color='%s'>%s</span>\n" | |
| 3421 | "<span color='%s' size='smaller'>%s</span>", | |
| 3422 | dim_grey(), esc, dim_grey(), | |
| 3423 | statustext != NULL ? statustext : ""); | |
| 3424 | ||
| 3425 | } | |
|
13951
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3426 | /* Not idle and not selected */ |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3427 | else if (!selected && !text) |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3428 | { |
|
13202
f5f21ca5b5a6
[gaim-migrate @ 15564]
Richard Laager <rlaager@pidgin.im>
parents:
13197
diff
changeset
|
3429 | text = g_strdup_printf("%s\n" |
|
14136
0259a51abd4a
[gaim-migrate @ 16695]
Daniel Atallah <datallah@pidgin.im>
parents:
14097
diff
changeset
|
3430 | "<span color='%s' size='smaller'>%s</span>", |
|
13951
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3431 | esc, dim_grey(), |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3432 | statustext != NULL ? statustext : ""); |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3433 | } |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3434 | |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3435 | /* It is selected. */ |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
3436 | if ((selected && !text) || (selected && idletime)) |
|
13951
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3437 | text = g_strdup_printf("%s\n" |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3438 | "<span size='smaller'>%s%s%s</span>", |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3439 | esc, |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3440 | idletime != NULL ? idletime : "", |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3441 | (idletime != NULL && statustext != NULL) ? " - " : "", |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3442 | statustext != NULL ? statustext : ""); |
|
12656
77de7b9c23bf
[gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents:
12649
diff
changeset
|
3443 | |
|
77de7b9c23bf
[gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents:
12649
diff
changeset
|
3444 | g_free(idletime); |
|
77de7b9c23bf
[gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents:
12649
diff
changeset
|
3445 | g_free(statustext); |
|
77de7b9c23bf
[gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents:
12649
diff
changeset
|
3446 | g_free(esc); |
|
15692
ecda27df58b9
Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents:
15670
diff
changeset
|
3447 | |
|
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
|
3448 | 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
|
3449 | 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
|
3450 | 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
|
3451 | 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
|
3452 | } |
|
15692
ecda27df58b9
Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents:
15670
diff
changeset
|
3453 | |
| 5228 | 3454 | return text; |
| 3455 | } | |
| 3456 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3457 | static void pidgin_blist_restore_position() |
| 5228 | 3458 | { |
| 7620 | 3459 | int blist_x, blist_y, blist_width, blist_height; |
| 3460 | ||
|
16123
8b98683319e7
Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16071
diff
changeset
|
3461 | blist_width = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/width"); |
| 7620 | 3462 | |
| 3463 | /* if the window exists, is hidden, we're saving positions, and the | |
| 3464 | * position is sane... */ | |
| 3465 | if (gtkblist && gtkblist->window && | |
| 3466 | !GTK_WIDGET_VISIBLE(gtkblist->window) && blist_width != 0) { | |
| 3467 | ||
|
16123
8b98683319e7
Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16071
diff
changeset
|
3468 | 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
|
3469 | 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
|
3470 | blist_height = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/height"); |
| 7620 | 3471 | |
| 5228 | 3472 | /* ...check position is on screen... */ |
| 7620 | 3473 | if (blist_x >= gdk_screen_width()) |
| 3474 | blist_x = gdk_screen_width() - 100; | |
| 3475 | else if (blist_x + blist_width < 0) | |
| 3476 | blist_x = 100; | |
| 3477 | ||
| 3478 | if (blist_y >= gdk_screen_height()) | |
| 3479 | blist_y = gdk_screen_height() - 100; | |
| 3480 | else if (blist_y + blist_height < 0) | |
| 3481 | blist_y = 100; | |
| 3482 | ||
| 5228 | 3483 | /* ...and move it back. */ |
| 7620 | 3484 | gtk_window_move(GTK_WINDOW(gtkblist->window), blist_x, blist_y); |
| 3485 | 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
|
3486 | 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
|
3487 | gtk_window_maximize(GTK_WINDOW(gtkblist->window)); |
| 5228 | 3488 | } |
| 3489 | } | |
| 3490 | ||
| 15884 | 3491 | static gboolean pidgin_blist_refresh_timer(PurpleBuddyList *list) |
| 3492 | { | |
| 3493 | PurpleBlistNode *gnode, *cnode; | |
| 7620 | 3494 | |
|
13951
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3495 | if (gtk_blist_obscured || !GTK_WIDGET_VISIBLE(gtkblist->window)) |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
3496 | return TRUE; |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
3497 | |
| 7620 | 3498 | for(gnode = list->root; gnode; gnode = gnode->next) { |
| 15884 | 3499 | if(!PURPLE_BLIST_NODE_IS_GROUP(gnode)) |
| 5234 | 3500 | continue; |
| 7620 | 3501 | for(cnode = gnode->child; cnode; cnode = cnode->next) { |
| 15884 | 3502 | if(PURPLE_BLIST_NODE_IS_CONTACT(cnode)) { |
| 3503 | PurpleBuddy *buddy; | |
| 3504 | ||
| 3505 | buddy = purple_contact_get_priority_buddy((PurpleContact*)cnode); | |
| 10012 | 3506 | |
| 3507 | if (buddy && | |
| 15884 | 3508 | purple_presence_is_idle(purple_buddy_get_presence(buddy))) |
| 3509 | pidgin_blist_update_contact(list, (PurpleBlistNode*)buddy); | |
| 7620 | 3510 | } |
| 5228 | 3511 | } |
| 3512 | } | |
| 3513 | ||
| 3514 | /* keep on going */ | |
| 3515 | return TRUE; | |
| 3516 | } | |
| 3517 | ||
| 15884 | 3518 | 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
|
3519 | { |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3520 | struct _pidgin_blist_node *gtknode = (struct _pidgin_blist_node *)node->ui_data; |
| 5260 | 3521 | GtkTreeIter iter; |
| 3522 | ||
| 3523 | if (!gtknode || !gtknode->row || !gtkblist) | |
| 3524 | return; | |
| 3525 | ||
| 3526 | if(gtkblist->selected_node == node) | |
| 3527 | gtkblist->selected_node = NULL; | |
| 3528 | if (get_iter_from_node(node, &iter)) { | |
| 3529 | gtk_tree_store_remove(gtkblist->treemodel, &iter); | |
| 15884 | 3530 | if(update && (PURPLE_BLIST_NODE_IS_CONTACT(node) || |
| 3531 | 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
|
3532 | pidgin_blist_update(list, node->parent); |
| 5260 | 3533 | } |
| 3534 | } | |
| 3535 | gtk_tree_row_reference_free(gtknode->row); | |
| 3536 | gtknode->row = NULL; | |
| 3537 | } | |
| 3538 | ||
|
10352
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3539 | static const char *require_connection[] = |
| 7620 | 3540 | { |
|
10352
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3541 | N_("/Buddies/New Instant Message..."), |
|
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3542 | N_("/Buddies/Join a Chat..."), |
|
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3543 | N_("/Buddies/Get User Info..."), |
|
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3544 | N_("/Buddies/Add Buddy..."), |
|
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3545 | N_("/Buddies/Add Chat..."), |
|
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3546 | N_("/Buddies/Add Group..."), |
|
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3547 | }; |
|
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3548 | |
|
10357
f5ad7a664200
[gaim-migrate @ 11575]
Mark Doliner <markdoliner@pidgin.im>
parents:
10354
diff
changeset
|
3549 | static const int require_connection_size = sizeof(require_connection) |
|
f5ad7a664200
[gaim-migrate @ 11575]
Mark Doliner <markdoliner@pidgin.im>
parents:
10354
diff
changeset
|
3550 | / sizeof(*require_connection); |
|
10352
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3551 | |
|
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 | * Rebuild dynamic menus and make menu items sensitive/insensitive |
|
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3554 | * where appropriate. |
|
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3555 | */ |
|
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3556 | static void |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3557 | update_menu_bar(PidginBuddyList *gtkblist) |
|
10352
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3558 | { |
|
8937
b436e9cbd701
[gaim-migrate @ 9707]
Mark Doliner <markdoliner@pidgin.im>
parents:
8911
diff
changeset
|
3559 | GtkWidget *widget; |
|
10352
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3560 | gboolean sensitive; |
|
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3561 | int i; |
|
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3562 | |
|
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3563 | g_return_if_fail(gtkblist != NULL); |
|
8259
7ed91862683d
[gaim-migrate @ 8982]
Christian Hammond <chipx86@chipx86.com>
parents:
8254
diff
changeset
|
3564 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3565 | pidgin_blist_update_accounts_menu(); |
|
8937
b436e9cbd701
[gaim-migrate @ 9707]
Mark Doliner <markdoliner@pidgin.im>
parents:
8911
diff
changeset
|
3566 | |
| 15884 | 3567 | sensitive = (purple_connections_get_all() != NULL); |
|
10352
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3568 | |
|
10357
f5ad7a664200
[gaim-migrate @ 11575]
Mark Doliner <markdoliner@pidgin.im>
parents:
10354
diff
changeset
|
3569 | for (i = 0; i < require_connection_size; i++) |
|
10352
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3570 | { |
|
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3571 | widget = gtk_item_factory_get_widget(gtkblist->ift, require_connection[i]); |
|
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3572 | gtk_widget_set_sensitive(widget, sensitive); |
|
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3573 | } |
|
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3574 | |
|
8940
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
3575 | 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
|
3576 | gtk_widget_set_sensitive(widget, pidgin_blist_joinchat_is_showable()); |
|
8940
3e22cf150db0
[gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents:
8939
diff
changeset
|
3577 | |
|
11988
7ed733ed806b
[gaim-migrate @ 14281]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11986
diff
changeset
|
3578 | 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
|
3579 | gtk_widget_set_sensitive(widget, pidgin_blist_joinchat_is_showable()); |
|
11988
7ed733ed806b
[gaim-migrate @ 14281]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11986
diff
changeset
|
3580 | |
|
8938
d13ed7491e43
[gaim-migrate @ 9708]
Mark Doliner <markdoliner@pidgin.im>
parents:
8937
diff
changeset
|
3581 | widget = gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Privacy")); |
| 15884 | 3582 | gtk_widget_set_sensitive(widget, (purple_connections_get_all() != NULL)); |
| 12136 | 3583 | |
| 3584 | 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
|
3585 | gtk_widget_set_sensitive(widget, pidgin_roomlist_is_showable()); |
| 7620 | 3586 | } |
| 3587 | ||
|
10352
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3588 | static void |
| 15884 | 3589 | sign_on_off_cb(PurpleConnection *gc, PurpleBuddyList *blist) |
|
10352
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3590 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3591 | PidginBuddyList *gtkblist = PIDGIN_BLIST(blist); |
|
10352
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3592 | |
|
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3593 | update_menu_bar(gtkblist); |
|
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
3594 | } |
|
8986
30ba617356bb
[gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents:
8975
diff
changeset
|
3595 | |
|
30ba617356bb
[gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents:
8975
diff
changeset
|
3596 | static void |
| 15884 | 3597 | plugin_changed_cb(PurplePlugin *p, gpointer *data) |
|
8986
30ba617356bb
[gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents:
8975
diff
changeset
|
3598 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3599 | pidgin_blist_update_plugin_actions(); |
|
8986
30ba617356bb
[gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents:
8975
diff
changeset
|
3600 | } |
|
30ba617356bb
[gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents:
8975
diff
changeset
|
3601 | |
|
12133
c627533bb7a4
[gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents:
12124
diff
changeset
|
3602 | static void |
|
c627533bb7a4
[gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents:
12124
diff
changeset
|
3603 | unseen_conv_menu() |
|
c627533bb7a4
[gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents:
12124
diff
changeset
|
3604 | { |
|
c627533bb7a4
[gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents:
12124
diff
changeset
|
3605 | static GtkWidget *menu = NULL; |
|
12468
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12466
diff
changeset
|
3606 | GList *convs = NULL; |
|
12133
c627533bb7a4
[gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents:
12124
diff
changeset
|
3607 | |
|
15110
2e4ae8a8dcec
[gaim-migrate @ 17832]
Daniel Atallah <datallah@pidgin.im>
parents:
15096
diff
changeset
|
3608 | if (menu) { |
|
12133
c627533bb7a4
[gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents:
12124
diff
changeset
|
3609 | gtk_widget_destroy(menu); |
|
15110
2e4ae8a8dcec
[gaim-migrate @ 17832]
Daniel Atallah <datallah@pidgin.im>
parents:
15096
diff
changeset
|
3610 | menu = NULL; |
|
2e4ae8a8dcec
[gaim-migrate @ 17832]
Daniel Atallah <datallah@pidgin.im>
parents:
15096
diff
changeset
|
3611 | } |
|
12468
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12466
diff
changeset
|
3612 | |
| 15884 | 3613 | 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
|
3614 | if (!convs) |
|
12175
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12163
diff
changeset
|
3615 | /* no conversations added, don't show the menu */ |
|
12133
c627533bb7a4
[gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents:
12124
diff
changeset
|
3616 | return; |
|
15110
2e4ae8a8dcec
[gaim-migrate @ 17832]
Daniel Atallah <datallah@pidgin.im>
parents:
15096
diff
changeset
|
3617 | |
|
2e4ae8a8dcec
[gaim-migrate @ 17832]
Daniel Atallah <datallah@pidgin.im>
parents:
15096
diff
changeset
|
3618 | menu = gtk_menu_new(); |
|
2e4ae8a8dcec
[gaim-migrate @ 17832]
Daniel Atallah <datallah@pidgin.im>
parents:
15096
diff
changeset
|
3619 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3620 | pidgin_conversations_fill_menu(menu, convs); |
|
12468
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12466
diff
changeset
|
3621 | g_list_free(convs); |
|
12133
c627533bb7a4
[gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents:
12124
diff
changeset
|
3622 | gtk_widget_show_all(menu); |
|
c627533bb7a4
[gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents:
12124
diff
changeset
|
3623 | gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 3, |
|
c627533bb7a4
[gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents:
12124
diff
changeset
|
3624 | gtk_get_current_event_time()); |
|
c627533bb7a4
[gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents:
12124
diff
changeset
|
3625 | } |
|
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 | static gboolean |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12115
diff
changeset
|
3628 | menutray_press_cb(GtkWidget *widget, GdkEventButton *event) |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12115
diff
changeset
|
3629 | { |
|
12468
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12466
diff
changeset
|
3630 | GList *convs; |
|
12208
63faaf557886
[gaim-migrate @ 14510]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12191
diff
changeset
|
3631 | |
|
12133
c627533bb7a4
[gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents:
12124
diff
changeset
|
3632 | switch (event->button) { |
|
c627533bb7a4
[gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents:
12124
diff
changeset
|
3633 | case 1: |
| 15884 | 3634 | 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
|
3635 | PIDGIN_UNSEEN_TEXT, TRUE, 1); |
|
12468
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12466
diff
changeset
|
3636 | if (convs) { |
| 15884 | 3637 | purple_conversation_present((PurpleConversation*)convs->data); |
|
12468
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12466
diff
changeset
|
3638 | g_list_free(convs); |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12466
diff
changeset
|
3639 | } |
|
12133
c627533bb7a4
[gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents:
12124
diff
changeset
|
3640 | break; |
|
c627533bb7a4
[gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents:
12124
diff
changeset
|
3641 | case 3: |
|
c627533bb7a4
[gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents:
12124
diff
changeset
|
3642 | unseen_conv_menu(); |
|
c627533bb7a4
[gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents:
12124
diff
changeset
|
3643 | break; |
|
c627533bb7a4
[gaim-migrate @ 14433]
Casey Harkins <charkins@pidgin.im>
parents:
12124
diff
changeset
|
3644 | } |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12115
diff
changeset
|
3645 | return TRUE; |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12115
diff
changeset
|
3646 | } |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12115
diff
changeset
|
3647 | |
|
14239
661d2bb9eb86
[gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents:
14230
diff
changeset
|
3648 | static void |
| 15884 | 3649 | conversation_updated_cb(PurpleConversation *conv, PurpleConvUpdateType type, |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3650 | PidginBuddyList *gtkblist) |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12115
diff
changeset
|
3651 | { |
|
12468
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12466
diff
changeset
|
3652 | GList *convs = NULL; |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12466
diff
changeset
|
3653 | GList *l = NULL; |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12115
diff
changeset
|
3654 | |
| 15884 | 3655 | if (type != PURPLE_CONV_UPDATE_UNSEEN) |
|
12175
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12163
diff
changeset
|
3656 | return; |
|
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12163
diff
changeset
|
3657 | |
|
12744
45d72d69f399
[gaim-migrate @ 15091]
Casey Harkins <charkins@pidgin.im>
parents:
12713
diff
changeset
|
3658 | if(conv->account != NULL && conv->name != NULL) { |
| 15884 | 3659 | PurpleBuddy *buddy = purple_find_buddy(conv->account, conv->name); |
|
12744
45d72d69f399
[gaim-migrate @ 15091]
Casey Harkins <charkins@pidgin.im>
parents:
12713
diff
changeset
|
3660 | if(buddy != NULL) |
| 15884 | 3661 | pidgin_blist_update_buddy(NULL, (PurpleBlistNode *)buddy, TRUE); |
|
12744
45d72d69f399
[gaim-migrate @ 15091]
Casey Harkins <charkins@pidgin.im>
parents:
12713
diff
changeset
|
3662 | } |
|
45d72d69f399
[gaim-migrate @ 15091]
Casey Harkins <charkins@pidgin.im>
parents:
12713
diff
changeset
|
3663 | |
|
12175
3e790a58d906
[gaim-migrate @ 14477]
Casey Harkins <charkins@pidgin.im>
parents:
12163
diff
changeset
|
3664 | if (gtkblist->menutrayicon) { |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12115
diff
changeset
|
3665 | gtk_widget_destroy(gtkblist->menutrayicon); |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12115
diff
changeset
|
3666 | gtkblist->menutrayicon = NULL; |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12115
diff
changeset
|
3667 | } |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12115
diff
changeset
|
3668 | |
| 15884 | 3669 | 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
|
3670 | if (convs) { |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12466
diff
changeset
|
3671 | GtkWidget *img = NULL; |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12466
diff
changeset
|
3672 | GString *tooltip_text = NULL; |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12466
diff
changeset
|
3673 | |
| 12117 | 3674 | tooltip_text = g_string_new(""); |
|
12468
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12466
diff
changeset
|
3675 | l = convs; |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12466
diff
changeset
|
3676 | while (l != NULL) { |
|
15692
ecda27df58b9
Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents:
15670
diff
changeset
|
3677 | if (PIDGIN_IS_PIDGIN_CONVERSATION(l->data)) { |
| 15884 | 3678 | PidginConversation *gtkconv = PIDGIN_CONVERSATION((PurpleConversation *)l->data); |
|
12468
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12466
diff
changeset
|
3679 | |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12466
diff
changeset
|
3680 | g_string_append_printf(tooltip_text, |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12466
diff
changeset
|
3681 | 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
|
3682 | gtkconv->unseen_count, |
|
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12466
diff
changeset
|
3683 | gtk_label_get_text(GTK_LABEL(gtkconv->tab_label))); |
| 12117 | 3684 | } |
|
12468
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12466
diff
changeset
|
3685 | l = l->next; |
| 12117 | 3686 | } |
| 12239 | 3687 | if(tooltip_text->len > 0) { |
|
12302
191d0fc44cfc
[gaim-migrate @ 14606]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12301
diff
changeset
|
3688 | /* get rid of the last newline */ |
|
14239
661d2bb9eb86
[gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents:
14230
diff
changeset
|
3689 | g_string_truncate(tooltip_text, tooltip_text->len -1); |
|
15692
ecda27df58b9
Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents:
15670
diff
changeset
|
3690 | 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
|
3691 | 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
|
3692 | |
|
191d0fc44cfc
[gaim-migrate @ 14606]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12301
diff
changeset
|
3693 | gtkblist->menutrayicon = gtk_event_box_new(); |
|
191d0fc44cfc
[gaim-migrate @ 14606]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12301
diff
changeset
|
3694 | gtk_container_add(GTK_CONTAINER(gtkblist->menutrayicon), img); |
|
191d0fc44cfc
[gaim-migrate @ 14606]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12301
diff
changeset
|
3695 | gtk_widget_show(img); |
|
191d0fc44cfc
[gaim-migrate @ 14606]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12301
diff
changeset
|
3696 | gtk_widget_show(gtkblist->menutrayicon); |
|
191d0fc44cfc
[gaim-migrate @ 14606]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12301
diff
changeset
|
3697 | 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
|
3698 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3699 | pidgin_menu_tray_append(PIDGIN_MENU_TRAY(gtkblist->menutray), gtkblist->menutrayicon, tooltip_text->str); |
| 12239 | 3700 | } |
|
12302
191d0fc44cfc
[gaim-migrate @ 14606]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12301
diff
changeset
|
3701 | g_string_free(tooltip_text, TRUE); |
|
12468
fe558afb01b4
[gaim-migrate @ 14778]
Casey Harkins <charkins@pidgin.im>
parents:
12466
diff
changeset
|
3702 | g_list_free(convs); |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12115
diff
changeset
|
3703 | } |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12115
diff
changeset
|
3704 | } |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12115
diff
changeset
|
3705 | |
|
12208
63faaf557886
[gaim-migrate @ 14510]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12191
diff
changeset
|
3706 | static void |
| 15884 | 3707 | conversation_deleting_cb(PurpleConversation *conv, PidginBuddyList *gtkblist) |
| 3708 | { | |
| 3709 | conversation_updated_cb(conv, PURPLE_CONV_UPDATE_UNSEEN, gtkblist); | |
|
12208
63faaf557886
[gaim-migrate @ 14510]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12191
diff
changeset
|
3710 | } |
|
63faaf557886
[gaim-migrate @ 14510]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12191
diff
changeset
|
3711 | |
| 5228 | 3712 | /********************************************************************************** |
| 3713 | * Public API Functions * | |
| 3714 | **********************************************************************************/ | |
| 9774 | 3715 | |
| 15884 | 3716 | 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
|
3717 | { |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3718 | PidginBuddyList *gtkblist; |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3719 | |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3720 | gtkblist = g_new0(PidginBuddyList, 1); |
|
13015
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
3721 | gtkblist->connection_errors = g_hash_table_new_full(g_direct_hash, |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
3722 | g_direct_equal, NULL, g_free); |
| 7620 | 3723 | blist->ui_data = gtkblist; |
| 5228 | 3724 | } |
| 3725 | ||
| 15884 | 3726 | 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
|
3727 | { |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3728 | 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
|
3729 | } |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3730 | |
| 15884 | 3731 | gboolean pidgin_blist_node_is_contact_expanded(PurpleBlistNode *node) |
| 3732 | { | |
| 3733 | if PURPLE_BLIST_NODE_IS_BUDDY(node) | |
|
11018
a3843543f132
[gaim-migrate @ 12888]
Richard Laager <rlaager@pidgin.im>
parents:
11016
diff
changeset
|
3734 | node = node->parent; |
|
a3843543f132
[gaim-migrate @ 12888]
Richard Laager <rlaager@pidgin.im>
parents:
11016
diff
changeset
|
3735 | |
| 15884 | 3736 | 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
|
3737 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3738 | return ((struct _pidgin_blist_node *)node->ui_data)->contact_expanded; |
|
11018
a3843543f132
[gaim-migrate @ 12888]
Richard Laager <rlaager@pidgin.im>
parents:
11016
diff
changeset
|
3739 | } |
|
a3843543f132
[gaim-migrate @ 12888]
Richard Laager <rlaager@pidgin.im>
parents:
11016
diff
changeset
|
3740 | |
|
10433
04cf48e72655
[gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents:
10418
diff
changeset
|
3741 | enum { |
|
04cf48e72655
[gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents:
10418
diff
changeset
|
3742 | DRAG_BUDDY, |
|
04cf48e72655
[gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents:
10418
diff
changeset
|
3743 | DRAG_ROW, |
|
04cf48e72655
[gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents:
10418
diff
changeset
|
3744 | DRAG_VCARD, |
|
04cf48e72655
[gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents:
10418
diff
changeset
|
3745 | DRAG_TEXT, |
|
04cf48e72655
[gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents:
10418
diff
changeset
|
3746 | DRAG_URI, |
|
04cf48e72655
[gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents:
10418
diff
changeset
|
3747 | NUM_TARGETS |
|
04cf48e72655
[gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents:
10418
diff
changeset
|
3748 | }; |
| 5228 | 3749 | |
|
13107
704041197f4d
[gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents:
13091
diff
changeset
|
3750 | static const char * |
| 5228 | 3751 | item_factory_translate_func (const char *path, gpointer func_data) |
| 3752 | { | |
| 7620 | 3753 | return _((char *)path); |
| 5228 | 3754 | } |
| 3755 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3756 | void pidgin_blist_setup_sort_methods() |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3757 | { |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3758 | pidgin_blist_sort_method_reg("none", _("Manually"), sort_method_none); |
| 7620 | 3759 | #if GTK_CHECK_VERSION(2,2,1) |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3760 | 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
|
3761 | 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
|
3762 | pidgin_blist_sort_method_reg("log_size", _("By log size"), sort_method_log); |
| 7620 | 3763 | #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
|
3764 | pidgin_blist_sort_method_set(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/blist/sort_type")); |
| 7620 | 3765 | } |
| 3766 | ||
|
10433
04cf48e72655
[gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents:
10418
diff
changeset
|
3767 | static void _prefs_change_redo_list() |
|
04cf48e72655
[gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents:
10418
diff
changeset
|
3768 | { |
|
13511
743387e8099e
[gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13510
diff
changeset
|
3769 | GtkTreeSelection *sel; |
|
743387e8099e
[gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13510
diff
changeset
|
3770 | GtkTreeIter iter; |
| 15884 | 3771 | PurpleBlistNode *node = NULL; |
|
13511
743387e8099e
[gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13510
diff
changeset
|
3772 | |
|
743387e8099e
[gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13510
diff
changeset
|
3773 | 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
|
3774 | if (gtk_tree_selection_get_selected(sel, NULL, &iter)) |
|
743387e8099e
[gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13510
diff
changeset
|
3775 | { |
|
743387e8099e
[gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13510
diff
changeset
|
3776 | 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
|
3777 | } |
|
743387e8099e
[gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13510
diff
changeset
|
3778 | |
| 15884 | 3779 | redo_buddy_list(purple_get_blist(), FALSE, FALSE); |
|
13162
43420c10065b
[gaim-migrate @ 15524]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13147
diff
changeset
|
3780 | #if GTK_CHECK_VERSION(2,6,0) |
|
43420c10065b
[gaim-migrate @ 15524]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13147
diff
changeset
|
3781 | gtk_tree_view_columns_autosize(GTK_TREE_VIEW(gtkblist->treeview)); |
|
43420c10065b
[gaim-migrate @ 15524]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13147
diff
changeset
|
3782 | #endif |
|
13511
743387e8099e
[gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13510
diff
changeset
|
3783 | |
|
743387e8099e
[gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13510
diff
changeset
|
3784 | if (node) |
|
743387e8099e
[gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13510
diff
changeset
|
3785 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3786 | struct _pidgin_blist_node *gtknode; |
|
13511
743387e8099e
[gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13510
diff
changeset
|
3787 | GtkTreePath *path; |
|
743387e8099e
[gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13510
diff
changeset
|
3788 | |
|
743387e8099e
[gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13510
diff
changeset
|
3789 | gtknode = node->ui_data; |
|
743387e8099e
[gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13510
diff
changeset
|
3790 | if (gtknode && gtknode->row) |
|
743387e8099e
[gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13510
diff
changeset
|
3791 | { |
|
743387e8099e
[gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13510
diff
changeset
|
3792 | path = gtk_tree_row_reference_get_path(gtknode->row); |
|
743387e8099e
[gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13510
diff
changeset
|
3793 | gtk_tree_selection_select_path(sel, path); |
|
743387e8099e
[gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13510
diff
changeset
|
3794 | 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
|
3795 | gtk_tree_path_free(path); |
|
743387e8099e
[gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13510
diff
changeset
|
3796 | } |
|
743387e8099e
[gaim-migrate @ 15886]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13510
diff
changeset
|
3797 | } |
| 7620 | 3798 | } |
| 3799 | ||
| 15884 | 3800 | 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
|
3801 | gconstpointer val, gpointer data) |
|
10433
04cf48e72655
[gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents:
10418
diff
changeset
|
3802 | { |
|
16123
8b98683319e7
Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16071
diff
changeset
|
3803 | 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
|
3804 | pidgin_blist_sort_method_set(val); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3805 | } |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3806 | |
| 15884 | 3807 | static void account_modified(PurpleAccount *account, PidginBuddyList *gtkblist) |
|
12522
5d2871278151
[gaim-migrate @ 14834]
Richard Laager <rlaager@pidgin.im>
parents:
12519
diff
changeset
|
3808 | { |
|
15088
d5bb04caf6e1
[gaim-migrate @ 17809]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15086
diff
changeset
|
3809 | GList *list; |
|
12522
5d2871278151
[gaim-migrate @ 14834]
Richard Laager <rlaager@pidgin.im>
parents:
12519
diff
changeset
|
3810 | if (!gtkblist) |
|
5d2871278151
[gaim-migrate @ 14834]
Richard Laager <rlaager@pidgin.im>
parents:
12519
diff
changeset
|
3811 | return; |
|
12589
e25ec53fe8b0
[gaim-migrate @ 14918]
Mark Doliner <markdoliner@pidgin.im>
parents:
12583
diff
changeset
|
3812 | |
| 15884 | 3813 | if ((list = purple_accounts_get_all_active()) != NULL) { |
| 15086 | 3814 | 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
|
3815 | g_list_free(list); |
|
d5bb04caf6e1
[gaim-migrate @ 17809]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15086
diff
changeset
|
3816 | } else |
| 15086 | 3817 | gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkblist->notebook), 0); |
| 3818 | ||
|
12522
5d2871278151
[gaim-migrate @ 14834]
Richard Laager <rlaager@pidgin.im>
parents:
12519
diff
changeset
|
3819 | update_menu_bar(gtkblist); |
|
5d2871278151
[gaim-migrate @ 14834]
Richard Laager <rlaager@pidgin.im>
parents:
12519
diff
changeset
|
3820 | } |
|
5d2871278151
[gaim-migrate @ 14834]
Richard Laager <rlaager@pidgin.im>
parents:
12519
diff
changeset
|
3821 | |
| 12766 | 3822 | static void |
| 15884 | 3823 | account_status_changed(PurpleAccount *account, PurpleStatus *old, |
| 3824 | PurpleStatus *new, PidginBuddyList *gtkblist) | |
| 12766 | 3825 | { |
| 3826 | if (!gtkblist) | |
| 3827 | return; | |
| 3828 | ||
| 3829 | update_menu_bar(gtkblist); | |
| 3830 | } | |
| 3831 | ||
|
12124
97ff43883157
[gaim-migrate @ 14424]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12119
diff
changeset
|
3832 | static gboolean |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3833 | 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
|
3834 | { |
|
960ff25e0214
[gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12458
diff
changeset
|
3835 | GtkWidget *imhtml; |
|
960ff25e0214
[gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12458
diff
changeset
|
3836 | |
|
960ff25e0214
[gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12458
diff
changeset
|
3837 | if (!gtkblist) |
|
960ff25e0214
[gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12458
diff
changeset
|
3838 | return FALSE; |
|
960ff25e0214
[gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12458
diff
changeset
|
3839 | |
|
960ff25e0214
[gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12458
diff
changeset
|
3840 | imhtml = gtk_window_get_focus(GTK_WINDOW(gtkblist->window)); |
|
960ff25e0214
[gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12458
diff
changeset
|
3841 | |
|
12474
630f34dde22d
[gaim-migrate @ 14785]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12473
diff
changeset
|
3842 | 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
|
3843 | return TRUE; |
|
960ff25e0214
[gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12458
diff
changeset
|
3844 | return FALSE; |
|
960ff25e0214
[gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12458
diff
changeset
|
3845 | } |
|
960ff25e0214
[gaim-migrate @ 14771]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12458
diff
changeset
|
3846 | |
| 15243 | 3847 | static gboolean |
|
15300
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3848 | headline_hover_close(int x, int y) |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3849 | { |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3850 | GtkWidget *w = gtkblist->headline_hbox; |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3851 | 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
|
3852 | y >= 0 && y <= HEADLINE_CLOSE_SIZE) |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3853 | return TRUE; |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3854 | return FALSE; |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3855 | } |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3856 | |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3857 | static gboolean |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3858 | headline_box_enter_cb(GtkWidget *widget, GdkEventCrossing *event, PidginBuddyList *gtkblist) |
| 15243 | 3859 | { |
| 3860 | gdk_window_set_cursor(widget->window, gtkblist->hand_cursor); | |
|
15300
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3861 | |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3862 | if (gtkblist->headline_close) { |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3863 | #if GTK_CHECK_VERSION(2,2,0) |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3864 | gdk_draw_pixbuf(widget->window, NULL, gtkblist->headline_close, |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3865 | #else |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3866 | gdk_pixbuf_render_to_drawable(gtkblist->headline_close, |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3867 | GDK_DRAWABLE(widget->window), NULL, |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3868 | #endif |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3869 | 0, 0, |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3870 | widget->allocation.width - 2 - HEADLINE_CLOSE_SIZE, 2, |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3871 | HEADLINE_CLOSE_SIZE, HEADLINE_CLOSE_SIZE, |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3872 | GDK_RGB_DITHER_NONE, 0, 0); |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3873 | gtk_paint_focus(widget->style, widget->window, GTK_STATE_PRELIGHT, |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3874 | NULL, widget, NULL, |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3875 | widget->allocation.width - HEADLINE_CLOSE_SIZE - 3, 1, |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3876 | HEADLINE_CLOSE_SIZE + 2, HEADLINE_CLOSE_SIZE + 2); |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3877 | } |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3878 | |
| 15243 | 3879 | return FALSE; |
| 3880 | } | |
| 3881 | ||
|
15300
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3882 | #if 0 |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3883 | static gboolean |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3884 | 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
|
3885 | { |
| 15884 | 3886 | 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
|
3887 | if (headline_hover_close((int)event->x, (int)event->y)) |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3888 | gtk_paint_focus(widget->style, widget->window, GTK_STATE_PRELIGHT, |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3889 | NULL, widget, NULL, |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3890 | widget->allocation.width - HEADLINE_CLOSE_SIZE - 3, 1, |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3891 | HEADLINE_CLOSE_SIZE + 2, HEADLINE_CLOSE_SIZE + 2); |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3892 | return FALSE; |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3893 | } |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3894 | #endif |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3895 | |
| 15243 | 3896 | static gboolean |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3897 | headline_box_leave_cb(GtkWidget *widget, GdkEventCrossing *event, PidginBuddyList *gtkblist) |
| 15243 | 3898 | { |
| 3899 | gdk_window_set_cursor(widget->window, gtkblist->arrow_cursor); | |
|
15300
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3900 | if (gtkblist->headline_close) { |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3901 | GdkRectangle rect = {widget->allocation.width - 3 - HEADLINE_CLOSE_SIZE, 1, |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3902 | HEADLINE_CLOSE_SIZE + 2, HEADLINE_CLOSE_SIZE + 2}; |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3903 | gdk_window_invalidate_rect(widget->window, &rect, TRUE); |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3904 | } |
| 15243 | 3905 | return FALSE; |
| 3906 | } | |
| 3907 | ||
|
15386
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15385
diff
changeset
|
3908 | static void |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3909 | reset_headline(PidginBuddyList *gtkblist) |
|
15386
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15385
diff
changeset
|
3910 | { |
|
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15385
diff
changeset
|
3911 | gtkblist->headline_callback = NULL; |
|
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15385
diff
changeset
|
3912 | gtkblist->headline_data = NULL; |
|
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15385
diff
changeset
|
3913 | gtkblist->headline_destroy = NULL; |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3914 | pidgin_set_urgent(GTK_WINDOW(gtkblist->window), FALSE); |
|
15386
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15385
diff
changeset
|
3915 | } |
|
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15385
diff
changeset
|
3916 | |
| 15243 | 3917 | static gboolean |
|
15259
5d4dc3a3019f
[gaim-migrate @ 17987]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15246
diff
changeset
|
3918 | headline_click_callback(gpointer data) |
|
5d4dc3a3019f
[gaim-migrate @ 17987]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15246
diff
changeset
|
3919 | { |
|
5d4dc3a3019f
[gaim-migrate @ 17987]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15246
diff
changeset
|
3920 | ((GSourceFunc)gtkblist->headline_callback)(gtkblist->headline_data); |
|
15386
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15385
diff
changeset
|
3921 | reset_headline(gtkblist); |
|
15259
5d4dc3a3019f
[gaim-migrate @ 17987]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15246
diff
changeset
|
3922 | return FALSE; |
|
5d4dc3a3019f
[gaim-migrate @ 17987]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15246
diff
changeset
|
3923 | } |
|
5d4dc3a3019f
[gaim-migrate @ 17987]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15246
diff
changeset
|
3924 | |
|
5d4dc3a3019f
[gaim-migrate @ 17987]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15246
diff
changeset
|
3925 | static gboolean |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3926 | headline_box_press_cb(GtkWidget *widget, GdkEventButton *event, PidginBuddyList *gtkblist) |
| 15243 | 3927 | { |
| 3928 | gtk_widget_hide(gtkblist->headline_hbox); | |
|
15300
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
3929 | 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
|
3930 | 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
|
3931 | else { |
|
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15385
diff
changeset
|
3932 | if (gtkblist->headline_destroy) |
|
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15385
diff
changeset
|
3933 | gtkblist->headline_destroy(gtkblist->headline_data); |
|
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15385
diff
changeset
|
3934 | reset_headline(gtkblist); |
|
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15385
diff
changeset
|
3935 | } |
|
15259
5d4dc3a3019f
[gaim-migrate @ 17987]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15246
diff
changeset
|
3936 | return TRUE; |
| 15243 | 3937 | } |
| 3938 | ||
|
13015
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
3939 | /***********************************/ |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
3940 | /* Connection error handling stuff */ |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
3941 | /***********************************/ |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
3942 | |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
3943 | static void |
| 15884 | 3944 | ce_modify_account_cb(PurpleAccount *account) |
|
13316
f3825018dc2b
[gaim-migrate @ 15681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13294
diff
changeset
|
3945 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
3946 | pidgin_account_dialog_show(PIDGIN_MODIFY_ACCOUNT_DIALOG, account); |
|
13316
f3825018dc2b
[gaim-migrate @ 15681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13294
diff
changeset
|
3947 | } |
|
f3825018dc2b
[gaim-migrate @ 15681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13294
diff
changeset
|
3948 | |
|
f3825018dc2b
[gaim-migrate @ 15681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13294
diff
changeset
|
3949 | static void |
| 15884 | 3950 | ce_enable_account_cb(PurpleAccount *account) |
| 3951 | { | |
| 3952 | 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
|
3953 | } |
|
f3825018dc2b
[gaim-migrate @ 15681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13294
diff
changeset
|
3954 | |
|
f3825018dc2b
[gaim-migrate @ 15681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13294
diff
changeset
|
3955 | static void |
|
13015
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
3956 | connection_error_button_clicked_cb(GtkButton *widget, gpointer user_data) |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
3957 | { |
| 15884 | 3958 | PurpleAccount *account; |
|
13023
6c85f34839bf
[gaim-migrate @ 15376]
Mark Doliner <markdoliner@pidgin.im>
parents:
13022
diff
changeset
|
3959 | char *primary; |
|
6c85f34839bf
[gaim-migrate @ 15376]
Mark Doliner <markdoliner@pidgin.im>
parents:
13022
diff
changeset
|
3960 | const char *text; |
|
13732
924f1827ea50
[gaim-migrate @ 16141]
Mark Doliner <markdoliner@pidgin.im>
parents:
13691
diff
changeset
|
3961 | gboolean enabled; |
|
13015
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 | account = user_data; |
|
13023
6c85f34839bf
[gaim-migrate @ 15376]
Mark Doliner <markdoliner@pidgin.im>
parents:
13022
diff
changeset
|
3964 | primary = g_strdup_printf(_("%s disconnected"), |
| 15884 | 3965 | purple_account_get_username(account)); |
|
13015
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
3966 | text = g_hash_table_lookup(gtkblist->connection_errors, account); |
|
13376
4b4c3c4d068e
[gaim-migrate @ 15748]
Mark Doliner <markdoliner@pidgin.im>
parents:
13337
diff
changeset
|
3967 | |
| 15884 | 3968 | enabled = purple_account_get_enabled(account, purple_core_get_ui()); |
| 3969 | purple_request_action(account, _("Connection Error"), primary, text, 2, | |
|
16490
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
16357
diff
changeset
|
3970 | account, NULL, NULL, |
|
13732
924f1827ea50
[gaim-migrate @ 16141]
Mark Doliner <markdoliner@pidgin.im>
parents:
13691
diff
changeset
|
3971 | account, 3, |
|
924f1827ea50
[gaim-migrate @ 16141]
Mark Doliner <markdoliner@pidgin.im>
parents:
13691
diff
changeset
|
3972 | _("OK"), NULL, |
| 15884 | 3973 | _("Modify Account"), PURPLE_CALLBACK(ce_modify_account_cb), |
|
13732
924f1827ea50
[gaim-migrate @ 16141]
Mark Doliner <markdoliner@pidgin.im>
parents:
13691
diff
changeset
|
3974 | enabled ? _("Connect") : _("Re-enable Account"), |
| 15884 | 3975 | enabled ? PURPLE_CALLBACK(purple_account_connect) : |
| 3976 | PURPLE_CALLBACK(ce_enable_account_cb)); | |
|
13630
b41b3225c2ce
[gaim-migrate @ 16016]
Daniel Atallah <datallah@pidgin.im>
parents:
13613
diff
changeset
|
3977 | g_free(primary); |
|
13015
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
3978 | gtk_widget_destroy(GTK_WIDGET(widget)); |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
3979 | g_hash_table_remove(gtkblist->connection_errors, account); |
|
17141
f7d7dbca47cd
Pack connection error buttons the same way the statusbox is. Fixes #120
Sean Egan <seanegan@pidgin.im>
parents:
17086
diff
changeset
|
3980 | if (gtk_container_get_children(GTK_CONTAINER(gtkblist->error_buttons)) == NULL) { |
|
f7d7dbca47cd
Pack connection error buttons the same way the statusbox is. Fixes #120
Sean Egan <seanegan@pidgin.im>
parents:
17086
diff
changeset
|
3981 | gtk_widget_hide(gtkblist->error_buttons); |
|
f7d7dbca47cd
Pack connection error buttons the same way the statusbox is. Fixes #120
Sean Egan <seanegan@pidgin.im>
parents:
17086
diff
changeset
|
3982 | } |
|
13015
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
3983 | } |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
3984 | |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
3985 | /* Add some buttons that show connection errors */ |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
3986 | static void |
| 13022 | 3987 | create_connection_error_buttons(gpointer key, gpointer value, |
| 3988 | gpointer user_data) | |
|
13015
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
3989 | { |
| 15884 | 3990 | PurpleAccount *account; |
| 3991 | PurpleStatusType *status_type; | |
|
13091
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
13049
diff
changeset
|
3992 | gchar *escaped, *text; |
| 13022 | 3993 | GtkWidget *button, *label, *image, *hbox; |
|
13091
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
13049
diff
changeset
|
3994 | GdkPixbuf *pixbuf; |
|
13015
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
3995 | |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
3996 | account = key; |
|
13049
5b9fac63e263
[gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents:
13038
diff
changeset
|
3997 | escaped = g_markup_escape_text((const gchar *)value, -1); |
|
13023
6c85f34839bf
[gaim-migrate @ 15376]
Mark Doliner <markdoliner@pidgin.im>
parents:
13022
diff
changeset
|
3998 | text = g_strdup_printf(_("<span color=\"red\">%s disconnected: %s</span>"), |
| 15884 | 3999 | purple_account_get_username(account), |
|
13049
5b9fac63e263
[gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents:
13038
diff
changeset
|
4000 | escaped); |
|
5b9fac63e263
[gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents:
13038
diff
changeset
|
4001 | g_free(escaped); |
|
5b9fac63e263
[gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents:
13038
diff
changeset
|
4002 | |
|
17141
f7d7dbca47cd
Pack connection error buttons the same way the statusbox is. Fixes #120
Sean Egan <seanegan@pidgin.im>
parents:
17086
diff
changeset
|
4003 | hbox = gtk_hbox_new(FALSE, 6); |
|
13049
5b9fac63e263
[gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents:
13038
diff
changeset
|
4004 | |
|
5b9fac63e263
[gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents:
13038
diff
changeset
|
4005 | /* Create the icon */ |
| 15884 | 4006 | if ((status_type = purple_account_get_status_type_with_primitive(account, |
| 4007 | 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
|
4008 | pixbuf = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_SMALL); |
|
14137
48e2c0761c14
[gaim-migrate @ 16696]
Daniel Atallah <datallah@pidgin.im>
parents:
14136
diff
changeset
|
4009 | if (pixbuf != NULL) { |
|
48e2c0761c14
[gaim-migrate @ 16696]
Daniel Atallah <datallah@pidgin.im>
parents:
14136
diff
changeset
|
4010 | image = gtk_image_new_from_pixbuf(pixbuf); |
|
48e2c0761c14
[gaim-migrate @ 16696]
Daniel Atallah <datallah@pidgin.im>
parents:
14136
diff
changeset
|
4011 | g_object_unref(pixbuf); |
|
48e2c0761c14
[gaim-migrate @ 16696]
Daniel Atallah <datallah@pidgin.im>
parents:
14136
diff
changeset
|
4012 | |
|
17141
f7d7dbca47cd
Pack connection error buttons the same way the statusbox is. Fixes #120
Sean Egan <seanegan@pidgin.im>
parents:
17086
diff
changeset
|
4013 | gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 0); |
|
14137
48e2c0761c14
[gaim-migrate @ 16696]
Daniel Atallah <datallah@pidgin.im>
parents:
14136
diff
changeset
|
4014 | } |
| 13022 | 4015 | } |
| 4016 | ||
|
13049
5b9fac63e263
[gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents:
13038
diff
changeset
|
4017 | /* Create the text */ |
| 13022 | 4018 | label = gtk_label_new(""); |
| 4019 | gtk_label_set_markup(GTK_LABEL(label), text); | |
| 4020 | g_free(text); | |
| 4021 | #if GTK_CHECK_VERSION(2,6,0) | |
| 4022 | g_object_set(label, "ellipsize", PANGO_ELLIPSIZE_END, NULL); | |
| 4023 | #endif | |
|
17141
f7d7dbca47cd
Pack connection error buttons the same way the statusbox is. Fixes #120
Sean Egan <seanegan@pidgin.im>
parents:
17086
diff
changeset
|
4024 | gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0); |
| 13022 | 4025 | |
|
13049
5b9fac63e263
[gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents:
13038
diff
changeset
|
4026 | /* Create the actual button and put the icon and text on it */ |
| 13022 | 4027 | button = gtk_button_new(); |
| 4028 | gtk_container_add(GTK_CONTAINER(button), hbox); | |
|
13015
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4029 | g_signal_connect(G_OBJECT(button), "clicked", |
| 13022 | 4030 | G_CALLBACK(connection_error_button_clicked_cb), |
| 4031 | account); | |
|
13049
5b9fac63e263
[gaim-migrate @ 15410]
Mark Doliner <markdoliner@pidgin.im>
parents:
13038
diff
changeset
|
4032 | gtk_widget_show_all(button); |
| 13022 | 4033 | gtk_box_pack_end(GTK_BOX(gtkblist->error_buttons), button, |
| 4034 | FALSE, FALSE, 0); | |
|
17141
f7d7dbca47cd
Pack connection error buttons the same way the statusbox is. Fixes #120
Sean Egan <seanegan@pidgin.im>
parents:
17086
diff
changeset
|
4035 | gtk_widget_show_all(gtkblist->error_buttons); |
|
13015
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4036 | } |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4037 | |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4038 | void |
| 15884 | 4039 | 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
|
4040 | { |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4041 | GList *l; |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4042 | |
|
13016
29dd619e4d41
[gaim-migrate @ 15369]
Mark Doliner <markdoliner@pidgin.im>
parents:
13015
diff
changeset
|
4043 | if (text == NULL) |
|
13015
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4044 | g_hash_table_remove(gtkblist->connection_errors, account); |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4045 | else |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4046 | g_hash_table_insert(gtkblist->connection_errors, account, g_strdup(text)); |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4047 | |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4048 | /* Remove the old error buttons */ |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4049 | for (l = gtk_container_get_children(GTK_CONTAINER(gtkblist->error_buttons)); |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4050 | l != NULL; |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4051 | l = l->next) |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4052 | { |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4053 | gtk_widget_destroy(GTK_WIDGET(l->data)); |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4054 | } |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4055 | |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4056 | /* Add new error buttons */ |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4057 | g_hash_table_foreach(gtkblist->connection_errors, |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4058 | create_connection_error_buttons, NULL); |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4059 | } |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4060 | |
| 15243 | 4061 | static gboolean |
| 4062 | paint_headline_hbox (GtkWidget *widget, | |
| 15246 | 4063 | GdkEventExpose *event, |
|
15300
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
4064 | gpointer user_data) |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
4065 | { |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
4066 | gtk_paint_flat_box (widget->style, |
| 15243 | 4067 | widget->window, |
| 4068 | GTK_STATE_NORMAL, | |
| 4069 | GTK_SHADOW_OUT, | |
| 4070 | NULL, | |
| 4071 | widget, | |
| 4072 | "tooltip", | |
| 4073 | widget->allocation.x + 1, | |
| 4074 | widget->allocation.y + 1, | |
| 4075 | widget->allocation.width - 2, | |
| 4076 | widget->allocation.height - 2); | |
|
15300
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
4077 | return FALSE; |
| 15243 | 4078 | } |
| 4079 | ||
|
15621
947891574425
Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents:
15614
diff
changeset
|
4080 | /* 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
|
4081 | * 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
|
4082 | */ |
|
947891574425
Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents:
15614
diff
changeset
|
4083 | static void |
|
947891574425
Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents:
15614
diff
changeset
|
4084 | treeview_style_set (GtkWidget *widget, |
|
947891574425
Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents:
15614
diff
changeset
|
4085 | GtkStyle *prev_style, |
|
947891574425
Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents:
15614
diff
changeset
|
4086 | gpointer data) |
|
947891574425
Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents:
15614
diff
changeset
|
4087 | { |
| 15884 | 4088 | PurpleBuddyList *list = data; |
| 4089 | PurpleBlistNode *node = list->root; | |
|
15621
947891574425
Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents:
15614
diff
changeset
|
4090 | while (node) { |
|
947891574425
Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents:
15614
diff
changeset
|
4091 | 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
|
4092 | node = node->next; |
|
947891574425
Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents:
15614
diff
changeset
|
4093 | } |
|
947891574425
Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents:
15614
diff
changeset
|
4094 | } |
|
947891574425
Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents:
15614
diff
changeset
|
4095 | |
| 15246 | 4096 | static void |
| 4097 | headline_style_set (GtkWidget *widget, | |
| 4098 | GtkStyle *prev_style) | |
| 4099 | { | |
| 4100 | GtkTooltips *tooltips; | |
| 4101 | GtkStyle *style; | |
|
15260
a9e3babd5686
[gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents:
15259
diff
changeset
|
4102 | |
| 15246 | 4103 | if (gtkblist->changing_style) |
| 4104 | return; | |
|
15260
a9e3babd5686
[gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents:
15259
diff
changeset
|
4105 | |
| 15246 | 4106 | tooltips = gtk_tooltips_new (); |
|
15260
a9e3babd5686
[gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents:
15259
diff
changeset
|
4107 | #if GLIB_CHECK_VERSION(2,10,0) |
| 15246 | 4108 | g_object_ref_sink (tooltips); |
|
15260
a9e3babd5686
[gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents:
15259
diff
changeset
|
4109 | #else |
|
a9e3babd5686
[gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents:
15259
diff
changeset
|
4110 | g_object_ref(tooltips); |
|
a9e3babd5686
[gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents:
15259
diff
changeset
|
4111 | gtk_object_sink(GTK_OBJECT(tooltips)); |
|
a9e3babd5686
[gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents:
15259
diff
changeset
|
4112 | #endif |
| 15246 | 4113 | |
| 4114 | gtk_tooltips_force_window (tooltips); | |
| 4115 | gtk_widget_ensure_style (tooltips->tip_window); | |
| 4116 | style = gtk_widget_get_style (tooltips->tip_window); | |
|
15260
a9e3babd5686
[gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents:
15259
diff
changeset
|
4117 | |
| 15246 | 4118 | gtkblist->changing_style = TRUE; |
| 4119 | gtk_widget_set_style (gtkblist->headline_hbox, style); | |
|
15260
a9e3babd5686
[gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents:
15259
diff
changeset
|
4120 | gtkblist->changing_style = FALSE; |
|
a9e3babd5686
[gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents:
15259
diff
changeset
|
4121 | |
| 15246 | 4122 | g_object_unref (tooltips); |
| 4123 | } | |
| 15086 | 4124 | |
|
13015
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4125 | /******************************************/ |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4126 | /* End of connection error handling stuff */ |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4127 | /******************************************/ |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4128 | |
| 15413 | 4129 | static int |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4130 | 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
|
4131 | { |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4132 | pidgin_set_urgent(GTK_WINDOW(gtkblist->window), FALSE); |
| 15413 | 4133 | return 0; |
| 4134 | } | |
| 4135 | ||
| 15086 | 4136 | #if 0 |
| 4137 | static GtkWidget * | |
| 4138 | kiosk_page() | |
| 4139 | { | |
| 15882 | 4140 | GtkWidget *ret = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); |
| 15086 | 4141 | GtkWidget *label; |
| 4142 | GtkWidget *entry; | |
| 4143 | GtkWidget *bbox; | |
| 4144 | GtkWidget *button; | |
| 4145 | ||
| 4146 | label = gtk_label_new(NULL); | |
| 4147 | gtk_box_pack_start(GTK_BOX(ret), label, TRUE, TRUE, 0); | |
| 4148 | ||
| 4149 | label = gtk_label_new(NULL); | |
| 4150 | gtk_label_set_markup(GTK_LABEL(label), _("<b>Username:</b>")); | |
| 4151 | gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); | |
| 4152 | gtk_box_pack_start(GTK_BOX(ret), label, FALSE, FALSE, 0); | |
| 4153 | entry = gtk_entry_new(); | |
| 4154 | gtk_box_pack_start(GTK_BOX(ret), entry, FALSE, FALSE, 0); | |
| 4155 | ||
| 4156 | label = gtk_label_new(NULL); | |
| 4157 | gtk_label_set_markup(GTK_LABEL(label), _("<b>Password:</b>")); | |
| 4158 | gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); | |
| 4159 | gtk_box_pack_start(GTK_BOX(ret), label, FALSE, FALSE, 0); | |
| 4160 | entry = gtk_entry_new(); | |
| 4161 | gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); | |
| 4162 | gtk_box_pack_start(GTK_BOX(ret), entry, FALSE, FALSE, 0); | |
| 4163 | ||
| 4164 | label = gtk_label_new(" "); | |
| 4165 | gtk_box_pack_start(GTK_BOX(ret), label, FALSE, FALSE, 0); | |
| 4166 | ||
| 4167 | bbox = gtk_hbutton_box_new(); | |
| 4168 | button = gtk_button_new_with_mnemonic(_("_Login")); | |
| 4169 | gtk_box_pack_start(GTK_BOX(ret), bbox, FALSE, FALSE, 0); | |
| 4170 | gtk_container_add(GTK_CONTAINER(bbox), button); | |
| 4171 | ||
|
15260
a9e3babd5686
[gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents:
15259
diff
changeset
|
4172 | |
| 15086 | 4173 | label = gtk_label_new(NULL); |
| 4174 | gtk_box_pack_start(GTK_BOX(ret), label, TRUE, TRUE, 0); | |
| 4175 | ||
| 15882 | 4176 | gtk_container_set_border_width(GTK_CONTAINER(ret), PIDGIN_HIG_BORDER); |
| 15086 | 4177 | |
| 4178 | gtk_widget_show_all(ret); | |
| 4179 | return ret; | |
| 4180 | } | |
| 4181 | #endif | |
| 4182 | ||
| 15884 | 4183 | static void pidgin_blist_show(PurpleBuddyList *list) |
| 5228 | 4184 | { |
|
10087
e5b80a38939d
[gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10079
diff
changeset
|
4185 | void *handle; |
| 5228 | 4186 | GtkCellRenderer *rend; |
| 4187 | GtkTreeViewColumn *column; | |
|
10178
16a2e27759fe
[gaim-migrate @ 11293]
Christian Hammond <chipx86@chipx86.com>
parents:
10144
diff
changeset
|
4188 | GtkWidget *menu; |
| 15243 | 4189 | GtkWidget *ebox; |
| 5228 | 4190 | GtkWidget *sw; |
| 14608 | 4191 | GtkWidget *sep; |
| 15086 | 4192 | GtkWidget *label; |
| 15091 | 4193 | GList *accounts; |
|
16071
044392e01c96
make things cleaner for translators
Nathan Walp <nwalp@pidgin.im>
parents:
16068
diff
changeset
|
4194 | char *pretty, *tmp; |
| 5228 | 4195 | GtkAccelGroup *accel_group; |
| 4196 | GtkTreeSelection *selection; | |
| 15884 | 4197 | GtkTargetEntry dte[] = {{"PURPLE_BLIST_NODE", GTK_TARGET_SAME_APP, DRAG_ROW}, |
| 8089 | 4198 | {"application/x-im-contact", 0, DRAG_BUDDY}, |
| 9495 | 4199 | {"text/x-vcard", 0, DRAG_VCARD }, |
| 9525 | 4200 | {"text/uri-list", 0, DRAG_URI}, |
| 4201 | {"text/plain", 0, DRAG_TEXT}}; | |
| 15884 | 4202 | GtkTargetEntry ste[] = {{"PURPLE_BLIST_NODE", GTK_TARGET_SAME_APP, DRAG_ROW}, |
| 9556 | 4203 | {"application/x-im-contact", 0, DRAG_BUDDY}, |
| 4204 | {"text/x-vcard", 0, DRAG_VCARD }}; | |
| 5228 | 4205 | 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
|
4206 | purple_blist_set_visible(purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/list_visible")); |
| 5228 | 4207 | return; |
| 4208 | } | |
| 4209 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4210 | gtkblist = PIDGIN_BLIST(list); |
| 5228 | 4211 | |
| 15509 | 4212 | gtkblist->empty_avatar = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, 32, 32); |
| 4213 | gdk_pixbuf_fill(gtkblist->empty_avatar, 0x00000000); | |
|
15458
39c79dc7c965
A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
4214 | |
| 5228 | 4215 | gtkblist->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
| 4216 | gtk_window_set_role(GTK_WINDOW(gtkblist->window), "buddy_list"); | |
| 9746 | 4217 | gtk_window_set_title(GTK_WINDOW(gtkblist->window), _("Buddy List")); |
| 15413 | 4218 | g_signal_connect(G_OBJECT(gtkblist->window), "focus-in-event", |
| 4219 | G_CALLBACK(blist_focus_cb), gtkblist); | |
| 12328 | 4220 | GTK_WINDOW(gtkblist->window)->allow_shrink = TRUE; |
| 5228 | 4221 | |
| 15086 | 4222 | gtkblist->main_vbox = gtk_vbox_new(FALSE, 0); |
| 4223 | gtk_widget_show(gtkblist->main_vbox); | |
| 4224 | gtk_container_add(GTK_CONTAINER(gtkblist->window), gtkblist->main_vbox); | |
| 5228 | 4225 | |
|
12016
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
4226 | g_signal_connect(G_OBJECT(gtkblist->window), "delete_event", G_CALLBACK(gtk_blist_delete_cb), NULL); |
| 5228 | 4227 | 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
|
4228 | 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
|
4229 | 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
|
4230 | g_signal_connect(G_OBJECT(gtkblist->window), "key_press_event", G_CALLBACK(gtk_blist_window_key_press_cb), gtkblist); |
| 5228 | 4231 | gtk_widget_add_events(gtkblist->window, GDK_VISIBILITY_NOTIFY_MASK); |
| 4232 | ||
| 4233 | /******************************* Menu bar *************************************/ | |
| 4234 | accel_group = gtk_accel_group_new(); | |
| 4235 | gtk_window_add_accel_group(GTK_WINDOW (gtkblist->window), accel_group); | |
| 4236 | g_object_unref(accel_group); | |
| 15884 | 4237 | 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
|
4238 | gtk_item_factory_set_translate_func(gtkblist->ift, |
|
13107
704041197f4d
[gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents:
13091
diff
changeset
|
4239 | (GtkTranslateFunc)item_factory_translate_func, |
|
9811
2cbca162a09f
[gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents:
9791
diff
changeset
|
4240 | NULL, NULL); |
|
5427
a45fa07ef20d
[gaim-migrate @ 5806]
Mark Doliner <markdoliner@pidgin.im>
parents:
5422
diff
changeset
|
4241 | 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
|
4242 | blist_menu, NULL); |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4243 | pidgin_load_accels(); |
| 7620 | 4244 | 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
|
4245 | G_CALLBACK(pidgin_save_accels_cb), NULL); |
| 15884 | 4246 | 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
|
4247 | gtkblist->menutray = pidgin_menu_tray_new(); |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12115
diff
changeset
|
4248 | gtk_menu_shell_append(GTK_MENU_SHELL(menu), gtkblist->menutray); |
|
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12115
diff
changeset
|
4249 | gtk_widget_show(gtkblist->menutray); |
|
10178
16a2e27759fe
[gaim-migrate @ 11293]
Christian Hammond <chipx86@chipx86.com>
parents:
10144
diff
changeset
|
4250 | gtk_widget_show(menu); |
| 15086 | 4251 | gtk_box_pack_start(GTK_BOX(gtkblist->main_vbox), menu, FALSE, FALSE, 0); |
| 5228 | 4252 | |
| 12296 | 4253 | accountmenu = gtk_item_factory_get_widget(gtkblist->ift, N_("/Accounts")); |
|
10352
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
4254 | |
| 14471 | 4255 | |
| 15086 | 4256 | /****************************** Notebook *************************************/ |
| 4257 | gtkblist->notebook = gtk_notebook_new(); | |
| 4258 | gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkblist->notebook), FALSE); | |
| 4259 | gtk_notebook_set_show_border(GTK_NOTEBOOK(gtkblist->notebook), FALSE); | |
| 4260 | gtk_box_pack_start(GTK_BOX(gtkblist->main_vbox), gtkblist->notebook, TRUE, TRUE, 0); | |
| 4261 | ||
| 4262 | #if 0 | |
| 4263 | gtk_notebook_append_page(GTK_NOTEBOOK(gtkblist->notebook), kiosk_page(), NULL); | |
| 4264 | #endif | |
| 4265 | ||
| 4266 | /* 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
|
4267 | 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
|
4268 | |
| 15086 | 4269 | "You have no accounts enabled. Enable your IM accounts from the " |
| 4270 | "<b>Accounts</b> window at <b>Accounts->Add/Edit</b>. Once you " | |
| 4271 | "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
|
4272 | "and talk to your friends."), PIDGIN_NAME); |
|
044392e01c96
make things cleaner for translators
Nathan Walp <nwalp@pidgin.im>
parents:
16068
diff
changeset
|
4273 | pretty = pidgin_make_pretty_arrows(tmp); |
|
044392e01c96
make things cleaner for translators
Nathan Walp <nwalp@pidgin.im>
parents:
16068
diff
changeset
|
4274 | g_free(tmp); |
| 15086 | 4275 | 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
|
4276 | gtk_widget_set_size_request(label, purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/width") - 12, -1); |
| 15086 | 4277 | gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); |
| 4278 | gtk_misc_set_alignment(GTK_MISC(label), 0.5, 0.2); | |
| 4279 | gtk_label_set_markup(GTK_LABEL(label), pretty); | |
| 4280 | g_free(pretty); | |
| 4281 | gtk_notebook_append_page(GTK_NOTEBOOK(gtkblist->notebook),label, NULL); | |
| 4282 | gtkblist->vbox = gtk_vbox_new(FALSE, 0); | |
| 4283 | gtk_notebook_append_page(GTK_NOTEBOOK(gtkblist->notebook), gtkblist->vbox, NULL); | |
| 4284 | gtk_widget_show_all(gtkblist->notebook); | |
| 15884 | 4285 | if ((accounts = purple_accounts_get_all_active())) { |
| 15091 | 4286 | g_list_free(accounts); |
| 15089 | 4287 | gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkblist->notebook), 1); |
| 15091 | 4288 | } |
| 15086 | 4289 | |
| 15243 | 4290 | ebox = gtk_event_box_new(); |
| 4291 | gtk_box_pack_start(GTK_BOX(gtkblist->vbox), ebox, FALSE, FALSE, 0); | |
| 4292 | gtkblist->headline_hbox = gtk_hbox_new(FALSE, 3); | |
| 4293 | gtk_container_set_border_width(GTK_CONTAINER(gtkblist->headline_hbox), 6); | |
| 4294 | gtk_container_add(GTK_CONTAINER(ebox), gtkblist->headline_hbox); | |
| 4295 | gtkblist->headline_image = gtk_image_new_from_pixbuf(NULL); | |
| 15246 | 4296 | gtk_misc_set_alignment(GTK_MISC(gtkblist->headline_image), 0.0, 0); |
| 15243 | 4297 | gtkblist->headline_label = gtk_label_new(NULL); |
| 15246 | 4298 | 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
|
4299 | purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/width")-25,-1); |
| 15246 | 4300 | gtk_label_set_line_wrap(GTK_LABEL(gtkblist->headline_label), TRUE); |
| 15243 | 4301 | gtk_box_pack_start(GTK_BOX(gtkblist->headline_hbox), gtkblist->headline_image, FALSE, FALSE, 0); |
| 4302 | gtk_box_pack_start(GTK_BOX(gtkblist->headline_hbox), gtkblist->headline_label, TRUE, TRUE, 0); | |
| 15246 | 4303 | g_signal_connect(gtkblist->headline_hbox, |
| 4304 | "style-set", | |
| 4305 | G_CALLBACK(headline_style_set), | |
| 4306 | NULL); | |
| 15243 | 4307 | g_signal_connect (gtkblist->headline_hbox, |
| 4308 | "expose_event", | |
| 4309 | G_CALLBACK (paint_headline_hbox), | |
| 4310 | NULL); | |
| 15246 | 4311 | gtk_widget_set_name(gtkblist->headline_hbox, "gtk-tooltips"); |
| 4312 | ||
|
15300
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
4313 | 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
|
4314 | if (gtkblist->headline_close) { |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
4315 | GdkPixbuf *scale = gdk_pixbuf_scale_simple(gtkblist->headline_close, |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
4316 | HEADLINE_CLOSE_SIZE, HEADLINE_CLOSE_SIZE, GDK_INTERP_BILINEAR); |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
4317 | gdk_pixbuf_unref(gtkblist->headline_close); |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
4318 | gtkblist->headline_close = scale; |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
4319 | } |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
4320 | |
| 15243 | 4321 | gtkblist->hand_cursor = gdk_cursor_new (GDK_HAND2); |
| 4322 | gtkblist->arrow_cursor = gdk_cursor_new (GDK_LEFT_PTR); | |
|
15300
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
4323 | |
| 15243 | 4324 | g_signal_connect(G_OBJECT(ebox), "enter-notify-event", G_CALLBACK(headline_box_enter_cb), gtkblist); |
| 4325 | g_signal_connect(G_OBJECT(ebox), "leave-notify-event", G_CALLBACK(headline_box_leave_cb), gtkblist); | |
| 4326 | 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
|
4327 | #if 0 |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
4328 | /* 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
|
4329 | * 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
|
4330 | * always there. -- sad */ |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
4331 | 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
|
4332 | 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
|
4333 | #endif |
|
15260
a9e3babd5686
[gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents:
15259
diff
changeset
|
4334 | |
| 5228 | 4335 | /****************************** GtkTreeView **********************************/ |
| 4336 | sw = gtk_scrolled_window_new(NULL,NULL); | |
|
10178
16a2e27759fe
[gaim-migrate @ 11293]
Christian Hammond <chipx86@chipx86.com>
parents:
10144
diff
changeset
|
4337 | gtk_widget_show(sw); |
| 14476 | 4338 | gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_NONE); |
| 5228 | 4339 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); |
| 4340 | ||
| 7620 | 4341 | gtkblist->treemodel = gtk_tree_store_new(BLIST_COLUMNS, |
| 14623 | 4342 | GDK_TYPE_PIXBUF, /* Status icon */ |
| 4343 | G_TYPE_BOOLEAN, /* Status icon visible */ | |
|
15260
a9e3babd5686
[gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents:
15259
diff
changeset
|
4344 | G_TYPE_STRING, /* Name */ |
| 14623 | 4345 | G_TYPE_STRING, /* Idle */ |
| 4346 | G_TYPE_BOOLEAN, /* Idle visible */ | |
| 4347 | GDK_TYPE_PIXBUF, /* Buddy icon */ | |
| 4348 | G_TYPE_BOOLEAN, /* Buddy icon visible */ | |
| 4349 | G_TYPE_POINTER, /* Node */ | |
| 4350 | GDK_TYPE_COLOR, /* bgcolor */ | |
| 4351 | 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
|
4352 | G_TYPE_BOOLEAN, /* Group expander visible */ |
| 14623 | 4353 | G_TYPE_BOOLEAN, /* Contact expander */ |
| 15524 | 4354 | G_TYPE_BOOLEAN, /* Contact expander visible */ |
| 4355 | GDK_TYPE_PIXBUF, /* Emblem */ | |
| 4356 | G_TYPE_BOOLEAN); /* Emblem visible */ | |
| 5228 | 4357 | |
| 4358 | gtkblist->treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(gtkblist->treemodel)); | |
| 14230 | 4359 | |
|
10178
16a2e27759fe
[gaim-migrate @ 11293]
Christian Hammond <chipx86@chipx86.com>
parents:
10144
diff
changeset
|
4360 | 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
|
4361 | 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
|
4362 | |
|
947891574425
Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents:
15614
diff
changeset
|
4363 | g_signal_connect(gtkblist->treeview, |
|
947891574425
Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents:
15614
diff
changeset
|
4364 | "style-set", |
|
947891574425
Make group background colors update when the theme changes.
Sean Egan <seanegan@pidgin.im>
parents:
15614
diff
changeset
|
4365 | G_CALLBACK(treeview_style_set), list); |
| 5228 | 4366 | /* Set up selection stuff */ |
| 4367 | 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
|
4368 | g_signal_connect(G_OBJECT(selection), "changed", G_CALLBACK(pidgin_blist_selection_changed), NULL); |
| 5228 | 4369 | |
| 4370 | /* Set up dnd */ | |
|
7650
bd193cc04594
[gaim-migrate @ 8293]
Mark Doliner <markdoliner@pidgin.im>
parents:
7642
diff
changeset
|
4371 | 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
|
4372 | GDK_BUTTON1_MASK, ste, 3, |
|
2cbca162a09f
[gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents:
9791
diff
changeset
|
4373 | GDK_ACTION_COPY); |
|
7650
bd193cc04594
[gaim-migrate @ 8293]
Mark Doliner <markdoliner@pidgin.im>
parents:
7642
diff
changeset
|
4374 | 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
|
4375 | dte, 5, |
|
2cbca162a09f
[gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents:
9791
diff
changeset
|
4376 | GDK_ACTION_COPY | GDK_ACTION_MOVE); |
| 7636 | 4377 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4378 | 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
|
4379 | 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
|
4380 | #ifdef _WIN32 |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4381 | 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
|
4382 | #endif |
|
10433
04cf48e72655
[gaim-migrate @ 11689]
Mark Doliner <markdoliner@pidgin.im>
parents:
10418
diff
changeset
|
4383 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4384 | g_signal_connect(G_OBJECT(gtkblist->treeview), "drag-motion", G_CALLBACK(pidgin_blist_drag_motion_cb), NULL); |
| 5228 | 4385 | |
| 4386 | /* Tooltips */ | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4387 | 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
|
4388 | g_signal_connect(G_OBJECT(gtkblist->treeview), "leave-notify-event", G_CALLBACK(pidgin_blist_leave_cb), NULL); |
| 5228 | 4389 | |
| 4390 | 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
|
4391 | |
| 14471 | 4392 | column = gtk_tree_view_column_new(); |
| 4393 | gtk_tree_view_append_column(GTK_TREE_VIEW(gtkblist->treeview), column); | |
| 4394 | gtk_tree_view_column_set_visible(column, FALSE); | |
| 4395 | gtk_tree_view_set_expander_column(GTK_TREE_VIEW(gtkblist->treeview), column); | |
| 5228 | 4396 | |
| 11016 | 4397 | 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
|
4398 | rend = pidgin_cell_renderer_expander_new(); |
| 14471 | 4399 | gtk_tree_view_column_pack_start(column, rend, FALSE); |
| 4400 | 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
|
4401 | "visible", GROUP_EXPANDER_VISIBLE_COLUMN, |
| 14623 | 4402 | "expander-visible", GROUP_EXPANDER_COLUMN, |
|
14723
5e5b5c192df3
[gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14722
diff
changeset
|
4403 | #if GTK_CHECK_VERSION(2,6,0) |
|
14626
964677efbddf
[gaim-migrate @ 17287]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14624
diff
changeset
|
4404 | "sensitive", GROUP_EXPANDER_COLUMN, |
| 14471 | 4405 | "cell-background-gdk", BGCOLOR_COLUMN, |
|
14723
5e5b5c192df3
[gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14722
diff
changeset
|
4406 | #endif |
| 14471 | 4407 | NULL); |
| 5228 | 4408 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4409 | rend = pidgin_cell_renderer_expander_new(); |
|
9811
2cbca162a09f
[gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents:
9791
diff
changeset
|
4410 | gtk_tree_view_column_pack_start(column, rend, FALSE); |
|
2cbca162a09f
[gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents:
9791
diff
changeset
|
4411 | gtk_tree_view_column_set_attributes(column, rend, |
| 14623 | 4412 | "expander-visible", CONTACT_EXPANDER_COLUMN, |
|
14723
5e5b5c192df3
[gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14722
diff
changeset
|
4413 | #if GTK_CHECK_VERSION(2,6,0) |
|
14626
964677efbddf
[gaim-migrate @ 17287]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14624
diff
changeset
|
4414 | "sensitive", CONTACT_EXPANDER_COLUMN, |
|
14723
5e5b5c192df3
[gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14722
diff
changeset
|
4415 | "cell-background-gdk", BGCOLOR_COLUMN, |
|
5e5b5c192df3
[gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14722
diff
changeset
|
4416 | #endif |
| 14471 | 4417 | "visible", CONTACT_EXPANDER_VISIBLE_COLUMN, |
| 4418 | NULL); | |
| 4419 | ||
| 4420 | rend = gtk_cell_renderer_pixbuf_new(); | |
| 4421 | gtk_tree_view_column_pack_start(column, rend, FALSE); | |
| 4422 | gtk_tree_view_column_set_attributes(column, rend, | |
| 4423 | "pixbuf", STATUS_ICON_COLUMN, | |
| 4424 | "visible", STATUS_ICON_VISIBLE_COLUMN, | |
|
14723
5e5b5c192df3
[gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14722
diff
changeset
|
4425 | #if GTK_CHECK_VERSION(2,6,0) |
| 14471 | 4426 | "cell-background-gdk", BGCOLOR_COLUMN, |
|
14723
5e5b5c192df3
[gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14722
diff
changeset
|
4427 | #endif |
| 14471 | 4428 | 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
|
4429 | g_object_set(rend, "xalign", 0.0, "xpad", 6, "ypad", 0, NULL); |
| 5228 | 4430 | |
| 11016 | 4431 | gtkblist->text_rend = rend = gtk_cell_renderer_text_new(); |
| 5228 | 4432 | gtk_tree_view_column_pack_start (column, rend, TRUE); |
|
9811
2cbca162a09f
[gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents:
9791
diff
changeset
|
4433 | gtk_tree_view_column_set_attributes(column, rend, |
|
14723
5e5b5c192df3
[gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14722
diff
changeset
|
4434 | #if GTK_CHECK_VERSION(2,6,0) |
| 14471 | 4435 | "cell-background-gdk", BGCOLOR_COLUMN, |
|
14723
5e5b5c192df3
[gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14722
diff
changeset
|
4436 | #endif |
|
9811
2cbca162a09f
[gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents:
9791
diff
changeset
|
4437 | "markup", NAME_COLUMN, |
|
2cbca162a09f
[gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents:
9791
diff
changeset
|
4438 | 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
|
4439 | g_signal_connect(G_OBJECT(rend), "editing-started", G_CALLBACK(gtk_blist_renderer_editing_started_cb), NULL); |
| 11016 | 4440 | g_signal_connect(G_OBJECT(rend), "edited", G_CALLBACK(gtk_blist_renderer_edited_cb), NULL); |
| 5228 | 4441 | g_object_set(rend, "ypad", 0, "yalign", 0.5, NULL); |
| 10285 | 4442 | #if GTK_CHECK_VERSION(2,6,0) |
| 10501 | 4443 | g_object_set(rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL); |
| 10285 | 4444 | #endif |
| 5228 | 4445 | gtk_tree_view_append_column(GTK_TREE_VIEW(gtkblist->treeview), column); |
| 4446 | ||
| 4447 | rend = gtk_cell_renderer_text_new(); | |
| 14471 | 4448 | g_object_set(rend, "xalign", 1.0, "ypad", 0, NULL); |
| 4449 | gtk_tree_view_column_pack_start(column, rend, FALSE); | |
|
15260
a9e3babd5686
[gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents:
15259
diff
changeset
|
4450 | gtk_tree_view_column_set_attributes(column, rend, |
|
a9e3babd5686
[gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents:
15259
diff
changeset
|
4451 | "markup", IDLE_COLUMN, |
| 14471 | 4452 | "visible", IDLE_VISIBLE_COLUMN, |
|
14723
5e5b5c192df3
[gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14722
diff
changeset
|
4453 | #if GTK_CHECK_VERSION(2,6,0) |
| 14471 | 4454 | "cell-background-gdk", BGCOLOR_COLUMN, |
|
14723
5e5b5c192df3
[gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14722
diff
changeset
|
4455 | #endif |
| 14471 | 4456 | NULL); |
|
15260
a9e3babd5686
[gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents:
15259
diff
changeset
|
4457 | |
| 14471 | 4458 | 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
|
4459 | g_object_set(rend, "xalign", 1.0, "yalign", 0.5, "ypad", 0, "xpad", 3, NULL); |
| 15524 | 4460 | gtk_tree_view_column_pack_start(column, rend, FALSE); |
| 4461 | gtk_tree_view_column_set_attributes(column, rend, "pixbuf", EMBLEM_COLUMN, | |
| 4462 | #if GTK_CHECK_VERSION(2,6,0) | |
| 4463 | "cell-background-gdk", BGCOLOR_COLUMN, | |
| 4464 | #endif | |
| 4465 | "visible", EMBLEM_VISIBLE_COLUMN, NULL); | |
| 4466 | ||
| 4467 | rend = gtk_cell_renderer_pixbuf_new(); | |
| 5228 | 4468 | g_object_set(rend, "xalign", 1.0, "ypad", 0, NULL); |
| 14471 | 4469 | gtk_tree_view_column_pack_start(column, rend, FALSE); |
|
15260
a9e3babd5686
[gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents:
15259
diff
changeset
|
4470 | 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
|
4471 | #if GTK_CHECK_VERSION(2,6,0) |
| 14471 | 4472 | "cell-background-gdk", BGCOLOR_COLUMN, |
|
14723
5e5b5c192df3
[gaim-migrate @ 17407]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14722
diff
changeset
|
4473 | #endif |
| 14471 | 4474 | "visible", BUDDY_ICON_VISIBLE_COLUMN, |
| 4475 | NULL); | |
|
15260
a9e3babd5686
[gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents:
15259
diff
changeset
|
4476 | |
| 14471 | 4477 | |
| 5228 | 4478 | g_signal_connect(G_OBJECT(gtkblist->treeview), "row-activated", G_CALLBACK(gtk_blist_row_activated_cb), NULL); |
| 4479 | g_signal_connect(G_OBJECT(gtkblist->treeview), "row-expanded", G_CALLBACK(gtk_blist_row_expanded_cb), NULL); | |
| 4480 | g_signal_connect(G_OBJECT(gtkblist->treeview), "row-collapsed", G_CALLBACK(gtk_blist_row_collapsed_cb), NULL); | |
| 4481 | g_signal_connect(G_OBJECT(gtkblist->treeview), "button-press-event", G_CALLBACK(gtk_blist_button_press_cb), NULL); | |
| 7620 | 4482 | 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
|
4483 | g_signal_connect(G_OBJECT(gtkblist->treeview), "popup-menu", G_CALLBACK(pidgin_blist_popup_menu_cb), NULL); |
| 5228 | 4484 | |
|
5419
062efd736788
[gaim-migrate @ 5798]
Mark Doliner <markdoliner@pidgin.im>
parents:
5398
diff
changeset
|
4485 | /* Enable CTRL+F searching */ |
|
062efd736788
[gaim-migrate @ 5798]
Mark Doliner <markdoliner@pidgin.im>
parents:
5398
diff
changeset
|
4486 | 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
|
4487 | 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
|
4488 | |
| 12583 | 4489 | gtk_box_pack_start(GTK_BOX(gtkblist->vbox), sw, TRUE, TRUE, 0); |
| 5228 | 4490 | gtk_container_add(GTK_CONTAINER(sw), gtkblist->treeview); |
| 4491 | ||
| 15243 | 4492 | sep = gtk_hseparator_new(); |
| 4493 | gtk_box_pack_start(GTK_BOX(gtkblist->vbox), sep, FALSE, FALSE, 0); | |
| 4494 | ||
| 15577 | 4495 | gtkblist->scrollbook = pidgin_scroll_book_new(); |
| 15096 | 4496 | 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
|
4497 | |
|
13015
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4498 | /* Create an empty vbox used for showing connection errors */ |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4499 | gtkblist->error_buttons = gtk_vbox_new(FALSE, 0); |
|
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4500 | gtk_box_pack_start(GTK_BOX(gtkblist->vbox), gtkblist->error_buttons, FALSE, FALSE, 0); |
|
17141
f7d7dbca47cd
Pack connection error buttons the same way the statusbox is. Fixes #120
Sean Egan <seanegan@pidgin.im>
parents:
17086
diff
changeset
|
4501 | gtk_container_set_border_width(GTK_CONTAINER(gtkblist->error_buttons), 3); |
|
f7d7dbca47cd
Pack connection error buttons the same way the statusbox is. Fixes #120
Sean Egan <seanegan@pidgin.im>
parents:
17086
diff
changeset
|
4502 | |
|
13015
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
4503 | /* Add the statusbox */ |
| 15577 | 4504 | gtkblist->statusbox = pidgin_status_box_new(); |
| 14195 | 4505 | 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
|
4506 | gtk_widget_set_name(gtkblist->statusbox, "pidgin_blist_statusbox"); |
| 14608 | 4507 | gtk_container_set_border_width(GTK_CONTAINER(gtkblist->statusbox), 3); |
| 12583 | 4508 | gtk_widget_show(gtkblist->statusbox); |
|
14239
661d2bb9eb86
[gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents:
14230
diff
changeset
|
4509 | |
| 5228 | 4510 | /* set the Show Offline Buddies option. must be done |
| 4511 | * after the treeview or faceprint gets mad. -Robot101 | |
| 4512 | */ | |
|
5427
a45fa07ef20d
[gaim-migrate @ 5806]
Mark Doliner <markdoliner@pidgin.im>
parents:
5422
diff
changeset
|
4513 | 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
|
4514 | 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
|
4515 | |
|
5427
a45fa07ef20d
[gaim-migrate @ 5806]
Mark Doliner <markdoliner@pidgin.im>
parents:
5422
diff
changeset
|
4516 | 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
|
4517 | 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
|
4518 | |
|
10074
4fab99572bf1
[gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10046
diff
changeset
|
4519 | 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
|
4520 | purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/sound/mute")); |
|
12656
77de7b9c23bf
[gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents:
12649
diff
changeset
|
4521 | |
| 11796 | 4522 | 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
|
4523 | 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
|
4524 | |
|
77de7b9c23bf
[gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents:
12649
diff
changeset
|
4525 | 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
|
4526 | 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
|
4527 | |
|
8b98683319e7
Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16071
diff
changeset
|
4528 | 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
|
4529 | gtk_widget_set_sensitive(gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Mute Sounds")), FALSE); |
| 5228 | 4530 | |
|
10353
830e54bb7fa0
[gaim-migrate @ 11570]
Mark Doliner <markdoliner@pidgin.im>
parents:
10352
diff
changeset
|
4531 | /* Update some dynamic things */ |
|
830e54bb7fa0
[gaim-migrate @ 11570]
Mark Doliner <markdoliner@pidgin.im>
parents:
10352
diff
changeset
|
4532 | update_menu_bar(gtkblist); |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4533 | pidgin_blist_update_plugin_actions(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4534 | pidgin_blist_update_sort_methods(); |
|
10353
830e54bb7fa0
[gaim-migrate @ 11570]
Mark Doliner <markdoliner@pidgin.im>
parents:
10352
diff
changeset
|
4535 | |
| 5228 | 4536 | /* OK... let's show this bad boy. */ |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4537 | pidgin_blist_refresh(list); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4538 | pidgin_blist_restore_position(); |
|
14543
cc2f90ffee6f
[gaim-migrate @ 17200]
Casey Harkins <charkins@pidgin.im>
parents:
14526
diff
changeset
|
4539 | gtk_widget_show_all(GTK_WIDGET(gtkblist->vbox)); |
|
14574
4a60d4fadfc4
[gaim-migrate @ 17232]
Casey Harkins <charkins@pidgin.im>
parents:
14543
diff
changeset
|
4540 | 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
|
4541 | purple_blist_set_visible(purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/list_visible")); |
| 5228 | 4542 | |
| 4543 | /* start the refresh timer */ | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4544 | 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
|
4545 | |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4546 | handle = pidgin_blist_get_handle(); |
|
10087
e5b80a38939d
[gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10079
diff
changeset
|
4547 | |
| 7620 | 4548 | /* 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
|
4549 | 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
|
4550 | _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
|
4551 | 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
|
4552 | _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
|
4553 | 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
|
4554 | _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
|
4555 | 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
|
4556 | _prefs_change_redo_list, NULL); |
| 7620 | 4557 | |
| 4558 | /* 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
|
4559 | 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
|
4560 | _prefs_change_sort_method, NULL); |
| 7620 | 4561 | |
|
10074
4fab99572bf1
[gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10046
diff
changeset
|
4562 | /* 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
|
4563 | 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
|
4564 | 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
|
4565 | 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
|
4566 | pidgin_blist_sound_method_pref_cb, NULL); |
|
10074
4fab99572bf1
[gaim-migrate @ 11054]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10046
diff
changeset
|
4567 | |
| 15884 | 4568 | /* Setup some purple signal handlers. */ |
| 4569 | purple_signal_connect(purple_accounts_get_handle(), "account-enabled", | |
| 4570 | gtkblist, PURPLE_CALLBACK(account_modified), gtkblist); | |
| 4571 | purple_signal_connect(purple_accounts_get_handle(), "account-disabled", | |
| 4572 | gtkblist, PURPLE_CALLBACK(account_modified), gtkblist); | |
| 4573 | purple_signal_connect(purple_accounts_get_handle(), "account-removed", | |
| 4574 | gtkblist, PURPLE_CALLBACK(account_modified), gtkblist); | |
| 4575 | purple_signal_connect(purple_accounts_get_handle(), "account-status-changed", | |
| 4576 | gtkblist, PURPLE_CALLBACK(account_status_changed), gtkblist); | |
| 4577 | ||
| 4578 | purple_signal_connect(pidgin_account_get_handle(), "account-modified", | |
| 4579 | gtkblist, PURPLE_CALLBACK(account_modified), gtkblist); | |
| 4580 | ||
| 4581 | purple_signal_connect(purple_connections_get_handle(), "signed-on", | |
| 4582 | gtkblist, PURPLE_CALLBACK(sign_on_off_cb), list); | |
| 4583 | purple_signal_connect(purple_connections_get_handle(), "signed-off", | |
| 4584 | gtkblist, PURPLE_CALLBACK(sign_on_off_cb), list); | |
| 4585 | ||
| 4586 | purple_signal_connect(purple_plugins_get_handle(), "plugin-load", | |
| 4587 | gtkblist, PURPLE_CALLBACK(plugin_changed_cb), NULL); | |
| 4588 | purple_signal_connect(purple_plugins_get_handle(), "plugin-unload", | |
| 4589 | gtkblist, PURPLE_CALLBACK(plugin_changed_cb), NULL); | |
| 4590 | ||
| 4591 | purple_signal_connect(purple_conversations_get_handle(), "conversation-updated", | |
| 4592 | gtkblist, PURPLE_CALLBACK(conversation_updated_cb), | |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12115
diff
changeset
|
4593 | gtkblist); |
| 15884 | 4594 | purple_signal_connect(purple_conversations_get_handle(), "deleting-conversation", |
| 4595 | gtkblist, PURPLE_CALLBACK(conversation_deleting_cb), | |
|
12208
63faaf557886
[gaim-migrate @ 14510]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12191
diff
changeset
|
4596 | gtkblist); |
|
12116
17bf39d2678f
[gaim-migrate @ 14416]
Casey Harkins <charkins@pidgin.im>
parents:
12115
diff
changeset
|
4597 | |
| 15246 | 4598 | gtk_widget_hide(gtkblist->headline_hbox); |
|
17141
f7d7dbca47cd
Pack connection error buttons the same way the statusbox is. Fixes #120
Sean Egan <seanegan@pidgin.im>
parents:
17086
diff
changeset
|
4599 | gtk_widget_hide(gtkblist->error_buttons); |
|
15260
a9e3babd5686
[gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents:
15259
diff
changeset
|
4600 | |
| 8815 | 4601 | /* emit our created signal */ |
| 15884 | 4602 | purple_signal_emit(handle, "gtkblist-created", list); |
| 4603 | } | |
| 4604 | ||
| 4605 | static void redo_buddy_list(PurpleBuddyList *list, gboolean remove, gboolean rerender) | |
| 4606 | { | |
| 4607 | PurpleBlistNode *node; | |
|
15307
57f6de61c714
[gaim-migrate @ 18035]
Mark Doliner <markdoliner@pidgin.im>
parents:
15306
diff
changeset
|
4608 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4609 | gtkblist = PIDGIN_BLIST(list); |
| 15306 | 4610 | if(!gtkblist || !gtkblist->treeview) |
| 4611 | return; | |
| 4612 | ||
|
15307
57f6de61c714
[gaim-migrate @ 18035]
Mark Doliner <markdoliner@pidgin.im>
parents:
15306
diff
changeset
|
4613 | node = list->root; |
|
12112
86a24bbf9a2c
[gaim-migrate @ 14412]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12080
diff
changeset
|
4614 | |
|
86a24bbf9a2c
[gaim-migrate @ 14412]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12080
diff
changeset
|
4615 | while (node) |
|
86a24bbf9a2c
[gaim-migrate @ 14412]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12080
diff
changeset
|
4616 | { |
|
14200
799dfae258cf
[gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
14199
diff
changeset
|
4617 | /* 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
|
4618 | * status. We shouldn't need to remove otherwise. |
|
799dfae258cf
[gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
14199
diff
changeset
|
4619 | */ |
| 15884 | 4620 | 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
|
4621 | pidgin_blist_hide_node(list, node, FALSE); |
|
14200
799dfae258cf
[gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
14199
diff
changeset
|
4622 | |
| 15884 | 4623 | if (PURPLE_BLIST_NODE_IS_BUDDY(node)) |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4624 | pidgin_blist_update_buddy(list, node, rerender); |
| 15884 | 4625 | 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
|
4626 | pidgin_blist_update(list, node); |
| 15884 | 4627 | 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
|
4628 | pidgin_blist_update(list, node); |
| 15884 | 4629 | node = purple_blist_node_next(node, FALSE); |
| 4630 | } | |
| 4631 | ||
| 4632 | } | |
| 4633 | ||
| 4634 | void pidgin_blist_refresh(PurpleBuddyList *list) | |
| 5422 | 4635 | { |
|
14200
799dfae258cf
[gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
14199
diff
changeset
|
4636 | redo_buddy_list(list, FALSE, TRUE); |
| 5422 | 4637 | } |
| 4638 | ||
| 5297 | 4639 | void |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4640 | pidgin_blist_update_refresh_timeout() |
| 5297 | 4641 | { |
| 15884 | 4642 | PurpleBuddyList *blist; |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4643 | PidginBuddyList *gtkblist; |
| 5297 | 4644 | |
| 15884 | 4645 | blist = purple_get_blist(); |
| 4646 | gtkblist = PIDGIN_BLIST(purple_get_blist()); | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4647 | |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4648 | gtkblist->refresh_timer = g_timeout_add(30000,(GSourceFunc)pidgin_blist_refresh_timer, blist); |
| 5297 | 4649 | } |
| 4650 | ||
| 15884 | 4651 | 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
|
4652 | struct _pidgin_blist_node *gtknode = (struct _pidgin_blist_node *)node->ui_data; |
| 5256 | 4653 | GtkTreePath *path; |
| 5228 | 4654 | |
| 5263 | 4655 | if (!gtknode) { |
| 4656 | return FALSE; | |
| 4657 | } | |
| 4658 | ||
| 4659 | if (!gtkblist) { | |
| 15884 | 4660 | purple_debug_error("gtkblist", "get_iter_from_node was called, but we don't seem to have a blist\n"); |
| 5263 | 4661 | return FALSE; |
| 4662 | } | |
| 4663 | ||
| 4664 | if (!gtknode->row) | |
| 5228 | 4665 | return FALSE; |
|
11494
60bfb30f6cba
[gaim-migrate @ 13738]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11490
diff
changeset
|
4666 | |
| 5228 | 4667 | |
| 5256 | 4668 | if ((path = gtk_tree_row_reference_get_path(gtknode->row)) == NULL) |
| 5228 | 4669 | return FALSE; |
| 11016 | 4670 | |
| 5256 | 4671 | if (!gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), iter, path)) { |
| 4672 | gtk_tree_path_free(path); | |
| 4673 | return FALSE; | |
| 4674 | } | |
| 4675 | gtk_tree_path_free(path); | |
| 4676 | return TRUE; | |
| 5228 | 4677 | } |
| 4678 | ||
| 15884 | 4679 | 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
|
4680 | { |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4681 | struct _pidgin_blist_node *gtknode = node->ui_data; |
| 11910 | 4682 | |
| 15884 | 4683 | purple_request_close_with_handle(node); |
|
10222
5371b5459fb9
[gaim-migrate @ 11351]
Andrew Hart <arhart@users.sourceforge.net>
parents:
10209
diff
changeset
|
4684 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4685 | pidgin_blist_hide_node(list, node, TRUE); |
| 5228 | 4686 | |
| 7620 | 4687 | if(node->parent) |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4688 | pidgin_blist_update(list, node->parent); |
| 7620 | 4689 | |
|
10504
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10501
diff
changeset
|
4690 | /* There's something I don't understand here - Ethan */ |
|
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10501
diff
changeset
|
4691 | /* 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
|
4692 | * 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
|
4693 | * 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
|
4694 | * comment it out again. Stu */ |
|
10510
a9d90a5b7556
[gaim-migrate @ 11808]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10504
diff
changeset
|
4695 | /* 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
|
4696 | * contacts, the dragged buddy mysteriously 'disappears'. Stu. */ |
|
865130ede44a
[gaim-migrate @ 11816]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10510
diff
changeset
|
4697 | /* I think it's fixed now. Stu. */ |
| 11910 | 4698 | |
| 11915 | 4699 | if(gtknode) { |
| 4700 | if(gtknode->recent_signonoff_timer > 0) | |
| 15884 | 4701 | purple_timeout_remove(gtknode->recent_signonoff_timer); |
| 11915 | 4702 | |
| 4703 | g_free(node->ui_data); | |
| 4704 | node->ui_data = NULL; | |
| 4705 | } | |
| 5228 | 4706 | } |
| 4707 | ||
| 15884 | 4708 | static gboolean do_selection_changed(PurpleBlistNode *new_selection) |
| 4709 | { | |
| 4710 | PurpleBlistNode *old_selection = NULL; | |
| 5228 | 4711 | |
|
5254
6717daf94719
[gaim-migrate @ 5626]
Robert McQueen <robot101@debian.org>
parents:
5241
diff
changeset
|
4712 | /* 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
|
4713 | if (gtkblist && new_selection != gtkblist->selected_node) { |
|
6717daf94719
[gaim-migrate @ 5626]
Robert McQueen <robot101@debian.org>
parents:
5241
diff
changeset
|
4714 | old_selection = gtkblist->selected_node; |
| 5228 | 4715 | gtkblist->selected_node = new_selection; |
| 4716 | if(new_selection) | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4717 | pidgin_blist_update(NULL, new_selection); |
| 5228 | 4718 | if(old_selection) |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4719 | pidgin_blist_update(NULL, old_selection); |
| 5228 | 4720 | } |
| 4721 | ||
| 4722 | return FALSE; | |
| 4723 | } | |
| 4724 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4725 | static void pidgin_blist_selection_changed(GtkTreeSelection *selection, gpointer data) |
| 5228 | 4726 | { |
| 15884 | 4727 | PurpleBlistNode *new_selection = NULL; |
| 5228 | 4728 | GtkTreeIter iter; |
| 4729 | ||
| 4730 | if(gtk_tree_selection_get_selected(selection, NULL, &iter)){ | |
| 4731 | gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &iter, | |
| 4732 | NODE_COLUMN, &new_selection, -1); | |
| 4733 | } | |
|
5254
6717daf94719
[gaim-migrate @ 5626]
Robert McQueen <robot101@debian.org>
parents:
5241
diff
changeset
|
4734 | |
| 5228 | 4735 | /* we set this up as a timeout, otherwise the blist flickers */ |
| 4736 | g_timeout_add(0, (GSourceFunc)do_selection_changed, new_selection); | |
| 4737 | } | |
| 4738 | ||
| 15884 | 4739 | static gboolean insert_node(PurpleBuddyList *list, PurpleBlistNode *node, GtkTreeIter *iter) |
| 7620 | 4740 | { |
| 4741 | GtkTreeIter parent_iter, cur, *curptr = NULL; | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4742 | struct _pidgin_blist_node *gtknode = node->ui_data; |
| 5256 | 4743 | GtkTreePath *newpath; |
| 7620 | 4744 | |
|
10515
865130ede44a
[gaim-migrate @ 11816]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10510
diff
changeset
|
4745 | if(!iter) |
| 8252 | 4746 | return FALSE; |
| 7620 | 4747 | |
| 4748 | if(node->parent && !get_iter_from_node(node->parent, &parent_iter)) | |
| 8252 | 4749 | return FALSE; |
| 7620 | 4750 | |
| 4751 | if(get_iter_from_node(node, &cur)) | |
| 4752 | curptr = &cur; | |
| 4753 | ||
| 15884 | 4754 | 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
|
4755 | current_sort_method->func(node, list, parent_iter, curptr, iter); |
| 7620 | 4756 | } else { |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
4757 | sort_method_none(node, list, parent_iter, curptr, iter); |
| 5228 | 4758 | } |
| 4759 | ||
|
10515
865130ede44a
[gaim-migrate @ 11816]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10510
diff
changeset
|
4760 | if(gtknode != NULL) { |
|
865130ede44a
[gaim-migrate @ 11816]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10510
diff
changeset
|
4761 | gtk_tree_row_reference_free(gtknode->row); |
|
865130ede44a
[gaim-migrate @ 11816]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10510
diff
changeset
|
4762 | } else { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4763 | pidgin_blist_new_node(node); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4764 | gtknode = (struct _pidgin_blist_node *)node->ui_data; |
|
10515
865130ede44a
[gaim-migrate @ 11816]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10510
diff
changeset
|
4765 | } |
|
865130ede44a
[gaim-migrate @ 11816]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10510
diff
changeset
|
4766 | |
| 7620 | 4767 | newpath = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), |
| 4768 | iter); | |
| 4769 | gtknode->row = | |
| 4770 | gtk_tree_row_reference_new(GTK_TREE_MODEL(gtkblist->treemodel), | |
| 4771 | newpath); | |
|
11494
60bfb30f6cba
[gaim-migrate @ 13738]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11490
diff
changeset
|
4772 | |
| 5256 | 4773 | gtk_tree_path_free(newpath); |
| 4774 | ||
| 5228 | 4775 | gtk_tree_store_set(gtkblist->treemodel, iter, |
| 4776 | NODE_COLUMN, node, | |
| 4777 | -1); | |
| 7620 | 4778 | |
| 4779 | if(node->parent) { | |
| 4780 | GtkTreePath *expand = NULL; | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4781 | struct _pidgin_blist_node *gtkparentnode = node->parent->ui_data; |
| 7620 | 4782 | |
| 15884 | 4783 | if(PURPLE_BLIST_NODE_IS_GROUP(node->parent)) { |
| 4784 | if(!purple_blist_node_get_bool(node->parent, "collapsed")) | |
| 7620 | 4785 | expand = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &parent_iter); |
| 15884 | 4786 | } else if(PURPLE_BLIST_NODE_IS_CONTACT(node->parent) && |
| 7620 | 4787 | gtkparentnode->contact_expanded) { |
| 4788 | expand = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &parent_iter); | |
| 4789 | } | |
| 4790 | if(expand) { | |
| 7693 | 4791 | gtk_tree_view_expand_row(GTK_TREE_VIEW(gtkblist->treeview), expand, FALSE); |
| 7620 | 4792 | gtk_tree_path_free(expand); |
| 4793 | } | |
| 4794 | } | |
| 4795 | ||
| 8252 | 4796 | return TRUE; |
| 5228 | 4797 | } |
| 4798 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4799 | /*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
|
4800 | or a group, but has much better algorithmic performance with a pre-known buddy*/ |
| 15884 | 4801 | static void pidgin_blist_update_group(PurpleBuddyList *list, PurpleBlistNode *node) |
| 4802 | { | |
| 4803 | PurpleGroup *group; | |
|
8203
23f66d41ff8c
[gaim-migrate @ 8926]
Alex Smith <madalex@users.sourceforge.net>
parents:
8198
diff
changeset
|
4804 | int count; |
|
12341
a4b5f9eb0d83
[gaim-migrate @ 14645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12338
diff
changeset
|
4805 | gboolean show = FALSE; |
| 15884 | 4806 | PurpleBlistNode* gnode; |
|
13951
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
4807 | |
|
13982
b1d1248b2789
[gaim-migrate @ 16432]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13951
diff
changeset
|
4808 | g_return_if_fail(node != NULL); |
|
13951
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
4809 | |
| 15884 | 4810 | if (PURPLE_BLIST_NODE_IS_GROUP(node)) |
|
13951
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
4811 | gnode = node; |
| 15884 | 4812 | else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) |
|
13951
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
4813 | gnode = node->parent->parent; |
| 15884 | 4814 | 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
|
4815 | gnode = node->parent; |
|
13982
b1d1248b2789
[gaim-migrate @ 16432]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13951
diff
changeset
|
4816 | else |
|
b1d1248b2789
[gaim-migrate @ 16432]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13951
diff
changeset
|
4817 | return; |
|
13951
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
4818 | |
| 15884 | 4819 | group = (PurpleGroup*)gnode; |
| 4820 | ||
|
16123
8b98683319e7
Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16071
diff
changeset
|
4821 | if(purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_offline_buddies")) |
| 15884 | 4822 | count = purple_blist_get_group_size(group, FALSE); |
|
8203
23f66d41ff8c
[gaim-migrate @ 8926]
Alex Smith <madalex@users.sourceforge.net>
parents:
8198
diff
changeset
|
4823 | else |
| 15884 | 4824 | count = purple_blist_get_group_online_count(group); |
| 4825 | ||
|
16123
8b98683319e7
Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16071
diff
changeset
|
4826 | 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
|
4827 | show = TRUE; |
| 15884 | 4828 | else if (PURPLE_BLIST_NODE_IS_BUDDY(node)){ /* Or chat? */ |
| 4829 | if (buddy_is_displayable((PurpleBuddy*)node)) | |
|
13951
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
4830 | show = TRUE;} |
|
12341
a4b5f9eb0d83
[gaim-migrate @ 14645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12338
diff
changeset
|
4831 | |
|
a4b5f9eb0d83
[gaim-migrate @ 14645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12338
diff
changeset
|
4832 | if (show) { |
| 7620 | 4833 | GtkTreeIter iter; |
| 14471 | 4834 | GtkTreePath *path; |
| 14722 | 4835 | gboolean expanded; |
|
14501
17032cb417f9
[gaim-migrate @ 17153]
Gary Kramlich <grim@reaperworld.com>
parents:
14476
diff
changeset
|
4836 | GdkColor bgcolor; |
|
15385
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
4837 | char *title; |
|
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
4838 | |
|
15260
a9e3babd5686
[gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents:
15259
diff
changeset
|
4839 | |
|
13951
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
4840 | if(!insert_node(list, gnode, &iter)) |
| 8252 | 4841 | return; |
| 7620 | 4842 | |
| 14603 | 4843 | bgcolor = gtkblist->treeview->style->bg[GTK_STATE_ACTIVE]; |
|
14501
17032cb417f9
[gaim-migrate @ 17153]
Gary Kramlich <grim@reaperworld.com>
parents:
14476
diff
changeset
|
4844 | |
|
17032cb417f9
[gaim-migrate @ 17153]
Gary Kramlich <grim@reaperworld.com>
parents:
14476
diff
changeset
|
4845 | 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
|
4846 | expanded = gtk_tree_view_row_expanded(GTK_TREE_VIEW(gtkblist->treeview), path); |
| 14471 | 4847 | gtk_tree_path_free(path); |
| 4848 | ||
| 15882 | 4849 | title = pidgin_get_group_title(gnode, expanded); |
|
15260
a9e3babd5686
[gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents:
15259
diff
changeset
|
4850 | |
| 7620 | 4851 | gtk_tree_store_set(gtkblist->treemodel, &iter, |
| 14471 | 4852 | STATUS_ICON_VISIBLE_COLUMN, FALSE, |
| 4853 | STATUS_ICON_COLUMN, NULL, | |
|
15385
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
4854 | NAME_COLUMN, title, |
| 14471 | 4855 | NODE_COLUMN, gnode, |
| 4856 | BGCOLOR_COLUMN, &bgcolor, | |
| 14623 | 4857 | 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
|
4858 | GROUP_EXPANDER_VISIBLE_COLUMN, TRUE, |
| 14471 | 4859 | CONTACT_EXPANDER_VISIBLE_COLUMN, FALSE, |
| 4860 | BUDDY_ICON_VISIBLE_COLUMN, FALSE, | |
| 4861 | IDLE_VISIBLE_COLUMN, FALSE, | |
| 15524 | 4862 | EMBLEM_VISIBLE_COLUMN, FALSE, |
| 14471 | 4863 | -1); |
|
15385
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
4864 | g_free(title); |
| 7620 | 4865 | } else { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4866 | pidgin_blist_hide_node(list, gnode, TRUE); |
| 7620 | 4867 | } |
| 4868 | } | |
| 4869 | ||
| 15884 | 4870 | static char *pidgin_get_group_title(PurpleBlistNode *gnode, gboolean expanded) |
| 4871 | { | |
| 4872 | PurpleGroup *group; | |
|
15385
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
4873 | GdkColor textcolor; |
|
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
4874 | gboolean selected; |
|
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
4875 | char group_count[12] = ""; |
|
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
4876 | char *mark, *esc; |
|
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
4877 | |
| 15884 | 4878 | group = (PurpleGroup*)gnode; |
|
15385
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
4879 | textcolor = gtkblist->treeview->style->fg[GTK_STATE_ACTIVE]; |
|
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
4880 | selected = gtkblist ? (gtkblist->selected_node == gnode) : FALSE; |
|
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
4881 | |
|
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
4882 | if (!expanded) { |
|
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
4883 | g_snprintf(group_count, sizeof(group_count), " (%d/%d)", |
| 15884 | 4884 | purple_blist_get_group_online_count(group), |
| 4885 | purple_blist_get_group_size(group, FALSE)); | |
|
15385
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
4886 | } |
|
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
4887 | |
|
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
4888 | esc = g_markup_escape_text(group->name, -1); |
|
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
4889 | if (selected) |
|
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
4890 | 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
|
4891 | else |
|
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
4892 | 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
|
4893 | textcolor.red>>8, textcolor.green>>8, textcolor.blue>>8, |
|
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
4894 | esc, group_count); |
|
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
4895 | |
|
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
4896 | g_free(esc); |
|
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
4897 | return mark; |
|
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
4898 | } |
|
d9ef6b4281fd
[gaim-migrate @ 18114]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15380
diff
changeset
|
4899 | |
| 15884 | 4900 | static void buddy_node(PurpleBuddy *buddy, GtkTreeIter *iter, PurpleBlistNode *node) |
| 4901 | { | |
| 4902 | PurplePresence *presence; | |
| 15524 | 4903 | GdkPixbuf *status, *avatar, *emblem; |
| 7620 | 4904 | char *mark; |
| 11257 | 4905 | char *idle = NULL; |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4906 | gboolean expanded = ((struct _pidgin_blist_node *)(node->parent->ui_data))->contact_expanded; |
| 7620 | 4907 | 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
|
4908 | gboolean biglist = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"); |
| 15884 | 4909 | presence = purple_buddy_get_presence(buddy); |
| 4910 | ||
| 4911 | status = pidgin_blist_get_status_icon((PurpleBlistNode*)buddy, | |
|
15569
e85adc8d3b5c
gtkblist changes to pidgin
Sean Egan <seanegan@pidgin.im>
parents:
15568
diff
changeset
|
4912 | PIDGIN_STATUS_ICON_SMALL); |
| 7620 | 4913 | |
|
16950
53c231f0ab5c
Speed up blist manipulations, by Scott Wolchok (EvilSporkMan)
Ethan Blanton <elb@pidgin.im>
parents:
16903
diff
changeset
|
4914 | /* Speed it up if we don't want buddy icons. */ |
|
53c231f0ab5c
Speed up blist manipulations, by Scott Wolchok (EvilSporkMan)
Ethan Blanton <elb@pidgin.im>
parents:
16903
diff
changeset
|
4915 | if(biglist) |
|
53c231f0ab5c
Speed up blist manipulations, by Scott Wolchok (EvilSporkMan)
Ethan Blanton <elb@pidgin.im>
parents:
16903
diff
changeset
|
4916 | avatar = pidgin_blist_get_buddy_icon((PurpleBlistNode *)buddy, TRUE, TRUE); |
|
53c231f0ab5c
Speed up blist manipulations, by Scott Wolchok (EvilSporkMan)
Ethan Blanton <elb@pidgin.im>
parents:
16903
diff
changeset
|
4917 | else |
|
53c231f0ab5c
Speed up blist manipulations, by Scott Wolchok (EvilSporkMan)
Ethan Blanton <elb@pidgin.im>
parents:
16903
diff
changeset
|
4918 | avatar = NULL; |
|
53c231f0ab5c
Speed up blist manipulations, by Scott Wolchok (EvilSporkMan)
Ethan Blanton <elb@pidgin.im>
parents:
16903
diff
changeset
|
4919 | |
|
15458
39c79dc7c965
A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
4920 | if (!avatar) { |
|
39c79dc7c965
A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
4921 | g_object_ref(G_OBJECT(gtkblist->empty_avatar)); |
|
39c79dc7c965
A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
4922 | avatar = gtkblist->empty_avatar; |
| 15884 | 4923 | } 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
|
4924 | 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
|
4925 | } |
|
e66ed02bc8c9
dim buddy icons on idle and offline. Still need to do status icons.
Sean Egan <seanegan@pidgin.im>
parents:
15551
diff
changeset
|
4926 | |
| 15884 | 4927 | emblem = pidgin_blist_get_emblem((PurpleBlistNode*) buddy); |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4928 | mark = pidgin_blist_get_name_markup(buddy, selected); |
| 7620 | 4929 | |
|
16123
8b98683319e7
Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16071
diff
changeset
|
4930 | if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_idle_time") && |
| 15884 | 4931 | 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
|
4932 | !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
|
4933 | { |
| 15884 | 4934 | time_t idle_secs = purple_presence_get_idle_time(presence); |
|
9944
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
4935 | |
|
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
4936 | if (idle_secs > 0) |
|
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
4937 | { |
|
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
4938 | time_t t; |
|
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
4939 | int ihrs, imin; |
|
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
4940 | time(&t); |
|
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
4941 | ihrs = (t - idle_secs) / 3600; |
|
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
4942 | imin = ((t - idle_secs) / 60) % 60; |
|
13821
3eda6c8a2b75
[gaim-migrate @ 16251]
Richard Laager <rlaager@pidgin.im>
parents:
13792
diff
changeset
|
4943 | idle = g_strdup_printf("%d:%02d", ihrs, imin); |
|
9944
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
4944 | } |
| 7620 | 4945 | } |
| 4946 | ||
| 15884 | 4947 | if (purple_presence_is_idle(presence)) |
|
9944
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
4948 | { |
|
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
4949 | if (idle && !selected) { |
| 10118 | 4950 | char *i2 = g_strdup_printf("<span color='%s'>%s</span>", |
| 4951 | dim_grey(), idle); | |
| 7620 | 4952 | g_free(idle); |
| 4953 | idle = i2; | |
| 5228 | 4954 | } |
| 7620 | 4955 | } |
| 4956 | ||
| 4957 | gtk_tree_store_set(gtkblist->treemodel, iter, | |
| 14471 | 4958 | STATUS_ICON_COLUMN, status, |
| 4959 | STATUS_ICON_VISIBLE_COLUMN, TRUE, | |
| 4960 | NAME_COLUMN, mark, | |
| 4961 | IDLE_COLUMN, idle, | |
| 4962 | IDLE_VISIBLE_COLUMN, !biglist && idle, | |
| 4963 | BUDDY_ICON_COLUMN, avatar, | |
| 4964 | BUDDY_ICON_VISIBLE_COLUMN, biglist, | |
| 15524 | 4965 | EMBLEM_COLUMN, emblem, |
| 4966 | EMBLEM_VISIBLE_COLUMN, emblem, | |
| 14603 | 4967 | BGCOLOR_COLUMN, NULL, |
| 14471 | 4968 | CONTACT_EXPANDER_COLUMN, NULL, |
| 4969 | 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
|
4970 | GROUP_EXPANDER_VISIBLE_COLUMN, FALSE, |
| 7620 | 4971 | -1); |
| 4972 | ||
| 4973 | g_free(mark); | |
|
12656
77de7b9c23bf
[gaim-migrate @ 14999]
Mark Doliner <markdoliner@pidgin.im>
parents:
12649
diff
changeset
|
4974 | g_free(idle); |
| 7620 | 4975 | if(status) |
| 4976 | g_object_unref(status); | |
| 4977 | if(avatar) | |
| 4978 | g_object_unref(avatar); | |
| 4979 | } | |
| 4980 | ||
|
13951
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
4981 | /* 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
|
4982 | can know in advance which buddy has changed so we can just update that */ |
| 15884 | 4983 | static void pidgin_blist_update_contact(PurpleBuddyList *list, PurpleBlistNode *node) |
| 4984 | { | |
| 4985 | PurpleBlistNode *cnode; | |
| 4986 | PurpleContact *contact; | |
| 4987 | PurpleBuddy *buddy; | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4988 | struct _pidgin_blist_node *gtknode; |
| 7620 | 4989 | |
| 15884 | 4990 | if (PURPLE_BLIST_NODE_IS_BUDDY(node)) |
|
13951
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
4991 | cnode = node->parent; |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
4992 | else |
|
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
4993 | cnode = node; |
|
14239
661d2bb9eb86
[gaim-migrate @ 16827]
Daniel Atallah <datallah@pidgin.im>
parents:
14230
diff
changeset
|
4994 | |
| 15884 | 4995 | g_return_if_fail(PURPLE_BLIST_NODE_IS_CONTACT(cnode)); |
| 7620 | 4996 | |
| 4997 | /* First things first, update the group */ | |
| 15884 | 4998 | if (PURPLE_BLIST_NODE_IS_BUDDY(node)) |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
4999 | pidgin_blist_update_group(list, node); |
|
13951
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
5000 | else |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5001 | pidgin_blist_update_group(list, cnode->parent); |
|
13951
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
5002 | |
| 15884 | 5003 | contact = (PurpleContact*)cnode; |
| 5004 | buddy = purple_contact_get_priority_buddy(contact); | |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
5005 | |
| 11890 | 5006 | if (buddy_is_displayable(buddy)) |
|
10006
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9993
diff
changeset
|
5007 | { |
| 7620 | 5008 | GtkTreeIter iter; |
| 5009 | ||
|
13951
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
5010 | if(!insert_node(list, cnode, &iter)) |
| 8252 | 5011 | return; |
| 7620 | 5012 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5013 | gtknode = (struct _pidgin_blist_node *)cnode->ui_data; |
|
10515
865130ede44a
[gaim-migrate @ 11816]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10510
diff
changeset
|
5014 | |
| 7620 | 5015 | if(gtknode->contact_expanded) { |
| 5016 | GdkPixbuf *status; | |
| 5228 | 5017 | char *mark; |
| 5018 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5019 | status = pidgin_blist_get_status_icon(cnode, |
|
15569
e85adc8d3b5c
gtkblist changes to pidgin
Sean Egan <seanegan@pidgin.im>
parents:
15568
diff
changeset
|
5020 | PIDGIN_STATUS_ICON_SMALL); |
| 7620 | 5021 | |
| 15884 | 5022 | mark = g_markup_escape_text(purple_contact_get_alias(contact), -1); |
| 5228 | 5023 | gtk_tree_store_set(gtkblist->treemodel, &iter, |
| 14471 | 5024 | STATUS_ICON_COLUMN, status, |
| 5025 | STATUS_ICON_VISIBLE_COLUMN, TRUE, | |
| 14603 | 5026 | NAME_COLUMN, mark, |
| 14471 | 5027 | IDLE_COLUMN, NULL, |
| 5028 | IDLE_VISIBLE_COLUMN, FALSE, | |
| 14603 | 5029 | BGCOLOR_COLUMN, NULL, |
| 14471 | 5030 | BUDDY_ICON_COLUMN, NULL, |
| 14623 | 5031 | CONTACT_EXPANDER_COLUMN, TRUE, |
| 14471 | 5032 | 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
|
5033 | GROUP_EXPANDER_VISIBLE_COLUMN, FALSE, |
| 5228 | 5034 | -1); |
| 14603 | 5035 | g_free(mark); |
| 7620 | 5036 | if(status) |
| 5037 | g_object_unref(status); | |
| 5038 | } else { | |
|
13951
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
5039 | buddy_node(buddy, &iter, cnode); |
| 5228 | 5040 | } |
| 7620 | 5041 | } else { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5042 | pidgin_blist_hide_node(list, cnode, TRUE); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5043 | } |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5044 | } |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5045 | |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5046 | |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5047 | |
| 15884 | 5048 | static void pidgin_blist_update_buddy(PurpleBuddyList *list, PurpleBlistNode *node, gboolean statusChange) |
| 5049 | { | |
| 5050 | PurpleBuddy *buddy; | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5051 | struct _pidgin_blist_node *gtkparentnode; |
| 7620 | 5052 | |
| 15884 | 5053 | g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); |
| 7620 | 5054 | |
|
13951
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
5055 | if (node->parent == NULL) |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
5056 | return; |
|
13951
4a340b669170
[gaim-migrate @ 16370]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
13942
diff
changeset
|
5057 | |
| 15884 | 5058 | buddy = (PurpleBuddy*)node; |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
5059 | |
| 7620 | 5060 | /* First things first, update the contact */ |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5061 | pidgin_blist_update_contact(list, node); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5062 | |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5063 | gtkparentnode = (struct _pidgin_blist_node *)node->parent->ui_data; |
|
10918
77103f5ad580
[gaim-migrate @ 12681]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10884
diff
changeset
|
5064 | |
|
12341
a4b5f9eb0d83
[gaim-migrate @ 14645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12338
diff
changeset
|
5065 | if (gtkparentnode->contact_expanded && buddy_is_displayable(buddy)) |
|
10006
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9993
diff
changeset
|
5066 | { |
| 7620 | 5067 | GtkTreeIter iter; |
| 5068 | ||
|
10006
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9993
diff
changeset
|
5069 | if (!insert_node(list, node, &iter)) |
| 8252 | 5070 | return; |
| 5071 | ||
| 7620 | 5072 | buddy_node(buddy, &iter, node); |
| 5073 | ||
| 5074 | } else { | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5075 | pidgin_blist_hide_node(list, node, TRUE); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5076 | } |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5077 | |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5078 | } |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5079 | |
| 15884 | 5080 | static void pidgin_blist_update_chat(PurpleBuddyList *list, PurpleBlistNode *node) |
| 5081 | { | |
| 5082 | PurpleChat *chat; | |
| 5083 | ||
| 5084 | g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node)); | |
| 7620 | 5085 | |
| 5086 | /* First things first, update the group */ | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5087 | pidgin_blist_update_group(list, node->parent); |
| 7620 | 5088 | |
| 15884 | 5089 | chat = (PurpleChat*)node; |
| 5090 | ||
| 5091 | if(purple_account_is_connected(chat->account)) { | |
| 7620 | 5092 | GtkTreeIter iter; |
| 5234 | 5093 | 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
|
5094 | GdkPixbuf *avatar; |
| 15524 | 5095 | GdkPixbuf *emblem; |
| 7620 | 5096 | char *mark; |
|
16950
53c231f0ab5c
Speed up blist manipulations, by Scott Wolchok (EvilSporkMan)
Ethan Blanton <elb@pidgin.im>
parents:
16903
diff
changeset
|
5097 | gboolean showicons = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"); |
| 7620 | 5098 | |
| 8252 | 5099 | if(!insert_node(list, node, &iter)) |
| 5100 | return; | |
| 5234 | 5101 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5102 | status = pidgin_blist_get_status_icon(node, |
|
15569
e85adc8d3b5c
gtkblist changes to pidgin
Sean Egan <seanegan@pidgin.im>
parents:
15568
diff
changeset
|
5103 | PIDGIN_STATUS_ICON_SMALL); |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5104 | emblem = pidgin_blist_get_emblem(node); |
|
16950
53c231f0ab5c
Speed up blist manipulations, by Scott Wolchok (EvilSporkMan)
Ethan Blanton <elb@pidgin.im>
parents:
16903
diff
changeset
|
5105 | |
|
53c231f0ab5c
Speed up blist manipulations, by Scott Wolchok (EvilSporkMan)
Ethan Blanton <elb@pidgin.im>
parents:
16903
diff
changeset
|
5106 | /* Speed it up if we don't want buddy icons. */ |
|
53c231f0ab5c
Speed up blist manipulations, by Scott Wolchok (EvilSporkMan)
Ethan Blanton <elb@pidgin.im>
parents:
16903
diff
changeset
|
5107 | if(showicons) |
|
53c231f0ab5c
Speed up blist manipulations, by Scott Wolchok (EvilSporkMan)
Ethan Blanton <elb@pidgin.im>
parents:
16903
diff
changeset
|
5108 | avatar = pidgin_blist_get_buddy_icon(node, TRUE, FALSE); |
|
53c231f0ab5c
Speed up blist manipulations, by Scott Wolchok (EvilSporkMan)
Ethan Blanton <elb@pidgin.im>
parents:
16903
diff
changeset
|
5109 | else |
|
53c231f0ab5c
Speed up blist manipulations, by Scott Wolchok (EvilSporkMan)
Ethan Blanton <elb@pidgin.im>
parents:
16903
diff
changeset
|
5110 | avatar = 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
|
5111 | |
| 15884 | 5112 | mark = g_markup_escape_text(purple_chat_get_name(chat), -1); |
| 5234 | 5113 | |
| 5114 | gtk_tree_store_set(gtkblist->treemodel, &iter, | |
| 7620 | 5115 | STATUS_ICON_COLUMN, status, |
| 5116 | 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
|
5117 | 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
|
5118 | BUDDY_ICON_VISIBLE_COLUMN, purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"), |
| 15524 | 5119 | EMBLEM_COLUMN, emblem, |
| 5120 | EMBLEM_VISIBLE_COLUMN, emblem != NULL, | |
| 7620 | 5121 | 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
|
5122 | GROUP_EXPANDER_VISIBLE_COLUMN, FALSE, |
| 7620 | 5123 | -1); |
| 5228 | 5124 | |
| 5125 | g_free(mark); | |
| 7620 | 5126 | if(status) |
| 5228 | 5127 | 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
|
5128 | 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
|
5129 | g_object_unref(avatar); |
| 7620 | 5130 | } else { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5131 | pidgin_blist_hide_node(list, node, TRUE); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5132 | } |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5133 | } |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5134 | |
| 15884 | 5135 | static void pidgin_blist_update(PurpleBuddyList *list, PurpleBlistNode *node) |
| 7620 | 5136 | { |
|
15282
376816e3cb9e
[gaim-migrate @ 18010]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15260
diff
changeset
|
5137 | if (list) |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5138 | gtkblist = PIDGIN_BLIST(list); |
| 15306 | 5139 | if(!gtkblist || !gtkblist->treeview || !node) |
| 7620 | 5140 | return; |
| 5141 | ||
|
13196
b34319a69167
[gaim-migrate @ 15558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13162
diff
changeset
|
5142 | if (node->ui_data == NULL) |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5143 | pidgin_blist_new_node(node); |
|
13196
b34319a69167
[gaim-migrate @ 15558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13162
diff
changeset
|
5144 | |
| 7620 | 5145 | switch(node->type) { |
| 15884 | 5146 | case PURPLE_BLIST_GROUP_NODE: |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5147 | pidgin_blist_update_group(list, node); |
| 7620 | 5148 | break; |
| 15884 | 5149 | case PURPLE_BLIST_CONTACT_NODE: |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5150 | pidgin_blist_update_contact(list, node); |
| 7620 | 5151 | break; |
| 15884 | 5152 | case PURPLE_BLIST_BUDDY_NODE: |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5153 | pidgin_blist_update_buddy(list, node, TRUE); |
| 7620 | 5154 | break; |
| 15884 | 5155 | case PURPLE_BLIST_CHAT_NODE: |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5156 | pidgin_blist_update_chat(list, node); |
| 7620 | 5157 | break; |
| 15884 | 5158 | case PURPLE_BLIST_OTHER_NODE: |
| 7620 | 5159 | return; |
| 5160 | } | |
| 5234 | 5161 | |
| 13147 | 5162 | #if !GTK_CHECK_VERSION(2,6,0) |
| 5228 | 5163 | gtk_tree_view_columns_autosize(GTK_TREE_VIEW(gtkblist->treeview)); |
| 13147 | 5164 | #endif |
| 5228 | 5165 | } |
| 5166 | ||
| 7620 | 5167 | |
| 15884 | 5168 | static void pidgin_blist_destroy(PurpleBuddyList *list) |
| 5228 | 5169 | { |
| 5170 | if (!gtkblist) | |
| 5171 | return; | |
| 5172 | ||
| 15884 | 5173 | purple_signals_disconnect_by_handle(gtkblist); |
|
8259
7ed91862683d
[gaim-migrate @ 8982]
Christian Hammond <chipx86@chipx86.com>
parents:
8254
diff
changeset
|
5174 | |
|
15300
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
5175 | if (gtkblist->headline_close) |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
5176 | gdk_pixbuf_unref(gtkblist->headline_close); |
|
454ddc38e700
[gaim-migrate @ 18028]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15286
diff
changeset
|
5177 | |
| 5228 | 5178 | gtk_widget_destroy(gtkblist->window); |
| 7620 | 5179 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5180 | pidgin_blist_tooltip_destroy(); |
| 7620 | 5181 | |
| 5228 | 5182 | if (gtkblist->refresh_timer) |
| 5183 | g_source_remove(gtkblist->refresh_timer); | |
| 5184 | if (gtkblist->timeout) | |
| 5185 | g_source_remove(gtkblist->timeout); | |
| 10354 | 5186 | if (gtkblist->drag_timeout) |
| 5187 | g_source_remove(gtkblist->drag_timeout); | |
| 5228 | 5188 | |
|
13015
79ca1e6153bd
[gaim-migrate @ 15368]
Mark Doliner <markdoliner@pidgin.im>
parents:
13001
diff
changeset
|
5189 | g_hash_table_destroy(gtkblist->connection_errors); |
| 5228 | 5190 | gtkblist->refresh_timer = 0; |
| 5191 | gtkblist->timeout = 0; | |
| 10354 | 5192 | gtkblist->drag_timeout = 0; |
| 5228 | 5193 | gtkblist->window = gtkblist->vbox = gtkblist->treeview = NULL; |
| 5194 | gtkblist->treemodel = NULL; | |
|
5427
a45fa07ef20d
[gaim-migrate @ 5806]
Mark Doliner <markdoliner@pidgin.im>
parents:
5422
diff
changeset
|
5195 | g_object_unref(G_OBJECT(gtkblist->ift)); |
|
15458
39c79dc7c965
A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
5196 | g_object_unref(G_OBJECT(gtkblist->empty_avatar)); |
|
15260
a9e3babd5686
[gaim-migrate @ 17988]
Daniel Atallah <datallah@pidgin.im>
parents:
15259
diff
changeset
|
5197 | |
| 15243 | 5198 | gdk_cursor_unref(gtkblist->hand_cursor); |
| 5199 | gdk_cursor_unref(gtkblist->arrow_cursor); | |
| 5200 | gtkblist->hand_cursor = NULL; | |
| 5201 | gtkblist->arrow_cursor = NULL; | |
| 7620 | 5202 | |
|
15282
376816e3cb9e
[gaim-migrate @ 18010]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15260
diff
changeset
|
5203 | g_free(gtkblist); |
|
376816e3cb9e
[gaim-migrate @ 18010]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15260
diff
changeset
|
5204 | accountmenu = NULL; |
|
376816e3cb9e
[gaim-migrate @ 18010]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15260
diff
changeset
|
5205 | gtkblist = NULL; |
| 15884 | 5206 | purple_prefs_disconnect_by_handle(pidgin_blist_get_handle()); |
| 5207 | } | |
| 5208 | ||
| 5209 | static void pidgin_blist_set_visible(PurpleBuddyList *list, gboolean show) | |
| 5228 | 5210 | { |
| 5211 | if (!(gtkblist && gtkblist->window)) | |
| 5212 | return; | |
|
10325
9bb530214bae
[gaim-migrate @ 11532]
Mark Doliner <markdoliner@pidgin.im>
parents:
10320
diff
changeset
|
5213 | |
| 5228 | 5214 | if (show) { |
| 15571 | 5215 | if(!PIDGIN_WINDOW_ICONIFIED(gtkblist->window) && !GTK_WIDGET_VISIBLE(gtkblist->window)) |
| 15884 | 5216 | 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
|
5217 | pidgin_blist_restore_position(); |
| 5228 | 5218 | gtk_window_present(GTK_WINDOW(gtkblist->window)); |
| 5219 | } else { | |
|
12016
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
5220 | if(visibility_manager_count) { |
| 15884 | 5221 | purple_signal_emit(pidgin_blist_get_handle(), "gtkblist-hiding", gtkblist); |
|
12016
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
5222 | gtk_widget_hide(gtkblist->window); |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
5223 | } else { |
|
12479
01ea9120820a
[gaim-migrate @ 14790]
Casey Harkins <charkins@pidgin.im>
parents:
12478
diff
changeset
|
5224 | if (!GTK_WIDGET_VISIBLE(gtkblist->window)) |
|
01ea9120820a
[gaim-migrate @ 14790]
Casey Harkins <charkins@pidgin.im>
parents:
12478
diff
changeset
|
5225 | gtk_widget_show(gtkblist->window); |
|
12016
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
5226 | gtk_window_iconify(GTK_WINDOW(gtkblist->window)); |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
5227 | } |
| 5228 | 5228 | } |
| 5229 | } | |
| 5230 | ||
| 7620 | 5231 | static GList * |
| 5232 | groups_tree(void) | |
| 5233 | { | |
| 5234 | GList *tmp = NULL; | |
| 5235 | char *tmp2; | |
| 15884 | 5236 | PurpleGroup *g; |
| 5237 | PurpleBlistNode *gnode; | |
| 5238 | ||
| 5239 | if (purple_get_blist()->root == NULL) | |
| 7620 | 5240 | { |
| 5241 | tmp2 = g_strdup(_("Buddies")); | |
| 5242 | tmp = g_list_append(tmp, tmp2); | |
| 5243 | } | |
| 5244 | else | |
| 5245 | { | |
| 15884 | 5246 | for (gnode = purple_get_blist()->root; |
| 7620 | 5247 | gnode != NULL; |
| 5248 | gnode = gnode->next) | |
| 5249 | { | |
| 15884 | 5250 | if (PURPLE_BLIST_NODE_IS_GROUP(gnode)) |
| 7620 | 5251 | { |
| 15884 | 5252 | g = (PurpleGroup *)gnode; |
| 7620 | 5253 | tmp2 = g->name; |
| 5254 | tmp = g_list_append(tmp, tmp2); | |
| 5255 | } | |
| 5256 | } | |
| 5257 | } | |
| 5258 | ||
| 5259 | return tmp; | |
| 5260 | } | |
| 5261 | ||
| 5262 | static void | |
| 15884 | 5263 | 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
|
5264 | PidginAddBuddyData *data) |
| 7620 | 5265 | { |
| 5266 | /* Save our account */ | |
| 5267 | data->account = account; | |
| 5268 | } | |
| 5269 | ||
| 5270 | static void | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5271 | destroy_add_buddy_dialog_cb(GtkWidget *win, PidginAddBuddyData *data) |
| 7620 | 5272 | { |
| 5273 | g_free(data); | |
| 5274 | } | |
| 5275 | ||
| 5276 | static void | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5277 | add_buddy_cb(GtkWidget *w, int resp, PidginAddBuddyData *data) |
| 7620 | 5278 | { |
| 5279 | const char *grp, *who, *whoalias; | |
| 15884 | 5280 | PurpleGroup *g; |
| 5281 | PurpleBuddy *b; | |
| 5282 | PurpleConversation *c; | |
| 5283 | PurpleBuddyIcon *icon; | |
| 7620 | 5284 | |
| 5285 | if (resp == GTK_RESPONSE_OK) | |
| 5286 | { | |
| 5287 | who = gtk_entry_get_text(GTK_ENTRY(data->entry)); | |
| 5288 | grp = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(data->combo)->entry)); | |
| 5289 | 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
|
5290 | if (*whoalias == '\0') |
|
261c1ce87287
[gaim-migrate @ 10506]
Mark Doliner <markdoliner@pidgin.im>
parents:
9646
diff
changeset
|
5291 | whoalias = NULL; |
| 7620 | 5292 | |
| 15884 | 5293 | if ((g = purple_find_group(grp)) == NULL) |
| 7620 | 5294 | { |
| 15884 | 5295 | g = purple_group_new(grp); |
| 5296 | purple_blist_add_group(g, NULL); | |
| 7620 | 5297 | } |
| 5298 | ||
| 15884 | 5299 | b = purple_buddy_new(data->account, who, whoalias); |
| 5300 | purple_blist_add_buddy(b, NULL, g, NULL); | |
| 5301 | purple_account_add_buddy(data->account, b); | |
| 7620 | 5302 | |
|
7887
4b2925a88897
[gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents:
7879
diff
changeset
|
5303 | /* |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9236
diff
changeset
|
5304 | * XXX |
|
11643
f04408721780
[gaim-migrate @ 13920]
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
11638
diff
changeset
|
5305 | * It really seems like it would be better if the call to |
| 15884 | 5306 | * purple_account_add_buddy() and purple_conversation_update() were done in |
| 5307 | * blist.c, possibly in the purple_blist_add_buddy() function. Maybe | |
| 5308 | * purple_account_add_buddy() should be renamed to | |
| 5309 | * purple_blist_add_new_buddy() or something, and have it call | |
| 5310 | * purple_blist_add_buddy() after it creates it. --Mark | |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9236
diff
changeset
|
5311 | * |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9236
diff
changeset
|
5312 | * 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
|
5313 | * local list. We need a new, non-gtk file that calls both |
| 15884 | 5314 | * purple_account_add_buddy and purple_blist_add_buddy(). |
|
11643
f04408721780
[gaim-migrate @ 13920]
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
11638
diff
changeset
|
5315 | * Or something. --Mark |
|
7887
4b2925a88897
[gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents:
7879
diff
changeset
|
5316 | */ |
|
4b2925a88897
[gaim-migrate @ 8545]
Mark Doliner <markdoliner@pidgin.im>
parents:
7879
diff
changeset
|
5317 | |
| 15884 | 5318 | c = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, who, data->account); |
| 7620 | 5319 | if (c != NULL) { |
| 15884 | 5320 | icon = purple_conv_im_get_icon(PURPLE_CONV_IM(c)); |
|
13942
77bc33d555f8
[gaim-migrate @ 16358]
Mark Doliner <markdoliner@pidgin.im>
parents:
13834
diff
changeset
|
5321 | if (icon != NULL) |
| 15884 | 5322 | purple_buddy_icon_update(icon); |
| 7620 | 5323 | } |
| 5324 | } | |
| 5325 | ||
| 5326 | gtk_widget_destroy(data->window); | |
| 5327 | } | |
| 5328 | ||
| 5329 | static void | |
| 15884 | 5330 | pidgin_blist_request_add_buddy(PurpleAccount *account, const char *username, |
| 7620 | 5331 | const char *group, const char *alias) |
| 5332 | { | |
| 5333 | GtkWidget *table; | |
| 5334 | GtkWidget *label; | |
| 5335 | GtkWidget *hbox; | |
| 5336 | GtkWidget *vbox; | |
| 5337 | GtkWidget *img; | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5338 | PidginBuddyList *gtkblist; |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5339 | PidginAddBuddyData *data = g_new0(PidginAddBuddyData, 1); |
| 7620 | 5340 | |
| 5341 | data->account = | |
| 5342 | (account != NULL | |
| 5343 | ? account | |
| 15884 | 5344 | : purple_connection_get_account(purple_connections_get_all()->data)); |
| 7620 | 5345 | |
| 15497 | 5346 | img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION, |
| 5347 | gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE)); | |
| 7620 | 5348 | |
| 15884 | 5349 | gtkblist = PIDGIN_BLIST(purple_get_blist()); |
| 7620 | 5350 | |
| 5351 | data->window = gtk_dialog_new_with_buttons(_("Add Buddy"), | |
| 8975 | 5352 | NULL, GTK_DIALOG_NO_SEPARATOR, |
| 7620 | 5353 | GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, |
| 5354 | GTK_STOCK_ADD, GTK_RESPONSE_OK, | |
| 5355 | NULL); | |
| 5356 | ||
| 5357 | gtk_dialog_set_default_response(GTK_DIALOG(data->window), GTK_RESPONSE_OK); | |
| 15882 | 5358 | gtk_container_set_border_width(GTK_CONTAINER(data->window), PIDGIN_HIG_BOX_SPACE); |
| 7620 | 5359 | gtk_window_set_resizable(GTK_WINDOW(data->window), FALSE); |
| 15882 | 5360 | gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(data->window)->vbox), PIDGIN_HIG_BORDER); |
| 5361 | gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), PIDGIN_HIG_BOX_SPACE); | |
| 7620 | 5362 | gtk_window_set_role(GTK_WINDOW(data->window), "add_buddy"); |
| 8975 | 5363 | gtk_window_set_type_hint(GTK_WINDOW(data->window), |
|
9811
2cbca162a09f
[gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents:
9791
diff
changeset
|
5364 | GDK_WINDOW_TYPE_HINT_DIALOG); |
| 7620 | 5365 | |
| 15882 | 5366 | hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER); |
| 7620 | 5367 | gtk_container_add(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), hbox); |
| 5368 | gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | |
| 5369 | gtk_misc_set_alignment(GTK_MISC(img), 0, 0); | |
| 5370 | ||
| 5371 | vbox = gtk_vbox_new(FALSE, 0); | |
| 5372 | gtk_container_add(GTK_CONTAINER(hbox), vbox); | |
| 5373 | ||
| 5374 | label = gtk_label_new( | |
| 5375 | _("Please enter the screen name of the person you would like " | |
| 5376 | "to add to your buddy list. You may optionally enter an alias, " | |
| 5377 | "or nickname, for the buddy. The alias will be displayed in " | |
| 5378 | "place of the screen name whenever possible.\n")); | |
| 5379 | ||
| 5380 | gtk_widget_set_size_request(GTK_WIDGET(label), 400, -1); | |
| 5381 | gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | |
| 5382 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
| 5383 | gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); | |
| 5384 | ||
| 15882 | 5385 | hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); |
| 7620 | 5386 | gtk_container_add(GTK_CONTAINER(vbox), hbox); |
| 5387 | ||
| 5388 | g_signal_connect(G_OBJECT(data->window), "destroy", | |
| 5389 | G_CALLBACK(destroy_add_buddy_dialog_cb), data); | |
| 5390 | ||
| 5391 | table = gtk_table_new(4, 2, FALSE); | |
| 5392 | gtk_table_set_row_spacings(GTK_TABLE(table), 5); | |
| 5393 | gtk_table_set_col_spacings(GTK_TABLE(table), 5); | |
| 5394 | gtk_container_set_border_width(GTK_CONTAINER(table), 0); | |
| 5395 | gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); | |
| 5396 | ||
|
13546
0700f0c29e14
[gaim-migrate @ 15922]
Richard Laager <rlaager@pidgin.im>
parents:
13543
diff
changeset
|
5397 | label = gtk_label_new(_("Screen name:")); |
| 7620 | 5398 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
| 5399 | gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1); | |
| 5400 | ||
| 5401 | data->entry = gtk_entry_new(); | |
| 5402 | gtk_table_attach_defaults(GTK_TABLE(table), data->entry, 1, 2, 0, 1); | |
| 5403 | gtk_widget_grab_focus(data->entry); | |
| 5404 | ||
| 5405 | if (username != NULL) | |
| 5406 | gtk_entry_set_text(GTK_ENTRY(data->entry), username); | |
|
12337
1c9251d1f005
[gaim-migrate @ 14641]
Mark Doliner <markdoliner@pidgin.im>
parents:
12334
diff
changeset
|
5407 | else |
|
1c9251d1f005
[gaim-migrate @ 14641]
Mark Doliner <markdoliner@pidgin.im>
parents:
12334
diff
changeset
|
5408 | gtk_dialog_set_response_sensitive(GTK_DIALOG(data->window), |
|
1c9251d1f005
[gaim-migrate @ 14641]
Mark Doliner <markdoliner@pidgin.im>
parents:
12334
diff
changeset
|
5409 | GTK_RESPONSE_OK, FALSE); |
| 7620 | 5410 | |
| 5411 | gtk_entry_set_activates_default (GTK_ENTRY(data->entry), TRUE); | |
| 15568 | 5412 | pidgin_set_accessible_label (data->entry, label); |
| 7620 | 5413 | |
|
12337
1c9251d1f005
[gaim-migrate @ 14641]
Mark Doliner <markdoliner@pidgin.im>
parents:
12334
diff
changeset
|
5414 | 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
|
5415 | G_CALLBACK(pidgin_set_sensitive_if_input), |
|
12337
1c9251d1f005
[gaim-migrate @ 14641]
Mark Doliner <markdoliner@pidgin.im>
parents:
12334
diff
changeset
|
5416 | data->window); |
|
1c9251d1f005
[gaim-migrate @ 14641]
Mark Doliner <markdoliner@pidgin.im>
parents:
12334
diff
changeset
|
5417 | |
| 7620 | 5418 | label = gtk_label_new(_("Alias:")); |
| 5419 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | |
| 5420 | gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2); | |
| 5421 | ||
| 5422 | data->entry_for_alias = gtk_entry_new(); | |
| 5423 | gtk_table_attach_defaults(GTK_TABLE(table), | |
| 5424 | data->entry_for_alias, 1, 2, 1, 2); | |
| 5425 | ||
| 5426 | if (alias != NULL) | |
| 5427 | gtk_entry_set_text(GTK_ENTRY(data->entry_for_alias), alias); | |
| 5428 | ||
|
10734
4e49449724ec
[gaim-migrate @ 12336]
Richard Laager <rlaager@pidgin.im>
parents:
10694
diff
changeset
|
5429 | if (username != NULL) |
|
4e49449724ec
[gaim-migrate @ 12336]
Richard Laager <rlaager@pidgin.im>
parents:
10694
diff
changeset
|
5430 | gtk_widget_grab_focus(GTK_WIDGET(data->entry_for_alias)); |
|
4e49449724ec
[gaim-migrate @ 12336]
Richard Laager <rlaager@pidgin.im>
parents:
10694
diff
changeset
|
5431 | |
| 7620 | 5432 | gtk_entry_set_activates_default (GTK_ENTRY(data->entry_for_alias), TRUE); |
| 15568 | 5433 | pidgin_set_accessible_label (data->entry_for_alias, label); |
| 7620 | 5434 | |
| 5435 | label = gtk_label_new(_("Group:")); | |
| 5436 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | |
| 5437 | gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 2, 3); | |
| 5438 | ||
| 5439 | data->combo = gtk_combo_new(); | |
| 5440 | gtk_combo_set_popdown_strings(GTK_COMBO(data->combo), groups_tree()); | |
| 5441 | gtk_table_attach_defaults(GTK_TABLE(table), data->combo, 1, 2, 2, 3); | |
| 15568 | 5442 | pidgin_set_accessible_label (data->combo, label); |
| 7620 | 5443 | |
| 5444 | /* Set up stuff for the account box */ | |
| 5445 | label = gtk_label_new(_("Account:")); | |
| 5446 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | |
| 5447 | gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 3, 4); | |
| 5448 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5449 | data->account_box = pidgin_account_option_menu_new(account, FALSE, |
| 7620 | 5450 | G_CALLBACK(add_buddy_select_account_cb), NULL, data); |
| 5451 | ||
| 5452 | gtk_table_attach_defaults(GTK_TABLE(table), data->account_box, 1, 2, 3, 4); | |
| 15568 | 5453 | pidgin_set_accessible_label (data->account_box, label); |
| 7620 | 5454 | /* End of account box */ |
| 5455 | ||
| 5456 | g_signal_connect(G_OBJECT(data->window), "response", | |
| 5457 | G_CALLBACK(add_buddy_cb), data); | |
| 5458 | ||
| 5459 | gtk_widget_show_all(data->window); | |
| 5460 | ||
| 5461 | if (group != NULL) | |
| 5462 | gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(data->combo)->entry), group); | |
| 5463 | } | |
| 5464 | ||
| 5465 | static void | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5466 | add_chat_cb(GtkWidget *w, PidginAddChatData *data) |
| 7620 | 5467 | { |
| 5468 | GHashTable *components; | |
| 5469 | GList *tmp; | |
| 15884 | 5470 | PurpleChat *chat; |
| 5471 | PurpleGroup *group; | |
| 7620 | 5472 | const char *group_name; |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5473 | const char *value; |
| 7620 | 5474 | |
| 5475 | components = g_hash_table_new_full(g_str_hash, g_str_equal, | |
| 5476 | g_free, g_free); | |
| 5477 | ||
| 5478 | for (tmp = data->entries; tmp; tmp = tmp->next) | |
| 5479 | { | |
| 5480 | if (g_object_get_data(tmp->data, "is_spin")) | |
| 5481 | { | |
| 5482 | g_hash_table_replace(components, | |
| 5483 | g_strdup(g_object_get_data(tmp->data, "identifier")), | |
| 5484 | g_strdup_printf("%d", | |
| 5485 | gtk_spin_button_get_value_as_int(tmp->data))); | |
| 5486 | } | |
| 5487 | else | |
| 5488 | { | |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5489 | value = gtk_entry_get_text(tmp->data); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5490 | if (*value != '\0') |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5491 | g_hash_table_replace(components, |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5492 | g_strdup(g_object_get_data(tmp->data, "identifier")), |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5493 | g_strdup(value)); |
| 7620 | 5494 | } |
| 5495 | } | |
| 5496 | ||
| 15884 | 5497 | chat = purple_chat_new(data->account, |
| 7620 | 5498 | gtk_entry_get_text(GTK_ENTRY(data->alias_entry)), |
| 5499 | components); | |
| 5500 | ||
| 5501 | group_name = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(data->group_combo)->entry)); | |
| 5502 | ||
| 15884 | 5503 | if ((group = purple_find_group(group_name)) == NULL) |
| 7620 | 5504 | { |
| 15884 | 5505 | group = purple_group_new(group_name); |
| 5506 | purple_blist_add_group(group, NULL); | |
| 7620 | 5507 | } |
| 5508 | ||
| 5509 | if (chat != NULL) | |
| 5510 | { | |
| 15884 | 5511 | purple_blist_add_chat(chat, group, NULL); |
| 7620 | 5512 | } |
| 5513 | ||
| 5514 | gtk_widget_destroy(data->window); | |
|
9812
26cf39e74774
[gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents:
9811
diff
changeset
|
5515 | g_free(data->default_chat_name); |
| 7620 | 5516 | g_list_free(data->entries); |
| 5517 | g_free(data); | |
| 5518 | } | |
| 5519 | ||
| 5520 | static void | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5521 | add_chat_resp_cb(GtkWidget *w, int resp, PidginAddChatData *data) |
| 7620 | 5522 | { |
| 5523 | if (resp == GTK_RESPONSE_OK) | |
| 5524 | { | |
| 5525 | add_chat_cb(NULL, data); | |
| 5526 | } | |
| 5527 | else | |
| 5528 | { | |
| 5529 | gtk_widget_destroy(data->window); | |
|
9812
26cf39e74774
[gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents:
9811
diff
changeset
|
5530 | g_free(data->default_chat_name); |
| 7620 | 5531 | g_list_free(data->entries); |
| 5532 | g_free(data); | |
| 5533 | } | |
| 5534 | } | |
| 5535 | ||
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5536 | /* |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5537 | * 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
|
5538 | * 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
|
5539 | */ |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5540 | static void |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5541 | addchat_set_sensitive_if_input_cb(GtkWidget *entry, gpointer user_data) |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5542 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5543 | PidginAddChatData *data; |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5544 | GList *tmp; |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5545 | const char *text; |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5546 | gboolean required; |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5547 | gboolean sensitive = TRUE; |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5548 | |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5549 | data = user_data; |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5550 | |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5551 | for (tmp = data->entries; tmp != NULL; tmp = tmp->next) |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5552 | { |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5553 | if (!g_object_get_data(tmp->data, "is_spin")) |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5554 | { |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5555 | required = GPOINTER_TO_INT(g_object_get_data(tmp->data, "required")); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5556 | text = gtk_entry_get_text(tmp->data); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5557 | if (required && (*text == '\0')) |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5558 | sensitive = FALSE; |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5559 | } |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5560 | } |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5561 | |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5562 | 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
|
5563 | } |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5564 | |
| 7620 | 5565 | static void |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5566 | rebuild_addchat_entries(PidginAddChatData *data) |
| 7620 | 5567 | { |
| 15884 | 5568 | PurpleConnection *gc; |
|
15051
1d0c9b4b68e6
[gaim-migrate @ 17768]
Daniel Atallah <datallah@pidgin.im>
parents:
15050
diff
changeset
|
5569 | GList *list = NULL, *tmp; |
|
9754
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
5570 | GHashTable *defaults = NULL; |
| 7620 | 5571 | struct proto_chat_entry *pce; |
| 5572 | gboolean focus = TRUE; | |
| 5573 | ||
|
10127
3ea502c95653
[gaim-migrate @ 11165]
Daniel Atallah <datallah@pidgin.im>
parents:
10118
diff
changeset
|
5574 | g_return_if_fail(data->account != NULL); |
|
3ea502c95653
[gaim-migrate @ 11165]
Daniel Atallah <datallah@pidgin.im>
parents:
10118
diff
changeset
|
5575 | |
| 15884 | 5576 | gc = purple_account_get_connection(data->account); |
| 7620 | 5577 | |
|
15051
1d0c9b4b68e6
[gaim-migrate @ 17768]
Daniel Atallah <datallah@pidgin.im>
parents:
15050
diff
changeset
|
5578 | while ((tmp = gtk_container_get_children(GTK_CONTAINER(data->entries_box)))) |
|
1d0c9b4b68e6
[gaim-migrate @ 17768]
Daniel Atallah <datallah@pidgin.im>
parents:
15050
diff
changeset
|
5579 | gtk_widget_destroy(tmp->data); |
| 7620 | 5580 | |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
5581 | g_list_free(data->entries); |
| 7620 | 5582 | |
| 5583 | data->entries = NULL; | |
| 5584 | ||
| 15884 | 5585 | if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info != NULL) |
| 5586 | list = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info(gc); | |
| 5587 | ||
| 5588 | if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults != NULL) | |
| 5589 | 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
|
5590 | |
| 7620 | 5591 | for (tmp = list; tmp; tmp = tmp->next) |
| 5592 | { | |
| 5593 | GtkWidget *label; | |
| 5594 | GtkWidget *rowbox; | |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5595 | GtkWidget *input; |
| 7620 | 5596 | |
| 5597 | pce = tmp->data; | |
| 5598 | ||
| 5599 | rowbox = gtk_hbox_new(FALSE, 5); | |
| 5600 | gtk_box_pack_start(GTK_BOX(data->entries_box), rowbox, FALSE, FALSE, 0); | |
| 5601 | ||
| 7889 | 5602 | label = gtk_label_new_with_mnemonic(pce->label); |
| 7620 | 5603 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
| 5604 | gtk_size_group_add_widget(data->sg, label); | |
| 5605 | gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0); | |
| 5606 | ||
| 5607 | if (pce->is_int) | |
| 5608 | { | |
| 5609 | GtkObject *adjust; | |
| 5610 | adjust = gtk_adjustment_new(pce->min, pce->min, pce->max, | |
| 5611 | 1, 10, 10); | |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5612 | input = gtk_spin_button_new(GTK_ADJUSTMENT(adjust), 1, 0); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5613 | gtk_widget_set_size_request(input, 50, -1); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5614 | gtk_box_pack_end(GTK_BOX(rowbox), input, FALSE, FALSE, 0); |
| 7620 | 5615 | } |
| 5616 | else | |
| 5617 | { | |
|
9754
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
5618 | char *value; |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5619 | input = gtk_entry_new(); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5620 | gtk_entry_set_activates_default(GTK_ENTRY(input), TRUE); |
|
9754
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
5621 | value = g_hash_table_lookup(defaults, pce->identifier); |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
5622 | if (value != NULL) |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5623 | gtk_entry_set_text(GTK_ENTRY(input), value); |
| 7620 | 5624 | if (pce->secret) |
|
11986
21d2ab6421a7
[gaim-migrate @ 14279]
Mark Doliner <markdoliner@pidgin.im>
parents:
11983
diff
changeset
|
5625 | { |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5626 | gtk_entry_set_visibility(GTK_ENTRY(input), FALSE); |
|
15390
d429e03fc755
[gaim-migrate @ 18119]
Mark Doliner <markdoliner@pidgin.im>
parents:
15386
diff
changeset
|
5627 | if (gtk_entry_get_invisible_char(GTK_ENTRY(input)) == '*') |
| 15882 | 5628 | 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
|
5629 | } |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5630 | gtk_box_pack_end(GTK_BOX(rowbox), input, TRUE, TRUE, 0); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5631 | g_signal_connect(G_OBJECT(input), "changed", |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5632 | G_CALLBACK(addchat_set_sensitive_if_input_cb), data); |
| 7620 | 5633 | } |
| 5634 | ||
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5635 | /* Do the following for any type of input widget */ |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5636 | if (focus) |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5637 | { |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5638 | gtk_widget_grab_focus(input); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5639 | focus = FALSE; |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5640 | } |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5641 | gtk_label_set_mnemonic_widget(GTK_LABEL(label), input); |
| 15568 | 5642 | pidgin_set_accessible_label(input, label); |
|
13107
704041197f4d
[gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents:
13091
diff
changeset
|
5643 | 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
|
5644 | 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
|
5645 | 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
|
5646 | data->entries = g_list_append(data->entries, input); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5647 | |
| 7620 | 5648 | g_free(pce); |
| 5649 | } | |
| 5650 | ||
| 5651 | g_list_free(list); | |
|
9754
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
5652 | g_hash_table_destroy(defaults); |
| 7620 | 5653 | |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5654 | /* Set whether the "OK" button should be clickable initially */ |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5655 | addchat_set_sensitive_if_input_cb(NULL, data); |
|
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5656 | |
| 7620 | 5657 | gtk_widget_show_all(data->entries_box); |
| 5658 | } | |
| 5659 | ||
| 5660 | static void | |
| 15884 | 5661 | 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
|
5662 | PidginAddChatData *data) |
| 7620 | 5663 | { |
| 15884 | 5664 | if (strcmp(purple_account_get_protocol_id(data->account), |
| 5665 | purple_account_get_protocol_id(account)) == 0) | |
| 7620 | 5666 | { |
| 5667 | data->account = account; | |
| 5668 | } | |
| 5669 | else | |
| 5670 | { | |
| 5671 | data->account = account; | |
| 5672 | rebuild_addchat_entries(data); | |
| 5673 | } | |
| 5674 | } | |
| 5675 | ||
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
5676 | static void |
| 15884 | 5677 | pidgin_blist_request_add_chat(PurpleAccount *account, PurpleGroup *group, |
|
9754
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
5678 | const char *alias, const char *name) |
| 7620 | 5679 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5680 | PidginAddChatData *data; |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5681 | PidginBuddyList *gtkblist; |
| 8975 | 5682 | GList *l; |
| 15884 | 5683 | PurpleConnection *gc; |
| 7620 | 5684 | GtkWidget *label; |
| 5685 | GtkWidget *rowbox; | |
| 5686 | GtkWidget *hbox; | |
| 5687 | GtkWidget *vbox; | |
| 5688 | GtkWidget *img; | |
| 5689 | ||
|
9812
26cf39e74774
[gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents:
9811
diff
changeset
|
5690 | if (account != NULL) { |
| 15884 | 5691 | gc = purple_account_get_connection(account); |
| 5692 | ||
| 5693 | if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->join_chat == NULL) { | |
| 5694 | 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
|
5695 | return; |
|
26cf39e74774
[gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents:
9811
diff
changeset
|
5696 | } |
|
26cf39e74774
[gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents:
9811
diff
changeset
|
5697 | } else { |
|
26cf39e74774
[gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents:
9811
diff
changeset
|
5698 | /* Find an account with chat capabilities */ |
| 15884 | 5699 | for (l = purple_connections_get_all(); l != NULL; l = l->next) { |
| 5700 | gc = (PurpleConnection *)l->data; | |
| 5701 | ||
| 5702 | if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->join_chat != NULL) { | |
| 5703 | account = purple_connection_get_account(gc); | |
|
9812
26cf39e74774
[gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents:
9811
diff
changeset
|
5704 | break; |
|
26cf39e74774
[gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents:
9811
diff
changeset
|
5705 | } |
|
26cf39e74774
[gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents:
9811
diff
changeset
|
5706 | } |
|
26cf39e74774
[gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents:
9811
diff
changeset
|
5707 | |
|
26cf39e74774
[gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents:
9811
diff
changeset
|
5708 | if (account == NULL) { |
| 15884 | 5709 | purple_notify_error(NULL, NULL, |
|
9812
26cf39e74774
[gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents:
9811
diff
changeset
|
5710 | _("You are not currently signed on with any " |
|
26cf39e74774
[gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents:
9811
diff
changeset
|
5711 | "protocols that have the ability to chat."), NULL); |
|
26cf39e74774
[gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents:
9811
diff
changeset
|
5712 | return; |
|
26cf39e74774
[gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents:
9811
diff
changeset
|
5713 | } |
|
26cf39e74774
[gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents:
9811
diff
changeset
|
5714 | } |
|
26cf39e74774
[gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents:
9811
diff
changeset
|
5715 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5716 | data = g_new0(PidginAddChatData, 1); |
|
9812
26cf39e74774
[gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents:
9811
diff
changeset
|
5717 | data->account = account; |
|
26cf39e74774
[gaim-migrate @ 10683]
Mark Doliner <markdoliner@pidgin.im>
parents:
9811
diff
changeset
|
5718 | data->default_chat_name = g_strdup(name); |
| 7620 | 5719 | |
| 15497 | 5720 | img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION, |
| 5721 | gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE)); | |
| 7620 | 5722 | |
| 15884 | 5723 | gtkblist = PIDGIN_BLIST(purple_get_blist()); |
| 8975 | 5724 | |
| 7620 | 5725 | data->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); |
| 5726 | ||
| 8975 | 5727 | data->window = gtk_dialog_new_with_buttons(_("Add Chat"), |
| 5728 | NULL, GTK_DIALOG_NO_SEPARATOR, | |
| 5729 | GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, | |
| 5730 | GTK_STOCK_ADD, GTK_RESPONSE_OK, | |
| 5731 | NULL); | |
| 5732 | ||
| 5733 | gtk_dialog_set_default_response(GTK_DIALOG(data->window), GTK_RESPONSE_OK); | |
| 15882 | 5734 | gtk_container_set_border_width(GTK_CONTAINER(data->window), PIDGIN_HIG_BOX_SPACE); |
| 8975 | 5735 | gtk_window_set_resizable(GTK_WINDOW(data->window), FALSE); |
| 15882 | 5736 | gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(data->window)->vbox), PIDGIN_HIG_BORDER); |
| 5737 | gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), PIDGIN_HIG_BOX_SPACE); | |
| 7620 | 5738 | gtk_window_set_role(GTK_WINDOW(data->window), "add_chat"); |
| 8975 | 5739 | gtk_window_set_type_hint(GTK_WINDOW(data->window), |
|
9811
2cbca162a09f
[gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents:
9791
diff
changeset
|
5740 | GDK_WINDOW_TYPE_HINT_DIALOG); |
| 7620 | 5741 | |
| 15882 | 5742 | hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER); |
| 7620 | 5743 | gtk_container_add(GTK_CONTAINER(GTK_DIALOG(data->window)->vbox), hbox); |
| 5744 | gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | |
| 5745 | gtk_misc_set_alignment(GTK_MISC(img), 0, 0); | |
| 5746 | ||
| 5747 | vbox = gtk_vbox_new(FALSE, 5); | |
| 5748 | gtk_container_add(GTK_CONTAINER(hbox), vbox); | |
| 5749 | ||
| 5750 | label = gtk_label_new( | |
| 5751 | _("Please enter an alias, and the appropriate information " | |
| 5752 | "about the chat you would like to add to your buddy list.\n")); | |
| 5753 | gtk_widget_set_size_request(label, 400, -1); | |
| 5754 | gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | |
| 5755 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
| 5756 | gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); | |
| 5757 | ||
| 5758 | rowbox = gtk_hbox_new(FALSE, 5); | |
| 5759 | gtk_box_pack_start(GTK_BOX(vbox), rowbox, FALSE, FALSE, 0); | |
| 5760 | ||
| 5761 | label = gtk_label_new(_("Account:")); | |
| 5762 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | |
| 5763 | gtk_size_group_add_widget(data->sg, label); | |
| 5764 | gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0); | |
| 5765 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5766 | data->account_menu = pidgin_account_option_menu_new(account, FALSE, |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10439
diff
changeset
|
5767 | G_CALLBACK(addchat_select_account_cb), |
|
9987
2396bd099335
[gaim-migrate @ 10900]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9959
diff
changeset
|
5768 | chat_account_filter_func, data); |
| 7620 | 5769 | gtk_box_pack_start(GTK_BOX(rowbox), data->account_menu, TRUE, TRUE, 0); |
| 15568 | 5770 | pidgin_set_accessible_label (data->account_menu, label); |
| 7620 | 5771 | |
| 5772 | data->entries_box = gtk_vbox_new(FALSE, 5); | |
|
9811
2cbca162a09f
[gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents:
9791
diff
changeset
|
5773 | gtk_container_set_border_width(GTK_CONTAINER(data->entries_box), 0); |
| 7620 | 5774 | gtk_box_pack_start(GTK_BOX(vbox), data->entries_box, TRUE, TRUE, 0); |
| 5775 | ||
| 5776 | rebuild_addchat_entries(data); | |
| 5777 | ||
| 5778 | rowbox = gtk_hbox_new(FALSE, 5); | |
| 5779 | gtk_box_pack_start(GTK_BOX(vbox), rowbox, FALSE, FALSE, 0); | |
| 5780 | ||
| 5781 | label = gtk_label_new(_("Alias:")); | |
| 5782 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | |
| 5783 | gtk_size_group_add_widget(data->sg, label); | |
| 5784 | gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0); | |
| 5785 | ||
| 5786 | data->alias_entry = gtk_entry_new(); | |
|
7859
b0f646df7125
[gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents:
7856
diff
changeset
|
5787 | if (alias != NULL) |
|
b0f646df7125
[gaim-migrate @ 8513]
Mark Doliner <markdoliner@pidgin.im>
parents:
7856
diff
changeset
|
5788 | gtk_entry_set_text(GTK_ENTRY(data->alias_entry), alias); |
| 7620 | 5789 | 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
|
5790 | gtk_entry_set_activates_default(GTK_ENTRY(data->alias_entry), TRUE); |
| 15568 | 5791 | pidgin_set_accessible_label (data->alias_entry, label); |
|
17400
f09b952bdbeb
Closes #348 'Conversation -> Add (for Chats) should move focus to the alias field.'
Sean Egan <seanegan@pidgin.im>
parents:
17180
diff
changeset
|
5792 | if (name != NULL) |
|
f09b952bdbeb
Closes #348 'Conversation -> Add (for Chats) should move focus to the alias field.'
Sean Egan <seanegan@pidgin.im>
parents:
17180
diff
changeset
|
5793 | gtk_widget_grab_focus(data->alias_entry); |
| 7620 | 5794 | |
| 5795 | rowbox = gtk_hbox_new(FALSE, 5); | |
| 5796 | gtk_box_pack_start(GTK_BOX(vbox), rowbox, FALSE, FALSE, 0); | |
| 5797 | ||
|
9811
2cbca162a09f
[gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents:
9791
diff
changeset
|
5798 | label = gtk_label_new(_("Group:")); |
| 7620 | 5799 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
| 5800 | gtk_size_group_add_widget(data->sg, label); | |
| 5801 | gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0); | |
| 5802 | ||
|
9811
2cbca162a09f
[gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents:
9791
diff
changeset
|
5803 | data->group_combo = gtk_combo_new(); |
|
2cbca162a09f
[gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents:
9791
diff
changeset
|
5804 | gtk_combo_set_popdown_strings(GTK_COMBO(data->group_combo), groups_tree()); |
| 7620 | 5805 | gtk_box_pack_end(GTK_BOX(rowbox), data->group_combo, TRUE, TRUE, 0); |
| 5806 | ||
| 5807 | if (group) | |
| 5808 | { | |
| 5809 | gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(data->group_combo)->entry), | |
| 5810 | group->name); | |
| 5811 | } | |
| 15568 | 5812 | pidgin_set_accessible_label (data->group_combo, label); |
| 7620 | 5813 | |
| 5814 | g_signal_connect(G_OBJECT(data->window), "response", | |
| 5815 | G_CALLBACK(add_chat_resp_cb), data); | |
| 5816 | ||
| 5817 | gtk_widget_show_all(data->window); | |
| 5818 | } | |
| 5819 | ||
| 5820 | static void | |
| 15884 | 5821 | add_group_cb(PurpleConnection *gc, const char *group_name) |
| 5822 | { | |
| 5823 | PurpleGroup *group; | |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9236
diff
changeset
|
5824 | |
|
12458
c1bb7ec2fb26
[gaim-migrate @ 14767]
Mark Doliner <markdoliner@pidgin.im>
parents:
12450
diff
changeset
|
5825 | if ((group_name == NULL) || (*group_name == '\0')) |
|
c1bb7ec2fb26
[gaim-migrate @ 14767]
Mark Doliner <markdoliner@pidgin.im>
parents:
12450
diff
changeset
|
5826 | return; |
|
c1bb7ec2fb26
[gaim-migrate @ 14767]
Mark Doliner <markdoliner@pidgin.im>
parents:
12450
diff
changeset
|
5827 | |
| 15884 | 5828 | group = purple_group_new(group_name); |
| 5829 | purple_blist_add_group(group, NULL); | |
| 7620 | 5830 | } |
| 5831 | ||
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
5832 | static void |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5833 | pidgin_blist_request_add_group(void) |
| 7620 | 5834 | { |
| 15884 | 5835 | purple_request_input(NULL, _("Add Group"), NULL, |
| 7620 | 5836 | _("Please enter the name of the group to be added."), |
| 8697 | 5837 | NULL, FALSE, FALSE, NULL, |
| 7620 | 5838 | _("Add"), G_CALLBACK(add_group_cb), |
|
16490
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
16357
diff
changeset
|
5839 | _("Cancel"), NULL, |
|
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
16357
diff
changeset
|
5840 | NULL, NULL, NULL, |
|
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
16357
diff
changeset
|
5841 | NULL); |
| 7620 | 5842 | } |
| 5843 | ||
|
12016
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
5844 | void |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5845 | pidgin_blist_toggle_visibility() |
|
12016
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
5846 | { |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
5847 | if (gtkblist && gtkblist->window) { |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
5848 | if (GTK_WIDGET_VISIBLE(gtkblist->window)) { |
| 15884 | 5849 | 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
|
5850 | } else { |
| 15884 | 5851 | purple_blist_set_visible(TRUE); |
|
12016
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
5852 | } |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
5853 | } |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
5854 | } |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
5855 | |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
5856 | void |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5857 | pidgin_blist_visibility_manager_add() |
|
12016
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
5858 | { |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
5859 | visibility_manager_count++; |
| 15884 | 5860 | 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
|
5861 | } |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
5862 | |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
5863 | void |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5864 | pidgin_blist_visibility_manager_remove() |
|
12016
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
5865 | { |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
5866 | if (visibility_manager_count) |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
5867 | visibility_manager_count--; |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
5868 | if (!visibility_manager_count) |
| 15884 | 5869 | purple_blist_set_visible(TRUE); |
| 5870 | 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
|
5871 | } |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
5872 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5873 | void pidgin_blist_add_alert(GtkWidget *widget) |
| 15094 | 5874 | { |
| 5875 | gtk_container_add(GTK_CONTAINER(gtkblist->scrollbook), widget); | |
| 15413 | 5876 | if (!GTK_WIDGET_HAS_FOCUS(gtkblist->window)) |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5877 | pidgin_set_urgent(GTK_WINDOW(gtkblist->window), TRUE); |
| 15094 | 5878 | } |
| 5879 | ||
| 15243 | 5880 | void |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5881 | 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
|
5882 | gpointer user_data, GDestroyNotify destroy) |
|
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15385
diff
changeset
|
5883 | { |
|
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15385
diff
changeset
|
5884 | /* Destroy any existing headline first */ |
|
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15385
diff
changeset
|
5885 | if (gtkblist->headline_destroy) |
|
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15385
diff
changeset
|
5886 | gtkblist->headline_destroy(gtkblist->headline_data); |
|
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15385
diff
changeset
|
5887 | |
| 15246 | 5888 | gtk_label_set_markup(GTK_LABEL(gtkblist->headline_label), text); |
| 5889 | 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
|
5890 | |
| 15243 | 5891 | gtkblist->headline_callback = callback; |
| 5892 | gtkblist->headline_data = user_data; | |
|
15386
2cfff7893ed0
[gaim-migrate @ 18115]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15385
diff
changeset
|
5893 | gtkblist->headline_destroy = destroy; |
| 15413 | 5894 | if (!GTK_WIDGET_HAS_FOCUS(gtkblist->window)) |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5895 | pidgin_set_urgent(GTK_WINDOW(gtkblist->window), TRUE); |
| 15243 | 5896 | gtk_widget_show_all(gtkblist->headline_hbox); |
| 5897 | } | |
|
12016
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11988
diff
changeset
|
5898 | |
| 15884 | 5899 | static PurpleBlistUiOps blist_ui_ops = |
| 5228 | 5900 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5901 | pidgin_blist_new_list, |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5902 | pidgin_blist_new_node, |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5903 | pidgin_blist_show, |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5904 | pidgin_blist_update, |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5905 | pidgin_blist_remove, |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5906 | pidgin_blist_destroy, |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5907 | pidgin_blist_set_visible, |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5908 | pidgin_blist_request_add_buddy, |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5909 | pidgin_blist_request_add_chat, |
|
16752
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
16625
diff
changeset
|
5910 | pidgin_blist_request_add_group, |
|
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
16625
diff
changeset
|
5911 | NULL, |
|
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
16625
diff
changeset
|
5912 | NULL, |
|
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
16625
diff
changeset
|
5913 | NULL, |
|
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
16625
diff
changeset
|
5914 | NULL |
| 5228 | 5915 | }; |
| 5916 | ||
| 5917 | ||
| 15884 | 5918 | PurpleBlistUiOps * |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5919 | pidgin_blist_get_ui_ops(void) |
| 5228 | 5920 | { |
| 5921 | return &blist_ui_ops; | |
| 5922 | } | |
| 5923 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5924 | PidginBuddyList *pidgin_blist_get_default_gtk_blist() |
| 10643 | 5925 | { |
| 15509 | 5926 | return gtkblist; |
| 10643 | 5927 | } |
| 5928 | ||
| 15884 | 5929 | static void account_signon_cb(PurpleConnection *gc, gpointer z) |
| 5930 | { | |
| 5931 | PurpleAccount *account = purple_connection_get_account(gc); | |
| 5932 | PurpleBlistNode *gnode, *cnode; | |
| 5933 | for(gnode = purple_get_blist()->root; gnode; gnode = gnode->next) | |
| 7620 | 5934 | { |
| 15884 | 5935 | if(!PURPLE_BLIST_NODE_IS_GROUP(gnode)) |
| 7620 | 5936 | continue; |
| 5937 | for(cnode = gnode->child; cnode; cnode = cnode->next) | |
| 5938 | { | |
| 15884 | 5939 | PurpleChat *chat; |
| 5940 | ||
| 5941 | if(!PURPLE_BLIST_NODE_IS_CHAT(cnode)) | |
| 7620 | 5942 | continue; |
| 5943 | ||
| 15884 | 5944 | chat = (PurpleChat *)cnode; |
| 7620 | 5945 | |
| 5946 | if(chat->account != account) | |
| 5947 | continue; | |
| 5948 | ||
| 15884 | 5949 | if(purple_blist_node_get_bool((PurpleBlistNode*)chat, "gtk-autojoin") || |
| 5950 | (purple_blist_node_get_string((PurpleBlistNode*)chat, | |
| 8198 | 5951 | "gtk-autojoin") != NULL)) |
| 7620 | 5952 | serv_join_chat(gc, chat->components); |
| 5953 | } | |
| 5954 | } | |
| 5955 | } | |
| 5956 | ||
| 8815 | 5957 | void * |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5958 | pidgin_blist_get_handle() { |
| 8815 | 5959 | static int handle; |
| 5960 | ||
| 5961 | return &handle; | |
| 5962 | } | |
| 5963 | ||
| 15884 | 5964 | static gboolean buddy_signonoff_timeout_cb(PurpleBuddy *buddy) |
| 5965 | { | |
| 5966 | struct _pidgin_blist_node *gtknode = ((PurpleBlistNode*)buddy)->ui_data; | |
| 11910 | 5967 | |
| 5968 | gtknode->recent_signonoff = FALSE; | |
| 5969 | gtknode->recent_signonoff_timer = 0; | |
| 5970 | ||
| 15884 | 5971 | pidgin_blist_update(NULL, (PurpleBlistNode*)buddy); |
| 11910 | 5972 | |
| 5973 | return FALSE; | |
| 5974 | } | |
| 5975 | ||
| 15884 | 5976 | static void buddy_signonoff_cb(PurpleBuddy *buddy) |
| 11910 | 5977 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5978 | struct _pidgin_blist_node *gtknode; |
| 11915 | 5979 | |
| 15884 | 5980 | if(!((PurpleBlistNode*)buddy)->ui_data) { |
| 5981 | pidgin_blist_new_node((PurpleBlistNode*)buddy); | |
| 5982 | } | |
| 5983 | ||
| 5984 | gtknode = ((PurpleBlistNode*)buddy)->ui_data; | |
| 11910 | 5985 | |
| 5986 | gtknode->recent_signonoff = TRUE; | |
| 5987 | ||
| 5988 | if(gtknode->recent_signonoff_timer > 0) | |
| 15884 | 5989 | purple_timeout_remove(gtknode->recent_signonoff_timer); |
| 5990 | gtknode->recent_signonoff_timer = purple_timeout_add(10000, | |
| 11910 | 5991 | (GSourceFunc)buddy_signonoff_timeout_cb, buddy); |
| 5992 | } | |
| 5993 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5994 | void pidgin_blist_init(void) |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5995 | { |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
5996 | void *gtk_blist_handle = pidgin_blist_get_handle(); |
| 7620 | 5997 | |
| 15884 | 5998 | purple_signal_connect(purple_connections_get_handle(), "signed-on", |
| 5999 | gtk_blist_handle, PURPLE_CALLBACK(account_signon_cb), | |
| 7620 | 6000 | NULL); |
| 7731 | 6001 | |
| 6002 | /* 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
|
6003 | 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
|
6004 | 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
|
6005 | 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
|
6006 | 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
|
6007 | 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
|
6008 | 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
|
6009 | 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
|
6010 | 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
|
6011 | 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
|
6012 | 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
|
6013 | 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
|
6014 | 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
|
6015 | purple_prefs_add_int(PIDGIN_PREFS_ROOT "/blist/tooltip_delay", 500); |
| 7731 | 6016 | |
| 8815 | 6017 | /* Register our signals */ |
| 15884 | 6018 | purple_signal_register(gtk_blist_handle, "gtkblist-hiding", |
| 6019 | purple_marshal_VOID__POINTER, NULL, 1, | |
| 6020 | purple_value_new(PURPLE_TYPE_SUBTYPE, | |
| 6021 | PURPLE_SUBTYPE_BLIST)); | |
| 6022 | ||
| 6023 | purple_signal_register(gtk_blist_handle, "gtkblist-unhiding", | |
| 6024 | purple_marshal_VOID__POINTER, NULL, 1, | |
| 6025 | purple_value_new(PURPLE_TYPE_SUBTYPE, | |
| 6026 | PURPLE_SUBTYPE_BLIST)); | |
| 6027 | ||
| 6028 | purple_signal_register(gtk_blist_handle, "gtkblist-created", | |
| 6029 | purple_marshal_VOID__POINTER, NULL, 1, | |
| 6030 | purple_value_new(PURPLE_TYPE_SUBTYPE, | |
| 6031 | PURPLE_SUBTYPE_BLIST)); | |
| 6032 | ||
| 6033 | purple_signal_register(gtk_blist_handle, "drawing-tooltip", | |
| 6034 | purple_marshal_VOID__POINTER_POINTER_UINT, NULL, 3, | |
| 6035 | purple_value_new(PURPLE_TYPE_SUBTYPE, | |
| 6036 | PURPLE_SUBTYPE_BLIST_NODE), | |
| 6037 | purple_value_new_outgoing(PURPLE_TYPE_BOXED, "GString *"), | |
| 6038 | purple_value_new(PURPLE_TYPE_BOOLEAN)); | |
| 6039 | ||
| 6040 | ||
| 6041 | purple_signal_connect(purple_blist_get_handle(), "buddy-signed-on", gtk_blist_handle, PURPLE_CALLBACK(buddy_signonoff_cb), NULL); | |
| 6042 | purple_signal_connect(purple_blist_get_handle(), "buddy-signed-off", gtk_blist_handle, PURPLE_CALLBACK(buddy_signonoff_cb), NULL); | |
| 6043 | purple_signal_connect(purple_blist_get_handle(), "buddy-privacy-changed", gtk_blist_handle, PURPLE_CALLBACK(pidgin_blist_update_privacy_cb), NULL); | |
| 7620 | 6044 | } |
| 6045 | ||
| 8815 | 6046 | void |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6047 | pidgin_blist_uninit(void) { |
| 15884 | 6048 | purple_signals_unregister_by_instance(pidgin_blist_get_handle()); |
| 6049 | purple_signals_disconnect_by_handle(pidgin_blist_get_handle()); | |
| 8815 | 6050 | } |
| 5228 | 6051 | |
| 6052 | /********************************************************************* | |
|
9811
2cbca162a09f
[gaim-migrate @ 10682]
Mark Doliner <markdoliner@pidgin.im>
parents:
9791
diff
changeset
|
6053 | * Buddy List sorting functions * |
| 5422 | 6054 | *********************************************************************/ |
| 6055 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6056 | GList *pidgin_blist_get_sort_methods() |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6057 | { |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6058 | return pidgin_blist_sort_methods; |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6059 | } |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6060 | |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6061 | 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
|
6062 | { |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6063 | struct pidgin_blist_sort_method *method = g_new0(struct pidgin_blist_sort_method, 1); |
| 7620 | 6064 | method->id = g_strdup(id); |
| 5422 | 6065 | method->name = g_strdup(name); |
|
9775
e3a3555b0621
[gaim-migrate @ 10643]
Daniel Atallah <datallah@pidgin.im>
parents:
9774
diff
changeset
|
6066 | method->func = func; |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6067 | 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
|
6068 | pidgin_blist_update_sort_methods(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6069 | } |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6070 | |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6071 | 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
|
6072 | GList *l = pidgin_blist_sort_methods; |
| 7620 | 6073 | |
| 6074 | while(l) { | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6075 | struct pidgin_blist_sort_method *method = l->data; |
| 7620 | 6076 | if(!strcmp(method->id, id)) { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6077 | pidgin_blist_sort_methods = g_list_delete_link(pidgin_blist_sort_methods, l); |
| 7620 | 6078 | g_free(method->id); |
| 6079 | g_free(method->name); | |
| 6080 | g_free(method); | |
| 6081 | break; | |
| 6082 | } | |
| 6083 | } | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6084 | pidgin_blist_update_sort_methods(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6085 | } |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6086 | |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6087 | 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
|
6088 | GList *l = pidgin_blist_sort_methods; |
| 7620 | 6089 | |
| 6090 | if(!id) | |
| 6091 | id = "none"; | |
| 6092 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6093 | while (l && strcmp(((struct pidgin_blist_sort_method*)l->data)->id, id)) |
| 5422 | 6094 | l = l->next; |
| 7620 | 6095 | |
| 5422 | 6096 | if (l) { |
| 6097 | current_sort_method = l->data; | |
| 6098 | } else if (!current_sort_method) { | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6099 | pidgin_blist_sort_method_set("none"); |
| 5422 | 6100 | return; |
| 6101 | } | |
|
14200
799dfae258cf
[gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
14199
diff
changeset
|
6102 | if (!strcmp(id, "none")) { |
| 15884 | 6103 | redo_buddy_list(purple_get_blist(), TRUE, FALSE); |
|
14200
799dfae258cf
[gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
14199
diff
changeset
|
6104 | } else { |
| 15884 | 6105 | redo_buddy_list(purple_get_blist(), FALSE, FALSE); |
|
14200
799dfae258cf
[gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
14199
diff
changeset
|
6106 | } |
| 5422 | 6107 | } |
| 6108 | ||
| 6109 | /****************************************** | |
| 6110 | ** Sort Methods | |
| 6111 | ******************************************/ | |
| 6112 | ||
| 15884 | 6113 | static void sort_method_none(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter parent_iter, GtkTreeIter *cur, GtkTreeIter *iter) |
| 6114 | { | |
| 6115 | PurpleBlistNode *sibling = node->prev; | |
| 7620 | 6116 | GtkTreeIter sibling_iter; |
| 6117 | ||
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6118 | if (cur != NULL) { |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6119 | *iter = *cur; |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6120 | return; |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6121 | } |
| 7620 | 6122 | |
| 6123 | while (sibling && !get_iter_from_node(sibling, &sibling_iter)) { | |
| 6124 | sibling = sibling->prev; | |
| 5422 | 6125 | } |
| 7620 | 6126 | |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6127 | gtk_tree_store_insert_after(gtkblist->treemodel, iter, |
| 7620 | 6128 | node->parent ? &parent_iter : NULL, |
| 6129 | sibling ? &sibling_iter : NULL); | |
| 5422 | 6130 | } |
| 6131 | ||
| 7620 | 6132 | #if GTK_CHECK_VERSION(2,2,1) |
| 6133 | ||
| 15884 | 6134 | static void sort_method_alphabetical(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter) |
| 5422 | 6135 | { |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6136 | GtkTreeIter more_z; |
| 7620 | 6137 | |
| 6138 | const char *my_name; | |
| 6139 | ||
| 15884 | 6140 | if(PURPLE_BLIST_NODE_IS_CONTACT(node)) { |
| 6141 | my_name = purple_contact_get_alias((PurpleContact*)node); | |
| 6142 | } else if(PURPLE_BLIST_NODE_IS_CHAT(node)) { | |
| 6143 | my_name = purple_chat_get_name((PurpleChat*)node); | |
| 7620 | 6144 | } else { |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6145 | sort_method_none(node, blist, groupiter, cur, iter); |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6146 | return; |
| 7620 | 6147 | } |
| 6148 | ||
| 5422 | 6149 | |
| 6150 | 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
|
6151 | gtk_tree_store_insert(gtkblist->treemodel, iter, &groupiter, 0); |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6152 | return; |
| 7620 | 6153 | } |
| 6154 | ||
| 6155 | do { | |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
6156 | GValue val; |
| 15884 | 6157 | PurpleBlistNode *n; |
| 7620 | 6158 | const char *this_name; |
| 6159 | int cmp; | |
| 6160 | ||
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
6161 | val.g_type = 0; |
| 7620 | 6162 | gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &more_z, NODE_COLUMN, &val); |
| 6163 | n = g_value_get_pointer(&val); | |
| 6164 | ||
| 15884 | 6165 | if(PURPLE_BLIST_NODE_IS_CONTACT(n)) { |
| 6166 | this_name = purple_contact_get_alias((PurpleContact*)n); | |
| 6167 | } else if(PURPLE_BLIST_NODE_IS_CHAT(n)) { | |
| 6168 | this_name = purple_chat_get_name((PurpleChat*)n); | |
| 7620 | 6169 | } else { |
| 6170 | this_name = NULL; | |
| 6171 | } | |
| 6172 | ||
| 15884 | 6173 | cmp = purple_utf8_strcasecmp(my_name, this_name); |
| 7620 | 6174 | |
| 6175 | if(this_name && (cmp < 0 || (cmp == 0 && node < n))) { | |
| 6176 | if(cur) { | |
| 6177 | gtk_tree_store_move_before(gtkblist->treemodel, cur, &more_z); | |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6178 | *iter = *cur; |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6179 | return; |
| 7620 | 6180 | } else { |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6181 | gtk_tree_store_insert_before(gtkblist->treemodel, iter, |
| 7620 | 6182 | &groupiter, &more_z); |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6183 | return; |
| 7620 | 6184 | } |
| 6185 | } | |
| 6186 | g_value_unset(&val); | |
| 6187 | } while (gtk_tree_model_iter_next (GTK_TREE_MODEL(gtkblist->treemodel), &more_z)); | |
| 6188 | ||
| 6189 | if(cur) { | |
| 6190 | gtk_tree_store_move_before(gtkblist->treemodel, cur, NULL); | |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6191 | *iter = *cur; |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6192 | return; |
| 7620 | 6193 | } else { |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6194 | gtk_tree_store_append(gtkblist->treemodel, iter, &groupiter); |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6195 | return; |
| 7620 | 6196 | } |
| 6197 | } | |
| 6198 | ||
| 15884 | 6199 | static void sort_method_status(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter) |
| 7620 | 6200 | { |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6201 | GtkTreeIter more_z; |
| 7620 | 6202 | |
| 15884 | 6203 | PurpleBuddy *my_buddy, *this_buddy; |
| 6204 | ||
| 6205 | if(PURPLE_BLIST_NODE_IS_CONTACT(node)) { | |
| 6206 | my_buddy = purple_contact_get_priority_buddy((PurpleContact*)node); | |
| 6207 | } else if(PURPLE_BLIST_NODE_IS_CHAT(node)) { | |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6208 | if (cur != NULL) { |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6209 | *iter = *cur; |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6210 | return; |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6211 | } |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6212 | |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6213 | gtk_tree_store_append(gtkblist->treemodel, iter, &groupiter); |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6214 | return; |
| 7620 | 6215 | } else { |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6216 | sort_method_none(node, blist, groupiter, cur, iter); |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6217 | return; |
| 7620 | 6218 | } |
| 6219 | ||
| 6220 | ||
| 6221 | 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
|
6222 | gtk_tree_store_insert(gtkblist->treemodel, iter, &groupiter, 0); |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6223 | return; |
| 5422 | 6224 | } |
| 6225 | ||
| 6226 | do { | |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
6227 | GValue val; |
| 15884 | 6228 | PurpleBlistNode *n; |
|
9944
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
6229 | gint name_cmp; |
|
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
6230 | gint presence_cmp; |
| 7620 | 6231 | |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
6232 | val.g_type = 0; |
| 5422 | 6233 | gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &more_z, NODE_COLUMN, &val); |
| 6234 | n = g_value_get_pointer(&val); | |
| 7620 | 6235 | |
| 15884 | 6236 | if(PURPLE_BLIST_NODE_IS_CONTACT(n)) { |
| 6237 | this_buddy = purple_contact_get_priority_buddy((PurpleContact*)n); | |
| 7620 | 6238 | } else { |
| 6239 | this_buddy = NULL; | |
| 6240 | } | |
| 6241 | ||
| 15884 | 6242 | name_cmp = purple_utf8_strcasecmp( |
| 6243 | purple_contact_get_alias(purple_buddy_get_contact(my_buddy)), | |
|
9944
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
6244 | (this_buddy |
| 15884 | 6245 | ? purple_contact_get_alias(purple_buddy_get_contact(this_buddy)) |
|
9944
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
6246 | : NULL)); |
|
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
6247 | |
| 15884 | 6248 | presence_cmp = purple_presence_compare( |
| 6249 | purple_buddy_get_presence(my_buddy), | |
| 6250 | this_buddy ? purple_buddy_get_presence(this_buddy) : NULL); | |
|
9944
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
6251 | |
|
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
6252 | if (this_buddy == NULL || |
|
10860
8f600347b9e4
[gaim-migrate @ 12543]
Palmer Cox <enix@users.sourceforge.net>
parents:
10850
diff
changeset
|
6253 | (presence_cmp < 0 || |
|
9944
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
6254 | (presence_cmp == 0 && |
|
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
6255 | (name_cmp < 0 || (name_cmp == 0 && node < n))))) |
|
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
6256 | { |
|
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
6257 | if (cur != NULL) |
|
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
6258 | { |
| 7620 | 6259 | gtk_tree_store_move_before(gtkblist->treemodel, cur, &more_z); |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6260 | *iter = *cur; |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6261 | return; |
|
9944
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
6262 | } |
|
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
6263 | else |
|
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
6264 | { |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6265 | gtk_tree_store_insert_before(gtkblist->treemodel, iter, |
|
9944
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
6266 | &groupiter, &more_z); |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6267 | return; |
| 7620 | 6268 | } |
| 5422 | 6269 | } |
|
9944
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
6270 | |
| 5422 | 6271 | g_value_unset(&val); |
|
9944
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
6272 | } |
|
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
6273 | while (gtk_tree_model_iter_next(GTK_TREE_MODEL(gtkblist->treemodel), |
|
71ef020ec4b0
[gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents:
9925
diff
changeset
|
6274 | &more_z)); |
| 7620 | 6275 | |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6276 | if (cur) { |
| 7620 | 6277 | gtk_tree_store_move_before(gtkblist->treemodel, cur, NULL); |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6278 | *iter = *cur; |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6279 | return; |
| 7620 | 6280 | } else { |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6281 | gtk_tree_store_append(gtkblist->treemodel, iter, &groupiter); |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6282 | return; |
| 7620 | 6283 | } |
| 5422 | 6284 | } |
| 6285 | ||
| 15884 | 6286 | static void sort_method_log(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter) |
| 5422 | 6287 | { |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6288 | GtkTreeIter more_z; |
| 7620 | 6289 | |
| 6290 | int log_size = 0, this_log_size = 0; | |
| 6291 | const char *buddy_name, *this_buddy_name; | |
| 6292 | ||
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6293 | 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
|
6294 | *iter = *cur; |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6295 | return; |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6296 | } |
| 7620 | 6297 | |
| 15884 | 6298 | if(PURPLE_BLIST_NODE_IS_CONTACT(node)) { |
| 6299 | PurpleBlistNode *n; | |
| 7620 | 6300 | for (n = node->child; n; n = n->next) |
| 15884 | 6301 | log_size += purple_log_get_total_size(PURPLE_LOG_IM, ((PurpleBuddy*)(n))->name, ((PurpleBuddy*)(n))->account); |
| 6302 | buddy_name = purple_contact_get_alias((PurpleContact*)node); | |
| 6303 | } else if(PURPLE_BLIST_NODE_IS_CHAT(node)) { | |
| 7620 | 6304 | /* we don't have a reliable way of getting the log filename |
| 6305 | * from the chat info in the blist, yet */ | |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6306 | if (cur != NULL) { |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6307 | *iter = *cur; |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6308 | return; |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6309 | } |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6310 | |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6311 | gtk_tree_store_append(gtkblist->treemodel, iter, &groupiter); |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6312 | return; |
| 7620 | 6313 | } else { |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6314 | sort_method_none(node, blist, groupiter, cur, iter); |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6315 | return; |
| 7620 | 6316 | } |
| 6317 | ||
| 6318 | ||
| 5422 | 6319 | 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
|
6320 | gtk_tree_store_insert(gtkblist->treemodel, iter, &groupiter, 0); |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6321 | return; |
| 5422 | 6322 | } |
| 6323 | ||
| 6324 | do { | |
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
6325 | GValue val; |
| 15884 | 6326 | PurpleBlistNode *n; |
| 6327 | PurpleBlistNode *n2; | |
| 7620 | 6328 | int cmp; |
| 6329 | ||
|
12600
7ecd4441fdc7
[gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents:
12592
diff
changeset
|
6330 | val.g_type = 0; |
| 5422 | 6331 | gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &more_z, NODE_COLUMN, &val); |
| 6332 | n = g_value_get_pointer(&val); | |
| 7620 | 6333 | this_log_size = 0; |
| 6334 | ||
| 15884 | 6335 | if(PURPLE_BLIST_NODE_IS_CONTACT(n)) { |
| 7620 | 6336 | for (n2 = n->child; n2; n2 = n2->next) |
| 15884 | 6337 | this_log_size += purple_log_get_total_size(PURPLE_LOG_IM, ((PurpleBuddy*)(n2))->name, ((PurpleBuddy*)(n2))->account); |
| 6338 | this_buddy_name = purple_contact_get_alias((PurpleContact*)n); | |
| 7620 | 6339 | } else { |
| 6340 | this_buddy_name = NULL; | |
| 5422 | 6341 | } |
| 7620 | 6342 | |
| 15884 | 6343 | cmp = purple_utf8_strcasecmp(buddy_name, this_buddy_name); |
| 6344 | ||
| 6345 | if (!PURPLE_BLIST_NODE_IS_CONTACT(n) || log_size > this_log_size || | |
| 7620 | 6346 | ((log_size == this_log_size) && |
| 6347 | (cmp < 0 || (cmp == 0 && node < n)))) { | |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6348 | if (cur != NULL) { |
| 7620 | 6349 | gtk_tree_store_move_before(gtkblist->treemodel, cur, &more_z); |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6350 | *iter = *cur; |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6351 | return; |
| 7620 | 6352 | } else { |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6353 | gtk_tree_store_insert_before(gtkblist->treemodel, iter, |
| 7620 | 6354 | &groupiter, &more_z); |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6355 | return; |
| 7620 | 6356 | } |
| 5422 | 6357 | } |
| 6358 | g_value_unset(&val); | |
| 6359 | } while (gtk_tree_model_iter_next (GTK_TREE_MODEL(gtkblist->treemodel), &more_z)); | |
| 7620 | 6360 | |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6361 | if (cur != NULL) { |
| 7620 | 6362 | gtk_tree_store_move_before(gtkblist->treemodel, cur, NULL); |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6363 | *iter = *cur; |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6364 | return; |
| 7620 | 6365 | } else { |
|
12413
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6366 | gtk_tree_store_append(gtkblist->treemodel, iter, &groupiter); |
|
ce06aa90beee
[gaim-migrate @ 14720]
Richard Laager <rlaager@pidgin.im>
parents:
12368
diff
changeset
|
6367 | return; |
| 7620 | 6368 | } |
| 6369 | } | |
| 6370 | ||
| 6371 | #endif | |
| 6372 | ||
| 6373 | static void | |
| 15884 | 6374 | plugin_act(GtkObject *obj, PurplePluginAction *pam) |
| 7620 | 6375 | { |
|
13197
734f8ef469b8
[gaim-migrate @ 15559]
Gary Kramlich <grim@reaperworld.com>
parents:
13196
diff
changeset
|
6376 | if (pam && pam->callback) |
|
10352
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10351
diff
changeset
|
6377 | pam->callback(pam); |
| 5422 | 6378 | } |
| 7620 | 6379 | |
|
8986
30ba617356bb
[gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents:
8975
diff
changeset
|
6380 | static void |
|
16040
d213ae510895
sf patch #1689182, from Will Thompson
Mark Doliner <markdoliner@pidgin.im>
parents:
15982
diff
changeset
|
6381 | build_plugin_actions(GtkWidget *menu, PurplePlugin *plugin, |
|
d213ae510895
sf patch #1689182, from Will Thompson
Mark Doliner <markdoliner@pidgin.im>
parents:
15982
diff
changeset
|
6382 | gpointer context) |
|
8986
30ba617356bb
[gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents:
8975
diff
changeset
|
6383 | { |
|
12333
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6384 | GtkWidget *menuitem; |
| 15884 | 6385 | PurplePluginAction *action = NULL; |
|
12333
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6386 | GList *actions, *l; |
|
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6387 | |
|
16040
d213ae510895
sf patch #1689182, from Will Thompson
Mark Doliner <markdoliner@pidgin.im>
parents:
15982
diff
changeset
|
6388 | actions = PURPLE_PLUGIN_ACTIONS(plugin, context); |
|
12333
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6389 | |
|
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6390 | for (l = actions; l != NULL; l = l->next) |
|
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6391 | { |
|
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6392 | if (l->data) |
|
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6393 | { |
| 15884 | 6394 | action = (PurplePluginAction *) l->data; |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
9013
diff
changeset
|
6395 | action->plugin = plugin; |
|
16040
d213ae510895
sf patch #1689182, from Will Thompson
Mark Doliner <markdoliner@pidgin.im>
parents:
15982
diff
changeset
|
6396 | action->context = context; |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
9013
diff
changeset
|
6397 | |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
9013
diff
changeset
|
6398 | menuitem = gtk_menu_item_new_with_label(action->label); |
|
12333
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6399 | gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); |
|
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6400 | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
9013
diff
changeset
|
6401 | g_signal_connect(G_OBJECT(menuitem), "activate", |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
9013
diff
changeset
|
6402 | G_CALLBACK(plugin_act), action); |
|
13197
734f8ef469b8
[gaim-migrate @ 15559]
Gary Kramlich <grim@reaperworld.com>
parents:
13196
diff
changeset
|
6403 | g_object_set_data_full(G_OBJECT(menuitem), "plugin_action", |
|
734f8ef469b8
[gaim-migrate @ 15559]
Gary Kramlich <grim@reaperworld.com>
parents:
13196
diff
changeset
|
6404 | action, |
| 15884 | 6405 | (GDestroyNotify)purple_plugin_action_free); |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
9013
diff
changeset
|
6406 | gtk_widget_show(menuitem); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
9013
diff
changeset
|
6407 | } |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
9013
diff
changeset
|
6408 | else |
| 15568 | 6409 | pidgin_separator(menu); |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
9013
diff
changeset
|
6410 | } |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
9013
diff
changeset
|
6411 | |
|
12333
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6412 | g_list_free(actions); |
|
8986
30ba617356bb
[gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents:
8975
diff
changeset
|
6413 | } |
|
30ba617356bb
[gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents:
8975
diff
changeset
|
6414 | |
| 12296 | 6415 | static void |
| 6416 | modify_account_cb(GtkWidget *widget, gpointer data) | |
| 6417 | { | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6418 | pidgin_account_dialog_show(PIDGIN_MODIFY_ACCOUNT_DIALOG, data); |
| 12296 | 6419 | } |
| 6420 | ||
| 6421 | static void | |
| 12330 | 6422 | enable_account_cb(GtkCheckMenuItem *widget, gpointer data) |
| 12296 | 6423 | { |
| 15884 | 6424 | PurpleAccount *account = data; |
| 6425 | const PurpleSavedStatus *saved_status; | |
| 6426 | ||
| 6427 | saved_status = purple_savedstatus_get_current(); | |
| 6428 | purple_savedstatus_activate_for_account(saved_status, account); | |
| 6429 | ||
| 6430 | purple_account_set_enabled(account, PIDGIN_UI, TRUE); | |
| 12296 | 6431 | } |
| 6432 | ||
| 6433 | static void | |
| 12330 | 6434 | disable_account_cb(GtkCheckMenuItem *widget, gpointer data) |
| 12296 | 6435 | { |
| 15884 | 6436 | PurpleAccount *account = data; |
| 6437 | ||
| 6438 | purple_account_set_enabled(account, PIDGIN_UI, FALSE); | |
| 12296 | 6439 | } |
|
8986
30ba617356bb
[gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents:
8975
diff
changeset
|
6440 | |
| 7620 | 6441 | void |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6442 | pidgin_blist_update_accounts_menu(void) |
| 7620 | 6443 | { |
| 12296 | 6444 | GtkWidget *menuitem = NULL, *submenu = NULL; |
|
15063
f049d0515fd8
[gaim-migrate @ 17781]
Richard Laager <rlaager@pidgin.im>
parents:
15058
diff
changeset
|
6445 | GtkAccelGroup *accel_group = NULL; |
| 12296 | 6446 | GList *l = NULL, *accounts = NULL; |
| 12330 | 6447 | gboolean disabled_accounts = FALSE; |
| 12296 | 6448 | |
| 6449 | if (accountmenu == NULL) | |
| 7620 | 6450 | return; |
| 6451 | ||
| 12296 | 6452 | /* Clear the old Accounts menu */ |
| 6453 | for (l = gtk_container_get_children(GTK_CONTAINER(accountmenu)); l; l = l->next) { | |
| 12348 | 6454 | menuitem = l->data; |
| 6455 | ||
| 6456 | 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
|
6457 | gtk_widget_destroy(menuitem); |
| 7620 | 6458 | } |
| 6459 | ||
| 15884 | 6460 | for (accounts = purple_accounts_get_all(); accounts; accounts = accounts->next) { |
| 12296 | 6461 | char *buf = NULL; |
|
15063
f049d0515fd8
[gaim-migrate @ 17781]
Richard Laager <rlaager@pidgin.im>
parents:
15058
diff
changeset
|
6462 | char *accel_path_buf = NULL; |
| 12296 | 6463 | GtkWidget *image = NULL; |
| 15884 | 6464 | PurpleConnection *gc = NULL; |
| 6465 | PurpleAccount *account = NULL; | |
|
13091
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
13049
diff
changeset
|
6466 | GdkPixbuf *pixbuf = NULL; |
|
16040
d213ae510895
sf patch #1689182, from Will Thompson
Mark Doliner <markdoliner@pidgin.im>
parents:
15982
diff
changeset
|
6467 | PurplePlugin *plugin = NULL; |
| 12296 | 6468 | |
| 6469 | account = accounts->data; | |
|
15063
f049d0515fd8
[gaim-migrate @ 17781]
Richard Laager <rlaager@pidgin.im>
parents:
15058
diff
changeset
|
6470 | accel_group = gtk_menu_get_accel_group(GTK_MENU(accountmenu)); |
| 12296 | 6471 | |
| 15884 | 6472 | if(purple_account_get_enabled(account, PIDGIN_UI)) { |
| 6473 | buf = g_strconcat(purple_account_get_username(account), " (", | |
| 6474 | purple_account_get_protocol_name(account), ")", NULL); | |
| 12330 | 6475 | menuitem = gtk_image_menu_item_new_with_label(buf); |
| 15884 | 6476 | accel_path_buf = g_strconcat(N_("<PurpleMain>/Accounts/"), buf, NULL); |
| 12330 | 6477 | 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
|
6478 | pixbuf = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_SMALL); |
|
13091
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
13049
diff
changeset
|
6479 | if (pixbuf != NULL) |
|
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
13049
diff
changeset
|
6480 | { |
| 15884 | 6481 | if (!purple_account_is_connected(account)) |
|
13091
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
13049
diff
changeset
|
6482 | gdk_pixbuf_saturate_and_pixelate(pixbuf, pixbuf, |
| 12330 | 6483 | 0.0, FALSE); |
|
13091
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
13049
diff
changeset
|
6484 | image = gtk_image_new_from_pixbuf(pixbuf); |
| 12330 | 6485 | g_object_unref(G_OBJECT(pixbuf)); |
| 6486 | gtk_widget_show(image); | |
| 6487 | gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image); | |
| 6488 | } | |
| 6489 | gtk_menu_shell_append(GTK_MENU_SHELL(accountmenu), menuitem); | |
| 6490 | gtk_widget_show(menuitem); | |
| 6491 | ||
| 6492 | submenu = gtk_menu_new(); | |
|
15063
f049d0515fd8
[gaim-migrate @ 17781]
Richard Laager <rlaager@pidgin.im>
parents:
15058
diff
changeset
|
6493 | gtk_menu_set_accel_group(GTK_MENU(submenu), accel_group); |
|
f049d0515fd8
[gaim-migrate @ 17781]
Richard Laager <rlaager@pidgin.im>
parents:
15058
diff
changeset
|
6494 | gtk_menu_set_accel_path(GTK_MENU(submenu), accel_path_buf); |
|
f049d0515fd8
[gaim-migrate @ 17781]
Richard Laager <rlaager@pidgin.im>
parents:
15058
diff
changeset
|
6495 | g_free(accel_path_buf); |
| 12330 | 6496 | gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); |
| 6497 | gtk_widget_show(submenu); | |
| 6498 | ||
| 6499 | ||
|
12334
f88c9f928f51
[gaim-migrate @ 14638]
Mark Doliner <markdoliner@pidgin.im>
parents:
12333
diff
changeset
|
6500 | menuitem = gtk_menu_item_new_with_mnemonic(_("_Edit Account")); |
| 12330 | 6501 | g_signal_connect(G_OBJECT(menuitem), "activate", |
| 6502 | G_CALLBACK(modify_account_cb), account); | |
| 6503 | gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem); | |
| 6504 | gtk_widget_show(menuitem); | |
| 6505 | ||
| 15568 | 6506 | pidgin_separator(submenu); |
| 12330 | 6507 | |
| 15884 | 6508 | gc = purple_account_get_connection(account); |
|
16040
d213ae510895
sf patch #1689182, from Will Thompson
Mark Doliner <markdoliner@pidgin.im>
parents:
15982
diff
changeset
|
6509 | 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
|
6510 | if (plugin && PURPLE_PLUGIN_HAS_ACTIONS(plugin)) { |
|
d213ae510895
sf patch #1689182, from Will Thompson
Mark Doliner <markdoliner@pidgin.im>
parents:
15982
diff
changeset
|
6511 | build_plugin_actions(submenu, plugin, gc); |
| 12296 | 6512 | } else { |
| 6513 | menuitem = gtk_menu_item_new_with_label(_("No actions available")); | |
| 6514 | gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem); | |
| 6515 | gtk_widget_set_sensitive(menuitem, FALSE); | |
| 6516 | gtk_widget_show(menuitem); | |
| 6517 | } | |
| 12330 | 6518 | |
| 15568 | 6519 | pidgin_separator(submenu); |
| 12330 | 6520 | |
| 6521 | menuitem = gtk_menu_item_new_with_mnemonic(_("_Disable")); | |
| 6522 | g_signal_connect(G_OBJECT(menuitem), "activate", | |
| 6523 | G_CALLBACK(disable_account_cb), account); | |
| 12296 | 6524 | gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem); |
| 6525 | gtk_widget_show(menuitem); | |
| 12330 | 6526 | } else { |
| 6527 | disabled_accounts = TRUE; | |
| 12296 | 6528 | } |
| 7620 | 6529 | } |
|
9019
b9a333b36763
[gaim-migrate @ 9795]
Mark Doliner <markdoliner@pidgin.im>
parents:
9015
diff
changeset
|
6530 | |
| 12330 | 6531 | if(disabled_accounts) { |
| 15568 | 6532 | pidgin_separator(accountmenu); |
|
12338
3548ced0c9ff
[gaim-migrate @ 14642]
Mark Doliner <markdoliner@pidgin.im>
parents:
12337
diff
changeset
|
6533 | menuitem = gtk_menu_item_new_with_label(_("Enable Account")); |
| 12330 | 6534 | gtk_menu_shell_append(GTK_MENU_SHELL(accountmenu), menuitem); |
| 6535 | gtk_widget_show(menuitem); | |
| 6536 | ||
| 6537 | submenu = gtk_menu_new(); | |
|
15063
f049d0515fd8
[gaim-migrate @ 17781]
Richard Laager <rlaager@pidgin.im>
parents:
15058
diff
changeset
|
6538 | gtk_menu_set_accel_group(GTK_MENU(submenu), accel_group); |
| 15884 | 6539 | gtk_menu_set_accel_path(GTK_MENU(submenu), N_("<PurpleMain>/Accounts/Enable Account")); |
| 12330 | 6540 | gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); |
| 6541 | gtk_widget_show(submenu); | |
| 6542 | ||
| 15884 | 6543 | for (accounts = purple_accounts_get_all(); accounts; accounts = accounts->next) { |
| 12330 | 6544 | char *buf = NULL; |
| 6545 | GtkWidget *image = NULL; | |
| 15884 | 6546 | PurpleAccount *account = NULL; |
|
13091
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
13049
diff
changeset
|
6547 | GdkPixbuf *pixbuf = NULL; |
| 12330 | 6548 | |
| 6549 | account = accounts->data; | |
| 6550 | ||
| 15884 | 6551 | if(!purple_account_get_enabled(account, PIDGIN_UI)) { |
| 12330 | 6552 | |
| 6553 | disabled_accounts = TRUE; | |
| 6554 | ||
| 15884 | 6555 | buf = g_strconcat(purple_account_get_username(account), " (", |
| 6556 | purple_account_get_protocol_name(account), ")", NULL); | |
| 12330 | 6557 | menuitem = gtk_image_menu_item_new_with_label(buf); |
| 6558 | g_free(buf); | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6559 | pixbuf = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_SMALL); |
|
13091
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
13049
diff
changeset
|
6560 | if (pixbuf != NULL) |
|
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
13049
diff
changeset
|
6561 | { |
| 15884 | 6562 | if (!purple_account_is_connected(account)) |
|
13091
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
13049
diff
changeset
|
6563 | gdk_pixbuf_saturate_and_pixelate(pixbuf, pixbuf, 0.0, FALSE); |
|
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
13049
diff
changeset
|
6564 | image = gtk_image_new_from_pixbuf(pixbuf); |
| 12330 | 6565 | g_object_unref(G_OBJECT(pixbuf)); |
| 6566 | gtk_widget_show(image); | |
| 6567 | gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image); | |
| 6568 | } | |
| 6569 | g_signal_connect(G_OBJECT(menuitem), "activate", | |
| 6570 | G_CALLBACK(enable_account_cb), account); | |
| 6571 | gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem); | |
| 6572 | gtk_widget_show(menuitem); | |
| 6573 | } | |
|
9019
b9a333b36763
[gaim-migrate @ 9795]
Mark Doliner <markdoliner@pidgin.im>
parents:
9015
diff
changeset
|
6574 | } |
| 7620 | 6575 | } |
| 6576 | } | |
|
8986
30ba617356bb
[gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents:
8975
diff
changeset
|
6577 | |
|
12333
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6578 | static GList *plugin_submenus = NULL; |
|
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6579 | |
|
8986
30ba617356bb
[gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents:
8975
diff
changeset
|
6580 | void |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6581 | pidgin_blist_update_plugin_actions(void) |
|
8986
30ba617356bb
[gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents:
8975
diff
changeset
|
6582 | { |
|
12333
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6583 | GtkWidget *menuitem, *submenu; |
| 15884 | 6584 | PurplePlugin *plugin = NULL; |
|
8986
30ba617356bb
[gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents:
8975
diff
changeset
|
6585 | GList *l; |
|
12464
bfe63ab6ebcf
[gaim-migrate @ 14774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12461
diff
changeset
|
6586 | GtkAccelGroup *accel_group; |
|
8986
30ba617356bb
[gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents:
8975
diff
changeset
|
6587 | |
| 11742 | 6588 | GtkWidget *pluginmenu = gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools")); |
| 6589 | ||
|
12333
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6590 | g_return_if_fail(pluginmenu != NULL); |
|
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6591 | |
|
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6592 | /* Remove old plugin action submenus from the Tools menu */ |
|
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6593 | for (l = plugin_submenus; l; l = l->next) |
|
15057
909e807e3070
[gaim-migrate @ 17774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15051
diff
changeset
|
6594 | gtk_widget_destroy(GTK_WIDGET(l->data)); |
|
12333
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6595 | g_list_free(plugin_submenus); |
|
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6596 | plugin_submenus = NULL; |
|
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6597 | |
|
12464
bfe63ab6ebcf
[gaim-migrate @ 14774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12461
diff
changeset
|
6598 | accel_group = gtk_menu_get_accel_group(GTK_MENU(pluginmenu)); |
|
bfe63ab6ebcf
[gaim-migrate @ 14774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12461
diff
changeset
|
6599 | |
|
12333
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6600 | /* Add a submenu for each plugin with custom actions */ |
| 15884 | 6601 | 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
|
6602 | char *path; |
|
11923
a492ccce1a12
[gaim-migrate @ 14214]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6603 | |
| 15884 | 6604 | plugin = (PurplePlugin *) l->data; |
| 6605 | ||
| 6606 | if (PURPLE_IS_PROTOCOL_PLUGIN(plugin)) | |
| 11742 | 6607 | continue; |
| 6608 | ||
| 15884 | 6609 | if (!PURPLE_PLUGIN_HAS_ACTIONS(plugin)) |
| 11742 | 6610 | continue; |
|
9019
b9a333b36763
[gaim-migrate @ 9795]
Mark Doliner <markdoliner@pidgin.im>
parents:
9015
diff
changeset
|
6611 | |
|
13337
1a425a37dcf7
[gaim-migrate @ 15706]
Richard Laager <rlaager@pidgin.im>
parents:
13316
diff
changeset
|
6612 | 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
|
6613 | gtk_menu_shell_append(GTK_MENU_SHELL(pluginmenu), menuitem); |
|
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6614 | gtk_widget_show(menuitem); |
|
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6615 | |
|
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6616 | plugin_submenus = g_list_append(plugin_submenus, menuitem); |
|
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6617 | |
|
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6618 | submenu = gtk_menu_new(); |
|
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6619 | gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu); |
|
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6620 | gtk_widget_show(submenu); |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
6621 | |
|
12464
bfe63ab6ebcf
[gaim-migrate @ 14774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12461
diff
changeset
|
6622 | gtk_menu_set_accel_group(GTK_MENU(submenu), accel_group); |
|
bfe63ab6ebcf
[gaim-migrate @ 14774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12461
diff
changeset
|
6623 | 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
|
6624 | gtk_menu_set_accel_path(GTK_MENU(submenu), path); |
|
bfe63ab6ebcf
[gaim-migrate @ 14774]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12461
diff
changeset
|
6625 | g_free(path); |
|
12333
8e39e95c81b6
[gaim-migrate @ 14637]
Mark Doliner <markdoliner@pidgin.im>
parents:
12330
diff
changeset
|
6626 | |
|
16040
d213ae510895
sf patch #1689182, from Will Thompson
Mark Doliner <markdoliner@pidgin.im>
parents:
15982
diff
changeset
|
6627 | build_plugin_actions(submenu, plugin, NULL); |
|
8986
30ba617356bb
[gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents:
8975
diff
changeset
|
6628 | } |
|
30ba617356bb
[gaim-migrate @ 9761]
Christopher O'Brien <siege@pidgin.im>
parents:
8975
diff
changeset
|
6629 | } |
| 11796 | 6630 | |
|
12246
7af1ef3b1cc4
[gaim-migrate @ 14548]
Mark Doliner <markdoliner@pidgin.im>
parents:
12240
diff
changeset
|
6631 | static void |
|
7af1ef3b1cc4
[gaim-migrate @ 14548]
Mark Doliner <markdoliner@pidgin.im>
parents:
12240
diff
changeset
|
6632 | sortmethod_act(GtkCheckMenuItem *checkmenuitem, char *id) |
| 11796 | 6633 | { |
| 6634 | if (gtk_check_menu_item_get_active(checkmenuitem)) | |
|
11923
a492ccce1a12
[gaim-migrate @ 14214]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6635 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6636 | pidgin_set_cursor(gtkblist->window, GDK_WATCH); |
|
14200
799dfae258cf
[gaim-migrate @ 16780]
Aaron Sheldon <aaronsheldon@users.sourceforge.net>
parents:
14199
diff
changeset
|
6637 | /* This is redundant. I think. */ |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6638 | /* 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
|
6639 | 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
|
6640 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6641 | pidgin_clear_cursor(gtkblist->window); |
|
11923
a492ccce1a12
[gaim-migrate @ 14214]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6642 | } |
| 11796 | 6643 | } |
| 6644 | ||
| 6645 | void | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6646 | pidgin_blist_update_sort_methods(void) |
| 11796 | 6647 | { |
| 6648 | GtkWidget *menuitem = NULL, *activeitem = NULL; | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6649 | PidginBlistSortMethod *method = NULL; |
| 11796 | 6650 | GList *l; |
| 6651 | GSList *sl = NULL; | |
| 6652 | 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
|
6653 | const char *m = purple_prefs_get_string(PIDGIN_PREFS_ROOT "/blist/sort_type"); |
| 11796 | 6654 | |
|
15286
ecc4149f47fb
[gaim-migrate @ 18014]
Mark Doliner <markdoliner@pidgin.im>
parents:
15284
diff
changeset
|
6655 | if ((gtkblist == NULL) || (gtkblist->ift == NULL)) |
| 11796 | 6656 | return; |
| 6657 | ||
| 11798 | 6658 | sortmenu = gtk_item_factory_get_widget(gtkblist->ift, N_("/Buddies/Sort Buddies")); |
| 11796 | 6659 | |
| 6660 | if (sortmenu == NULL) | |
| 6661 | return; | |
| 6662 | ||
| 6663 | /* Clear the old menu */ | |
| 6664 | for (l = gtk_container_get_children(GTK_CONTAINER(sortmenu)); l; l = l->next) { | |
| 6665 | menuitem = l->data; | |
| 6666 | gtk_widget_destroy(GTK_WIDGET(menuitem)); | |
| 6667 | } | |
|
11923
a492ccce1a12
[gaim-migrate @ 14214]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6668 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15561
diff
changeset
|
6669 | 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
|
6670 | method = (PidginBlistSortMethod *) l->data; |
| 11796 | 6671 | menuitem = gtk_radio_menu_item_new_with_label(sl, _(method->name)); |
| 6672 | if (!strcmp(m, method->id)) | |
| 6673 | activeitem = menuitem; | |
| 6674 | sl = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem)); | |
| 6675 | gtk_menu_shell_append(GTK_MENU_SHELL(sortmenu), menuitem); | |
| 6676 | g_signal_connect(G_OBJECT(menuitem), "toggled", | |
| 6677 | G_CALLBACK(sortmethod_act), method->id); | |
|
11923
a492ccce1a12
[gaim-migrate @ 14214]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
6678 | gtk_widget_show(menuitem); |
| 11796 | 6679 | } |
| 6680 | if (activeitem) | |
| 6681 | gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(activeitem), TRUE); | |
| 6682 | } |