Mercurial > pidgin
annotate plugins/notify.c @ 6488:e5e8d21bd4d8
[gaim-migrate @ 7002]
Some documentation updates. Really nothing great.
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Mon, 18 Aug 2003 10:08:26 +0000 |
parents | 70d5122bc3ff |
children | 7230e5920911 |
rev | line source |
---|---|
6302 | 1 /* |
2 * Gaim buddy notification plugin. | |
3 * | |
4 * Copyright (C) 2000-2001, Eric Warmenhoven (original code) | |
5 * Copyright (C) 2002, Etan Reisner <deryni@eden.rutgers.edu> (rewritten code) | |
6 * Copyright (C) 2003, Christian Hammond (update for changed API) | |
6322 | 7 * Copyright (C) 2003, Brian Tarricone <bjt23@cornell.edu> (mostly rewritten) |
6302 | 8 * Copyright (C) 2003, Mark Doliner (minor cleanup) |
9 * | |
10 * This program is free software; you can redistribute it and/or modify | |
11 * it under the terms of the GNU General Public License as published by | |
12 * the Free Software Foundation; either version 2 of the License, or | |
13 * (at your option) any later version. | |
14 * | |
15 * This program is distributed in the hope that it will be useful, | |
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 * GNU General Public License for more details. | |
3374 | 19 * |
6302 | 20 * You should have received a copy of the GNU General Public License |
21 * along with this program; if not, write to the Free Software | |
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
23 * | |
24 */ | |
25 | |
26 /* | |
27 * From Etan, 2002: | |
28 * -Added config dialog | |
29 * -Added control over notification method | |
30 * -Added control over when to release notification | |
31 * | |
32 * -Added option to get notification for chats also | |
33 * -Cleaned up code | |
34 * -Added option to notify on click as it's own option | |
35 * rather then as what happens when on focus isn't clicked | |
36 * -Added apply button to change the denotification methods for | |
37 * open conversation windows | |
38 * -Fixed apply to conversations, count now keeps count across applies | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
39 * -Fixed(?) memory leak, and in the process fixed some stupidities |
6302 | 40 * -Hit enter when done editing the title string entry box to save it |
3392 | 41 * |
42 * Thanks to Carles Pina i Estany <carles@pinux.info> | |
43 * for count of new messages option | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
44 * |
6302 | 45 * From Brian, 20 July 2003: |
46 * -Use new xml prefs | |
47 * -Better handling of notification states tracking | |
48 * -Better pref change handling | |
49 * -Fixed a possible memleak and possible crash (rare) | |
50 * -Use gtk_window_get_title() rather than gtkwin->title | |
51 * -Other random fixes and cleanups | |
3392 | 52 */ |
53 | |
6371
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6322
diff
changeset
|
54 #include "gtkinternal.h" |
6302 | 55 |
56 #include "conversation.h" | |
57 #include "debug.h" | |
58 #include "notify.h" | |
59 #include "prefs.h" | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
60 #include "signals.h" |
4202
59751fe608c5
[gaim-migrate @ 4438]
Christian Hammond <chipx86@chipx86.com>
parents:
4165
diff
changeset
|
61 |
6302 | 62 #include "gtkconv.h" |
63 #include "gtkplugin.h" | |
64 #include "gtkutils.h" | |
65 | |
66 #include "gtkplugin.h" | |
67 | |
3428 | 68 #include <string.h> |
69 #include <ctype.h> | |
70 #include <stdlib.h> | |
191 | 71 #include <gtk/gtk.h> |
3385 | 72 #include <X11/Xlib.h> |
3374 | 73 #include <X11/Xutil.h> |
3392 | 74 #include <X11/Xatom.h> |
3374 | 75 #include <gdk/gdkx.h> |
6302 | 76 #include <glib.h> |
3374 | 77 |
6302 | 78 #define NOTIFY_PLUGIN_ID "gtk-x11-notify" |
3710 | 79 |
6302 | 80 #define OPT_TYPE_IM ((guint)0x00000001) |
81 #define OPT_TYPE_CHAT ((guint)0x00000002) | |
82 #define OPT_NOTIFY_FOCUS ((guint)0x00000004) | |
83 #define OPT_NOTIFY_TYPE ((guint)0x00000008) | |
84 #define OPT_NOTIFY_IN_FOCUS ((guint)0x00000010) | |
85 #define OPT_NOTIFY_CLICK ((guint)0x00000020) | |
86 #define OPT_METHOD_STRING ((guint)0x00000040) | |
87 #define OPT_METHOD_QUOTE ((guint)0x00000080) | |
88 #define OPT_METHOD_URGENT ((guint)0x00000100) | |
89 #define OPT_METHOD_COUNT ((guint)0x00000200) | |
90 #define OPT_METHOD_STRING_CHNG ((guint)0x00000400) | |
91 #define STATE_IS_NOTIFIED ((guint)0x80000000) | |
3374 | 92 |
6302 | 93 #define TITLE_STR_BUFSIZE 256 |
94 | |
95 #define GDATASTR "notify-plugin-opts" | |
96 #define GDATASTRCNT "notify-plugin-count" | |
191 | 97 |
5436
ad445074d239
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
98 static GaimPlugin *my_plugin = NULL; |
ad445074d239
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
99 |
6302 | 100 static guint notify_opts = 0; |
101 static gchar title_string[TITLE_STR_BUFSIZE+1]; | |
102 | |
103 /* notification set/unset */ | |
104 static int notify(GaimConversation *c); | |
105 static void unnotify(GaimConversation *c); | |
106 static int unnotify_cb(GtkWidget *widget, gpointer data); | |
107 | |
108 /* gtk widget callbacks for prefs panel */ | |
109 static void options_toggle_cb(GtkWidget *widget, gpointer data); | |
110 static gboolean options_settitle_cb(GtkWidget *w, GdkEventFocus *evt, GtkWidget *entry); | |
111 static void options_toggle_title_cb(GtkWidget *w, GtkWidget *entry); | |
112 static void apply_options(int opt_chng); | |
113 | |
114 /* string functions */ | |
115 static void string_add(GtkWidget *widget); | |
116 static void string_remove(GtkWidget *widget); | |
191 | 117 |
4035 | 118 /* count functions */ |
6302 | 119 static void count_add(GtkWidget *widget); |
120 static void count_remove(GtkWidget *widget); | |
121 | |
4035 | 122 /* quote functions */ |
6302 | 123 static void quote_add(GtkWidget *widget); |
124 static void quote_remove(GtkWidget *widget); | |
125 | |
4035 | 126 /* urgent functions */ |
6302 | 127 static void urgent_add(GaimConversation *c); |
128 static void urgent_remove(GaimConversation *c); | |
3710 | 129 |
6302 | 130 /****************************************/ |
131 /* Begin doing stuff below this line... */ | |
132 /****************************************/ | |
133 | |
134 static int notify(GaimConversation *c) { | |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
135 GaimGtkWindow *gtkwin; |
3710 | 136 Window focus_return; |
4035 | 137 int revert_to_return; |
6302 | 138 guint opts; |
139 gint count; | |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
140 |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
141 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); |
5021 | 142 |
6302 | 143 /* increment message counter */ |
144 count = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(gtkwin->window), GDATASTRCNT)); | |
145 g_object_set_data(G_OBJECT(gtkwin->window), GDATASTRCNT, GINT_TO_POINTER(count+1)); | |
146 | |
147 /* if we aren't doing notifications for this type of convo, bail */ | |
148 if (((gaim_conversation_get_type(c) == GAIM_CONV_IM) && !(notify_opts & OPT_TYPE_IM)) || | |
149 ((gaim_conversation_get_type(c) == GAIM_CONV_CHAT) && !(notify_opts & OPT_TYPE_CHAT))) | |
150 return 0; | |
151 | |
152 XGetInputFocus(GDK_WINDOW_XDISPLAY(gtkwin->window->window), &focus_return, &revert_to_return); | |
5021 | 153 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
154 if ((notify_opts & OPT_NOTIFY_IN_FOCUS) || |
6302 | 155 (focus_return != GDK_WINDOW_XWINDOW(gtkwin->window->window))) { |
156 if (notify_opts & OPT_METHOD_STRING) | |
157 string_add(gtkwin->window); | |
158 if (notify_opts & OPT_METHOD_COUNT) | |
159 count_add(gtkwin->window); | |
160 if (notify_opts & OPT_METHOD_QUOTE) | |
161 quote_add(gtkwin->window); | |
162 if (notify_opts & OPT_METHOD_URGENT) | |
163 urgent_add(c); | |
164 } | |
4203
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
165 |
6302 | 166 opts = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(gtkwin->window), GDATASTR)); |
167 opts |= STATE_IS_NOTIFIED; | |
168 g_object_set_data(G_OBJECT(gtkwin->window), GDATASTR, GINT_TO_POINTER(opts)); | |
4203
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
169 |
6302 | 170 return 0; |
3374 | 171 } |
172 | |
6302 | 173 static void unnotify(GaimConversation *c) { |
174 GaimGtkWindow *gtkwin; | |
175 | |
176 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); | |
177 | |
178 urgent_remove(c); | |
179 quote_remove(GTK_WIDGET(gtkwin->window)); | |
180 count_remove(GTK_WIDGET(gtkwin->window)); | |
181 string_remove(GTK_WIDGET(gtkwin->window)); | |
182 g_object_set_data(G_OBJECT(gtkwin->window), GDATASTR, GINT_TO_POINTER((guint)0)); | |
183 g_object_set_data(G_OBJECT(gtkwin->window), GDATASTRCNT, GINT_TO_POINTER((guint)0)); | |
184 } | |
185 | |
186 static int unnotify_cb(GtkWidget *widget, gpointer data) { | |
187 GaimConversation *c = g_object_get_data(G_OBJECT(widget), "user_data"); | |
188 | |
189 gaim_debug(GAIM_DEBUG_INFO, "notify.c", "in unnotify_cb()\n"); | |
190 | |
191 if (c) | |
192 urgent_remove(c); | |
193 quote_remove(widget); | |
194 count_remove(widget); | |
195 string_remove(widget); | |
196 g_object_set_data(G_OBJECT(widget), GDATASTR, GINT_TO_POINTER((guint)0)); | |
197 g_object_set_data(G_OBJECT(widget), GDATASTRCNT, GINT_TO_POINTER((guint)0)); | |
198 | |
199 return 0; | |
200 } | |
201 | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
202 static gboolean |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
203 chat_recv_im(GaimAccount *account, GaimConversation *conv, char **who, |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
204 char **text) |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
205 { |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
206 if (conv) |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
207 notify(conv); |
3710 | 208 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
209 return FALSE; |
3710 | 210 } |
211 | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
212 static void chat_sent_im(GaimConversation *c, char **text) { |
6302 | 213 if (c) |
214 unnotify(c); | |
3710 | 215 } |
216 | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
217 static gboolean |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
218 im_recv_im(GaimAccount *account, GaimConversation *conv, char **who, |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
219 char **what, int *flags, void *m) |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
220 { |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
221 if (conv) |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
222 notify(conv); |
3710 | 223 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
224 return FALSE; |
3710 | 225 } |
226 | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
227 static void im_sent_im(GaimConversation *conv, char **what, void *m) { |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
228 if (conv) |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
229 unnotify(conv); |
3710 | 230 } |
3392 | 231 |
6302 | 232 static int attach_signals(GaimConversation *c) { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
233 GaimGtkConversation *gtkconv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
234 GaimGtkWindow *gtkwin; |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
235 |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
236 gtkconv = GAIM_GTK_CONVERSATION(c); |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
237 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
238 |
6302 | 239 if (notify_opts & OPT_NOTIFY_FOCUS) { |
240 g_signal_connect(G_OBJECT(gtkwin->window), "focus-in-event", G_CALLBACK(unnotify_cb), NULL); | |
3374 | 241 } |
3710 | 242 |
6302 | 243 if (notify_opts & OPT_NOTIFY_CLICK) { |
244 g_signal_connect(G_OBJECT(gtkwin->window), "button_press_event", G_CALLBACK(unnotify_cb), NULL); | |
245 g_signal_connect_swapped(G_OBJECT(gtkconv->imhtml), "button_press_event", G_CALLBACK(unnotify_cb), G_OBJECT(gtkwin->window)); | |
246 g_signal_connect_swapped(G_OBJECT(gtkconv->entry), "button_press_event", G_CALLBACK(unnotify_cb), G_OBJECT(gtkwin->window)); | |
3374 | 247 } |
248 | |
6302 | 249 if (notify_opts & OPT_NOTIFY_TYPE) { |
250 g_signal_connect_swapped(G_OBJECT(gtkconv->entry), "key-press-event", G_CALLBACK(unnotify_cb), G_OBJECT(gtkwin->window)); | |
191 | 251 } |
4035 | 252 |
3428 | 253 return 0; |
191 | 254 } |
255 | |
6302 | 256 static void detach_signals(GaimConversation *c) { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
257 GaimGtkConversation *gtkconv; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
258 GaimGtkWindow *gtkwin; |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
259 |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
260 gtkconv = GAIM_GTK_CONVERSATION(c); |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
261 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
262 |
6302 | 263 if (notify_opts & OPT_NOTIFY_FOCUS) { |
264 g_signal_handlers_disconnect_by_func(G_OBJECT(gtkwin->window), unnotify_cb, NULL); | |
4203
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
265 } |
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
266 |
6302 | 267 if (notify_opts & OPT_NOTIFY_CLICK) { |
268 g_signal_handlers_disconnect_by_func(G_OBJECT(gtkwin->window), unnotify_cb, NULL); | |
269 g_signal_handlers_disconnect_by_func(G_OBJECT(gtkconv->imhtml), unnotify_cb, gtkwin->window); | |
270 g_signal_handlers_disconnect_by_func(G_OBJECT(gtkconv->entry), unnotify_cb, gtkwin->window); | |
271 } | |
272 | |
273 if (notify_opts & OPT_NOTIFY_TYPE) { | |
274 g_signal_handlers_disconnect_by_func(G_OBJECT(gtkconv->entry), unnotify_cb, gtkwin->window); | |
4203
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
275 } |
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
276 } |
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
277 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
278 static void new_conv(GaimConversation *c) |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
279 { |
6302 | 280 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); |
3710 | 281 |
6302 | 282 g_object_set_data(G_OBJECT(gtkwin->window), GDATASTR, GINT_TO_POINTER((guint)0)); |
283 g_object_set_data(G_OBJECT(gtkwin->window), GDATASTRCNT, GINT_TO_POINTER((guint)0)); | |
284 | |
285 if (c && (notify_opts & OPT_TYPE_IM)) | |
3710 | 286 attach_signals(c); |
287 } | |
288 | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
289 static void chat_join(GaimConversation *c) { |
6302 | 290 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); |
3710 | 291 |
6302 | 292 g_object_set_data(G_OBJECT(gtkwin->window), GDATASTR, GINT_TO_POINTER((guint)0)); |
293 g_object_set_data(G_OBJECT(gtkwin->window), GDATASTRCNT, GINT_TO_POINTER((guint)0)); | |
294 | |
295 if (c && (notify_opts & OPT_TYPE_CHAT)) | |
3710 | 296 attach_signals(c); |
297 } | |
298 | |
6302 | 299 static void string_add(GtkWidget *widget) { |
300 GtkWindow *win = GTK_WINDOW(widget); | |
301 gchar newtitle[256]; | |
302 const gchar *curtitle = gtk_window_get_title(win); | |
303 guint opts = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), GDATASTR)); | |
304 | |
305 gaim_debug(GAIM_DEBUG_INFO, "notify.c", "string_add(): opts=0x%04x\n", opts); | |
306 | |
307 if (opts & OPT_METHOD_STRING) | |
308 return; | |
3374 | 309 |
6302 | 310 if (!strstr(curtitle, title_string)) { |
311 if (opts & OPT_METHOD_COUNT) { | |
312 char *p = strchr(curtitle, ']'); | |
313 int len1; | |
314 if (!p) | |
315 return; | |
316 len1 = p-curtitle+2; | |
317 memcpy(newtitle, curtitle, len1); | |
318 strncpy(newtitle+len1, title_string, sizeof(newtitle)-len1); | |
319 strncpy(newtitle+len1+strlen(title_string), curtitle+len1, | |
320 sizeof(newtitle)-len1-strlen(title_string)); | |
321 } else if (opts & OPT_METHOD_QUOTE) { | |
322 g_snprintf(newtitle, sizeof(newtitle), "\"%s%s", title_string, curtitle+1); | |
323 } else { | |
324 g_snprintf(newtitle, sizeof(newtitle), "%s%s", title_string, curtitle); | |
325 } | |
326 gtk_window_set_title(win, newtitle); | |
327 gaim_debug(GAIM_DEBUG_INFO, "notify.c", "added string to window title\n"); | |
328 } | |
329 | |
330 opts |= OPT_METHOD_STRING; | |
331 g_object_set_data(G_OBJECT(widget), GDATASTR, GINT_TO_POINTER(opts)); | |
3374 | 332 } |
333 | |
6302 | 334 static void string_remove(GtkWidget *widget) { |
335 GtkWindow *win = GTK_WINDOW(widget); | |
336 gchar newtitle[256]; | |
337 const gchar *curtitle; | |
338 guint opts = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), GDATASTR)); | |
3392 | 339 |
6302 | 340 gaim_debug(GAIM_DEBUG_INFO, "notify.c", "string_remove(): opts=0x%04x\n", opts); |
4035 | 341 |
6302 | 342 if (!(opts & OPT_METHOD_STRING)) |
343 return; | |
344 | |
345 curtitle = gtk_window_get_title(win); | |
3392 | 346 |
6302 | 347 if (strstr(curtitle, title_string)) { |
348 if (opts & OPT_METHOD_COUNT) { | |
349 char *p = strchr(curtitle, ']'); | |
350 int len1; | |
351 if (!p) | |
352 return; | |
353 len1 = p-curtitle+2; | |
354 memcpy(newtitle, curtitle, len1); | |
355 strncpy(newtitle+len1, curtitle+len1+strlen(title_string), sizeof(newtitle)-len1); | |
356 } else if (opts & OPT_METHOD_QUOTE) { | |
357 g_snprintf(newtitle, sizeof(newtitle), "\"%s", curtitle+strlen(title_string)+1); | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
358 } else |
6302 | 359 strncpy(newtitle, curtitle+strlen(title_string), sizeof(newtitle)); |
360 } | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
361 |
6302 | 362 gtk_window_set_title(win, newtitle); |
363 gaim_debug(GAIM_DEBUG_INFO, "notify.c", "removed string from window title (title now %s)\n", newtitle); | |
3374 | 364 } |
365 | |
6302 | 366 static void count_add(GtkWidget *widget) { |
4035 | 367 GtkWindow *win = GTK_WINDOW(widget); |
6302 | 368 char newtitle[256]; |
369 const gchar *curtitle; | |
370 guint opts = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), GDATASTR)); | |
371 gint curcount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), GDATASTRCNT)); | |
4035 | 372 |
6302 | 373 gaim_debug(GAIM_DEBUG_INFO, "notify.c", "count_add(): opts=0x%04x\n", opts); |
374 | |
375 if (curcount>0 && (opts & OPT_METHOD_COUNT)) | |
376 count_remove(widget); | |
5021 | 377 |
6302 | 378 curtitle = gtk_window_get_title(win); |
379 if (opts & OPT_METHOD_QUOTE) | |
380 g_snprintf(newtitle, sizeof(newtitle), "\"[%d] %s", curcount, curtitle+1); | |
381 else | |
382 g_snprintf(newtitle, sizeof(newtitle), "[%d] %s", curcount, curtitle); | |
383 gtk_window_set_title(win, newtitle); | |
384 | |
385 gaim_debug(GAIM_DEBUG_INFO, "notify.c", "added count of %d to window\n", curcount); | |
386 | |
387 opts |= OPT_METHOD_COUNT; | |
388 g_object_set_data(G_OBJECT(widget), GDATASTR, GINT_TO_POINTER(opts)); | |
4035 | 389 } |
390 | |
6302 | 391 static void count_remove(GtkWidget *widget) { |
3392 | 392 GtkWindow *win = GTK_WINDOW(widget); |
6302 | 393 char newtitle[256], *p; |
394 const gchar *curtitle; | |
395 guint opts = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), GDATASTR)); | |
396 | |
397 gaim_debug(GAIM_DEBUG_INFO, "notify.c", "count_remove(): opts=0x%04x\n", opts); | |
398 | |
399 if (!(opts & OPT_METHOD_COUNT)) | |
400 return; | |
401 | |
402 curtitle = gtk_window_get_title(win); | |
3392 | 403 |
6302 | 404 p = strchr(curtitle, ']'); |
405 | |
406 if (p) { | |
407 if (opts & OPT_METHOD_QUOTE) | |
408 g_snprintf(newtitle, sizeof(newtitle), "\"%s", p+2); | |
409 else | |
410 g_snprintf(newtitle, sizeof(newtitle), p+2); | |
411 gtk_window_set_title(win, newtitle); | |
412 gaim_debug(GAIM_DEBUG_INFO, "notify.c", "removed count from title (title now %s)\n", newtitle); | |
3392 | 413 } |
6302 | 414 |
415 opts &= ~OPT_METHOD_COUNT; | |
416 g_object_set_data(G_OBJECT(widget), GDATASTR, GINT_TO_POINTER(opts)); | |
3392 | 417 } |
418 | |
6302 | 419 static void quote_add(GtkWidget *widget) { |
4035 | 420 GtkWindow *win = GTK_WINDOW(widget); |
6302 | 421 char newtitle[256]; |
422 const gchar *curtitle = gtk_window_get_title(win); | |
423 guint opts = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), GDATASTR)); | |
424 | |
425 gaim_debug(GAIM_DEBUG_INFO, "notify.c", "quote_add(): opts=0x%04x\n", opts); | |
4035 | 426 |
6302 | 427 if (opts & OPT_METHOD_QUOTE) |
428 return; | |
429 | |
430 if (*curtitle != '\"') { | |
431 g_snprintf(newtitle, sizeof(newtitle), "\"%s\"", curtitle); | |
432 gtk_window_set_title(win, newtitle); | |
433 gaim_debug(GAIM_DEBUG_INFO, "notify.c", "quoted title\n"); | |
4035 | 434 } |
6302 | 435 |
436 opts |= OPT_METHOD_QUOTE; | |
437 g_object_set_data(G_OBJECT(widget), GDATASTR, GINT_TO_POINTER(opts)); | |
4035 | 438 } |
439 | |
6302 | 440 static void quote_remove(GtkWidget *widget) { |
3374 | 441 GtkWindow *win = GTK_WINDOW(widget); |
6302 | 442 char newtitle[512]; |
443 const gchar *curtitle = gtk_window_get_title(win); | |
444 guint opts = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), GDATASTR)); | |
445 | |
446 gaim_debug(GAIM_DEBUG_INFO, "notify.c", "quote_remove(): opts=0x%04x\n", opts); | |
191 | 447 |
6302 | 448 if (!(opts & OPT_METHOD_QUOTE)) |
449 return; | |
450 | |
451 if (*curtitle == '\"' && strlen(curtitle)-2<sizeof(newtitle)) { | |
452 memcpy(newtitle, curtitle+1, strlen(curtitle)-2); | |
453 newtitle[strlen(curtitle)-2] = 0; | |
454 gtk_window_set_title(win, newtitle); | |
455 gaim_debug(GAIM_DEBUG_INFO, "notify.c", "removed quotes from title (title now %s)\n", newtitle); | |
456 } | |
457 | |
458 opts &= ~OPT_METHOD_QUOTE; | |
459 g_object_set_data(G_OBJECT(widget), GDATASTR, GINT_TO_POINTER(opts)); | |
3374 | 460 } |
461 | |
6302 | 462 static void urgent_add(GaimConversation *c) { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
463 GaimGtkWindow *gtkwin; |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
464 XWMHints *hints; |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
465 |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
466 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
467 |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
468 hints = XGetWMHints(GDK_WINDOW_XDISPLAY(gtkwin->window->window), GDK_WINDOW_XWINDOW(gtkwin->window->window)); |
4035 | 469 hints->flags |= XUrgencyHint; |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
470 XSetWMHints(GDK_WINDOW_XDISPLAY(gtkwin->window->window), GDK_WINDOW_XWINDOW(gtkwin->window->window), hints); |
4218 | 471 XFree(hints); |
4035 | 472 } |
473 | |
6302 | 474 static void urgent_remove(GaimConversation *c) { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
475 GaimGtkConversation *gtkconv; |
6302 | 476 const char *convo_placement = gaim_prefs_get_string("/core/conversations/placement"); |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
477 |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
478 gtkconv = GAIM_GTK_CONVERSATION(c); |
4203
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
479 |
6302 | 480 if (!strcmp(convo_placement, "new")) { |
481 GaimGtkWindow *gtkwin; | |
482 XWMHints *hints; | |
483 | |
484 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); | |
485 hints = XGetWMHints(GDK_WINDOW_XDISPLAY(gtkwin->window->window), GDK_WINDOW_XWINDOW(gtkwin->window->window)); | |
486 | |
487 if (hints->flags & XUrgencyHint) { | |
488 hints->flags &= ~XUrgencyHint; | |
489 XSetWMHints(GDK_WINDOW_XDISPLAY(gtkwin->window->window), GDK_WINDOW_XWINDOW(gtkwin->window->window), hints); | |
490 } | |
491 XFree(hints); | |
492 } else { | |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
493 if (gaim_conversation_get_type(c) == GAIM_CONV_CHAT) { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
494 GaimConversation *c = (GaimConversation *)gaim_get_chats()->data; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
495 GaimGtkWindow *gtkwin; |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
496 GdkWindow *win; |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
497 XWMHints *hints; |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
498 |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
499 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
500 |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
501 win = gtkwin->window->window; |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
502 |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
503 hints = XGetWMHints(GDK_WINDOW_XDISPLAY(win), GDK_WINDOW_XWINDOW(win)); |
4203
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
504 if (hints->flags & XUrgencyHint) { |
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
505 hints->flags &= ~XUrgencyHint; |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
506 XSetWMHints(GDK_WINDOW_XDISPLAY(gtkwin->window->window), GDK_WINDOW_XWINDOW(gtkwin->window->window), hints); |
4203
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
507 } |
4218 | 508 XFree(hints); |
4203
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
509 } else { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
510 GaimConversation *c; |
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
511 GaimGtkWindow *gtkwin; |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
512 GdkWindow *win; |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
513 XWMHints *hints; |
3374 | 514 |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
515 c = (GaimConversation *)gaim_get_ims()->data; |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
516 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
517 win = gtkwin->window->window; |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
518 |
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
519 hints = XGetWMHints(GDK_WINDOW_XDISPLAY(win), GDK_WINDOW_XWINDOW(win)); |
4203
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
520 if (hints->flags & XUrgencyHint) { |
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
521 hints->flags &= ~XUrgencyHint; |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
522 XSetWMHints(GDK_WINDOW_XDISPLAY(gtkwin->window->window), GDK_WINDOW_XWINDOW(gtkwin->window->window), hints); |
4203
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
523 } |
4218 | 524 XFree(hints); |
4203
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
525 } |
4035 | 526 } |
3374 | 527 } |
528 | |
6302 | 529 static void save_notify_prefs() { |
6464 | 530 gaim_prefs_set_bool("/plugins/gtk/X11/notify/type_im", notify_opts & OPT_TYPE_IM); |
531 gaim_prefs_set_bool("/plugins/gtk/X11/notify/type_chat", notify_opts & OPT_TYPE_CHAT); | |
532 gaim_prefs_set_bool("/plugins/gtk/X11/notify/type_focused", notify_opts & OPT_NOTIFY_IN_FOCUS); | |
6302 | 533 gaim_prefs_set_bool("/plugins/gtk/X11/notify/notify_focus", notify_opts & OPT_NOTIFY_FOCUS); |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
534 gaim_prefs_set_bool("/plugins/gtk/X11/notify/notify_click", notify_opts & OPT_NOTIFY_CLICK); |
6302 | 535 gaim_prefs_set_bool("/plugins/gtk/X11/notify/notify_type", notify_opts & OPT_NOTIFY_TYPE); |
536 gaim_prefs_set_bool("/plugins/gtk/X11/notify/method_string", notify_opts & OPT_METHOD_STRING); | |
537 gaim_prefs_set_bool("/plugins/gtk/X11/notify/method_quote", notify_opts & OPT_METHOD_QUOTE); | |
538 gaim_prefs_set_bool("/plugins/gtk/X11/notify/method_urgent", notify_opts & OPT_METHOD_URGENT); | |
539 gaim_prefs_set_bool("/plugins/gtk/X11/notify/method_count", notify_opts & OPT_METHOD_COUNT); | |
3374 | 540 |
6302 | 541 gaim_prefs_set_string("/plugins/gtk/X11/notify/title_string", title_string); |
3374 | 542 } |
543 | |
6302 | 544 static void load_notify_prefs() { |
545 notify_opts = 0; | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
546 |
6464 | 547 notify_opts |= (gaim_prefs_get_bool("/plugins/gtk/X11/notify/type_im") ? OPT_TYPE_IM : 0); |
548 notify_opts |= (gaim_prefs_get_bool("/plugins/gtk/X11/notify/type_chat") ? OPT_TYPE_CHAT : 0); | |
549 notify_opts |= (gaim_prefs_get_bool("/plugins/gtk/X11/notify/type_focused") ? OPT_NOTIFY_IN_FOCUS : 0); | |
6302 | 550 notify_opts |= (gaim_prefs_get_bool("/plugins/gtk/X11/notify/notify_focus") ? OPT_NOTIFY_FOCUS : 0); |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
551 notify_opts |= (gaim_prefs_get_bool("/plugins/gtk/X11/notify/notify_click") ? OPT_NOTIFY_CLICK : 0); |
6302 | 552 notify_opts |= (gaim_prefs_get_bool("/plugins/gtk/X11/notify/notify_type") ? OPT_NOTIFY_TYPE : 0); |
553 notify_opts |= (gaim_prefs_get_bool("/plugins/gtk/X11/notify/method_string") ? OPT_METHOD_STRING : 0); | |
554 notify_opts |= (gaim_prefs_get_bool("/plugins/gtk/X11/notify/method_quote") ? OPT_METHOD_QUOTE : 0); | |
555 notify_opts |= (gaim_prefs_get_bool("/plugins/gtk/X11/notify/method_urgent") ? OPT_METHOD_URGENT : 0); | |
556 notify_opts |= (gaim_prefs_get_bool("/plugins/gtk/X11/notify/method_count") ? OPT_METHOD_COUNT : 0); | |
3374 | 557 |
6302 | 558 strncpy(title_string, gaim_prefs_get_string("/plugins/gtk/X11/notify/title_string"), TITLE_STR_BUFSIZE); |
3374 | 559 } |
560 | |
6302 | 561 static void options_toggle_cb(GtkWidget *w, gpointer data) { |
4035 | 562 gint option = GPOINTER_TO_INT(data); |
3374 | 563 |
6302 | 564 notify_opts ^= option; |
565 | |
566 /* save prefs and re-notify the windows */ | |
567 save_notify_prefs(); | |
568 apply_options(option); | |
569 } | |
570 | |
571 static gboolean options_settitle_cb(GtkWidget *w, GdkEventFocus *evt, GtkWidget *entry) { | |
572 GList *cnv = gaim_get_conversations(); | |
573 | |
574 /* first we have to kill all the old strings */ | |
575 while (cnv) { | |
576 GaimConversation *c = (GaimConversation *)cnv->data; | |
577 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); | |
578 string_remove(gtkwin->window); | |
579 cnv = cnv->next; | |
3374 | 580 } |
6302 | 581 |
582 g_snprintf(title_string, sizeof(title_string), gtk_entry_get_text(GTK_ENTRY(entry))); | |
583 | |
584 /* save prefs and re-notify the windows */ | |
585 save_notify_prefs(); | |
586 apply_options(OPT_METHOD_STRING_CHNG); | |
587 | |
588 return FALSE; | |
589 } | |
590 | |
591 static void options_toggle_title_cb(GtkWidget *w, GtkWidget *entry) { | |
592 notify_opts ^= OPT_METHOD_STRING; | |
593 | |
594 if (notify_opts & OPT_METHOD_STRING) | |
595 gtk_widget_set_sensitive(entry, TRUE); | |
596 else | |
597 gtk_widget_set_sensitive(entry, FALSE); | |
3710 | 598 |
599 save_notify_prefs(); | |
6302 | 600 apply_options(OPT_METHOD_STRING); |
3374 | 601 } |
602 | |
6302 | 603 static void apply_options(int opt_chng) { |
4376
2c985a9e994c
[gaim-migrate @ 4642]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
604 GList *cnv = gaim_get_conversations(); |
4035 | 605 |
6302 | 606 /* option-setting handlers should have cleared out all window notifications */ |
607 | |
4035 | 608 while (cnv) { |
6302 | 609 GaimConversation *c = (GaimConversation *)cnv->data; |
610 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); | |
611 guint opts = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(gtkwin->window), GDATASTR)); | |
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
612 |
6302 | 613 /* kill signals */ |
4203
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
614 detach_signals(c); |
4035 | 615 |
6302 | 616 /* |
617 * do a full notify if the option that changed was an OPT_TYPE_* | |
618 * either notify if it was enabled, or unnotify if it was disabled | |
619 */ | |
620 if (opt_chng==OPT_TYPE_IM || opt_chng==OPT_TYPE_CHAT) { | |
621 if ((gaim_conversation_get_type(c)==GAIM_CONV_IM && (notify_opts & OPT_TYPE_IM)) || | |
622 (gaim_conversation_get_type(c)==GAIM_CONV_CHAT && (notify_opts & OPT_TYPE_CHAT))) { | |
623 Window focus_return; | |
624 int revert_to_return; | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
625 |
6302 | 626 XGetInputFocus(GDK_WINDOW_XDISPLAY(gtkwin->window->window), |
627 &focus_return, &revert_to_return); | |
628 if ((notify_opts & OPT_NOTIFY_IN_FOCUS) || | |
629 focus_return != GDK_WINDOW_XWINDOW(gtkwin->window->window)) { | |
630 if (notify_opts & OPT_METHOD_STRING) | |
631 string_add(gtkwin->window); | |
632 if (notify_opts & OPT_METHOD_COUNT) | |
633 count_add(gtkwin->window); | |
634 if (notify_opts & OPT_METHOD_QUOTE) | |
635 quote_add(gtkwin->window); | |
636 if (notify_opts & OPT_METHOD_URGENT) | |
637 urgent_add(c); | |
638 } | |
639 } else { | |
640 //don't simply call unnotify(), because that will kill the msg counter | |
641 urgent_remove(c); | |
642 quote_remove(gtkwin->window); | |
643 count_remove(gtkwin->window); | |
644 string_remove(gtkwin->window); | |
645 } | |
646 } else if (opts & STATE_IS_NOTIFIED) { | |
647 //add/remove the status that was changed | |
648 switch(opt_chng) { | |
649 case OPT_METHOD_COUNT: | |
650 if (notify_opts & OPT_METHOD_COUNT) | |
651 count_add(gtkwin->window); | |
652 else | |
653 count_remove(gtkwin->window); | |
654 break; | |
655 case OPT_METHOD_QUOTE: | |
656 if (notify_opts & OPT_METHOD_QUOTE) | |
657 quote_add(gtkwin->window); | |
658 else | |
659 quote_remove(gtkwin->window); | |
660 break; | |
661 case OPT_METHOD_STRING: | |
662 if (notify_opts & OPT_METHOD_STRING) | |
663 string_add(gtkwin->window); | |
664 else | |
665 string_remove(gtkwin->window); | |
666 break; | |
667 case OPT_METHOD_URGENT: | |
668 if (notify_opts & OPT_METHOD_URGENT) | |
669 urgent_add(c); | |
670 else | |
671 urgent_remove(c); | |
672 break; | |
673 case OPT_METHOD_STRING_CHNG: | |
674 string_add(gtkwin->window); | |
675 break; | |
676 } | |
677 } | |
4203
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
678 |
4035 | 679 /* attach new unnotification signals */ |
6302 | 680 attach_signals(c); |
4035 | 681 |
6302 | 682 cnv = cnv->next; |
4035 | 683 } |
684 } | |
685 | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
686 static GtkWidget * |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
687 get_config_frame(GaimPlugin *plugin) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
688 { |
3565 | 689 GtkWidget *ret; |
6302 | 690 GtkWidget *frame; |
3565 | 691 GtkWidget *vbox, *hbox; |
6302 | 692 GtkWidget *toggle, *entry; |
693 | |
3565 | 694 ret = gtk_vbox_new(FALSE, 18); |
6302 | 695 gtk_container_set_border_width(GTK_CONTAINER (ret), 12); |
3392 | 696 |
6302 | 697 /*---------- "Notify For" ----------*/ |
698 frame = gaim_gtk_make_frame(ret, _("Notify For")); | |
699 vbox = gtk_vbox_new(FALSE, 5); | |
700 gtk_container_add(GTK_CONTAINER(frame), vbox); | |
701 | |
3710 | 702 toggle = gtk_check_button_new_with_mnemonic(_("_IM windows")); |
703 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); | |
6302 | 704 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), notify_opts & OPT_TYPE_IM); |
705 g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(options_toggle_cb), GINT_TO_POINTER(OPT_TYPE_IM)); | |
3710 | 706 |
707 toggle = gtk_check_button_new_with_mnemonic(_("_Chat windows")); | |
708 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); | |
6302 | 709 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), notify_opts & OPT_TYPE_CHAT); |
710 g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(options_toggle_cb), GINT_TO_POINTER(OPT_TYPE_CHAT)); | |
3710 | 711 |
6302 | 712 /*---------- "Notification Methods" ----------*/ |
713 frame = gaim_gtk_make_frame(ret, _("Notification Methods")); | |
714 vbox = gtk_vbox_new(FALSE, 5); | |
715 gtk_container_add(GTK_CONTAINER(frame), vbox); | |
716 | |
3565 | 717 hbox = gtk_hbox_new(FALSE, 18); |
718 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
6302 | 719 toggle = gtk_check_button_new_with_mnemonic(_("Prepend _string into window title:")); |
720 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), notify_opts & OPT_METHOD_STRING); | |
3565 | 721 gtk_box_pack_start(GTK_BOX(hbox), toggle, FALSE, FALSE, 0); |
6302 | 722 entry = gtk_entry_new(); |
723 gtk_box_pack_start(GTK_BOX(hbox), entry, FALSE, FALSE, 0); | |
724 gtk_entry_set_max_length(GTK_ENTRY(entry), 10); | |
725 gtk_widget_set_sensitive(GTK_WIDGET(entry), notify_opts & OPT_METHOD_STRING); | |
726 gtk_entry_set_text(GTK_ENTRY(entry), title_string); | |
727 g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(options_toggle_title_cb), entry); | |
728 g_signal_connect(G_OBJECT(entry), "focus-out-event", G_CALLBACK(options_settitle_cb), entry); | |
3374 | 729 |
6302 | 730 toggle = gtk_check_button_new_with_mnemonic(_("_Quote window title")); |
731 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); | |
732 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), notify_opts & OPT_METHOD_QUOTE); | |
733 g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(options_toggle_cb), GINT_TO_POINTER(OPT_METHOD_QUOTE)); | |
3374 | 734 |
6302 | 735 toggle = gtk_check_button_new_with_mnemonic(_("Set Window Manager \"_URGENT\" Hint")); |
736 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); | |
737 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), notify_opts & OPT_METHOD_URGENT); | |
738 g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(options_toggle_cb), GINT_TO_POINTER(OPT_METHOD_URGENT)); | |
4035 | 739 |
6302 | 740 toggle = gtk_check_button_new_with_mnemonic(_("Insert c_ount of new messages into window title")); |
741 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), notify_opts & OPT_METHOD_COUNT); | |
742 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); | |
743 g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(options_toggle_cb), GINT_TO_POINTER(OPT_METHOD_COUNT)); | |
3710 | 744 |
6302 | 745 toggle = gtk_check_button_new_with_mnemonic(_("_Notify even if conversation is in focus")); |
746 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), notify_opts & OPT_NOTIFY_IN_FOCUS); | |
747 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); | |
748 g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(options_toggle_cb), GINT_TO_POINTER(OPT_NOTIFY_IN_FOCUS)); | |
3392 | 749 |
6302 | 750 /*---------- "Notification Methods" ----------*/ |
751 frame = gaim_gtk_make_frame(ret, _("Notification Removal")); | |
752 vbox = gtk_vbox_new(FALSE, 5); | |
753 gtk_container_add(GTK_CONTAINER(frame), vbox); | |
3374 | 754 |
6302 | 755 toggle = gtk_check_button_new_with_mnemonic(_("Remove when conversation window gains _focus")); |
756 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); | |
757 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), notify_opts & OPT_NOTIFY_FOCUS); | |
758 g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(options_toggle_cb), GINT_TO_POINTER(OPT_NOTIFY_FOCUS)); | |
3710 | 759 |
6302 | 760 toggle = gtk_check_button_new_with_mnemonic(_("Remove when conversation window _receives click")); |
761 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); | |
762 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), notify_opts & OPT_NOTIFY_CLICK); | |
763 g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(options_toggle_cb), GINT_TO_POINTER(OPT_NOTIFY_CLICK)); | |
4035 | 764 |
6302 | 765 toggle = gtk_check_button_new_with_mnemonic(_("Remove when _typing in conversation window")); |
766 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); | |
767 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), notify_opts & OPT_NOTIFY_TYPE); | |
768 g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(options_toggle_cb), GINT_TO_POINTER(OPT_NOTIFY_TYPE)); | |
3565 | 769 |
6302 | 770 gtk_widget_show_all(ret); |
771 return ret; | |
3374 | 772 } |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
773 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
774 static gboolean |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
775 plugin_load(GaimPlugin *plugin) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
776 { |
6302 | 777 GList *cnv = gaim_get_conversations(); |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
778 void *conv_handle = gaim_conversations_get_handle(); |
6302 | 779 |
780 my_plugin = plugin; | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
781 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
782 load_notify_prefs(); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
783 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
784 gaim_signal_connect(conv_handle, "received-im-msg", |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
785 plugin, GAIM_CALLBACK(im_recv_im), NULL); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
786 gaim_signal_connect(conv_handle, "received-chat-msg", |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
787 plugin, GAIM_CALLBACK(chat_recv_im), NULL); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
788 gaim_signal_connect(conv_handle, "sent-im-msg", |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
789 plugin, GAIM_CALLBACK(im_sent_im), NULL); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
790 gaim_signal_connect(conv_handle, "sent-chat-msg", |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
791 plugin, GAIM_CALLBACK(chat_sent_im), NULL); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
792 gaim_signal_connect(conv_handle, "conversation-created", |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
793 plugin, GAIM_CALLBACK(new_conv), NULL); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
794 gaim_signal_connect(conv_handle, "chat-joined", |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
795 plugin, GAIM_CALLBACK(chat_join), NULL); |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
796 |
6302 | 797 while (cnv) { |
798 GaimConversation *c = (GaimConversation *)cnv->data; | |
799 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); | |
800 | |
801 /* attach signals */ | |
802 attach_signals(c); | |
803 /* zero out data */ | |
804 g_object_set_data(G_OBJECT(gtkwin->window), GDATASTR, GINT_TO_POINTER((guint)0)); | |
805 g_object_set_data(G_OBJECT(gtkwin->window), GDATASTRCNT, GINT_TO_POINTER((guint)0)); | |
806 | |
807 cnv = cnv->next; | |
808 } | |
809 | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
810 return TRUE; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
811 } |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
812 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
813 static gboolean |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
814 plugin_unload(GaimPlugin *plugin) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
815 { |
6302 | 816 GList *cnv = gaim_get_conversations(); |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
817 |
6302 | 818 while (cnv) { |
819 GaimConversation *c = (GaimConversation *)cnv->data; | |
820 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
821 |
6302 | 822 /* kill signals */ |
823 detach_signals(c); | |
824 /* zero out data */ | |
825 g_object_set_data(G_OBJECT(gtkwin->window), GDATASTR, GINT_TO_POINTER((guint)0)); | |
826 g_object_set_data(G_OBJECT(gtkwin->window), GDATASTRCNT, GINT_TO_POINTER((guint)0)); | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
827 |
6302 | 828 cnv = cnv->next; |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
829 } |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
830 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
831 return TRUE; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
832 } |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
833 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
834 static GaimGtkPluginUiInfo ui_info = |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
835 { |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
836 get_config_frame |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
837 }; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
838 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
839 static GaimPluginInfo info = |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
840 { |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
841 2, /**< api_version */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
842 GAIM_PLUGIN_STANDARD, /**< type */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
843 GAIM_GTK_PLUGIN_TYPE, /**< ui_requirement */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
844 0, /**< flags */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
845 NULL, /**< dependencies */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
846 GAIM_PRIORITY_DEFAULT, /**< priority */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
847 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
848 NOTIFY_PLUGIN_ID, /**< id */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
849 N_("Message Notification"), /**< name */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
850 VERSION, /**< version */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
851 /** summary */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
852 N_("Provides a variety of ways of notifying you of unread messages."), |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
853 /** description */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
854 N_("Provides a variety of ways of notifying you of unread messages."), |
6302 | 855 "Etan Reisner <deryni@eden.rutgers.edu>\n\t\t\tBrian Tarricone <bjt23@cornell.edu", |
856 /**< author */ | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
857 GAIM_WEBSITE, /**< homepage */ |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
858 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
859 plugin_load, /**< load */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
860 plugin_unload, /**< unload */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
861 NULL, /**< destroy */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
862 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
863 &ui_info, /**< ui_info */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
864 NULL /**< extra_info */ |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
865 }; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
866 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
867 static void |
5920
7d385de2f9cd
[gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
868 init_plugin(GaimPlugin *plugin) |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
869 { |
6302 | 870 gaim_prefs_add_none("/plugins/gtk"); |
871 gaim_prefs_add_none("/plugins/gtk/X11"); | |
872 gaim_prefs_add_none("/plugins/gtk/X11/notify"); | |
873 | |
6464 | 874 gaim_prefs_add_bool("/plugins/gtk/X11/notify/type_im", TRUE); |
875 gaim_prefs_add_bool("/plugins/gtk/X11/notify/type_chat", FALSE); | |
876 gaim_prefs_add_bool("/plugins/gtk/X11/notify/type_focused", FALSE); | |
6302 | 877 gaim_prefs_add_bool("/plugins/gtk/X11/notify/method_string", FALSE); |
878 gaim_prefs_add_string("/plugins/gtk/X11/notify/title_string", "(*)"); | |
879 gaim_prefs_add_bool("/plugins/gtk/X11/notify/method_urgent", FALSE); | |
880 gaim_prefs_add_bool("/plugins/gtk/X11/notify/method_count", FALSE); | |
881 gaim_prefs_add_bool("/plugins/gtk/X11/notify/notify_focus", FALSE); | |
882 gaim_prefs_add_bool("/plugins/gtk/X11/notify/notify_click", FALSE); | |
883 gaim_prefs_add_bool("/plugins/gtk/X11/notify/notify_type", TRUE); | |
6464 | 884 gaim_prefs_add_bool("/plugins/gtk/X11/notify/notify_send", TRUE); |
885 gaim_prefs_add_bool("/plugins/gtk/X11/notify/notify_switch", TRUE); | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
886 } |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
887 |
6063 | 888 GAIM_INIT_PLUGIN(notify, init_plugin, info) |