Mon, 31 Oct 2005 22:02:30 +0000
[gaim-migrate @ 14226]
Here are buddy-status-changed and buddy-idle-changed signals, to replace
buddy-away, buddy-back, buddy-idle, and buddy-unidle. It it now possible to
detect when a buddy goes from one away-state to another away-state without
coming back in between.
I'm not really sure I like how buddy-idle-changed works here, but it felt
better to keep it consistent. It currently only fires on idle and unidle and
not on just-more-idle, though that's easy to change if we decide plugins might
want to know as idle time increases.
I think I got all the doxygen and ChangeLog.API stuff, someone yell if I
missed something.
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
1 | /* |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
2 | * Gaim Ticker Plugin |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
3 | * The line below doesn't apply at all, does it? It should be Syd, Sean, and |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
4 | * maybe Nathan, I believe. |
| 3391 | 5 | * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald |
| 6 | * | |
| 7 | * This library is free software; you can redistribute it and/or | |
| 8 | * modify it under the terms of the GNU Library General Public | |
| 9 | * License as published by the Free Software Foundation; either | |
| 10 | * version 2 of the License, or (at your option) any later version. | |
| 11 | * | |
| 12 | * This library is distributed in the hope that it will be useful, | |
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 15 | * Library General Public License for more details. | |
| 16 | * | |
| 17 | * You should have received a copy of the GNU Library General Public | |
| 18 | * License along with this library; if not, write to the | |
| 19 | * Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
| 20 | * Boston, MA 02111-1307, USA. | |
| 21 | */ | |
| 22 | ||
| 23 | /* | |
| 24 | * ticker.c -- Syd Logan, Summer 2000 | |
| 25 | * pluginized- Sean Egan, Summer 2002 | |
| 26 | */ | |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
27 | #include "internal.h" |
| 9791 | 28 | #include "gtkgaim.h" |
| 3391 | 29 | |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
30 | #include "blist.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
31 | #include "conversation.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
32 | #include "debug.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
33 | #include "prpl.h" |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
34 | #include "signals.h" |
| 9943 | 35 | #include "version.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
36 | |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
37 | #include "gtkblist.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
38 | #include "gtkplugin.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
39 | |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
40 | #include "gtkticker.h" |
| 3391 | 41 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
42 | #define TICKER_PLUGIN_ID "gtk-ticker" |
| 3867 | 43 | |
| 3391 | 44 | static GtkWidget *tickerwindow = NULL; |
| 45 | static GtkWidget *ticker; | |
| 46 | ||
| 47 | typedef struct { | |
| 6695 | 48 | GaimBuddy *buddy; |
| 3391 | 49 | GtkWidget *ebox; |
| 50 | GtkWidget *label; | |
| 5170 | 51 | GtkWidget *icon; |
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
52 | guint timeout; |
| 3391 | 53 | } TickerData; |
| 54 | ||
| 5170 | 55 | GList *tickerbuds = NULL; |
| 3391 | 56 | |
| 5172 | 57 | static gboolean buddy_ticker_destroy_window(GtkWidget *window, |
| 58 | GdkEventAny *event, gpointer data) { | |
| 59 | if(window) | |
| 60 | gtk_widget_hide(window); | |
| 61 | ||
| 62 | return TRUE; /* don't actually destroy the window */ | |
| 3391 | 63 | } |
| 64 | ||
| 5170 | 65 | static void buddy_ticker_create_window() { |
| 66 | if(tickerwindow) { | |
| 67 | gtk_widget_show(tickerwindow); | |
| 68 | return; | |
| 69 | } | |
| 3391 | 70 | |
| 5170 | 71 | tickerwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
|
5286
a35f037e7841
[gaim-migrate @ 5658]
David J. Brigada <brigada@prism.net>
parents:
5234
diff
changeset
|
72 | gtk_window_set_default_size(GTK_WINDOW(tickerwindow), 500, -1); |
| 5172 | 73 | g_signal_connect(G_OBJECT(tickerwindow), "delete_event", |
| 5170 | 74 | G_CALLBACK (buddy_ticker_destroy_window), NULL); |
| 75 | gtk_window_set_title (GTK_WINDOW(tickerwindow), _("Buddy Ticker")); | |
|
4850
ca9d06f1bb54
[gaim-migrate @ 5175]
Mark Doliner <markdoliner@pidgin.im>
parents:
4770
diff
changeset
|
76 | gtk_window_set_role (GTK_WINDOW(tickerwindow), "ticker"); |
| 3391 | 77 | |
|
4850
ca9d06f1bb54
[gaim-migrate @ 5175]
Mark Doliner <markdoliner@pidgin.im>
parents:
4770
diff
changeset
|
78 | ticker = gtk_ticker_new(); |
| 5170 | 79 | gtk_ticker_set_spacing(GTK_TICKER(ticker), 20); |
| 80 | gtk_container_add(GTK_CONTAINER(tickerwindow), ticker); | |
| 81 | gtk_ticker_set_interval(GTK_TICKER(ticker), 500); | |
| 82 | gtk_ticker_set_scootch(GTK_TICKER(ticker), 10); | |
| 83 | gtk_ticker_start_scroll(GTK_TICKER(ticker)); | |
|
5286
a35f037e7841
[gaim-migrate @ 5658]
David J. Brigada <brigada@prism.net>
parents:
5234
diff
changeset
|
84 | gtk_widget_set_size_request(ticker, 1, -1); |
| 3391 | 85 | |
| 5170 | 86 | gtk_widget_show_all(tickerwindow); |
| 3391 | 87 | } |
| 88 | ||
| 5170 | 89 | static gboolean buddy_click_cb(GtkWidget *widget, GdkEventButton *event, gpointer user_data) { |
| 6695 | 90 | GaimBuddy *b = user_data; |
|
4850
ca9d06f1bb54
[gaim-migrate @ 5175]
Mark Doliner <markdoliner@pidgin.im>
parents:
4770
diff
changeset
|
91 | |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11318
diff
changeset
|
92 | gaim_conversation_new(GAIM_CONV_TYPE_IM, b->account, b->name); |
| 3391 | 93 | return TRUE; |
| 94 | } | |
| 95 | ||
| 6695 | 96 | static TickerData *buddy_ticker_find_buddy(GaimBuddy *b) { |
| 5170 | 97 | GList *tb; |
| 98 | for(tb = tickerbuds; tb; tb = tb->next) { | |
| 99 | TickerData *td = tb->data; | |
| 100 | if(td->buddy == b) | |
| 101 | return td; | |
| 102 | } | |
| 103 | return NULL; | |
| 104 | } | |
| 105 | ||
| 6695 | 106 | static void buddy_ticker_set_pixmap(GaimBuddy *b) { |
| 5170 | 107 | TickerData *td = buddy_ticker_find_buddy(b); |
| 108 | GdkPixbuf *pixbuf; | |
| 3391 | 109 | |
| 5170 | 110 | if(!td) |
| 3391 | 111 | return; |
| 5170 | 112 | |
| 113 | if(!td->icon) | |
| 114 | td->icon = gtk_image_new(); | |
| 3391 | 115 | |
| 5234 | 116 | pixbuf = gaim_gtk_blist_get_status_icon((GaimBlistNode*)b, |
| 117 | GAIM_STATUS_ICON_SMALL); | |
| 5170 | 118 | gtk_image_set_from_pixbuf(GTK_IMAGE(td->icon), pixbuf); |
| 119 | g_object_unref(G_OBJECT(pixbuf)); | |
| 120 | } | |
| 121 | ||
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
122 | static gboolean buddy_ticker_set_pixmap_cb(gpointer data) { |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
123 | TickerData *td = data; |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
124 | |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
125 | gaim_debug(GAIM_DEBUG_ERROR, "XXX", "we're updating the pixmap, you bitch\n"); |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
126 | buddy_ticker_set_pixmap(td->buddy); |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
127 | td->timeout = 0; |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
128 | |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
129 | return FALSE; |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
130 | } |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
131 | |
| 6695 | 132 | static void buddy_ticker_add_buddy(GaimBuddy *b) { |
| 5170 | 133 | GtkWidget *hbox; |
| 134 | TickerData *td; | |
| 135 | ||
| 136 | buddy_ticker_create_window(); | |
| 5172 | 137 | |
| 3391 | 138 | if (!ticker) |
| 139 | return; | |
| 140 | ||
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
141 | if (buddy_ticker_find_buddy(b)) |
| 3391 | 142 | return; |
| 143 | ||
| 5170 | 144 | td = g_new0(TickerData, 1); |
| 145 | td->buddy = b; | |
| 146 | tickerbuds = g_list_append(tickerbuds, td); | |
| 3391 | 147 | |
| 5170 | 148 | td->ebox = gtk_event_box_new(); |
| 149 | gtk_ticker_add(GTK_TICKER(ticker), td->ebox); | |
| 150 | hbox = gtk_hbox_new(FALSE, 0); | |
| 151 | gtk_container_add(GTK_CONTAINER(td->ebox), hbox); | |
| 152 | buddy_ticker_set_pixmap(b); | |
| 153 | gtk_box_pack_start(GTK_BOX(hbox), td->icon, FALSE, FALSE, 5); | |
| 3391 | 154 | |
| 5170 | 155 | g_signal_connect(G_OBJECT(td->ebox), "button-press-event", |
| 156 | G_CALLBACK(buddy_click_cb), b); | |
| 3391 | 157 | |
|
9620
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
8993
diff
changeset
|
158 | td->label = gtk_label_new(gaim_buddy_get_alias(b)); |
| 5170 | 159 | gtk_box_pack_start(GTK_BOX(hbox), td->label, FALSE, FALSE, 5); |
| 160 | ||
| 161 | gtk_widget_show_all(td->ebox); | |
| 162 | gtk_widget_show(tickerwindow); | |
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
163 | |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
164 | /* |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
165 | * Update the icon in a few seconds (after the open door icon has |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
166 | * changed). This is somewhat ugly. |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
167 | */ |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
168 | td->timeout = g_timeout_add(11000, buddy_ticker_set_pixmap_cb, td); |
| 3391 | 169 | } |
| 170 | ||
| 6695 | 171 | static void buddy_ticker_remove_buddy(GaimBuddy *b) { |
| 5170 | 172 | TickerData *td = buddy_ticker_find_buddy(b); |
| 3391 | 173 | |
| 5170 | 174 | if (!td) |
| 175 | return; | |
| 3391 | 176 | |
| 5172 | 177 | /* pop up the ticker window again */ |
| 178 | buddy_ticker_create_window(); | |
| 179 | ||
| 5170 | 180 | gtk_ticker_remove(GTK_TICKER(ticker), td->ebox); |
| 181 | tickerbuds = g_list_remove(tickerbuds, td); | |
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
182 | if (td->timeout != 0) |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
183 | g_source_remove(td->timeout); |
| 5170 | 184 | g_free(td); |
| 3391 | 185 | } |
| 186 | ||
| 5170 | 187 | static void buddy_ticker_show() |
| 3391 | 188 | { |
|
7100
cfa56fba1b19
[gaim-migrate @ 7665]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
189 | GaimBuddyList *list = gaim_get_blist(); |
| 6695 | 190 | GaimBlistNode *gnode, *cnode, *bnode; |
| 191 | GaimBuddy *b; | |
| 3391 | 192 | |
| 5170 | 193 | if(!list) |
| 194 | return; | |
| 3391 | 195 | |
| 5170 | 196 | for(gnode = list->root; gnode; gnode = gnode->next) { |
| 197 | if(!GAIM_BLIST_NODE_IS_GROUP(gnode)) | |
| 198 | continue; | |
| 6695 | 199 | for(cnode = gnode->child; cnode; cnode = cnode->next) { |
| 200 | if(!GAIM_BLIST_NODE_IS_CONTACT(cnode)) | |
| 5170 | 201 | continue; |
| 6695 | 202 | for(bnode = cnode->child; bnode; bnode = bnode->next) { |
| 203 | if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) | |
| 204 | continue; | |
| 205 | b = (GaimBuddy *)bnode; | |
| 206 | if(GAIM_BUDDY_IS_ONLINE(b)) | |
| 207 | buddy_ticker_add_buddy(b); | |
| 208 | } | |
| 3391 | 209 | } |
| 210 | } | |
| 211 | } | |
| 212 | ||
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
213 | static void |
| 6695 | 214 | buddy_signon_cb(GaimBuddy *b) |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
215 | { |
| 5170 | 216 | if(buddy_ticker_find_buddy(b)) |
| 217 | buddy_ticker_set_pixmap(b); | |
| 218 | else | |
| 219 | buddy_ticker_add_buddy(b); | |
| 3391 | 220 | } |
| 221 | ||
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
222 | static void |
| 6695 | 223 | buddy_signoff_cb(GaimBuddy *b) |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
224 | { |
| 5170 | 225 | buddy_ticker_remove_buddy(b); |
| 5185 | 226 | if(!tickerbuds) |
| 227 | gtk_widget_hide(tickerwindow); | |
| 3391 | 228 | } |
| 229 | ||
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
230 | static void |
| 11935 | 231 | status_changed_cb(GaimBuddy *b, GaimStatus *os, GaimStatus *s) |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
232 | { |
| 5170 | 233 | if(buddy_ticker_find_buddy(b)) |
| 234 | buddy_ticker_set_pixmap(b); | |
| 235 | else | |
| 236 | buddy_ticker_add_buddy(b); | |
| 3391 | 237 | } |
| 238 | ||
| 8213 | 239 | static void |
| 240 | signoff_cb(GaimConnection *gc) | |
| 241 | { | |
| 242 | TickerData *td; | |
| 243 | if (!gaim_connections_get_all()) { | |
| 244 | while (tickerbuds) { | |
| 245 | td = tickerbuds->data; | |
| 246 | tickerbuds = g_list_delete_link(tickerbuds, tickerbuds); | |
| 247 | if (td->timeout != 0) | |
| 248 | g_source_remove(td->timeout); | |
| 249 | g_free(td); | |
| 250 | } | |
| 251 | gtk_widget_destroy(tickerwindow); | |
| 252 | tickerwindow = NULL; | |
| 253 | ticker = NULL; | |
| 254 | } else { | |
| 255 | GList *t = tickerbuds; | |
| 256 | while (t) { | |
| 257 | td = t->data; | |
| 258 | t = t->next; | |
| 259 | if (td->buddy->account == gc->account) { | |
| 260 | buddy_signoff_cb(td->buddy); | |
| 261 | } | |
| 262 | } | |
| 263 | } | |
| 264 | } | |
| 265 | ||
| 266 | ||
| 3630 | 267 | /* |
| 268 | * EXPORTED FUNCTIONS | |
| 269 | */ | |
| 270 | ||
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
271 | static gboolean |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
272 | plugin_load(GaimPlugin *plugin) |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
273 | { |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
274 | void *blist_handle = gaim_blist_get_handle(); |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
275 | |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
276 | gaim_signal_connect(gaim_connections_get_handle(), "signed-off", |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
277 | plugin, GAIM_CALLBACK(signoff_cb), NULL); |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
278 | gaim_signal_connect(blist_handle, "buddy-signed-on", |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
279 | plugin, GAIM_CALLBACK(buddy_signon_cb), NULL); |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
280 | gaim_signal_connect(blist_handle, "buddy-signed-off", |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
281 | plugin, GAIM_CALLBACK(buddy_signoff_cb), NULL); |
| 11935 | 282 | gaim_signal_connect(blist_handle, "buddy-status-changed", |
| 283 | plugin, GAIM_CALLBACK(status_changed_cb), NULL); | |
| 3391 | 284 | |
| 5607 | 285 | if (gaim_connections_get_all()) |
| 5170 | 286 | buddy_ticker_show(); |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
287 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
288 | return TRUE; |
| 3391 | 289 | } |
| 290 | ||
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
291 | static gboolean |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
292 | plugin_unload(GaimPlugin *plugin) |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
293 | { |
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
294 | TickerData *td; |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
295 | |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
296 | while (tickerbuds) { |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
297 | td = tickerbuds->data; |
| 5186 | 298 | tickerbuds = g_list_delete_link(tickerbuds, tickerbuds); |
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
299 | if (td->timeout != 0) |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
300 | g_source_remove(td->timeout); |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
301 | g_free(td); |
| 5185 | 302 | } |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
303 | |
|
5984
a5b22eb728ef
[gaim-migrate @ 6432]
Christian Hammond <chipx86@chipx86.com>
parents:
5983
diff
changeset
|
304 | if (tickerwindow != NULL) { |
|
5983
435a19acf12a
[gaim-migrate @ 6431]
Christian Hammond <chipx86@chipx86.com>
parents:
5920
diff
changeset
|
305 | gtk_widget_destroy(tickerwindow); |
|
5984
a5b22eb728ef
[gaim-migrate @ 6432]
Christian Hammond <chipx86@chipx86.com>
parents:
5983
diff
changeset
|
306 | tickerwindow = NULL; |
|
a5b22eb728ef
[gaim-migrate @ 6432]
Christian Hammond <chipx86@chipx86.com>
parents:
5983
diff
changeset
|
307 | } |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
308 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
309 | return TRUE; |
| 3391 | 310 | } |
| 5170 | 311 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
312 | static GaimPluginInfo info = |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
313 | { |
| 9943 | 314 | GAIM_PLUGIN_MAGIC, |
| 315 | GAIM_MAJOR_VERSION, | |
| 316 | GAIM_MINOR_VERSION, | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
317 | GAIM_PLUGIN_STANDARD, /**< type */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
318 | GAIM_GTK_PLUGIN_TYPE, /**< ui_requirement */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
319 | 0, /**< flags */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
320 | NULL, /**< dependencies */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
321 | GAIM_PRIORITY_DEFAULT, /**< priority */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
322 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
323 | TICKER_PLUGIN_ID, /**< id */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
324 | N_("Buddy Ticker"), /**< name */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
325 | VERSION, /**< version */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
326 | /** summary */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
327 | N_("A horizontal scrolling version of the buddy list."), |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
328 | /** description */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
329 | N_("A horizontal scrolling version of the buddy list."), |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
330 | "Syd Logan", /**< author */ |
|
6371
e92b66ee5518
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6122
diff
changeset
|
331 | GAIM_WEBSITE, /**< homepage */ |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
332 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
333 | plugin_load, /**< load */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
334 | plugin_unload, /**< unload */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
335 | NULL, /**< destroy */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
336 | |
|
11318
13fa1d5134f3
[gaim-migrate @ 13521]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9943
diff
changeset
|
337 | NULL, /**< ui_info */ |
| 8993 | 338 | NULL, /**< extra_info */ |
| 339 | NULL, | |
| 340 | NULL | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
341 | }; |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
342 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
343 | static void |
|
5920
963bfdefee02
[gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents:
5873
diff
changeset
|
344 | init_plugin(GaimPlugin *plugin) |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
345 | { |
| 3551 | 346 | } |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
347 | |
| 6063 | 348 | GAIM_INIT_PLUGIN(ticker, init_plugin, info) |