Mercurial > pidgin
annotate plugins/ticker/ticker.c @ 11873:346bd669c8f2
[gaim-migrate @ 14164]
some error prevention from Casey Harkins. see patch 1340762
committer: Tailor Script <tailor@pidgin.im>
| author | Luke Schierer <lschiere@pidgin.im> |
|---|---|
| date | Fri, 28 Oct 2005 15:43:15 +0000 |
| parents | 17142948653e |
| children | cb73483c9f63 |
| rev | line source |
|---|---|
| 6122 | 1 /* |
| 2 * Gaim Ticker Plugin | |
| 3 * The line below doesn't apply at all, does it? It should be Syd, Sean, and | |
| 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
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
27 #include "internal.h" |
| 9791 | 28 #include "gtkgaim.h" |
| 3391 | 29 |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
30 #include "blist.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
31 #include "conversation.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
32 #include "debug.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
33 #include "prpl.h" |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
34 #include "signals.h" |
| 9943 | 35 #include "version.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
36 |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
37 #include "gtkblist.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
38 #include "gtkplugin.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
39 |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
40 #include "gtkticker.h" |
| 3391 | 41 |
|
5205
fefad67de2c7
[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 | 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 | 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 | 76 gtk_window_set_role (GTK_WINDOW(tickerwindow), "ticker"); |
| 3391 | 77 |
| 4850 | 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 | 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 | 91 |
| 11338 | 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 | 122 static gboolean buddy_ticker_set_pixmap_cb(gpointer data) { |
| 123 TickerData *td = data; | |
| 124 | |
| 125 gaim_debug(GAIM_DEBUG_ERROR, "XXX", "we're updating the pixmap, you bitch\n"); | |
| 126 buddy_ticker_set_pixmap(td->buddy); | |
| 127 td->timeout = 0; | |
| 128 | |
| 129 return FALSE; | |
| 130 } | |
| 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 | 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 | 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 | 163 |
| 164 /* | |
| 165 * Update the icon in a few seconds (after the open door icon has | |
| 166 * changed). This is somewhat ugly. | |
| 167 */ | |
| 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 | 182 if (td->timeout != 0) |
| 183 g_source_remove(td->timeout); | |
| 5170 | 184 g_free(td); |
| 3391 | 185 } |
| 186 | |
| 5170 | 187 static void buddy_ticker_show() |
| 3391 | 188 { |
|
7100
abdc55ffadba
[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
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
213 static void |
| 6695 | 214 buddy_signon_cb(GaimBuddy *b) |
|
6485
70d5122bc3ff
[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
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
222 static void |
| 6695 | 223 buddy_signoff_cb(GaimBuddy *b) |
|
6485
70d5122bc3ff
[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
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
230 static void |
| 6695 | 231 away_cb(GaimBuddy *b) |
|
6485
70d5122bc3ff
[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
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
271 static gboolean |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
272 plugin_load(GaimPlugin *plugin) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
273 { |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
274 void *blist_handle = gaim_blist_get_handle(); |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
275 |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
276 gaim_signal_connect(gaim_connections_get_handle(), "signed-off", |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
277 plugin, GAIM_CALLBACK(signoff_cb), NULL); |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
278 gaim_signal_connect(blist_handle, "buddy-signed-on", |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
279 plugin, GAIM_CALLBACK(buddy_signon_cb), NULL); |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
280 gaim_signal_connect(blist_handle, "buddy-signed-off", |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
281 plugin, GAIM_CALLBACK(buddy_signoff_cb), NULL); |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
282 gaim_signal_connect(blist_handle, "buddy-away", |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
283 plugin, GAIM_CALLBACK(away_cb), NULL); |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
284 gaim_signal_connect(blist_handle, "buddy-back", |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
285 plugin, GAIM_CALLBACK(away_cb), NULL); |
| 3391 | 286 |
| 5607 | 287 if (gaim_connections_get_all()) |
| 5170 | 288 buddy_ticker_show(); |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
289 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
290 return TRUE; |
| 3391 | 291 } |
| 292 | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
293 static gboolean |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
294 plugin_unload(GaimPlugin *plugin) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
295 { |
| 6122 | 296 TickerData *td; |
| 297 | |
| 298 while (tickerbuds) { | |
| 299 td = tickerbuds->data; | |
| 5186 | 300 tickerbuds = g_list_delete_link(tickerbuds, tickerbuds); |
| 6122 | 301 if (td->timeout != 0) |
| 302 g_source_remove(td->timeout); | |
| 303 g_free(td); | |
| 5185 | 304 } |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
305 |
|
5984
c55b32640690
[gaim-migrate @ 6432]
Christian Hammond <chipx86@chipx86.com>
parents:
5983
diff
changeset
|
306 if (tickerwindow != NULL) { |
|
5983
e0be64ced3d7
[gaim-migrate @ 6431]
Christian Hammond <chipx86@chipx86.com>
parents:
5920
diff
changeset
|
307 gtk_widget_destroy(tickerwindow); |
|
5984
c55b32640690
[gaim-migrate @ 6432]
Christian Hammond <chipx86@chipx86.com>
parents:
5983
diff
changeset
|
308 tickerwindow = NULL; |
|
c55b32640690
[gaim-migrate @ 6432]
Christian Hammond <chipx86@chipx86.com>
parents:
5983
diff
changeset
|
309 } |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
310 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
311 return TRUE; |
| 3391 | 312 } |
| 5170 | 313 |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
314 static GaimPluginInfo info = |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
315 { |
| 9943 | 316 GAIM_PLUGIN_MAGIC, |
| 317 GAIM_MAJOR_VERSION, | |
| 318 GAIM_MINOR_VERSION, | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
319 GAIM_PLUGIN_STANDARD, /**< type */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
320 GAIM_GTK_PLUGIN_TYPE, /**< ui_requirement */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
321 0, /**< flags */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
322 NULL, /**< dependencies */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
323 GAIM_PRIORITY_DEFAULT, /**< priority */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
324 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
325 TICKER_PLUGIN_ID, /**< id */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
326 N_("Buddy Ticker"), /**< name */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
327 VERSION, /**< version */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
328 /** summary */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
329 N_("A horizontal scrolling version of the buddy list."), |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
330 /** description */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
331 N_("A horizontal scrolling version of the buddy list."), |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
332 "Syd Logan", /**< author */ |
|
6371
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6122
diff
changeset
|
333 GAIM_WEBSITE, /**< homepage */ |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
334 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
335 plugin_load, /**< load */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
336 plugin_unload, /**< unload */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
337 NULL, /**< destroy */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
338 |
| 11318 | 339 NULL, /**< ui_info */ |
| 8993 | 340 NULL, /**< extra_info */ |
| 341 NULL, | |
| 342 NULL | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
343 }; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
344 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
345 static void |
|
5920
7d385de2f9cd
[gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents:
5873
diff
changeset
|
346 init_plugin(GaimPlugin *plugin) |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
347 { |
| 3551 | 348 } |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
349 |
| 6063 | 350 GAIM_INIT_PLUGIN(ticker, init_plugin, info) |
