364 lines
9.7 KiB
Plaintext
364 lines
9.7 KiB
Plaintext
/*
|
|
|
|
NSIS Modern User Interface
|
|
Interface code for all pages
|
|
|
|
*/
|
|
|
|
;--------------------------------
|
|
;Variables
|
|
|
|
Var mui.Header.Text
|
|
Var mui.Header.Text.Font
|
|
Var mui.Header.SubText
|
|
Var mui.Header.Background
|
|
Var mui.Header.Image
|
|
|
|
Var mui.Branding.Text
|
|
Var mui.Branding.Background
|
|
|
|
Var mui.Line.Standard
|
|
Var mui.Line.FullWindow
|
|
|
|
Var mui.Button.Next
|
|
Var mui.Button.Cancel
|
|
Var mui.Button.Back
|
|
|
|
|
|
;--------------------------------
|
|
;General interface settings
|
|
|
|
!macro MUI_INTERFACE
|
|
|
|
!ifndef MUI_INTERFACE
|
|
|
|
!define MUI_INTERFACE
|
|
|
|
;These values are set after the interface settings in the script,
|
|
;so the script itself can override all values.
|
|
|
|
;Default interface settings in nsisconf.nsh
|
|
!ifdef MUI_INSERT_NSISCONF
|
|
!insertmacro MUI_NSISCONF
|
|
!endif
|
|
|
|
;Default interface settings
|
|
!insertmacro MUI_DEFAULT MUI_UI "${NSISDIR}\Contrib\UIs\modern.exe"
|
|
!insertmacro MUI_DEFAULT MUI_UI_HEADERIMAGE "${NSISDIR}\Contrib\UIs\modern_headerbmp.exe"
|
|
!insertmacro MUI_DEFAULT MUI_UI_HEADERIMAGE_RIGHT "${NSISDIR}\Contrib\UIs\modern_headerbmpr.exe"
|
|
!insertmacro MUI_DEFAULT MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
|
|
!insertmacro MUI_DEFAULT MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
|
|
!insertmacro MUI_DEFAULT MUI_BGCOLOR "FFFFFF"
|
|
!insertmacro MUI_DEFAULT MUI_TEXTCOLOR "000000"
|
|
|
|
;Map *_NOSTRETCH legacy define to the correct *_STRETCH value
|
|
!verbose push 2
|
|
!insertmacro MUI_LEGACY_MAP_NOSTRETCH MUI_HEADERIMAGE_ ""
|
|
!insertmacro MUI_LEGACY_MAP_NOSTRETCH MUI_WELCOMEFINISHPAGE_ ""
|
|
!insertmacro MUI_LEGACY_MAP_NOSTRETCH MUI_UNWELCOMEFINISHPAGE_ ""
|
|
!verbose pop
|
|
|
|
;Default header images
|
|
!ifdef MUI_HEADERIMAGE
|
|
|
|
!insertmacro MUI_DEFAULT MUI_HEADERIMAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Header\nsis.bmp"
|
|
!insertmacro MUI_DEFAULT MUI_HEADERIMAGE_BITMAP_STRETCH "FitControl"
|
|
!insertmacro MUI_DEFAULT MUI_HEADERIMAGE_BITMAP_RTL_STRETCH ${MUI_HEADERIMAGE_BITMAP_STRETCH}
|
|
|
|
!ifndef MUI_HEADERIMAGE_UNBITMAP
|
|
!define MUI_HEADERIMAGE_UNBITMAP "${MUI_HEADERIMAGE_BITMAP}"
|
|
!insertmacro MUI_SET MUI_HEADERIMAGE_UNBITMAP_STRETCH ${MUI_HEADERIMAGE_BITMAP_STRETCH}
|
|
!endif
|
|
|
|
!if "${MUI_HEADERIMAGE_BITMAP}" == ""
|
|
!error "Invalid MUI_HEADERIMAGE_BITMAP"
|
|
!endif
|
|
!if "${MUI_HEADERIMAGE_UNBITMAP}" == ""
|
|
!error "Invalid MUI_HEADERIMAGE_UNBITMAP"
|
|
!endif
|
|
|
|
!ifdef MUI_HEADERIMAGE_BITMAP_RTL
|
|
!ifndef MUI_HEADERIMAGE_UNBITMAP_RTL
|
|
!define MUI_HEADERIMAGE_UNBITMAP_RTL "${MUI_HEADERIMAGE_BITMAP_RTL}"
|
|
!insertmacro MUI_SET MUI_HEADERIMAGE_UNBITMAP_RTL_STRETCH ${MUI_HEADERIMAGE_BITMAP_RTL_STRETCH}
|
|
!endif
|
|
|
|
!if "${MUI_HEADERIMAGE_BITMAP_RTL}" == ""
|
|
!error "Invalid MUI_HEADERIMAGE_BITMAP_RTL"
|
|
!endif
|
|
!if "${MUI_HEADERIMAGE_UNBITMAP_RTL}" == ""
|
|
!error "Invalid MUI_HEADERIMAGE_UNBITMAP_RTL"
|
|
!endif
|
|
!endif
|
|
|
|
!insertmacro MUI_DEFAULT MUI_HEADERIMAGE_UNBITMAP_STRETCH ${MUI_HEADERIMAGE_BITMAP_STRETCH}
|
|
!insertmacro MUI_DEFAULT MUI_HEADERIMAGE_UNBITMAP_RTL_STRETCH ${MUI_HEADERIMAGE_BITMAP_RTL_STRETCH}
|
|
|
|
!endif
|
|
|
|
;Default texts
|
|
!insertmacro MUI_DEFAULT MUI_ABORTWARNING_TEXT "$(MUI_TEXT_ABORTWARNING)"
|
|
!insertmacro MUI_DEFAULT MUI_UNABORTWARNING_TEXT "$(MUI_UNTEXT_ABORTWARNING)"
|
|
|
|
;Apply settings
|
|
|
|
XPStyle On ;XP style setting in manifest resource
|
|
|
|
;Dialog resources
|
|
ChangeUI all "${MUI_UI}"
|
|
!ifdef MUI_HEADERIMAGE
|
|
!ifndef MUI_HEADERIMAGE_RIGHT
|
|
ChangeUI IDD_INST "${MUI_UI_HEADERIMAGE}"
|
|
!else
|
|
ChangeUI IDD_INST "${MUI_UI_HEADERIMAGE_RIGHT}"
|
|
!endif
|
|
!endif
|
|
|
|
;Icons
|
|
Icon "${MUI_ICON}"
|
|
UninstallIcon "${MUI_UNICON}"
|
|
|
|
!endif
|
|
|
|
!macroend
|
|
|
|
|
|
;--------------------------------
|
|
;Abort warning message box
|
|
|
|
!macro MUI_ABORTWARNING
|
|
|
|
!ifdef MUI_ABORTWARNING_CANCEL_DEFAULT
|
|
MessageBox MB_YESNO|MB_ICONEXCLAMATION|MB_DEFBUTTON2 "${MUI_ABORTWARNING_TEXT}" IDYES mui.Quit
|
|
!else
|
|
MessageBox MB_YESNO|MB_ICONEXCLAMATION "${MUI_ABORTWARNING_TEXT}" IDYES mui.Quit
|
|
!endif
|
|
|
|
Abort
|
|
mui.Quit:
|
|
|
|
!macroend
|
|
|
|
!macro MUI_UNABORTWARNING
|
|
|
|
!ifdef MUI_UNABORTWARNING_CANCEL_DEFAULT
|
|
MessageBox MB_YESNO|MB_ICONEXCLAMATION|MB_DEFBUTTON2 "${MUI_UNABORTWARNING_TEXT}" IDYES mui.Quit
|
|
!else
|
|
MessageBox MB_YESNO|MB_ICONEXCLAMATION "${MUI_UNABORTWARNING_TEXT}" IDYES mui.Quit
|
|
!endif
|
|
|
|
Abort
|
|
mui.Quit:
|
|
|
|
!macroend
|
|
|
|
|
|
;--------------------------------
|
|
;Initialization of GUI
|
|
|
|
!macro MUI_HEADERIMAGE_INITHELPER_LOADIMAGEWITHMACRO MACRO
|
|
|
|
!ifdef MUI_HEADERIMAGE_RIGHT
|
|
!ifndef MUI_OPTIMIZE_ALWAYSLTR ; Undocumented
|
|
${if} $(^RTL) == 1
|
|
!insertmacro ${MACRO} $mui.Header.Image "${PATH}" Left Leak
|
|
${Else}
|
|
!insertmacro ${MACRO} $mui.Header.Image "${PATH}" Right Leak
|
|
${EndIf}
|
|
!else
|
|
!insertmacro ${MACRO} $mui.Header.Image "${PATH}" Right Leak
|
|
!endif
|
|
!else
|
|
!insertmacro ${MACRO} $mui.Header.Image "${PATH}" Auto Leak
|
|
!endif
|
|
|
|
!macroend
|
|
!macro MUI_HEADERIMAGE_INITHELPER_LOADIMAGE UN RTL IMGRESID PATH
|
|
|
|
GetDlgItem $mui.Header.Image $HWNDPARENT ${IMGRESID} ; This variable is not used by every mode but we have to reference it to avoid a compiler warning.
|
|
|
|
!if "${MUI_HEADERIMAGE_${UN}BITMAP${RTL}_STRETCH}" == "NoStretchNoCropNoAlign"
|
|
|
|
SetBrandingImage /IMGID=${IMGRESID} "${PATH}"
|
|
|
|
!else if "${MUI_HEADERIMAGE_${UN}BITMAP${RTL}_STRETCH}" == "NoStretchNoCrop"
|
|
|
|
!insertmacro MUI_HEADERIMAGE_INITHELPER_LOADIMAGEWITHMACRO \
|
|
MUI_LOADANDXALIGNIMAGE
|
|
|
|
!else if "${MUI_HEADERIMAGE_${UN}BITMAP${RTL}_STRETCH}" == "AspectFitHeight"
|
|
|
|
!insertmacro MUI_HEADERIMAGE_INITHELPER_LOADIMAGEWITHMACRO \
|
|
MUI_LOADANDASPECTSTRETCHIMAGETOCONTROLHEIGHT
|
|
|
|
!else
|
|
|
|
!if "${MUI_HEADERIMAGE_${UN}BITMAP${RTL}_STRETCH}" != "FitControl"
|
|
!warning 'MUI_HEADERIMAGE_${UN}BITMAP${RTL}_STRETCH set to unknown value, defaulting to FitControl'
|
|
!endif
|
|
SetBrandingImage /IMGID=${IMGRESID} /RESIZETOFIT "${PATH}"
|
|
|
|
!endif
|
|
|
|
!macroend
|
|
|
|
!macro MUI_HEADERIMAGE_INIT UN IMGRESID
|
|
|
|
;Load and display header image
|
|
|
|
!ifdef MUI_HEADERIMAGE
|
|
|
|
InitPluginsDir
|
|
|
|
!ifdef MUI_HEADERIMAGE_${UN}BITMAP_RTL
|
|
${if} $(^RTL) == 1
|
|
|
|
File "/oname=$PLUGINSDIR\modern-header.bmp" "${MUI_HEADERIMAGE_${UN}BITMAP_RTL}"
|
|
!pragma verifyloadimage "${MUI_HEADERIMAGE_${UN}BITMAP_RTL}"
|
|
!insertmacro MUI_HEADERIMAGE_INITHELPER_LOADIMAGE "${UN}" "_RTL" ${IMGRESID} "$PLUGINSDIR\modern-header.bmp"
|
|
|
|
${else}
|
|
!endif
|
|
|
|
File "/oname=$PLUGINSDIR\modern-header.bmp" "${MUI_HEADERIMAGE_${UN}BITMAP}"
|
|
!pragma verifyloadimage "${MUI_HEADERIMAGE_${UN}BITMAP}"
|
|
!insertmacro MUI_HEADERIMAGE_INITHELPER_LOADIMAGE "${UN}" "" ${IMGRESID} "$PLUGINSDIR\modern-header.bmp"
|
|
|
|
!ifdef MUI_HEADERIMAGE_${UN}BITMAP_RTL
|
|
${endif}
|
|
!endif
|
|
|
|
!endif
|
|
|
|
!macroend
|
|
|
|
!macro MUI_GUIINIT_OUTERDIALOG UNINSTALLER
|
|
|
|
;Initialize outer dialog (fonts & colors)
|
|
|
|
;Header
|
|
GetDlgItem $mui.Header.Text $HWNDPARENT 1037
|
|
CreateFont $mui.Header.Text.Font "$(^Font)" "$(^FontSize)" "700"
|
|
SendMessage $mui.Header.Text ${WM_SETFONT} $mui.Header.Text.Font 0
|
|
|
|
GetDlgItem $mui.Header.SubText $HWNDPARENT 1038
|
|
|
|
!ifndef MUI_HEADER_TRANSPARENT_TEXT
|
|
SetCtlColors $mui.Header.Text "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}"
|
|
SetCtlColors $mui.Header.SubText "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}"
|
|
!else
|
|
SetCtlColors $mui.Header.Text "${MUI_TEXTCOLOR}" "transparent"
|
|
SetCtlColors $mui.Header.SubText "${MUI_TEXTCOLOR}" "transparent"
|
|
!endif
|
|
|
|
;Header image
|
|
!insertmacro MUI_HEADERIMAGE_INIT "${UNINSTALLER}" 1046
|
|
|
|
;Header background
|
|
GetDlgItem $mui.Header.Background $HWNDPARENT 1034
|
|
SetCtlColors $mui.Header.Background "" "${MUI_BGCOLOR}"
|
|
|
|
;Header icon image background
|
|
!ifndef MUI_HEADERIMAGE
|
|
GetDlgItem $mui.Header.Image $HWNDPARENT 1039
|
|
SetCtlColors $mui.Header.Image "" "${MUI_BGCOLOR}"
|
|
!endif
|
|
|
|
;Branding text
|
|
GetDlgItem $mui.Branding.Background $HWNDPARENT 1028
|
|
SetCtlColors $mui.Branding.Background /BRANDING
|
|
GetDlgItem $mui.Branding.Text $HWNDPARENT 1256
|
|
SetCtlColors $mui.Branding.Text /BRANDING
|
|
SendMessage $mui.Branding.Text ${WM_SETTEXT} 0 "STR:$(^Branding) "
|
|
|
|
;Lines
|
|
GetDlgItem $mui.Line.Standard $HWNDPARENT 1035
|
|
GetDlgItem $mui.Line.FullWindow $HWNDPARENT 1045
|
|
|
|
;Buttons
|
|
GetDlgItem $mui.Button.Next $HWNDPARENT 1
|
|
GetDlgItem $mui.Button.Cancel $HWNDPARENT 2
|
|
GetDlgItem $mui.Button.Back $HWNDPARENT 3
|
|
|
|
!macroend
|
|
|
|
|
|
;--------------------------------
|
|
;Interface functions
|
|
|
|
!macro MUI_FUNCTION_GUIINIT
|
|
|
|
Function .onGUIInit
|
|
|
|
!insertmacro MUI_GUIINIT_OUTERDIALOG ""
|
|
|
|
!ifdef MUI_PAGE_FUNCTION_GUIINIT
|
|
Call "${MUI_PAGE_FUNCTION_GUIINIT}"
|
|
!endif
|
|
|
|
!ifdef MUI_CUSTOMFUNCTION_GUIINIT
|
|
Call "${MUI_CUSTOMFUNCTION_GUIINIT}"
|
|
!endif
|
|
|
|
FunctionEnd
|
|
|
|
!macroend
|
|
|
|
!macro MUI_UNFUNCTION_GUIINIT
|
|
|
|
Function un.onGUIInit
|
|
|
|
!insertmacro MUI_GUIINIT_OUTERDIALOG UN
|
|
|
|
!ifdef MUI_UNPAGE_FUNCTION_GUIINIT
|
|
Call "${MUI_UNPAGE_FUNCTION_GUIINIT}"
|
|
!endif
|
|
|
|
!ifdef MUI_CUSTOMFUNCTION_UNGUIINIT
|
|
Call "${MUI_CUSTOMFUNCTION_UNGUIINIT}"
|
|
!endif
|
|
|
|
FunctionEnd
|
|
|
|
!macroend
|
|
|
|
!macro MUI_FUNCTION_ABORTWARNING
|
|
|
|
Function .onUserAbort
|
|
|
|
!ifdef MUI_PAGE_FUNCTION_ABORTWARNING
|
|
Call ${MUI_PAGE_FUNCTION_ABORTWARNING}
|
|
!endif
|
|
|
|
!ifdef MUI_ABORTWARNING
|
|
!insertmacro MUI_ABORTWARNING
|
|
!endif
|
|
|
|
!ifdef MUI_CUSTOMFUNCTION_ABORT
|
|
Call "${MUI_CUSTOMFUNCTION_ABORT}"
|
|
!endif
|
|
|
|
FunctionEnd
|
|
|
|
!macroend
|
|
|
|
!macro MUI_FUNCTION_UNABORTWARNING
|
|
|
|
Function un.onUserAbort
|
|
|
|
!ifdef MUI_UNPAGE_FUNCTION_ABORTWARNING
|
|
Call ${MUI_UNPAGE_FUNCTION_ABORTWARNING}
|
|
!endif
|
|
|
|
!ifdef MUI_UNABORTWARNING
|
|
!insertmacro MUI_UNABORTWARNING
|
|
!endif
|
|
|
|
!ifdef MUI_CUSTOMFUNCTION_UNABORT
|
|
Call "${MUI_CUSTOMFUNCTION_UNABORT}"
|
|
!endif
|
|
|
|
FunctionEnd
|
|
|
|
!macroend
|