Welcome.nsh 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. /*
  2. NSIS Modern User Interface
  3. Welcome page (implemented using nsDialogs)
  4. */
  5. ;--------------------------------
  6. ;Page interface settings and variables
  7. !macro MUI_WELCOMEPAGE_INTERFACE
  8. !ifndef MUI_WELCOMEPAGE_INTERFACE
  9. !define MUI_WELCOMEPAGE_INTERFACE
  10. Var mui.WelcomePage
  11. Var mui.WelcomePage.Image
  12. Var mui.WelcomePage.Image.Bitmap
  13. Var mui.WelcomePage.Title
  14. Var mui.WelcomePage.Title.Font
  15. Var mui.WelcomePage.Text
  16. !endif
  17. !insertmacro MUI_DEFAULT MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\win.bmp"
  18. !if "${MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_BITMAP}" == ""
  19. !error "Invalid MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_BITMAP"
  20. !endif
  21. !macroend
  22. ;--------------------------------
  23. ;Interface initialization
  24. !macro MUI_WELCOMEPAGE_GUIINIT
  25. !ifndef MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEWELCOMEPAGE_GUINIT
  26. !define MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEWELCOMEPAGE_GUINIT
  27. Function ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomePage.GUIInit
  28. InitPluginsDir
  29. File "/oname=$PLUGINSDIR\modern-wizard.bmp" "${MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_BITMAP}"
  30. !ifdef MUI_${MUI_PAGE_UNINSTALLER_PREFIX}PAGE_FUNCTION_GUIINIT
  31. Call "${MUI_${MUI_PAGE_UNINSTALLER_PREFIX}PAGE_FUNCTION_GUIINIT}"
  32. !endif
  33. FunctionEnd
  34. !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}PAGE_FUNCTION_GUIINIT ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomePage.GUIInit
  35. !endif
  36. !macroend
  37. ;--------------------------------
  38. ;Page declaration
  39. !macro MUI_PAGEDECLARATION_WELCOME
  40. !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEPAGE ""
  41. !insertmacro MUI_WELCOMEPAGE_INTERFACE
  42. !insertmacro MUI_WELCOMEPAGE_GUIINIT
  43. !insertmacro MUI_DEFAULT MUI_WELCOMEPAGE_TITLE "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_WELCOME_INFO_TITLE)"
  44. !insertmacro MUI_DEFAULT MUI_WELCOMEPAGE_TEXT "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_WELCOME_INFO_TEXT)"
  45. !insertmacro MUI_PAGE_FUNCTION_FULLWINDOW
  46. PageEx ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}custom
  47. PageCallbacks ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomePre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomeLeave_${MUI_UNIQUEID}
  48. PageExEnd
  49. !insertmacro MUI_FUNCTION_WELCOMEPAGE ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomePre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomeLeave_${MUI_UNIQUEID}
  50. !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TITLE
  51. !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TITLE_3LINES
  52. !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TEXT
  53. !macroend
  54. !macro MUI_PAGE_WELCOME
  55. !verbose push
  56. !verbose ${MUI_VERBOSE}
  57. !insertmacro MUI_PAGE_INIT
  58. !insertmacro MUI_PAGEDECLARATION_WELCOME
  59. !verbose pop
  60. !macroend
  61. !macro MUI_UNPAGE_WELCOME
  62. !verbose push
  63. !verbose ${MUI_VERBOSE}
  64. !insertmacro MUI_UNPAGE_INIT
  65. !insertmacro MUI_PAGEDECLARATION_WELCOME
  66. !verbose pop
  67. !macroend
  68. ;--------------------------------
  69. ;Page functions
  70. !macro MUI_FUNCTION_WELCOMEPAGE PRE LEAVE
  71. Function "${PRE}"
  72. !insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE
  73. ;Create dialog
  74. nsDialogs::Create 1044
  75. Pop $mui.WelcomePage
  76. nsDialogs::SetRTL $(^RTL)
  77. SetCtlColors $mui.WelcomePage "" "${MUI_BGCOLOR}"
  78. ;Image control
  79. ${NSD_CreateBitmap} 0u 0u 109u 193u ""
  80. Pop $mui.WelcomePage.Image
  81. !insertmacro MUI_INTERNAL_FULLWINDOW_LOADWIZARDIMAGE "${MUI_PAGE_UNINSTALLER_PREFIX}" $mui.WelcomePage.Image $PLUGINSDIR\modern-wizard.bmp $mui.WelcomePage.Image.Bitmap
  82. ;Positiong of controls
  83. ;Title
  84. !ifndef MUI_WELCOMEPAGE_TITLE_3LINES
  85. !define MUI_WELCOMEPAGE_TITLE_HEIGHT 28
  86. !else
  87. !define MUI_WELCOMEPAGE_TITLE_HEIGHT 38
  88. !endif
  89. ;Text
  90. ;17 = 10 (top margin) + 7 (distance between texts)
  91. !define /math MUI_WELCOMEPAGE_TEXT_TOP 17 + ${MUI_WELCOMEPAGE_TITLE_HEIGHT}
  92. ;Title
  93. ${NSD_CreateLabel} 120u 10u 195u ${MUI_WELCOMEPAGE_TITLE_HEIGHT}u "${MUI_WELCOMEPAGE_TITLE}"
  94. Pop $mui.WelcomePage.Title
  95. SetCtlColors $mui.WelcomePage.Title "" "${MUI_BGCOLOR}"
  96. CreateFont $mui.WelcomePage.Title.Font "$(^Font)" "12" "700"
  97. SendMessage $mui.WelcomePage.Title ${WM_SETFONT} $mui.WelcomePage.Title.Font 0
  98. ;Welcome text
  99. ${NSD_CreateLabel} 120u ${MUI_WELCOMEPAGE_TEXT_TOP}u 195u 130u "${MUI_WELCOMEPAGE_TEXT}"
  100. Pop $mui.WelcomePage.Text
  101. SetCtlColors $mui.WelcomePage.Text "" "${MUI_BGCOLOR}"
  102. ;Show page
  103. Call ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}muiPageLoadFullWindow
  104. !insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW
  105. nsDialogs::Show
  106. Call ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}muiPageUnloadFullWindow
  107. ;Delete image from memory
  108. ${NSD_FreeImage} $mui.WelcomePage.Image.Bitmap
  109. !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TITLE_HEIGHT
  110. !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TEXT_TOP
  111. FunctionEnd
  112. Function "${LEAVE}"
  113. !insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE
  114. FunctionEnd
  115. !macroend