Statistiques
| Révision :

root / tmp / org.txm.setups / nsis-2.5 / Include / nsDialogs.nsh @ 3099

Historique | Voir | Annoter | Télécharger (22,78 ko)

1 2961 mdecorde
/*
2 2961 mdecorde
3 2961 mdecorde
nsDialogs.nsh
4 2961 mdecorde
Header file for creating custom installer pages with nsDialogs
5 2961 mdecorde
6 2961 mdecorde
*/
7 2961 mdecorde
8 2961 mdecorde
!ifndef NSDIALOGS_INCLUDED
9 2961 mdecorde
!define NSDIALOGS_INCLUDED
10 2961 mdecorde
!verbose push
11 2961 mdecorde
!verbose 3
12 2961 mdecorde
13 2961 mdecorde
!include LogicLib.nsh
14 2961 mdecorde
!include WinMessages.nsh
15 2961 mdecorde
16 2961 mdecorde
!define WS_EX_DLGMODALFRAME  0x00000001
17 2961 mdecorde
!define WS_EX_NOPARENTNOTIFY 0x00000004
18 2961 mdecorde
!define WS_EX_TOPMOST        0x00000008
19 2961 mdecorde
!define WS_EX_ACCEPTFILES    0x00000010
20 2961 mdecorde
!define WS_EX_TRANSPARENT    0x00000020
21 2961 mdecorde
!define WS_EX_MDICHILD       0x00000040
22 2961 mdecorde
!define WS_EX_TOOLWINDOW     0x00000080
23 2961 mdecorde
!define WS_EX_WINDOWEDGE     0x00000100
24 2961 mdecorde
!define WS_EX_CLIENTEDGE     0x00000200
25 2961 mdecorde
!define WS_EX_CONTEXTHELP    0x00000400
26 2961 mdecorde
!define WS_EX_RIGHT          0x00001000
27 2961 mdecorde
!define WS_EX_LEFT           0x00000000
28 2961 mdecorde
!define WS_EX_RTLREADING     0x00002000
29 2961 mdecorde
!define WS_EX_LTRREADING     0x00000000
30 2961 mdecorde
!define WS_EX_LEFTSCROLLBAR  0x00004000
31 2961 mdecorde
!define WS_EX_RIGHTSCROLLBAR 0x00000000
32 2961 mdecorde
!define WS_EX_CONTROLPARENT  0x00010000
33 2961 mdecorde
!define WS_EX_STATICEDGE     0x00020000
34 2961 mdecorde
!define WS_EX_APPWINDOW      0x00040000
35 2961 mdecorde
36 2961 mdecorde
!define WS_CHILD             0x40000000
37 2961 mdecorde
!define WS_VISIBLE           0x10000000
38 2961 mdecorde
!define WS_DISABLED          0x08000000
39 2961 mdecorde
!define WS_CLIPSIBLINGS      0x04000000
40 2961 mdecorde
!define WS_CLIPCHILDREN      0x02000000
41 2961 mdecorde
!define WS_MAXIMIZE          0x01000000
42 2961 mdecorde
!define WS_VSCROLL           0x00200000
43 2961 mdecorde
!define WS_HSCROLL           0x00100000
44 2961 mdecorde
!define WS_GROUP             0x00020000
45 2961 mdecorde
!define WS_TABSTOP           0x00010000
46 2961 mdecorde
47 2961 mdecorde
!define ES_LEFT              0x00000000
48 2961 mdecorde
!define ES_CENTER            0x00000001
49 2961 mdecorde
!define ES_RIGHT             0x00000002
50 2961 mdecorde
!define ES_MULTILINE         0x00000004
51 2961 mdecorde
!define ES_UPPERCASE         0x00000008
52 2961 mdecorde
!define ES_LOWERCASE         0x00000010
53 2961 mdecorde
!define ES_PASSWORD          0x00000020
54 2961 mdecorde
!define ES_AUTOVSCROLL       0x00000040
55 2961 mdecorde
!define ES_AUTOHSCROLL       0x00000080
56 2961 mdecorde
!define ES_NOHIDESEL         0x00000100
57 2961 mdecorde
!define ES_OEMCONVERT        0x00000400
58 2961 mdecorde
!define ES_READONLY          0x00000800
59 2961 mdecorde
!define ES_WANTRETURN        0x00001000
60 2961 mdecorde
!define ES_NUMBER            0x00002000
61 2961 mdecorde
62 2961 mdecorde
!define SS_LEFT              0x00000000
63 2961 mdecorde
!define SS_CENTER            0x00000001
64 2961 mdecorde
!define SS_RIGHT             0x00000002
65 2961 mdecorde
!define SS_ICON              0x00000003
66 2961 mdecorde
!define SS_BLACKRECT         0x00000004
67 2961 mdecorde
!define SS_GRAYRECT          0x00000005
68 2961 mdecorde
!define SS_WHITERECT         0x00000006
69 2961 mdecorde
!define SS_BLACKFRAME        0x00000007
70 2961 mdecorde
!define SS_GRAYFRAME         0x00000008
71 2961 mdecorde
!define SS_WHITEFRAME        0x00000009
72 2961 mdecorde
!define SS_USERITEM          0x0000000A
73 2961 mdecorde
!define SS_SIMPLE            0x0000000B
74 2961 mdecorde
!define SS_LEFTNOWORDWRAP    0x0000000C
75 2961 mdecorde
!define SS_OWNERDRAW         0x0000000D
76 2961 mdecorde
!define SS_BITMAP            0x0000000E
77 2961 mdecorde
!define SS_ENHMETAFILE       0x0000000F
78 2961 mdecorde
!define SS_ETCHEDHORZ        0x00000010
79 2961 mdecorde
!define SS_ETCHEDVERT        0x00000011
80 2961 mdecorde
!define SS_ETCHEDFRAME       0x00000012
81 2961 mdecorde
!define SS_TYPEMASK          0x0000001F
82 2961 mdecorde
!define SS_REALSIZECONTROL   0x00000040
83 2961 mdecorde
!define SS_NOPREFIX          0x00000080
84 2961 mdecorde
!define SS_NOTIFY            0x00000100
85 2961 mdecorde
!define SS_CENTERIMAGE       0x00000200
86 2961 mdecorde
!define SS_RIGHTJUST         0x00000400
87 2961 mdecorde
!define SS_REALSIZEIMAGE     0x00000800
88 2961 mdecorde
!define SS_SUNKEN            0x00001000
89 2961 mdecorde
!define SS_EDITCONTROL       0x00002000
90 2961 mdecorde
!define SS_ENDELLIPSIS       0x00004000
91 2961 mdecorde
!define SS_PATHELLIPSIS      0x00008000
92 2961 mdecorde
!define SS_WORDELLIPSIS      0x0000C000
93 2961 mdecorde
!define SS_ELLIPSISMASK      0x0000C000
94 2961 mdecorde
95 2961 mdecorde
!define BS_PUSHBUTTON        0x00000000
96 2961 mdecorde
!define BS_DEFPUSHBUTTON     0x00000001
97 2961 mdecorde
!define BS_CHECKBOX          0x00000002
98 2961 mdecorde
!define BS_AUTOCHECKBOX      0x00000003
99 2961 mdecorde
!define BS_RADIOBUTTON       0x00000004
100 2961 mdecorde
!define BS_3STATE            0x00000005
101 2961 mdecorde
!define BS_AUTO3STATE        0x00000006
102 2961 mdecorde
!define BS_GROUPBOX          0x00000007
103 2961 mdecorde
!define BS_USERBUTTON        0x00000008
104 2961 mdecorde
!define BS_AUTORADIOBUTTON   0x00000009
105 2961 mdecorde
!define BS_PUSHBOX           0x0000000A
106 2961 mdecorde
!define BS_OWNERDRAW         0x0000000B
107 2961 mdecorde
!define BS_TYPEMASK          0x0000000F
108 2961 mdecorde
!define BS_LEFTTEXT          0x00000020
109 2961 mdecorde
!define BS_TEXT              0x00000000
110 2961 mdecorde
!define BS_ICON              0x00000040
111 2961 mdecorde
!define BS_BITMAP            0x00000080
112 2961 mdecorde
!define BS_LEFT              0x00000100
113 2961 mdecorde
!define BS_RIGHT             0x00000200
114 2961 mdecorde
!define BS_CENTER            0x00000300
115 2961 mdecorde
!define BS_TOP               0x00000400
116 2961 mdecorde
!define BS_BOTTOM            0x00000800
117 2961 mdecorde
!define BS_VCENTER           0x00000C00
118 2961 mdecorde
!define BS_PUSHLIKE          0x00001000
119 2961 mdecorde
!define BS_MULTILINE         0x00002000
120 2961 mdecorde
!define BS_NOTIFY            0x00004000
121 2961 mdecorde
!define BS_FLAT              0x00008000
122 2961 mdecorde
!define BS_RIGHTBUTTON       ${BS_LEFTTEXT}
123 2961 mdecorde
124 2961 mdecorde
!define CBS_SIMPLE            0x0001
125 2961 mdecorde
!define CBS_DROPDOWN          0x0002
126 2961 mdecorde
!define CBS_DROPDOWNLIST      0x0003
127 2961 mdecorde
!define CBS_OWNERDRAWFIXED    0x0010
128 2961 mdecorde
!define CBS_OWNERDRAWVARIABLE 0x0020
129 2961 mdecorde
!define CBS_AUTOHSCROLL       0x0040
130 2961 mdecorde
!define CBS_OEMCONVERT        0x0080
131 2961 mdecorde
!define CBS_SORT              0x0100
132 2961 mdecorde
!define CBS_HASSTRINGS        0x0200
133 2961 mdecorde
!define CBS_NOINTEGRALHEIGHT  0x0400
134 2961 mdecorde
!define CBS_DISABLENOSCROLL   0x0800
135 2961 mdecorde
!define CBS_UPPERCASE         0x2000
136 2961 mdecorde
!define CBS_LOWERCASE         0x4000
137 2961 mdecorde
138 2961 mdecorde
!define LBS_NOTIFY            0x0001
139 2961 mdecorde
!define LBS_SORT              0x0002
140 2961 mdecorde
!define LBS_NOREDRAW          0x0004
141 2961 mdecorde
!define LBS_MULTIPLESEL       0x0008
142 2961 mdecorde
!define LBS_OWNERDRAWFIXED    0x0010
143 2961 mdecorde
!define LBS_OWNERDRAWVARIABLE 0x0020
144 2961 mdecorde
!define LBS_HASSTRINGS        0x0040
145 2961 mdecorde
!define LBS_USETABSTOPS       0x0080
146 2961 mdecorde
!define LBS_NOINTEGRALHEIGHT  0x0100
147 2961 mdecorde
!define LBS_MULTICOLUMN       0x0200
148 2961 mdecorde
!define LBS_WANTKEYBOARDINPUT 0x0400
149 2961 mdecorde
!define LBS_EXTENDEDSEL       0x0800
150 2961 mdecorde
!define LBS_DISABLENOSCROLL   0x1000
151 2961 mdecorde
!define LBS_NODATA            0x2000
152 2961 mdecorde
!define LBS_NOSEL             0x4000
153 2961 mdecorde
!define LBS_COMBOBOX          0x8000
154 2961 mdecorde
155 2961 mdecorde
!define LR_DEFAULTCOLOR     0x0000
156 2961 mdecorde
!define LR_MONOCHROME       0x0001
157 2961 mdecorde
!define LR_COLOR            0x0002
158 2961 mdecorde
!define LR_COPYRETURNORG    0x0004
159 2961 mdecorde
!define LR_COPYDELETEORG    0x0008
160 2961 mdecorde
!define LR_LOADFROMFILE     0x0010
161 2961 mdecorde
!define LR_LOADTRANSPARENT  0x0020
162 2961 mdecorde
!define LR_DEFAULTSIZE      0x0040
163 2961 mdecorde
!define LR_VGACOLOR         0x0080
164 2961 mdecorde
!define LR_LOADMAP3DCOLORS  0x1000
165 2961 mdecorde
!define LR_CREATEDIBSECTION 0x2000
166 2961 mdecorde
!define LR_COPYFROMRESOURCE 0x4000
167 2961 mdecorde
!define LR_SHARED           0x8000
168 2961 mdecorde
169 2961 mdecorde
!define IMAGE_BITMAP        0
170 2961 mdecorde
!define IMAGE_ICON          1
171 2961 mdecorde
!define IMAGE_CURSOR        2
172 2961 mdecorde
!define IMAGE_ENHMETAFILE   3
173 2961 mdecorde
174 2961 mdecorde
!define GWL_STYLE           -16
175 2961 mdecorde
!define GWL_EXSTYLE         -20
176 2961 mdecorde
177 2961 mdecorde
!define DEFAULT_STYLES ${WS_CHILD}|${WS_VISIBLE}|${WS_CLIPSIBLINGS}
178 2961 mdecorde
179 2961 mdecorde
!define __NSD_HLine_CLASS STATIC
180 2961 mdecorde
!define __NSD_HLine_STYLE ${DEFAULT_STYLES}|${SS_ETCHEDHORZ}|${SS_SUNKEN}
181 2961 mdecorde
!define __NSD_HLine_EXSTYLE ${WS_EX_TRANSPARENT}
182 2961 mdecorde
183 2961 mdecorde
!define __NSD_VLine_CLASS STATIC
184 2961 mdecorde
!define __NSD_VLine_STYLE ${DEFAULT_STYLES}|${SS_ETCHEDVERT}|${SS_SUNKEN}
185 2961 mdecorde
!define __NSD_VLine_EXSTYLE ${WS_EX_TRANSPARENT}
186 2961 mdecorde
187 2961 mdecorde
!define __NSD_Label_CLASS STATIC
188 2961 mdecorde
!define __NSD_Label_STYLE ${DEFAULT_STYLES}|${SS_NOTIFY}
189 2961 mdecorde
!define __NSD_Label_EXSTYLE ${WS_EX_TRANSPARENT}
190 2961 mdecorde
191 2961 mdecorde
!define __NSD_Icon_CLASS STATIC
192 2961 mdecorde
!define __NSD_Icon_STYLE ${DEFAULT_STYLES}|${SS_ICON}|${SS_NOTIFY}
193 2961 mdecorde
!define __NSD_Icon_EXSTYLE 0
194 2961 mdecorde
195 2961 mdecorde
!define __NSD_Bitmap_CLASS STATIC
196 2961 mdecorde
!define __NSD_Bitmap_STYLE ${DEFAULT_STYLES}|${SS_BITMAP}|${SS_NOTIFY}
197 2961 mdecorde
!define __NSD_Bitmap_EXSTYLE 0
198 2961 mdecorde
199 2961 mdecorde
!define __NSD_BrowseButton_CLASS BUTTON
200 2961 mdecorde
!define __NSD_BrowseButton_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}
201 2961 mdecorde
!define __NSD_BrowseButton_EXSTYLE 0
202 2961 mdecorde
203 2961 mdecorde
!define __NSD_Link_CLASS LINK
204 2961 mdecorde
!define __NSD_Link_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${BS_OWNERDRAW}
205 2961 mdecorde
!define __NSD_Link_EXSTYLE 0
206 2961 mdecorde
207 2961 mdecorde
!define __NSD_Button_CLASS BUTTON
208 2961 mdecorde
!define __NSD_Button_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}
209 2961 mdecorde
!define __NSD_Button_EXSTYLE 0
210 2961 mdecorde
211 2961 mdecorde
!define __NSD_GroupBox_CLASS BUTTON
212 2961 mdecorde
!define __NSD_GroupBox_STYLE ${DEFAULT_STYLES}|${BS_GROUPBOX}
213 2961 mdecorde
!define __NSD_GroupBox_EXSTYLE ${WS_EX_TRANSPARENT}
214 2961 mdecorde
215 2961 mdecorde
!define __NSD_CheckBox_CLASS BUTTON
216 2961 mdecorde
!define __NSD_CheckBox_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${BS_TEXT}|${BS_VCENTER}|${BS_AUTOCHECKBOX}|${BS_MULTILINE}
217 2961 mdecorde
!define __NSD_CheckBox_EXSTYLE 0
218 2961 mdecorde
219 2961 mdecorde
!define __NSD_RadioButton_CLASS BUTTON
220 2961 mdecorde
!define __NSD_RadioButton_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${BS_TEXT}|${BS_VCENTER}|${BS_AUTORADIOBUTTON}|${BS_MULTILINE}
221 2961 mdecorde
!define __NSD_RadioButton_EXSTYLE 0
222 2961 mdecorde
223 2961 mdecorde
!define __NSD_Text_CLASS EDIT
224 2961 mdecorde
!define __NSD_Text_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${ES_AUTOHSCROLL}
225 2961 mdecorde
!define __NSD_Text_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE}
226 2961 mdecorde
227 2961 mdecorde
!define __NSD_Password_CLASS EDIT
228 2961 mdecorde
!define __NSD_Password_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${ES_AUTOHSCROLL}|${ES_PASSWORD}
229 2961 mdecorde
!define __NSD_Password_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE}
230 2961 mdecorde
231 2961 mdecorde
!define __NSD_Number_CLASS EDIT
232 2961 mdecorde
!define __NSD_Number_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${ES_AUTOHSCROLL}|${ES_NUMBER}
233 2961 mdecorde
!define __NSD_Number_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE}
234 2961 mdecorde
235 2961 mdecorde
!define __NSD_FileRequest_CLASS EDIT
236 2961 mdecorde
!define __NSD_FileRequest_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${ES_AUTOHSCROLL}
237 2961 mdecorde
!define __NSD_FileRequest_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE}
238 2961 mdecorde
239 2961 mdecorde
!define __NSD_DirRequest_CLASS EDIT
240 2961 mdecorde
!define __NSD_DirRequest_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${ES_AUTOHSCROLL}
241 2961 mdecorde
!define __NSD_DirRequest_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE}
242 2961 mdecorde
243 2961 mdecorde
!define __NSD_ComboBox_CLASS COMBOBOX
244 2961 mdecorde
!define __NSD_ComboBox_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${WS_VSCROLL}|${WS_CLIPCHILDREN}|${CBS_AUTOHSCROLL}|${CBS_HASSTRINGS}|${CBS_DROPDOWN}
245 2961 mdecorde
!define __NSD_ComboBox_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE}
246 2961 mdecorde
247 2961 mdecorde
!define __NSD_DropList_CLASS COMBOBOX
248 2961 mdecorde
!define __NSD_DropList_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${WS_VSCROLL}|${WS_CLIPCHILDREN}|${CBS_AUTOHSCROLL}|${CBS_HASSTRINGS}|${CBS_DROPDOWNLIST}
249 2961 mdecorde
!define __NSD_DropList_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE}
250 2961 mdecorde
251 2961 mdecorde
!define __NSD_ListBox_CLASS LISTBOX
252 2961 mdecorde
!define __NSD_ListBox_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${WS_VSCROLL}|${LBS_DISABLENOSCROLL}|${LBS_HASSTRINGS}|${LBS_NOINTEGRALHEIGHT}|${LBS_NOTIFY}
253 2961 mdecorde
!define __NSD_ListBox_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE}
254 2961 mdecorde
255 2961 mdecorde
!define __NSD_ProgressBar_CLASS msctls_progress32
256 2961 mdecorde
!define __NSD_ProgressBar_STYLE ${DEFAULT_STYLES}
257 2961 mdecorde
!define __NSD_ProgressBar_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE}
258 2961 mdecorde
259 2961 mdecorde
!macro __NSD_DefineControl NAME
260 2961 mdecorde
261 2961 mdecorde
	!define NSD_Create${NAME} "nsDialogs::CreateControl ${__NSD_${Name}_CLASS} ${__NSD_${Name}_STYLE} ${__NSD_${Name}_EXSTYLE}"
262 2961 mdecorde
263 2961 mdecorde
!macroend
264 2961 mdecorde
265 2961 mdecorde
!insertmacro __NSD_DefineControl HLine
266 2961 mdecorde
!insertmacro __NSD_DefineControl VLine
267 2961 mdecorde
!insertmacro __NSD_DefineControl Label
268 2961 mdecorde
!insertmacro __NSD_DefineControl Icon
269 2961 mdecorde
!insertmacro __NSD_DefineControl Bitmap
270 2961 mdecorde
!insertmacro __NSD_DefineControl BrowseButton
271 2961 mdecorde
!insertmacro __NSD_DefineControl Link
272 2961 mdecorde
!insertmacro __NSD_DefineControl Button
273 2961 mdecorde
!insertmacro __NSD_DefineControl GroupBox
274 2961 mdecorde
!insertmacro __NSD_DefineControl CheckBox
275 2961 mdecorde
!insertmacro __NSD_DefineControl RadioButton
276 2961 mdecorde
!insertmacro __NSD_DefineControl Text
277 2961 mdecorde
!insertmacro __NSD_DefineControl Password
278 2961 mdecorde
!insertmacro __NSD_DefineControl Number
279 2961 mdecorde
!insertmacro __NSD_DefineControl FileRequest
280 2961 mdecorde
!insertmacro __NSD_DefineControl DirRequest
281 2961 mdecorde
!insertmacro __NSD_DefineControl ComboBox
282 2961 mdecorde
!insertmacro __NSD_DefineControl DropList
283 2961 mdecorde
!insertmacro __NSD_DefineControl ListBox
284 2961 mdecorde
!insertmacro __NSD_DefineControl ProgressBar
285 2961 mdecorde
286 2961 mdecorde
!macro __NSD_OnControlEvent EVENT HWND FUNCTION
287 2961 mdecorde
288 2961 mdecorde
	Push $0
289 2961 mdecorde
	Push $1
290 2961 mdecorde
291 2961 mdecorde
	StrCpy $1 "${HWND}"
292 2961 mdecorde
293 2961 mdecorde
	GetFunctionAddress $0 "${FUNCTION}"
294 2961 mdecorde
	nsDialogs::On${EVENT} $1 $0
295 2961 mdecorde
296 2961 mdecorde
	Pop $1
297 2961 mdecorde
	Pop $0
298 2961 mdecorde
299 2961 mdecorde
!macroend
300 2961 mdecorde
301 2961 mdecorde
!macro __NSD_DefineControlCallback EVENT
302 2961 mdecorde
303 2961 mdecorde
	!define NSD_On${EVENT} `!insertmacro __NSD_OnControlEvent ${EVENT}`
304 2961 mdecorde
305 2961 mdecorde
!macroend
306 2961 mdecorde
307 2961 mdecorde
!macro __NSD_OnDialogEvent EVENT FUNCTION
308 2961 mdecorde
309 2961 mdecorde
	Push $0
310 2961 mdecorde
311 2961 mdecorde
	GetFunctionAddress $0 "${FUNCTION}"
312 2961 mdecorde
	nsDialogs::On${EVENT} $0
313 2961 mdecorde
314 2961 mdecorde
	Pop $0
315 2961 mdecorde
316 2961 mdecorde
!macroend
317 2961 mdecorde
318 2961 mdecorde
!macro __NSD_DefineDialogCallback EVENT
319 2961 mdecorde
320 2961 mdecorde
	!define NSD_On${EVENT} `!insertmacro __NSD_OnDialogEvent ${EVENT}`
321 2961 mdecorde
322 2961 mdecorde
!macroend
323 2961 mdecorde
324 2961 mdecorde
!insertmacro __NSD_DefineControlCallback Click
325 2961 mdecorde
!insertmacro __NSD_DefineControlCallback Change
326 2961 mdecorde
!insertmacro __NSD_DefineControlCallback Notify
327 2961 mdecorde
!insertmacro __NSD_DefineDialogCallback Back
328 2961 mdecorde
329 2961 mdecorde
!macro _NSD_CreateTimer FUNCTION INTERVAL
330 2961 mdecorde
331 2961 mdecorde
	Push $0
332 2961 mdecorde
333 2961 mdecorde
	GetFunctionAddress $0 "${FUNCTION}"
334 2961 mdecorde
	nsDialogs::CreateTimer $0 "${INTERVAL}"
335 2961 mdecorde
336 2961 mdecorde
	Pop $0
337 2961 mdecorde
338 2961 mdecorde
!macroend
339 2961 mdecorde
340 2961 mdecorde
!define NSD_CreateTimer `!insertmacro _NSD_CreateTimer`
341 2961 mdecorde
342 2961 mdecorde
!macro _NSD_KillTimer FUNCTION
343 2961 mdecorde
344 2961 mdecorde
	Push $0
345 2961 mdecorde
346 2961 mdecorde
	GetFunctionAddress $0 "${FUNCTION}"
347 2961 mdecorde
	nsDialogs::KillTimer $0
348 2961 mdecorde
349 2961 mdecorde
	Pop $0
350 2961 mdecorde
351 2961 mdecorde
!macroend
352 2961 mdecorde
353 2961 mdecorde
!define NSD_KillTimer `!insertmacro _NSD_KillTimer`
354 2961 mdecorde
355 2961 mdecorde
!macro _NSD_AddStyle CONTROL STYLE
356 2961 mdecorde
357 2961 mdecorde
	Push $0
358 2961 mdecorde
359 2961 mdecorde
	System::Call "user32::GetWindowLong(i ${CONTROL}, i ${GWL_STYLE}) i .r0"
360 2961 mdecorde
	System::Call "user32::SetWindowLong(i ${CONTROL}, i ${GWL_STYLE}, i $0|${STYLE})"
361 2961 mdecorde
362 2961 mdecorde
	Pop $0
363 2961 mdecorde
364 2961 mdecorde
!macroend
365 2961 mdecorde
366 2961 mdecorde
!define NSD_AddStyle "!insertmacro _NSD_AddStyle"
367 2961 mdecorde
368 2961 mdecorde
!macro _NSD_AddExStyle CONTROL EXSTYLE
369 2961 mdecorde
370 2961 mdecorde
	Push $0
371 2961 mdecorde
372 2961 mdecorde
	System::Call "user32::GetWindowLong(i ${CONTROL}, i ${GWL_EXSTYLE}) i .r0"
373 2961 mdecorde
	System::Call "user32::SetWindowLong(i ${CONTROL}, i ${GWL_EXSTYLE}, i $0|${EXSTYLE})"
374 2961 mdecorde
375 2961 mdecorde
	Pop $0
376 2961 mdecorde
377 2961 mdecorde
!macroend
378 2961 mdecorde
379 2961 mdecorde
!define NSD_AddExStyle "!insertmacro _NSD_AddExStyle"
380 2961 mdecorde
381 2961 mdecorde
!macro __NSD_GetText CONTROL VAR
382 2961 mdecorde
383 2961 mdecorde
	System::Call user32::GetWindowText(i${CONTROL},t.s,i${NSIS_MAX_STRLEN})
384 2961 mdecorde
	Pop ${VAR}
385 2961 mdecorde
386 2961 mdecorde
!macroend
387 2961 mdecorde
388 2961 mdecorde
!define NSD_GetText `!insertmacro __NSD_GetText`
389 2961 mdecorde
390 2961 mdecorde
!macro __NSD_SetText CONTROL TEXT
391 2961 mdecorde
392 2961 mdecorde
	SendMessage ${CONTROL} ${WM_SETTEXT} 0 `STR:${TEXT}`
393 2961 mdecorde
394 2961 mdecorde
!macroend
395 2961 mdecorde
396 2961 mdecorde
!define NSD_SetText `!insertmacro __NSD_SetText`
397 2961 mdecorde
398 2961 mdecorde
!macro _NSD_SetTextLimit CONTROL LIMIT
399 2961 mdecorde
400 2961 mdecorde
	SendMessage ${CONTROL} ${EM_SETLIMITTEXT} ${LIMIT} 0
401 2961 mdecorde
402 2961 mdecorde
!macroend
403 2961 mdecorde
404 2961 mdecorde
!define NSD_SetTextLimit "!insertmacro _NSD_SetTextLimit"
405 2961 mdecorde
406 2961 mdecorde
!macro __NSD_GetState CONTROL VAR
407 2961 mdecorde
408 2961 mdecorde
	SendMessage ${CONTROL} ${BM_GETCHECK} 0 0 ${VAR}
409 2961 mdecorde
410 2961 mdecorde
!macroend
411 2961 mdecorde
412 2961 mdecorde
!define NSD_GetState `!insertmacro __NSD_GetState`
413 2961 mdecorde
414 2961 mdecorde
!macro __NSD_SetState CONTROL STATE
415 2961 mdecorde
416 2961 mdecorde
	SendMessage ${CONTROL} ${BM_SETCHECK} ${STATE} 0
417 2961 mdecorde
418 2961 mdecorde
!macroend
419 2961 mdecorde
420 2961 mdecorde
!define NSD_SetState `!insertmacro __NSD_SetState`
421 2961 mdecorde
422 2961 mdecorde
!macro __NSD_Check CONTROL
423 2961 mdecorde
424 2961 mdecorde
	${NSD_SetState} ${CONTROL} ${BST_CHECKED}
425 2961 mdecorde
426 2961 mdecorde
!macroend
427 2961 mdecorde
428 2961 mdecorde
!define NSD_Check `!insertmacro __NSD_Check`
429 2961 mdecorde
430 2961 mdecorde
!macro __NSD_Uncheck CONTROL
431 2961 mdecorde
432 2961 mdecorde
	${NSD_SetState} ${CONTROL} ${BST_UNCHECKED}
433 2961 mdecorde
434 2961 mdecorde
!macroend
435 2961 mdecorde
436 2961 mdecorde
!define NSD_Uncheck `!insertmacro __NSD_Uncheck`
437 2961 mdecorde
438 2961 mdecorde
!macro __NSD_SetFocus HWND
439 2961 mdecorde
440 2961 mdecorde
	System::Call "user32::SetFocus(i${HWND})"
441 2961 mdecorde
442 2961 mdecorde
!macroend
443 2961 mdecorde
444 2961 mdecorde
!define NSD_SetFocus `!insertmacro __NSD_SetFocus`
445 2961 mdecorde
446 2961 mdecorde
!macro _NSD_CB_AddString CONTROL STRING
447 2961 mdecorde
448 2961 mdecorde
	SendMessage ${CONTROL} ${CB_ADDSTRING} 0 `STR:${STRING}`
449 2961 mdecorde
450 2961 mdecorde
!macroend
451 2961 mdecorde
452 2961 mdecorde
!define NSD_CB_AddString "!insertmacro _NSD_CB_AddString"
453 2961 mdecorde
454 2961 mdecorde
!macro _NSD_CB_SelectString CONTROL STRING
455 2961 mdecorde
456 2961 mdecorde
	SendMessage ${CONTROL} ${CB_SELECTSTRING} -1 `STR:${STRING}`
457 2961 mdecorde
458 2961 mdecorde
!macroend
459 2961 mdecorde
460 2961 mdecorde
!define NSD_CB_SelectString "!insertmacro _NSD_CB_SelectString"
461 2961 mdecorde
462 2961 mdecorde
!macro _NSD_LB_AddString CONTROL STRING
463 2961 mdecorde
464 2961 mdecorde
	SendMessage ${CONTROL} ${LB_ADDSTRING} 0 `STR:${STRING}`
465 2961 mdecorde
466 2961 mdecorde
!macroend
467 2961 mdecorde
468 2961 mdecorde
!define NSD_LB_AddString "!insertmacro _NSD_LB_AddString"
469 2961 mdecorde
470 2961 mdecorde
!macro __NSD_LB_DelString CONTROL STRING
471 2961 mdecorde
472 2961 mdecorde
	SendMessage ${CONTROL} ${LB_DELETESTRING} 0 `STR:${STRING}`
473 2961 mdecorde
474 2961 mdecorde
!macroend
475 2961 mdecorde
476 2961 mdecorde
!define NSD_LB_DelString `!insertmacro __NSD_LB_DelString`
477 2961 mdecorde
478 2961 mdecorde
!macro __NSD_LB_Clear CONTROL VAR
479 2961 mdecorde
480 2961 mdecorde
	SendMessage ${CONTROL} ${LB_RESETCONTENT} 0 0 ${VAR}
481 2961 mdecorde
482 2961 mdecorde
!macroend
483 2961 mdecorde
484 2961 mdecorde
!define NSD_LB_Clear `!insertmacro __NSD_LB_Clear`
485 2961 mdecorde
486 2961 mdecorde
!macro __NSD_LB_GetCount CONTROL VAR
487 2961 mdecorde
488 2961 mdecorde
	SendMessage ${CONTROL} ${LB_GETCOUNT} 0 0 ${VAR}
489 2961 mdecorde
490 2961 mdecorde
!macroend
491 2961 mdecorde
492 2961 mdecorde
!define NSD_LB_GetCount `!insertmacro __NSD_LB_GetCount`
493 2961 mdecorde
494 2961 mdecorde
!macro _NSD_LB_SelectString CONTROL STRING
495 2961 mdecorde
496 2961 mdecorde
	SendMessage ${CONTROL} ${LB_SELECTSTRING} -1 `STR:${STRING}`
497 2961 mdecorde
498 2961 mdecorde
!macroend
499 2961 mdecorde
500 2961 mdecorde
!define NSD_LB_SelectString "!insertmacro _NSD_LB_SelectString"
501 2961 mdecorde
502 2961 mdecorde
!macro __NSD_LB_GetSelection CONTROL VAR
503 2961 mdecorde
504 2961 mdecorde
	SendMessage ${CONTROL} ${LB_GETCURSEL} 0 0 ${VAR}
505 2961 mdecorde
	System::Call 'user32::SendMessage(i ${CONTROL}, i ${LB_GETTEXT}, i ${VAR}, t .s)'
506 2961 mdecorde
	Pop ${VAR}
507 2961 mdecorde
508 2961 mdecorde
!macroend
509 2961 mdecorde
510 2961 mdecorde
!define NSD_LB_GetSelection `!insertmacro __NSD_LB_GetSelection`
511 2961 mdecorde
512 2961 mdecorde
513 2961 mdecorde
!macro __NSD_LoadAndSetImage _LIHINSTMODE _IMGTYPE _LIHINSTSRC _LIFLAGS CONTROL IMAGE HANDLE
514 2961 mdecorde
515 2961 mdecorde
	Push $0
516 2961 mdecorde
	Push $R0
517 2961 mdecorde
518 2961 mdecorde
	StrCpy $R0 ${CONTROL} # in case ${CONTROL} is $0
519 2961 mdecorde
520 2961 mdecorde
	!if "${_LIHINSTMODE}" == "exeresource"
521 2961 mdecorde
		System::Call 'kernel32::GetModuleHandle(i0) i.r0'
522 2961 mdecorde
		!undef _LIHINSTSRC
523 2961 mdecorde
		!define _LIHINSTSRC r0
524 2961 mdecorde
	!endif
525 2961 mdecorde
526 2961 mdecorde
	System::Call 'user32::LoadImage(i ${_LIHINSTSRC}, ts, i ${_IMGTYPE}, i0, i0, i${_LIFLAGS}) i.r0' "${IMAGE}"
527 2961 mdecorde
	SendMessage $R0 ${STM_SETIMAGE} ${_IMGTYPE} $0
528 2961 mdecorde
529 2961 mdecorde
	Pop $R0
530 2961 mdecorde
	Exch $0
531 2961 mdecorde
532 2961 mdecorde
	Pop ${HANDLE}
533 2961 mdecorde
534 2961 mdecorde
!macroend
535 2961 mdecorde
536 2961 mdecorde
!macro __NSD_SetIconFromExeResource CONTROL IMAGE HANDLE
537 2961 mdecorde
	!insertmacro __NSD_LoadAndSetImage exeresource ${IMAGE_ICON} 0 ${LR_DEFAULTSIZE} "${CONTROL}" "${IMAGE}" ${HANDLE}
538 2961 mdecorde
!macroend
539 2961 mdecorde
540 2961 mdecorde
!macro __NSD_SetIconFromInstaller CONTROL HANDLE
541 2961 mdecorde
	!insertmacro __NSD_SetIconFromExeResource "${CONTROL}" "#103" ${HANDLE}
542 2961 mdecorde
!macroend
543 2961 mdecorde
544 2961 mdecorde
!define NSD_SetImage `!insertmacro __NSD_LoadAndSetImage file ${IMAGE_BITMAP} 0 "${LR_LOADFROMFILE}"`
545 2961 mdecorde
!define NSD_SetBitmap `${NSD_SetImage}`
546 2961 mdecorde
547 2961 mdecorde
!define NSD_SetIcon `!insertmacro __NSD_LoadAndSetImage file ${IMAGE_ICON} 0 "${LR_LOADFROMFILE}|${LR_DEFAULTSIZE}"`
548 2961 mdecorde
!define NSD_SetIconFromExeResource `!insertmacro __NSD_SetIconFromExeResource`
549 2961 mdecorde
!define NSD_SetIconFromInstaller `!insertmacro __NSD_SetIconFromInstaller`
550 2961 mdecorde
551 2961 mdecorde
552 2961 mdecorde
!macro __NSD_SetStretchedImage CONTROL IMAGE HANDLE
553 2961 mdecorde
554 2961 mdecorde
	Push $0
555 2961 mdecorde
	Push $1
556 2961 mdecorde
	Push $2
557 2961 mdecorde
	Push $R0
558 2961 mdecorde
559 2961 mdecorde
	StrCpy $R0 ${CONTROL} # in case ${CONTROL} is $0
560 2961 mdecorde
561 2961 mdecorde
	StrCpy $1 ""
562 2961 mdecorde
	StrCpy $2 ""
563 2961 mdecorde
564 2961 mdecorde
	System::Call '*(i, i, i, i) i.s'
565 2961 mdecorde
	Pop $0
566 2961 mdecorde
567 2961 mdecorde
	${If} $0 <> 0
568 2961 mdecorde
569 2961 mdecorde
		System::Call 'user32::GetClientRect(iR0, ir0)'
570 2961 mdecorde
		System::Call '*$0(i, i, i .s, i .s)'
571 2961 mdecorde
		System::Free $0
572 2961 mdecorde
		Pop $1
573 2961 mdecorde
		Pop $2
574 2961 mdecorde
575 2961 mdecorde
	${EndIf}
576 2961 mdecorde
577 2961 mdecorde
	System::Call 'user32::LoadImage(i0, ts, i ${IMAGE_BITMAP}, ir1, ir2, i${LR_LOADFROMFILE}) i.s' "${IMAGE}"
578 2961 mdecorde
	Pop $0
579 2961 mdecorde
    SendMessage $R0 ${STM_SETIMAGE} ${IMAGE_BITMAP} $0
580 2961 mdecorde
581 2961 mdecorde
	Pop $R0
582 2961 mdecorde
	Pop $2
583 2961 mdecorde
	Pop $1
584 2961 mdecorde
	Exch $0
585 2961 mdecorde
586 2961 mdecorde
	Pop ${HANDLE}
587 2961 mdecorde
588 2961 mdecorde
!macroend
589 2961 mdecorde
590 2961 mdecorde
!define NSD_SetStretchedImage `!insertmacro __NSD_SetStretchedImage`
591 2961 mdecorde
592 2961 mdecorde
!macro __NSD_FreeImage IMAGE
593 2961 mdecorde
594 2961 mdecorde
	${If} ${IMAGE} <> 0
595 2961 mdecorde
596 2961 mdecorde
		System::Call gdi32::DeleteObject(is) ${IMAGE}
597 2961 mdecorde
598 2961 mdecorde
	${EndIf}
599 2961 mdecorde
600 2961 mdecorde
!macroend
601 2961 mdecorde
602 2961 mdecorde
!define NSD_FreeImage `!insertmacro __NSD_FreeImage`
603 2961 mdecorde
!define NSD_FreeBitmap `${NSD_FreeImage}`
604 2961 mdecorde
605 2961 mdecorde
!macro __NSD_FreeIcon IMAGE
606 2961 mdecorde
	System::Call user32::DestroyIcon(is) ${IMAGE}
607 2961 mdecorde
!macroend
608 2961 mdecorde
609 2961 mdecorde
!define NSD_FreeIcon `!insertmacro __NSD_FreeIcon`
610 2961 mdecorde
611 2961 mdecorde
!macro __NSD_ClearImage _IMGTYPE CONTROL
612 2961 mdecorde
613 2961 mdecorde
	SendMessage ${CONTROL} ${STM_SETIMAGE} ${_IMGTYPE} 0
614 2961 mdecorde
615 2961 mdecorde
!macroend
616 2961 mdecorde
617 2961 mdecorde
!define NSD_ClearImage `!insertmacro __NSD_ClearImage ${IMAGE_BITMAP}`
618 2961 mdecorde
!define NSD_ClearIcon  `!insertmacro __NSD_ClearImage ${IMAGE_ICON}`
619 2961 mdecorde
620 2961 mdecorde
621 2961 mdecorde
!define DEBUG `System::Call kernel32::OutputDebugString(ts)`
622 2961 mdecorde
623 2961 mdecorde
!macro __NSD_ControlCase TYPE
624 2961 mdecorde
625 2961 mdecorde
	${Case} ${TYPE}
626 2961 mdecorde
		${NSD_Create${TYPE}} $R3u $R4u $R5u $R6u $R7
627 2961 mdecorde
		Pop $R9
628 2961 mdecorde
		${Break}
629 2961 mdecorde
630 2961 mdecorde
!macroend
631 2961 mdecorde
632 2961 mdecorde
!macro __NSD_ControlCaseEx TYPE
633 2961 mdecorde
634 2961 mdecorde
	${Case} ${TYPE}
635 2961 mdecorde
		Call ${TYPE}
636 2961 mdecorde
		${Break}
637 2961 mdecorde
638 2961 mdecorde
!macroend
639 2961 mdecorde
640 2961 mdecorde
!macro NSD_FUNCTION_INIFILE
641 2961 mdecorde
642 2961 mdecorde
	!insertmacro NSD_INIFILE ""
643 2961 mdecorde
644 2961 mdecorde
!macroend
645 2961 mdecorde
646 2961 mdecorde
!macro NSD_UNFUNCTION_INIFILE
647 2961 mdecorde
648 2961 mdecorde
	!insertmacro NSD_INIFILE un.
649 2961 mdecorde
650 2961 mdecorde
!macroend
651 2961 mdecorde
652 2961 mdecorde
!macro NSD_INIFILE UNINSTALLER_FUNCPREFIX
653 2961 mdecorde
654 2961 mdecorde
	;Functions to create dialogs based on old InstallOptions INI files
655 2961 mdecorde
656 2961 mdecorde
	Function ${UNINSTALLER_FUNCPREFIX}CreateDialogFromINI
657 2961 mdecorde
658 2961 mdecorde
		# $0 = ini
659 2961 mdecorde
660 2961 mdecorde
		ReadINIStr $R0 $0 Settings RECT
661 2961 mdecorde
		${If} $R0 == ""
662 2961 mdecorde
			StrCpy $R0 1018
663 2961 mdecorde
		${EndIf}
664 2961 mdecorde
665 2961 mdecorde
		nsDialogs::Create $R0
666 2961 mdecorde
		Pop $R9
667 2961 mdecorde
668 2961 mdecorde
		ReadINIStr $R0 $0 Settings RTL
669 2961 mdecorde
		nsDialogs::SetRTL $R0
670 2961 mdecorde
671 2961 mdecorde
		ReadINIStr $R0 $0 Settings NumFields
672 2961 mdecorde
673 2961 mdecorde
		${DEBUG} "NumFields = $R0"
674 2961 mdecorde
675 2961 mdecorde
		${For} $R1 1 $R0
676 2961 mdecorde
			${DEBUG} "Creating field $R1"
677 2961 mdecorde
			ReadINIStr $R2 $0 "Field $R1" Type
678 2961 mdecorde
			${DEBUG} "  Type = $R2"
679 2961 mdecorde
			ReadINIStr $R3 $0 "Field $R1" Left
680 2961 mdecorde
			${DEBUG} "  Left = $R3"
681 2961 mdecorde
			ReadINIStr $R4 $0 "Field $R1" Top
682 2961 mdecorde
			${DEBUG} "  Top = $R4"
683 2961 mdecorde
			ReadINIStr $R5 $0 "Field $R1" Right
684 2961 mdecorde
			${DEBUG} "  Right = $R5"
685 2961 mdecorde
			ReadINIStr $R6 $0 "Field $R1" Bottom
686 2961 mdecorde
			${DEBUG} "  Bottom = $R6"
687 2961 mdecorde
			IntOp $R5 $R5 - $R3
688 2961 mdecorde
			${DEBUG} "  Width = $R5"
689 2961 mdecorde
			IntOp $R6 $R6 - $R4
690 2961 mdecorde
			${DEBUG} "  Height = $R6"
691 2961 mdecorde
			ReadINIStr $R7 $0 "Field $R1" Text
692 2961 mdecorde
			${DEBUG} "  Text = $R7"
693 2961 mdecorde
			${Switch} $R2
694 2961 mdecorde
				!insertmacro __NSD_ControlCase   HLine
695 2961 mdecorde
				!insertmacro __NSD_ControlCase   VLine
696 2961 mdecorde
				!insertmacro __NSD_ControlCase   Label
697 2961 mdecorde
				!insertmacro __NSD_ControlCase   Icon
698 2961 mdecorde
				!insertmacro __NSD_ControlCase   Bitmap
699 2961 mdecorde
				!insertmacro __NSD_ControlCaseEx Link
700 2961 mdecorde
				!insertmacro __NSD_ControlCase   Button
701 2961 mdecorde
				!insertmacro __NSD_ControlCase   GroupBox
702 2961 mdecorde
				!insertmacro __NSD_ControlCase   CheckBox
703 2961 mdecorde
				!insertmacro __NSD_ControlCase   RadioButton
704 2961 mdecorde
				!insertmacro __NSD_ControlCase   Text
705 2961 mdecorde
				!insertmacro __NSD_ControlCase   Password
706 2961 mdecorde
				!insertmacro __NSD_ControlCaseEx FileRequest
707 2961 mdecorde
				!insertmacro __NSD_ControlCaseEx DirRequest
708 2961 mdecorde
				!insertmacro __NSD_ControlCase   ComboBox
709 2961 mdecorde
				!insertmacro __NSD_ControlCase   DropList
710 2961 mdecorde
				!insertmacro __NSD_ControlCase   ListBox
711 2961 mdecorde
			${EndSwitch}
712 2961 mdecorde
713 2961 mdecorde
			WriteINIStr $0 "Field $R1" HWND $R9
714 2961 mdecorde
		${Next}
715 2961 mdecorde
716 2961 mdecorde
		nsDialogs::Show
717 2961 mdecorde
718 2961 mdecorde
	FunctionEnd
719 2961 mdecorde
720 2961 mdecorde
	Function ${UNINSTALLER_FUNCPREFIX}UpdateINIState
721 2961 mdecorde
722 2961 mdecorde
		${DEBUG} "Updating INI state"
723 2961 mdecorde
724 2961 mdecorde
		ReadINIStr $R0 $0 Settings NumFields
725 2961 mdecorde
726 2961 mdecorde
		${DEBUG} "NumField = $R0"
727 2961 mdecorde
728 2961 mdecorde
		${For} $R1 1 $R0
729 2961 mdecorde
			ReadINIStr $R2 $0 "Field $R1" HWND
730 2961 mdecorde
			ReadINIStr $R3 $0 "Field $R1" "Type"
731 2961 mdecorde
			${Switch} $R3
732 2961 mdecorde
				${Case} "CheckBox"
733 2961 mdecorde
				${Case} "RadioButton"
734 2961 mdecorde
					${DEBUG} "  HWND = $R2"
735 2961 mdecorde
					${NSD_GetState} $R2 $R2
736 2961 mdecorde
					${DEBUG} "  Window selection = $R2"
737 2961 mdecorde
				${Break}
738 2961 mdecorde
				${CaseElse}
739 2961 mdecorde
					${DEBUG} "  HWND = $R2"
740 2961 mdecorde
					${NSD_GetText} $R2 $R2
741 2961 mdecorde
					${DEBUG} "  Window text = $R2"
742 2961 mdecorde
				${Break}
743 2961 mdecorde
			${EndSwitch}
744 2961 mdecorde
			WriteINIStr $0 "Field $R1" STATE $R2
745 2961 mdecorde
		${Next}
746 2961 mdecorde
747 2961 mdecorde
	FunctionEnd
748 2961 mdecorde
749 2961 mdecorde
	Function ${UNINSTALLER_FUNCPREFIX}FileRequest
750 2961 mdecorde
751 2961 mdecorde
		IntOp $R5 $R5 - 15
752 2961 mdecorde
		IntOp $R8 $R3 + $R5
753 2961 mdecorde
754 2961 mdecorde
		${NSD_CreateBrowseButton} $R8u $R4u 15u $R6u ...
755 2961 mdecorde
		Pop $R8
756 2961 mdecorde
757 2961 mdecorde
		nsDialogs::SetUserData $R8 $R1 # remember field id
758 2961 mdecorde
759 2961 mdecorde
		WriteINIStr $0 "Field $R1" HWND2 $R8
760 2961 mdecorde
761 2961 mdecorde
		${NSD_OnClick} $R8 ${UNINSTALLER_FUNCPREFIX}OnFileBrowseButton
762 2961 mdecorde
763 2961 mdecorde
		ReadINIStr $R9 $0 "Field $R1" State
764 2961 mdecorde
765 2961 mdecorde
		${NSD_CreateFileRequest} $R3u $R4u $R5u $R6u $R9
766 2961 mdecorde
		Pop $R9
767 2961 mdecorde
768 2961 mdecorde
	FunctionEnd
769 2961 mdecorde
770 2961 mdecorde
	Function ${UNINSTALLER_FUNCPREFIX}DirRequest
771 2961 mdecorde
772 2961 mdecorde
		IntOp $R5 $R5 - 15
773 2961 mdecorde
		IntOp $R8 $R3 + $R5
774 2961 mdecorde
775 2961 mdecorde
		${NSD_CreateBrowseButton} $R8u $R4u 15u $R6u ...
776 2961 mdecorde
		Pop $R8
777 2961 mdecorde
778 2961 mdecorde
		nsDialogs::SetUserData $R8 $R1 # remember field id
779 2961 mdecorde
780 2961 mdecorde
		WriteINIStr $0 "Field $R1" HWND2 $R8
781 2961 mdecorde
782 2961 mdecorde
		${NSD_OnClick} $R8 ${UNINSTALLER_FUNCPREFIX}OnDirBrowseButton
783 2961 mdecorde
784 2961 mdecorde
		ReadINIStr $R9 $0 "Field $R1" State
785 2961 mdecorde
786 2961 mdecorde
		${NSD_CreateFileRequest} $R3u $R4u $R5u $R6u $R9
787 2961 mdecorde
		Pop $R9
788 2961 mdecorde
789 2961 mdecorde
	FunctionEnd
790 2961 mdecorde
791 2961 mdecorde
	Function ${UNINSTALLER_FUNCPREFIX}OnFileBrowseButton
792 2961 mdecorde
793 2961 mdecorde
		Pop $R0
794 2961 mdecorde
795 2961 mdecorde
		nsDialogs::GetUserData $R0
796 2961 mdecorde
		Pop $R1
797 2961 mdecorde
798 2961 mdecorde
		ReadINIStr $R2 $0 "Field $R1" HWND
799 2961 mdecorde
		ReadINIStr $R4 $0 "Field $R1" Filter
800 2961 mdecorde
801 2961 mdecorde
		${NSD_GetText} $R2 $R3
802 2961 mdecorde
803 2961 mdecorde
		nsDialogs::SelectFileDialog save $R3 $R4
804 2961 mdecorde
		Pop $R3
805 2961 mdecorde
806 2961 mdecorde
		${If} $R3 != ""
807 2961 mdecorde
			SendMessage $R2 ${WM_SETTEXT} 0 STR:$R3
808 2961 mdecorde
		${EndIf}
809 2961 mdecorde
810 2961 mdecorde
	FunctionEnd
811 2961 mdecorde
812 2961 mdecorde
	Function ${UNINSTALLER_FUNCPREFIX}OnDirBrowseButton
813 2961 mdecorde
814 2961 mdecorde
		Pop $R0
815 2961 mdecorde
816 2961 mdecorde
		nsDialogs::GetUserData $R0
817 2961 mdecorde
		Pop $R1
818 2961 mdecorde
819 2961 mdecorde
		ReadINIStr $R2 $0 "Field $R1" HWND
820 2961 mdecorde
		ReadINIStr $R3 $0 "Field $R1" Text
821 2961 mdecorde
822 2961 mdecorde
		${NSD_GetText} $R2 $R4
823 2961 mdecorde
824 2961 mdecorde
		nsDialogs::SelectFolderDialog $R3 $R4
825 2961 mdecorde
		Pop $R3
826 2961 mdecorde
827 2961 mdecorde
		${If} $R3 != error
828 2961 mdecorde
			SendMessage $R2 ${WM_SETTEXT} 0 STR:$R3
829 2961 mdecorde
		${EndIf}
830 2961 mdecorde
831 2961 mdecorde
	FunctionEnd
832 2961 mdecorde
833 2961 mdecorde
	Function ${UNINSTALLER_FUNCPREFIX}Link
834 2961 mdecorde
835 2961 mdecorde
		${NSD_CreateLink} $R3u $R4u $R5u $R6u $R7
836 2961 mdecorde
		Pop $R9
837 2961 mdecorde
838 2961 mdecorde
		nsDialogs::SetUserData $R9 $R1 # remember field id
839 2961 mdecorde
840 2961 mdecorde
		${NSD_OnClick} $R9 ${UNINSTALLER_FUNCPREFIX}OnLink
841 2961 mdecorde
842 2961 mdecorde
	FunctionEnd
843 2961 mdecorde
844 2961 mdecorde
	Function ${UNINSTALLER_FUNCPREFIX}OnLink
845 2961 mdecorde
846 2961 mdecorde
		Pop $R0
847 2961 mdecorde
848 2961 mdecorde
		nsDialogs::GetUserData $R0
849 2961 mdecorde
		Pop $R1
850 2961 mdecorde
851 2961 mdecorde
		ReadINIStr $R1 $0 "Field $R1" STATE
852 2961 mdecorde
853 2961 mdecorde
		ExecShell "" $R1
854 2961 mdecorde
855 2961 mdecorde
	FunctionEnd
856 2961 mdecorde
857 2961 mdecorde
!macroend
858 2961 mdecorde
859 2961 mdecorde
!verbose pop
860 2961 mdecorde
!endif