; =========================================================
; This file was generated by NSISDialogDesigner 1.3.0.0
; http://coolsoft.altervista.org/nsisdialogdesigner
;
; Do not edit it manually, use NSISDialogDesigner instead!
; =========================================================

; handle variables
Var hCtl_InstallDirsPage
Var hCtl_InstallDirsPage_GroupSdk
Var hCtl_InstallDirsPage_DirRequestSdk_Txt
Var hCtl_InstallDirsPage_DirRequestSdk_Btn
Var hCtl_InstallDirsPage_LabelSdk
Var hCtl_InstallDirsPage_GroupStudio
Var hCtl_InstallDirsPage_DirRequestStudio_Txt
Var hCtl_InstallDirsPage_DirRequestStudio_Btn
Var hCtl_InstallDirsPage_LabelStudio


; dialog create function
Function fnc_InstallDirsPage_Create
  
  ; === InstallDirsPage (type: Dialog) ===
  nsDialogs::Create 1018
  Pop $hCtl_InstallDirsPage
  ${If} $hCtl_InstallDirsPage == error
    Abort
  ${EndIf}
  !insertmacro MUI_HEADER_TEXT "Configuration Settings" "Install Locations"
  
  ; === GroupSdk (type: GroupBox) ===
  ${NSD_CreateGroupBox} 0u 69.54u 296.2u 55.38u "Android SDK Installation Location"
  Pop $hCtl_InstallDirsPage_GroupSdk
  
  ; === DirRequestSdk_Txt (type: Text) ===
  ${NSD_CreateText} 14.48u 103.38u 219.85u 12.31u ""
  Pop $hCtl_InstallDirsPage_DirRequestSdk_Txt
  
  ; === DirRequestSdk_Btn (type: Button) ===
  ${NSD_CreateButton} 235.65u 103.38u 52.66u 12.31u "Browse..."
  Pop $hCtl_InstallDirsPage_DirRequestSdk_Btn
  ${NSD_OnClick} $hCtl_InstallDirsPage_DirRequestSdk_Btn fnc_hCtl_InstallDirsPage_DirRequestSdk_Click
  
  ; === LabelSdk (type: Label) ===
  ${NSD_CreateLabel} 14.48u 84.31u 266.58u 17.23u "The location specified must have at least 3.2GB of free space. $\r$\nClick Browse to customize:"
  Pop $hCtl_InstallDirsPage_LabelSdk
  
  ; === GroupStudio (type: GroupBox) ===
  ${NSD_CreateGroupBox} 0u 0u 296.2u 55.38u "Android Studio Installation Location"
  Pop $hCtl_InstallDirsPage_GroupStudio
  
  ; === DirRequestStudio_Txt (type: Text) ===
  ${NSD_CreateText} 14.48u 33.85u 219.85u 12.31u ""
  Pop $hCtl_InstallDirsPage_DirRequestStudio_Txt
  
  ; === DirRequestStudio_Btn (type: Button) ===
  ${NSD_CreateButton} 235.65u 33.85u 52.66u 12.31u "Browse.."
  Pop $hCtl_InstallDirsPage_DirRequestStudio_Btn
  ${NSD_OnClick} $hCtl_InstallDirsPage_DirRequestStudio_Btn fnc_hCtl_InstallDirsPage_DirRequestStudio_Click
  
  ; === LabelStudio (type: Label) ===
  ${NSD_CreateLabel} 14.48u 14.77u 266.58u 17.23u "The location specified must have at least 500MB of free space.$\r$\nClick Browse to customize:"
  Pop $hCtl_InstallDirsPage_LabelStudio
  
  ; CreateFunctionCustomScript
  Call fnc_InstallDirsPage_InitializeControls
  
  
FunctionEnd

; dialog show function
Function fnc_InstallDirsPage_Show
  Call fnc_InstallDirsPage_Create
  nsDialogs::Show $hCtl_InstallDirsPage
FunctionEnd


; onClick handler for DirRequest Button $hCtl_InstallDirsPage_DirRequestSdk_Btn
Function fnc_hCtl_InstallDirsPage_DirRequestSdk_Click
	Pop $R0
	${If} $R0 == $hCtl_InstallDirsPage_DirRequestSdk_Btn
		${NSD_GetText} $hCtl_InstallDirsPage_DirRequestSdk_Txt $R0
		nsDialogs::SelectFolderDialog /NOUNLOAD "Browse to a location to install the Android SDK" "$R0"
		Pop $R0
		${If} "$R0" != "error"
			${NSD_SetText} $hCtl_InstallDirsPage_DirRequestSdk_Txt "$R0"
		${EndIf}
	${EndIf}
FunctionEnd

; onClick handler for DirRequest Button $hCtl_InstallDirsPage_DirRequestStudio_Btn
Function fnc_hCtl_InstallDirsPage_DirRequestStudio_Click
	Pop $R0
	${If} $R0 == $hCtl_InstallDirsPage_DirRequestStudio_Btn
		${NSD_GetText} $hCtl_InstallDirsPage_DirRequestStudio_Txt $R0
		nsDialogs::SelectFolderDialog /NOUNLOAD "Browse to a location to install Android Studio" "$R0"
		Pop $R0
		${If} "$R0" != "error"
			${NSD_SetText} $hCtl_InstallDirsPage_DirRequestStudio_Txt "$R0"
		${EndIf}
	${EndIf}
FunctionEnd
