Thu, 22 Apr 2004 01:53:18 +0000
[gaim-migrate @ 9504]
Bumped up the plugin API version number, and added version numbers for
loader plugins and protocol plugins. Authors will want to update their
plugins, and possibly use GAIM_PLUGIN_API_VERSION, GAIM_PRPL_API_VERSION,
and GAIM_LOADER_API_VERSION constants.
|
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" |
|
6371
e92b66ee5518
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6122
diff
changeset
|
28 | #include "gtkinternal.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" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
35 | |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
36 | #include "gtkblist.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
37 | #include "gtkplugin.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
38 | |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
39 | #include "gtkticker.h" |
| 3391 | 40 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
41 | #define TICKER_PLUGIN_ID "gtk-ticker" |
| 3867 | 42 | |
| 3391 | 43 | static GtkWidget *tickerwindow = NULL; |
| 44 | static GtkWidget *ticker; | |
| 45 | ||
| 46 | typedef struct { | |
| 6695 | 47 | GaimBuddy *buddy; |
| 3391 | 48 | GtkWidget *ebox; |
| 49 | GtkWidget *label; | |
| 5170 | 50 | GtkWidget *icon; |
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
51 | guint timeout; |
| 3391 | 52 | } TickerData; |
| 53 | ||
| 5170 | 54 | GList *tickerbuds = NULL; |
| 3391 | 55 | |
| 5172 | 56 | static gboolean buddy_ticker_destroy_window(GtkWidget *window, |
| 57 | GdkEventAny *event, gpointer data) { | |
| 58 | if(window) | |
| 59 | gtk_widget_hide(window); | |
| 60 | ||
| 61 | return TRUE; /* don't actually destroy the window */ | |
| 3391 | 62 | } |
| 63 | ||
| 5170 | 64 | static void buddy_ticker_create_window() { |
| 65 | if(tickerwindow) { | |
| 66 | gtk_widget_show(tickerwindow); | |
| 67 | return; | |
| 68 | } | |
| 3391 | 69 | |
| 5170 | 70 | tickerwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
|
5286
a35f037e7841
[gaim-migrate @ 5658]
David J. Brigada <brigada@prism.net>
parents:
5234
diff
changeset
|
71 | gtk_window_set_default_size(GTK_WINDOW(tickerwindow), 500, -1); |
| 5172 | 72 | g_signal_connect(G_OBJECT(tickerwindow), "delete_event", |
| 5170 | 73 | G_CALLBACK (buddy_ticker_destroy_window), NULL); |
| 74 | gtk_window_set_title (GTK_WINDOW(tickerwindow), _("Buddy Ticker")); | |
|
4850
ca9d06f1bb54
[gaim-migrate @ 5175]
Mark Doliner <markdoliner@pidgin.im>
parents:
4770
diff
changeset
|
75 | gtk_window_set_role (GTK_WINDOW(tickerwindow), "ticker"); |
| 3391 | 76 | |
|
4850
ca9d06f1bb54
[gaim-migrate @ 5175]
Mark Doliner <markdoliner@pidgin.im>
parents:
4770
diff
changeset
|
77 | ticker = gtk_ticker_new(); |
| 5170 | 78 | gtk_ticker_set_spacing(GTK_TICKER(ticker), 20); |
| 79 | gtk_container_add(GTK_CONTAINER(tickerwindow), ticker); | |
| 80 | gtk_ticker_set_interval(GTK_TICKER(ticker), 500); | |
| 81 | gtk_ticker_set_scootch(GTK_TICKER(ticker), 10); | |
| 82 | gtk_ticker_start_scroll(GTK_TICKER(ticker)); | |
|
5286
a35f037e7841
[gaim-migrate @ 5658]
David J. Brigada <brigada@prism.net>
parents:
5234
diff
changeset
|
83 | gtk_widget_set_size_request(ticker, 1, -1); |
| 3391 | 84 | |
| 5170 | 85 | gtk_widget_show_all(tickerwindow); |
| 3391 | 86 | } |
| 87 | ||
| 5170 | 88 | static gboolean buddy_click_cb(GtkWidget *widget, GdkEventButton *event, gpointer user_data) { |
| 6695 | 89 | GaimBuddy *b = user_data; |
|
4850
ca9d06f1bb54
[gaim-migrate @ 5175]
Mark Doliner <markdoliner@pidgin.im>
parents:
4770
diff
changeset
|
90 | |
| 5170 | 91 | gaim_conversation_new(GAIM_CONV_IM, b->account, b->name); |
| 3391 | 92 | return TRUE; |
| 93 | } | |
| 94 | ||
| 6695 | 95 | static TickerData *buddy_ticker_find_buddy(GaimBuddy *b) { |
| 5170 | 96 | GList *tb; |
| 97 | for(tb = tickerbuds; tb; tb = tb->next) { | |
| 98 | TickerData *td = tb->data; | |
| 99 | if(td->buddy == b) | |
| 100 | return td; | |
| 101 | } | |
| 102 | return NULL; | |
| 103 | } | |
| 104 | ||
| 6695 | 105 | static void buddy_ticker_set_pixmap(GaimBuddy *b) { |
| 5170 | 106 | TickerData *td = buddy_ticker_find_buddy(b); |
| 107 | GdkPixbuf *pixbuf; | |
| 3391 | 108 | |
| 5170 | 109 | if(!td) |
| 3391 | 110 | return; |
| 5170 | 111 | |
| 112 | if(!td->icon) | |
| 113 | td->icon = gtk_image_new(); | |
| 3391 | 114 | |
| 5234 | 115 | pixbuf = gaim_gtk_blist_get_status_icon((GaimBlistNode*)b, |
| 116 | GAIM_STATUS_ICON_SMALL); | |
| 5170 | 117 | gtk_image_set_from_pixbuf(GTK_IMAGE(td->icon), pixbuf); |
| 118 | g_object_unref(G_OBJECT(pixbuf)); | |
| 119 | } | |
| 120 | ||
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
121 | static gboolean buddy_ticker_set_pixmap_cb(gpointer data) { |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
122 | TickerData *td = data; |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
123 | |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
124 | 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
|
125 | buddy_ticker_set_pixmap(td->buddy); |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
126 | td->timeout = 0; |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
127 | |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
128 | return FALSE; |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
129 | } |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
130 | |
| 6695 | 131 | static void buddy_ticker_add_buddy(GaimBuddy *b) { |
| 5170 | 132 | GtkWidget *hbox; |
| 133 | TickerData *td; | |
| 134 | ||
| 135 | buddy_ticker_create_window(); | |
| 5172 | 136 | |
| 3391 | 137 | if (!ticker) |
| 138 | return; | |
| 139 | ||
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
140 | if (buddy_ticker_find_buddy(b)) |
| 3391 | 141 | return; |
| 142 | ||
| 5170 | 143 | td = g_new0(TickerData, 1); |
| 144 | td->buddy = b; | |
| 145 | tickerbuds = g_list_append(tickerbuds, td); | |
| 3391 | 146 | |
| 5170 | 147 | td->ebox = gtk_event_box_new(); |
| 148 | gtk_ticker_add(GTK_TICKER(ticker), td->ebox); | |
| 149 | hbox = gtk_hbox_new(FALSE, 0); | |
| 150 | gtk_container_add(GTK_CONTAINER(td->ebox), hbox); | |
| 151 | buddy_ticker_set_pixmap(b); | |
| 152 | gtk_box_pack_start(GTK_BOX(hbox), td->icon, FALSE, FALSE, 5); | |
| 3391 | 153 | |
| 5170 | 154 | g_signal_connect(G_OBJECT(td->ebox), "button-press-event", |
| 155 | G_CALLBACK(buddy_click_cb), b); | |
| 3391 | 156 | |
| 5170 | 157 | td->label = gtk_label_new(gaim_get_buddy_alias(b)); |
| 158 | gtk_box_pack_start(GTK_BOX(hbox), td->label, FALSE, FALSE, 5); | |
| 159 | ||
| 160 | gtk_widget_show_all(td->ebox); | |
| 161 | gtk_widget_show(tickerwindow); | |
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
162 | |
|
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 | * 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
|
165 | * changed). This is somewhat ugly. |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
166 | */ |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
167 | td->timeout = g_timeout_add(11000, buddy_ticker_set_pixmap_cb, td); |
| 3391 | 168 | } |
| 169 | ||
| 6695 | 170 | static void buddy_ticker_remove_buddy(GaimBuddy *b) { |
| 5170 | 171 | TickerData *td = buddy_ticker_find_buddy(b); |
| 3391 | 172 | |
| 5170 | 173 | if (!td) |
| 174 | return; | |
| 3391 | 175 | |
| 5172 | 176 | /* pop up the ticker window again */ |
| 177 | buddy_ticker_create_window(); | |
| 178 | ||
| 5170 | 179 | gtk_ticker_remove(GTK_TICKER(ticker), td->ebox); |
| 180 | tickerbuds = g_list_remove(tickerbuds, td); | |
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
181 | if (td->timeout != 0) |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
182 | g_source_remove(td->timeout); |
| 5170 | 183 | g_free(td); |
| 3391 | 184 | } |
| 185 | ||
| 5170 | 186 | static void buddy_ticker_show() |
| 3391 | 187 | { |
|
7100
cfa56fba1b19
[gaim-migrate @ 7665]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
188 | GaimBuddyList *list = gaim_get_blist(); |
| 6695 | 189 | GaimBlistNode *gnode, *cnode, *bnode; |
| 190 | GaimBuddy *b; | |
| 3391 | 191 | |
| 5170 | 192 | if(!list) |
| 193 | return; | |
| 3391 | 194 | |
| 5170 | 195 | for(gnode = list->root; gnode; gnode = gnode->next) { |
| 196 | if(!GAIM_BLIST_NODE_IS_GROUP(gnode)) | |
| 197 | continue; | |
| 6695 | 198 | for(cnode = gnode->child; cnode; cnode = cnode->next) { |
| 199 | if(!GAIM_BLIST_NODE_IS_CONTACT(cnode)) | |
| 5170 | 200 | continue; |
| 6695 | 201 | for(bnode = cnode->child; bnode; bnode = bnode->next) { |
| 202 | if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) | |
| 203 | continue; | |
| 204 | b = (GaimBuddy *)bnode; | |
| 205 | if(GAIM_BUDDY_IS_ONLINE(b)) | |
| 206 | buddy_ticker_add_buddy(b); | |
| 207 | } | |
| 3391 | 208 | } |
| 209 | } | |
| 210 | } | |
| 211 | ||
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
212 | static void |
| 6695 | 213 | buddy_signon_cb(GaimBuddy *b) |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
214 | { |
| 5170 | 215 | if(buddy_ticker_find_buddy(b)) |
| 216 | buddy_ticker_set_pixmap(b); | |
| 217 | else | |
| 218 | buddy_ticker_add_buddy(b); | |
| 3391 | 219 | } |
| 220 | ||
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
221 | static void |
| 6695 | 222 | buddy_signoff_cb(GaimBuddy *b) |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
223 | { |
| 5170 | 224 | buddy_ticker_remove_buddy(b); |
| 5185 | 225 | if(!tickerbuds) |
| 226 | gtk_widget_hide(tickerwindow); | |
| 3391 | 227 | } |
| 228 | ||
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
229 | static void |
| 6695 | 230 | away_cb(GaimBuddy *b) |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
231 | { |
| 5170 | 232 | if(buddy_ticker_find_buddy(b)) |
| 233 | buddy_ticker_set_pixmap(b); | |
| 234 | else | |
| 235 | buddy_ticker_add_buddy(b); | |
| 3391 | 236 | } |
| 237 | ||
| 8213 | 238 | static void |
| 239 | signoff_cb(GaimConnection *gc) | |
| 240 | { | |
| 241 | TickerData *td; | |
| 242 | if (!gaim_connections_get_all()) { | |
| 243 | while (tickerbuds) { | |
| 244 | td = tickerbuds->data; | |
| 245 | tickerbuds = g_list_delete_link(tickerbuds, tickerbuds); | |
| 246 | if (td->timeout != 0) | |
| 247 | g_source_remove(td->timeout); | |
| 248 | g_free(td); | |
| 249 | } | |
| 250 | gtk_widget_destroy(tickerwindow); | |
| 251 | tickerwindow = NULL; | |
| 252 | ticker = NULL; | |
| 253 | } else { | |
| 254 | GList *t = tickerbuds; | |
| 255 | while (t) { | |
| 256 | td = t->data; | |
| 257 | t = t->next; | |
| 258 | if (td->buddy->account == gc->account) { | |
| 259 | buddy_signoff_cb(td->buddy); | |
| 260 | } | |
| 261 | } | |
| 262 | } | |
| 263 | } | |
| 264 | ||
| 265 | ||
| 3630 | 266 | /* |
| 267 | * EXPORTED FUNCTIONS | |
| 268 | */ | |
| 269 | ||
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
270 | static gboolean |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
271 | plugin_load(GaimPlugin *plugin) |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
272 | { |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
273 | void *blist_handle = gaim_blist_get_handle(); |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
274 | |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
275 | gaim_signal_connect(gaim_connections_get_handle(), "signed-off", |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
276 | plugin, GAIM_CALLBACK(signoff_cb), NULL); |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
277 | gaim_signal_connect(blist_handle, "buddy-signed-on", |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
278 | plugin, GAIM_CALLBACK(buddy_signon_cb), NULL); |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
279 | gaim_signal_connect(blist_handle, "buddy-signed-off", |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
280 | plugin, GAIM_CALLBACK(buddy_signoff_cb), NULL); |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
281 | gaim_signal_connect(blist_handle, "buddy-away", |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
282 | plugin, GAIM_CALLBACK(away_cb), NULL); |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
283 | gaim_signal_connect(blist_handle, "buddy-back", |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
284 | plugin, GAIM_CALLBACK(away_cb), NULL); |
| 3391 | 285 | |
| 5607 | 286 | if (gaim_connections_get_all()) |
| 5170 | 287 | buddy_ticker_show(); |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
288 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
289 | return TRUE; |
| 3391 | 290 | } |
| 291 | ||
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
292 | static gboolean |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
293 | plugin_unload(GaimPlugin *plugin) |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
294 | { |
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
295 | TickerData *td; |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
296 | |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
297 | while (tickerbuds) { |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
298 | td = tickerbuds->data; |
| 5186 | 299 | tickerbuds = g_list_delete_link(tickerbuds, tickerbuds); |
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
300 | if (td->timeout != 0) |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
301 | g_source_remove(td->timeout); |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
302 | g_free(td); |
| 5185 | 303 | } |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
304 | |
|
5984
a5b22eb728ef
[gaim-migrate @ 6432]
Christian Hammond <chipx86@chipx86.com>
parents:
5983
diff
changeset
|
305 | if (tickerwindow != NULL) { |
|
5983
435a19acf12a
[gaim-migrate @ 6431]
Christian Hammond <chipx86@chipx86.com>
parents:
5920
diff
changeset
|
306 | gtk_widget_destroy(tickerwindow); |
|
5984
a5b22eb728ef
[gaim-migrate @ 6432]
Christian Hammond <chipx86@chipx86.com>
parents:
5983
diff
changeset
|
307 | tickerwindow = NULL; |
|
a5b22eb728ef
[gaim-migrate @ 6432]
Christian Hammond <chipx86@chipx86.com>
parents:
5983
diff
changeset
|
308 | } |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
309 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
310 | return TRUE; |
| 3391 | 311 | } |
| 5170 | 312 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
313 | static GaimGtkPluginUiInfo ui_info = |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
314 | { |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
315 | NULL /**< get_config_frame */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
316 | }; |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
317 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
318 | static GaimPluginInfo info = |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
319 | { |
|
8749
fb487e9e101a
[gaim-migrate @ 9504]
Christian Hammond <chipx86@chipx86.com>
parents:
8213
diff
changeset
|
320 | GAIM_PLUGIN_API_VERSION, /**< api_version */ |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
321 | GAIM_PLUGIN_STANDARD, /**< type */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
322 | GAIM_GTK_PLUGIN_TYPE, /**< ui_requirement */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
323 | 0, /**< flags */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
324 | NULL, /**< dependencies */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
325 | GAIM_PRIORITY_DEFAULT, /**< priority */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
326 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
327 | TICKER_PLUGIN_ID, /**< id */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
328 | N_("Buddy Ticker"), /**< name */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
329 | VERSION, /**< version */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
330 | /** summary */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
331 | N_("A horizontal scrolling version of the buddy list."), |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
332 | /** description */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
333 | N_("A horizontal scrolling version of the buddy list."), |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
334 | "Syd Logan", /**< author */ |
|
6371
e92b66ee5518
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6122
diff
changeset
|
335 | GAIM_WEBSITE, /**< homepage */ |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
336 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
337 | plugin_load, /**< load */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
338 | plugin_unload, /**< unload */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
339 | NULL, /**< destroy */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
340 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
341 | &ui_info, /**< ui_info */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
342 | NULL /**< extra_info */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
343 | }; |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
344 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
345 | static void |
|
5920
963bfdefee02
[gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents:
5873
diff
changeset
|
346 | init_plugin(GaimPlugin *plugin) |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
347 | { |
| 3551 | 348 | } |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
349 | |
| 6063 | 350 | GAIM_INIT_PLUGIN(ticker, init_plugin, info) |