Mercurial > pidgin.yaz
annotate plugins/ticker/ticker.c @ 9233:0c352d0e4ddc
[gaim-migrate @ 10029]
gaim_str_seconds_to_string() was overly complex, was painful to read, and
had far too many nested if statements. I've replaced it with a very simple,
easy to read function. Also, fixed a warning with rizzo's patch.
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Mon, 07 Jun 2004 10:09:29 +0000 |
parents | 294ae6548d4e |
children | c001be3c330e |
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" |
6371
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6122
diff
changeset
|
28 #include "gtkinternal.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" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
35 |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
36 #include "gtkblist.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
37 #include "gtkplugin.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
38 |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
39 #include "gtkticker.h" |
3391 | 40 |
5205
fefad67de2c7
[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 | 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 | 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 | 75 gtk_window_set_role (GTK_WINDOW(tickerwindow), "ticker"); |
3391 | 76 |
4850 | 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 | 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 | 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 | 121 static gboolean buddy_ticker_set_pixmap_cb(gpointer data) { |
122 TickerData *td = data; | |
123 | |
124 gaim_debug(GAIM_DEBUG_ERROR, "XXX", "we're updating the pixmap, you bitch\n"); | |
125 buddy_ticker_set_pixmap(td->buddy); | |
126 td->timeout = 0; | |
127 | |
128 return FALSE; | |
129 } | |
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 | 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 | 162 |
163 /* | |
164 * Update the icon in a few seconds (after the open door icon has | |
165 * changed). This is somewhat ugly. | |
166 */ | |
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 | 181 if (td->timeout != 0) |
182 g_source_remove(td->timeout); | |
5170 | 183 g_free(td); |
3391 | 184 } |
185 | |
5170 | 186 static void buddy_ticker_show() |
3391 | 187 { |
7100
abdc55ffadba
[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
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
212 static void |
6695 | 213 buddy_signon_cb(GaimBuddy *b) |
6485
70d5122bc3ff
[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
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
221 static void |
6695 | 222 buddy_signoff_cb(GaimBuddy *b) |
6485
70d5122bc3ff
[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
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
229 static void |
6695 | 230 away_cb(GaimBuddy *b) |
6485
70d5122bc3ff
[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
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
270 static gboolean |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
271 plugin_load(GaimPlugin *plugin) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
272 { |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
273 void *blist_handle = gaim_blist_get_handle(); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
274 |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
275 gaim_signal_connect(gaim_connections_get_handle(), "signed-off", |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
276 plugin, GAIM_CALLBACK(signoff_cb), NULL); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
277 gaim_signal_connect(blist_handle, "buddy-signed-on", |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
278 plugin, GAIM_CALLBACK(buddy_signon_cb), NULL); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
279 gaim_signal_connect(blist_handle, "buddy-signed-off", |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
280 plugin, GAIM_CALLBACK(buddy_signoff_cb), NULL); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
281 gaim_signal_connect(blist_handle, "buddy-away", |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
282 plugin, GAIM_CALLBACK(away_cb), NULL); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
283 gaim_signal_connect(blist_handle, "buddy-back", |
70d5122bc3ff
[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
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
288 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
289 return TRUE; |
3391 | 290 } |
291 | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
292 static gboolean |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
293 plugin_unload(GaimPlugin *plugin) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
294 { |
6122 | 295 TickerData *td; |
296 | |
297 while (tickerbuds) { | |
298 td = tickerbuds->data; | |
5186 | 299 tickerbuds = g_list_delete_link(tickerbuds, tickerbuds); |
6122 | 300 if (td->timeout != 0) |
301 g_source_remove(td->timeout); | |
302 g_free(td); | |
5185 | 303 } |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
304 |
5984
c55b32640690
[gaim-migrate @ 6432]
Christian Hammond <chipx86@chipx86.com>
parents:
5983
diff
changeset
|
305 if (tickerwindow != NULL) { |
5983
e0be64ced3d7
[gaim-migrate @ 6431]
Christian Hammond <chipx86@chipx86.com>
parents:
5920
diff
changeset
|
306 gtk_widget_destroy(tickerwindow); |
5984
c55b32640690
[gaim-migrate @ 6432]
Christian Hammond <chipx86@chipx86.com>
parents:
5983
diff
changeset
|
307 tickerwindow = NULL; |
c55b32640690
[gaim-migrate @ 6432]
Christian Hammond <chipx86@chipx86.com>
parents:
5983
diff
changeset
|
308 } |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
309 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
310 return TRUE; |
3391 | 311 } |
5170 | 312 |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
313 static GaimGtkPluginUiInfo ui_info = |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
314 { |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
315 NULL /**< get_config_frame */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
316 }; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
317 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
318 static GaimPluginInfo info = |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
319 { |
8749
d7b8eb1f0a18
[gaim-migrate @ 9504]
Christian Hammond <chipx86@chipx86.com>
parents:
8213
diff
changeset
|
320 GAIM_PLUGIN_API_VERSION, /**< api_version */ |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
321 GAIM_PLUGIN_STANDARD, /**< type */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
322 GAIM_GTK_PLUGIN_TYPE, /**< ui_requirement */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
323 0, /**< flags */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
324 NULL, /**< dependencies */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
325 GAIM_PRIORITY_DEFAULT, /**< priority */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
326 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
327 TICKER_PLUGIN_ID, /**< id */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
328 N_("Buddy Ticker"), /**< name */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
329 VERSION, /**< version */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
330 /** summary */ |
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 /** description */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
333 N_("A horizontal scrolling version of the buddy list."), |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
334 "Syd Logan", /**< author */ |
6371
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6122
diff
changeset
|
335 GAIM_WEBSITE, /**< homepage */ |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
336 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
337 plugin_load, /**< load */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
338 plugin_unload, /**< unload */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
339 NULL, /**< destroy */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
340 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
341 &ui_info, /**< ui_info */ |
8993 | 342 NULL, /**< extra_info */ |
343 NULL, | |
344 NULL | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
345 }; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
346 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
347 static void |
5920
7d385de2f9cd
[gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents:
5873
diff
changeset
|
348 init_plugin(GaimPlugin *plugin) |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
349 { |
3551 | 350 } |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
351 |
6063 | 352 GAIM_INIT_PLUGIN(ticker, init_plugin, info) |