
;------------------------------------------------------------------------
;
; Install script for MUIMine
;
; $VER: MUIMine-Install 1.2 (1.3.99)
;
;------------------------------------------------------------------------

;
;   these are the language names and sub-directory names
;
(set #language-cat-name-0   "")
(set #language-doc-name-0   "English")
(set #language-dir-0        "english")
(set #language-cat-mask-0   0)
(set #language-doc-mask-0   1)
(set #language-doc-0        "MUIMineENG.doc")

(set #language-cat-name-1   "German")
(set #language-doc-name-1   "German")
(set #language-dir-1        "deutsch")
(set #language-cat-mask-1   2)
(set #language-doc-mask-1   2)
(set #language-doc-1        "MUIMineGER.guide")

(set #language-cat-name-2   "Croatian")
(set #language-doc-name-2   "")
(set #language-dir-2        "hrvatski")
(set #language-cat-mask-2   4)
(set #language-doc-mask-2   1)
(set #language-doc-2        "")

(set #language-cat-name-3   "Italian")
(set #language-doc-name-3   "")
(set #language-dir-3        "italiano")
(set #language-cat-mask-3   8)
(set #language-doc-mask-3   1)
(set #language-doc-3        "")

(set #language-cat-name-4   "Slovenian")
(set #language-doc-name-4   "Slovenian")
(set #language-dir-4        "slovensko")
(set #language-cat-mask-4   16)
(set #language-doc-mask-4   16)
(set #language-doc-4        "MUIMineSLO.doc")

(set #language-cat-name-5   "Dutch")
(set #language-doc-name-5   "Dutch")
(set #language-dir-5        "nederlands")
(set #language-cat-mask-5   32)
(set #language-doc-mask-5   32)
(set #language-doc-5        "MUIMineNL.doc")

(set #language-cat-name-6   "Portuguese")
(set #language-doc-name-6   "Portuguese")
(set #language-dir-6        "português")
(set #language-cat-mask-6   64)
(set #language-doc-mask-6   64)
(set #language-doc-6        "MUIMinePT.doc")

(set #language-cat-name-7   "Czech")
(set #language-doc-name-7   "")
(set #language-dir-7        "ÃeÓtina")
(set #language-cat-mask-7   128)
(set #language-doc-mask-7   1)
(set #language-doc-7        "")


;
;   set strings for language
;

;-------- English --------
(
    (set #wrongversion
        (cat "You have an old version of the program 'Installer' on your Amiga!\n\n"
             "This installation procedure needs at least Installer V42.9.\n\n"
             "Please check your configuration!"
        )
    )

    (set #welcome "Welcome to the the Installation of the MUIMine!")


    (set #getdestdir-prompt "Please select the drawer to install 'MUIMine' in, a drawer called 'MUIMine' will be created here.\n")
    (set #getdestdir-help "This is where you wish to install MUIMine. A drawer named MUIMine will be created here to install the MUIMine files to.\n\n")

    (set #getlanguages-prompt "Select which languages you wish to install message catalogs for.")
    (set #getlanguages-help
        (cat "The default language of MUIMine is English. To operate MUIMine in a different language you will need a message catalog for that language.\n\n"
             "The list of languages here are those for which a message catalog is included in the distribution. Others may be released "
             "later (keep an eye on Aminet:game/think). Check those languages that you wish to have a message catalog installed for.\n\n"
             "A catalog description file for MUIMine ('MUIMine.cd') will be installed in the 'Catalogs' sub-directory of the installation directory. "
             "This file can be used to create additional translations for MUIMine."
        )
    )

    (set #getdocuments-prompt "Select which languages you wish to install documentation for.")
    (set #getdocuments-help
        (cat "These are the languages that documentation is available in. "
             "To install the documentation for a language make sure the "
             "checkbox for the language is checked."
        )
    )

    (set #col-imageset-name "Colour image set")
    (set #mwb-imageset-name "Magic Workbench image set")
    (set #bw-imageset-name  "Black and White image set")
    (set #keep-curr-imageset "Keep current")

    (set #getimageset-prompt "Which default image set do you wish to use for MUIMine")
    (set #getimageset-help
        (cat "Image sets define the appearence of MUIMine by changing the bitmap imagery used to render the main MUIMine window elements.\n\n"
             "The default image set are the image files used when no alternate image files are specified or when the specified image file is invalid for the object.\n\n"
             "MUIMine comes with three standard default image sets. These are :-\n"
             "  Colour - recommended for 16 colour or greater Workbench\n"
             "  Magic Workbench - recommended if using Magic Workbench\n"
             "  Black & White - recommended for standard 4 colour Workbench\n\n"
             "If a full set of default image files already exists in the install destination you are given the option of retaining the current image set. "
             "Any existing image file is backed up if a new image set is selected.\n\n"
             "You can select alternate image files to use from within the program."
        )
    )

    (set #ato-doc-file-name "ato.readme")
    (set #def-cat-mask #language-cat-mask-0)
    (set #def-doc-mask #language-doc-mask-0)

) ; english

(if (= @language "deutsch")
    (
        (set #welcome
            (cat "Welcome to the the Installation of the MUIMine!"
                 "\n\nSorry this script has not been translated to German."
                 " This only selects to install the German catalog and docs"
                 " by default."
            )
        )
        (set #def-cat-mask #language-cat-mask-1)
        (set #def-doc-mask #language-doc-mask-1)
    )
) ; deutsch

(if (= @language "hrvatski")
    (
        (set #welcome
            (cat "Welcome to the the Installation of the MUIMine!"
                 "\n\nSorry this script has not been translated to Croatian."
                 " This only selects to install the Croatian catalog by default."
            )
        )
        (set #def-cat-mask #language-cat-mask-2)
        (set #def-doc-mask #language-doc-mask-2)
    )
) ; hrvatski

(if (= @language "italiano")
    (
        (set #welcome
            (cat "Welcome to the the Installation of the MUIMine!"
                 "\n\nSorry this script has not been translated to Italian."
                 " This only selects to install the Italian catalog by default."
            )
        )
        (set #def-cat-mask #language-cat-mask-3)
        (set #def-doc-mask #language-doc-mask-3)
    )
) ; italiano

(if (= @language "slovensko")
    (
        (set #welcome
            (cat "Welcome to the the Installation of the MUIMine!"
                 "\n\nSorry this script has not been translated into Slovenian."
                 " This only selects to install the Slovenian catalog and docs"
                 " by default."
            )
        )
        (set #def-cat-mask #language-cat-mask-4)
        (set #def-doc-mask #language-doc-mask-4)
    )
) ; slovensko

(if (= @language "nederlands")
    (
        (set #welcome
            (cat "Welcome to the the Installation of the MUIMine!"
                 "\n\nSorry this script has not been translated into Dutch."
                 " This only selects to install the Dutch catalog and docs"
                 " by default."
            )
        )
        (set #def-cat-mask #language-cat-mask-5)
        (set #def-doc-mask #language-doc-mask-5)
    )
) ; nederlands

(if (= @language "português")
    (
        (set #welcome
            (cat "Welcome to the the Installation of the MUIMine!"
                 "\n\nSorry this script has not been translated into Português."
                 " This only selects to install the Português catalog and docs"
                 " by default."
            )
        )
        (set #def-cat-mask #language-cat-mask-6)
        (set #def-doc-mask #language-doc-mask-6)
    )
) ; português

(if (= @language "ÃeÓtina")
    (
        (set #welcome
            (cat "Welcome to the the Installation of the MUIMine!"
                 "\n\nSorry this script has not been translated into Czech."
                 " This only selects to install the Czech catalog by default."
            )
        )
        (set #def-cat-mask #language-cat-mask-7)
        (set #def-doc-mask #language-doc-mask-7)
    )
) ; ÃeÓtina

;
;   these strings are for file names and are independent of the language
;
(set #col-def-mfimage   "MineFieldImage.col")
(set #col-def-fbimage   "FaceButtonImage.yellow")
(set #col-def-digimage  "DigitsImage.7seg.red")
(set #mwb-def-mfimage   "MineFieldImage.MWB")
(set #mwb-def-fbimage   "FaceButtonImage.MWB")
(set #mwb-def-digimage  "DigitsImage.7seg.MWB")
(set #bw-def-mfimage    "MineFieldImage.BW")
(set #bw-def-fbimage    "FaceButtonImage.BW")
(set #bw-def-digimage   "DigitsImage.7seg.BW")
(set #mf-image-name     "def_MineFieldImage")
(set #face-image-name   "def_FaceButtonImage")
(set #dig-image-name    "def_DigitsImage")




;------------------------------------------------------------------------
;
; We can't handle this script without Installer 42.9 or better!
;
(if (< @installer-version 2752521)
  (
    ; Big problem!
    (message #wrongversion)
    (exit (quiet))
  )
)

;------------------------------------------------------------------------
;
; find out how the user wants to install things
;
(welcome #welcome)

(complete 0)


;------------------------------------------------------------------------
;
; default instalation directories, these are searched for in the order
; given, the first found will be the default installation directory or
; if none are found then @default-dest is used unmodified
;
(set #def-dest-1    "Games:")
(set #def-dest-2    "Apps:")
(set #def-dest-3    "Applications:")
(set #def-dest-4    "Progs:")
(set #def-dest-5    "Programs:")
;(set #max-def-dest  5)
;
;(set #def-dest  "")
;(set #i 1)
;(while (AND (<= #i #max-def-dest) (= "" #def-dest))
;    (
;        (set #def-dest-try (symbolval ("#def-dest-%ld" #i)))
;        (if (exists #def-dest-try (noreq))
;            (set #def-dest #def-dest-try)
;        ) ; if
;        (set #i (+ #i 1))
;    )
;) ; while
;
;(if (<> "" #def-dest)
;    (set @default-dest #def-dest)
;) ; if

;
;   The code commented out above works fine but causes Installer V43.3 to
;   crash on exit after displaying the 'done with installation' message.
;
;   The following code works and does not cause a crash.
;

(if (exists #def-dest-1 (noreq))
    (set @default-dest #def-dest-1)
    (if (exists #def-dest-2 (noreq))
        (set @default-dest #def-dest-2)
        (if (exists #def-dest-3 (noreq))
            (set @default-dest #def-dest-3)
            (if (exists #def-dest-4 (noreq))
                (set @default-dest #def-dest-4)
                (if (exists #def-dest-5 (noreq))
                    (set @default-dest #def-dest-5)
                )
            )
        )
    )
)

;
;   prompt the user for the install directory if not novice
;
(if (<> 0 @user-level)
    (set @default-dest
        (expandpath
            (askdir
                (prompt #getdestdir-prompt)
                (help (cat #getdestdir-help @askdir-help))
                (default @default-dest)
            )
        )
    )
)

;
;   set the full names of the MUIMine directories
;
(set #MUIMine-dir  (tackon @default-dest "MUIMine"))
(set #Image-dir    (tackon #MUIMine-dir  "images"))
(set #Catalog-dir  (tackon #MUIMine-dir  "Catalogs"))
(set #Document-dir (tackon #MUIMine-dir  "Docs"))

;
;   prompt for language catalogs to install if not novice, novice
;   installs all language catalogs
;
(set #catalog-mask (+ #language-cat-mask-0 #language-cat-mask-1
                      #language-cat-mask-2 #language-cat-mask-3
                      #language-cat-mask-4 #language-cat-mask-5
                      #language-cat-mask-6 #language-cat-mask-7
                   )
)
(if (<> 0 @user-level)
    (
        (set #catalog-mask (askoptions  (prompt #getlanguages-prompt)
                                        (help #getlanguages-help)
                                        (choices #language-cat-name-0
                                                 #language-cat-name-1
                                                 #language-cat-name-2
                                                 #language-cat-name-3
                                                 #language-cat-name-4
                                                 #language-cat-name-5
                                                 #language-cat-name-6
                                                 #language-cat-name-7
                                        )
                                        (default #def-cat-mask)
                            )
        )
    )
)

;
;   prompt for documentation languages to install if not novice,
;   novice installs documentation for all languages
;
(set #document-mask (+ #language-doc-mask-0 #language-doc-mask-1
                       #language-doc-mask-2 #language-doc-mask-3
                       #language-doc-mask-4 #language-doc-mask-5
                       #language-doc-mask-6 #language-doc-mask-7
                    )
)
(if (<> 0 @user-level)
    (
        (set #document-mask (askoptions (prompt #getdocuments-prompt)
                                        (help #getdocuments-help)
                                        (choices #language-doc-name-0
                                                 #language-doc-name-1
                                                 #language-doc-name-2
                                                 #language-doc-name-3
                                                 #language-doc-name-4
                                                 #language-doc-name-5
                                                 #language-doc-name-6
                                                 #language-doc-name-7
                                        )
                                        (default #def-doc-mask)
                            )
        )
    )
)

;
;   set the names of the default image files
;
(set #mf-image-file   (tackon #Image-dir #mf-image-name))
(set #face-image-file (tackon #Image-dir #face-image-name))
(set #dig-image-file  (tackon #Image-dir #dig-image-name))

(if (AND (exists #mf-image-file) (exists #face-image-file) (exists #dig-image-file))
    (
        (set #keep-current #keep-curr-imageset)
        (set #image-set 0)
    )

    (
        (set #keep-current "")
        (set #image-set 1)
    )
)

;
;   prompt the user for the image set to use if expert
;
(if (= 2 @user-level)
    (set #image-set
        (askchoice
            (prompt #getimageset-prompt)
            (help #getimageset-help)
            (choices
                #keep-current
                #col-imageset-name
                #mwb-imageset-name
                #bw-imageset-name
            )
            (default #image-set)
        )
    )
)


;
;   copy program files
;
(copyfiles (source "progfiles") (all) (infos) (dest #MUIMine-dir))
(complete 50)
;
;   copy doc file
;
(if (= 0 @user-level)
    (
        ;
        ;   novice level copies all document files
        ;
        (copyfiles (source "docfiles") (dest #Document-dir) (infos) (all))
    )
    (
        ;
        ;   copy the ATO readme file and the document files
        ;   for the selected languages
        ;
        (copyfiles (source "docfiles/ato.readme") (dest #Document-dir) (infos))
        (if (AND  (<> 0 (BITAND #document-mask #language-mask-0))
                  (<> "" #language-doc-0)
            )
            (copyfiles (source (tackon "docfiles" #language-doc-0))
                       (dest #Document-dir)
                       (infos)
            )
        )
        (if (AND  (<> 0 (BITAND #document-mask #language-mask-1))
                  (<> "" #language-doc-1)
            )
            (copyfiles (source (tackon "docfiles" #language-doc-1))
                       (dest #Document-dir)
                       (infos)
            )
        )
        (if (AND  (<> 0 (BITAND #document-mask #language-mask-2))
                  (<> "" #language-doc-2)
            )
            (copyfiles (source (tackon "docfiles" #language-doc-2))
                       (dest #Document-dir)
                       (infos)
            )
        )
        (if (AND  (<> 0 (BITAND #document-mask #language-mask-3))
                  (<> "" #language-doc-3)
            )
            (copyfiles (source (tackon "docfiles" #language-doc-3))
                       (dest #Document-dir)
                       (infos)
            )
        )
        (if (AND  (<> 0 (BITAND #document-mask #language-mask-4))
                  (<> "" #language-doc-4)
            )
            (copyfiles (source (tackon "docfiles" #language-doc-4))
                       (dest #Document-dir)
                       (infos)
            )
        )
        (if (AND  (<> 0 (BITAND #document-mask #language-mask-5))
                  (<> "" #language-doc-5)
            )
            (copyfiles (source (tackon "docfiles" #language-doc-5))
                       (dest #Document-dir)
                       (infos)
            )
        )
        (if (AND  (<> 0 (BITAND #document-mask #language-mask-6))
                  (<> "" #language-doc-6)
            )
            (copyfiles (source (tackon "docfiles" #language-doc-6))
                       (dest #Document-dir)
                       (infos)
            )
        )
        (if (AND  (<> 0 (BITAND #document-mask #language-mask-7))
                  (<> "" #language-doc-7)
            )
            (copyfiles (source (tackon "docfiles" #language-doc-7))
                       (dest #Document-dir)
                       (infos)
            )
        )
    )
)
(complete 75)
;
;   copy image files
;
(copyfiles (source "images") (dest #Image-dir) (all))
(complete 85)
;
;   copy catalog files
;
(if (= 0 @user-level)
    (
        ;
        ;   at novice level copy all catalogs
        ;
        (copyfiles (source "Catalogs") (dest #Catalog-dir) (all))
    )
    (
        ;
        ;   copy the catalog description file and the catalogs
        ;   for the selected languages
        ;
        (copyfiles (source "Catalogs/MUIMine.cd")
                   (dest #Catalog-dir)
        )
        (if (<> 0 (BITAND #catalog-mask #language-mask-1))
            (copyfiles (source (tackon "Catalogs" #language-dir-1))
                       (dest (tackon #Catalog-dir #language-dir-1))
                       (all)
            )
        )
        (if (<> 0 (BITAND #catalog-mask #language-mask-2))
            (copyfiles (source (tackon "Catalogs" #language-dir-2))
                       (dest (tackon #Catalog-dir #language-dir-2))
                       (all)
            )
        )
        (if (<> 0 (BITAND #catalog-mask #language-mask-3))
            (copyfiles (source (tackon "Catalogs" #language-dir-3))
                       (dest (tackon #Catalog-dir #language-dir-3))
                       (all)
            )
        )
        (if (<> 0 (BITAND #catalog-mask #language-mask-4))
            (copyfiles (source (tackon "Catalogs" #language-dir-4))
                       (dest (tackon #Catalog-dir #language-dir-4))
                       (all)
            )
        )
        (if (<> 0 (BITAND #catalog-mask #language-mask-5))
            (copyfiles (source (tackon "Catalogs" #language-dir-5))
                       (dest (tackon #Catalog-dir #language-dir-5))
                       (all)
            )
        )
        (if (<> 0 (BITAND #catalog-mask #language-mask-6))
            (copyfiles (source (tackon "Catalogs" #language-dir-6))
                       (dest (tackon #Catalog-dir #language-dir-6))
                       (all)
            )
        )
        (if (<> 0 (BITAND #catalog-mask #language-mask-7))
            (copyfiles (source (tackon "Catalogs" #language-dir-7))
                       (dest (tackon #Catalog-dir #language-dir-7))
                       (all)
            )
        )
    )
)
(complete 95)

;
;   copy the appropriate image file set to use as default
;
(set #def-mfimage  #col-def-mfimage)
(set #def-fbimage  #col-def-fbimage)
(set #def-digimage #col-def-digimage)
(select #image-set
    (
        (set #def-mfimage  "")
        (set #def-fbimage  "")
        (set #def-digimage "")
    )
    (
        (set #def-mfimage  #col-def-mfimage)
        (set #def-fbimage  #col-def-fbimage)
        (set #def-digimage #col-def-digimage)
    )
    (
        (set #def-mfimage  #mwb-def-mfimage)
        (set #def-fbimage  #mwb-def-fbimage)
        (set #def-digimage #mwb-def-digimage)
    )
    (
        (set #def-mfimage  #bw-def-mfimage)
        (set #def-fbimage  #bw-def-fbimage)
        (set #def-digimage #bw-def-digimage)
    )
)

(if (<> "" #def-mfimage)
    (
        (if (exists #mf-image-file)
            (rename #mf-image-file (cat #mf-image-file ".bak"))
        )
        (copyfiles  (source (tackon "images" #def-mfimage))
                    (dest #Image-dir)
                    (newname #mf-image-name)
        )
    )
)

(if (<> "" #def-fbimage)
    (
        (if (exists #face-image-file)
            (rename #face-image-file (cat #face-image-file ".bak"))
        )
        (copyfiles  (source (tackon "images" #def-fbimage))
                    (dest #Image-dir)
                    (newname #face-image-name)
        )
    )
)

(if (<> "" #def-digimage)
    (
        (if (exists #dig-image-file)
            (rename #dig-image-file (cat #dig-image-file ".bak"))
        )
        (copyfiles  (source (tackon "images" #def-digimage))
                    (dest #Image-dir)
                    (newname #dig-image-name)
        )
    )
)

(complete 100)

(exit)

