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