Statistiques
| Révision :

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

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