Mercurial > pidgin.yaz
annotate plugins/ticker/ticker.c @ 6485:70d5122bc3ff
[gaim-migrate @ 6999]
Removed the old event system and replaced it with a much better signal
system. There will most likely be some bugs in this, but it seems to be
working for now. Plugins can now generate their own signals, and other
plugins can find those plugins and connect to them. This could give
plugins a form of IPC. It's also useful for other things. It's rather
flexible, except for the damn marshalling, but there's no way around that
that I or the glib people can see.
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Mon, 18 Aug 2003 01:03:43 +0000 |
parents | 8f94cce8faa5 |
children | 0c5637b5462e |
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 { | |
5170 | 47 struct buddy *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) { |
89 struct buddy *b = user_data; | |
4850 | 90 |
5170 | 91 gaim_conversation_new(GAIM_CONV_IM, b->account, b->name); |
3391 | 92 return TRUE; |
93 } | |
94 | |
5170 | 95 static TickerData *buddy_ticker_find_buddy(struct buddy *b) { |
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 | |
105 static void buddy_ticker_set_pixmap(struct buddy *b) { | |
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 | |
5170 | 131 static void buddy_ticker_add_buddy(struct buddy *b) { |
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 | |
5170 | 170 static void buddy_ticker_remove_buddy(struct buddy *b) { |
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 { |
5170 | 188 struct gaim_buddy_list *list = gaim_get_blist(); |
189 GaimBlistNode *gnode, *bnode; | |
190 struct buddy *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; | |
198 for(bnode = gnode->child; bnode; bnode = bnode->next) { | |
199 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) | |
200 continue; | |
201 b = (struct buddy *)bnode; | |
202 if(GAIM_BUDDY_IS_ONLINE(b)) | |
203 buddy_ticker_add_buddy(b); | |
3391 | 204 } |
205 } | |
206 } | |
207 | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
208 static void |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
209 signoff_cb(GaimConnection *gc) |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
210 { |
6122 | 211 TickerData *td; |
212 if (!gaim_connections_get_all()) { | |
213 while (tickerbuds) { | |
214 td = tickerbuds->data; | |
215 tickerbuds = g_list_delete_link(tickerbuds, tickerbuds); | |
216 if (td->timeout != 0) | |
217 g_source_remove(td->timeout); | |
218 g_free(td); | |
219 } | |
220 gtk_widget_destroy(tickerwindow); | |
221 tickerwindow = NULL; | |
222 ticker = NULL; | |
223 } else { | |
224 GList *t = tickerbuds; | |
225 while (t) { | |
226 td = t->data; | |
227 t = t->next; | |
228 if (td->buddy->account == gc->account) { | |
229 tickerbuds = g_list_remove(tickerbuds, td); | |
230 if (td->timeout != 0) | |
231 g_source_remove(td->timeout); | |
232 g_free(td); | |
233 } | |
234 } | |
235 } | |
236 } | |
237 | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
238 static void |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
239 buddy_signon_cb(struct buddy *b) |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
240 { |
5170 | 241 if(buddy_ticker_find_buddy(b)) |
242 buddy_ticker_set_pixmap(b); | |
243 else | |
244 buddy_ticker_add_buddy(b); | |
3391 | 245 } |
246 | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
247 static void |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
248 buddy_signoff_cb(struct buddy *b) |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
249 { |
5170 | 250 buddy_ticker_remove_buddy(b); |
5185 | 251 if(!tickerbuds) |
252 gtk_widget_hide(tickerwindow); | |
3391 | 253 } |
254 | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
255 static void |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
256 away_cb(struct buddy *b) |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
257 { |
5170 | 258 if(buddy_ticker_find_buddy(b)) |
259 buddy_ticker_set_pixmap(b); | |
260 else | |
261 buddy_ticker_add_buddy(b); | |
3391 | 262 } |
263 | |
3630 | 264 /* |
265 * EXPORTED FUNCTIONS | |
266 */ | |
267 | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
268 static gboolean |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
269 plugin_load(GaimPlugin *plugin) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
270 { |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
271 void *blist_handle = gaim_blist_get_handle(); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
272 |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
273 gaim_signal_connect(gaim_connections_get_handle(), "signed-off", |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
274 plugin, GAIM_CALLBACK(signoff_cb), NULL); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
275 gaim_signal_connect(blist_handle, "buddy-signed-on", |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
276 plugin, GAIM_CALLBACK(buddy_signon_cb), NULL); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
277 gaim_signal_connect(blist_handle, "buddy-signed-off", |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
278 plugin, GAIM_CALLBACK(buddy_signoff_cb), NULL); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
279 gaim_signal_connect(blist_handle, "buddy-away", |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
280 plugin, GAIM_CALLBACK(away_cb), NULL); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
281 gaim_signal_connect(blist_handle, "buddy-back", |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
282 plugin, GAIM_CALLBACK(away_cb), NULL); |
3391 | 283 |
5607 | 284 if (gaim_connections_get_all()) |
5170 | 285 buddy_ticker_show(); |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
286 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
287 return TRUE; |
3391 | 288 } |
289 | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
290 static gboolean |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
291 plugin_unload(GaimPlugin *plugin) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
292 { |
6122 | 293 TickerData *td; |
294 | |
295 while (tickerbuds) { | |
296 td = tickerbuds->data; | |
5186 | 297 tickerbuds = g_list_delete_link(tickerbuds, tickerbuds); |
6122 | 298 if (td->timeout != 0) |
299 g_source_remove(td->timeout); | |
300 g_free(td); | |
5185 | 301 } |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
302 |
5984
c55b32640690
[gaim-migrate @ 6432]
Christian Hammond <chipx86@chipx86.com>
parents:
5983
diff
changeset
|
303 if (tickerwindow != NULL) { |
5983
e0be64ced3d7
[gaim-migrate @ 6431]
Christian Hammond <chipx86@chipx86.com>
parents:
5920
diff
changeset
|
304 gtk_widget_destroy(tickerwindow); |
5984
c55b32640690
[gaim-migrate @ 6432]
Christian Hammond <chipx86@chipx86.com>
parents:
5983
diff
changeset
|
305 tickerwindow = NULL; |
c55b32640690
[gaim-migrate @ 6432]
Christian Hammond <chipx86@chipx86.com>
parents:
5983
diff
changeset
|
306 } |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
307 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
308 return TRUE; |
3391 | 309 } |
5170 | 310 |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
311 static GaimGtkPluginUiInfo ui_info = |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
312 { |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
313 NULL /**< get_config_frame */ |
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 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
316 static GaimPluginInfo info = |
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 2, /**< api_version */ |
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 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
339 &ui_info, /**< ui_info */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
340 NULL /**< extra_info */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
341 }; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
342 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
343 static void |
5920
7d385de2f9cd
[gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents:
5873
diff
changeset
|
344 init_plugin(GaimPlugin *plugin) |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
345 { |
3551 | 346 } |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
347 |
6063 | 348 GAIM_INIT_PLUGIN(ticker, init_plugin, info) |