123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360 |
- /*
- 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"
- ;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}"
- !insertmacro MUI_HEADERIMAGE_INITHELPER_LOADIMAGE "${UN}" "_RTL" ${IMGRESID} "$PLUGINSDIR\modern-header.bmp"
- ${else}
- !endif
- File "/oname=$PLUGINSDIR\modern-header.bmp" "${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_BGCOLOR}"
- SetCtlColors $mui.Header.SubText "" "${MUI_BGCOLOR}"
- !else
- SetCtlColors $mui.Header.Text "" "transparent"
- SetCtlColors $mui.Header.SubText "" "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
|