root / tmp / org.txm.setups / nsis-2.5 / Include / Sections.nsh @ 3100
Historique | Voir | Annoter | Télécharger (5,84 ko)
1 | 2961 | mdecorde | ; Sections.nsh |
---|---|---|---|
2 | 2961 | mdecorde | ; |
3 | 2961 | mdecorde | ; Defines and macros for section control |
4 | 2961 | mdecorde | ; |
5 | 2961 | mdecorde | ; Include in your script using: |
6 | 2961 | mdecorde | ; !include "Sections.nsh" |
7 | 2961 | mdecorde | |
8 | 2961 | mdecorde | ;-------------------------------- |
9 | 2961 | mdecorde | |
10 | 2961 | mdecorde | !ifndef SECTIONS_INCLUDED |
11 | 2961 | mdecorde | |
12 | 2961 | mdecorde | !define SECTIONS_INCLUDED |
13 | 2961 | mdecorde | |
14 | 2961 | mdecorde | ;-------------------------------- |
15 | 2961 | mdecorde | |
16 | 2961 | mdecorde | ; Generic section defines |
17 | 2961 | mdecorde | |
18 | 2961 | mdecorde | # section or section group is selected |
19 | 2961 | mdecorde | !define SF_SELECTED 1 |
20 | 2961 | mdecorde | # section group |
21 | 2961 | mdecorde | !define SF_SECGRP 2 |
22 | 2961 | mdecorde | !define SF_SUBSEC 2 # deprecated |
23 | 2961 | mdecorde | # section group end marker |
24 | 2961 | mdecorde | !define SF_SECGRPEND 4 |
25 | 2961 | mdecorde | !define SF_SUBSECEND 4 # deprecated |
26 | 2961 | mdecorde | # bold text (Section !blah) |
27 | 2961 | mdecorde | !define SF_BOLD 8 |
28 | 2961 | mdecorde | # read only (SectionIn RO) |
29 | 2961 | mdecorde | !define SF_RO 16 |
30 | 2961 | mdecorde | # expanded section group (SectionGroup /e blah) |
31 | 2961 | mdecorde | !define SF_EXPAND 32 |
32 | 2961 | mdecorde | # section group is partially selected |
33 | 2961 | mdecorde | !define SF_PSELECTED 64 # internal |
34 | 2961 | mdecorde | # internal |
35 | 2961 | mdecorde | !define SF_TOGGLED 128 # internal |
36 | 2961 | mdecorde | !define SF_NAMECHG 256 # internal |
37 | 2961 | mdecorde | |
38 | 2961 | mdecorde | # mask to toggle off the selected flag |
39 | 2961 | mdecorde | !define SECTION_OFF 0xFFFFFFFE |
40 | 2961 | mdecorde | |
41 | 2961 | mdecorde | ;-------------------------------- |
42 | 2961 | mdecorde | |
43 | 2961 | mdecorde | ; Select / unselect / reserve section |
44 | 2961 | mdecorde | |
45 | 2961 | mdecorde | !macro SelectSection SECTION |
46 | 2961 | mdecorde | |
47 | 2961 | mdecorde | Push $0 |
48 | 2961 | mdecorde | Push $1 |
49 | 2961 | mdecorde | StrCpy $1 "${SECTION}" |
50 | 2961 | mdecorde | SectionGetFlags $1 $0 |
51 | 2961 | mdecorde | IntOp $0 $0 | ${SF_SELECTED} |
52 | 2961 | mdecorde | SectionSetFlags $1 $0 |
53 | 2961 | mdecorde | Pop $1 |
54 | 2961 | mdecorde | Pop $0 |
55 | 2961 | mdecorde | |
56 | 2961 | mdecorde | !macroend |
57 | 2961 | mdecorde | |
58 | 2961 | mdecorde | !macro UnselectSection SECTION |
59 | 2961 | mdecorde | |
60 | 2961 | mdecorde | Push $0 |
61 | 2961 | mdecorde | Push $1 |
62 | 2961 | mdecorde | StrCpy $1 "${SECTION}" |
63 | 2961 | mdecorde | SectionGetFlags $1 $0 |
64 | 2961 | mdecorde | IntOp $0 $0 & ${SECTION_OFF} |
65 | 2961 | mdecorde | SectionSetFlags $1 $0 |
66 | 2961 | mdecorde | Pop $1 |
67 | 2961 | mdecorde | Pop $0 |
68 | 2961 | mdecorde | |
69 | 2961 | mdecorde | !macroend |
70 | 2961 | mdecorde | |
71 | 2961 | mdecorde | ; If section selected, will unselect, if unselected, will select |
72 | 2961 | mdecorde | |
73 | 2961 | mdecorde | !macro ReverseSection SECTION |
74 | 2961 | mdecorde | |
75 | 2961 | mdecorde | Push $0 |
76 | 2961 | mdecorde | Push $1 |
77 | 2961 | mdecorde | StrCpy $1 "${SECTION}" |
78 | 2961 | mdecorde | SectionGetFlags $1 $0 |
79 | 2961 | mdecorde | IntOp $0 $0 ^ ${SF_SELECTED} |
80 | 2961 | mdecorde | SectionSetFlags $1 $0 |
81 | 2961 | mdecorde | Pop $1 |
82 | 2961 | mdecorde | Pop $0 |
83 | 2961 | mdecorde | |
84 | 2961 | mdecorde | !macroend |
85 | 2961 | mdecorde | |
86 | 2961 | mdecorde | ;-------------------------------- |
87 | 2961 | mdecorde | |
88 | 2961 | mdecorde | ; Macros for mutually exclusive section selection |
89 | 2961 | mdecorde | ; Written by Tim Gallagher |
90 | 2961 | mdecorde | ; |
91 | 2961 | mdecorde | ; See one-section.nsi for an example of usage |
92 | 2961 | mdecorde | |
93 | 2961 | mdecorde | ; Starts the Radio Button Block |
94 | 2961 | mdecorde | ; You should pass a variable that keeps the selected section |
95 | 2961 | mdecorde | ; as the first parameter for this macro. This variable should |
96 | 2961 | mdecorde | ; be initialized to the default section's index. |
97 | 2961 | mdecorde | ; |
98 | 2961 | mdecorde | ; As this macro uses $R0 and $R1 you can't use those two as the |
99 | 2961 | mdecorde | ; varible which will keep the selected section. |
100 | 2961 | mdecorde | |
101 | 2961 | mdecorde | !macro StartRadioButtons var |
102 | 2961 | mdecorde | |
103 | 2961 | mdecorde | !define StartRadioButtons_Var "${var}" |
104 | 2961 | mdecorde | |
105 | 2961 | mdecorde | Push $R0 |
106 | 2961 | mdecorde | |
107 | 2961 | mdecorde | SectionGetFlags "${StartRadioButtons_Var}" $R0 |
108 | 2961 | mdecorde | IntOp $R0 $R0 & ${SECTION_OFF} |
109 | 2961 | mdecorde | SectionSetFlags "${StartRadioButtons_Var}" $R0 |
110 | 2961 | mdecorde | |
111 | 2961 | mdecorde | Push $R1 |
112 | 2961 | mdecorde | |
113 | 2961 | mdecorde | StrCpy $R1 "${StartRadioButtons_Var}" |
114 | 2961 | mdecorde | |
115 | 2961 | mdecorde | !macroend |
116 | 2961 | mdecorde | |
117 | 2961 | mdecorde | ; A radio button |
118 | 2961 | mdecorde | |
119 | 2961 | mdecorde | !macro RadioButton SECTION_NAME |
120 | 2961 | mdecorde | |
121 | 2961 | mdecorde | SectionGetFlags ${SECTION_NAME} $R0 |
122 | 2961 | mdecorde | IntOp $R0 $R0 & ${SF_SELECTED} |
123 | 2961 | mdecorde | IntCmp $R0 ${SF_SELECTED} 0 +2 +2 |
124 | 2961 | mdecorde | StrCpy "${StartRadioButtons_Var}" ${SECTION_NAME} |
125 | 2961 | mdecorde | |
126 | 2961 | mdecorde | !macroend |
127 | 2961 | mdecorde | |
128 | 2961 | mdecorde | ; Ends the radio button block |
129 | 2961 | mdecorde | |
130 | 2961 | mdecorde | !macro EndRadioButtons |
131 | 2961 | mdecorde | |
132 | 2961 | mdecorde | StrCmp $R1 "${StartRadioButtons_Var}" 0 +4 ; selection hasn't changed |
133 | 2961 | mdecorde | SectionGetFlags "${StartRadioButtons_Var}" $R0 |
134 | 2961 | mdecorde | IntOp $R0 $R0 | ${SF_SELECTED} |
135 | 2961 | mdecorde | SectionSetFlags "${StartRadioButtons_Var}" $R0 |
136 | 2961 | mdecorde | |
137 | 2961 | mdecorde | Pop $R1 |
138 | 2961 | mdecorde | Pop $R0 |
139 | 2961 | mdecorde | |
140 | 2961 | mdecorde | !undef StartRadioButtons_Var |
141 | 2961 | mdecorde | |
142 | 2961 | mdecorde | !macroend |
143 | 2961 | mdecorde | |
144 | 2961 | mdecorde | ;-------------------------------- |
145 | 2961 | mdecorde | |
146 | 2961 | mdecorde | ; These are two macros you can use to set a Section in an InstType |
147 | 2961 | mdecorde | ; or clear it from an InstType. |
148 | 2961 | mdecorde | ; |
149 | 2961 | mdecorde | ; Written by Robert Kehl |
150 | 2961 | mdecorde | ; |
151 | 2961 | mdecorde | ; For details, see http://nsis.sourceforge.net/wiki/SetSectionInInstType%2C_ClearSectionInInstType |
152 | 2961 | mdecorde | ; |
153 | 2961 | mdecorde | ; Use the defines below for the WANTED_INSTTYPE paramter. |
154 | 2961 | mdecorde | |
155 | 2961 | mdecorde | !define INSTTYPE_1 1 |
156 | 2961 | mdecorde | !define INSTTYPE_2 2 |
157 | 2961 | mdecorde | !define INSTTYPE_3 4 |
158 | 2961 | mdecorde | !define INSTTYPE_4 8 |
159 | 2961 | mdecorde | !define INSTTYPE_5 16 |
160 | 2961 | mdecorde | !define INSTTYPE_6 32 |
161 | 2961 | mdecorde | !define INSTTYPE_7 64 |
162 | 2961 | mdecorde | !define INSTTYPE_8 128 |
163 | 2961 | mdecorde | !define INSTTYPE_9 256 |
164 | 2961 | mdecorde | !define INSTTYPE_10 512 |
165 | 2961 | mdecorde | !define INSTTYPE_11 1024 |
166 | 2961 | mdecorde | !define INSTTYPE_12 2048 |
167 | 2961 | mdecorde | !define INSTTYPE_13 4096 |
168 | 2961 | mdecorde | !define INSTTYPE_14 8192 |
169 | 2961 | mdecorde | !define INSTTYPE_15 16384 |
170 | 2961 | mdecorde | !define INSTTYPE_16 32768 |
171 | 2961 | mdecorde | !define INSTTYPE_17 65536 |
172 | 2961 | mdecorde | !define INSTTYPE_18 131072 |
173 | 2961 | mdecorde | !define INSTTYPE_19 262144 |
174 | 2961 | mdecorde | !define INSTTYPE_20 524288 |
175 | 2961 | mdecorde | !define INSTTYPE_21 1048576 |
176 | 2961 | mdecorde | !define INSTTYPE_22 2097152 |
177 | 2961 | mdecorde | !define INSTTYPE_23 4194304 |
178 | 2961 | mdecorde | !define INSTTYPE_24 8388608 |
179 | 2961 | mdecorde | !define INSTTYPE_25 16777216 |
180 | 2961 | mdecorde | !define INSTTYPE_26 33554432 |
181 | 2961 | mdecorde | !define INSTTYPE_27 67108864 |
182 | 2961 | mdecorde | !define INSTTYPE_28 134217728 |
183 | 2961 | mdecorde | !define INSTTYPE_29 268435456 |
184 | 2961 | mdecorde | !define INSTTYPE_30 536870912 |
185 | 2961 | mdecorde | !define INSTTYPE_31 1073741824 |
186 | 2961 | mdecorde | !define INSTTYPE_32 2147483648 |
187 | 2961 | mdecorde | |
188 | 2961 | mdecorde | !macro SetSectionInInstType SECTION_NAME WANTED_INSTTYPE |
189 | 2961 | mdecorde | |
190 | 2961 | mdecorde | Push $0 |
191 | 2961 | mdecorde | Push $1 |
192 | 2961 | mdecorde | StrCpy $1 "${SECTION_NAME}" |
193 | 2961 | mdecorde | SectionGetInstTypes $1 $0 |
194 | 2961 | mdecorde | IntOp $0 $0 | ${WANTED_INSTTYPE} |
195 | 2961 | mdecorde | SectionSetInstTypes $1 $0 |
196 | 2961 | mdecorde | Pop $1 |
197 | 2961 | mdecorde | Pop $0 |
198 | 2961 | mdecorde | |
199 | 2961 | mdecorde | !macroend |
200 | 2961 | mdecorde | |
201 | 2961 | mdecorde | !macro ClearSectionInInstType SECTION_NAME WANTED_INSTTYPE |
202 | 2961 | mdecorde | |
203 | 2961 | mdecorde | Push $0 |
204 | 2961 | mdecorde | Push $1 |
205 | 2961 | mdecorde | Push $2 |
206 | 2961 | mdecorde | StrCpy $2 "${SECTION_NAME}" |
207 | 2961 | mdecorde | SectionGetInstTypes $2 $0 |
208 | 2961 | mdecorde | StrCpy $1 ${WANTED_INSTTYPE} |
209 | 2961 | mdecorde | IntOp $1 $1 ~ |
210 | 2961 | mdecorde | IntOp $0 $0 & $1 |
211 | 2961 | mdecorde | SectionSetInstTypes $2 $0 |
212 | 2961 | mdecorde | Pop $2 |
213 | 2961 | mdecorde | Pop $1 |
214 | 2961 | mdecorde | Pop $0 |
215 | 2961 | mdecorde | |
216 | 2961 | mdecorde | !macroend |
217 | 2961 | mdecorde | |
218 | 2961 | mdecorde | ;-------------------------------- |
219 | 2961 | mdecorde | |
220 | 2961 | mdecorde | ; Set / clear / check bits in a section's flags |
221 | 2961 | mdecorde | ; Written by derekrprice |
222 | 2961 | mdecorde | |
223 | 2961 | mdecorde | ; Set one or more bits in a sections's flags |
224 | 2961 | mdecorde | |
225 | 2961 | mdecorde | !macro SetSectionFlag SECTION BITS |
226 | 2961 | mdecorde | |
227 | 2961 | mdecorde | Push $R0 |
228 | 2961 | mdecorde | Push $R1 |
229 | 2961 | mdecorde | StrCpy $R1 "${SECTION}" |
230 | 2961 | mdecorde | SectionGetFlags $R1 $R0 |
231 | 2961 | mdecorde | IntOp $R0 $R0 | "${BITS}" |
232 | 2961 | mdecorde | SectionSetFlags $R1 $R0 |
233 | 2961 | mdecorde | Pop $R1 |
234 | 2961 | mdecorde | Pop $R0 |
235 | 2961 | mdecorde | |
236 | 2961 | mdecorde | !macroend |
237 | 2961 | mdecorde | |
238 | 2961 | mdecorde | ; Clear one or more bits in section's flags |
239 | 2961 | mdecorde | |
240 | 2961 | mdecorde | !macro ClearSectionFlag SECTION BITS |
241 | 2961 | mdecorde | |
242 | 2961 | mdecorde | Push $R0 |
243 | 2961 | mdecorde | Push $R1 |
244 | 2961 | mdecorde | Push $R2 |
245 | 2961 | mdecorde | StrCpy $R2 "${SECTION}" |
246 | 2961 | mdecorde | SectionGetFlags $R2 $R0 |
247 | 2961 | mdecorde | IntOp $R1 "${BITS}" ~ |
248 | 2961 | mdecorde | IntOp $R0 $R0 & $R1 |
249 | 2961 | mdecorde | SectionSetFlags $R2 $R0 |
250 | 2961 | mdecorde | Pop $R2 |
251 | 2961 | mdecorde | Pop $R1 |
252 | 2961 | mdecorde | Pop $R0 |
253 | 2961 | mdecorde | |
254 | 2961 | mdecorde | !macroend |
255 | 2961 | mdecorde | |
256 | 2961 | mdecorde | ; Check if one or more bits in section's flags are set |
257 | 2961 | mdecorde | ; If they are, jump to JUMPIFSET |
258 | 2961 | mdecorde | ; If not, jump to JUMPIFNOTSET |
259 | 2961 | mdecorde | |
260 | 2961 | mdecorde | !macro SectionFlagIsSet SECTION BITS JUMPIFSET JUMPIFNOTSET |
261 | 2961 | mdecorde | Push $R0 |
262 | 2961 | mdecorde | SectionGetFlags "${SECTION}" $R0 |
263 | 2961 | mdecorde | IntOp $R0 $R0 & "${BITS}" |
264 | 2961 | mdecorde | IntCmp $R0 "${BITS}" +3 |
265 | 2961 | mdecorde | Pop $R0 |
266 | 2961 | mdecorde | StrCmp "" "${JUMPIFNOTSET}" +3 "${JUMPIFNOTSET}" |
267 | 2961 | mdecorde | Pop $R0 |
268 | 2961 | mdecorde | Goto "${JUMPIFSET}" |
269 | 2961 | mdecorde | !macroend |
270 | 2961 | mdecorde | |
271 | 2961 | mdecorde | ;-------------------------------- |
272 | 2961 | mdecorde | |
273 | 2961 | mdecorde | !endif |