Statistiques
| Révision :

root / tmp / org.txm.setups / nsis / Include / nsDialogs.nsh @ 2021

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

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