'**************************************************************************
'*                       Setup for POET 2.0
'**************************************************************************

'$DEFINE DEBUG  ''Define for script development/debugging

'$INCLUDE 'setupapi.inc'
'$INCLUDE 'msdetect.inc'

''Dialog ID's
CONST WELCOME       = 100
CONST ASKQUIT       = 200
CONST DESTPATH      = 300
CONST EXITFAILURE   = 400
CONST EXITQUIT      = 600
CONST EXITSUCCESS   = 700
CONST OPTIONS       = 800
CONST APPHELP       = 900
CONST BADPATH       = 6400

''Bitmap ID 
CONST LOGO = 1

GLOBAL DEST$        ''Default destination directory.
GLOBAL OPTCUR$      ''Option selection from option dialog.

DECLARE SUB Install
DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING


INIT:
    CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
    HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure

    SetBitmap CUIDLL$, LOGO
    SetTitle "Poet Setup"

    szInf$ = GetSymbolValue("STF_SRCINFPATH")
    IF szInf$ = "" THEN
        szInf$ = GetSymbolValue("STF_CWDDIR") + "none.INF"
    END IF
    ReadInfFile szInf$

    OPTCUR$ = "1"
    DEST$ = "C:\POET"

'$IFDEF DEBUG
    i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
    WinDrive$ = MID$(GetWindowsDir, 1, 1)
    IF IsDriveValid(WinDrive$) = 0 THEN
        i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
        GOTO QUIT
    END IF
'$ENDIF ''DEBUG


WELCOME:
    sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
    IF sz$ = "CONTINUE" THEN
        UIPop 1
    ELSE
        GOSUB ASKQUIT
        GOTO WELCOME
    END IF


'OPTION:
'    SetSymbolValue "RadioDefault", OPTCUR$
'OPTL1:
'    sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
'    OPTCUR$ = GetSymbolValue("ButtonChecked")

'    IF sz$ = "CONTINUE" THEN
'        UIPop(1)
'    ELSEIF sz$ = "REACTIVATE" THEN
'        GOTO OPTL1
'    ELSE
'        GOSUB ASKQUIT
'        GOTO OPTION
'    END IF


GETPATH:
    SetSymbolValue "EditTextIn", DEST$
    SetSymbolValue "EditFocus", "END"
GETPATHL1:
    sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
    DEST$ = GetSymbolValue("EditTextOut")

    IF sz$ = "CONTINUE" THEN
        IF IsDirWritable(DEST$) = 0 THEN
            GOSUB BADPATH
            GOTO GETPATHL1
        END IF
        UIPop 1
    ELSEIF sz$ = "REACTIVATE" THEN
        GOTO GETPATHL1
    ELSEIF sz$ = "BACK" THEN
        UIPop 1
        GOTO WELCOME
    ELSE
        GOSUB ASKQUIT
        GOTO GETPATH
    END IF


    Install


QUIT:
    ON ERROR GOTO ERRQUIT

    IF ERR = 0 THEN
        dlg% = EXITSUCCESS
    ELSEIF ERR = STFQUIT THEN
        dlg% = EXITQUIT
    ELSE
        dlg% = EXITFAILURE
    END IF
QUITL1:
    sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
    IF sz$ = "REACTIVATE" THEN
        GOTO QUITL1
    END IF
    UIPop 1

    END

ERRQUIT:
    i% = DoMsgBox("Setup sources were corrupted, call 555-1212!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
    END



BADPATH:
    sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
    IF sz$ = "REACTIVATE" THEN
        GOTO BADPATH
    END IF
    UIPop 1
    RETURN



ASKQUIT:
    sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")

    IF sz$ = "EXIT" THEN
        UIPopAll
        ERROR STFQUIT
    ELSEIF sz$ = "REACTIVATE" THEN
        GOTO ASKQUIT
    ELSE
        UIPop 1
    END IF
    RETURN



'**
'** Purpose:
'**     Builds the copy list and performs all installation operations.
'** Arguments:
'**     none.
'** Returns:
'**     none.
'*************************************************************************
SUB Install STATIC

    SrcDir$ = GetSymbolValue("STF_SRCDIR")

	' Create all Directories -----------------
    CreateDir DEST$, cmoNone
	CreateDir DEST$ + "\bin", cmoNone
    CreateDir DEST$ + "\sys", cmoNone
    CreateDir DEST$ + "\sys\wb3", cmoNone
    CreateDir DEST$ + "\sys\wb3\lib", cmoNone
    CreateDir DEST$ + "\sys\db3", cmoNone
    CreateDir DEST$ + "\sys\db3\lib", cmoNone
    CreateDir DEST$ + "\sys\wc8", cmoNone
    CreateDir DEST$ + "\sys\wc8\lib", cmoNone
    CreateDir DEST$ + "\sys\dc8", cmoNone
    CreateDir DEST$ + "\sys\dc8\lib", cmoNone
    CreateDir DEST$ + "\patches", cmoNone
    CreateDir DEST$ + "\patches\bc3", cmoNone
    CreateDir DEST$ + "\patches\msvc", cmoNone
    CreateDir DEST$ + "\inc", cmoNone
    ' CreateDir DEST$ + "\server", cmoNone
    ' CreateDir DEST$ + "\tcp", cmoNone

    CreateDir DEST$ + "\examples", cmoNone

	' Winhello
    CreateDir DEST$ + "\examples\winhello", cmoNone
    CreateDir DEST$ + "\examples\winhello\inc", cmoNone
    CreateDir DEST$ + "\examples\winhello\src", cmoNone
    CreateDir DEST$ + "\examples\winhello\sys\wc8", cmoNone
    CreateDir DEST$ + "\examples\winhello\sys\wc8\inc", cmoNone
    CreateDir DEST$ + "\examples\winhello\sys\wc8\bin", cmoNone
    CreateDir DEST$ + "\examples\winhello\sys\dc8", cmoNone
    CreateDir DEST$ + "\examples\winhello\sys\dc8\inc", cmoNone
    CreateDir DEST$ + "\examples\winhello\sys\dc8\bin", cmoNone
    CreateDir DEST$ + "\examples\winhello\sys\wb3", cmoNone
    CreateDir DEST$ + "\examples\winhello\sys\wb3\inc", cmoNone
    CreateDir DEST$ + "\examples\winhello\sys\wb3\bin", cmoNone
    CreateDir DEST$ + "\examples\winhello\sys\db3", cmoNone
    CreateDir DEST$ + "\examples\winhello\sys\db3\inc", cmoNone
    CreateDir DEST$ + "\examples\winhello\sys\db3\bin", cmoNone

	' drdobbs
    CreateDir DEST$ + "\examples\drdobbs", cmoNone
    CreateDir DEST$ + "\examples\drdobbs\inc", cmoNone
    CreateDir DEST$ + "\examples\drdobbs\src", cmoNone
    CreateDir DEST$ + "\examples\drdobbs\bin", cmoNone
    CreateDir DEST$ + "\examples\drdobbs\servbase", cmoNone
	
	' basics
    CreateDir DEST$ + "\examples\basics", cmoNone
    CreateDir DEST$ + "\examples\basics\inc", cmoNone
    CreateDir DEST$ + "\examples\basics\src", cmoNone
    CreateDir DEST$ + "\examples\basics\sys\wc8", cmoNone
    CreateDir DEST$ + "\examples\basics\sys\wc8\inc", cmoNone
    CreateDir DEST$ + "\examples\basics\sys\wc8\bin", cmoNone
    CreateDir DEST$ + "\examples\basics\sys\dc8", cmoNone
    CreateDir DEST$ + "\examples\basics\sys\dc8\inc", cmoNone
    CreateDir DEST$ + "\examples\basics\sys\dc8\bin", cmoNone
    CreateDir DEST$ + "\examples\basics\sys\wb3", cmoNone
    CreateDir DEST$ + "\examples\basics\sys\wb3\inc", cmoNone
    CreateDir DEST$ + "\examples\basics\sys\wb3\bin", cmoNone
    CreateDir DEST$ + "\examples\basics\sys\db3", cmoNone
    CreateDir DEST$ + "\examples\basics\sys\db3\inc", cmoNone
    CreateDir DEST$ + "\examples\basics\sys\db3\bin", cmoNone

	' advanced
    CreateDir DEST$ + "\examples\advanced", cmoNone
    CreateDir DEST$ + "\examples\advanced\inc", cmoNone
    CreateDir DEST$ + "\examples\advanced\src", cmoNone
    CreateDir DEST$ + "\examples\advanced\sys\wb3", cmoNone
    CreateDir DEST$ + "\examples\advanced\sys\wb3\inc", cmoNone
    CreateDir DEST$ + "\examples\advanced\sys\wb3\bin", cmoNone
    CreateDir DEST$ + "\examples\advanced\sys\db3", cmoNone
    CreateDir DEST$ + "\examples\advanced\sys\db3\inc", cmoNone
    CreateDir DEST$ + "\examples\advanced\sys\db3\bin", cmoNone
    CreateDir DEST$ + "\examples\advanced\sys\wc8", cmoNone
    CreateDir DEST$ + "\examples\advanced\sys\wc8\inc", cmoNone
    CreateDir DEST$ + "\examples\advanced\sys\wc8\bin", cmoNone
    CreateDir DEST$ + "\examples\advanced\sys\dc8", cmoNone
    CreateDir DEST$ + "\examples\advanced\sys\dc8\inc", cmoNone
    CreateDir DEST$ + "\examples\advanced\sys\dc8\bin", cmoNone

'    OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
'    WriteToLogFile ""
'    WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
'    WriteToLogFile "  User chose option: '" + OPTCUR$ + "'"
'    WriteToLogFile ""
'    WriteToLogFile "May have had to create the directory: " + DEST$
'    WriteToLogFile ""

    ClearCopyList

	'	README --------
    ' AddSectionFilesToCopyList "Readme", 	SrcDir$, 	DEST$

    '   BIN -----------
    AddSectionFilesToCopyList "IdeBin",		SrcDir$, 	DEST$ + "\bin"
    ' AddSectionFilesToCopyList "RedistNov",	SrcDir$, 	DEST$ + "\bin"
    AddSectionFilesToCopyList "Redist",		SrcDir$, 	DEST$ + "\bin"
	' AddSectionFilesToCopyList "BorNoLib",	SrcDir$, 	DEST$ + "\bin"
	' AddSectionFilesToCopyList "MsNoLib",	SrcDir$, 	DEST$ + "\bin"
    
    '  AddSectionFilesToCopyList "Cfg",		SrcDir$,DEST$ + "\bin"

	'	TCP -----------
    ' AddSectionFilesToCopyList "RedistTcp",	SrcDir$, 	DEST$ + "\tcp"

    '	Lib -----------
    AddSectionFilesToCopyList "BorWinLib", 	SrcDir$, 	DEST$ + "\sys\wb3\lib"
    AddSectionFilesToCopyList "BorDosLib", 	SrcDir$, 	DEST$ + "\sys\db3\lib"
    AddSectionFilesToCopyList "MsWinLib", 	SrcDir$, 	DEST$ + "\sys\wc8\lib"
    AddSectionFilesToCopyList "MsDosLib", 	SrcDir$, 	DEST$ + "\sys\dc8\lib"

    '	Inc -----------
    AddSectionFilesToCopyList "Inc",		SrcDir$, 	DEST$ + "\inc"
    ' AddSectionFilesToCopyList "IncBor",	SrcDir$, 	DEST$ + "\inc"

    '	Patches -------
    AddSectionFilesToCopyList "BorPatches",	SrcDir$, 	DEST$ + "\patches\bc3"
    AddSectionFilesToCopyList "MsPatches",	SrcDir$, 	DEST$ + "\patches\msvc"

	'	Server --------
    ' AddSectionFilesToCopyList "ServerNlm",		SrcDir$, 	DEST$ + "\server"
    ' AddSectionFilesToCopyList "ServerRedist",	SrcDir$, 	DEST$ + "\server"

    '	Winhello ------
	EX$ = DEST$ + "\examples"
    AddSectionFilesToCopyList "ExWhello",		SrcDir$, 	EX$ + "\winhello"
    AddSectionFilesToCopyList "ExWhelloInc",	SrcDir$, 	EX$ + "\winhello\inc"
    AddSectionFilesToCopyList "ExWhelloSrc",	SrcDir$, 	EX$ + "\winhello\src"
    AddSectionFilesToCopyList "ExWhelloBase",	SrcDir$, 	EX$ + "\winhello\base"
    AddSectionFilesToCopyList "ExWhelloWb3Bin",	SrcDir$, 	EX$ + "\winhello\sys\wb3\bin"
    AddSectionFilesToCopyList "ExWhelloWb3Inc",	SrcDir$, 	EX$ + "\winhello\sys\wb3\inc"
    AddSectionFilesToCopyList "ExWhelloWc8Bin",	SrcDir$, 	EX$ + "\winhello\sys\wc8\bin"
    AddSectionFilesToCopyList "ExWhelloWc8Inc",	SrcDir$, 	EX$ + "\winhello\sys\wc8\inc"

    '	drdobbs   ------
    AddSectionFilesToCopyList "ExDrdobbs",		SrcDir$, 	EX$ + "\drdobbs"
    AddSectionFilesToCopyList "ExDrdobbsInc",	SrcDir$, 	EX$ + "\drdobbs\inc"
    AddSectionFilesToCopyList "ExDrdobbsSrc",	SrcDir$, 	EX$ + "\drdobbs\src"
    ' AddSectionFilesToCopyList "ExDrdobbsServbase",SrcDir$, 	EX$ + "\drdobbs\servbase"
    ' AddSectionFilesToCopyList "ExDrdobbsBin",	SrcDir$, 	EX$ + "\drdobbs\bin"


    '	Basics   ------
    AddSectionFilesToCopyList "ExBasics",		SrcDir$, 	EX$ + "\basics"
    AddSectionFilesToCopyList "ExBasicsInc",	SrcDir$, 	EX$ + "\basics\inc"
    AddSectionFilesToCopyList "ExBasicsSrc",	SrcDir$, 	EX$ + "\basics\src"
    ' AddSectionFilesToCopyList "ExBasicsWB3",	SrcDir$, 	EX$ + "\basics\sys\wb3"
    AddSectionFilesToCopyList "ExBasicsDB3",	SrcDir$, 	EX$ + "\basics\sys\db3"
    AddSectionFilesToCopyList "ExBasicsWC8",	SrcDir$, 	EX$ + "\basics\sys\wc8"
    AddSectionFilesToCopyList "ExBasicsDC8",	SrcDir$, 	EX$ + "\basics\sys\dc8"

    '	Advanced   ------
    AddSectionFilesToCopyList "ExAdvanced",		SrcDir$, 	EX$ + "\advanced"
    AddSectionFilesToCopyList "ExAdvancedInc",	SrcDir$, 	EX$ + "\advanced\inc"
    AddSectionFilesToCopyList "ExAdvancedSrc",	SrcDir$, 	EX$ + "\advanced\src"
    ' AddSectionFilesToCopyList "ExAdvancedWB3",	SrcDir$, 	EX$ + "\advanced\sys\wb3"
    AddSectionFilesToCopyList "ExAdvancedDB3",	SrcDir$, 	EX$ + "\advanced\sys\db3"
	AddSectionFilesToCopyList "ExAdvancedWC8",	SrcDir$, 	EX$ + "\advanced\sys\wc8"
    AddSectionFilesToCopyList "ExAdvancedDC8",	SrcDir$, 	EX$ + "\advanced\sys\dc8"

    '	Cltserv   ------
    ' AddSectionFilesToCopyList "ExCltserv",		SrcDir$, 	EX$ + "\Cltserv"
    ' AddSectionFilesToCopyList "ExCltservInc",	SrcDir$, 	EX$ + "\Cltserv\inc"
    ' AddSectionFilesToCopyList "ExCltservSrc",	SrcDir$, 	EX$ + "\Cltserv\src"

    CopyFilesInCopyList

'    ini$ = MakePath(DEST$, "DEMO.INI")
'    CreateIniKeyValue "WIN.INI", "MSSetup Sample 1", "Option", OPTCUR$, cmoNone
'    CreateIniKeyValue ini$, "Section 1", "Key 1", "Value 1" , cmoNone
'    CreateIniKeyValue ini$, "Section 2", "Key 2", "Value 2" , cmoNone
'    CreateIniKeyValue ini$, "Section 3", "Key 3", "Value 3" , cmoNone

    CreateProgmanGroup "Poet 2.0a", "", cmoNone
    ShowProgmanGroup  "Poet 2.0a", 1, cmoNone
    CreateProgmanItem "Poet 2.0a", "IDE", MakePath(DEST$,"bin\poet-ide.exe"), "", cmoOverwrite
    CreateProgmanItem "Poet 2.0a", "Poet Demo for Borland C++", MakePath(DEST$,"examples\winhello\sys\wb3\bin\winhello.exe base"),	",,,," + MakePath(DEST$,"examples\winhello"), cmoOverwrite
    CreateProgmanItem "Poet 2.0a", "Poet Demo for Visual C++", MakePath(DEST$,"examples\winhello\sys\wc8\bin\winhello.exe base"),	",,,," + MakePath(DEST$,"examples\winhello"), cmoOverwrite

' 	CloseLogFile

END SUB



'**
'** Purpose:
'**     Appends a file name to the end of a directory path,
'**     inserting a backslash character as needed.
'** Arguments:
'**     szDir$  - full directory path (with optional ending "\")
'**     szFile$ - filename to append to directory
'** Returns:
'**     Resulting fully qualified path name.
'*************************************************************************
FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
    IF szDir$ = "" THEN
        MakePath = szFile$
    ELSEIF szFile$ = "" THEN
        MakePath = szDir$
    ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
        MakePath = szDir$ + szFile$
    ELSE
        MakePath = szDir$ + "\" + szFile$
    END IF
END FUNCTION

