plugins/win32/winprefs/winprefs.c

Tue, 28 Feb 2006 01:27:12 +0000

author
Shawn Outman
date
Tue, 28 Feb 2006 01:27:12 +0000
changeset 13343
8eacd84b1599
parent 13293
fb00915c7c47
child 13769
ba5d9c762c1d
permissions
-rw-r--r--

[gaim-migrate @ 15712]
SF Patch #1439221 from Shawn Outman

"The fix that allowed the message window to blink with
the first message in the conversation also allowed it
to blink with system messages, including those from the
Buddy State Notification plugin.

This patch modifies winprefs to not flash for system
messages, which is how it is in 1.5 and 2.0beta1 & 2.
(The first message in the conversation still causes it
to blink, however)."

committer: Richard Laager <rlaager@pidgin.im>

4134
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
1 /*
6409
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
2 * gaim - WinGaim Options Plugin
4134
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
3 *
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
4 * Gaim is the legal property of its developers, whose names are too numerous
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
6 * source distribution.
6409
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
7 *
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
8 * This program is free software; you can redistribute it and/or modify
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
9 * it under the terms of the GNU General Public License as published by
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
4134
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
11 * (at your option) any later version.
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
12 *
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
13 * This program is distributed in the hope that it will be useful,
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
16 * GNU General Public License for more details.
4134
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
17 *
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
18 * You should have received a copy of the GNU General Public License
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
19 * along with this program; if not, write to the Free Software
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
4134
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
21 *
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
22 */
11709
da6e9cd5f6d9 [gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents: 11601
diff changeset
23 #include <gtk/gtk.h>
6409
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
24 #include <gdk/gdkwin32.h>
5912
32619a71edd2 [gaim-migrate @ 6344]
Herman Bloggs <herman@bluedigits.com>
parents: 5854
diff changeset
25
32619a71edd2 [gaim-migrate @ 6344]
Herman Bloggs <herman@bluedigits.com>
parents: 5854
diff changeset
26 #include "internal.h"
32619a71edd2 [gaim-migrate @ 6344]
Herman Bloggs <herman@bluedigits.com>
parents: 5854
diff changeset
27
6494
21e66a116e2a [gaim-migrate @ 7009]
Herman Bloggs <herman@bluedigits.com>
parents: 6436
diff changeset
28 #include "core.h"
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
29 #include "debug.h"
5912
32619a71edd2 [gaim-migrate @ 6344]
Herman Bloggs <herman@bluedigits.com>
parents: 5854
diff changeset
30 #include "prefs.h"
8760
8deb81b23558 [gaim-migrate @ 9515]
Kevin Stange <kstange@pidgin.im>
parents: 8749
diff changeset
31 #include "signals.h"
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9795
diff changeset
32 #include "version.h"
5912
32619a71edd2 [gaim-migrate @ 6344]
Herman Bloggs <herman@bluedigits.com>
parents: 5854
diff changeset
33
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
34 #include "gtkappbar.h"
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
35 #include "gtkblist.h"
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
36 #include "gtkconv.h"
5224
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
37 #include "gtkplugin.h"
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
38 #include "gtkprefs.h"
5912
32619a71edd2 [gaim-migrate @ 6344]
Herman Bloggs <herman@bluedigits.com>
parents: 5854
diff changeset
39 #include "gtkutils.h"
4134
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
40
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
41 /*
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
42 * MACROS & DEFINES
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
43 */
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
44 #define WINPREFS_PLUGIN_ID "gtk-win-prefs"
4134
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
45
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
46 /*
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
47 * LOCALS
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
48 */
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
49 static const char *PREF_DBLIST_DOCKABLE = "/plugins/gtk/win32/winprefs/dblist_dockable";
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
50 static const char *PREF_DBLIST_DOCKED = "/plugins/gtk/win32/winprefs/dblist_docked";
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
51 static const char *PREF_DBLIST_HEIGHT = "/plugins/gtk/win32/winprefs/dblist_height";
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
52 static const char *PREF_DBLIST_SIDE = "/plugins/gtk/win32/winprefs/dblist_side";
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
53 static const char *PREF_BLIST_ON_TOP = "/plugins/gtk/win32/winprefs/blist_on_top";
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
54 static const char *PREF_IM_BLINK = "/plugins/gtk/win32/winprefs/im_blink";
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
55
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
56 /* Deprecated */
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
57 static const char *PREF_DBLIST_ON_TOP = "/plugins/gtk/win32/winprefs/dblist_on_top";
6436
f2bf79a9db81 [gaim-migrate @ 6944]
Herman Bloggs <herman@bluedigits.com>
parents: 6409
diff changeset
58
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
59 static GaimPlugin *handle = NULL;
6409
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
60 static GtkAppBar *blist_ab = NULL;
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
61 static GtkWidget *blist = NULL;
4134
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
62
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
63 /* flash info */
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
64
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
65 struct _WGAIM_FLASH_INFO {
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
66 guint t_handle;
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
67 guint sig_handler;
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
68 };
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
69
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
70 enum {
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
71 BLIST_TOP_NEVER = 0,
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
72 BLIST_TOP_ALWAYS,
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
73 BLIST_TOP_DOCKED,
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
74 };
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
75
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
76 typedef struct _WGAIM_FLASH_INFO WGAIM_FLASH_INFO;
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
77
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
78 typedef BOOL (CALLBACK* LPFNFLASHWINDOWEX)(PFLASHWINFO);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
79
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
80 static LPFNFLASHWINDOWEX MyFlashWindowEx = NULL;
4134
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
81
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
82 /*
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
83 * CODE
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
84 */
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
85
6409
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
86 /* BLIST DOCKING */
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
87
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
88 static void blist_save_state() {
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
89 if(blist_ab) {
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
90 if(gaim_prefs_get_bool(PREF_DBLIST_DOCKABLE) && blist_ab->docked) {
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
91 gaim_prefs_set_int(PREF_DBLIST_HEIGHT, blist_ab->undocked_height);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
92 gaim_prefs_set_int(PREF_DBLIST_SIDE, blist_ab->side);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
93 gaim_prefs_set_bool(PREF_DBLIST_DOCKED, blist_ab->docked);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
94 } else
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
95 gaim_prefs_set_bool(PREF_DBLIST_DOCKED, FALSE);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
96 }
6436
f2bf79a9db81 [gaim-migrate @ 6944]
Herman Bloggs <herman@bluedigits.com>
parents: 6409
diff changeset
97 }
f2bf79a9db81 [gaim-migrate @ 6944]
Herman Bloggs <herman@bluedigits.com>
parents: 6409
diff changeset
98
f2bf79a9db81 [gaim-migrate @ 6944]
Herman Bloggs <herman@bluedigits.com>
parents: 6409
diff changeset
99 static void blist_set_ontop(gboolean val) {
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
100 if(!blist)
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
101 return;
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
102
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
103 if(val)
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
104 SetWindowPos(GDK_WINDOW_HWND(blist->window), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
105 else
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
106 SetWindowPos(GDK_WINDOW_HWND(blist->window), HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
107
6436
f2bf79a9db81 [gaim-migrate @ 6944]
Herman Bloggs <herman@bluedigits.com>
parents: 6409
diff changeset
108 }
f2bf79a9db81 [gaim-migrate @ 6944]
Herman Bloggs <herman@bluedigits.com>
parents: 6409
diff changeset
109
f2bf79a9db81 [gaim-migrate @ 6944]
Herman Bloggs <herman@bluedigits.com>
parents: 6409
diff changeset
110 static void blist_dock_cb(gboolean val) {
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
111 if(val) {
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
112 gaim_debug_info(WINPREFS_PLUGIN_ID, "Blist Docking..\n");
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
113 if(gaim_prefs_get_int(PREF_BLIST_ON_TOP) != BLIST_TOP_NEVER)
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
114 blist_set_ontop(TRUE);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
115 } else {
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
116 gaim_debug_info(WINPREFS_PLUGIN_ID, "Blist Undocking..\n");
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
117 if(gaim_prefs_get_int(PREF_BLIST_ON_TOP) == BLIST_TOP_ALWAYS)
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
118 blist_set_ontop(TRUE);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
119 else
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
120 blist_set_ontop(FALSE);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
121 }
6409
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
122 }
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
123
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
124 static void blist_set_dockable(gboolean val) {
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
125 if(val) {
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
126 if(blist_ab == NULL && blist != NULL) {
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
127 blist_ab = gtk_appbar_add(blist);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
128 gtk_appbar_add_dock_cb(blist_ab, blist_dock_cb);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
129 }
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
130 } else {
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
131 if(blist_ab != NULL) {
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
132 gtk_appbar_remove(blist_ab);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
133 blist_ab = NULL;
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
134 }
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
135
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
136 if(gaim_prefs_get_int(PREF_BLIST_ON_TOP) == BLIST_TOP_ALWAYS)
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
137 blist_set_ontop(TRUE);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
138 else
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
139 blist_set_ontop(FALSE);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
140 }
6409
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
141 }
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
142
6436
f2bf79a9db81 [gaim-migrate @ 6944]
Herman Bloggs <herman@bluedigits.com>
parents: 6409
diff changeset
143 /* PLUGIN CALLBACKS */
f2bf79a9db81 [gaim-migrate @ 6944]
Herman Bloggs <herman@bluedigits.com>
parents: 6409
diff changeset
144
f2bf79a9db81 [gaim-migrate @ 6944]
Herman Bloggs <herman@bluedigits.com>
parents: 6409
diff changeset
145 /* We need this because the blist destroy cb won't be called before the
f2bf79a9db81 [gaim-migrate @ 6944]
Herman Bloggs <herman@bluedigits.com>
parents: 6409
diff changeset
146 plugin is unloaded, when quitting */
6409
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
147 static void gaim_quit_cb() {
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
148 gaim_debug_info(WINPREFS_PLUGIN_ID, "gaim_quit_cb: removing appbar\n");
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
149 blist_save_state();
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
150 blist_set_dockable(FALSE);
6409
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
151 }
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
152
10530
8dc238880e48 [gaim-migrate @ 11856]
Daniel Atallah <datallah@pidgin.im>
parents: 9954
diff changeset
153 static void blist_create_cb(GaimBuddyList *gaim_blist, void *data) {
8dc238880e48 [gaim-migrate @ 11856]
Daniel Atallah <datallah@pidgin.im>
parents: 9954
diff changeset
154 gaim_debug_info(WINPREFS_PLUGIN_ID, "buddy list created\n");
6436
f2bf79a9db81 [gaim-migrate @ 6944]
Herman Bloggs <herman@bluedigits.com>
parents: 6409
diff changeset
155
10530
8dc238880e48 [gaim-migrate @ 11856]
Daniel Atallah <datallah@pidgin.im>
parents: 9954
diff changeset
156 blist = GAIM_GTK_BLIST(gaim_blist)->window;
6436
f2bf79a9db81 [gaim-migrate @ 6944]
Herman Bloggs <herman@bluedigits.com>
parents: 6409
diff changeset
157
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
158 if(gaim_prefs_get_bool(PREF_DBLIST_DOCKABLE)) {
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
159 blist_set_dockable(TRUE);
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
160 if(gaim_prefs_get_bool(PREF_DBLIST_DOCKED)) {
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
161 blist_ab->undocked_height = gaim_prefs_get_int(PREF_DBLIST_HEIGHT);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
162 gtk_appbar_dock(blist_ab,
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
163 gaim_prefs_get_int(PREF_DBLIST_SIDE));
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
164 if(gaim_prefs_get_int(PREF_BLIST_ON_TOP) == BLIST_TOP_DOCKED)
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
165 blist_set_ontop(TRUE);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
166 }
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
167 }
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
168
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
169 if(gaim_prefs_get_int(PREF_BLIST_ON_TOP) == BLIST_TOP_ALWAYS)
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
170 blist_set_ontop(TRUE);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
171
6409
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
172 }
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
173
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
174 /* AUTOSTART */
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
175
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
176 static gboolean open_run_key(PHKEY phKey, REGSAM samDesired) {
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
177 /* First try current user key (for WinNT & Win2k +), fall back to local machine */
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
178 if(ERROR_SUCCESS == RegOpenKeyEx(HKEY_CURRENT_USER,
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
179 "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
180 0, samDesired, phKey));
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
181 else if(ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE,
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
182 "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
183 0, samDesired, phKey));
4134
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
184 else {
8760
8deb81b23558 [gaim-migrate @ 9515]
Kevin Stange <kstange@pidgin.im>
parents: 8749
diff changeset
185 gaim_debug_error(WINPREFS_PLUGIN_ID, "open_run_key: Could not open key for writing value\n");
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
186 return FALSE;
4134
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
187 }
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
188 return TRUE;
4134
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
189 }
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
190
6409
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
191 /* WIN PREFS GENERAL */
4134
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
192
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
193 static void
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
194 winprefs_set_autostart(GtkWidget *w)
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
195 {
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
196 HKEY hKey;
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
197
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
198 if(!open_run_key(&hKey, KEY_SET_VALUE))
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
199 return;
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
200 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
201 char buffer[1024];
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
202 DWORD size;
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
203
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
204 if((size = GetModuleFileName(wgaim_hinstance(),
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
205 (LPBYTE) buffer , sizeof(buffer))) == 0) {
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
206 gaim_debug_error(WINPREFS_PLUGIN_ID, "GetModuleFileName Error. Could not set Gaim autostart.\n");
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
207 RegCloseKey(hKey);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
208 return;
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
209 }
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
210
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
211 /* Now set value of new key */
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
212 if(ERROR_SUCCESS != RegSetValueEx(hKey, "Gaim", 0, REG_SZ, buffer, size))
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
213 gaim_debug_error(WINPREFS_PLUGIN_ID, "Could not set registry key value\n");
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
214 } else {
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
215 if(ERROR_SUCCESS != RegDeleteValue(hKey, "Gaim"))
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
216 gaim_debug_error(WINPREFS_PLUGIN_ID, "Could not delete registry key value\n");
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
217 }
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
218 RegCloseKey(hKey);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
219 }
4134
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
220
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
221 static void
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
222 winprefs_set_blist_dockable(const char *pref, GaimPrefType type,
12816
5f93e09fa9a6 [gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents: 12537
diff changeset
223 gconstpointer value, gpointer user_data)
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
224 {
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
225 blist_set_dockable(GPOINTER_TO_INT(value));
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
226 }
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
227
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
228 static void
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
229 winprefs_set_blist_ontop(const char *pref, GaimPrefType type,
12816
5f93e09fa9a6 [gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents: 12537
diff changeset
230 gconstpointer value, gpointer user_data)
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
231 {
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
232 gint setting = gaim_prefs_get_int(PREF_BLIST_ON_TOP);
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
233 if((setting == BLIST_TOP_DOCKED && blist_ab && blist_ab->docked)
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
234 || setting == BLIST_TOP_ALWAYS)
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
235 blist_set_ontop(TRUE);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
236 else
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
237 blist_set_ontop(FALSE);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
238 }
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
239
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
240 static void load_winver_specific_procs(void) {
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
241 /* Used for Win98+ and WinNT5+ */
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
242 MyFlashWindowEx = (LPFNFLASHWINDOWEX) wgaim_find_and_loadproc("user32.dll", "FlashWindowEx");
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
243 }
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
244
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
245 /* Window flasher */
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
246 static gboolean flash_window_cb(gpointer data) {
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
247 FlashWindow((HWND) data, TRUE);
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
248 return TRUE;
4134
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
249 }
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
250
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
251 static int
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
252 halt_flash_filter(GtkWidget *widget, GdkEventFocus *event, gpointer data)
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
253 {
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
254 if(MyFlashWindowEx) {
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
255 HWND hWnd = data;
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
256 FLASHWINFO info;
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
257
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
258 if(!IsWindow(hWnd))
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
259 return 0;
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
260
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
261 memset(&info, 0, sizeof(FLASHWINFO));
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
262 info.cbSize = sizeof(FLASHWINFO);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
263 info.hwnd = hWnd;
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
264 info.dwFlags = FLASHW_STOP;
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
265 info.dwTimeout = 0;
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
266 MyFlashWindowEx(&info);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
267
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
268 } else {
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
269 WGAIM_FLASH_INFO *finfo = data;
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
270 /* Stop flashing and remove filter */
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
271 gaim_debug(GAIM_DEBUG_INFO, "wgaim", "Removing timeout\n");
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
272 gaim_timeout_remove(finfo->t_handle);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
273 gaim_debug(GAIM_DEBUG_INFO, "wgaim", "Disconnecting signal handler\n");
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
274 g_signal_handler_disconnect(G_OBJECT(widget),
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
275 finfo->sig_handler);
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
276 gaim_debug(GAIM_DEBUG_INFO, "wgaim", "done\n");
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
277 g_free(finfo);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
278 }
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
279 return 0;
6409
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
280 }
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
281
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
282 /* FlashWindowEx is only supported by Win98+ and WinNT5+. If it's
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
283 not supported we do it our own way */
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
284 static gboolean
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
285 wgaim_conv_im_blink(GaimAccount *account, const char *who, char **message,
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
286 GaimConversation *conv, int flags, void *data)
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
287 {
11590
5bc4443c5407 [gaim-migrate @ 13860]
Daniel Atallah <datallah@pidgin.im>
parents: 11440
diff changeset
288 GaimGtkWindow *win;
11440
b9f3c9c82b13 [gaim-migrate @ 13677]
Daniel Atallah <datallah@pidgin.im>
parents: 11338
diff changeset
289 GtkWidget *window;
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
290
13343
8eacd84b1599 [gaim-migrate @ 15712]
Shawn Outman
parents: 13293
diff changeset
291 /* Don't flash for our own messages or system messages */
8eacd84b1599 [gaim-migrate @ 15712]
Shawn Outman
parents: 13293
diff changeset
292 if(flags & GAIM_MESSAGE_SEND || flags & GAIM_MESSAGE_SYSTEM)
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
293 return FALSE;
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
294
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
295 if(!gaim_prefs_get_bool(PREF_IM_BLINK))
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
296 return FALSE;
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
297
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
298 if(conv == NULL) {
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
299 gaim_debug_info("winprefs", "gar!\n");
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
300 return FALSE;
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
301 }
11590
5bc4443c5407 [gaim-migrate @ 13860]
Daniel Atallah <datallah@pidgin.im>
parents: 11440
diff changeset
302 win = gaim_gtkconv_get_window(GAIM_GTK_CONVERSATION(conv));
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
303 if(win == NULL) {
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
304 gaim_debug_info("winprefs", "gar2!\n");
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
305 return FALSE;
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
306 }
11590
5bc4443c5407 [gaim-migrate @ 13860]
Daniel Atallah <datallah@pidgin.im>
parents: 11440
diff changeset
307 window = win->window;
6436
f2bf79a9db81 [gaim-migrate @ 6944]
Herman Bloggs <herman@bluedigits.com>
parents: 6409
diff changeset
308
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
309 if(MyFlashWindowEx) {
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
310 FLASHWINFO info;
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
311 if(GetForegroundWindow() == GDK_WINDOW_HWND(window->window))
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
312 return FALSE;
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
313
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
314 memset(&info, 0, sizeof(FLASHWINFO));
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
315 info.cbSize = sizeof(FLASHWINFO);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
316 info.hwnd = GDK_WINDOW_HWND(window->window);
12537
2d8fe5746c5d [gaim-migrate @ 14850]
Daniel Atallah <datallah@pidgin.im>
parents: 11957
diff changeset
317 info.dwFlags = FLASHW_ALL | FLASHW_TIMER;
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
318 info.dwTimeout = 0;
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
319 MyFlashWindowEx(&info);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
320 /* Stop flashing when window receives focus */
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
321 g_signal_connect(G_OBJECT(window), "focus-in-event",
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
322 G_CALLBACK(halt_flash_filter), info.hwnd);
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
323 } else {
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
324 WGAIM_FLASH_INFO *finfo = g_new0(WGAIM_FLASH_INFO, 1);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
325
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
326 /* Start Flashing window */
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
327 finfo->t_handle = gaim_timeout_add(1000, flash_window_cb,
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
328 GDK_WINDOW_HWND(window->window));
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
329 finfo->sig_handler = g_signal_connect(G_OBJECT(window),
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
330 "focus-in-event", G_CALLBACK(halt_flash_filter), finfo);
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
331 }
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
332
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
333 return FALSE;
6436
f2bf79a9db81 [gaim-migrate @ 6944]
Herman Bloggs <herman@bluedigits.com>
parents: 6409
diff changeset
334 }
f2bf79a9db81 [gaim-migrate @ 6944]
Herman Bloggs <herman@bluedigits.com>
parents: 6409
diff changeset
335
6409
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
336
4134
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
337 /*
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
338 * EXPORTED FUNCTIONS
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
339 */
6409
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
340
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
341 static gboolean plugin_load(GaimPlugin *plugin) {
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
342 /* Find out how to go blinky */
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
343 load_winver_specific_procs();
6409
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
344
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
345 handle = plugin;
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
346
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
347 /* blist docking init */
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
348 if(gaim_get_blist() && GAIM_GTK_BLIST(gaim_get_blist())
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
349 && GAIM_GTK_BLIST(gaim_get_blist())->window) {
10530
8dc238880e48 [gaim-migrate @ 11856]
Daniel Atallah <datallah@pidgin.im>
parents: 9954
diff changeset
350 blist_create_cb(gaim_get_blist(), NULL);
8dc238880e48 [gaim-migrate @ 11856]
Daniel Atallah <datallah@pidgin.im>
parents: 9954
diff changeset
351 }
6409
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
352
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
353 /* This really shouldn't happen anymore generally, but if for some strange
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
354 reason, the blist is recreated, we need to set it up again. */
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
355 gaim_signal_connect(gaim_gtk_blist_get_handle(), "gtkblist-created",
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
356 plugin, GAIM_CALLBACK(blist_create_cb), NULL);
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
357
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
358 gaim_signal_connect(gaim_gtk_conversations_get_handle(),
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
359 "displaying-im-msg", plugin, GAIM_CALLBACK(wgaim_conv_im_blink),
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
360 NULL);
6436
f2bf79a9db81 [gaim-migrate @ 6944]
Herman Bloggs <herman@bluedigits.com>
parents: 6409
diff changeset
361
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
362 gaim_signal_connect((void*)gaim_get_core(), "quitting", plugin,
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
363 GAIM_CALLBACK(gaim_quit_cb), NULL);
6409
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
364
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
365 gaim_prefs_connect_callback(handle, PREF_BLIST_ON_TOP,
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
366 winprefs_set_blist_ontop, NULL);
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
367 gaim_prefs_connect_callback(handle, PREF_DBLIST_DOCKABLE,
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
368 winprefs_set_blist_dockable, NULL);
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
369
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
370 return TRUE;
6409
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
371 }
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
372
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
373 static gboolean plugin_unload(GaimPlugin *plugin) {
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
374 blist_set_dockable(FALSE);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
375 blist_set_ontop(FALSE);
11033
dc68e074f10d [gaim-migrate @ 12919]
Etan Reisner <deryni@pidgin.im>
parents: 11003
diff changeset
376
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
377 return TRUE;
6409
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
378 }
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
379
5224
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
380 static GtkWidget* get_config_frame(GaimPlugin *plugin) {
4134
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
381 GtkWidget *ret;
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
382 GtkWidget *vbox;
4134
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
383 GtkWidget *button;
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
384 char* gtk_version = NULL;
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
385 HKEY hKey = HKEY_CURRENT_USER;
4134
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
386
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
387 ret = gtk_vbox_new(FALSE, 18);
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
388 gtk_container_set_border_width(GTK_CONTAINER(ret), 12);
4134
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
389
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
390 gtk_version = g_strdup_printf("GTK+\t%u.%u.%u\nGlib\t%u.%u.%u",
11601
cf72b616ceb3 [gaim-migrate @ 13872]
Daniel Atallah <datallah@pidgin.im>
parents: 11590
diff changeset
391 gtk_major_version, gtk_minor_version, gtk_micro_version,
cf72b616ceb3 [gaim-migrate @ 13872]
Daniel Atallah <datallah@pidgin.im>
parents: 11590
diff changeset
392 glib_major_version, glib_minor_version, glib_micro_version);
6436
f2bf79a9db81 [gaim-migrate @ 6944]
Herman Bloggs <herman@bluedigits.com>
parents: 6409
diff changeset
393
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
394 /* Display Installed GTK+ Runtime Version */
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
395 if(gtk_version) {
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
396 GtkWidget *label;
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
397 vbox = gaim_gtk_make_frame(ret, _("GTK+ Runtime Version"));
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
398 label = gtk_label_new(gtk_version);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
399 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
400 gtk_widget_show(label);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
401 g_free(gtk_version);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
402 }
6409
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
403
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
404 /* Autostart */
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
405 vbox = gaim_gtk_make_frame(ret, _("Startup"));
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
406 button = gtk_check_button_new_with_mnemonic(_("_Start Gaim on Windows startup"));
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
407 gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0);
4134
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
408 if(open_run_key(&hKey, KEY_QUERY_VALUE)) {
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
409 if(ERROR_SUCCESS == RegQueryValueEx(hKey, "Gaim", 0, NULL, NULL, NULL)) {
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
410 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE);
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
411 }
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
412 }
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
413 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(winprefs_set_autostart), NULL);
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
414 gtk_widget_show(button);
4134
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
415
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
416 /* Buddy List */
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
417 vbox = gaim_gtk_make_frame(ret, _("Buddy List"));
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
418 gaim_gtk_prefs_checkbox(_("_Dockable Buddy List"),
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
419 PREF_DBLIST_DOCKABLE, vbox);
6436
f2bf79a9db81 [gaim-migrate @ 6944]
Herman Bloggs <herman@bluedigits.com>
parents: 6409
diff changeset
420
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
421 /* Blist On Top */
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
422 gaim_gtk_prefs_dropdown(vbox, _("_Keep Buddy List window on top:"),
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
423 GAIM_PREF_INT, PREF_BLIST_ON_TOP,
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
424 _("Never"), BLIST_TOP_NEVER,
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
425 _("Always"), BLIST_TOP_ALWAYS,
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
426 /* XXX: Did this ever work? */
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
427 _("Only when docked"), BLIST_TOP_DOCKED,
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
428 NULL);
6436
f2bf79a9db81 [gaim-migrate @ 6944]
Herman Bloggs <herman@bluedigits.com>
parents: 6409
diff changeset
429
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
430 /* Conversations */
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
431 vbox = gaim_gtk_make_frame(ret, _("Conversations"));
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
432 gaim_gtk_prefs_checkbox(_("_Flash window when messages are received"),
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
433 PREF_IM_BLINK, vbox);
6436
f2bf79a9db81 [gaim-migrate @ 6944]
Herman Bloggs <herman@bluedigits.com>
parents: 6409
diff changeset
434
4134
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
435 gtk_widget_show_all(ret);
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
436 return ret;
c297a5e45ce4 [gaim-migrate @ 4352]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
437 }
5224
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
438
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
439 static GaimGtkPluginUiInfo ui_info =
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
440 {
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
441 get_config_frame,
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
442 0
5224
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
443 };
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
444
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
445 static GaimPluginInfo info =
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
446 {
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9795
diff changeset
447 GAIM_PLUGIN_MAGIC,
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9795
diff changeset
448 GAIM_MAJOR_VERSION,
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9795
diff changeset
449 GAIM_MINOR_VERSION,
5224
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
450 GAIM_PLUGIN_STANDARD,
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
451 GAIM_GTK_PLUGIN_TYPE,
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
452 0,
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
453 NULL,
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
454 GAIM_PRIORITY_DEFAULT,
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
455 WINPREFS_PLUGIN_ID,
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
456 N_("WinGaim Options"),
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
457 VERSION,
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
458 N_("Options specific to Windows Gaim."),
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
459 N_("Provides options specific to Windows Gaim, such as buddy list docking and conversation flashing."),
5224
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
460 "Herman Bloggs <hermanator12002@yahoo.com>",
6409
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
461 GAIM_WEBSITE,
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
462 plugin_load,
ea9ba622db3f [gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents: 6063
diff changeset
463 plugin_unload,
5224
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
464 NULL,
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
465 &ui_info,
8993
41f67bceab41 [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8772
diff changeset
466 NULL,
41f67bceab41 [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8772
diff changeset
467 NULL,
5224
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
468 NULL
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
469 };
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
470
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
471 static void
5798
d60e39f7fa1d [gaim-migrate @ 6223]
Christian Hammond <chipx86@chipx86.com>
parents: 5795
diff changeset
472 init_plugin(GaimPlugin *plugin)
5224
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
473 {
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
474 gaim_prefs_add_none("/plugins/gtk");
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
475 gaim_prefs_add_none("/plugins/gtk/win32");
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
476 gaim_prefs_add_none("/plugins/gtk/win32/winprefs");
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
477 gaim_prefs_add_bool(PREF_DBLIST_DOCKABLE, FALSE);
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
478 gaim_prefs_add_bool(PREF_DBLIST_DOCKED, FALSE);
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
479 gaim_prefs_add_int(PREF_DBLIST_HEIGHT, 0);
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
480 gaim_prefs_add_int(PREF_DBLIST_SIDE, 0);
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
481 gaim_prefs_add_bool(PREF_IM_BLINK, TRUE);
11003
7431f26d6c2e [gaim-migrate @ 12858]
Kevin Stange <kstange@pidgin.im>
parents: 10530
diff changeset
482
13293
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
483 /* Convert old preferences */
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
484 if(gaim_prefs_exists(PREF_DBLIST_ON_TOP)) {
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
485 gint blist_top = BLIST_TOP_NEVER;
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
486 if(gaim_prefs_get_bool(PREF_BLIST_ON_TOP))
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
487 blist_top = BLIST_TOP_ALWAYS;
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
488 else if(gaim_prefs_get_bool(PREF_DBLIST_ON_TOP))
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
489 blist_top = BLIST_TOP_DOCKED;
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
490 gaim_prefs_remove(PREF_BLIST_ON_TOP);
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
491 gaim_prefs_remove(PREF_DBLIST_ON_TOP);
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
492 gaim_prefs_add_int(PREF_BLIST_ON_TOP, blist_top);
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
493 } else
fb00915c7c47 [gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents: 12913
diff changeset
494 gaim_prefs_add_int(PREF_BLIST_ON_TOP, BLIST_TOP_NEVER);
5224
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
495 }
8cb89f5b912a [gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents: 4606
diff changeset
496
6063
8fbafa2e1846 [gaim-migrate @ 6513]
Nathan Walp <nwalp@pidgin.im>
parents: 5912
diff changeset
497 GAIM_INIT_PLUGIN(winprefs, init_plugin, info)

mercurial