# INFO # !addincludedir "." !addplugindir "." Name "Flag Combobox" OutFile "Flag Combobox.exe" InstallDir "$TEMP\Flag Combobox" # COMPRESSOR # SetCompressor /SOLID /FINAL lzma # RUNTIME # RequestExecutionLevel USER # HIDE # SHOW # ShowInstDetails nevershow ShowUninstDetails NeverShow # INCLUDES # !include "MUI2.nsh" !include "WordFunc.nsh" !include "FileFunc.nsh" !include "nsDialogs.nsh" !include "LogicLib.nsh" !include "WinCore.nsh" !include "WinMessages.nsh" # ICON & STYLE # BrandingText /TRIMRIGHT " " # PAGE # Page custom "Welcome.Page" "" Page instfiles "" # LANGUAGES # !insertmacro MUI_LANGUAGE "English" !insertmacro MUI_LANGUAGE "French" !insertmacro MUI_LANGUAGE "German" !insertmacro MUI_LANGUAGE "Romanian" # INIT # Function .onInit FunctionEnd # PAGE # Function "Welcome.Page" # VARIABLES # var /GLOBAL DIALOG var /GLOBAL Lbl.Welcome var /GLOBAL Lbl.Sub.Welcome var /GLOBAL Lbl.Language var /GLOBAL LANNAME var /GLOBAL DropList GetDlgItem $0 $HWNDPARENT 1 ShowWindow $0 ${SW_HIDE} GetDlgItem $0 $HWNDPARENT 2 ShowWindow $0 ${SW_HIDE} GetDlgItem $0 $HWNDPARENT 3 ShowWindow $0 ${SW_HIDE} GetDlgItem $0 $HWNDPARENT 1990 ShowWindow $0 ${SW_HIDE} GetDlgItem $0 $HWNDPARENT 1991 ShowWindow $0 ${SW_HIDE} GetDlgItem $0 $HWNDPARENT 1992 ShowWindow $0 ${SW_HIDE} nsDialogs::Create /NOUNLOAD 1044 Pop $DIALOG ${If} $DIALOG == error Abort ${EndIf} # WELCOME # nsDialogs::CreateControl /NOUNLOAD STATIC 0x40000000|0x10000000|0x04000000|0x00000100 0x00000020 3% 5% 30% 8% "My Name Setup" Pop $Lbl.Welcome CreateFont $0 "$(^Font)" 14 300 SendMessage $Lbl.Welcome ${WM_SETFONT} $0 0 nsDialogs::CreateControl /NOUNLOAD STATIC 0x40000000|0x10000000|0x04000000|0x00000100 0x00000020 3% 15% 60% 4% "This installer will help you to install $(^Name) ..." pop $Lbl.Sub.Welcome # Language # nsDialogs::CreateControl /NOUNLOAD STATIC 0x40000000|0x10000000|0x04000000|0x00000100 0x00000020 70% 84% 20% 4% "Language:" pop $Lbl.Language nsDialogs::CreateControl /NOUNLOAD COMBOBOX 0x40000000|0x10000000|0x04000000|0x00010000|0x00200000|0x02000000|0x0040|0x0200|0x0002 0x00000100|0x00000200 70% 90% 25% 5% "" Pop $DropList StrCpy $1 $DropList GetFunctionAddress $3 "GetSelectedLang" nsDialogs::OnChange /NOUNLOAD $1 $3 SendMessage $DropList ${CB_GETCOUNT} 0 0 $0 IntCmp $0 0 0 0 next ${NSD_CB_AddString} $DropList English ${NSD_CB_AddString} $DropList French ${NSD_CB_AddString} $DropList Germen ${NSD_CB_AddString} $DropList Romanian next: ; To remember the selection of combobox ${Unless} $LANNAME == "" SendMessage $DropList ${CB_FINDSTRING} -1 "STR:$LANNAME" $0 ${If} $0 = -1 SendMessage $DropList ${CB_SETCURSEL} 0 0 ${Else} SendMessage $DropList ${CB_SETCURSEL} $0 0 ${EndIf} ${Else} SendMessage $DropList ${CB_SETCURSEL} 0 0 ${EndUnless} nsDialogs::Show FunctionEnd # ENGLISH # !define LANGSTRING_SUBTITLE_1033 "This installer will help you to install $(^Name) ..." !define LANGSTRING_LANGUAGE_1033 "Language:" # FRENCH # !define LANGSTRING_SUBTITLE_1036 "Ce programme d'installation vous aidera à installer $(^Name) ..." !define LANGSTRING_LANGUAGE_1036 "Langue:" # GERMAN # !define LANGSTRING_SUBTITLE_1031 "Dieser Installateur hilft Ihnen bei der Installation von $(^Name) ..." !define LANGSTRING_LANGUAGE_1031 "Sprache:" # ROMANIAN # !define LANGSTRING_SUBTITLE_1048 "Acest instalator te va ajuta să instalezi $(^Name) ..." !define LANGSTRING_LANGUAGE_1048 "Limbă:" !macro __NSD_CB_GetSelection CONTROL VAR Push $0 SendMessage ${CONTROL} ${CB_GETCURSEL} 0 0 $0 System::Alloc ${NSIS_MAX_STRLEN} System::Call 'user32::SendMessage(i ${CONTROL}, i ${CB_GETLBTEXT}, i r0, i ss)' Pop $0 System::Call '*$0(&t${NSIS_MAX_STRLEN}.s)' System::Free $0 Exch Pop $0 Pop ${VAR} !macroend !define NSD_CB_GetSelection `!insertmacro __NSD_CB_GetSelection` var /GLOBAL LANGSTRING_SUBTITLE var /GLOBAL LANGSTRING_LANGUAGE Function GetSelectedLang !macro SetPageStrings LANGID StrCpy $LANGSTRING_SUBTITLE "${LANGSTRING_SUBTITLE_${LANGID}}" StrCpy $LANGSTRING_LANGUAGE "${LANGSTRING_LANGUAGE_${LANGID}}" !macroend ${NSD_CB_GetSelection} $DropList $LANNAME ${Select} $LANNAME ${Case} English !insertmacro SetPageStrings 1033 SendMessage $Lbl.Language ${WM_SETTEXT} 0 "STR:$LANGSTRING_LANGUAGE" SendMessage $Lbl.Sub.Welcome ${WM_SETTEXT} 0 "STR:$LANGSTRING_SUBTITLE" ${Case} French !insertmacro SetPageStrings 1036 SendMessage $Lbl.Language ${WM_SETTEXT} 0 "STR:$LANGSTRING_LANGUAGE" SendMessage $Lbl.Sub.Welcome ${WM_SETTEXT} 0 "STR:$LANGSTRING_SUBTITLE" ${Case} Germen !insertmacro SetPageStrings 1031 SendMessage $Lbl.Language ${WM_SETTEXT} 0 "STR:$LANGSTRING_LANGUAGE" SendMessage $Lbl.Sub.Welcome ${WM_SETTEXT} 0 "STR:$LANGSTRING_SUBTITLE" ${Case} Romanian !insertmacro SetPageStrings 1048 SendMessage $Lbl.Language ${WM_SETTEXT} 0 "STR:$LANGSTRING_LANGUAGE" SendMessage $Lbl.Sub.Welcome ${WM_SETTEXT} 0 "STR:$LANGSTRING_SUBTITLE" ;Add more here: ;${Case} SimpChinese ;!insertmacro SetPageStrings 2052 ${CaseElse} !insertmacro SetPageStrings 1033 ${EndSelect} FunctionEnd # END # Function .onGUIEnd FunctionEnd # SECTION # Section "MAIN" SEC01 SectionEnd