Mercurial > pidgin
annotate plugins/notify.c @ 6626:7a4c4e89a1df
[gaim-migrate @ 7150]
Ambrose C. LI (acli) writes:
" fi.po with the following "safe" changes:
- went over the 0.59.8 po file and found the strings
with idential meanings with changes only in formatting
- some translations obtained by old translation strings
but which requires only some trivial editing
- added some translations from existing po files from
other projects
- converted from iso-8859-15 to utf-8
and "unsafe" changes:
- some translations obtained by old translation strings
but which requires some relatively non-trivial editing
- attempted to correct some obvious mistranslations
It is best to have a native speaker go over this"
but i figure at this point, the last update being in 0.59.8, his version
can't be any worse really
committer: Tailor Script <tailor@pidgin.im>
| author | Luke Schierer <lschiere@pidgin.im> |
|---|---|
| date | Mon, 25 Aug 2003 23:13:52 +0000 |
| parents | 7230e5920911 |
| children | b0913ab92893 |
| 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 |
| 6620 | 203 chat_recv_im(GaimAccount *account, char **who, char **text, int id, void *m) |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
204 { |
| 6620 | 205 GaimConversation *conv = gaim_find_chat( |
| 206 gaim_account_get_connection(account), | |
| 207 id); | |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
208 if (conv) |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
209 notify(conv); |
| 3710 | 210 |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
211 return FALSE; |
| 3710 | 212 } |
| 213 | |
| 6620 | 214 static void chat_sent_im(GaimAccount *account, char *text, int id, void *m) { |
| 215 GaimConversation *conv = gaim_find_chat( | |
| 216 gaim_account_get_connection(account), | |
| 217 id); | |
| 218 | |
| 219 if (conv) | |
| 220 unnotify(conv); | |
| 3710 | 221 } |
| 222 | |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
223 static gboolean |
| 6620 | 224 im_recv_im(GaimAccount *account, char **who, char **what, int *flags, void *m) |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
225 { |
| 6620 | 226 GaimConversation *conv = gaim_find_conversation_with_account(*who, account); |
| 227 | |
|
6485
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 notify(conv); |
| 3710 | 230 |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
231 return FALSE; |
| 3710 | 232 } |
| 233 | |
| 6620 | 234 static void im_sent_im(GaimAccount *account, char *who, void *m) { |
| 235 GaimConversation *conv = gaim_find_conversation_with_account(who, account); | |
| 236 | |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
237 if (conv) |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
238 unnotify(conv); |
| 3710 | 239 } |
| 3392 | 240 |
| 6302 | 241 static int attach_signals(GaimConversation *c) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
242 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
243 GaimGtkWindow *gtkwin; |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
244 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
245 gtkconv = GAIM_GTK_CONVERSATION(c); |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
246 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
247 |
| 6302 | 248 if (notify_opts & OPT_NOTIFY_FOCUS) { |
| 249 g_signal_connect(G_OBJECT(gtkwin->window), "focus-in-event", G_CALLBACK(unnotify_cb), NULL); | |
| 3374 | 250 } |
| 3710 | 251 |
| 6302 | 252 if (notify_opts & OPT_NOTIFY_CLICK) { |
| 253 g_signal_connect(G_OBJECT(gtkwin->window), "button_press_event", G_CALLBACK(unnotify_cb), NULL); | |
| 254 g_signal_connect_swapped(G_OBJECT(gtkconv->imhtml), "button_press_event", G_CALLBACK(unnotify_cb), G_OBJECT(gtkwin->window)); | |
| 255 g_signal_connect_swapped(G_OBJECT(gtkconv->entry), "button_press_event", G_CALLBACK(unnotify_cb), G_OBJECT(gtkwin->window)); | |
| 3374 | 256 } |
| 257 | |
| 6302 | 258 if (notify_opts & OPT_NOTIFY_TYPE) { |
| 259 g_signal_connect_swapped(G_OBJECT(gtkconv->entry), "key-press-event", G_CALLBACK(unnotify_cb), G_OBJECT(gtkwin->window)); | |
| 191 | 260 } |
| 4035 | 261 |
| 3428 | 262 return 0; |
| 191 | 263 } |
| 264 | |
| 6302 | 265 static void detach_signals(GaimConversation *c) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
266 GaimGtkConversation *gtkconv; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
267 GaimGtkWindow *gtkwin; |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
268 |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
269 gtkconv = GAIM_GTK_CONVERSATION(c); |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
270 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
271 |
| 6302 | 272 if (notify_opts & OPT_NOTIFY_FOCUS) { |
| 273 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
|
274 } |
|
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
275 |
| 6302 | 276 if (notify_opts & OPT_NOTIFY_CLICK) { |
| 277 g_signal_handlers_disconnect_by_func(G_OBJECT(gtkwin->window), unnotify_cb, NULL); | |
| 278 g_signal_handlers_disconnect_by_func(G_OBJECT(gtkconv->imhtml), unnotify_cb, gtkwin->window); | |
| 279 g_signal_handlers_disconnect_by_func(G_OBJECT(gtkconv->entry), unnotify_cb, gtkwin->window); | |
| 280 } | |
| 281 | |
| 282 if (notify_opts & OPT_NOTIFY_TYPE) { | |
| 283 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
|
284 } |
|
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
285 } |
|
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
286 |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
287 static void new_conv(GaimConversation *c) |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
288 { |
| 6302 | 289 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); |
| 3710 | 290 |
| 6302 | 291 g_object_set_data(G_OBJECT(gtkwin->window), GDATASTR, GINT_TO_POINTER((guint)0)); |
| 292 g_object_set_data(G_OBJECT(gtkwin->window), GDATASTRCNT, GINT_TO_POINTER((guint)0)); | |
| 293 | |
| 294 if (c && (notify_opts & OPT_TYPE_IM)) | |
| 3710 | 295 attach_signals(c); |
| 296 } | |
| 297 | |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
298 static void chat_join(GaimConversation *c) { |
| 6302 | 299 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); |
| 3710 | 300 |
| 6302 | 301 g_object_set_data(G_OBJECT(gtkwin->window), GDATASTR, GINT_TO_POINTER((guint)0)); |
| 302 g_object_set_data(G_OBJECT(gtkwin->window), GDATASTRCNT, GINT_TO_POINTER((guint)0)); | |
| 303 | |
| 304 if (c && (notify_opts & OPT_TYPE_CHAT)) | |
| 3710 | 305 attach_signals(c); |
| 306 } | |
| 307 | |
| 6302 | 308 static void string_add(GtkWidget *widget) { |
| 309 GtkWindow *win = GTK_WINDOW(widget); | |
| 310 gchar newtitle[256]; | |
| 311 const gchar *curtitle = gtk_window_get_title(win); | |
| 312 guint opts = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), GDATASTR)); | |
| 313 | |
| 314 gaim_debug(GAIM_DEBUG_INFO, "notify.c", "string_add(): opts=0x%04x\n", opts); | |
| 315 | |
| 316 if (opts & OPT_METHOD_STRING) | |
| 317 return; | |
| 3374 | 318 |
| 6302 | 319 if (!strstr(curtitle, title_string)) { |
| 320 if (opts & OPT_METHOD_COUNT) { | |
| 321 char *p = strchr(curtitle, ']'); | |
| 322 int len1; | |
| 323 if (!p) | |
| 324 return; | |
| 325 len1 = p-curtitle+2; | |
| 326 memcpy(newtitle, curtitle, len1); | |
| 327 strncpy(newtitle+len1, title_string, sizeof(newtitle)-len1); | |
| 328 strncpy(newtitle+len1+strlen(title_string), curtitle+len1, | |
| 329 sizeof(newtitle)-len1-strlen(title_string)); | |
| 330 } else if (opts & OPT_METHOD_QUOTE) { | |
| 331 g_snprintf(newtitle, sizeof(newtitle), "\"%s%s", title_string, curtitle+1); | |
| 332 } else { | |
| 333 g_snprintf(newtitle, sizeof(newtitle), "%s%s", title_string, curtitle); | |
| 334 } | |
| 335 gtk_window_set_title(win, newtitle); | |
| 336 gaim_debug(GAIM_DEBUG_INFO, "notify.c", "added string to window title\n"); | |
| 337 } | |
| 338 | |
| 339 opts |= OPT_METHOD_STRING; | |
| 340 g_object_set_data(G_OBJECT(widget), GDATASTR, GINT_TO_POINTER(opts)); | |
| 3374 | 341 } |
| 342 | |
| 6302 | 343 static void string_remove(GtkWidget *widget) { |
| 344 GtkWindow *win = GTK_WINDOW(widget); | |
| 345 gchar newtitle[256]; | |
| 346 const gchar *curtitle; | |
| 347 guint opts = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), GDATASTR)); | |
| 3392 | 348 |
| 6302 | 349 gaim_debug(GAIM_DEBUG_INFO, "notify.c", "string_remove(): opts=0x%04x\n", opts); |
| 4035 | 350 |
| 6302 | 351 if (!(opts & OPT_METHOD_STRING)) |
| 352 return; | |
| 353 | |
| 354 curtitle = gtk_window_get_title(win); | |
| 3392 | 355 |
| 6302 | 356 if (strstr(curtitle, title_string)) { |
| 357 if (opts & OPT_METHOD_COUNT) { | |
| 358 char *p = strchr(curtitle, ']'); | |
| 359 int len1; | |
| 360 if (!p) | |
| 361 return; | |
| 362 len1 = p-curtitle+2; | |
| 363 memcpy(newtitle, curtitle, len1); | |
| 364 strncpy(newtitle+len1, curtitle+len1+strlen(title_string), sizeof(newtitle)-len1); | |
| 365 } else if (opts & OPT_METHOD_QUOTE) { | |
| 366 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
|
367 } else |
| 6302 | 368 strncpy(newtitle, curtitle+strlen(title_string), sizeof(newtitle)); |
| 369 } | |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
370 |
| 6302 | 371 gtk_window_set_title(win, newtitle); |
| 372 gaim_debug(GAIM_DEBUG_INFO, "notify.c", "removed string from window title (title now %s)\n", newtitle); | |
| 3374 | 373 } |
| 374 | |
| 6302 | 375 static void count_add(GtkWidget *widget) { |
| 4035 | 376 GtkWindow *win = GTK_WINDOW(widget); |
| 6302 | 377 char newtitle[256]; |
| 378 const gchar *curtitle; | |
| 379 guint opts = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), GDATASTR)); | |
| 380 gint curcount = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), GDATASTRCNT)); | |
| 4035 | 381 |
| 6302 | 382 gaim_debug(GAIM_DEBUG_INFO, "notify.c", "count_add(): opts=0x%04x\n", opts); |
| 383 | |
| 384 if (curcount>0 && (opts & OPT_METHOD_COUNT)) | |
| 385 count_remove(widget); | |
| 5021 | 386 |
| 6302 | 387 curtitle = gtk_window_get_title(win); |
| 388 if (opts & OPT_METHOD_QUOTE) | |
| 389 g_snprintf(newtitle, sizeof(newtitle), "\"[%d] %s", curcount, curtitle+1); | |
| 390 else | |
| 391 g_snprintf(newtitle, sizeof(newtitle), "[%d] %s", curcount, curtitle); | |
| 392 gtk_window_set_title(win, newtitle); | |
| 393 | |
| 394 gaim_debug(GAIM_DEBUG_INFO, "notify.c", "added count of %d to window\n", curcount); | |
| 395 | |
| 396 opts |= OPT_METHOD_COUNT; | |
| 397 g_object_set_data(G_OBJECT(widget), GDATASTR, GINT_TO_POINTER(opts)); | |
| 4035 | 398 } |
| 399 | |
| 6302 | 400 static void count_remove(GtkWidget *widget) { |
| 3392 | 401 GtkWindow *win = GTK_WINDOW(widget); |
| 6302 | 402 char newtitle[256], *p; |
| 403 const gchar *curtitle; | |
| 404 guint opts = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), GDATASTR)); | |
| 405 | |
| 406 gaim_debug(GAIM_DEBUG_INFO, "notify.c", "count_remove(): opts=0x%04x\n", opts); | |
| 407 | |
| 408 if (!(opts & OPT_METHOD_COUNT)) | |
| 409 return; | |
| 410 | |
| 411 curtitle = gtk_window_get_title(win); | |
| 3392 | 412 |
| 6302 | 413 p = strchr(curtitle, ']'); |
| 414 | |
| 415 if (p) { | |
| 416 if (opts & OPT_METHOD_QUOTE) | |
| 417 g_snprintf(newtitle, sizeof(newtitle), "\"%s", p+2); | |
| 418 else | |
| 419 g_snprintf(newtitle, sizeof(newtitle), p+2); | |
| 420 gtk_window_set_title(win, newtitle); | |
| 421 gaim_debug(GAIM_DEBUG_INFO, "notify.c", "removed count from title (title now %s)\n", newtitle); | |
| 3392 | 422 } |
| 6302 | 423 |
| 424 opts &= ~OPT_METHOD_COUNT; | |
| 425 g_object_set_data(G_OBJECT(widget), GDATASTR, GINT_TO_POINTER(opts)); | |
| 3392 | 426 } |
| 427 | |
| 6302 | 428 static void quote_add(GtkWidget *widget) { |
| 4035 | 429 GtkWindow *win = GTK_WINDOW(widget); |
| 6302 | 430 char newtitle[256]; |
| 431 const gchar *curtitle = gtk_window_get_title(win); | |
| 432 guint opts = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), GDATASTR)); | |
| 433 | |
| 434 gaim_debug(GAIM_DEBUG_INFO, "notify.c", "quote_add(): opts=0x%04x\n", opts); | |
| 4035 | 435 |
| 6302 | 436 if (opts & OPT_METHOD_QUOTE) |
| 437 return; | |
| 438 | |
| 439 if (*curtitle != '\"') { | |
| 440 g_snprintf(newtitle, sizeof(newtitle), "\"%s\"", curtitle); | |
| 441 gtk_window_set_title(win, newtitle); | |
| 442 gaim_debug(GAIM_DEBUG_INFO, "notify.c", "quoted title\n"); | |
| 4035 | 443 } |
| 6302 | 444 |
| 445 opts |= OPT_METHOD_QUOTE; | |
| 446 g_object_set_data(G_OBJECT(widget), GDATASTR, GINT_TO_POINTER(opts)); | |
| 4035 | 447 } |
| 448 | |
| 6302 | 449 static void quote_remove(GtkWidget *widget) { |
| 3374 | 450 GtkWindow *win = GTK_WINDOW(widget); |
| 6302 | 451 char newtitle[512]; |
| 452 const gchar *curtitle = gtk_window_get_title(win); | |
| 453 guint opts = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), GDATASTR)); | |
| 454 | |
| 455 gaim_debug(GAIM_DEBUG_INFO, "notify.c", "quote_remove(): opts=0x%04x\n", opts); | |
| 191 | 456 |
| 6302 | 457 if (!(opts & OPT_METHOD_QUOTE)) |
| 458 return; | |
| 459 | |
| 460 if (*curtitle == '\"' && strlen(curtitle)-2<sizeof(newtitle)) { | |
| 461 memcpy(newtitle, curtitle+1, strlen(curtitle)-2); | |
| 462 newtitle[strlen(curtitle)-2] = 0; | |
| 463 gtk_window_set_title(win, newtitle); | |
| 464 gaim_debug(GAIM_DEBUG_INFO, "notify.c", "removed quotes from title (title now %s)\n", newtitle); | |
| 465 } | |
| 466 | |
| 467 opts &= ~OPT_METHOD_QUOTE; | |
| 468 g_object_set_data(G_OBJECT(widget), GDATASTR, GINT_TO_POINTER(opts)); | |
| 3374 | 469 } |
| 470 | |
| 6302 | 471 static void urgent_add(GaimConversation *c) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
472 GaimGtkWindow *gtkwin; |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
473 XWMHints *hints; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
474 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
475 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
476 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
477 hints = XGetWMHints(GDK_WINDOW_XDISPLAY(gtkwin->window->window), GDK_WINDOW_XWINDOW(gtkwin->window->window)); |
| 4035 | 478 hints->flags |= XUrgencyHint; |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
479 XSetWMHints(GDK_WINDOW_XDISPLAY(gtkwin->window->window), GDK_WINDOW_XWINDOW(gtkwin->window->window), hints); |
| 4218 | 480 XFree(hints); |
| 4035 | 481 } |
| 482 | |
| 6302 | 483 static void urgent_remove(GaimConversation *c) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
484 GaimGtkConversation *gtkconv; |
| 6302 | 485 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
|
486 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
487 gtkconv = GAIM_GTK_CONVERSATION(c); |
|
4203
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
488 |
| 6302 | 489 if (!strcmp(convo_placement, "new")) { |
| 490 GaimGtkWindow *gtkwin; | |
| 491 XWMHints *hints; | |
| 492 | |
| 493 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); | |
| 494 hints = XGetWMHints(GDK_WINDOW_XDISPLAY(gtkwin->window->window), GDK_WINDOW_XWINDOW(gtkwin->window->window)); | |
| 495 | |
| 496 if (hints->flags & XUrgencyHint) { | |
| 497 hints->flags &= ~XUrgencyHint; | |
| 498 XSetWMHints(GDK_WINDOW_XDISPLAY(gtkwin->window->window), GDK_WINDOW_XWINDOW(gtkwin->window->window), hints); | |
| 499 } | |
| 500 XFree(hints); | |
| 501 } else { | |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
502 if (gaim_conversation_get_type(c) == GAIM_CONV_CHAT) { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
503 GaimConversation *c = (GaimConversation *)gaim_get_chats()->data; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
504 GaimGtkWindow *gtkwin; |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
505 GdkWindow *win; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
506 XWMHints *hints; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
507 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
508 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
509 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
510 win = gtkwin->window->window; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
511 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
512 hints = XGetWMHints(GDK_WINDOW_XDISPLAY(win), GDK_WINDOW_XWINDOW(win)); |
|
4203
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
513 if (hints->flags & XUrgencyHint) { |
|
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
514 hints->flags &= ~XUrgencyHint; |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
515 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
|
516 } |
| 4218 | 517 XFree(hints); |
|
4203
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
518 } else { |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
519 GaimConversation *c; |
|
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
520 GaimGtkWindow *gtkwin; |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
521 GdkWindow *win; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
522 XWMHints *hints; |
| 3374 | 523 |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
524 c = (GaimConversation *)gaim_get_ims()->data; |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
525 gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
526 win = gtkwin->window->window; |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
527 |
|
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
528 hints = XGetWMHints(GDK_WINDOW_XDISPLAY(win), GDK_WINDOW_XWINDOW(win)); |
|
4203
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
529 if (hints->flags & XUrgencyHint) { |
|
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
530 hints->flags &= ~XUrgencyHint; |
|
4359
5fb47ec9bfe4
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4218
diff
changeset
|
531 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
|
532 } |
| 4218 | 533 XFree(hints); |
|
4203
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
534 } |
| 4035 | 535 } |
| 3374 | 536 } |
| 537 | |
| 6302 | 538 static void save_notify_prefs() { |
| 6464 | 539 gaim_prefs_set_bool("/plugins/gtk/X11/notify/type_im", notify_opts & OPT_TYPE_IM); |
| 540 gaim_prefs_set_bool("/plugins/gtk/X11/notify/type_chat", notify_opts & OPT_TYPE_CHAT); | |
| 541 gaim_prefs_set_bool("/plugins/gtk/X11/notify/type_focused", notify_opts & OPT_NOTIFY_IN_FOCUS); | |
| 6302 | 542 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
|
543 gaim_prefs_set_bool("/plugins/gtk/X11/notify/notify_click", notify_opts & OPT_NOTIFY_CLICK); |
| 6302 | 544 gaim_prefs_set_bool("/plugins/gtk/X11/notify/notify_type", notify_opts & OPT_NOTIFY_TYPE); |
| 545 gaim_prefs_set_bool("/plugins/gtk/X11/notify/method_string", notify_opts & OPT_METHOD_STRING); | |
| 546 gaim_prefs_set_bool("/plugins/gtk/X11/notify/method_quote", notify_opts & OPT_METHOD_QUOTE); | |
| 547 gaim_prefs_set_bool("/plugins/gtk/X11/notify/method_urgent", notify_opts & OPT_METHOD_URGENT); | |
| 548 gaim_prefs_set_bool("/plugins/gtk/X11/notify/method_count", notify_opts & OPT_METHOD_COUNT); | |
| 3374 | 549 |
| 6302 | 550 gaim_prefs_set_string("/plugins/gtk/X11/notify/title_string", title_string); |
| 3374 | 551 } |
| 552 | |
| 6302 | 553 static void load_notify_prefs() { |
| 554 notify_opts = 0; | |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
555 |
| 6464 | 556 notify_opts |= (gaim_prefs_get_bool("/plugins/gtk/X11/notify/type_im") ? OPT_TYPE_IM : 0); |
| 557 notify_opts |= (gaim_prefs_get_bool("/plugins/gtk/X11/notify/type_chat") ? OPT_TYPE_CHAT : 0); | |
| 558 notify_opts |= (gaim_prefs_get_bool("/plugins/gtk/X11/notify/type_focused") ? OPT_NOTIFY_IN_FOCUS : 0); | |
| 6302 | 559 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
|
560 notify_opts |= (gaim_prefs_get_bool("/plugins/gtk/X11/notify/notify_click") ? OPT_NOTIFY_CLICK : 0); |
| 6302 | 561 notify_opts |= (gaim_prefs_get_bool("/plugins/gtk/X11/notify/notify_type") ? OPT_NOTIFY_TYPE : 0); |
| 562 notify_opts |= (gaim_prefs_get_bool("/plugins/gtk/X11/notify/method_string") ? OPT_METHOD_STRING : 0); | |
| 563 notify_opts |= (gaim_prefs_get_bool("/plugins/gtk/X11/notify/method_quote") ? OPT_METHOD_QUOTE : 0); | |
| 564 notify_opts |= (gaim_prefs_get_bool("/plugins/gtk/X11/notify/method_urgent") ? OPT_METHOD_URGENT : 0); | |
| 565 notify_opts |= (gaim_prefs_get_bool("/plugins/gtk/X11/notify/method_count") ? OPT_METHOD_COUNT : 0); | |
| 3374 | 566 |
| 6302 | 567 strncpy(title_string, gaim_prefs_get_string("/plugins/gtk/X11/notify/title_string"), TITLE_STR_BUFSIZE); |
| 3374 | 568 } |
| 569 | |
| 6302 | 570 static void options_toggle_cb(GtkWidget *w, gpointer data) { |
| 4035 | 571 gint option = GPOINTER_TO_INT(data); |
| 3374 | 572 |
| 6302 | 573 notify_opts ^= option; |
| 574 | |
| 575 /* save prefs and re-notify the windows */ | |
| 576 save_notify_prefs(); | |
| 577 apply_options(option); | |
| 578 } | |
| 579 | |
| 580 static gboolean options_settitle_cb(GtkWidget *w, GdkEventFocus *evt, GtkWidget *entry) { | |
| 581 GList *cnv = gaim_get_conversations(); | |
| 582 | |
| 583 /* first we have to kill all the old strings */ | |
| 584 while (cnv) { | |
| 585 GaimConversation *c = (GaimConversation *)cnv->data; | |
| 586 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); | |
| 587 string_remove(gtkwin->window); | |
| 588 cnv = cnv->next; | |
| 3374 | 589 } |
| 6302 | 590 |
| 591 g_snprintf(title_string, sizeof(title_string), gtk_entry_get_text(GTK_ENTRY(entry))); | |
| 592 | |
| 593 /* save prefs and re-notify the windows */ | |
| 594 save_notify_prefs(); | |
| 595 apply_options(OPT_METHOD_STRING_CHNG); | |
| 596 | |
| 597 return FALSE; | |
| 598 } | |
| 599 | |
| 600 static void options_toggle_title_cb(GtkWidget *w, GtkWidget *entry) { | |
| 601 notify_opts ^= OPT_METHOD_STRING; | |
| 602 | |
| 603 if (notify_opts & OPT_METHOD_STRING) | |
| 604 gtk_widget_set_sensitive(entry, TRUE); | |
| 605 else | |
| 606 gtk_widget_set_sensitive(entry, FALSE); | |
| 3710 | 607 |
| 608 save_notify_prefs(); | |
| 6302 | 609 apply_options(OPT_METHOD_STRING); |
| 3374 | 610 } |
| 611 | |
| 6302 | 612 static void apply_options(int opt_chng) { |
|
4376
2c985a9e994c
[gaim-migrate @ 4642]
Christian Hammond <chipx86@chipx86.com>
parents:
4359
diff
changeset
|
613 GList *cnv = gaim_get_conversations(); |
| 4035 | 614 |
| 6302 | 615 /* option-setting handlers should have cleared out all window notifications */ |
| 616 | |
| 4035 | 617 while (cnv) { |
| 6302 | 618 GaimConversation *c = (GaimConversation *)cnv->data; |
| 619 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); | |
| 620 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
|
621 |
| 6302 | 622 /* kill signals */ |
|
4203
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
623 detach_signals(c); |
| 4035 | 624 |
| 6302 | 625 /* |
| 626 * do a full notify if the option that changed was an OPT_TYPE_* | |
| 627 * either notify if it was enabled, or unnotify if it was disabled | |
| 628 */ | |
| 629 if (opt_chng==OPT_TYPE_IM || opt_chng==OPT_TYPE_CHAT) { | |
| 630 if ((gaim_conversation_get_type(c)==GAIM_CONV_IM && (notify_opts & OPT_TYPE_IM)) || | |
| 631 (gaim_conversation_get_type(c)==GAIM_CONV_CHAT && (notify_opts & OPT_TYPE_CHAT))) { | |
| 632 Window focus_return; | |
| 633 int revert_to_return; | |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
634 |
| 6302 | 635 XGetInputFocus(GDK_WINDOW_XDISPLAY(gtkwin->window->window), |
| 636 &focus_return, &revert_to_return); | |
| 637 if ((notify_opts & OPT_NOTIFY_IN_FOCUS) || | |
| 638 focus_return != GDK_WINDOW_XWINDOW(gtkwin->window->window)) { | |
| 639 if (notify_opts & OPT_METHOD_STRING) | |
| 640 string_add(gtkwin->window); | |
| 641 if (notify_opts & OPT_METHOD_COUNT) | |
| 642 count_add(gtkwin->window); | |
| 643 if (notify_opts & OPT_METHOD_QUOTE) | |
| 644 quote_add(gtkwin->window); | |
| 645 if (notify_opts & OPT_METHOD_URGENT) | |
| 646 urgent_add(c); | |
| 647 } | |
| 648 } else { | |
| 649 //don't simply call unnotify(), because that will kill the msg counter | |
| 650 urgent_remove(c); | |
| 651 quote_remove(gtkwin->window); | |
| 652 count_remove(gtkwin->window); | |
| 653 string_remove(gtkwin->window); | |
| 654 } | |
| 655 } else if (opts & STATE_IS_NOTIFIED) { | |
| 656 //add/remove the status that was changed | |
| 657 switch(opt_chng) { | |
| 658 case OPT_METHOD_COUNT: | |
| 659 if (notify_opts & OPT_METHOD_COUNT) | |
| 660 count_add(gtkwin->window); | |
| 661 else | |
| 662 count_remove(gtkwin->window); | |
| 663 break; | |
| 664 case OPT_METHOD_QUOTE: | |
| 665 if (notify_opts & OPT_METHOD_QUOTE) | |
| 666 quote_add(gtkwin->window); | |
| 667 else | |
| 668 quote_remove(gtkwin->window); | |
| 669 break; | |
| 670 case OPT_METHOD_STRING: | |
| 671 if (notify_opts & OPT_METHOD_STRING) | |
| 672 string_add(gtkwin->window); | |
| 673 else | |
| 674 string_remove(gtkwin->window); | |
| 675 break; | |
| 676 case OPT_METHOD_URGENT: | |
| 677 if (notify_opts & OPT_METHOD_URGENT) | |
| 678 urgent_add(c); | |
| 679 else | |
| 680 urgent_remove(c); | |
| 681 break; | |
| 682 case OPT_METHOD_STRING_CHNG: | |
| 683 string_add(gtkwin->window); | |
| 684 break; | |
| 685 } | |
| 686 } | |
|
4203
ec6d0c5e5c23
[gaim-migrate @ 4439]
Christian Hammond <chipx86@chipx86.com>
parents:
4202
diff
changeset
|
687 |
| 4035 | 688 /* attach new unnotification signals */ |
| 6302 | 689 attach_signals(c); |
| 4035 | 690 |
| 6302 | 691 cnv = cnv->next; |
| 4035 | 692 } |
| 693 } | |
| 694 | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
695 static GtkWidget * |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
696 get_config_frame(GaimPlugin *plugin) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
697 { |
| 3565 | 698 GtkWidget *ret; |
| 6302 | 699 GtkWidget *frame; |
| 3565 | 700 GtkWidget *vbox, *hbox; |
| 6302 | 701 GtkWidget *toggle, *entry; |
| 702 | |
| 3565 | 703 ret = gtk_vbox_new(FALSE, 18); |
| 6302 | 704 gtk_container_set_border_width(GTK_CONTAINER (ret), 12); |
| 3392 | 705 |
| 6302 | 706 /*---------- "Notify For" ----------*/ |
| 707 frame = gaim_gtk_make_frame(ret, _("Notify For")); | |
| 708 vbox = gtk_vbox_new(FALSE, 5); | |
| 709 gtk_container_add(GTK_CONTAINER(frame), vbox); | |
| 710 | |
| 3710 | 711 toggle = gtk_check_button_new_with_mnemonic(_("_IM windows")); |
| 712 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); | |
| 6302 | 713 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), notify_opts & OPT_TYPE_IM); |
| 714 g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(options_toggle_cb), GINT_TO_POINTER(OPT_TYPE_IM)); | |
| 3710 | 715 |
| 716 toggle = gtk_check_button_new_with_mnemonic(_("_Chat windows")); | |
| 717 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); | |
| 6302 | 718 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), notify_opts & OPT_TYPE_CHAT); |
| 719 g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(options_toggle_cb), GINT_TO_POINTER(OPT_TYPE_CHAT)); | |
| 3710 | 720 |
| 6302 | 721 /*---------- "Notification Methods" ----------*/ |
| 722 frame = gaim_gtk_make_frame(ret, _("Notification Methods")); | |
| 723 vbox = gtk_vbox_new(FALSE, 5); | |
| 724 gtk_container_add(GTK_CONTAINER(frame), vbox); | |
| 725 | |
| 3565 | 726 hbox = gtk_hbox_new(FALSE, 18); |
| 727 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
| 6302 | 728 toggle = gtk_check_button_new_with_mnemonic(_("Prepend _string into window title:")); |
| 729 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), notify_opts & OPT_METHOD_STRING); | |
| 3565 | 730 gtk_box_pack_start(GTK_BOX(hbox), toggle, FALSE, FALSE, 0); |
| 6302 | 731 entry = gtk_entry_new(); |
| 732 gtk_box_pack_start(GTK_BOX(hbox), entry, FALSE, FALSE, 0); | |
| 733 gtk_entry_set_max_length(GTK_ENTRY(entry), 10); | |
| 734 gtk_widget_set_sensitive(GTK_WIDGET(entry), notify_opts & OPT_METHOD_STRING); | |
| 735 gtk_entry_set_text(GTK_ENTRY(entry), title_string); | |
| 736 g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(options_toggle_title_cb), entry); | |
| 737 g_signal_connect(G_OBJECT(entry), "focus-out-event", G_CALLBACK(options_settitle_cb), entry); | |
| 3374 | 738 |
| 6302 | 739 toggle = gtk_check_button_new_with_mnemonic(_("_Quote window title")); |
| 740 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); | |
| 741 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), notify_opts & OPT_METHOD_QUOTE); | |
| 742 g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(options_toggle_cb), GINT_TO_POINTER(OPT_METHOD_QUOTE)); | |
| 3374 | 743 |
| 6302 | 744 toggle = gtk_check_button_new_with_mnemonic(_("Set Window Manager \"_URGENT\" Hint")); |
| 745 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); | |
| 746 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), notify_opts & OPT_METHOD_URGENT); | |
| 747 g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(options_toggle_cb), GINT_TO_POINTER(OPT_METHOD_URGENT)); | |
| 4035 | 748 |
| 6302 | 749 toggle = gtk_check_button_new_with_mnemonic(_("Insert c_ount of new messages into window title")); |
| 750 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), notify_opts & OPT_METHOD_COUNT); | |
| 751 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); | |
| 752 g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(options_toggle_cb), GINT_TO_POINTER(OPT_METHOD_COUNT)); | |
| 3710 | 753 |
| 6302 | 754 toggle = gtk_check_button_new_with_mnemonic(_("_Notify even if conversation is in focus")); |
| 755 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), notify_opts & OPT_NOTIFY_IN_FOCUS); | |
| 756 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); | |
| 757 g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(options_toggle_cb), GINT_TO_POINTER(OPT_NOTIFY_IN_FOCUS)); | |
| 3392 | 758 |
| 6302 | 759 /*---------- "Notification Methods" ----------*/ |
| 760 frame = gaim_gtk_make_frame(ret, _("Notification Removal")); | |
| 761 vbox = gtk_vbox_new(FALSE, 5); | |
| 762 gtk_container_add(GTK_CONTAINER(frame), vbox); | |
| 3374 | 763 |
| 6302 | 764 toggle = gtk_check_button_new_with_mnemonic(_("Remove when conversation window gains _focus")); |
| 765 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); | |
| 766 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), notify_opts & OPT_NOTIFY_FOCUS); | |
| 767 g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(options_toggle_cb), GINT_TO_POINTER(OPT_NOTIFY_FOCUS)); | |
| 3710 | 768 |
| 6302 | 769 toggle = gtk_check_button_new_with_mnemonic(_("Remove when conversation window _receives click")); |
| 770 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); | |
| 771 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), notify_opts & OPT_NOTIFY_CLICK); | |
| 772 g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(options_toggle_cb), GINT_TO_POINTER(OPT_NOTIFY_CLICK)); | |
| 4035 | 773 |
| 6302 | 774 toggle = gtk_check_button_new_with_mnemonic(_("Remove when _typing in conversation window")); |
| 775 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); | |
| 776 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), notify_opts & OPT_NOTIFY_TYPE); | |
| 777 g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(options_toggle_cb), GINT_TO_POINTER(OPT_NOTIFY_TYPE)); | |
| 3565 | 778 |
| 6302 | 779 gtk_widget_show_all(ret); |
| 780 return ret; | |
| 3374 | 781 } |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
782 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
783 static gboolean |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
784 plugin_load(GaimPlugin *plugin) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
785 { |
| 6302 | 786 GList *cnv = gaim_get_conversations(); |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
787 void *conv_handle = gaim_conversations_get_handle(); |
| 6302 | 788 |
| 789 my_plugin = plugin; | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
790 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
791 load_notify_prefs(); |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
792 |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
793 gaim_signal_connect(conv_handle, "received-im-msg", |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
794 plugin, GAIM_CALLBACK(im_recv_im), NULL); |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
795 gaim_signal_connect(conv_handle, "received-chat-msg", |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
796 plugin, GAIM_CALLBACK(chat_recv_im), NULL); |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
797 gaim_signal_connect(conv_handle, "sent-im-msg", |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
798 plugin, GAIM_CALLBACK(im_sent_im), NULL); |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
799 gaim_signal_connect(conv_handle, "sent-chat-msg", |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
800 plugin, GAIM_CALLBACK(chat_sent_im), NULL); |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
801 gaim_signal_connect(conv_handle, "conversation-created", |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
802 plugin, GAIM_CALLBACK(new_conv), NULL); |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
803 gaim_signal_connect(conv_handle, "chat-joined", |
|
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
804 plugin, GAIM_CALLBACK(chat_join), NULL); |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
805 |
| 6302 | 806 while (cnv) { |
| 807 GaimConversation *c = (GaimConversation *)cnv->data; | |
| 808 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); | |
| 809 | |
| 810 /* attach signals */ | |
| 811 attach_signals(c); | |
| 812 /* zero out data */ | |
| 813 g_object_set_data(G_OBJECT(gtkwin->window), GDATASTR, GINT_TO_POINTER((guint)0)); | |
| 814 g_object_set_data(G_OBJECT(gtkwin->window), GDATASTRCNT, GINT_TO_POINTER((guint)0)); | |
| 815 | |
| 816 cnv = cnv->next; | |
| 817 } | |
| 818 | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
819 return TRUE; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
820 } |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
821 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
822 static gboolean |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
823 plugin_unload(GaimPlugin *plugin) |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
824 { |
| 6302 | 825 GList *cnv = gaim_get_conversations(); |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
826 |
| 6302 | 827 while (cnv) { |
| 828 GaimConversation *c = (GaimConversation *)cnv->data; | |
| 829 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(gaim_conversation_get_window(c)); | |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
830 |
| 6302 | 831 /* kill signals */ |
| 832 detach_signals(c); | |
| 833 /* zero out data */ | |
| 834 g_object_set_data(G_OBJECT(gtkwin->window), GDATASTR, GINT_TO_POINTER((guint)0)); | |
| 835 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
|
836 |
| 6302 | 837 cnv = cnv->next; |
|
5205
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 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
840 return TRUE; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
841 } |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
842 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
843 static GaimGtkPluginUiInfo ui_info = |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
844 { |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
845 get_config_frame |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
846 }; |
|
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 static GaimPluginInfo info = |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
849 { |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
850 2, /**< api_version */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
851 GAIM_PLUGIN_STANDARD, /**< type */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
852 GAIM_GTK_PLUGIN_TYPE, /**< ui_requirement */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
853 0, /**< flags */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
854 NULL, /**< dependencies */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
855 GAIM_PRIORITY_DEFAULT, /**< priority */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
856 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
857 NOTIFY_PLUGIN_ID, /**< id */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
858 N_("Message Notification"), /**< name */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
859 VERSION, /**< version */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
860 /** summary */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
861 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
|
862 /** description */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
863 N_("Provides a variety of ways of notifying you of unread messages."), |
| 6302 | 864 "Etan Reisner <deryni@eden.rutgers.edu>\n\t\t\tBrian Tarricone <bjt23@cornell.edu", |
| 865 /**< author */ | |
|
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6464
diff
changeset
|
866 GAIM_WEBSITE, /**< homepage */ |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
867 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
868 plugin_load, /**< load */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
869 plugin_unload, /**< unload */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
870 NULL, /**< destroy */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
871 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
872 &ui_info, /**< ui_info */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
873 NULL /**< extra_info */ |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
874 }; |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
875 |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
876 static void |
|
5920
7d385de2f9cd
[gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
877 init_plugin(GaimPlugin *plugin) |
|
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
878 { |
| 6302 | 879 gaim_prefs_add_none("/plugins/gtk"); |
| 880 gaim_prefs_add_none("/plugins/gtk/X11"); | |
| 881 gaim_prefs_add_none("/plugins/gtk/X11/notify"); | |
| 882 | |
| 6464 | 883 gaim_prefs_add_bool("/plugins/gtk/X11/notify/type_im", TRUE); |
| 884 gaim_prefs_add_bool("/plugins/gtk/X11/notify/type_chat", FALSE); | |
| 885 gaim_prefs_add_bool("/plugins/gtk/X11/notify/type_focused", FALSE); | |
| 6302 | 886 gaim_prefs_add_bool("/plugins/gtk/X11/notify/method_string", FALSE); |
| 887 gaim_prefs_add_string("/plugins/gtk/X11/notify/title_string", "(*)"); | |
| 888 gaim_prefs_add_bool("/plugins/gtk/X11/notify/method_urgent", FALSE); | |
| 889 gaim_prefs_add_bool("/plugins/gtk/X11/notify/method_count", FALSE); | |
| 890 gaim_prefs_add_bool("/plugins/gtk/X11/notify/notify_focus", FALSE); | |
| 891 gaim_prefs_add_bool("/plugins/gtk/X11/notify/notify_click", FALSE); | |
| 892 gaim_prefs_add_bool("/plugins/gtk/X11/notify/notify_type", TRUE); | |
| 6464 | 893 gaim_prefs_add_bool("/plugins/gtk/X11/notify/notify_send", TRUE); |
| 894 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
|
895 } |
|
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5021
diff
changeset
|
896 |
| 6063 | 897 GAIM_INIT_PLUGIN(notify, init_plugin, info) |
