From f01376b166bbc66e8efe2789952ee23667c12204 Mon Sep 17 00:00:00 2001 From: joostverburg Date: Wed, 24 Dec 2003 18:06:44 +0000 Subject: [PATCH] cleanup git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@3310 212acab6-be3b-0410-9dea-997c60f758d6 --- Include/Sections.nsh | 259 +++++++++++++++++++++++++++---------------- 1 file changed, 163 insertions(+), 96 deletions(-) diff --git a/Include/Sections.nsh b/Include/Sections.nsh index b32a5191..9f94440f 100644 --- a/Include/Sections.nsh +++ b/Include/Sections.nsh @@ -1,11 +1,19 @@ -; Some sections defines - +; Sections.nsh +; +; Defines and macros for section control +; ; Include in your script using: ; !include "Sections.nsh" -!ifndef SECTIONS_NSH_INCLUDED +;-------------------------------- -!define SECTIONS_NSH_INCLUDED +!ifndef SECTIONS_INCLUDED + +!define SECTIONS_INCLUDED + +;-------------------------------- + +; Generic section defines !define SF_SELECTED 1 !define SF_SUBSEC 2 @@ -17,90 +25,110 @@ !define SECTION_OFF 0xFFFFFFFE +;-------------------------------- + +; Select / unselect / reserve section + !macro SelectSection SECTION - Push $0 - SectionGetFlags "${SECTION}" $0 - IntOp $0 $0 | ${SF_SELECTED} - SectionSetFlags "${SECTION}" $0 - Pop $0 + + Push $0 + SectionGetFlags "${SECTION}" $0 + IntOp $0 $0 | ${SF_SELECTED} + SectionSetFlags "${SECTION}" $0 + Pop $0 + !macroend !macro UnselectSection SECTION - Push $0 - SectionGetFlags "${SECTION}" $0 - IntOp $0 $0 & ${SECTION_OFF} - SectionSetFlags "${SECTION}" $0 - Pop $0 + + Push $0 + SectionGetFlags "${SECTION}" $0 + IntOp $0 $0 & ${SECTION_OFF} + SectionSetFlags "${SECTION}" $0 + Pop $0 + !macroend -# if section selected, will unselect, if unselected, will select +; If section selected, will unselect, if unselected, will select + !macro ReverseSection SECTION - Push $0 - SectionGetFlags "${SECTION}" $0 - IntOp $0 $0 ^ ${SF_SELECTED} - SectionSetFlags "${SECTION}" $0 - Pop $0 + + Push $0 + SectionGetFlags "${SECTION}" $0 + IntOp $0 $0 ^ ${SF_SELECTED} + SectionSetFlags "${SECTION}" $0 + Pop $0 + !macroend -# macros for mutually exclusive section selection -# written by Tim Gallagher +;-------------------------------- -#### usage example (see one-section.nsi too): +; Macros for mutually exclusive section selection +; Written by Tim Gallagher +; +; See one-section.nsi for an example of usage -# Var SomeVar -# -# Function .onSelChange -# !insertmacro StartRadioButtons $SomeVar -# !insertmacro RadioButton ${sec1} -# !insertmacro RadioButton ${sec2} -# !insertmacro RadioButton ${sec3} -# !insertmacro EndRadioButtons -# FunctionEnd -# -# Function .onInit -# StrCpy $SomeVar ${sec1} ; default section -# !insertmacro UnselectSection ${sec2} -# !insertmacro UnselectSection ${sec3} -# FunctionEnd +; Starts the Radio Button Block +; You should pass a variable that keeps the selected section +; as the first parameter for this macro. This variable should +; be initialized to the default section's index. +; +; As this macro uses $R0 and $R1 you can't use those two as the +; varible which will keep the selected section. -# Starts the Radio Button Block. -# You should pass a variable that keeps the selected section -# as the first parameter for this macro. This variable should -# be initialized to the default section's index. As this macro -# uses $R0 and $R1 you can't use those two as the varible -# which will keep the selected section. !macro StartRadioButtons var -!define StartRadioButtons_Var "${var}" - Push $R0 - SectionGetFlags "${StartRadioButtons_Var}" $R0 - IntOp $R0 $R0 & ${SECTION_OFF} - SectionSetFlags "${StartRadioButtons_Var}" $R0 - Push $R1 - StrCpy $R1 "${StartRadioButtons_Var}" + !define StartRadioButtons_Var "${var}" + + Push $R0 + + SectionGetFlags "${StartRadioButtons_Var}" $R0 + IntOp $R0 $R0 & ${SECTION_OFF} + SectionSetFlags "${StartRadioButtons_Var}" $R0 + + Push $R1 + + StrCpy $R1 "${StartRadioButtons_Var}" + !macroend +; A radio button + !macro RadioButton SECTION_NAME - SectionGetFlags ${SECTION_NAME} $R0 - IntOp $R0 $R0 & ${SF_SELECTED} - IntCmp $R0 ${SF_SELECTED} 0 +2 +2 - StrCpy "${StartRadioButtons_Var}" ${SECTION_NAME} + + SectionGetFlags ${SECTION_NAME} $R0 + IntOp $R0 $R0 & ${SF_SELECTED} + IntCmp $R0 ${SF_SELECTED} 0 +2 +2 + StrCpy "${StartRadioButtons_Var}" ${SECTION_NAME} + !macroend -# ends the radio button block +; Ends the radio button block + !macro EndRadioButtons - StrCmp $R1 "${StartRadioButtons_Var}" 0 +4 ; selection hasn't changed - SectionGetFlags "${StartRadioButtons_Var}" $R0 - IntOp $R0 $R0 | ${SF_SELECTED} - SectionSetFlags "${StartRadioButtons_Var}" $R0 + + StrCmp $R1 "${StartRadioButtons_Var}" 0 +4 ; selection hasn't changed + SectionGetFlags "${StartRadioButtons_Var}" $R0 + IntOp $R0 $R0 | ${SF_SELECTED} + SectionSetFlags "${StartRadioButtons_Var}" $R0 + + Pop $R1 + Pop $R0 + + !undef StartRadioButtons_Var - Pop $R1 - Pop $R0 -!undef StartRadioButtons_Var !macroend -; For details about SetSectionInInstType and ClearSectionInInstType, see -; http://nsis.sourceforge.net/archive/nsisweb.php?page=287 +;-------------------------------- + +; These are two macros you can use to set a Section in an InstType +; or clear it from an InstType. +; +; Written by Robert Kehl +; +; For details, see http://nsis.sourceforge.net/archive/nsisweb.php?page=287 +; +; Use the defines below for the WANTED_INSTTYPE paramter. !define INSTTYPE_1 1 !define INSTTYPE_2 2 @@ -110,53 +138,91 @@ !define INSTTYPE_6 32 !define INSTTYPE_7 64 !define INSTTYPE_8 128 +!define INSTTYPE_9 256 +!define INSTTYPE_10 512 +!define INSTTYPE_11 1024 +!define INSTTYPE_12 2048 +!define INSTTYPE_13 4096 +!define INSTTYPE_14 8192 +!define INSTTYPE_15 16384 +!define INSTTYPE_16 32768 +!define INSTTYPE_17 65536 +!define INSTTYPE_18 131072 +!define INSTTYPE_19 262144 +!define INSTTYPE_20 524288 +!define INSTTYPE_21 1048576 +!define INSTTYPE_22 2097152 +!define INSTTYPE_23 4194304 +!define INSTTYPE_24 8388608 +!define INSTTYPE_25 16777216 +!define INSTTYPE_26 33554432 +!define INSTTYPE_27 67108864 +!define INSTTYPE_28 134217728 +!define INSTTYPE_29 268435456 +!define INSTTYPE_30 536870912 +!define INSTTYPE_31 1073741824 +!define INSTTYPE_32 2147483648 !macro SetSectionInInstType SECTION_NAME WANTED_INSTTYPE - Push $0 - SectionGetInstTypes "${SECTION_NAME}" $0 - IntOp $0 $0 | ${WANTED_INSTTYPE} - SectionSetInstTypes "${SECTION_NAME}" $0 - Pop $0 + + Push $0 + SectionGetInstTypes "${SECTION_NAME}" $0 + IntOp $0 $0 | ${WANTED_INSTTYPE} + SectionSetInstTypes "${SECTION_NAME}" $0 + Pop $0 + !macroend !macro ClearSectionInInstType SECTION_NAME WANTED_INSTTYPE - Push $0 - Push $1 - SectionGetInstTypes "${SECTION_NAME}" $0 - StrCpy $1 ${WANTED_INSTTYPE} - IntOp $1 $1 ~ - IntOp $0 $0 & $1 - SectionSetInstTypes "${SECTION_NAME}" $0 - Pop $1 - Pop $0 + + Push $0 + Push $1 + SectionGetInstTypes "${SECTION_NAME}" $0 + StrCpy $1 ${WANTED_INSTTYPE} + IntOp $1 $1 ~ + IntOp $0 $0 & $1 + SectionSetInstTypes "${SECTION_NAME}" $0 + Pop $1 + Pop $0 + !macroend -# more macros by derekrprice +;-------------------------------- + +; Set / clear / check bits in a section's flags +; Written by derekrprice + +; Set one or more bits in a sections's flags -; Set one or more BITS in SECTION's flags. !macro SetSectionFlag SECTION BITS - Push $R0 - SectionGetFlags "${SECTION}" $R0 - IntOp $R0 $R0 | "${BITS}" - SectionSetFlags "${SECTION}" $R0 - Pop $R0 + + Push $R0 + SectionGetFlags "${SECTION}" $R0 + IntOp $R0 $R0 | "${BITS}" + SectionSetFlags "${SECTION}" $R0 + Pop $R0 + !macroend -; Clear one or more BITS in SECTION's flags. +; Clear one or more bits in section's flags + !macro ClearSectionFlag SECTION BITS - Push $R0 - Push $R1 - SectionGetFlags "${SECTION}" $R0 - IntOp $R1 "${BITS}" ~ - IntOp $R0 $R0 & $R1 - SectionSetFlags "${SECTION}" $R0 - Pop $R1 - Pop $R0 + + Push $R0 + Push $R1 + SectionGetFlags "${SECTION}" $R0 + IntOp $R1 "${BITS}" ~ + IntOp $R0 $R0 & $R1 + SectionSetFlags "${SECTION}" $R0 + Pop $R1 + Pop $R0 + !macroend -; Check if one or more BITS in SECTION's flags are set. +; Check if one or more bits in section's flags are set ; If they are, jump to JUMPIFSET ; If not, jump to JUMPIFNOTSET + !macro SectionFlagIsSet SECTION BITS JUMPIFSET JUMPIFNOTSET Push $R0 SectionGetFlags "${SECTION}" $R0 @@ -168,5 +234,6 @@ Goto "${JUMPIFSET}" !macroend +;-------------------------------- !endif \ No newline at end of file