Tue, 05 Aug 2003 10:55:04 +0000
[gaim-migrate @ 6876]
I think I touched almost every file. Here's what happened.
I started off fixing up the Makefile.am and configure.ac files to help with
the core/UI split some. Then I got annoyed with the
build_{allow,deny}_list() functions that everything used, and decided to
core/UI split privacy. While doing that, I decided to redesign the dialog.
So now, a lot has changed, but not really so much. Just that most files
got affected.
Oh yeah, and the UI stuff was taken out of internal.h and moved to
gtkinternal.h. If you use this, please be aware of this change.
|
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" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
34 | |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
35 | #include "gtkblist.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
36 | #include "gtkplugin.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
37 | |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5607
diff
changeset
|
38 | #include "gtkticker.h" |
| 3391 | 39 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
40 | #define TICKER_PLUGIN_ID "gtk-ticker" |
| 3867 | 41 | |
| 3391 | 42 | static GtkWidget *tickerwindow = NULL; |
| 43 | static GtkWidget *ticker; | |
| 44 | ||
| 45 | typedef struct { | |
| 5170 | 46 | struct buddy *buddy; |
| 3391 | 47 | GtkWidget *ebox; |
| 48 | GtkWidget *label; | |
| 5170 | 49 | GtkWidget *icon; |
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
50 | guint timeout; |
| 3391 | 51 | } TickerData; |
| 52 | ||
| 5170 | 53 | GList *tickerbuds = NULL; |
| 3391 | 54 | |
| 5172 | 55 | static gboolean buddy_ticker_destroy_window(GtkWidget *window, |
| 56 | GdkEventAny *event, gpointer data) { | |
| 57 | if(window) | |
| 58 | gtk_widget_hide(window); | |
| 59 | ||
| 60 | return TRUE; /* don't actually destroy the window */ | |
| 3391 | 61 | } |
| 62 | ||
| 5170 | 63 | static void buddy_ticker_create_window() { |
| 64 | if(tickerwindow) { | |
| 65 | gtk_widget_show(tickerwindow); | |
| 66 | return; | |
| 67 | } | |
| 3391 | 68 | |
| 5170 | 69 | tickerwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
|
5286
a35f037e7841
[gaim-migrate @ 5658]
David J. Brigada <brigada@prism.net>
parents:
5234
diff
changeset
|
70 | gtk_window_set_default_size(GTK_WINDOW(tickerwindow), 500, -1); |
| 5172 | 71 | g_signal_connect(G_OBJECT(tickerwindow), "delete_event", |
| 5170 | 72 | G_CALLBACK (buddy_ticker_destroy_window), NULL); |
| 73 | gtk_window_set_title (GTK_WINDOW(tickerwindow), _("Buddy Ticker")); | |
|
4850
ca9d06f1bb54
[gaim-migrate @ 5175]
Mark Doliner <markdoliner@pidgin.im>
parents:
4770
diff
changeset
|
74 | gtk_window_set_role (GTK_WINDOW(tickerwindow), "ticker"); |
| 3391 | 75 | |
|
4850
ca9d06f1bb54
[gaim-migrate @ 5175]
Mark Doliner <markdoliner@pidgin.im>
parents:
4770
diff
changeset
|
76 | ticker = gtk_ticker_new(); |
| 5170 | 77 | gtk_ticker_set_spacing(GTK_TICKER(ticker), 20); |
| 78 | gtk_container_add(GTK_CONTAINER(tickerwindow), ticker); | |
| 79 | gtk_ticker_set_interval(GTK_TICKER(ticker), 500); | |
| 80 | gtk_ticker_set_scootch(GTK_TICKER(ticker), 10); | |
| 81 | gtk_ticker_start_scroll(GTK_TICKER(ticker)); | |
|
5286
a35f037e7841
[gaim-migrate @ 5658]
David J. Brigada <brigada@prism.net>
parents:
5234
diff
changeset
|
82 | gtk_widget_set_size_request(ticker, 1, -1); |
| 3391 | 83 | |
| 5170 | 84 | gtk_widget_show_all(tickerwindow); |
| 3391 | 85 | } |
| 86 | ||
| 5170 | 87 | static gboolean buddy_click_cb(GtkWidget *widget, GdkEventButton *event, gpointer user_data) { |
| 88 | struct buddy *b = user_data; | |
|
4850
ca9d06f1bb54
[gaim-migrate @ 5175]
Mark Doliner <markdoliner@pidgin.im>
parents:
4770
diff
changeset
|
89 | |
| 5170 | 90 | gaim_conversation_new(GAIM_CONV_IM, b->account, b->name); |
| 3391 | 91 | return TRUE; |
| 92 | } | |
| 93 | ||
| 5170 | 94 | static TickerData *buddy_ticker_find_buddy(struct buddy *b) { |
| 95 | GList *tb; | |
| 96 | for(tb = tickerbuds; tb; tb = tb->next) { | |
| 97 | TickerData *td = tb->data; | |
| 98 | if(td->buddy == b) | |
| 99 | return td; | |
| 100 | } | |
| 101 | return NULL; | |
| 102 | } | |
| 103 | ||
| 104 | static void buddy_ticker_set_pixmap(struct buddy *b) { | |
| 105 | TickerData *td = buddy_ticker_find_buddy(b); | |
| 106 | GdkPixbuf *pixbuf; | |
| 3391 | 107 | |
| 5170 | 108 | if(!td) |
| 3391 | 109 | return; |
| 5170 | 110 | |
| 111 | if(!td->icon) | |
| 112 | td->icon = gtk_image_new(); | |
| 3391 | 113 | |
| 5234 | 114 | pixbuf = gaim_gtk_blist_get_status_icon((GaimBlistNode*)b, |
| 115 | GAIM_STATUS_ICON_SMALL); | |
| 5170 | 116 | gtk_image_set_from_pixbuf(GTK_IMAGE(td->icon), pixbuf); |
| 117 | g_object_unref(G_OBJECT(pixbuf)); | |
| 118 | } | |
| 119 | ||
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
120 | static gboolean buddy_ticker_set_pixmap_cb(gpointer data) { |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
121 | TickerData *td = data; |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
122 | |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
123 | 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
|
124 | buddy_ticker_set_pixmap(td->buddy); |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
125 | td->timeout = 0; |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
126 | |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
127 | return FALSE; |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
128 | } |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
129 | |
| 5170 | 130 | static void buddy_ticker_add_buddy(struct buddy *b) { |
| 131 | GtkWidget *hbox; | |
| 132 | TickerData *td; | |
| 133 | ||
| 134 | buddy_ticker_create_window(); | |
| 5172 | 135 | |
| 3391 | 136 | if (!ticker) |
| 137 | return; | |
| 138 | ||
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
139 | if (buddy_ticker_find_buddy(b)) |
| 3391 | 140 | return; |
| 141 | ||
| 5170 | 142 | td = g_new0(TickerData, 1); |
| 143 | td->buddy = b; | |
| 144 | tickerbuds = g_list_append(tickerbuds, td); | |
| 3391 | 145 | |
| 5170 | 146 | td->ebox = gtk_event_box_new(); |
| 147 | gtk_ticker_add(GTK_TICKER(ticker), td->ebox); | |
| 148 | hbox = gtk_hbox_new(FALSE, 0); | |
| 149 | gtk_container_add(GTK_CONTAINER(td->ebox), hbox); | |
| 150 | buddy_ticker_set_pixmap(b); | |
| 151 | gtk_box_pack_start(GTK_BOX(hbox), td->icon, FALSE, FALSE, 5); | |
| 3391 | 152 | |
| 5170 | 153 | g_signal_connect(G_OBJECT(td->ebox), "button-press-event", |
| 154 | G_CALLBACK(buddy_click_cb), b); | |
| 3391 | 155 | |
| 5170 | 156 | td->label = gtk_label_new(gaim_get_buddy_alias(b)); |
| 157 | gtk_box_pack_start(GTK_BOX(hbox), td->label, FALSE, FALSE, 5); | |
| 158 | ||
| 159 | gtk_widget_show_all(td->ebox); | |
| 160 | gtk_widget_show(tickerwindow); | |
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
161 | |
|
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 | * 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
|
164 | * changed). This is somewhat ugly. |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
165 | */ |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
166 | td->timeout = g_timeout_add(11000, buddy_ticker_set_pixmap_cb, td); |
| 3391 | 167 | } |
| 168 | ||
| 5170 | 169 | static void buddy_ticker_remove_buddy(struct buddy *b) { |
| 170 | TickerData *td = buddy_ticker_find_buddy(b); | |
| 3391 | 171 | |
| 5170 | 172 | if (!td) |
| 173 | return; | |
| 3391 | 174 | |
| 5172 | 175 | /* pop up the ticker window again */ |
| 176 | buddy_ticker_create_window(); | |
| 177 | ||
| 5170 | 178 | gtk_ticker_remove(GTK_TICKER(ticker), td->ebox); |
| 179 | tickerbuds = g_list_remove(tickerbuds, td); | |
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
180 | if (td->timeout != 0) |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
181 | g_source_remove(td->timeout); |
| 5170 | 182 | g_free(td); |
| 3391 | 183 | } |
| 184 | ||
| 5170 | 185 | static void buddy_ticker_show() |
| 3391 | 186 | { |
| 5170 | 187 | struct gaim_buddy_list *list = gaim_get_blist(); |
| 188 | GaimBlistNode *gnode, *bnode; | |
| 189 | struct buddy *b; | |
| 3391 | 190 | |
| 5170 | 191 | if(!list) |
| 192 | return; | |
| 3391 | 193 | |
| 5170 | 194 | for(gnode = list->root; gnode; gnode = gnode->next) { |
| 195 | if(!GAIM_BLIST_NODE_IS_GROUP(gnode)) | |
| 196 | continue; | |
| 197 | for(bnode = gnode->child; bnode; bnode = bnode->next) { | |
| 198 | if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) | |
| 199 | continue; | |
| 200 | b = (struct buddy *)bnode; | |
| 201 | if(GAIM_BUDDY_IS_ONLINE(b)) | |
| 202 | buddy_ticker_add_buddy(b); | |
| 3391 | 203 | } |
| 204 | } | |
| 205 | } | |
| 206 | ||
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
207 | void signoff_cb(GaimConnection *gc) { |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
208 | TickerData *td; |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
209 | if (!gaim_connections_get_all()) { |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
210 | while (tickerbuds) { |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
211 | td = tickerbuds->data; |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
212 | tickerbuds = g_list_delete_link(tickerbuds, tickerbuds); |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
213 | if (td->timeout != 0) |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
214 | g_source_remove(td->timeout); |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
215 | g_free(td); |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
216 | } |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
217 | gtk_widget_destroy(tickerwindow); |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
218 | tickerwindow = NULL; |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
219 | ticker = NULL; |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
220 | } else { |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
221 | GList *t = tickerbuds; |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
222 | while (t) { |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
223 | td = t->data; |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
224 | t = t->next; |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
225 | if (td->buddy->account == gc->account) { |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
226 | tickerbuds = g_list_remove(tickerbuds, td); |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
227 | if (td->timeout != 0) |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
228 | g_source_remove(td->timeout); |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
229 | g_free(td); |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
230 | } |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
231 | } |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
232 | } |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
233 | } |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
234 | |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
235 | void buddy_signon_cb(GaimConnection *gc, char *who) { |
|
4850
ca9d06f1bb54
[gaim-migrate @ 5175]
Mark Doliner <markdoliner@pidgin.im>
parents:
4770
diff
changeset
|
236 | struct buddy *b = gaim_find_buddy(gc->account, who); |
| 5170 | 237 | if(buddy_ticker_find_buddy(b)) |
| 238 | buddy_ticker_set_pixmap(b); | |
| 239 | else | |
| 240 | buddy_ticker_add_buddy(b); | |
| 3391 | 241 | } |
| 242 | ||
|
5587
22cb9fe4798a
[gaim-migrate @ 5991]
Christian Hammond <chipx86@chipx86.com>
parents:
5286
diff
changeset
|
243 | void buddy_signoff_cb(GaimConnection *gc, char *who) { |
| 5170 | 244 | struct buddy *b = gaim_find_buddy(gc->account, who); |
| 245 | buddy_ticker_remove_buddy(b); | |
| 5185 | 246 | if(!tickerbuds) |
| 247 | gtk_widget_hide(tickerwindow); | |
| 3391 | 248 | } |
| 249 | ||
|
5587
22cb9fe4798a
[gaim-migrate @ 5991]
Christian Hammond <chipx86@chipx86.com>
parents:
5286
diff
changeset
|
250 | void away_cb(GaimConnection *gc, char *who) { |
|
4850
ca9d06f1bb54
[gaim-migrate @ 5175]
Mark Doliner <markdoliner@pidgin.im>
parents:
4770
diff
changeset
|
251 | struct buddy *b = gaim_find_buddy(gc->account, who); |
| 5170 | 252 | if(buddy_ticker_find_buddy(b)) |
| 253 | buddy_ticker_set_pixmap(b); | |
| 254 | else | |
| 255 | buddy_ticker_add_buddy(b); | |
| 3391 | 256 | } |
| 257 | ||
| 3630 | 258 | /* |
| 259 | * EXPORTED FUNCTIONS | |
| 260 | */ | |
| 261 | ||
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
262 | static gboolean |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
263 | plugin_load(GaimPlugin *plugin) |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
264 | { |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
265 | gaim_signal_connect(plugin, event_signoff, signoff_cb, NULL); |
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
266 | gaim_signal_connect(plugin, event_buddy_signon, buddy_signon_cb, NULL); |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
267 | gaim_signal_connect(plugin, event_buddy_signoff, buddy_signoff_cb, NULL); |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
268 | gaim_signal_connect(plugin, event_buddy_away, away_cb, NULL); |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
269 | gaim_signal_connect(plugin, event_buddy_back, away_cb, NULL); |
| 3391 | 270 | |
| 5607 | 271 | if (gaim_connections_get_all()) |
| 5170 | 272 | buddy_ticker_show(); |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
273 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
274 | return TRUE; |
| 3391 | 275 | } |
| 276 | ||
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
277 | static gboolean |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
278 | plugin_unload(GaimPlugin *plugin) |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
279 | { |
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
280 | TickerData *td; |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
281 | |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
282 | while (tickerbuds) { |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
283 | td = tickerbuds->data; |
| 5186 | 284 | tickerbuds = g_list_delete_link(tickerbuds, tickerbuds); |
|
6122
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
285 | if (td->timeout != 0) |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
286 | g_source_remove(td->timeout); |
|
9fbbcb229460
[gaim-migrate @ 6596]
Mark Doliner <markdoliner@pidgin.im>
parents:
6063
diff
changeset
|
287 | g_free(td); |
| 5185 | 288 | } |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
289 | |
|
5984
a5b22eb728ef
[gaim-migrate @ 6432]
Christian Hammond <chipx86@chipx86.com>
parents:
5983
diff
changeset
|
290 | if (tickerwindow != NULL) { |
|
5983
435a19acf12a
[gaim-migrate @ 6431]
Christian Hammond <chipx86@chipx86.com>
parents:
5920
diff
changeset
|
291 | gtk_widget_destroy(tickerwindow); |
|
5984
a5b22eb728ef
[gaim-migrate @ 6432]
Christian Hammond <chipx86@chipx86.com>
parents:
5983
diff
changeset
|
292 | tickerwindow = NULL; |
|
a5b22eb728ef
[gaim-migrate @ 6432]
Christian Hammond <chipx86@chipx86.com>
parents:
5983
diff
changeset
|
293 | } |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
294 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
295 | return TRUE; |
| 3391 | 296 | } |
| 5170 | 297 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
298 | static GaimGtkPluginUiInfo ui_info = |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
299 | { |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
300 | NULL /**< get_config_frame */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
301 | }; |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
302 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
303 | static GaimPluginInfo info = |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
304 | { |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
305 | 2, /**< api_version */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
306 | GAIM_PLUGIN_STANDARD, /**< type */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
307 | GAIM_GTK_PLUGIN_TYPE, /**< ui_requirement */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
308 | 0, /**< flags */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
309 | NULL, /**< dependencies */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
310 | GAIM_PRIORITY_DEFAULT, /**< priority */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
311 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
312 | TICKER_PLUGIN_ID, /**< id */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
313 | N_("Buddy Ticker"), /**< name */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
314 | VERSION, /**< version */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
315 | /** summary */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
316 | N_("A horizontal scrolling version of the buddy list."), |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
317 | /** description */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
318 | N_("A horizontal scrolling version of the buddy list."), |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
319 | "Syd Logan", /**< author */ |
|
6371
e92b66ee5518
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6122
diff
changeset
|
320 | GAIM_WEBSITE, /**< homepage */ |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
321 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
322 | plugin_load, /**< load */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
323 | plugin_unload, /**< unload */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
324 | NULL, /**< destroy */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
325 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
326 | &ui_info, /**< ui_info */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
327 | NULL /**< extra_info */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
328 | }; |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
329 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
330 | static void |
|
5920
963bfdefee02
[gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents:
5873
diff
changeset
|
331 | init_plugin(GaimPlugin *plugin) |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
332 | { |
| 3551 | 333 | } |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5186
diff
changeset
|
334 | |
| 6063 | 335 | GAIM_INIT_PLUGIN(ticker, init_plugin, info) |