123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400 |
- !ifndef WINAMP_PAGES_INSTALL_HEADER
- !define WINAMP_PAGES_INSTALL_HEADER
- !include ".\ui.nsh"
- !include "nx.nsh"
- !ifdef EXPRESS_MODE
- !define WINAMP_LICENSE_AGREEMENT ${LICENSE_PATH}
- !define WINAMP_PRIVACY_POLICY ${PRIVACY_POLICY_PATH}
- !endif ; defined(EXPRESS_MODE)
- Var waui.button.advanced
- !ifdef EXPRESS_MODE
- Var waui.WelcomePage.PrivacyNote
- !endif ; defined(EXPRESS_MODE)
- Var waui.WelcomePage.IsLicensePresented
- Function UI_OnInit
- Push $R0
- StrCpy $R0 0
- StrCpy $IDX_INSTTYPE_FULL $R0
- !ifdef FULL
- InstTypeSetText $R0 $(installFull)
- IntOp $R0 $R0 + 1
- !endif ; FULL
- StrCpy $IDX_INSTTYPE_STANDARD $R0
- !ifdef FULL
- InstTypeSetText $R0 $(installStandard)
- IntOp $R0 $R0 + 1
- !endif ; FULL
-
- InstTypeSetText $R0 $(installLite)
- IntOp $R0 $R0 + 1
- InstTypeSetText $R0 $(installMinimal)
- StrCpy $IDX_INSTTYPE_PREVIOUS $R0
- StrCpy $waui.WelcomePage.IsLicensePresented "no"
- ${ExpressMode_InitializePage}
- FunctionEnd
- Function .onGUIEnd
- FunctionEnd
- !ifdef EXPRESS_MODE
- Function onXPClickLink
- Pop $0 ; don't forget to pop HWND of the stack
- ExecShell open "http://www.winamp.com/legal/eula/pc"
- FunctionEnd
- !endif
- Function UI_OnWelcomePageShow
- !ifdef EXPRESS_MODE
- ${If} ${AtLeastWinVista}
- ${NX_GetMappedWindowRect} $mui.WelcomePage.Image $mui.WelcomePage $2 $3 $4 $5
- ; Adjust Image Control Size
- IntOp $4 $4 - $2
- IntOp $5 $R1 - $3
- ${NX_SetWindowSize} $mui.WelcomePage.Image $4 $5
- ; Clear previous image
- ${NSD_ClearImage} $mui.WelcomePage.Image
- ${NSD_FreeImage} $mui.WelcomePage.Image.Bitmap
- StrCpy $mui.WelcomePage.Image.Bitmap 0
- ; Reload Banner Image
- ${If} $PLUGINSDIR == ""
- ${OrIfNot} ${FileExists} "$PLUGINSDIR"
- InitPluginsDir
- ${EndIf}
- StrCpy $0 "$PLUGINSDIR\welcomeImage.bmp"
- ${IfNot} ${FileExists} "$0"
- ReserveFile "${WELCOMEFINISH_IMAGE_PATH}"
- File /oname=$0 "${WELCOMEFINISH_IMAGE_PATH}"
- ${EndIf}
- System::Call 'user32::LoadImageW(i 0, w "$0", i ${IMAGE_BITMAP}, i $4, i $5, i ${LR_LOADFROMFILE}) i.s'
- Pop $mui.WelcomePage.Image.Bitmap
- SendMessage $mui.WelcomePage.Image ${STM_SETIMAGE} \
- ${IMAGE_BITMAP} \
- $mui.WelcomePage.Image.Bitmap
- ; Get Dialog Height
- ${NX_GetWindowSize} $mui.WelcomePage $2 $R2
- ; Create License and Privacy Note
- IntOp $0 $R1 + 0
- IntOp $1 $R2 - $0
- IntOp $1 $1 - 4
- StrCpy $2 "$(IDS_PAGE_WELCOME_LEGAL)"
- ; TODO really don't want to have to do this as it's pretty lame as reason is
- ; on XP, using a SysLink will crash when it's destroyed i.e. page change
- ${If} ${IsWinXP}
- IntOp $R2 $R2 - 16
- ${NSD_CreateLink} 8u $R2 316u 16 "By clicking “Next”, you agree to the Winamp License Agreement."
- Pop $waui.WelcomePage.PrivacyNote
- ${NSD_OnClick} $waui.WelcomePage.PrivacyNote onXPClickLink
- SetCtlColors $waui.WelcomePage.PrivacyNote 0xFF0000 transparent
- ${Else}
- nsDialogs::CreateControl "SysLink" \
- ${WS_CHILD}|${WS_TABSTOP}|${WS_VISIBLE}\
- |${WS_CLIPSIBLINGS}\
- |${LWS_TRANSPARENT}|${LWS_NOPREFIX} \
- ${WS_EX_NOPARENTNOTIFY} \
- 8u $0 316u $1 $2
- Pop $waui.WelcomePage.PrivacyNote
- ${EndIf}
- ${If} $waui.WelcomePage.PrivacyNote != 0
- ${NSD_OnNotify} $waui.WelcomePage.PrivacyNote UI_OnWelcomePageNotify
- SendMessage $HWNDPARENT ${WM_GETFONT} 0 0 $0
- SendMessage $waui.WelcomePage.PrivacyNote ${WM_SETFONT} $0 0
- ${IfNot} ${IsWinXP}
- ; Adjust Link Control Size & Position
- ${NX_GetMappedWindowRect} $waui.WelcomePage.PrivacyNote $mui.WelcomePage $2 $3 $4 $5
- IntOp $4 $4 - $2 ; Link Control Max Width
- IntOp $5 $5 - $3 ; Link Control Max Height
- System::Call '*${stSIZE}($4, $5) .r1'
- SendMessage $waui.WelcomePage.PrivacyNote ${LM_GETIDEALSIZE} $4 $1 $0
- ${If} $0 <= $5
- System::Call "*$1${stSIZE} (.r6, .r7)"
- IntOp $8 $4 - $6
- IntOp $2 $2 + $8
- IntOp $8 $5 - $0
- IntOp $3 $3 + $8
- ${NX_SetWindowPosAndSize} $waui.WelcomePage.PrivacyNote $2 $3 $6 $0
- ${EndIf}
- System::Free $1
- ${EndIf}
- StrCpy $waui.WelcomePage.IsLicensePresented "yes"
- ${EndIf}
- ${EndIf}
- !endif ; EXPRESS_MODE
- FunctionEnd
- !ifdef EXPRESS_MODE
- Function UI_OnWelcomePageNotify
- Exch $R0
- Exch
- Exch $R1
- Exch 2
- Exch $R2
- ${If} $R1 = ${NM_CLICK}
- ${OrIf} $R1 = ${NM_RETURN}
- Push $R3
- Push $R4
- Push $0
- System::Call `*$R2(i, i, i, i, i, i, i, &w48 .R3)`
- ${If} $R3 == "winamp_eula"
- StrCpy $R4 "http://www.winamp.com/legal/eula/pc"
- ${ElseIf} $R3 == "winamp_privacy_policy"
- StrCpy $R4 "http://www.winamp.com/legal/privacy"
- ${Else}
- StrCpy $R4 ""
- ${EndIf}
- ${If} $R4 != ""
- Call ConnectInternet
- Pop $0
- ${If} $0 == "online"
- Call IsInternetAvailable
- Pop $0
- ${EndIf}
- ${Else}
- StrCpy $0 "offline"
- ${EndIf}
- ${If} $0 != "online"
- ${If} $PLUGINSDIR == ""
- ${OrIfNot} ${FileExists} "$PLUGINSDIR"
- InitPluginsDir
- ${EndIf}
- ${If} $R3 == "winamp_eula"
- StrCpy $R4 "${WINAMP_LICENSE_AGREEMENT}"
- ${ElseIf} $R3 == "winamp_privacy_policy"
- StrCpy $R4 "${WINAMP_PRIVACY_POLICY}"
- ${Else}
- StrCpy $R4 ""
- ${EndIf}
- ${If} $R4 != ""
- ${GetFileName} $R4 $R4
- StrCpy $R4 "$PLUGINSDIR\$R4"
- ${IfNot} ${FileExists} "$R4"
- ${If} $R3 == "winamp_eula"
- ReserveFile "${WINAMP_LICENSE_AGREEMENT}"
- File /oname=$R4 "${WINAMP_LICENSE_AGREEMENT}"
- ${ElseIf} $R3 == "winamp_privacy_policy"
- ReserveFile "${WINAMP_PRIVACY_POLICY}"
- File /oname=$R4 "${WINAMP_PRIVACY_POLICY}"
- ${EndIf}
- ${EndIf}
- ExecShell open $R4
- ${EndIf}
- ${Else}
- ExecShell open $R4
- ${EndIf}
- Pop $0
- Pop $R4
- Pop $R3
- ${EndIf}
- Pop $R2
- Pop $R0
- Pop $R1
- FunctionEnd
- !endif ;defined(EXPRESS_MODE)
- Function UI_OnDirectoryPagePre
- Push $0
- ${ExpressMode_IsEnabled} $0
- ${If} $0 == "yes"
- Pop $0
- Call UI_OnDirectoryPageLeave
- Abort
- ${EndIf}
- Pop $0
- FunctionEnd
- Function UI_OnDirectoryPageShow
- FindWindow $1 "#32770" "" $HWNDPARENT
- GetDlgItem $0 $1 0x3FF
- ShowWindow $0 ${SW_HIDE}
- GetDlgItem $0 $HWNDPARENT 0x02
- ${NX_GetMappedWindowRect} $0 $HWNDPARENT $2 $3 $4 $5
- IntOp $4 $4 - $2
- IntOp $5 $5 - $3
- System::Call `user32::CreateWindowExW(i 0, w "BUTTON", w "Advanced...", i ${WS_TABSTOP}|${WS_CHILD}, i 12, i r3, i r4 , i r5, i $HWNDPARENT, i 0, i 0, i 0) i.s`
- Pop $waui.button.advanced
- SendMessage $HWNDPARENT ${WM_GETFONT} 0 0 $0
- SendMessage $waui.button.advanced ${WM_SETFONT} $0 0
- FunctionEnd
- Function UI_OnDirectoryPageLeave
- ${NX_Log} "Directory page leave!!!"
- ${If} $waui.button.advanced <> 0
- System::Call "${fnDestroyWindow}($waui.button.advanced)"
- StrCpy $waui.button.advanced 0
- ${EndIf}
- Call SetupWinampDirectories
- FunctionEnd
- Function UI_OnLicensePagePre
- ${If} $waui.WelcomePage.IsLicensePresented == "yes"
- Call UI_OnLicensePageLeave
- Abort
- ${EndIf}
- FunctionEnd
- Function UI_OnLicensePageShow
- ${If} $waui.button.advanced <> 0
- System::Call "${fnDestroyWindow}($waui.button.advanced)"
- StrCpy $waui.button.advanced 0
- ${EndIf}
- FunctionEnd
- Function UI_OnLicensePageLeave
- FunctionEnd
- Function UI_OnComponentsPagePre
- Push $0
- ${ExpressMode_IsEnabled} $0
- ${If} $0 == "yes"
- Pop $0
- Abort
- ${EndIf}
- Pop $0
- FunctionEnd
- Function UI_OnComponentsPageShow
- Push $0
- Push $1
- Push $2
- Push $3
- Push $R1
- ${If} $mui.ComponentsPage.DescriptionText <> 0
- ${AndIf} $mui.ComponentsPage.DescriptionTitle <> 0
- ${NX_GetMappedWindowRect} $mui.ComponentsPage.DescriptionTitle \
- $mui.ComponentsPage \
- $0 $1 $2 $3
- ${NX_ConvertHorzDLU} $mui.ComponentsPage 5 $R1
- IntOp $0 $0 + $R1
- ${NX_ConvertHorzDLU} $mui.ComponentsPage 1 $R1
- IntOp $3 $3 - $R1
- ${NX_ConvertVertDLU} $mui.ComponentsPage 10 $R1
- IntOp $1 $1 + $R1
- ${If} $R1 > 10
- IntOp $1 $1 - 1 ; rollback 1px
- ${EndIf}
- ${NX_ConvertVertDLU} $mui.ComponentsPage 1 $R1
- IntOp $2 $2 - $R1
- IntOp $2 $2 - $0
- IntOp $3 $3 - $1
- ${NX_SetWindowPosAndSize} $mui.ComponentsPage.DescriptionText \
- $0 $1 \
- $2 $3
- ${EndIf}
- Pop $R1
- Pop $3
- Pop $2
- Pop $1
- Pop $0
- FunctionEnd
- Function UI_OnMouseOverSection
- Push $0
- Call GetSectionDescription
- Exch $0
- EnableWindow $mui.ComponentsPage.DescriptionText 1
- SendMessage $mui.ComponentsPage.DescriptionText ${WM_SETTEXT} 0 "STR:$0"
- Pop $0
- FunctionEnd
- Function UI_OnFinsihPagePre
- Push $0
- !ifndef _DEBUG
- ${ExpressMode_IsEnabled} $0
- ${If} $0 == "yes"
- Pop $0
- !ifndef MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
- Call UI_OnFinishPageReadMe
- !endif
- Abort
- ${EndIf}
- !endif ; defined(_DEBUG)
- Pop $0
- FunctionEnd
- Function UI_OnFinishPageReadMe
- SetPluginUnload alwaysoff
- ; Find Window info for the window we're displaying
- System::Call "*${stRECT} .r1"
- System::Call 'User32::GetWindowRect(i, i) i ($HWNDPARENT, r1) .r2'
- ; Get left/top/right/bottom
- System::Call "*$1${stRECT} (.r2, .r3, .r4, .r5)"
- System::Free $1
- WriteINIStr "$WINAMPINI" "SETUP" "left" $2
- WriteINIStr "$WINAMPINI" "SETUP" "top" $3
- WriteINIStr "$WINAMPINI" "SETUP" "right" $4
- WriteINIStr "$WINAMPINI" "SETUP" "bottom" $5
- ;SetPluginUnload manual
- HideWindow
-
- Push $1
- StrCpy $1 1
- File "/oname=$PLUGINSDIR\ShellDispatch.dll" "${NSISDIR}\Plugins\x86-unicode\ShellDispatch.dll"
- ${If} ${FileExists} "$PLUGINSDIR\ShellDispatch.dll"
- ${AndIf} ${FileExists} "$INSTDIR\${WINAMPEXE}"
- Push $0
- StrCpy $0 ""
- ClearErrors
- GetFullPathName /SHORT $0 "$PLUGINSDIR\ShellDispatch.dll"
- ${IfNot} ${Errors}
- ${AndIf} $0 != ""
- ExecWait 'rundll32.exe $0,RunDll_ShellExecute "open" "$INSTDIR\${WINAMPEXE}" "/NEW /REG=S" "$INSTDIR" 1' $1
- ${If} ${Errors}
- StrCpy $1 1
- ${EndIf}
- ${EndIf}
- Pop $0
- ${EndIf}
- ${If} $1 != 0
- Exec "$INSTDIR\${WINAMPEXE} /NEW /REG=S"
- ${EndIf}
- Pop $1
- Sleep 500
- FunctionEnd
- !endif
|