Mercurial > pidgin.yaz
annotate finch/plugins/gntgf.c @ 31395:a76cf8ecb0c5
Close open requests related to this xfer when the request is canceled
locally. For oscar this includes disconnecting when you have an
incoming transfer request. Without this change Pidgin will crash if
the user tries to interact with the dialog. This change fixes #11666.
Now instead of crashing we'll leak. See the lengthy comment in the
code if anyone wants to fix this.
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Mon, 22 Nov 2010 09:16:49 +0000 |
parents | bd18bb4915ba |
children | a8cc50c2279f |
rev | line source |
---|---|
15818 | 1 /** |
2 * @file gntgf.c Minimal toaster plugin in Gnt. | |
3 * | |
4 * Copyright (C) 2006 Sadrul Habib Chowdhury <sadrul@users.sourceforge.net> | |
5 * | |
6 * This program is free software; you can redistribute it and/or modify | |
7 * it under the terms of the GNU General Public License as published by | |
8 * the Free Software Foundation; either version 2 of the License, or | |
9 * (at your option) any later version. | |
10 * | |
11 * This program is distributed in the hope that it will be useful, | |
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 * GNU General Public License for more details. | |
15 * | |
16 * You should have received a copy of the GNU General Public License | |
17 * along with this program; if not, write to the Free Software | |
19680
44b4e8bd759b
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
17147
diff
changeset
|
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
15818 | 19 */ |
20 | |
21 | |
22 #include "internal.h" | |
23 | |
25124
ea62e934c80b
Fix some more mis-identified plugins, like 3b3526a0...
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
22007
diff
changeset
|
24 #define PLUGIN_STATIC_NAME GntGf |
15818 | 25 |
26 #define PREFS_PREFIX "/plugins/gnt/gntgf" | |
27 #define PREFS_EVENT PREFS_PREFIX "/events" | |
28 #define PREFS_EVENT_SIGNONF PREFS_EVENT "/signonf" | |
29 #define PREFS_EVENT_IM_MSG PREFS_EVENT "/immsg" | |
30 #define PREFS_EVENT_CHAT_MSG PREFS_EVENT "/chatmsg" | |
31 #define PREFS_EVENT_CHAT_NICK PREFS_EVENT "/chatnick" | |
32 #define PREFS_BEEP PREFS_PREFIX "/beep" | |
33 | |
34 #define MAX_COLS 3 | |
35 | |
36 #ifdef HAVE_X11 | |
37 #define PREFS_URGENT PREFS_PREFIX "/urgent" | |
38 | |
39 #include <X11/Xlib.h> | |
40 #include <X11/Xutil.h> | |
41 #endif | |
42 | |
43 #include <glib.h> | |
44 | |
45 #include <plugin.h> | |
46 #include <version.h> | |
47 #include <blist.h> | |
48 #include <conversation.h> | |
49 #include <debug.h> | |
25877
bd18bb4915ba
*** Plucked rev 143e16e9 (sadrul@pidgin.im):
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25124
diff
changeset
|
50 #include <eventloop.h> |
15818 | 51 #include <util.h> |
52 | |
53 #include <gnt.h> | |
54 #include <gntbox.h> | |
55 #include <gntbutton.h> | |
56 #include <gntcheckbox.h> | |
57 #include <gntlabel.h> | |
58 #include <gnttree.h> | |
59 | |
17147
e22968d33131
Do not show the popup for focused conversations.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16677
diff
changeset
|
60 #include "gntplugin.h" |
e22968d33131
Do not show the popup for focused conversations.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16677
diff
changeset
|
61 #include "gntconv.h" |
15818 | 62 |
63 typedef struct | |
64 { | |
65 GntWidget *window; | |
66 int timer; | |
67 int column; | |
68 } GntToast; | |
69 | |
70 static GList *toasters; | |
71 static int gpsy[MAX_COLS]; | |
72 static int gpsw[MAX_COLS]; | |
73 | |
74 static void | |
75 destroy_toaster(GntToast *toast) | |
76 { | |
77 toasters = g_list_remove(toasters, toast); | |
78 gnt_widget_destroy(toast->window); | |
25877
bd18bb4915ba
*** Plucked rev 143e16e9 (sadrul@pidgin.im):
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25124
diff
changeset
|
79 purple_timeout_remove(toast->timer); |
15818 | 80 g_free(toast); |
81 } | |
82 | |
83 static gboolean | |
84 remove_toaster(GntToast *toast) | |
85 { | |
86 GList *iter; | |
87 int h; | |
88 int col; | |
89 int nwin[MAX_COLS]; | |
90 | |
91 gnt_widget_get_size(toast->window, NULL, &h); | |
92 gpsy[toast->column] -= h; | |
93 col = toast->column; | |
94 | |
95 memset(&nwin, 0, sizeof(nwin)); | |
96 destroy_toaster(toast); | |
97 | |
98 for (iter = toasters; iter; iter = iter->next) | |
99 { | |
100 int x, y; | |
101 toast = iter->data; | |
102 nwin[toast->column]++; | |
103 if (toast->column != col) continue; | |
104 gnt_widget_get_position(toast->window, &x, &y); | |
105 y += h; | |
106 gnt_screen_move_widget(toast->window, x, y); | |
107 } | |
108 | |
109 if (nwin[col] == 0) | |
110 gpsw[col] = 0; | |
111 | |
112 return FALSE; | |
113 } | |
114 | |
115 #ifdef HAVE_X11 | |
16320
94843d812e69
Gracefully do nothing if the WINDOWID is invalid. And plug a leak, thanks to deryni.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15864
diff
changeset
|
116 static int |
94843d812e69
Gracefully do nothing if the WINDOWID is invalid. And plug a leak, thanks to deryni.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15864
diff
changeset
|
117 error_handler(Display *dpy, XErrorEvent *error) |
94843d812e69
Gracefully do nothing if the WINDOWID is invalid. And plug a leak, thanks to deryni.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15864
diff
changeset
|
118 { |
94843d812e69
Gracefully do nothing if the WINDOWID is invalid. And plug a leak, thanks to deryni.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15864
diff
changeset
|
119 char buffer[1024]; |
94843d812e69
Gracefully do nothing if the WINDOWID is invalid. And plug a leak, thanks to deryni.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15864
diff
changeset
|
120 XGetErrorText(dpy, error->error_code, buffer, sizeof(buffer)); |
94843d812e69
Gracefully do nothing if the WINDOWID is invalid. And plug a leak, thanks to deryni.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15864
diff
changeset
|
121 purple_debug_error("gntgf", "Could not set urgent to the window: %s.\n", buffer); |
94843d812e69
Gracefully do nothing if the WINDOWID is invalid. And plug a leak, thanks to deryni.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15864
diff
changeset
|
122 return 0; |
94843d812e69
Gracefully do nothing if the WINDOWID is invalid. And plug a leak, thanks to deryni.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15864
diff
changeset
|
123 } |
94843d812e69
Gracefully do nothing if the WINDOWID is invalid. And plug a leak, thanks to deryni.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15864
diff
changeset
|
124 |
15818 | 125 static void |
22007
c38d72677c8a
Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@wiktel.com>
parents:
21030
diff
changeset
|
126 urgent(void) |
15818 | 127 { |
128 /* This is from deryni/tuomov's urgent_test.c */ | |
129 Display *dpy; | |
130 Window id; | |
131 const char *ids; | |
132 XWMHints *hints; | |
133 | |
134 ids = getenv("WINDOWID"); | |
135 if (ids == NULL) | |
136 return; | |
137 | |
138 id = atoi(ids); | |
139 | |
140 dpy = XOpenDisplay(NULL); | |
141 if (dpy == NULL) | |
142 return; | |
143 | |
16320
94843d812e69
Gracefully do nothing if the WINDOWID is invalid. And plug a leak, thanks to deryni.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15864
diff
changeset
|
144 XSetErrorHandler(error_handler); |
15818 | 145 hints = XGetWMHints(dpy, id); |
16320
94843d812e69
Gracefully do nothing if the WINDOWID is invalid. And plug a leak, thanks to deryni.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15864
diff
changeset
|
146 if (hints) { |
94843d812e69
Gracefully do nothing if the WINDOWID is invalid. And plug a leak, thanks to deryni.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15864
diff
changeset
|
147 hints->flags|=XUrgencyHint; |
94843d812e69
Gracefully do nothing if the WINDOWID is invalid. And plug a leak, thanks to deryni.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15864
diff
changeset
|
148 XSetWMHints(dpy, id, hints); |
94843d812e69
Gracefully do nothing if the WINDOWID is invalid. And plug a leak, thanks to deryni.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15864
diff
changeset
|
149 XFree(hints); |
94843d812e69
Gracefully do nothing if the WINDOWID is invalid. And plug a leak, thanks to deryni.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15864
diff
changeset
|
150 } |
94843d812e69
Gracefully do nothing if the WINDOWID is invalid. And plug a leak, thanks to deryni.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15864
diff
changeset
|
151 XSetErrorHandler(NULL); |
15818 | 152 |
153 XFlush(dpy); | |
154 XCloseDisplay(dpy); | |
155 } | |
156 #endif | |
157 | |
158 static void | |
17147
e22968d33131
Do not show the popup for focused conversations.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16677
diff
changeset
|
159 notify(PurpleConversation *conv, const char *fmt, ...) |
15818 | 160 { |
161 GntWidget *window; | |
162 GntToast *toast; | |
163 char *str; | |
164 int h, w, i; | |
165 va_list args; | |
166 | |
15823 | 167 if (purple_prefs_get_bool(PREFS_BEEP)) |
15818 | 168 beep(); |
17147
e22968d33131
Do not show the popup for focused conversations.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16677
diff
changeset
|
169 |
e22968d33131
Do not show the popup for focused conversations.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16677
diff
changeset
|
170 if (conv != NULL) { |
e22968d33131
Do not show the popup for focused conversations.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16677
diff
changeset
|
171 FinchConv *fc = conv->ui_data; |
e22968d33131
Do not show the popup for focused conversations.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16677
diff
changeset
|
172 if (gnt_widget_has_focus(fc->window)) |
e22968d33131
Do not show the popup for focused conversations.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16677
diff
changeset
|
173 return; |
e22968d33131
Do not show the popup for focused conversations.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16677
diff
changeset
|
174 } |
e22968d33131
Do not show the popup for focused conversations.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16677
diff
changeset
|
175 |
15818 | 176 #ifdef HAVE_X11 |
15823 | 177 if (purple_prefs_get_bool(PREFS_URGENT)) |
15818 | 178 urgent(); |
179 #endif | |
180 | |
181 window = gnt_vbox_new(FALSE); | |
182 GNT_WIDGET_SET_FLAGS(window, GNT_WIDGET_TRANSIENT); | |
183 GNT_WIDGET_UNSET_FLAGS(window, GNT_WIDGET_NO_BORDER); | |
184 | |
185 va_start(args, fmt); | |
186 str = g_strdup_vprintf(fmt, args); | |
187 va_end(args); | |
188 | |
189 gnt_box_add_widget(GNT_BOX(window), | |
190 gnt_label_new_with_format(str, GNT_TEXT_FLAG_HIGHLIGHT)); | |
191 | |
192 g_free(str); | |
193 gnt_widget_size_request(window); | |
194 gnt_widget_get_size(window, &w, &h); | |
195 for (i = 0; i < MAX_COLS && gpsy[i] + h >= getmaxy(stdscr) ; ++i) | |
196 ; | |
197 if (i >= MAX_COLS) { | |
15823 | 198 purple_debug_warning("GntGf", "Dude, that's way too many popups\n"); |
15818 | 199 gnt_widget_destroy(window); |
200 return; | |
201 } | |
202 | |
203 toast = g_new0(GntToast, 1); | |
204 toast->window = window; | |
205 toast->column = i; | |
206 gpsy[i] += h; | |
207 if (w > gpsw[i]) { | |
208 if (i == 0) | |
209 gpsw[i] = w; | |
210 else | |
211 gpsw[i] = gpsw[i - 1] + w + 1; | |
212 } | |
213 | |
214 if (i == 0 || (w + gpsw[i - 1] >= getmaxx(stdscr))) { | |
215 /* if it's going to be too far left, overlap. */ | |
216 gnt_widget_set_position(window, getmaxx(stdscr) - w - 1, | |
217 getmaxy(stdscr) - gpsy[i] - 1); | |
218 } else { | |
219 gnt_widget_set_position(window, getmaxx(stdscr) - gpsw[i - 1] - w - 1, | |
220 getmaxy(stdscr) - gpsy[i] - 1); | |
221 } | |
222 gnt_widget_draw(window); | |
223 | |
25877
bd18bb4915ba
*** Plucked rev 143e16e9 (sadrul@pidgin.im):
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25124
diff
changeset
|
224 toast->timer = purple_timeout_add_seconds(4, (GSourceFunc)remove_toaster, toast); |
15818 | 225 toasters = g_list_prepend(toasters, toast); |
226 } | |
227 | |
228 static void | |
15823 | 229 buddy_signed_on(PurpleBuddy *buddy, gpointer null) |
15818 | 230 { |
15823 | 231 if (purple_prefs_get_bool(PREFS_EVENT_SIGNONF)) |
17147
e22968d33131
Do not show the popup for focused conversations.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16677
diff
changeset
|
232 notify(NULL, _("%s just signed on"), purple_buddy_get_alias(buddy)); |
15818 | 233 } |
234 | |
235 static void | |
15823 | 236 buddy_signed_off(PurpleBuddy *buddy, gpointer null) |
15818 | 237 { |
15823 | 238 if (purple_prefs_get_bool(PREFS_EVENT_SIGNONF)) |
17147
e22968d33131
Do not show the popup for focused conversations.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16677
diff
changeset
|
239 notify(NULL, _("%s just signed off"), purple_buddy_get_alias(buddy)); |
15818 | 240 } |
241 | |
242 static void | |
15823 | 243 received_im_msg(PurpleAccount *account, const char *sender, const char *msg, |
244 PurpleConversation *conv, PurpleMessageFlags flags, gpointer null) | |
15818 | 245 { |
15823 | 246 if (purple_prefs_get_bool(PREFS_EVENT_IM_MSG)) |
17147
e22968d33131
Do not show the popup for focused conversations.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16677
diff
changeset
|
247 notify(conv, _("%s sent you a message"), sender); |
15818 | 248 } |
249 | |
250 static void | |
15823 | 251 received_chat_msg(PurpleAccount *account, const char *sender, const char *msg, |
252 PurpleConversation *conv, PurpleMessageFlags flags, gpointer null) | |
15818 | 253 { |
254 const char *nick; | |
255 | |
15823 | 256 if (flags & PURPLE_MESSAGE_WHISPER) |
15818 | 257 return; |
258 | |
15823 | 259 nick = PURPLE_CONV_CHAT(conv)->nick; |
15818 | 260 |
261 if (g_utf8_collate(sender, nick) == 0) | |
262 return; | |
263 | |
15823 | 264 if (purple_prefs_get_bool(PREFS_EVENT_CHAT_NICK) && |
265 (purple_utf8_has_word(msg, nick))) | |
17147
e22968d33131
Do not show the popup for focused conversations.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16677
diff
changeset
|
266 notify(conv, _("%s said your nick in %s"), sender, purple_conversation_get_name(conv)); |
15823 | 267 else if (purple_prefs_get_bool(PREFS_EVENT_CHAT_MSG)) |
17147
e22968d33131
Do not show the popup for focused conversations.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16677
diff
changeset
|
268 notify(conv, _("%s sent a message in %s"), sender, purple_conversation_get_name(conv)); |
15818 | 269 } |
270 | |
271 static gboolean | |
15823 | 272 plugin_load(PurplePlugin *plugin) |
15818 | 273 { |
15823 | 274 purple_signal_connect(purple_blist_get_handle(), "buddy-signed-on", plugin, |
275 PURPLE_CALLBACK(buddy_signed_on), NULL); | |
276 purple_signal_connect(purple_blist_get_handle(), "buddy-signed-off", plugin, | |
277 PURPLE_CALLBACK(buddy_signed_off), NULL); | |
278 purple_signal_connect(purple_conversations_get_handle(), "received-im-msg", plugin, | |
279 PURPLE_CALLBACK(received_im_msg), NULL); | |
280 purple_signal_connect(purple_conversations_get_handle(), "received-chat-msg", plugin, | |
281 PURPLE_CALLBACK(received_chat_msg), NULL); | |
15818 | 282 |
283 memset(&gpsy, 0, sizeof(gpsy)); | |
284 memset(&gpsw, 0, sizeof(gpsw)); | |
285 | |
286 return TRUE; | |
287 } | |
288 | |
289 static gboolean | |
15823 | 290 plugin_unload(PurplePlugin *plugin) |
15818 | 291 { |
292 while (toasters) | |
293 { | |
294 GntToast *toast = toasters->data; | |
295 destroy_toaster(toast); | |
296 } | |
297 return TRUE; | |
298 } | |
299 | |
300 static struct | |
301 { | |
302 char *pref; | |
303 char *display; | |
304 } prefs[] = | |
305 { | |
306 {PREFS_EVENT_SIGNONF, N_("Buddy signs on/off")}, | |
307 {PREFS_EVENT_IM_MSG, N_("You receive an IM")}, | |
308 {PREFS_EVENT_CHAT_MSG, N_("Someone speaks in a chat")}, | |
309 {PREFS_EVENT_CHAT_NICK, N_("Someone says your name in a chat")}, | |
310 {NULL, NULL} | |
311 }; | |
312 | |
313 static void | |
314 pref_toggled(GntTree *tree, char *key, gpointer null) | |
315 { | |
15823 | 316 purple_prefs_set_bool(key, gnt_tree_get_choice(tree, key)); |
15818 | 317 } |
318 | |
319 static void | |
320 toggle_option(GntCheckBox *check, gpointer str) | |
321 { | |
15823 | 322 purple_prefs_set_bool(str, gnt_check_box_get_checked(check)); |
15818 | 323 } |
324 | |
325 static GntWidget * | |
22007
c38d72677c8a
Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@wiktel.com>
parents:
21030
diff
changeset
|
326 config_frame(void) |
15818 | 327 { |
328 GntWidget *window, *tree, *check; | |
329 int i; | |
330 | |
331 window = gnt_vbox_new(FALSE); | |
332 gnt_box_set_pad(GNT_BOX(window), 0); | |
333 gnt_box_set_alignment(GNT_BOX(window), GNT_ALIGN_MID); | |
334 gnt_box_set_fill(GNT_BOX(window), TRUE); | |
335 | |
336 gnt_box_add_widget(GNT_BOX(window), | |
337 gnt_label_new(_("Notify with a toaster when"))); | |
338 | |
339 tree = gnt_tree_new(); | |
340 gnt_box_add_widget(GNT_BOX(window), tree); | |
341 | |
342 for (i = 0; prefs[i].pref; i++) | |
343 { | |
344 gnt_tree_add_choice(GNT_TREE(tree), prefs[i].pref, | |
345 gnt_tree_create_row(GNT_TREE(tree), prefs[i].display), NULL, NULL); | |
346 gnt_tree_set_choice(GNT_TREE(tree), prefs[i].pref, | |
15823 | 347 purple_prefs_get_bool(prefs[i].pref)); |
15818 | 348 } |
349 gnt_tree_set_col_width(GNT_TREE(tree), 0, 40); | |
350 g_signal_connect(G_OBJECT(tree), "toggled", G_CALLBACK(pref_toggled), NULL); | |
351 | |
352 check = gnt_check_box_new(_("Beep too!")); | |
15823 | 353 gnt_check_box_set_checked(GNT_CHECK_BOX(check), purple_prefs_get_bool(PREFS_BEEP)); |
15818 | 354 g_signal_connect(G_OBJECT(check), "toggled", G_CALLBACK(toggle_option), PREFS_BEEP); |
355 gnt_box_add_widget(GNT_BOX(window), check); | |
356 | |
357 #ifdef HAVE_X11 | |
358 check = gnt_check_box_new(_("Set URGENT for the terminal window.")); | |
15823 | 359 gnt_check_box_set_checked(GNT_CHECK_BOX(check), purple_prefs_get_bool(PREFS_URGENT)); |
15818 | 360 g_signal_connect(G_OBJECT(check), "toggled", G_CALLBACK(toggle_option), PREFS_URGENT); |
361 gnt_box_add_widget(GNT_BOX(window), check); | |
362 #endif | |
363 | |
364 return window; | |
365 } | |
366 | |
15823 | 367 static PurplePluginInfo info = |
15818 | 368 { |
15823 | 369 PURPLE_PLUGIN_MAGIC, |
370 PURPLE_MAJOR_VERSION, | |
371 PURPLE_MINOR_VERSION, | |
372 PURPLE_PLUGIN_STANDARD, | |
373 FINCH_PLUGIN_TYPE, | |
15818 | 374 0, |
375 NULL, | |
15823 | 376 PURPLE_PRIORITY_DEFAULT, |
15818 | 377 "gntgf", |
378 N_("GntGf"), | |
21030
3cc856ca2338
Add a --with-extraversion option to ./configure so packagers can fine tune
Stu Tomlinson <stu@nosnilmot.com>
parents:
19680
diff
changeset
|
379 DISPLAY_VERSION, |
15818 | 380 N_("Toaster plugin"), |
381 N_("Toaster plugin"), | |
382 "Sadrul H Chowdhury <sadrul@users.sourceforge.net>", | |
15864
4c707efebc0c
Use PURPLE_WEBSITE instead of listing the website directly (which was wrong because of the sed).
Richard Laager <rlaager@wiktel.com>
parents:
15823
diff
changeset
|
383 PURPLE_WEBSITE, |
15818 | 384 plugin_load, |
385 plugin_unload, | |
386 NULL, | |
387 config_frame, | |
388 NULL, | |
389 NULL, | |
16677
30829e806dae
And finch is up to date
Gary Kramlich <grim@reaperworld.com>
parents:
16320
diff
changeset
|
390 NULL, |
30829e806dae
And finch is up to date
Gary Kramlich <grim@reaperworld.com>
parents:
16320
diff
changeset
|
391 |
30829e806dae
And finch is up to date
Gary Kramlich <grim@reaperworld.com>
parents:
16320
diff
changeset
|
392 /* padding */ |
30829e806dae
And finch is up to date
Gary Kramlich <grim@reaperworld.com>
parents:
16320
diff
changeset
|
393 NULL, |
30829e806dae
And finch is up to date
Gary Kramlich <grim@reaperworld.com>
parents:
16320
diff
changeset
|
394 NULL, |
30829e806dae
And finch is up to date
Gary Kramlich <grim@reaperworld.com>
parents:
16320
diff
changeset
|
395 NULL, |
15818 | 396 NULL |
397 }; | |
398 | |
399 static void | |
15823 | 400 init_plugin(PurplePlugin *plugin) |
15818 | 401 { |
15823 | 402 purple_prefs_add_none("/plugins"); |
403 purple_prefs_add_none("/plugins/gnt"); | |
15818 | 404 |
15823 | 405 purple_prefs_add_none("/plugins/gnt/gntgf"); |
406 purple_prefs_add_none(PREFS_EVENT); | |
15818 | 407 |
15823 | 408 purple_prefs_add_bool(PREFS_EVENT_SIGNONF, TRUE); |
409 purple_prefs_add_bool(PREFS_EVENT_IM_MSG, TRUE); | |
410 purple_prefs_add_bool(PREFS_EVENT_CHAT_MSG, TRUE); | |
411 purple_prefs_add_bool(PREFS_EVENT_CHAT_NICK, TRUE); | |
15818 | 412 |
15823 | 413 purple_prefs_add_bool(PREFS_BEEP, TRUE); |
15818 | 414 #ifdef HAVE_X11 |
15823 | 415 purple_prefs_add_bool(PREFS_URGENT, FALSE); |
15818 | 416 #endif |
417 } | |
418 | |
15823 | 419 PURPLE_INIT_PLUGIN(PLUGIN_STATIC_NAME, init_plugin, info) |