Buttons Header: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
(Change button caption) |
(Change button caption) |
||
Line 10: | Line 10: | ||
; For installers | ; For installers | ||
; hide the Back button | ; hide the Back button | ||
${buttonVisible} " | ${buttonVisible} "Skip Page" 0 | ||
; enable the Next button | ; enable the Next button | ||
${buttonEnabled} "Next" 1 | ${buttonEnabled} "Next" 1 | ||
; Change the Cancel button's label to "Exit" | ; Change the Cancel button's label to "Exit" | ||
${buttonText} "Cancel" " | ${buttonText} "Cancel" "Next" | ||
; For uninstallers, the same commands apply, prepended with 'un'. E.g. | ; For uninstallers, the same commands apply, prepended with 'un'. E.g. | ||
Line 94: | Line 94: | ||
Push $3 ; Stack: $3 $0 $2 $1 | Push $3 ; Stack: $3 $0 $2 $1 | ||
StrCmp $0 " | StrCmp $0 "Skip Page" 0 +3 | ||
StrCpy $3 3 | StrCpy $3 3 | ||
goto _setbutton | goto _setbutton | ||
Line 100: | Line 100: | ||
StrCpy $3 1 | StrCpy $3 1 | ||
goto _setbutton | goto _setbutton | ||
StrCmp $0 " | StrCmp $0 "Cancel" 0 _end | ||
StrCpy $3 2 | StrCpy $3 2 | ||
Revision as of 05:35, 9 December 2008
Below is a simple header file for handling common operations on the 3 main installer buttons; Back, Next and Cancel:
- Disabling/Enabled a button
- Hiding/Unhiding a button
- Changing the button's label
Usage examples:
; For installers ; hide the Back button ${buttonVisible} "Skip Page" 0 ; enable the Next button ${buttonEnabled} "Next" 1 ; Change the Cancel button's label to "Exit" ${buttonText} "Cancel" "Next" ; For uninstallers, the same commands apply, prepended with 'un'. E.g. ${unbuttonVisible} "Back" 0
; Defines !define buttonVisible "!insertMacro buttonVisible" !define buttonEnabled "!insertMacro buttonEnabled" !define buttonText "!insertMacro buttonText" !define unbuttonVisible "!insertMacro unbuttonVisible" !define unbuttonEnabled "!insertMacro unbuttonEnabled" !define unbuttonText "!insertMacro unbuttonText" ; Interim macros !macro buttonVisible button value Push ${button} Push v Push ${value} Call Buttons !macroend !macro unbuttonVisible button value Push ${button} Push v Push ${value} Call Un.Buttons !macroend !macro buttonEnabled button value Push ${button} Push e Push ${value} Call Buttons !macroend !macro unbuttonEnabled button value Push ${button} Push e Push ${value} Call Un.Buttons !macroend !macro buttonText button value Push ${button} Push t Push "${value}" Call Buttons !macroend !macro unbuttonText button value Push ${button} Push t Push "${value}" Call Un.Buttons !macroend ; Function (inserted via macros for installer vs uninstaller) ; Buttons FUnction ; Used to interact with the three default buttons; Back, Next, Cancel ; Usage : ; Push Back|Next|Cancel ; Push v|e|t ; Push 1|0|<string> ; Call Buttons | Call Un.Buttons ; Result : ; Interacts with the appropriate button ; If 'v', then 1 will set visible and 0 will set invisible ; If 'e', then 1 will set enabled and 0 will set disabled ; If 't', then <string> will be set as the button's new label text !macro ButtonsFunc Un Function ${Un}Buttons ; Stack: <value> <mode> <button> Exch $2 ; value ; Stack: $2 <mode> <button> Exch ; Stack: <mode> $2 <button> Exch $1 ; mode ; Stack: $1 $2 <button> Exch 2 ; Stack: <button> $2 $1 Exch $0 ; button ; Stack: $0 $2 $1 Push $3 ; Stack: $3 $0 $2 $1 StrCmp $0 "Skip Page" 0 +3 StrCpy $3 3 goto _setbutton StrCmp $0 "Next" 0 +3 StrCpy $3 1 goto _setbutton StrCmp $0 "Cancel" 0 _end StrCpy $3 2 _setbutton: GetDlgItem $3 $HWNDPARENT $3 StrCmp $1 "v" 0 +3 ShowWindow $3 $2 goto _end StrCmp $1 "e" 0 +3 EnableWindow $3 $2 goto _end StrCmp $1 "t" 0 _end SendMessage $3 ${WM_SETTEXT} 0 "STR:$2" _end: ; Stack: $3 $0 $2 $1 Pop $3 ; Stack: $0 $2 $1 Pop $0 ; Stack: $2 $1 Pop $2 ; Stack: $1 Pop $1 ; Stack: [clean] FunctionEnd !macroend !insertmacro ButtonsFunc "" !insertmacro ButtonsFunc "Un."