Mercurial > pidgin
annotate plugins/ticker/ticker.c @ 5872:059d95c67cda
[gaim-migrate @ 6304]
The legendary Header File Cleanup! Files now only include what they need.
This should reduce the number of files that must recompile when a header
file changes. It's a lot nicer. Trust me on it. I also added a couple new
header files. I hope I didn't break TOO much!
committer: Tailor Script <tailor@pidgin.im>
| author | Christian Hammond <chipx86@chipx86.com> |
|---|---|
| date | Sat, 14 Jun 2003 23:21:02 +0000 |
| parents | eeba9205dd0f |
| children | a18e88c4dace |
| rev | line source |
|---|---|
| 3391 | 1 /* GTK - The GIMP Toolkit |
| 2 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald | |
| 3 * | |
| 4 * This library is free software; you can redistribute it and/or | |
| 5 * modify it under the terms of the GNU Library General Public | |
| 6 * License as published by the Free Software Foundation; either | |
| 7 * version 2 of the License, or (at your option) any later version. | |
| 8 * | |
| 9 * This library is distributed in the hope that it will be useful, | |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 12 * Library General Public License for more details. | |
| 13 * | |
| 14 * You should have received a copy of the GNU Library General Public | |
| 15 * License along with this library; if not, write to the | |
| 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
| 17 * Boston, MA 02111-1307, USA. | |
| 18 */ | |
| 19 | |
| 20 /* | |
| 21 * ticker.c -- Syd Logan, Summer 2000 | |
| 22 * pluginized- Sean Egan, Summer 2002 | |
| 23 */ | |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
24 #include "internal.h" |
| 3391 | 25 |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
26 #include "blist.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
27 #include "conversation.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
28 #include "debug.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
29 #include "prpl.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
30 |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
31 #include "gtkblist.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
32 #include "gtkplugin.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
33 |
| 3391 | 34 #include "gaim.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 "gtkticker.h" |
| 3391 | 37 |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
38 #define TICKER_PLUGIN_ID "gtk-ticker" |
| 3867 | 39 |
| 3391 | 40 static GtkWidget *tickerwindow = NULL; |
| 41 static GtkWidget *ticker; | |
| 42 | |
| 43 typedef struct { | |
| 5170 | 44 struct buddy *buddy; |
| 3391 | 45 GtkWidget *ebox; |
| 46 GtkWidget *label; | |
| 5170 | 47 GtkWidget *icon; |
| 3391 | 48 } TickerData; |
| 49 | |
| 5170 | 50 GList *tickerbuds = NULL; |
| 3391 | 51 |
| 5172 | 52 static gboolean buddy_ticker_destroy_window(GtkWidget *window, |
| 53 GdkEventAny *event, gpointer data) { | |
| 54 if(window) | |
| 55 gtk_widget_hide(window); | |
| 56 | |
| 57 return TRUE; /* don't actually destroy the window */ | |
| 3391 | 58 } |
| 59 | |
| 5170 | 60 static void buddy_ticker_create_window() { |
| 61 if(tickerwindow) { | |
| 62 gtk_widget_show(tickerwindow); | |
| 63 return; | |
| 64 } | |
| 3391 | 65 |
| 5170 | 66 tickerwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
| 5286 | 67 gtk_window_set_default_size(GTK_WINDOW(tickerwindow), 500, -1); |
| 5172 | 68 g_signal_connect(G_OBJECT(tickerwindow), "delete_event", |
| 5170 | 69 G_CALLBACK (buddy_ticker_destroy_window), NULL); |
| 70 gtk_window_set_title (GTK_WINDOW(tickerwindow), _("Buddy Ticker")); | |
| 4850 | 71 gtk_window_set_role (GTK_WINDOW(tickerwindow), "ticker"); |
| 3391 | 72 |
| 4850 | 73 ticker = gtk_ticker_new(); |
| 5170 | 74 gtk_ticker_set_spacing(GTK_TICKER(ticker), 20); |
| 75 gtk_container_add(GTK_CONTAINER(tickerwindow), ticker); | |
| 76 gtk_ticker_set_interval(GTK_TICKER(ticker), 500); | |
| 77 gtk_ticker_set_scootch(GTK_TICKER(ticker), 10); | |
| 78 gtk_ticker_start_scroll(GTK_TICKER(ticker)); | |
| 5286 | 79 gtk_widget_set_size_request(ticker, 1, -1); |
| 3391 | 80 |
| 5170 | 81 gtk_widget_show_all(tickerwindow); |
| 3391 | 82 } |
| 83 | |
| 5170 | 84 static gboolean buddy_click_cb(GtkWidget *widget, GdkEventButton *event, gpointer user_data) { |
| 85 struct buddy *b = user_data; | |
| 4850 | 86 |
| 5170 | 87 gaim_conversation_new(GAIM_CONV_IM, b->account, b->name); |
| 3391 | 88 return TRUE; |
| 89 } | |
| 90 | |
| 5170 | 91 static TickerData *buddy_ticker_find_buddy(struct buddy *b) { |
| 92 GList *tb; | |
| 93 for(tb = tickerbuds; tb; tb = tb->next) { | |
| 94 TickerData *td = tb->data; | |
| 95 if(td->buddy == b) | |
| 96 return td; | |
| 97 } | |
| 98 return NULL; | |
| 99 } | |
| 100 | |
| 101 static void buddy_ticker_set_pixmap(struct buddy *b) { | |
| 102 TickerData *td = buddy_ticker_find_buddy(b); | |
| 103 GdkPixbuf *pixbuf; | |
| 3391 | 104 |
| 5170 | 105 if(!td) |
| 3391 | 106 return; |
| 5170 | 107 |
| 108 if(!td->icon) | |
| 109 td->icon = gtk_image_new(); | |
| 3391 | 110 |
| 5234 | 111 pixbuf = gaim_gtk_blist_get_status_icon((GaimBlistNode*)b, |
| 112 GAIM_STATUS_ICON_SMALL); | |
| 5170 | 113 gtk_image_set_from_pixbuf(GTK_IMAGE(td->icon), pixbuf); |
| 114 g_object_unref(G_OBJECT(pixbuf)); | |
| 115 } | |
| 116 | |
| 117 static void buddy_ticker_add_buddy(struct buddy *b) { | |
| 118 GtkWidget *hbox; | |
| 119 TickerData *td; | |
| 120 | |
| 121 buddy_ticker_create_window(); | |
| 5172 | 122 |
| 3391 | 123 if (!ticker) |
| 124 return; | |
| 125 | |
| 5170 | 126 if(buddy_ticker_find_buddy(b)) |
| 3391 | 127 return; |
| 128 | |
| 5170 | 129 td = g_new0(TickerData, 1); |
| 130 td->buddy = b; | |
| 131 tickerbuds = g_list_append(tickerbuds, td); | |
| 3391 | 132 |
| 5170 | 133 td->ebox = gtk_event_box_new(); |
| 134 gtk_ticker_add(GTK_TICKER(ticker), td->ebox); | |
| 135 hbox = gtk_hbox_new(FALSE, 0); | |
| 136 gtk_container_add(GTK_CONTAINER(td->ebox), hbox); | |
| 137 buddy_ticker_set_pixmap(b); | |
| 138 gtk_box_pack_start(GTK_BOX(hbox), td->icon, FALSE, FALSE, 5); | |
| 3391 | 139 |
| 5170 | 140 g_signal_connect(G_OBJECT(td->ebox), "button-press-event", |
| 141 G_CALLBACK(buddy_click_cb), b); | |
| 3391 | 142 |
| 5170 | 143 td->label = gtk_label_new(gaim_get_buddy_alias(b)); |
| 144 gtk_box_pack_start(GTK_BOX(hbox), td->label, FALSE, FALSE, 5); | |
| 145 | |
| 146 gtk_widget_show_all(td->ebox); | |
| 147 gtk_widget_show(tickerwindow); | |
| 3391 | 148 } |
| 149 | |
| 5170 | 150 static void buddy_ticker_remove_buddy(struct buddy *b) { |
| 151 TickerData *td = buddy_ticker_find_buddy(b); | |
| 3391 | 152 |
| 5170 | 153 if (!td) |
| 154 return; | |
| 3391 | 155 |
| 5172 | 156 /* pop up the ticker window again */ |
| 157 buddy_ticker_create_window(); | |
| 158 | |
| 5170 | 159 gtk_ticker_remove(GTK_TICKER(ticker), td->ebox); |
| 160 tickerbuds = g_list_remove(tickerbuds, td); | |
| 161 g_free(td); | |
| 3391 | 162 } |
| 163 | |
| 5170 | 164 static void buddy_ticker_show() |
| 3391 | 165 { |
| 5170 | 166 struct gaim_buddy_list *list = gaim_get_blist(); |
| 167 GaimBlistNode *gnode, *bnode; | |
| 168 struct buddy *b; | |
| 3391 | 169 |
| 5170 | 170 if(!list) |
| 171 return; | |
| 3391 | 172 |
| 5170 | 173 for(gnode = list->root; gnode; gnode = gnode->next) { |
| 174 if(!GAIM_BLIST_NODE_IS_GROUP(gnode)) | |
| 175 continue; | |
| 176 for(bnode = gnode->child; bnode; bnode = bnode->next) { | |
| 177 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) | |
| 178 continue; | |
| 179 b = (struct buddy *)bnode; | |
| 180 if(GAIM_BUDDY_IS_ONLINE(b)) | |
| 181 buddy_ticker_add_buddy(b); | |
| 3391 | 182 } |
| 183 } | |
| 184 } | |
| 185 | |
|
5587
1c55b1540e18
[gaim-migrate @ 5991]
Christian Hammond <chipx86@chipx86.com>
parents:
5286
diff
changeset
|
186 void signon_cb(GaimConnection *gc, char *who) { |
| 4850 | 187 struct buddy *b = gaim_find_buddy(gc->account, who); |
| 5170 | 188 if(buddy_ticker_find_buddy(b)) |
| 189 buddy_ticker_set_pixmap(b); | |
| 190 else | |
| 191 buddy_ticker_add_buddy(b); | |
| 3391 | 192 } |
| 193 | |
|
5587
1c55b1540e18
[gaim-migrate @ 5991]
Christian Hammond <chipx86@chipx86.com>
parents:
5286
diff
changeset
|
194 void signoff_cb(GaimConnection *gc) { |
| 5607 | 195 if (!gaim_connections_get_all()) { |
| 5185 | 196 while(tickerbuds) { |
| 197 g_free(tickerbuds->data); | |
| 198 tickerbuds = g_list_delete_link(tickerbuds, tickerbuds); | |
| 199 } | |
| 3391 | 200 gtk_widget_destroy(tickerwindow); |
| 201 tickerwindow = NULL; | |
| 202 ticker = NULL; | |
| 5185 | 203 } else { |
| 204 GList *t = tickerbuds; | |
| 205 while(t) { | |
| 206 TickerData *td = t->data; | |
| 207 t = t->next; | |
| 208 if(td->buddy->account == gc->account) { | |
| 209 g_free(td); | |
| 210 tickerbuds = g_list_remove(tickerbuds, td); | |
| 211 } | |
| 212 } | |
| 3391 | 213 } |
| 214 } | |
| 215 | |
|
5587
1c55b1540e18
[gaim-migrate @ 5991]
Christian Hammond <chipx86@chipx86.com>
parents:
5286
diff
changeset
|
216 void buddy_signoff_cb(GaimConnection *gc, char *who) { |
| 5170 | 217 struct buddy *b = gaim_find_buddy(gc->account, who); |
| 218 | |
| 219 buddy_ticker_remove_buddy(b); | |
| 5185 | 220 if(!tickerbuds) |
| 221 gtk_widget_hide(tickerwindow); | |
| 3391 | 222 } |
| 223 | |
|
5587
1c55b1540e18
[gaim-migrate @ 5991]
Christian Hammond <chipx86@chipx86.com>
parents:
5286
diff
changeset
|
224 void away_cb(GaimConnection *gc, char *who) { |
| 4850 | 225 struct buddy *b = gaim_find_buddy(gc->account, who); |
| 5170 | 226 if(buddy_ticker_find_buddy(b)) |
| 227 buddy_ticker_set_pixmap(b); | |
| 228 else | |
| 229 buddy_ticker_add_buddy(b); | |
| 3391 | 230 } |
| 231 | |
| 3630 | 232 /* |
| 233 * EXPORTED FUNCTIONS | |
| 234 */ | |
| 235 | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
236 static gboolean |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
237 plugin_load(GaimPlugin *plugin) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
238 { |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
239 gaim_signal_connect(plugin, event_buddy_signon, signon_cb, NULL); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
240 gaim_signal_connect(plugin, event_signoff, signoff_cb, NULL); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
241 gaim_signal_connect(plugin, event_buddy_signoff, buddy_signoff_cb, NULL); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
242 gaim_signal_connect(plugin, event_buddy_away, away_cb, NULL); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
243 gaim_signal_connect(plugin, event_buddy_back, away_cb, NULL); |
| 3391 | 244 |
| 5607 | 245 if (gaim_connections_get_all()) |
| 5170 | 246 buddy_ticker_show(); |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
247 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
248 return TRUE; |
| 3391 | 249 } |
| 250 | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
251 static gboolean |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
252 plugin_unload(GaimPlugin *plugin) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
253 { |
| 5185 | 254 while(tickerbuds) { |
| 255 g_free(tickerbuds->data); | |
| 5186 | 256 tickerbuds = g_list_delete_link(tickerbuds, tickerbuds); |
| 5185 | 257 } |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
258 |
| 5181 | 259 gtk_widget_destroy(tickerwindow); |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
260 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
261 return TRUE; |
| 3391 | 262 } |
| 5170 | 263 |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
264 static GaimGtkPluginUiInfo ui_info = |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
265 { |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
266 NULL /**< get_config_frame */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
267 }; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
268 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
269 static GaimPluginInfo info = |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
270 { |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
271 2, /**< api_version */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
272 GAIM_PLUGIN_STANDARD, /**< type */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
273 GAIM_GTK_PLUGIN_TYPE, /**< ui_requirement */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
274 0, /**< flags */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
275 NULL, /**< dependencies */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
276 GAIM_PRIORITY_DEFAULT, /**< priority */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
277 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
278 TICKER_PLUGIN_ID, /**< id */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
279 N_("Buddy Ticker"), /**< name */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
280 VERSION, /**< version */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
281 /** summary */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
282 N_("A horizontal scrolling version of the buddy list."), |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
283 /** description */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
284 N_("A horizontal scrolling version of the buddy list."), |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
285 "Syd Logan", /**< author */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
286 WEBSITE, /**< homepage */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
287 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
288 plugin_load, /**< load */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
289 plugin_unload, /**< unload */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
290 NULL, /**< destroy */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
291 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
292 &ui_info, /**< ui_info */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
293 NULL /**< extra_info */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
294 }; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
295 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
296 static void |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
297 __init_plugin(GaimPlugin *plugin) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
298 { |
| 3551 | 299 } |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
300 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
301 GAIM_INIT_PLUGIN(ticker, __init_plugin, info); |
