Fri, 12 May 2006 02:50:23 +0000
[gaim-migrate @ 16179]
Fix Registry key leakage.
| 4134 | 1 | /* |
|
6409
ea9ba622db3f
[gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
2 | * gaim - WinGaim Options Plugin |
| 4134 | 3 | * |
| 11003 | 4 | * Gaim is the legal property of its developers, whose names are too numerous |
| 5 | * to list here. Please refer to the COPYRIGHT file distributed with this | |
| 6 | * source distribution. | |
|
6409
ea9ba622db3f
[gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
7 | * |
| 11003 | 8 | * This program is free software; you can redistribute it and/or modify |
| 9 | * it under the terms of the GNU General Public License as published by | |
| 10 | * the Free Software Foundation; either version 2 of the License, or | |
| 4134 | 11 | * (at your option) any later version. |
| 12 | * | |
| 11003 | 13 | * This program is distributed in the hope that it will be useful, |
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 16 | * GNU General Public License for more details. | |
| 4134 | 17 | * |
| 11003 | 18 | * You should have received a copy of the GNU General Public License |
| 19 | * along with this program; if not, write to the Free Software | |
| 20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 4134 | 21 | * |
| 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 | 29 | #include "debug.h" |
|
5912
32619a71edd2
[gaim-migrate @ 6344]
Herman Bloggs <herman@bluedigits.com>
parents:
5854
diff
changeset
|
30 | #include "prefs.h" |
| 8760 | 31 | #include "signals.h" |
| 9954 | 32 | #include "version.h" |
|
5912
32619a71edd2
[gaim-migrate @ 6344]
Herman Bloggs <herman@bluedigits.com>
parents:
5854
diff
changeset
|
33 | |
| 11003 | 34 | #include "gtkappbar.h" |
| 35 | #include "gtkblist.h" | |
| 36 | #include "gtkconv.h" | |
|
5224
8cb89f5b912a
[gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents:
4606
diff
changeset
|
37 | #include "gtkplugin.h" |
| 11003 | 38 | #include "gtkprefs.h" |
|
5912
32619a71edd2
[gaim-migrate @ 6344]
Herman Bloggs <herman@bluedigits.com>
parents:
5854
diff
changeset
|
39 | #include "gtkutils.h" |
| 4134 | 40 | |
| 41 | /* | |
| 42 | * MACROS & DEFINES | |
| 43 | */ | |
|
13293
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
44 | #define WINPREFS_PLUGIN_ID "gtk-win-prefs" |
| 4134 | 45 | |
| 46 | /* | |
| 47 | * LOCALS | |
| 48 | */ | |
| 11003 | 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 | 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 | 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 | 62 | |
| 11003 | 63 | /* flash info */ |
| 64 | ||
| 65 | struct _WGAIM_FLASH_INFO { | |
| 66 | guint t_handle; | |
| 67 | guint sig_handler; | |
| 68 | }; | |
| 69 | ||
| 70 | enum { | |
| 71 | BLIST_TOP_NEVER = 0, | |
| 72 | BLIST_TOP_ALWAYS, | |
| 73 | BLIST_TOP_DOCKED, | |
| 74 | }; | |
| 75 | ||
| 76 | typedef struct _WGAIM_FLASH_INFO WGAIM_FLASH_INFO; | |
| 77 | ||
| 78 | typedef BOOL (CALLBACK* LPFNFLASHWINDOWEX)(PFLASHWINFO); | |
| 79 | ||
| 80 | static LPFNFLASHWINDOWEX MyFlashWindowEx = NULL; | |
| 4134 | 81 | |
| 82 | /* | |
| 83 | * CODE | |
| 84 | */ | |
| 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 | 89 | if(blist_ab) { |
| 90 | if(gaim_prefs_get_bool(PREF_DBLIST_DOCKABLE) && blist_ab->docked) { | |
| 91 | gaim_prefs_set_int(PREF_DBLIST_HEIGHT, blist_ab->undocked_height); | |
| 92 | gaim_prefs_set_int(PREF_DBLIST_SIDE, blist_ab->side); | |
| 93 | gaim_prefs_set_bool(PREF_DBLIST_DOCKED, blist_ab->docked); | |
| 94 | } else | |
| 95 | gaim_prefs_set_bool(PREF_DBLIST_DOCKED, FALSE); | |
| 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 | 101 | return; |
| 102 | ||
|
13293
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
103 | if(val) |
| 11003 | 104 | SetWindowPos(GDK_WINDOW_HWND(blist->window), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); |
| 105 | else | |
| 106 | SetWindowPos(GDK_WINDOW_HWND(blist->window), HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); | |
| 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 | 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 | 114 | blist_set_ontop(TRUE); |
| 115 | } else { | |
| 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 | 118 | blist_set_ontop(TRUE); |
| 119 | else | |
| 120 | blist_set_ontop(FALSE); | |
| 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 | 127 | blist_ab = gtk_appbar_add(blist); |
| 128 | gtk_appbar_add_dock_cb(blist_ab, blist_dock_cb); | |
| 129 | } | |
| 130 | } else { | |
|
13293
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
131 | if(blist_ab != NULL) { |
| 11003 | 132 | gtk_appbar_remove(blist_ab); |
| 133 | blist_ab = NULL; | |
| 134 | } | |
| 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 | 137 | blist_set_ontop(TRUE); |
| 138 | else | |
| 139 | blist_set_ontop(FALSE); | |
| 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 | 148 | gaim_debug_info(WINPREFS_PLUGIN_ID, "gaim_quit_cb: removing appbar\n"); |
| 149 | blist_save_state(); | |
| 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 | 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 | 161 | blist_ab->undocked_height = gaim_prefs_get_int(PREF_DBLIST_HEIGHT); |
| 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 | 165 | blist_set_ontop(TRUE); |
| 166 | } | |
| 167 | } | |
| 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 | 170 | blist_set_ontop(TRUE); |
| 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 | 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 | 184 | else { |
| 8760 | 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 | 187 | } |
|
13293
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
188 | return TRUE; |
| 4134 | 189 | } |
| 190 | ||
|
6409
ea9ba622db3f
[gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
191 | /* WIN PREFS GENERAL */ |
| 4134 | 192 | |
| 11003 | 193 | static void |
| 194 | winprefs_set_autostart(GtkWidget *w) | |
| 195 | { | |
| 196 | HKEY hKey; | |
| 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 | 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 | 201 | char buffer[1024]; |
| 202 | DWORD size; | |
| 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 | 207 | RegCloseKey(hKey); |
| 208 | return; | |
| 209 | } | |
| 210 | ||
| 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 | 213 | gaim_debug_error(WINPREFS_PLUGIN_ID, "Could not set registry key value\n"); |
| 214 | } else { | |
|
13293
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
215 | if(ERROR_SUCCESS != RegDeleteValue(hKey, "Gaim")) |
| 11003 | 216 | gaim_debug_error(WINPREFS_PLUGIN_ID, "Could not delete registry key value\n"); |
| 217 | } | |
| 218 | RegCloseKey(hKey); | |
| 219 | } | |
| 4134 | 220 | |
| 11003 | 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 | 224 | { |
| 225 | blist_set_dockable(GPOINTER_TO_INT(value)); | |
| 226 | } | |
| 227 | ||
| 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 | 231 | { |
| 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 | 234 | || setting == BLIST_TOP_ALWAYS) |
| 235 | blist_set_ontop(TRUE); | |
| 236 | else | |
| 237 | blist_set_ontop(FALSE); | |
| 238 | } | |
| 239 | ||
|
13293
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
240 | static void load_winver_specific_procs(void) { |
| 11003 | 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 | 243 | } |
| 244 | ||
| 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 | 248 | return TRUE; |
| 4134 | 249 | } |
| 250 | ||
| 11003 | 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 | 253 | { |
|
13293
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
254 | if(MyFlashWindowEx) { |
| 11003 | 255 | HWND hWnd = data; |
| 256 | FLASHWINFO info; | |
| 257 | ||
|
13293
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
258 | if(!IsWindow(hWnd)) |
| 11003 | 259 | return 0; |
| 260 | ||
| 261 | memset(&info, 0, sizeof(FLASHWINFO)); | |
| 262 | info.cbSize = sizeof(FLASHWINFO); | |
| 263 | info.hwnd = hWnd; | |
| 264 | info.dwFlags = FLASHW_STOP; | |
| 265 | info.dwTimeout = 0; | |
| 266 | MyFlashWindowEx(&info); | |
| 267 | ||
| 268 | } else { | |
| 269 | WGAIM_FLASH_INFO *finfo = data; | |
| 270 | /* Stop flashing and remove filter */ | |
| 271 | gaim_debug(GAIM_DEBUG_INFO, "wgaim", "Removing timeout\n"); | |
| 272 | gaim_timeout_remove(finfo->t_handle); | |
| 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 | 276 | gaim_debug(GAIM_DEBUG_INFO, "wgaim", "done\n"); |
| 277 | g_free(finfo); | |
| 278 | } | |
| 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 | 282 | /* FlashWindowEx is only supported by Win98+ and WinNT5+. If it's |
| 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 | 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 | 291 | /* Don't flash for our own messages or system messages */ |
| 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 | 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 | 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 | 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 | 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 | 313 | |
| 314 | memset(&info, 0, sizeof(FLASHWINFO)); | |
| 315 | info.cbSize = sizeof(FLASHWINFO); | |
| 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 | 318 | info.dwTimeout = 0; |
| 319 | MyFlashWindowEx(&info); | |
| 320 | /* Stop flashing when window receives focus */ | |
| 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 | 323 | } else { |
| 324 | WGAIM_FLASH_INFO *finfo = g_new0(WGAIM_FLASH_INFO, 1); | |
| 325 | ||
| 326 | /* Start Flashing window */ | |
| 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 | 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 | 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 | 337 | /* |
| 338 | * EXPORTED FUNCTIONS | |
| 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 | 342 | /* Find out how to go blinky */ |
| 343 | load_winver_specific_procs(); | |
|
6409
ea9ba622db3f
[gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
344 | |
| 11003 | 345 | handle = plugin; |
| 346 | ||
| 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 | 353 | /* This really shouldn't happen anymore generally, but if for some strange |
| 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 | 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 | 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 | 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 | 369 | |
| 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 | 374 | blist_set_dockable(FALSE); |
| 375 | blist_set_ontop(FALSE); | |
| 11033 | 376 | |
| 11003 | 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 | 381 | GtkWidget *ret; |
| 11003 | 382 | GtkWidget *vbox; |
| 4134 | 383 | GtkWidget *button; |
| 11003 | 384 | char* gtk_version = NULL; |
|
13769
ba5d9c762c1d
[gaim-migrate @ 16179]
Daniel Atallah <datallah@pidgin.im>
parents:
13343
diff
changeset
|
385 | HKEY hKey; |
| 4134 | 386 | |
| 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 | 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 | 394 | /* Display Installed GTK+ Runtime Version */ |
| 395 | if(gtk_version) { | |
| 396 | GtkWidget *label; | |
| 397 | vbox = gaim_gtk_make_frame(ret, _("GTK+ Runtime Version")); | |
| 398 | label = gtk_label_new(gtk_version); | |
| 399 | gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); | |
| 400 | gtk_widget_show(label); | |
| 401 | g_free(gtk_version); | |
| 402 | } | |
|
6409
ea9ba622db3f
[gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
403 | |
| 11003 | 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 | 406 | button = gtk_check_button_new_with_mnemonic(_("_Start Gaim on Windows startup")); |
| 407 | gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0); | |
| 4134 | 408 | if(open_run_key(&hKey, KEY_QUERY_VALUE)) { |
| 409 | if(ERROR_SUCCESS == RegQueryValueEx(hKey, "Gaim", 0, NULL, NULL, NULL)) { | |
| 410 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE); | |
| 411 | } | |
|
13769
ba5d9c762c1d
[gaim-migrate @ 16179]
Daniel Atallah <datallah@pidgin.im>
parents:
13343
diff
changeset
|
412 | RegCloseKey(hKey); |
| 4134 | 413 | } |
| 11003 | 414 | g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(winprefs_set_autostart), NULL); |
| 415 | gtk_widget_show(button); | |
| 4134 | 416 | |
| 11003 | 417 | /* Buddy List */ |
|
13293
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
418 | vbox = gaim_gtk_make_frame(ret, _("Buddy List")); |
| 11003 | 419 | gaim_gtk_prefs_checkbox(_("_Dockable Buddy List"), |
| 420 | PREF_DBLIST_DOCKABLE, vbox); | |
|
6436
f2bf79a9db81
[gaim-migrate @ 6944]
Herman Bloggs <herman@bluedigits.com>
parents:
6409
diff
changeset
|
421 | |
| 11003 | 422 | /* Blist On Top */ |
| 423 | 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
|
424 | GAIM_PREF_INT, PREF_BLIST_ON_TOP, |
|
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
425 | _("Never"), BLIST_TOP_NEVER, |
|
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
426 | _("Always"), BLIST_TOP_ALWAYS, |
|
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
427 | /* XXX: Did this ever work? */ |
|
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
428 | _("Only when docked"), BLIST_TOP_DOCKED, |
|
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
429 | NULL); |
|
6436
f2bf79a9db81
[gaim-migrate @ 6944]
Herman Bloggs <herman@bluedigits.com>
parents:
6409
diff
changeset
|
430 | |
| 11003 | 431 | /* Conversations */ |
|
13293
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
432 | vbox = gaim_gtk_make_frame(ret, _("Conversations")); |
| 11003 | 433 | gaim_gtk_prefs_checkbox(_("_Flash window when messages are received"), |
| 434 | PREF_IM_BLINK, vbox); | |
|
6436
f2bf79a9db81
[gaim-migrate @ 6944]
Herman Bloggs <herman@bluedigits.com>
parents:
6409
diff
changeset
|
435 | |
| 4134 | 436 | gtk_widget_show_all(ret); |
| 437 | return ret; | |
| 438 | } | |
|
5224
8cb89f5b912a
[gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents:
4606
diff
changeset
|
439 | |
|
8cb89f5b912a
[gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents:
4606
diff
changeset
|
440 | static GaimGtkPluginUiInfo ui_info = |
|
8cb89f5b912a
[gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents:
4606
diff
changeset
|
441 | { |
|
13293
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
442 | get_config_frame, |
|
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
443 | 0 |
|
5224
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 | |
|
8cb89f5b912a
[gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents:
4606
diff
changeset
|
446 | static GaimPluginInfo info = |
|
8cb89f5b912a
[gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents:
4606
diff
changeset
|
447 | { |
| 9954 | 448 | GAIM_PLUGIN_MAGIC, |
| 449 | GAIM_MAJOR_VERSION, | |
| 450 | GAIM_MINOR_VERSION, | |
|
5224
8cb89f5b912a
[gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents:
4606
diff
changeset
|
451 | GAIM_PLUGIN_STANDARD, |
|
8cb89f5b912a
[gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents:
4606
diff
changeset
|
452 | GAIM_GTK_PLUGIN_TYPE, |
|
8cb89f5b912a
[gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents:
4606
diff
changeset
|
453 | 0, |
|
8cb89f5b912a
[gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents:
4606
diff
changeset
|
454 | NULL, |
|
8cb89f5b912a
[gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents:
4606
diff
changeset
|
455 | GAIM_PRIORITY_DEFAULT, |
|
8cb89f5b912a
[gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents:
4606
diff
changeset
|
456 | WINPREFS_PLUGIN_ID, |
|
8cb89f5b912a
[gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents:
4606
diff
changeset
|
457 | N_("WinGaim Options"), |
|
8cb89f5b912a
[gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents:
4606
diff
changeset
|
458 | VERSION, |
|
8cb89f5b912a
[gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents:
4606
diff
changeset
|
459 | N_("Options specific to Windows Gaim."), |
| 11003 | 460 | 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
|
461 | "Herman Bloggs <hermanator12002@yahoo.com>", |
|
6409
ea9ba622db3f
[gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
462 | GAIM_WEBSITE, |
|
ea9ba622db3f
[gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
463 | plugin_load, |
|
ea9ba622db3f
[gaim-migrate @ 6915]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
464 | plugin_unload, |
|
5224
8cb89f5b912a
[gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents:
4606
diff
changeset
|
465 | NULL, |
|
8cb89f5b912a
[gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents:
4606
diff
changeset
|
466 | &ui_info, |
| 8993 | 467 | NULL, |
| 468 | NULL, | |
|
5224
8cb89f5b912a
[gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents:
4606
diff
changeset
|
469 | NULL |
|
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 | |
|
8cb89f5b912a
[gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents:
4606
diff
changeset
|
472 | static void |
|
5798
d60e39f7fa1d
[gaim-migrate @ 6223]
Christian Hammond <chipx86@chipx86.com>
parents:
5795
diff
changeset
|
473 | init_plugin(GaimPlugin *plugin) |
|
5224
8cb89f5b912a
[gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents:
4606
diff
changeset
|
474 | { |
|
13293
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
475 | gaim_prefs_add_none("/plugins/gtk"); |
|
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
476 | gaim_prefs_add_none("/plugins/gtk/win32"); |
|
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
477 | gaim_prefs_add_none("/plugins/gtk/win32/winprefs"); |
|
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
478 | gaim_prefs_add_bool(PREF_DBLIST_DOCKABLE, FALSE); |
|
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
479 | gaim_prefs_add_bool(PREF_DBLIST_DOCKED, FALSE); |
|
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
480 | gaim_prefs_add_int(PREF_DBLIST_HEIGHT, 0); |
|
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
481 | gaim_prefs_add_int(PREF_DBLIST_SIDE, 0); |
|
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
482 | gaim_prefs_add_bool(PREF_IM_BLINK, TRUE); |
| 11003 | 483 | |
|
13293
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
484 | /* Convert old preferences */ |
|
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
485 | if(gaim_prefs_exists(PREF_DBLIST_ON_TOP)) { |
|
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
486 | gint blist_top = BLIST_TOP_NEVER; |
|
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
487 | if(gaim_prefs_get_bool(PREF_BLIST_ON_TOP)) |
|
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
488 | blist_top = BLIST_TOP_ALWAYS; |
|
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
489 | else if(gaim_prefs_get_bool(PREF_DBLIST_ON_TOP)) |
|
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
490 | blist_top = BLIST_TOP_DOCKED; |
|
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
491 | gaim_prefs_remove(PREF_BLIST_ON_TOP); |
|
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
492 | gaim_prefs_remove(PREF_DBLIST_ON_TOP); |
|
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
493 | gaim_prefs_add_int(PREF_BLIST_ON_TOP, blist_top); |
|
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
494 | } else |
|
fb00915c7c47
[gaim-migrate @ 15658]
Daniel Atallah <datallah@pidgin.im>
parents:
12913
diff
changeset
|
495 | 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
|
496 | } |
|
8cb89f5b912a
[gaim-migrate @ 5594]
Herman Bloggs <herman@bluedigits.com>
parents:
4606
diff
changeset
|
497 | |
| 6063 | 498 | GAIM_INIT_PLUGIN(winprefs, init_plugin, info) |