;**************************
;
;    Install_Toccata
;
;**************************
;
; Toccata Installationsscript
; für Commodores Installer
;
;**************************
;
; Autor:
; Ibrahim Tertemiz für
; MS MacroSystem Computer GmbH
; Witten
;
;**************************
;
; History:
; ========
; 29.10.93 - ToccataInit must not be installed
; 28.10.93 - Release 1.0
; 19.11.93 - ToccataInit message removed
;  7. 1.94 - added ToccataPlayer
; 19. 1.94 - Release 1.1
;
;**************************

; Einige Variablen setzen
(set FALSE 0)
(set TRUE 1)

; Von wo aus soll installiert werden?
(set srcdisk "Toccata:")

; OS2.0 - Test machen...
(set os2 (NOT (< (/ (getversion) 65536) 37)))

; LOCALE vorhanden?
(Set WB2.1 (= (exists "libs:locale.library") 1))


(if (= @language "deutsch")
   ;Sprache ist deutsch
  (
   (Set default-lang 2)
   (Set MSG_NoOS2 "Amiga DOS 2.0 nicht gefunden\n Bitte installieren Sie erst\n Workbench Version 2.0\n oder größer" )
   (Set MSG_Welcome "Willkomen bei der Installation zu Toccata!\nDieses Script installiert die Toccata-Utilities \n auf Ihre Festplatte")
   (Set MSG_GetDisk "Bitte legen sie die mitgelieferte\nToccata-Programmdiskette\nin ein Laufwerk!")
   (Set HLP_GetDisk "Die Toccata Diskette wird zur Installation benötigt!\n")
   (Set MSG_WhereToccata "Wo sollen die Toccata-Utilities installiert werden?\nDas Verzeichnis \"Toccata\" wird automatisch erzeugt!")
   (Set HLP_WhereToccata "Bitte geben Sie das Verzeichnis an,\nin das die Toccata-Utilities installiert werden sollen.")
   (Set MSG_Makeminlocdir "Erstelle Verzeichnisse für \"minloc.library\" ")
   (Set HLP_Makeminlocdir "Erstelle Verzeichnisse für \"minloc.library\" ")
   (Set MSG_CreateMLL "Erstelle von der \"minloc.library\" benötigte Datei...")
   (Set HLP_CreateMLL (cat "Erstelle von der \"minloc.library\" benötigte Datei.\n"
        "Diese Datei gibt an, mit welcher Sprache Sie arbeiten."))
   (Set MSG_CopyLocale "Kopiere Sprachdatei...")
   (Set HLP_CopyLocale "Die Toccata-Utilities können mit Hilfe der Sprachdateien ihre Texte in deutscher Sprache ausgeben.\nDiese Dateien werden jetzt kopiert.")
   (Set MSG_CopyToccata "Kopiere Toccata-Utilities...")
   (Set HLP_CopyToccata MSG_CopyToccata)
   (Set MSG_WhereTocInit "Wo soll \"ToccataInit installiert werden?")
   (Set HLP_WhereTocInit "Bitte geben Sie an, wo \"ToccataInit\" installiert werden soll.")
   (Set MSG_InstTI "\"ToccataInit\" nicht installieren")
   (Set MSG_TInotInst (cat "\"ToccataInit\" wurde nicht installiert!\n"
        "Bitte Beachten Sie die Hinweise in der Datei \"Liesmich\" auf"
        " der Installationsdiskette!"))
   (Set MSG_TIStartup1 "In die \"User-Startup\" wird die Zeile\n")
   (Set MSG_TIStartup2 "\neingefügt.")
   (Set MSG_CopyDevel? "Soll das Entwicklerpaket auch kopiert werden?")
   (Set HLP_CopyDevel? MSG_CopyDevel?)
   (Set MSG_WhereDevel "Wo soll das Entwicklerpaket hinkopiert werden ?")
   (Set HLP_WhereDevel MSG_WhereDevel)
   (Set MSG_CopyDevel! "Ich kopiere das Entwicklerpaket...")
   (Set HLP_CopyDevel! MSG_CopyDevel!)
  )
   ;Sprache ist englisch
  (
   (Set default-lang 4)
   (Set MSG_NoOS2 "Could not locate AmigaOS 2.0! \n Please install at least Amiga OS 2.0 first...")
   (Set MSG_Welcome "Welcome to the Toccata installation!\nThis script will install Toccata and\nthe tutorial to your Harddisk")
   (Set MSG_GetDisk "Please insert the Toccata disk in any drive!")
   (Set HLP_GetDisk "The script needs volume Toccata to continue the installation!\n")
   (Set MSG_WhereToccata "Where do you want the Toccata utilities to be installed?\nThe drawer \"Toccata\" will be created automatically!")
   (Set HLP_WhereToccata "Please select the directory,\nwhere you want the Toccata utilities to be installed.")
   (Set MSG_WhereTocInit "Where do you want \"ToccataInit\" to be installed?")
   (Set HLP_WhereTocInit "Please select where you want \"ToccataInit\" to be installed.")
   (Set MSG_CopyLocale "copying Toccata locale-file(s)")
   (Set HLP_CopyLocale "Toccata needs the locale-files to operate in different languages.")
   (Set MSG_Makeminlocdir "Creating directories needed for \"minloc.library\" ")
   (Set HLP_Makeminlocdir "Creating directories needed for \"minloc.library\" ")
   (Set MSG_CreateMLL "Creating files needed by \"minloc.library\"...")
   (Set HLP_CreateMLL (cat "This files tell \"minloc.library\""
        "which language you are using."))
   (Set MSG_CopyToccata "Copying Toccata...")
   (Set HLP_CopyToccata MSG_CopyToccata)
   (Set MSG_InstTI "Don't install \"ToccataInit\"")
   (Set MSG_TInotInst (cat "You didn't install \"ToccataInit\"!\n"
        "Please read the \"ReadMe\" file on the installation disk!"))
   (Set MSG_TIStartup1 "The line\n")
   (Set MSG_TIStartup2 "\n is appended to your \"User-Startup\"")
   (Set MSG_CopyDevel? " Do you want the developer package to be copied, too?")
   (Set HLP_CopyDevel? MSG_CopyDevel)
   (Set MSG_WhereDevel "Where do you want the developer package to be copied?")
   (Set HLP_WhereDevel MSG_WhereDevel)
   (Set MSG_CopyDevel! " copying the developer package...")
   (Set HLP_CopyDevel! MSG_CopyDevel)
  )
)

;Prozeduren um File kurz zu halten...
(procedure Check
  (
   (If (NOT (patmatch (fileonly DestDir) DirName))
        (; wenn DestDir <> *(/|:) DirName
         (if (= (exists (tackon DestDir DirName)) 2)
          ; Wenn DestDir ex. reingehen...
          (Set DestDir (tackon DestDir DirName))
          ; Sonst erst makedir und dann reingehen...
          ((makedir (tackon DestDir DirName)
                    (prompt MSG_Create_Dir DirName)
                    (help HLP_Create_Dir DirName @makedir-help)
                    (infos)
                    (safe)
           )
           (Set DestDir (tackon DestDir DirName))
          )
         )
        )
    )
  )
)

;main()

(welcome MSG_Welcome)

(set oldlevel @user-level) ;orginal user-level speichern...

; Wenn kein OS2.0 installiert, abbrechen
(if (not os2)
    (abort MSG_NoOS2)
)

(Set existsrc (getassign "Toccata" "v"))
(if (= existsrc "") ;wenn "Toccata:" in keinem Laufwerk
   (askdisk (prompt MSG_GetDisk)
            (help HLP_GetDisk @askdisk-help)
            (dest "Toccata")
   )
)

(working MSG_WorkLib)
; toccata.library kopieren
(copylib (prompt MSG_Copylibrary)
         (help HLP_Copylibrary)
         (source (tackon (tackon srcdisk "libs") "toccata.library"))
         (dest "libs:")
         (confirm)
         (optional "nofail")
)
(complete 5)

(working MSG_WorkLoc)
; LOCALE: einrichten und kopieren
(If (NOT WB2.1)
   ; Wenn <= 2.1 dann dest = Sys:Locale/Catalogs
   (; minloc.library kopieren
    (copylib (prompt MSG_Copylibrary)
             (help HLP_Copylibrary)
             (source (tackon (tackon srcdisk "libs") "minloc.library"))
             (dest "libs:")
             (confirm)
             (optional "nofail")
    )
    (complete 10)
    ; Locale usw. für minloc erzeugen
    (makedir "SYS:Locale"
    (prompt MSG_Makeminlocdir)
    (help HLP_Makeminlocdir @makedir-help)
    )
    (makedir "SYS:Locale/Catalogs"
    (prompt MSG_Makeminlocdir)
    (help HLP_Makeminlocdir @makedir-help)
    )
    (Set locdest "SYS:Locale/Catalogs")
    (if (= default-lang 2)
        ((textfile (prompt MSG_CreateMLL)
                   (help HLP_CreateMLL)
                   (dest "ENVARC:MINLOCLANGUAGE")
                   (append "deutsch\n")
         )
         (textfile (prompt MSG_CreateMLL)
                   (help HLP_CreateMLL)
                   (dest "ENV:MINLOCLANGUAGE")
                   (append "deutsch\n")
         )
        )
    )
   )
   ; Wenn >= 2.1 dann dest = LOCALE:Catalogs
   (Set locdest "LOCALE:Catalogs")
)
(set locsrc (tackon srcdisk "Locale/catalogs"))
(copyfiles (prompt MSG_CopyLocale)
           (help HLP_CopyLocale @help-copyfiles)
           (source locsrc)
           (dest locdest)
           (all)
           (optional "askuser")
)
(complete 18)

(Set DirName "ToccataTools")
(Set src (tackon srcdisk DirName))
(Set DestDir (askdir (prompt MSG_WhereToccata)
                     (help HLP_WhereToccata)
                     (default (tackon @default-dest DirName))
;                      (newpath)
             )
)

; @default-dest neu festlegen
(set @default-dest (cat (getdevice DestDir) ":"))

(working MSG_CopyToccata)
(Check)
(copylib (prompt MSG_CopyToccata)
         (help HLP_CopyToccata)
         (source (tackon src "ToccataControl"))
         (dest DestDir)
         (infos)
)
(complete 28)

(copylib (prompt MSG_CopyToccata)
         (help HLP_CopyToccata)
         (source (tackon src "ToccataJinglePlayer"))
         (dest DestDir)
         (infos)
)
(complete 38)

(copylib (prompt MSG_CopyToccata)
         (help HLP_CopyToccata)
         (source (tackon src "ToccataRecorder"))
         (dest DestDir)
         (infos)
)
(complete 40)

(copylib (prompt MSG_CopyToccata)
         (help HLP_CopyToccata)
         (source (tackon src "ToccataPlayer"))
         (dest DestDir)
         (infos)
)
(complete 42)

(copylib (prompt MSG_CopyToccata)
         (help HLP_CopyToccata)
         (source (tackon src "ReSel"))
         (dest DestDir)
)
(complete 44)

(Set DoInst (askchoice (prompt MSG_WhereTocInit)
                       (help HLP_WhereTocInit)
                       (choices "SYS:WBStartup" "S:User-Startup" MSG_InstTI)
            )
)
;DoInst: 0= nach WBStartup/ (Default); 1= User-Startup; 2= nix machen
(if (<= DoInst 1)
   (if DoInst
      (; in User-Startup installieren (also DoInst = 1)
       ; Zuerst kopieren
        (Set TI (tackon DestDir "ToccataInit"))
        (copylib (prompt MSG_CopyToccata)
                 (help HLP_CopyToccata)
                 (source (tackon src "ToccataInit"))
                 (dest DestDir)
                 (infos)
        )
        (complete 48)
        ;Jetzt eintragen
       (startup "ToccataInit"
                (prompt ("%s %s %s" MSG_TIStartup1 TI MSG_TIStartup2))
                (help @startup-help)
                (command TI)
       )
      )
      (; in WBStartup installieren (also DoInst = 0)
        (copylib (prompt MSG_CopyToccata)
                 (help HLP_CopyToccata)
                 (source (tackon src "ToccataInit"))
                 (dest "SYS:WBStartUp")
                 (infos)
        )
      )
   )
)
(complete 50)

(Set ToolsDir DestDir)
(Set DevelDir "Developer")
(Set src (tackon srcdisk DevelDir))
;developer Sachen kopieren - Abfrage bei Userlevel >= AVERAGE
(working MSG_WorkDevel)
(if (>= oldlevel 1); wenn userlevel AVERAGE oder EXPERT
   ;sollen die developersachen kopiert werden?
   ( (user 2)
     (set copydevel (askbool (prompt MSG_CopyDevel?)
                    (help HLP_CopyDevel? @askbool-help)
                    (default 1)
                    )
     )
     (if copydevel
      ((Set DestDir (askdir (prompt MSG_WhereDevel)
                            (help HLP_WhereDevel)
                            (default (tackon ToolsDir DevelDir))
;                             (newpath)
                    )
       )

      )
     )
     (user oldlevel)
   )
   ; bei NOVICE User zu den ToccataTools
   (  (Set copydevel TRUE)
      (Set DestDir (tackon ToolsDir DevelDir))
   )
)
(if copydevel
   (
   (Set Dirname DevelDir)
   (check)
   (copyfiles (prompt MSG_CopyDevel!)
              (help HLP_CopyDevel! @copyfiles-help)
              (source src)
              (dest DestDir)
              (all)
              (infos)
              (optional "nofail")
   )
   )
)
(complete 100)
