;
; $PROJECT: datatype installation template script
;
; $VER: Install 40.5 (26.01.98)
;
; by Stefan Ruppert (C) Copyright 1997-1998
;
; motivated by and derived from the MCC-Install script from Kai Hofmann.
; Thanks Kai for your great work.
;
; $EMAIL: ruppert@amigaworld.com
;
; $HISTORY:
;
; 26.01.98 : 040.005 : added PicDTPatch installation
; 21.11.97 : 040.004 : added help text for default datatypes directory
; 23.10.97 : 040.003 : added custom language section, changed custom parts
; 19.10.97 : 040.002 : added some missing english text definitions
; 08.10.97 : 040.001 : initial
;

; ----------------------- begin customize section ------------------------

(set #dt-base      "hypertext")
(set #dt-altbase   "")
(set #dt-descrpat  "")
(set #dt-suffix    "dtc")
(set #dt-prefs     "HyperTextDTPrefs")
(set #dt-copyright "Copyright © 1995-1997 Stefan Ruppert")
(set #dt-type      "HyperText")

; default directories
(set #defaultdir   "Sys:Datatypes")
(set #classdir     "Sys:Classes")
(set #prefsdir     "Sys:Prefs")
(set #arexxdir     "Rexx:Datatypes")

; none standard distribution documentation place
(set #dt-doc-dir   "Docs")
(set #dt-doc-file  "")

; list of additional documents separated by a slash
(set #dt-more-docs "HTDS/FAQ")
(set #dt-ascii-docs "HWObtainGIRPort/PicDTPatch.doc")
(set #dt-hg-macro-file "htds.hgm")

(set #USE_NEWGETVERSION 0) ; internal getversion
;(set #USE_NEWGETVERSION 1) ; external getversion using "C:Version"

; support for spatched datatype files
(set #dt-patchbase (cat #dt-base ".datatype.020"))
(set #spatch       "c/spatch")

; Minimum datatypes version required for installation
(set #min_dt_version 39)
(set #min_dt_revision 0)

(set #custom_parts_default %0)

; return a list of string for custom distribution parts
(procedure P_CustomParts
    ; Params:
    ;
    ; Results:
    ;
    ; Used Vars:
    ;
    (set #custom_part1 "")
    (set #custom_part2 "")
    (set #custom_part3 "")
)

; check distribution structre and preset all variables
(procedure P_CustomCheck
    ; Params:
    ;
    ; Results:
    ;
    ; Used Vars:
    ;
)

; ask any user configurable installation part here
(procedure P_CustomAsk
    ; Params:
    ;
    ; Results:
    ;
    ; Used Vars:
    ;
)

; now install here all selected parts/files
(procedure P_CustomInstall
    ; Params:
    ;
    ; Results:
    ;
    ; Used Vars:
    ;

    (if #install_docs
	(
	    ; author documents
	    (set #infos 1)
	    (set #src-dir (cat #dir "Author"))
	    (set #dest-dir #docsdir)
	    (set #file "SR.hguide")
	    (P_CpNewFile)
	    (set #infos 0)
	    (set #file "fiff.png")
	    (P_CpFile)
	    (set #file "me.png")
	    (P_CpFile)

	    ; HTDS registration and forms
	    (set #infos 1)
	    (set #src-dir (cat #dir "Forms"))
	    (set #file "Registration")
	    (P_CpNewFile)
	    (set #file "BugReport")
	    (P_CpNewFile)
	    (set #infos 0)
	    (set #file "Bug.Template")
	    (P_CpNewFile)
	    (set #file "getconf")
	    (P_CpNewFile)
	)
    )

    ; check the need of PicDTPatch installation
    (
	(set #file "Libs:Datatypes/picture.datatype")
	(P_GetVersion)
	(set #ver2 44)
	(set #rev2 0)
	(P_CompareVersions)
	(if (NOT (= #result 1)) (
	    (set #install-picdt 1)
	    (if (= (exists "C:PicDTPatch") 1)
		(
		    (set #install-picdt 0)
		    (set #ver (getversion "C:PicDTPatch"))
		    (set #rev (- #ver (* (/ #ver 65536) 65536)))
		    (if (< #rev 2)
			(
			    (copyfiles
				(prompt #txt-copy-picdtpatch-prompt)
				(help @copyfiles-help)
				(source "c/picdtpatch")
				(dest "C:")
			    )
			)
		    )
		)
	    )
	    (if (= #install-picdt 1)
	    (
		(startup @app-name
			 (command "run <>NIL: c:picdtpatch")
			 (prompt #txt-picdtpatch-prompt)
			 (help #txt-picdtpatch-help @startup-help)
		)
		(copyfiles
		    (prompt #txt-copy-picdtpatch-prompt)
		    (help #txt-@copyfiles-help)
		    (source "c/picdtpatch")
		    (dest "C:")
		    (confirm "expert")
		)
	    ))
	))
    )
)

; now uninstall here all selected parts/files
(procedure P_CustomUninstall
    ; Params:
    ;
    ; Results:
    ;
    ; Used Vars:
    ;
)

(procedure P_CustomLanguage
    ; Params:
    ; #lang
    ;
    ; Results:
    ;
    ; Used Vars:
    ;

    (select #lang ; LANGUAGE
	( ; Russian
	    (complete 0)
	)
	( ; Latina
	    (complete 0)
	)
	( ; Türkçe
	    (complete 0)
	)
	( ; Esperanto
	    (complete 0)
	)
	( ; Greek
	    (complete 0)
	)
	( ; Magyar
	    (complete 0)
	)
	( ; suomi
	    (complete 0)
	)
	( ; polski
	    (complete 0)
	)
	( ; Swedish
	    (complete 0)
	)
	( ; norsk
	    (complete 0)
	)
	( ; nederlands
	    (complete 0)
	)
	( ; italiano
	    (complete 0)
	)
	( ; dansk
	    (complete 0)
	)
	( ; português
	    (complete 0)
	)
	( ; español
	    (complete 0)
	)
	( ; français
	    (set #txt-copy-picdtpatch-prompt "copier « PicDTPatch » dans « C: » ?")
	    (set #txt-picdtpatch-prompt "Installation de PicDTPatch?\nPour plus de détails consulter l'aide!")
	    (set #txt-picdtpatch-help (cat
		 "   « PicDTPatch » est nécessaire si vous désirez utiliser des images dans "
		 "les objets HyperTexts et si vous n'utilisez pas la version 43 de "
		 "« picture.datatype ».  Ce programme ajoute une méthode à "
		 "la bibliothèque « picture.datatype » permettant de générer une image à "
		 "ume position spécifique (DTM_DRAW).\n"
		 "   Attention : si vous utilisez des images en arrière-plan de votre "
		 "Workbench, vous devrez alors démarrez « PicDTPatch » avant « IPrefs » !\n\n"
		 )
	    )
	)
	( ; deutsch
	    (set #txt-copy-picdtpatch-prompt "Kopiere picdtpatch nach C: ?")
	    (set #txt-picdtpatch-prompt "Installieren von PicDTPatch?\nFür nähere Information siehe Hilfe!")
	    (set #txt-picdtpatch-help
		 (cat "PicDTPatch wird benötigt, wenn Sie das HyperText-DataType-System "
		      "mit Bilder verwenden wollen und nicht einen V43 picture.datatype "
		      "installiert haben. Dieses Programm fügt dem alten picture.datatype "
		      "die Methode DTM_DRAW hinzu, die benutzt wird, um ein Objekt aus "
		      "dem hypertext.datatype zu zeichnen.\n"
		      "ACHTUNG:\nWenn Sie Bilder als Hintergrund für die Workbench benutzen, "
		      "dann sollte PicDTPatch for IPrefs gestartet werden !\n\n"
		 )
	    )
	)
	( ; english
	    (set #txt-copy-picdtpatch-prompt "copy picdtpatch to C:?")
	    (set #txt-picdtpatch-prompt "Installation of PicDTPatch?\nFor detailed information see help!")
	    (set #txt-picdtpatch-help (cat
		 "PicDTPatch is needed, if you want to use pictures within HyperText "
		 "objects and if you don't use V43 of a picture.datatype."
		 "This program adds a method to the picture.datatype to render a picture "
		 "at a specified position (DTM_DRAW).\n"
		 "Attention: If you use some pictures as WB backgounds, it should be "
		 "nesseccary to run PicDTPatch before IPrefs !!\n\n"
		 )
	    )
	)
    )
)

(set #size_docs " (~111 kb)")
(set #size_datatype " (~71 kb)")
(set #size_developer " (~71 kb)")
(set #size_catalogs " (~1 kb)")
(set #size_arexx " (~20 kb)")
;
; $PROJECT: datatype installation template script
;
; $VER: Install 40.7 (26.12.97)
;
; by Stefan Ruppert (C) Copyright 1997
;
; motivated by and derived from the MCC-Install script from Kai Hofmann.
; Thanks Kai for your great work.
;
; $EMAIL: ruppert@amigaworld.com
;
; $HISTORY:
;
; 26.12.97 : 040.007 : added #dt-altbase, thus a datatype can have a different name then its base
; 21.12.97 : 040.006 : fixed french language bug
; 01.12.97 : 040.005 : added french translation, fixed bug with cache cpu variable
; 21.11.97 : 040.004 : added help text for default datatypes directory
; 23.10.97 : 040.003 : added custom language section, changed custom parts
; 19.10.97 : 040.002 : added some missing english text definitions
; 08.10.97 : 040.001 : initial
;

; ----------------------- customize documentation ------------------------
;
; #dt-suffix :
;
; datatype class suffix :
;
; <dtname>_<dtsuffix>
;
; For example : hypertext_dtc.hguide or hypertext_dtc.catalog
;
; suffix     description (baseclass)
; ---------------------------------------------------------
; dtc        for datatype base classes (datatypesclass)
; hdtc       for hypertext sub classes (hypertext.datatype)
; pdtc       for picture sub classes (picture.datatype)
; sdtc       for sound sub classes (sound.datatype)
; adtc       for animation sub classes (animation.datatype)
; bdtc       for binary sub classes (binary.datatype)
; tdtc       for text sub classes (text.datatype)

;
; #dt-doc-dir
; #dt-doc-file :
;
; datatype documentation file placed in <dtname>_<dtsuffix>/Docs/
;

;
; Recommended directory structure
;
; <dtname>_<dtsuffix>/Product-Info
; <dtname>_<dtsuffix>/Product-Info.info
; <dtname>_<dtsuffix>/DT-Install
; <dtname>_<dtsuffix>/DT-Install.info
; <dtname>_<dtsuffix>/Classes/Datatypes/<dtname>.datatype
; <dtname>_<dtsuffix>/Classes/Datatypes/<dtname>.datatype.000(%|.p)                  (optional)
; <dtname>_<dtsuffix>/Classes/Datatypes/<dtname>.datatype.010(%|.p)                  (optional)
; <dtname>_<dtsuffix>/Classes/Datatypes/<dtname>.datatype.020(%|.p)                  (optional)
; <dtname>_<dtsuffix>/Classes/Datatypes/<dtname>.datatype.020f(%|.p)                 (optional)
; <dtname>_<dtsuffix>/Classes/Datatypes/<dtname>.datatype.030(%|.p)                  (optional)
; <dtname>_<dtsuffix>/Classes/Datatypes/<dtname>.datatype.030f(%|.p)                 (optional)
; <dtname>_<dtsuffix>/Classes/Datatypes/<dtname>.datatype.040(%|.p)                  (optional)
; <dtname>_<dtsuffix>/Classes/Datatypes/<dtname>.datatype.040f(%|.p)                 (optional)
; <dtname>_<dtsuffix>/Classes/Datatypes/<dtname>.datatype.060(%|.p)                  (optional)
; <dtname>_<dtsuffix>/Developer/Autodocs/<dtname>_<dtsuffix>.doc
; <dtname>_<dtsuffix>/Developer/Autodocs/<dtname>_<dtsuffix>.doc.info
; <dtname>_<dtsuffix>/Developer/Autodocs/<dtname>_<dtsuffix>                         (optional)
; <dtname>_<dtsuffix>/Developer/Autodocs/<dtname>_<dtsuffix>.info                    (optional)
; <dtname>_<dtsuffix>/Developer/Autodocs/<dtname>_<dtsuffix>.rev                     (optional)
; <dtname>_<dtsuffix>/Developer/Autodocs/<dtname>_<dtsuffix>.rev.info                (optional)
; <dtname>_<dtsuffix>/Developer/C/Include/Datatypes/<dtname>class.h
; <dtname>_<dtsuffix>/Developer/C/Include/CLib/<dtname>dtclass_protos.h              (optional)
; <dtname>_<dtsuffix>/Developer/C/Include/FD/<dtname>dtclass_lib.fd                  (optional)
; <dtname>_<dtsuffix>/Developer/C/Include/Inline/<dtname>dtclass_inline.h            (optional)
; <dtname>_<dtsuffix>/Developer/C/Include/Pragmas/<dtname>dtclass_pragmas.h          (optional)
; <dtname>_<dtsuffix>/Developer/C/Include/Proto/<dtname>dtclass.h                    (optional)
; <dtname>_<dtsuffix>/Developer/C/Examples/<dtname>-Demo.c                           (optional)
; <dtname>_<dtsuffix>/Developer/C/Examples/<dtname>-Demo.c.info                      (optional)
; <dtname>_<dtsuffix>/Developer/C/Examples/<dtname>-Demo                             (optional)
; <dtname>_<dtsuffix>/Developer/C/Examples/<dtname>-Demo.info                        (optional)
; <dtname>_<dtsuffix>/Developer/XRef/<dtname>_<dtsuffix>.xref                        (optional)
; <dtname>_<dtsuffix>/Developer/XRef/<dtname>_<dtsuffix>.xref.info                   (optional)
; <dtname>_<dtsuffix>/Devs/Datatypes/<descriptors>                                   (optional)
; <dtname>_<dtsuffix>/Devs/Datatypes/<descriptors>.info                              (optional)
; <dtname>_<dtsuffix>/Docs/English/<dtname>_<dtsuffix>.(%|h)guide
; <dtname>_<dtsuffix>/Docs/English/<dtname>_<dtsuffix>.(%|h)guide.info
; <dtname>_<dtsuffix>/Docs/English/<dtname>_<dtsuffix>.html                          (optional)
; <dtname>_<dtsuffix>/Docs/English/<dtname>_<dtsuffix>.html.info                     (optional)
; <dtname>_<dtsuffix>/Docs/English/<dtname>_<dtsuffix>.doc                           (optional)
; <dtname>_<dtsuffix>/Docs/English/<dtname>_<dtsuffix>.doc.info                      (optional)
; <dtname>_<dtsuffix>/Docs/<language>/<dtname>_<dtsuffix>.(%|h)guide                 (optional)
; <dtname>_<dtsuffix>/Docs/<language>/<dtname>_<dtsuffix>.(%|h)guide.info            (optional)
; <dtname>_<dtsuffix>/Docs/<language>/<dtname>_<dtsuffix>.html                       (optional)
; <dtname>_<dtsuffix>/Docs/<language>/<dtname>_<dtsuffix>.html.info                  (optional)
; <dtname>_<dtsuffix>/Docs/<language>/<dtname>_<dtsuffix>.doc                        (optional)
; <dtname>_<dtsuffix>/Docs/<language>/<dtname>_<dtsuffix>.doc.info                   (optional)
; <dtname>_<dtsuffix>/Examples/<dt_example>                                          (optional)
; <dtname>_<dtsuffix>/Examples/<dt_example>.info                                     (optional)
; <dtname>_<dtsuffix>/Icons/MagicWB/<dtname>.info                                    (optional)
; <dtname>_<dtsuffix>/Icons/NewIcons/<dtname>.info                                   (optional)
; <dtname>_<dtsuffix>/Icons/Standard/<dtname>.info                                   (optional)
; <dtname>_<dtsuffix>/EnvArc/Datatypes/<dtname>.prefs                                (optional)
; <dtname>_<dtsuffix>/Locale/Catalogs/<language>/<dtname>_<dtsuffix>.catalog         (optional)
; <dtname>_<dtsuffix>/Prefs/Datatypes/<dtname>Prefs                                  (optional)


; Bultin language
; Bit  0 = English
; Bit  1 = German
; Bit  2 = French
; Bit  3 = Spanish
; Bit  4 = Portuguese
; Bit  5 = Danish
; Bit  6 = Italian
; Bit  7 = Dutch
; Bit  8 = Norwegian
; Bit  9 = Swedish
; Bit 10 = Polish
; Bit 11 = Finnish
; Bit 12 = Hungarian
; Bit 13 = Greek
; Bit 14 = Esperanto
; Bit 15 = Turkish
; Bit 16 = Latin
; Bit 17 = Russian

; -----------------------------------------------------------------------------
; --- Do not change anything below this line ----------------------------------
; -----------------------------------------------------------------------------

(set #language_dtypes    %011111111111111111) ; LANGUAGE
(set #language_dtypeslib %000000000000000001) ; LANGUAGE

(set #save_user_selections_icon "Misc/Install/Options")
(set #save_user_selections 1)
(set #iconpackage  "")
(set #max_standard_parts 10)

(if (= (strlen #dt-altbase) 0)   ; datatype name
   (set #dt-name    (cat #dt-base ".datatype"))
   (set #dt-name    (cat #dt-altbase ".datatype"))
)
(set #dt-envfile (cat #dt-base ".prefs"))      ; eventual prefs file name in Env(%|Arc):DataTypes/
(set #dt-file    (tackon "classes/datatypes" #dt-name))

(if (= @installer-version 0)
    (
	; old Installer
	(set #prop "")
    )
    ; else
    (
	; new Installer
	(set #prop "\x1b[2p")
    )
)

; ------------------------- begin locale section -------------------------

(set #i 0)
(while (<> @language (select #i "deutsch" "français" @language)) ; LANGUAGE
    (set #i (+ #i 1))
)
(if (= #i 2) ; LANGUAGE
    (set #language "english")
    (set #language @language)
)


(set #lang 0)
(set #language_default %100000000000000000) ; LANGUAGE
(while (<> #language (select #lang "russian" "latina" "türkçe" "esperanto" "greek" "magyar" "suomi" "polski" "norsk" "svenska" "nederlands" "italiano" "dansk" "português" "español" "français" "deutsch" #language)) ; LANGUAGE
    (
	(set #language_default (shiftright #language_default 1))
	(set #lang (+ #lang 1))
    )
)
(select #lang ; LANGUAGE
    ( ; Russian
	(complete 0)
    )
    ( ; Latina
	(complete 0)
    )
    ( ; Türkçe
	(complete 0)
    )
    ( ; Esperanto
	(complete 0)
    )
    ( ; Greek
	(complete 0)
    )
    ( ; Magyar
	(complete 0)
    )
    ( ; suomi
	(complete 0)
    )
    ( ; polski
	(complete 0)
    )
    ( ; Swedish
	(complete 0)
    )
    ( ; norsk
	(complete 0)
    )
    ( ; nederlands
	(complete 0)
    )
    ( ; italiano
	(complete 0)
    )
    ( ; dansk
	(complete 0)
    )
    ( ; português
	(complete 0)
    )
    ( ; español
	(complete 0)
    )
    ( ; français from Francis Labrie <fb691875@er.uqam.ca>
	(if (= @installer-version 0)
	    (
		(set #help_askoptions "Avec une version de l'outils « Installer » antérieure à 42.6, il peut arriver que des cases à cocher apparaissent sans étiquette.  La sélection de ces cases sera alors ignorée.\n\n")
		(set #help_askoptions "Avec une version de l'outils « Installer » antérieure à 42.6, il peut arriver que des boutons de radio apparaissent sans étiquette.  La sélection de ces boutons sera alors ignorée.\n\n")
	    )
	)

	(set #unknown           "inconnu")
	(set #choice_english    "Anglais")
	(set #choice_german     "Allemand")
	(set #choice_french     "Français")
	(set #choice_spanish    "Español")
	(set #choice_portuguese "Portugais")
	(set #choice_danish     "Danois")
	(set #choice_italian    "Italien")
	(set #choice_dutch      "Hollandais")
	(set #choice_norwegian  "Norvégien")
	(set #choice_swedish    "Suédois")
	(set #choice_polish     "Polonais")
	(set #choice_finnish    "Finnois")
	(set #choice_hungarian  "Hongrois")
	(set #choice_turkish    "Turc")
	(set #choice_greek      "Grec")
	(set #choice_latin      "Latin")
	(set #choice_esperanto  "Espéranto")
	(set #choice_russian    "Russe") ; LANGUAGE

	(set #choice_datatype   "Type de donné")
	(set #choice_descriptors "Descripteurs")
	(set #choice_catalogs   "Catalogues")
	(set #choice_docs       "Documentation")
	(set #choice_developer  "Outils de développeur")
	(set #choice_prefs      "Outils de préférences")
	(set #choice_env        "Fichier de préférences")
	(set #choice_examples   "Fichiers d'exemple")
	(set #choice_icons      "Icônes standards de type de donnée")
	(set #choice_arexx      "Scripts ARexx")

	(set #choice_install    "Installer")
	(set #choice_uninstall  "Désinstaller")

	(set #choice_yes        "Oui")
	(set #choice_no         "Non")
	(set #choice_none       "Aucun")

	(set #prompt_info              (cat "\nBienvenue à la classe « " @app-name " » \n" #dt-copyright "\n\n"))
	(set #prompt_install_uninstall (cat #prompt_info "Souhaitez-vous installer ou désinstaller cette classe ?"))

	(set #prompt_install_docs "Quelle type de documentation souhaitez-vous installer ?")

	(set #prompt_install_asciidocs "Pour quelles langues désirez-vous installer la documentation de format ASCII ?")
	(set #prompt_install_hgdocs "Pour quelles langues désirez-vous installer la documentation de format HyperGuide ?")
	(set #prompt_install_agdocs "Pour quelles langues désirez-vous installer la documentation de format AmigaGuide® ?")
	(set #prompt_install_html "Pour quelles langues désirez-vous installer la documentation de format HTML ?")

	(set #prompt_install_dt_catalogs (cat "Lesquels de ces catalogues pour la classe « " @app-name " » souhaitez-vous installer ?"))
	(set #prompt_install_plangs "Pour quels languages de programmation souhaitez-vous installer les outils de développeur ?")

	(set #prompt_askcpufpu  (cat "Veuillez sélectionner la configuration de microprocesseur pour laquelle vous désirez installer la classe « " #dt-name " »."))
	(set #prompt_askenv     "Désirez-vous installer les fichiers de préférences ?")

	(set #prompt_askdefaultdir "Où se trouvent les fichiers relatifs aux classes de types de donnée (voir l'aide) ?")
	(set #help_askdefaultdir (cat
	     "Tous les fichiers qui n'ont pas de destination particulière définie dans le système sont "
	     "installés dans un répertoire « DataType ». Ceux-ci regroupent les fichiers de documentation, "
	     "les fichiers destinés aux développeurs et d'autre documents divers.  Cependant, les classes "
	     " et leurs descripteurs eux-même n'y seront pas installés.  Ces fichiers sont plutôt "
	     "installés aux endroits appropriés dans le système.  Par défaut, le répertoire « DataType » "
	     "est « SYS:DataTypes ».\n\n"))
	(set #prompt_askprefsdir "Où désirez-vous installer les outils de préférences ?")
	(set #prompt_askdocsdir  "Où souhaitez-vous installer la documentation ?")
	(set #prompt_askclassdir   "Où les classes se trouvent-elles ?")
	(set #prompt_askiconpackage "Quelle gamme d'icônes utilisez-vous ?")

	(set #prompt_installing "Installation")
	(set #prompt_removing   "Désinstallation")
	(set #prompt_install_parts "Quelles parties souhaitez-vous installer ?")

	(set #prompt_copy_dt    "Copie de la classe")
	(set #prompt_copy_descr "Copie des descripteurs")

	(set #prompt_copy "Souhaitez-vous copier le(s) fichier(s) suivant(s) ?")
	(set #prompt_makedir "Le répertoire suivant n'existe pas, il doit donc être créé :")

	(set #prompt_descdir "Est-ce que ces classes de types de donnée doivent être disponibles immédiatement après le démarrage du système ?")
	(set #prompt_deinstalled (cat  "Il n'y a présentement pas de section de désinstallation pour la classe « " @app-name " »."))

	(set #prompt_askuseinstallcache (cat "Il existe un fichier qui contient les choix "
	     "effectués lors de l'installation antérieure d'une classe.  "
	     "Ces choix peuvent-ils être utilisés pour l'installation courante ?"
	))
	(set #help_askuseinstallcache (cat ""
	))

	(set #help_askcpufpu (cat "Sélectionnez ici le type de microprocesseur qui est installé dans votre système.\n\n"
	      "C'est présentement un MC%s.\n\nSi vous sélectionnez un type de microprocesseur quelconque "
	      "dans la boîte de choix, la classe « " #dt-name " » fonctionnera sur n'importe lequel des microprocesseurs dont "
	      "le type est supérieur ou égal à la sélection.  Cependant, il ne fonctionnera pas "
	      "sur un système équipé d'un type de microprocesseur inférieur.\n\n"
	))
	(set #help_descdir (cat
	     "Si ces classes de type de donnée doivent être disponibles immédiatement après le démarrage du système, "
	     "les descripteurs sont alors copiés dans le répertoire « DEVS:Datatypes », sinon ils le "
	     "sont copiés dans le répertoire « SYS:Storage/Datatypes ».\n\n"
	))

	(set #abort_nocpu (cat "Désolé, le script est incapable d'installer la classe « " #dt-name " » parce que votre configuration de microprocesseur n'est pas supportée.\n"))
	(set #abort_nodt  (cat "Désolé, le système « DataTypes » n'est pas installé sur votre système !\n"))
	(set #abort_olddt (cat "Désolé, le script est incapable d'installer la classe « " #dt-name " » parce que la version %s du système « datatypes » installé est trop vieille.  Vous avez besoin d'une version supérieur ou égale à %s.\n"))
    )
    ( ; deutsch
	(if (= @installer-version 0)
	    (
		(set #help_askoptions "Mit einem Installer der älter als Version 42.6 ist, kann es passieren, daß Checkbox-Knöpfe ohne Labels zu sehen sind. Das Setzen dieser Knöpfe wird ignoriert.\n\n")
		(set #help_askchoice "Mit einem Installer der älter als Version 42.6 ist, kann es passieren, daß Radio-Knöpfe ohne Labels zu sehen sind. Das Setzen dieser Knöpfe entspricht der nächst kleineren Auswahl.\n\n")
	    )
	)

	(set #unknown           "unbekannt")
	(set #choice_english    "Englisch")
	(set #choice_german     "Deutsch")
	(set #choice_french     "Französisch")
	(set #choice_spanish    "Spanisch")
	(set #choice_portuguese "Portugiesisch")
	(set #choice_danish     "Dänisch")
	(set #choice_italian    "Italienisch")
	(set #choice_dutch      "Niederländisch")
	(set #choice_norwegian  "Norwegisch")
	(set #choice_swedish    "Schwedisch")
	(set #choice_polish     "Polnisch")
	(set #choice_finnish    "Finnisch")
	(set #choice_hungarian  "Ungarisch")
	(set #choice_turkish    "Türkisch")
	(set #choice_greek      "Griechisch")
	(set #choice_latin      "Latein")
	(set #choice_esperanto  "Esperanto")
	(set #choice_russian    "Russisch") ; LANGUAGE

	(set #choice_datatype   "Datentypen")
	(set #choice_descriptors "Deskriptoren")
	(set #choice_env        "Voreinstellungen")
	(set #choice_prefs      "Voreinsteller")
	(set #choice_catalogs   "Kataloge")
	(set #choice_docs       "Dokumentation")
	(set #choice_examples   "Beispiele Dateien")
	(set #choice_developer  "Entwickler-Material")
	(set #choice_icons      "Datentyp Standard Piktogramme")
	(set #choice_arexx      "ARexx Skripts")

	(set #choice_install    "Installieren")
	(set #choice_uninstall  "Deinstallieren")

	(set #choice_yes        "Ja")
	(set #choice_no         "Nein")
	(set #choice_none       "Keine")


	(set #prompt_installing "Installiere")
	(set #prompt_removing   "Entferne")
	(set #prompt_install_parts "Welche Komponenten wollen Sie installieren ?")

	(set #prompt_info (cat "\nWillkommen zur " @app-name " Datentyp-Klasse\n" #dt-copyright "\n\n"))
	(set #prompt_install_uninstall (cat #prompt_info "Wollen Sie die Klasse installieren oder deinstallieren?"))

	(set #prompt_copy_dt    "Kopiere den Datentyp")
	(set #prompt_copy_descr "Kopiere die Deskriptoren")
	(set #prompt_deinstalled (cat  "Zur Zeit wird für \"" @app-name "\" keine Deinstallation unterstützt."))

	(set #prompt_install_docs "Welche Art von Dokumenten wollen Sie installieren?")

	(set #prompt_install_asciidocs "Für welche Sprachen wollen Sie die ASCII Dokumentation installieren?")
	(set #prompt_install_hgdocs "Für welche Sprachen wollen Sie die HyperGuide Dokumentation installieren?")
	(set #prompt_install_agdocs "Für welche Sprachen wollen Sie die AmigaGuide® Dokumentation installieren?")
	(set #prompt_install_html "Für welche Sprachen wollen Sie die HTML Dokumentation installieren?")

	(set #prompt_install_dt_catalogs (cat "Welche Kataloge für " @app-name " wollen Sie installieren?"))
	(set #prompt_install_plangs "Unterstützung für welche Programmiersprache wollen Sie installieren?")

	(set #prompt_askenv     "Installiere Voreinstellungen ?")

	(set #prompt_askprefsdir "Wohin soll der Voreinsteller installiert werden ?")
	(set #prompt_askdocsdir  "Wohin soll die Dokumentation installiert werden ?")
	(set #prompt_askclassdir "Wo liegen die System Klassen ?")
	(set #prompt_askdefaultdir "Wo befindet sich das \"Datatypes-Verzeichnis\" (siehe Hilfe) ?")
	(set #help_askdefaultdir (cat
	     "Im \"Datatype-Verzeichnis\" werden alle Dateien installiert, die keinen "
	     "festen Platz innerhalb des Systems besitzen. Dies sind vorallem die Dateien "
	     "für die Dokumentation, Entwickler Dateien oder andere Dateien, die nicht "
	     "eingruppiert werden können. Es werden in diesem Verzeichnis aber nicht der "
	     "Datentyp selbst oder die Deskriptoren installiert. Diese werden an die entsprechenden "
	     "Stellen im System installiert.\n\nStandardmäßig sollte das Verzeichnis "
	     "\"Sys:Datatypes\" ausgewählt werden.\n\n"))
	(set #prompt_askiconpackage "Welches Piktogramme-Paket benutzen Sie ?")

	(set #prompt_copy "Wollen Sie das/die folgenden Datei(en) kopieren?")
	(set #prompt_makedir "Das folgende Verzeichnis wurde nicht gefunden, deshalb muß es erzeugt werden:")

	(set #prompt_askcpufpu (cat "Bitte wählen Sie die CPU/FPU Konfiguration, für die " @app-name " installiert werden soll."))
	(set #help_askcpufpu (cat "  Bitte wählen Sie hier die CPU aus, die in Ihrem System "
	     "installiert ist.\n\n"
	      "Ermittelt wurde ein MC%s.\n\n  Wenn Sie einen bestimmten CPU-Typ auswählen, "
	      "wird der \"" #dt-name "\" Datentyp nur auf Rechnern mit gleichem oder höherem "
	      "CPU-Typ lauffähig sein. Der Datentyp muß nicht auf Rechnern mit kleinerem CPU-Typ laufen.\n\n"
	))

	(set #prompt_askuseinstallcache (cat "Es existiert eine Datei, die Einstellungen "
	     "für das Datentyp-Installationskript enthält. "
	     "Diese Einstellungen wurden bei einer früheren Datentyp-Installation von Ihnen "
	     "gewählt und abgespeichert. Sollen folgende Einstellungen übernommen werden ? "
	))
	(set #help_askuseinstallcache (cat "Wenn Sie diese Einstellungen übernehmen, werden Sie "
	     "nicht mehr nach einigen Verzeichnissen oder Einstellungen gefragt, sondern die "
	     "Einstellungen aus einer früheren Installation übernommen."
	))

	(set #prompt_descdir    "Sollen die Datentypen direkt nach dem Systemstart zur Verfügung stehen ?")
	(set #help_descdir (cat
	     "Wenn die Datentypen direkt nach dem Systemstart zur Verfügung stehen sollen, werden "
	     "die Deskriptoren nach Devs:Datatypes kopiert. Andernfalls werden sie nach "
	     "Sys:Storage/Datatypes kopiert.\n\n"
	))

	(set #abort_nocpu       (cat #dt-name " kann leider nicht installiert werden, da Ihre CPU-Konfiguration nicht unterstützt wird.\n"))
	(set #abort_nodt        (cat #dt-name " kann leider nicht installiert werden, da auf Ihrem System das Datentyp-System nicht installiert ist.\n"))
	(set #abort_olddt       (cat #dt-name " kann leider nicht installiert werden, da auf Ihrem System die Version %s des Datentyp-Systems installiert ist, jedoch Version %s benötigt wird.\n"))
    )
    ( ; english
	(if (= @installer-version 0)
	    (
		(set #help_askoptions "With an Installer prior to version 42.6 it can happen that you see checkbox-buttons without labels. Selecting these buttons will be ignored.\n\n")
		(set #help_askchoice "With an Installer prior to version 42.6 it can happen that you see radio-buttons without labels. Selecting these buttons will result in the next lower available selection.\n\n")
	    )
	)

	(set #unknown           "unknown")
	(set #choice_english    "English")
	(set #choice_german     "German")
	(set #choice_french     "French")
	(set #choice_spanish    "Spanish")
	(set #choice_portuguese "Portuguese")
	(set #choice_danish     "Danish")
	(set #choice_italian    "Italian")
	(set #choice_dutch      "Dutch")
	(set #choice_norwegian  "Norwegian")
	(set #choice_swedish    "Swedish")
	(set #choice_polish     "Polish")
	(set #choice_finnish    "Finnish")
	(set #choice_hungarian  "Hungarian")
	(set #choice_turkish    "Turkish")
	(set #choice_greek      "Greek")
	(set #choice_latin      "Latin")
	(set #choice_esperanto  "Esperanto")
	(set #choice_russian    "Russian") ; LANGUAGE

	(set #choice_datatype   "Datatype")
	(set #choice_descriptors "Descriptors")
	(set #choice_catalogs   "Catalogs")
	(set #choice_docs       "Documentation")
	(set #choice_developer  "Developer material")
	(set #choice_prefs      "Preference Tool")
	(set #choice_env        "Configuration file")
	(set #choice_examples   "Example files")
	(set #choice_icons      "Datatype standard Icons")
	(set #choice_arexx      "ARexx scripts")

	(set #choice_install    "Install")
	(set #choice_uninstall  "Uninstall")

	(set #choice_yes        "Yes")
	(set #choice_no         "No")
	(set #choice_none       "None")

	(set #prompt_info              (cat "\nWelcome to the " @app-name " datatype class\n" #dt-copyright "\n\n"))
	(set #prompt_install_uninstall (cat #prompt_info "Do you want to install or uninstall the datatype?"))

	(set #prompt_install_docs "Which typ of documentation do you want to install?")

	(set #prompt_install_asciidocs "For which languages do you want to install the ASCII documentation?")
	(set #prompt_install_hgdocs "For which languages do you want to install the HyperGuide documentation?")
	(set #prompt_install_agdocs "For which languages do you want to install the AmigaGuide® documentation?")
	(set #prompt_install_html "For which languages do you want to install the HTML documentation?")

	(set #prompt_install_dt_catalogs (cat "Which catalogs for " @app-name " do you want to install?"))
	(set #prompt_install_plangs "Support for which programming languages do you want to install?")

	(set #prompt_askcpufpu  (cat "Please select the CPU/FPU configuration for which you want to install " #dt-name ))
	(set #prompt_askenv     "Install Prefs file ?")

	(set #prompt_askdefaultdir "Where do the \"Datatype-Directory\" belongs (see help)?")
	(set #help_askdefaultdir (cat
	     "All files, which haven't a defined place in the system are installed in the "
	     "\"Datatype-Directory\". These are documentation files, developer files and "
	     "other files misc files. But the datatype itself or the descriptors will not be "
	     "installed there. These files are installed at the appropriate location in the system.\n\n"
	     "By default the \"Datatype-Directory\" should be : \"Sys:Datatype\".\n\n"))
	(set #prompt_askprefsdir "Where to install the Preference Tool ?")
	(set #prompt_askdocsdir  "Where to install the Documentation ?")
	(set #prompt_askclassdir   "Where do the Classes belong ?")
	(set #prompt_askiconpackage "Which icon package do you use ?")

	(set #prompt_installing "Installing")
	(set #prompt_removing   "Removing")
	(set #prompt_install_parts "Which parts do you want to install ?")

	(set #prompt_copy_dt    "Copying the Datatype")
	(set #prompt_copy_descr "Copying the Descriptors")

	(set #prompt_copy "Do you want to copy the following file(s)?")
	(set #prompt_makedir "The following directory was not found, so it must be created:")

	(set #prompt_descdir "Should the datatypes be available directly after system start ?")
	(set #prompt_deinstalled (cat  "Currently there is no deinstallation part for \"" @app-name "\""))

	(set #prompt_askuseinstallcache (cat "There exists a file, which contains choices "
	     "made by a earlier datatype installation. "
	     "Should these choices be used ?"
	))
	(set #help_askuseinstallcache (cat ""
	))

	(set #help_askcpufpu (cat "  Select here the CPU type that is installed in your system. "
	      "\n\n  Currently, this is a MC%s.\n\n  If you select a certain CPU type "
	      "in the choice box, the \"" #dt-name "\" will run on any CPU which "
	      "type is higher or equal to the selection. However, it won't "
	      "run on a system equipped with a lower type.\n\n"
	))
	(set #help_descdir (cat
	     "If the datatypes should be available directly after system start, "
	     "the descriptors are copied to Devs:Datatypes otherwise to "
	     "Sys:Storage/Datatypes.\n\n"
	))

	(set #abort_nocpu (cat "Sorry, the script is unable to install " #dt-name ", because your CPU configuration is not supported.\n"))
	(set #abort_nodt  (cat "Sorry, the Datatypes System is not installed on your system!\n"))
	(set #abort_olddt (cat "Sorry, the script is unable to install " #dt-name ", because the installed version %s of the datatypes system is to low. You need at least version %s.\n"))
    )
)
(if (> @installer-version 0) (
    (set #help_askoptions "")
    (set #help_askchoice "")
))
(P_CustomLanguage)

; -------------------------- end locale section --------------------------

; --------------------------- begin procedures ---------------------------

; --- GetCPU ----------------------------------------------

(procedure P_GetCPUFPU
    ; Param:
    ;
    ; Results:
    ; #cpu #cpu_str
    ; -1 = unknown; 0 = 68000; 1 = 68010; 2 = 68020; 3 = 68030; 4 = 68040;
    ;               5 = 68060
    ; #fpu #fpu_str
    ; -1 = unknown; 0 = NOFPU; 1 = 68881; 2 = 68882; 3 = FPU40
    ;
    ; Used Vars:

    (set #cpu_str (database "cpu"))
    (set #cpu 0)
    (while (<> #cpu_str (select #cpu "68000" "68010" "68020" "68030" "68040" "68060" #cpu))
	(set #cpu (+ #cpu 1))
    )
    (if (= #cpu 6) (
	(set #cpu -1)
	(set #cpu_str #unknown)
    ))

    (if @installer-version
	(
	    (set #fpu_str (database "fpu"))
	    (set #fpu 0)
	    (while (<> #fpu_str (select #fpu "NOFPU" "68881" "68882" "FPU40" #fpu_str))
		(set #fpu (+ #fpu 1))
	    )
	    (if (= #fpu 4) (
		(set #fpu -1)
		(set #fpu_str #unknown)
	    ))
	)
	; else
	(
	    (set #fpu -1)
	    (set #fpu_str #unknown)
	)
    )
)

; --- BitToLanguage ---------------------------------------

(procedure P_BitToLanguage
  ; Params:
  ; #langmask
  ;
  ; Results:
  ; #langmask #lang
  ;
  ; Used Vars:
  ; #i #bitmask

  (set #i 0)
  (set #bitmask %1111111111111111110) ; LANGUAGE
  (while (AND (< #i 18) (NOT (IN #langmask #i))) ; LANGUAGE
    (
     (set #bitmask (BITOR (shiftleft #bitmask 1) %0000000000000000001)) ; LANGUAGE
     (set #i (+ #i 1))
    )
  )
  (set #langmask (BITAND #langmask #bitmask))
  (set #lang (select #i "english" "deutsch" "français" "español" "português" "dansk" "italiano" "nederlands" "norsk" "svenska" "polski" "suomi" "magyar" "greek" "esperanto" "türkçe" "latina" "russian" "")) ; LANGUAGE
)


; *******************************************************
; *******************************************************
;
; newgetversion ()
;
; (C) 1997 by Andreas R. Kleinert (Andreas_Kleinert@t-online.de)
; Freeware. Feel free to add it to your own installer scripts!
;
; INPUT:  #NGVER_NAME
;         (file to check)
; OUTPUT: #NGVER              #NGREV
;         (version string)    (revision string)
;
; Installer procedure to replace the (buggy)
; internal getversion() function by calling
; "C:Version" and parsing the resulting
; version information.
; *******************************************************
;

(procedure P_NewGetVersion
    (set #NGVER "")
    (set #NGREV "")

    (run "C:Version "#NGVER_NAME" FILE >ENV:ngver_verstring")
    (set #ngver_verstring (getenv "ENV:ngver_verstring"))
    (delete "ENV:ngver_verstring")

    (set #ngver_t1 #ngver_verstring)
    (until (= (strlen #ngver_t1) 0) (
	(set #ngver_cmp (substr #ngver_t1 0 1))
	(if (= #ngver_cmp " ") (
	     (set #ngver_t1 (substr #ngver_t1 1))
	     (set #ngver_t2 #ngver_t1)
	     (set #ngver_cmp (substr #ngver_t2 0 1))
	     (until (= #ngver_cmp ".") (
		 (set #NGVER (cat #NGVER #ngver_cmp))
		 (set #ngver_t2  (substr #ngver_t2 1))
		 (set #ngver_cmp (substr #ngver_t2 0 1))
	     ))
	     (set #NGREV (substr #ngver_t2 1))
	))
	(set #ngver_t1 (substr #ngver_t1 1))
    ))
)
; *******************************************************
; *******************************************************


; --- GetVersion procedure --------------------------------

(procedure P_GetVersion
     ; Param:
     ; #file
     ;
     ; Results:
     ; #ver #rev
     ;
     ; Vars used:
     ; #vernum #NGVER_NAME #NGVER #NGREV)


     (if #USE_NEWGETVERSION
	 (
	     (set #NGVER_NAME #file)
	     (P_NewGetVersion)
	     (set #ver #NGVER)
	     (set #rev #NGREV)
	 )
	 ; else
	 (
	     (set #vernum (getversion (cat #file)))
	     (set #ver (/ #vernum 65536))
	     (set #rev (- #vernum (* #ver 65536)))
	 )
     )
)

; --- CompareVersions procedure ---------------------------

(procedure P_CompareVersions
  ; Param:
  ; #ver #rev #ver2 #rev2
  ;
  ; Results:
  ; #result
  ; -1 : #ver.#rev < #ver2.#rev2
  ;  0 : #ver.#rev = #ver2.#rev2
  ;  1 : #ver.#rev > #ver2.#rev2
  ;
  ; Used Vars:

  (if (< #ver #ver2)
    (set #result -1)
    (if (> #ver #ver2)
      (set #result 1)
      (if (< #rev #rev2)
	(set #result -1)
	(if (> #rev #rev2)
	  (set #result 1)
	  (set #result 0)
	)
      )
    )
  )
)

; --- CountBits -------------------------------------------

(procedure P_CountBits
  ; Param:
  ; #bitmask
  ;
  ; Results:
  ; #result
  ; number of bits set
  ;
  ; Used Vars:
  ; #i

  (set #result 0)
  (set #i 0)

  (until (= #i 32)
  (
    (if (IN #bitmask #i)
	(set #result (+ #result 1))
    )
    (set #i (+ #i 1))
  ))
)

; --- GetOSVersion ----------------------------------------

(procedure P_GetOSVersion
  ; Param:
  ;
  ; Results:
  ; #os_ver #os_rev #os_str
  ;
  ; Used Vars:
  ; #file #ver #rev #vernum #i

  (set #file "libs:version.library")
  (P_GetVersion)
  (set #os_ver #ver)
  (set #os_rev #rev)

  (set #i 0)
  (while (<> #os_ver (select #i 33 34 36 37 38 39 40 43 #os_ver))
    (set #i (+ #i 1))
  )
  (set #os_str (select #i "1.2" "1.3" "2.0pre" "2.0" "2.1" "3.0" "3.1" "3.2" #unknown))
)

; --- CheckAvailableCPUs ----------------------------------

(procedure P_CheckAvailableCPUs
  ; Params:
  ; #src-dir #dt-name
  ;
  ; Results:
  ; #dt_cpus #dt_fpus #dt_cpu_counter
  ;
  ; Used Vars:
  ; #i #file #bitmask #filetype #f

  (set #dt_cpus %000000)
  (set #dt_fpus %000000)
  (set #dt_cpu_counter 0)

  (foreach #src-dir (cat #dt-name "(%|.0(0|1|2|3|4|6)0(%|f))(%|.p)")
    (
     (set #i 0)
     (set #file (substr @each-name (strlen #dt-name)))

     ; fpu ?
     (set #f (patmatch ".0?0f(%|.p)" #file))
     (if #f
	 (if (patmatch "#?.p" #file)
	     (set #file (substr #file 0 (- (strlen #file) 3)))
	     ; else
	     (set #file (substr #file 0 (- (strlen #file) 1)))
	 )
     )

     (set #bitmask %000001)
     (while (NOT (patmatch (select #i "(%|.000)(%|.p)" ".010(%|.p)" ".020(%|.p)" ".030(%|.p)" ".040(%|.p)" ".060(%|.p)") #file))
       (
	(set #bitmask (shiftleft #bitmask 1))
	(set #i (+ #i 1))
       )
     )
     (if #f
       (
	(set #dt_fpus (BITOR #dt_fpus #bitmask))
	(set #dt_cpu_counter (+ #dt_cpu_counter 1))
       )
       (
	(set #dt_cpus (BITOR #dt_cpus #bitmask))
	(set #dt_cpu_counter (+ #dt_cpu_counter 1))
       )
     )
    )
  )
)


; --- Check procedure ---------------------------------------------------------

(procedure P_CheckExists
    ; Param:
    ; #dir
    ;
    ; Results:
    ; #chk_catalogs #chk_dt_catalogs
    ; #chk_docs #chk_agdocs #chk_asciidocs #chk_hgdocs #chk_htmldocs
    ;
    ; #chk_autodoc #chk_c_h #chk_c_example #chk_asm_i #chk_asm_example #chk_e_e
    ; #chk_e_example #chk_modula_def #chk_modula_mod #chk_modula_demo
    ; #chk_oberon_mod #chk_oberon_example #existsmask
    ; #chk_progdirs
    ;
    ; Vars used:
    ; #i #lang

    (set #chk_datatype     (exists "classes/datatypes"))
    (set #chk_descr        (exists "devs/datatypes"))
    (set #chk_env          (exists "envarc/datatypes"))
    (set #chk_prefs        (exists "prefs/datatypes"))
    (set #chk_examples     (exists "examples"))
    (set #chk_arexx        (exists "arexx"))

    ; Catalogs + Documentation
    (set #chk_dt_catalogs  %000000000000000000) ; LANGUAGE
    (set #chk_asciidocs    %000000000000000000) ; LANGUAGE
    (set #chk_agdocs       %000000000000000000) ; LANGUAGE
    (set #chk_hgdocs       %000000000000000000) ; LANGUAGE
    (set #chk_htmldocs     %000000000000000000) ; LANGUAGE
    (set #langmask         %111111111111111111) ; LANGUAGE
    (while (P_BitToLanguage)(
	; Catalogs
	(if (exists (cat (tackon #dir "locale/catalogs/") #lang "/" #dt-base "_" #dt-suffix ".catalog") (noreq))
	    (
	       (set #chk_dt_catalogs (BITOR #chk_dt_catalogs %1000000000000000000)) ; LANGUAGE
	       (set #chk_dt_catalogs (shiftright #chk_dt_catalogs 1))
	    )
	    ; else
	    (
	       (set #chk_dt_catalogs (shiftright #chk_dt_catalogs 1))
	    )
	)

	; Docs/ASCII
	(if (exists (cat (tackon #dir "Docs/") #lang "/" #dt-base "_" #dt-suffix ".doc") (noreq))
	    (
		(set #chk_asciidocs (BITOR #chk_asciidocs %1000000000000000000)) ; LANGUAGE
		(set #chk_asciidocs (shiftright #chk_asciidocs 1))
	    )
	    ; else
	    (
		(set #chk_asciidocs (shiftright #chk_asciidocs 1))
	    )
	)

	; Docs/AmigaGuide
	(if (exists (cat (tackon #dir "Docs/") #lang "/" #dt-base "_" #dt-suffix ".guide") (noreq))
	    (
		(set #chk_agdocs (BITOR #chk_agdocs %1000000000000000000)) ; LANGUAGE
		(set #chk_agdocs (shiftright #chk_agdocs 1))
	    )
	    ; else
	    (
		(set #chk_agdocs (shiftright #chk_agdocs 1))
	    )
	)

	; Docs/HyperGuide
	(if (exists (cat (tackon #dir "Docs/") #lang "/" #dt-base "_" #dt-suffix ".hguide") (noreq))
	    (
		(set #chk_hgdocs (BITOR #chk_hgdocs %1000000000000000000)) ; LANGUAGE
		(set #chk_hgdocs (shiftright #chk_hgdocs 1))
	    )
	    ; else
	    (
		(set #chk_hgdocs (shiftright #chk_hgdocs 1))
	    )
	)

	; Docs/HyperGuide
	(if (exists (cat #dir "Docs/" #lang "/" #dt-base "_" #dt-suffix ".html") (noreq))
	    (
		(set #chk_htmldocs (BITOR #chk_htmldocs %1000000000000000000)) ; LANGUAGE
		(set #chk_htmldocs (shiftright #chk_htmldocs 1))
	    )
	    ; else
	    (
		(set #chk_htmldocs (shiftright #chk_htmldocs 1))
	    )
	)
    ))
    (set #chk_catalogs #chk_dt_catalogs)


    (set #chk_docs (BITOR (if #chk_asciidocs %0001 %0000)
			  (if #chk_agdocs    %0010 %0000)
			  (if #chk_hgdocs    %0100 %0000)
			  (if #chk_htmldocs  %1000 %0000)
		   )
    )

    (set #chk_user_docs %0)
    (if (NOT #chk_docs)
	(
	    (if (exists (cat #dir (tackon #dt-doc-dir #dt-doc)))
		(set #chk_user_docs %1)
	    )
	)
    )

    ; Icon package
    (set #iconmask (BITOR
	 (if (exists (cat #dir "Icons/Standard/def_Icons")) %001 %000)
	 (if (exists (cat #dir "Icons/MagicWB/def_Icons"))  %010 %000)
	 (if (exists (cat #dir "Icons/NewIcons/def_Icons")) %100 %000)
    ))
    (set #chk_icons #iconmask)

    ; Developer
    (set #chk_proglang %000000)
    (set #chk_progdirs %000000)
    (set #chk_autodoc (exists (cat #dir "Developer/Autodocs/" #dt-base "_" #dt-suffix ".doc") (noreq)))
    (set #chk_autodoc_guide (exists (cat #dir "Developer/Autodocs/" #dt-base "_" #dt-suffix) (noreq)))

    (set #chk_fd      (exists (cat "Developer/FD/" #dt-base "dtclass_lib.fd") (noreq)))

    ; C
    (set #chk_progdirs (BITOR #chk_progdirs (if (exists "Developer/C" (noreq)) %000001 %000000)))
    (set #chk_c_h       (exists (cat "Developer/C/Include/Datatypes/" #dt-base "class.h") (noreq)))
    (set #chk_c_clib    (exists (cat "Developer/C/Include/CLib/" #dt-base "dtclass_protos.h") (noreq)))
    (set #chk_c_pragmas (exists (cat "Developer/C/Include/Pragmas/" #dt-base "dtclass_pragmas.h") (noreq)))
    (set #chk_c_proto   (exists (cat "Developer/C/Include/Proto/" #dt-base "dtclass.h") (noreq)))
    (set #chk_c_inline  (exists (cat "Developer/C/Include/Inline/" #dt-base "dtclass_inline.h") (noreq)))
    (set #chk_c_example (exists (cat "Developer/C/Examples/" #dt-base "-Demo.c") (noreq)))
    (if #chk_c_h
	(set #chk_proglang (BITOR #chk_proglang %000001))
    )
    ; C++
    ; not supported yet
    ; Assembler
    (set #chk_progdirs (BITOR #chk_progdirs (if (exists (cat #dir "Developer/Assembler") (noreq)) %000100 %000000)))
    (set #chk_asm_i       (exists (cat "Developer/Assembler/Include/Datatypes/" #dt-base "class.i") (noreq)))
    (set #chk_asm_example (exists (cat "Developer/Assembler/Examples/" #dt-base "-Demo.s") (noreq)))
    (if #chk_asm_i
	(set #chk_proglang (BITOR #chk_proglang %000100))
    )
    ; Amiga-E
    (set #chk_progdirs (BITOR #chk_progdirs (if (exists (cat #dir "Developer/Amiga-E") (noreq)) %001000 %000000)))
    (set #chk_e_e       (exists (cat "Developer/Amiga-E/Modules/Datatypes/" #dt-base "class.e") (noreq)))
    (set #chk_e_example (exists (cat "Developer/Amiga-E/Examples/" #dt-base "-Demo.e") (noreq)))
    (if #chk_e_e
	(set #chk_proglang (BITOR #chk_proglang %001000))
    )
    ; Modula-II
    (set #chk_progdirs (BITOR #chk_progdirs (if (exists (cat #dir "Developer/Modula") (noreq)) %010000 %000000)))
    (set #chk_modula_def  (exists (cat "Developer/Modula/Datatypes/" #dt-base ".def") (noreq)))
    (set #chk_modula_mod  (exists (cat "Developer/Modula/Datatypes/" #dt-base ".mod") (noreq)))
    (set #chk_modula_demo (exists (cat "Developer/Modula/Examples/" #dt-base "-Demo.mod") (noreq)))
    (if (AND #chk_modula_def #chk_modula_mod)
	(set #chk_proglang (BITOR #chk_proglang %010000))
    )
    ; Oberon
    (set #chk_progdirs (BITOR #chk_progdirs (if (exists (cat #dir "Developer/Oberon") (noreq)) %100000 %000000)))
    (set #chk_oberon_mod     (exists (cat "Developer/Oberon/Datatypes/" #dt-base ".mod") (noreq)))
    (set #chk_oberon_example (exists (cat "Developer/Oberon/Examples/" #dt-base "-Demo.mod") (noreq)))
    (if #chk_oberon_mod
	(set #chk_proglang (BITOR #chk_proglang %100000))
    )

    ; is there any developer informations ?
    (set #chk_developer #chk_proglang)

    (P_CustomCheck)

    (set #existsmask (BITOR
	 (if #chk_datatype  %0000000001 %000000000)
	 (if #chk_descr     %0000000010 %000000000)
	 (if #chk_env       %0000000100 %000000000)
	 (if #chk_catalogs  %0000001000 %000000000)
	 (if #chk_docs      %0000010000 %000000000)
	 (if #chk_prefs     %0000100000 %000000000)
	 (if #chk_icons     %0001000000 %000000000)
	 (if #chk_arexx     %0010000000 %000000000)
	 (if #chk_examples  %0100000000 %000000000)
	 (if #chk_developer %1000000000 %000000000)
    ))
)


; --- AskLanguages ----------------------------------------

(procedure P_AskLanguages
  ; Params:
  ; #prompt #langmask #defaultmask
  ;
  ; Results:
  ; #langmask
  ;
  ; Used Vars:
  ; #bitmask

  (set #langmask (BITAND #langmask %111111111111111111)) ; LANGUAGE
  (if #langmask
    (
     (set #bitmask #langmask)
     (P_CountBits)
     (if (> #result 1)
	(set #bitmask (askoptions (prompt #prompt)
				  (help #help_askoptions @askoptions-help)
				  (default (BITAND #defaultmask #langmask))
				  (choices
				    (if (IN #langmask 0)
				      (cat #prop #choice_english)
				      ("")
				    )
				    (if (IN #langmask 1)
				      (cat #prop #choice_german)
				      ("")
				    )
				    (if (IN #langmask 2)
				      (cat #prop #choice_french)
				      ("")
				    )
				    (if (IN #langmask 3)
				      (cat #prop #choice_spanish)
				      ("")
				    )
				    (if (IN #langmask 4)
				      (cat #prop #choice_portuguese)
				      ("")
				    )
				    (if (IN #langmask 5)
				      (cat #prop #choice_danish)
				      ("")
				    )
				    (if (IN #langmask 6)
				      (cat #prop #choice_italian)
				      ("")
				    )
				    (if (IN #langmask 7)
				      (cat #prop #choice_dutch)
				      ("")
				    )
				    (if (IN #langmask 8)
				      (cat #prop #choice_norwegian)
				      ("")
				    )
				    (if (IN #langmask 9)
				      (cat #prop #choice_swedish)
				      ("")
				    )
				    (if (IN #langmask 10)
				      (cat #prop #choice_polish)
				      ("")
				    )
				    (if (IN #langmask 11)
				      (cat #prop #choice_finnish)
				      ("")
				    )
				    (if (IN #langmask 12)
				      (cat #prop #choice_hungarian)
				      ("")
				    )
				    (if (IN #langmask 13)
				      (cat #prop #choice_greek)
				      ("")
				    )
				    (if (IN #langmask 14)
				      (cat #prop #choice_esperanto)
				      ("")
				    )
				    (if (IN #langmask 15)
				      (cat #prop #choice_turkish)
				      ("")
				    )
				    (if (IN #langmask 16)
				      (cat #prop #choice_latin)
				      ("")
				    )
				    (if (IN #langmask 17)
				      (cat #prop #choice_russian)
				      ("")
				    )
				    ; LANGUAGE
				  )
		      )
	)
     )
     (set #langmask (BITAND #langmask #bitmask))
    )
  )
)

; --- AskProgLang -------------------------------------------------------------

(procedure P_AskProgLangs
    ; Params:
    ; #prompt #plangmask #defaultmask
    ;
    ; Results:
    ; #plangmask
    ;
    ; Used Vars:
    ; #bitmask

    (set #plangmask (BITAND #plangmask %111101))
    (if #plangmask
	 (
	     (set #bitmask (askoptions
		 (prompt #prompt)
		 (help #help_askoptions @askoptions-help)
		 (default (BITAND #defaultmask #plangmask))
		 (choices
		     (if (IN #plangmask 0)
			 (cat #prop "C")
			 ("")
		     )
		     (if (IN #plangmask 1)
			 (cat #prop "C++")
			 ("")
		     )
		     (if (IN #plangmask 2)
			 (cat #prop "Assembler")
			 ("")
		     )
		     (if (IN #plangmask 3)
			 (cat #prop "Amiga-E")
			 ("")
		     )
		     (if (IN #plangmask 4)
			 (cat #prop "Modula-II")
			 ("")
		     )
		     (if (IN #plangmask 5)
			 (cat #prop "Oberon")
			 ("")
		     )
		 ))
	     )
	     (set #plangmask (BITAND #plangmask #bitmask))
	 )
    )
)


; --- P_GetCPUString

(procedure P_GetCPUString
    ; Params:
    ; #cpu
    ;
    ; Results:
    ; #cpu_str
    ;
    ; Used Vars:
    ;

    (set #cpu_str (select #cpu "MC68000" "MC68010" "MC68020" "MC68020+FPU" "MC68030" "MC68030+FPU" "MC68040" "MC68040+FPU" "MC68060"))
)

; --- AskCPUFPU -------------------------------------------

(procedure P_AskCPUFPU
  ; Params:
  ;
  ; Results:
  ; #cpu #cpu_str #dt_cpu_file_extension
  ;
  ; Used Vars:
  ; #i #file #bitmask #filetype #f #dt_cpus #dt_fpus #dir
  ; #defaultcpu #dt_cpu_counter #fpu #fpu_str #cpu2

  (set #src-dir "classes/datatypes")
  (P_CheckAvailableCPUs)

  ; if there was a user selection from a previous datatype installation use this CPU type
  (if (NOT #installcache) (
      (P_GetCPUFPU)
      (set #defaultcpu -1)
      (while (AND (>= #cpu 0) (= #defaultcpu -1))
	(
	 (if (AND #fpu (IN #dt_fpus #cpu))
	   (set #defaultcpu (select #cpu -1 -1 3 5 7 -1))
	   (if (IN #dt_cpus #cpu)
	     (set #defaultcpu (select #cpu 0 1 2 4 6 8))
	   )
	 )
	 (set #cpu (- #cpu 1))
	)
      )
      (if (= #defaultcpu -1)
	(abort #abort_nocpu)
      )
      (if (AND (> #dt_cpu_counter 1) (= @user-level 2))
	(
	 (set #cpu (askchoice (prompt #prompt_askcpufpu)
			      (help (cat (#help_askcpufpu #cpu_str) #help_askchoice @askchoice-help))
			      (default #defaultcpu)
			      (choices
				(if (IN #dt_cpus 0)
				  (cat #prop "MC68000")
				  ("")
				)
				(if (IN #dt_cpus 1)
				  (cat #prop "MC68010")
				  ("")
				)
				(if (IN #dt_cpus 2)
				  (cat #prop "MC68020")
				  ("")
				)
				(if (IN #dt_fpus 2)
				  (cat #prop "MC68020+FPU")
				  ("")
				)
				(if (IN #dt_cpus 3)
				  (cat #prop "MC68030")
				  ("")
				)
				(if (IN #dt_fpus 3)
				  (cat #prop "MC68030+FPU")
				  ("")
				)
				(if (IN #dt_cpus 4)
				  (cat #prop "MC68040")
				  ("")
				)
				(if (IN #dt_fpus 4)
				  (cat #prop "MC68040+FPU")
				  ("")
				)
				(if (IN #dt_cpus 5)
				  (cat #prop "MC68060")
				  ("")
				)
			      )
		   )
	 )
	)
	(set #cpu #defaultcpu)
      )
      (set #cpu_save #cpu)
  ))

  ; select lower cpu if not available
  (set #cpu2 (select #cpu 0 1 2 2 3 3 4 4 5))
  (set #fpu2 (select #cpu 0 0 0 1 0 1 0 1 0))
  (while (NOT (OR (AND #fpu2 (AND #fpu (IN #dt_fpus #cpu2))) (AND (NOT #fpu2) (IN #dt_cpus #cpu2))))
    (
     (set #cpu (- #cpu 1))
     (set #cpu2 (select #cpu 0 1 2 2 3 3 4 4 5))
     (set #fpu2 (select #cpu 0 0 0 1 0 1 0 1 0))
    )
  )

  (P_GetCPUString)
  (set #dt_cpu_file_extension (select #cpu (if (exists (cat #dir "/" #dt-name ".000") (noreq)) (".000") ("")) ".010" ".020" ".020f" ".030" ".030f" ".040" ".040f" ".060"))
  (set #cpu #cpu2)
)


; --- AskDocFormat ----------------------------------------

(procedure P_AskDocFormats
    ; Params:
    ; #prompt_install_docs #docmask #defaultmask
    ;
    ; Results:
    ; #docmask
    ;
    ; Used Vars:
    ; #bitmask

    (set #docmask (BITAND #docmask %1111))
    (if #docmask
	(set #bitmask #docmask)
	(P_CountBits)
	(if (> #result 1)
	    (
		(set #bitmask (askoptions (prompt #prompt_install_docs)
		     (help #help_askoptions @askoptions-help)
		     (default (BITAND #defaultmask #docmask))
		     (choices
			 (if (IN #docmask 0)
			     (cat #prop "ASCII")
			     ("")
			 )
			 (if (IN #docmask 1)
			     (cat #prop "AmigaGuide®")
			     ("")
			 )
			 (if (IN #docmask 2)
			     (cat #prop "HyperGuide")
			     ("")
			 )
			 (if (IN #docmask 3)
			     (cat #prop "HTML")
			     ("")
			 )
		     )
		))
	    )
	)
	(set #docmask (BITAND #docmask #bitmask))
    )
)

; --- AskDefaultDir ---------------------------------------

(procedure P_AskDefaultDir
    ; Params:
    ; #prompt_askdefaultdir
    ;
    ; Results:
    ; #defaultdir
    ;
    ; Used Vars:

    (set #defaultdir
	(askdir
	    (prompt #prompt_askdefaultdir)
	    (help (cat #help_askdefaultdir @askdir-help))
	    (default #defaultdir)
	)
    )
    (set @default-dest #defaultdir)
)

; --- AskIconPackage --------------------------------------

(procedure P_AskIconPackage
    ; Params:
    ; #prompt_askiconpackage #iconmask
    ;
    ; Results:
    ; #iconpackage
    ;
    ; Used Vars:
    ; #bitmask

    (set #iconmask (BITAND #iconmask %111))
    (if #iconmask
	(
	    (set #iconpackage-nr (askchoice (prompt #prompt_askiconpackage)
		 (help #help_askoptions @askoptions-help)
		 (default (BITAND #defaultmask #docmask))
		 (choices
		     (if (IN #iconmask 0)
			 (cat #prop "Standard")
			 ("")
		     )
		     (if (IN #iconmask 1)
			 (cat #prop "MagicWB")
			 ("")
		     )
		     (if (IN #iconmask 2)
			 (cat #prop "NewIcons")
			 ("")
		     )
		     (#choice_none)
		 )
	    ))
	    (set #iconpackage (select #iconpackage-nr "Standard" "MagicWB" "NewIcons" ""))
	)
    )
)

; --- GetVersion ------------------------------------------

(procedure P_GetVersion
    ; Param:
    ; #file
    ;
    ; Results:
    ; #ver #rev
    ;
    ; Vars used:
    ; #vernum

    (set #vernum (getversion (cat #file)))
    (set #ver (/ #vernum 65536))
    (set #rev (- #vernum (* #ver 65536)))
)

; --- GetDTVersion ----------------------------------------

(procedure P_GetDTVersion
    ; Params:
    ;
    ; Results:
    ; #dt_ver #dt_rev #dt_str
    ;
    ; Used Vars:
    ; #file #ver #rev #vernum #i

    (set #file "libs:datatypes.library")
    (if (exists #file (noreq))
	(
	    (set #file "libs:datatypes.library")
	    (P_GetVersion)
	    (set #dt_ver #ver)
	    (set #dt_rev #rev)
	    (set #dt_str (cat #ver "." #rev))
	)
	(
	    (set #dt_ver 0)
	    (set #dt_rev 0)
	    (set #dt_str "")
	)
    )
)

; --- AskParts ----------------------------------------------------------------

(procedure P_AskParts
    ; Params:
    ; #prompt #defaultmask #existsmask
    ;
    ; Results:
    ; #parts
    ;
    ; Used Vars:

    (set #existsmask (BITOR #existsmask (SHIFTLEFT #custommask #max_standard_parts)))
    (set #existsmask (if (= @user-level 2)
			 #existsmask
			 ; disable developer stuff
			 (BITAND #existsmask (BITOR %0111111111 (SHIFTLEFT #custom_parts_default #max_standard_parts)))
		     )
    )
    (if #existsmask
	(
	    (P_CustomParts)
	    (set #parts (askoptions (prompt #prompt)
		 (help #help_askoptions @askoptions-help)
		 (default (BITAND #defaultmask #existsmask))
		 (choices
		    (if (IN #existsmask 0)
			(cat #prop #choice_datatype #size_datatype)
			("")
		    )
		    (if (IN #existsmask 1)
			(cat #prop #choice_descriptors #size_descriptors)
			("")
		    )
		    (if (IN #existsmask 2)
			(cat #prop #choice_env #size_env)
			("")
		    )
		    (if (IN #existsmask 3)
			(cat #prop #choice_catalogs #size_catalogs)
			("")
		    )
		    (if (IN #existsmask 4)
			(cat #prop #choice_docs #size_docs)
			("")
		    )
		    (if (IN #existsmask 5)
			(cat #prop #choice_prefs #size_prefs)
			("")
		    )
		    (if (IN #existsmask 6)
			(cat #prop #choice_icons #size_icons)
			("")
		    )
		    (if (IN #existsmask 7)
			(cat #prop #choice_arexx #size_arexx)
			("")
		    )
		    (if (IN #existsmask 8)
			(cat #prop #choice_examples #size_examples)
			("")
		    )
		    (if (IN #existsmask 9)
			(cat #prop #choice_developer #size_developer)
			("")
		    )
		    (if (IN #custommask 0)
			(cat #prop #custom_part1 #size_custom_part1)
			("")
		    )
		    (if (IN #custommask 1)
			(cat #prop #custom_part2 #size_custom_part2)
			("")
		    )
		    (if (IN #custommask 2)
			(cat #prop #custom_part3 #size_custom_part3)
			("")
		    )
		 ))
	    )
	    (set #parts (BITAND #parts #existsmask))
	    (set #install_datatype    (IN #parts 0))
	    (set #install_descriptors (IN #parts 1))
	    (set #install_env         (IN #parts 2))
	    (set #install_catalogs    (IN #parts 3))
	    (set #install_docs        (IN #parts 4))
	    (set #install_prefs       (IN #parts 5))
	    (set #install_icons       (IN #parts 6))
	    (set #install_arexx       (IN #parts 7))
	    (set #install_examples    (IN #parts 8))
	    (set #install_developer   (IN #parts 9))

	    (set #install_custom_parts (SHIFTRIGHT #parts #max_standard_parts))
	)
	; else
	(
	    (set #parts 0)
	)
    )
)

; --- P_Completed -----------------------------------------

(procedure P_Completed
    ; Params:
    ; #completed
    ;
    ; Results:
    ;
    ; Used Vars:
    ; #precent #max_installation_parts

    (set #max_installation_parts 27)
    (set #percent (/ (* 100 #completed) #max_installation_parts))
    (complete #percent)
    (set #completed (+ #completed 1))
)

; --- P_DeleteFile ----------------------------------------

(procedure P_DeleteFile
    ; Params:
    ; #file
    ;
    ; Results:
    ;
    ; Used Vars:

    (if (exists #file) (
	(delete #file)
	(if (exists (cat #file ".info"))
	    (delete (cat #file ".info"))
	)
    ))
)

; --- MkDirInfo -------------------------------------------

(procedure P_MkDirInfo
    ; Params:
    ; #dest-dir #infos
    ;
    ; Results:
    ;
    ; Used Vars:
    ; #tmp

    (set #tmp (tackon #defaultdir #dest-dir))
    (if (NOT (exists #tmp (noreq)))
	(if #infos
	    (makedir #tmp (prompt #prompt_makedir "\n\n" #tmp) (help @makedir-help) (infos) (confirm "expert"))
	    (makedir #tmp (prompt #prompt_makedir "\n\n" #tmp) (help @makedir-help) (confirm "expert"))
	)
    )
)

; --- P_CpNewFile -----------------------------------------

(procedure P_CpNewFile
    ; Params:
    ; #dest-dir #src-dir #file #infos
    ;
    ; Results:
    ;
    ; Used Vars:
    ; #tmp

    (set #tmp #file)
    (if (exists (tackon #dest-dir #file))
	(
	    (set #file (tackon #dest-dir #tmp))
	    (P_GetVersion)
	    (set #ver2 #ver)
	    (set #rev2 #rev)
	    (set #file (tackon #src-dir #tmp))
	    (P_GetVersion)

	    (if (= (P_CompareVersions) 1)
		(
		    (set #file #tmp)
		    (P_CpFile)
		)
	    )
	)
	; else
	(P_CpFile)
    )

)

; --- P_CpFile --------------------------------------------

(procedure P_CpFile
    ; Params:
    ; #dest-dir #src-dir #file #infos
    ;
    ; Results:
    ;
    ; Used Vars:
    ; #tmp

    (if #infos
	(copyfiles
	    (prompt #prompt_copy)
	    (help @copyfiles-help)
	    (source (cat #src-dir "/" #file))
	    (dest #dest-dir)
	    (files)
	    (infos)
	    (optional "nofail" "force")
	    (confirm "expert")
	)
	(copyfiles
	    (prompt #prompt_copy)
	    (help @copyfiles-help)
	    (source (cat #src-dir "/" #file))
	    (dest #dest-dir)
	    (files)
	    (optional "nofail" "force")
	    (confirm "expert")
	)
    )
)

; ---------------------------- end procedures ----------------------------


; -------------------------- begin installation --------------------------

; 0. Begin installation process

; 0.1 Check datatypes.library
(P_GetDTVersion)
(if (= #dt_ver 0)
    (abort #abort_nodt)
)
(set #ver2 #min_dt_version)
(set #rev2 #min_dt_revision)
(P_CompareVersions)
(if (= #result -1)(
    (abort (#abort_olddt #dt_str (cat #min_dt_version "." #min_dt_revision)))
))

; 0.2 Ask installation mode
;(set #mode
;    (askchoice
;        (prompt #prompt_install_uninstall)
;        (help @askchoice-help)
;        (choices #choice_install #choice_uninstall)
;    )
;)

; only install mode now
(set #mode 0)

(if #mode
    (set #pmode #prompt_uninstall)
    (set #pmode #prompt_install)
)

; 0.3 Ask default dir
(P_AskDefaultDir)
(set @default-dest #defaultdir)

; Show what we are doing
(working (cat #pmode " " @app-name))

; 0.4 Check distribution structure
(set #dir "")
(P_CheckExists)

; 0.5 Try to get cached installation selections
(if (exists (cat (tackon @default-dest #save_user_selections_icon) ".info")) (
    (iconinfo (dest (tackon @default-dest #save_user_selections_icon))
	(gettooltype "CPU" "#tmpcpu")
	(gettooltype "IconPackage" "#iconpackage")
	(gettooltype "ClassDir" "#classdir")
	(gettooltype "DescriptorDir" "#descdir")
	(gettooltype "ARexxDir" "#arexxdir")
    )
    (set #iconpackage (if (= #iconpackage "none") ("") (#iconpackage)))
    (set #cpu (+ #tmpcpu))
    (P_GetCPUString)
    (if (askbool (prompt (cat #prompt_askuseinstallcache "\n\n"
		    ("CPU=%s\nClassDir=%s\nDescriptorDir=%s\nARexxDir=%s\n" #cpu_str #classdir #descdir #arexxdir)
		    (if (> (strlen #iconpackage) 0) ("IconPackage=%s\n" #iconpackage) (""))
		 ))
		 (help #prompt_helpuseinstallcache)
	)
	(
	    (set #installcache 1)
	    ; disable saving off user selections. They are saved!
	    (set #save_user_selections 0)
	)
    )
))

(complete 0)
(set #completed 0)
; now do install or remove
(if (= #mode 0)

    ; 1. Install
    (
	; 1.1 User selections
	; choose installation parts
	(set #prompt #prompt_install_parts)
	(set #defaultmask (BITOR %1111111111 (SHIFTLEFT #custom_parts_default #max_standard_parts)))
	(P_AskParts)

	(set #docsdir (cat (tackon #defaultdir "Docs/") #dt-type))

	(P_Completed)

	; 1.1.1 choose #cpu type
	(if #install_datatype (
	    ; get classes dir
	    (if (NOT #installcache)
		(
		   (set #classdir
		       (askdir
			   (prompt #prompt_askclassdir)
			   (help @askdir-help)
			   (default #classdir)
		       )
		   )
		)
	    )
	    (P_AskCPUFPU)

	    (debug "Selected CPU-Number is " #cpu)
	    (debug "Selected CPU-String is " #cpu_str)
	    (debug "Selected CPU-Extension is " #dt_cpu_file_extension)

	    (set #dt-file (cat (tackon "classes/datatypes" #dt-name) #dt_cpu_file_extension))
	))

	(P_Completed)

	; 1.1.2. choose descriptor directory
	(if #install_descriptors (
	    (if (AND (NOT #installcache) (exists "devs/datatypes")) (
		(if (= 0 (askchoice
		    (prompt #prompt_descdir)
		    (help (cat #help_descdir @askchoice-help))
		    (choices #choice_yes #choice_no)))
			(set #descdir "Devs:Datatypes")
			(set #descdir "Sys:Storage/Datatypes")
		)
	    ))
	))

	(P_Completed)

	; 1.1.3. choose catalog language
	(if #install_catalogs (
	    ; catalogs (P_AskLanguages)
	    ;(if (OR (NOT #update) (AND #update (IN #parts 3)))
	    (if 1
		(
		    (set #prompt      #prompt_install_dt_catalogs)
		    (set #langmask    (BITAND #chk_dt_catalogs (BITNOT #old_dt_catalogs)))
		    (set #defaultmask (BITAND #language_default (BITNOT #old_dt_catalogs)))
		    (P_AskLanguages)
		    (set #install_dt_catalogs #langmask)
		)
		; else
		(
		    (set #install_dt_catalogs 0)
		)
	    )
	))

	(P_Completed)

	; 1.1.4. choose iconpackage
	(if (AND #install_icons (OR (NOT #installcache) (= (strlen #iconpackage) 0))) (
	    (P_AskIconPackage)
	))
	(set #icondir (cat (tackon #defaultdir "Misc/Icons")))

	(P_Completed)

	; 1.1.4. choose documentation format and language
	(if #install_docs (
	    ; (P_AskDocFormats)
	    ;(if (OR (NOT #update) (AND #update (IN #parts 4)))
	    (if 1
		(
		    (set #prompt      #prompt_install_docs)
		    (set #docmask     (BITAND #chk_docs (BITNOT #old_docs)))
		    (set #defaultmask (BITAND %1111 (BITNOT #old_docs)))

		    (P_AskDocFormats)
		    (set #install_docs #docmask)
		)
		; else
		(
		    (set #install_docs 0)
		)
	    )

	    ; asciidocs (P_AskLanguages)
	    (if (IN #install_docs 0)
		(
		    (set #prompt #prompt_install_asciidocs)
		    (set #langmask (BITAND #chk_asciidocs (BITNOT #old_asciidocs)))
		    (set #defaultmask (BITAND #language_default (BITNOT #old_asciidocs)))
		    (P_AskLanguages)
		    (set #install_asciidocs #langmask)
		)
		; else
		(
		    (set #install_asciidocs 0)
		)
	    )

	    ; agdocs (P_AskLanguages)
	    (if (IN #install_docs 1)
		(
		    (set #prompt #prompt_install_agdocs)
		    (set #langmask (BITAND #chk_agdocs (BITNOT #old_agdocs)))
		    (set #defaultmask (BITAND #language_default (BITNOT #old_agdocs)))
		    (P_AskLanguages)
		    (set #install_agdocs #langmask)
		)
		; else
		(
		    (set #install_agdocs 0)
		)
	    )

	    ; hgdocs (P_AskLanguages)
	    (if (IN #install_docs 2)
		(
		    (set #prompt #prompt_install_hgdocs)
		    (set #langmask (BITAND #chk_hgdocs (BITNOT #old_hgdocs)))
		    (set #defaultmask (BITAND #language_default (BITNOT #old_hgdocs)))
		    (P_AskLanguages)
		    (set #install_hgdocs #langmask)
		)
		; else
		(
		    (set #install_hgdocs 0)
		)
	    )

	    ; htmldocs (P_AskLanguages)
	    (if (IN #install_docs 3)
		(
		    (set #prompt #prompt_install_htmldocs)
		    (set #langmask (BITAND #chk_htmldocs (BITNOT #old_htmldocs)))
		    (set #defaultmask (BITAND #language_default (BITNOT #old_htmldocs)))
		    (P_AskLanguages)
		    (set #install_htmldocs #langmask)
		)
		; else
		(
		    (set #install_htmldocs 0)
		)
	    )
	))

	(P_Completed)

	; 1.1.5. choose prefs tools directory
	(if #install_prefs (
	    (if (exists "prefs/datatypes") (
		(set #dt_prefs_dir
		    (askdir
			(prompt #prompt_askprefsdir)
			(help @askdir-help)
			(default #prefsdir)
		    )
		)
	    ))
	))

	(P_Completed)

	; 1.1.6. choose programming language
	(if #install_developer
	    (
		(set #prompt #prompt_install_plangs)
		(set #plangmask (BITAND #chk_proglang (BITNOT #old_proglang)))
		(set #defaultmask #old_progdirs)
		(P_AskProgLangs)
		(set #install_proglang #plangmask)
	    )
	    (set #install_proglang 0)
	)

	(P_Completed)

	; 1.1.6. Custom Ask
	(P_CustomAsk)

	(P_Completed)

	; 1.2 Installation process
	; 1.2.1. Install datatype
	(if #install_datatype (
	    ; patched datatype
	    (if (NOT (exists (#dt-file)))
		(
		    (set #file (cat #dt-file ".p"))
		    (if (NOT (exists #file))
			(abort #abort_nodt)
		    )
		    (run (cat #spatch " -o" #dt-file " -p" #file " " (tackon "classes/datatypes" #dt-patchbase)))
		)
	    )

	    (set #file #dt-file)
	    (P_GetVersion)
	    (debug ("File %s -> Version %ld.%ld" #file #ver #rev))

	    (copylib
		    (prompt #prompt_copy_dt)
		    (help @copylib-help)
		    (source #dt-file)
		    (dest (tackon #classdir "Datatypes"))
		    (newname #dt-name)
		    (confirm)
	    )
	))

	(P_Completed)

	; 1.2.2. Install the descriptors
	(if #install_descriptors (
	    (copyfiles
		    (prompt #prompt_copy_descr)
		    (help @copyfiles-help)
		    (source "devs/datatypes")
		    (dest #descdir)
		    (pattern "#?")
		    (infos)
		    (confirm "expert")
	    )

	    ; Tell the system about the new descriptors
	    (run "C:AddDataTypes Refresh")
	))

	(P_Completed)

	; 1.2.3. Install prefs file
	(if #install_env (
	    (if (exists (tackon "envarc/datatypes" (cat #dt-base ".prefs"))) (
		(set #src-dir "envarc/datatypes")
		(set #file (cat #dt-base ".prefs"))
		(set #dest-dir "EnvArc:Datatypes")
		(P_CpFile)
		(set #dest-dir "Env:Datatypes")
		(P_CpFile)
	    ))
	))

	(P_Completed)

	; 1.2.4. Install catalogs
	(if #install_catalogs
	    (
		(set #langmask #install_dt_catalogs)
		(while #langmask
		    (
			(P_BitToLanguage)
			(set #src-dir (cat "Locale/Catalogs/" #lang))
			(set #dest-dir (cat "Locale:Catalogs/" #lang))
			(set #file (cat #dt-base "_" #dt-suffix ".catalog"))
			(P_CpFile)
		    )
		)
	    )
	)

	(P_Completed)

	; 1.2.5. Install documentation
	(
	    ; 1.2.5.1 Install ASCII docs
	    (if #install_asciidocs
		(
		    (set #infos 1)
		    (set #dest-dir #docsdir)
		    (P_MkDirInfo)
		    (set #langmask #install_asciidocs)
		    (while #langmask
			(
			    (P_BitToLanguage)
			    (set #src-dir (cat "Docs/" #lang))
			    (set #file (cat #dt-base "_" #dt-suffix ".doc"))
			    (P_CpFile)
			    (set #docs #dt-more-docs)
			    (while #docs
				(set #doc (fileonly #docs))
				(set #docs (pathonly #docs))
				(set #file (cat #doc ".doc"))
				(P_CpFile)
			    )
			    (set #docs #dt-ascii-docs)
			    (while #docs
				(set #file (fileonly #docs))
				(set #docs (pathonly #docs))
				(P_CpFile)
			    )
			)
		    )
		)
	    )

	    ; 1.2.5.2 Install amigaguide docs
	    (if #install_agdocs
		(
		    (set #infos 1)
		    (set #dest-dir #docsdir)
		    (P_MkDirInfo)
		    (set #langmask #install_agdocs)
		    (while #langmask
			(
			    (P_BitToLanguage)
			    (set #src-dir (cat "Docs/" #lang))
			    (set #file (cat #dt-base "_" #dt-suffix ".guide"))
			    (P_CpFile)
			    (set #docs #dt-more-docs)
			    (while #docs
				(set #doc (fileonly #docs))
				(set #docs (pathonly #docs))
				(set #file (cat #doc ".guide"))
				(P_CpFile)
			    )
			    (set #docs #dt-ascii-docs)
			    (while #docs
				(set #file (fileonly #docs))
				(set #docs (pathonly #docs))
				(P_CpFile)
			    )
			)
		    )
		)
	    )

	    ; 1.2.5.3. Install hyperguide docs
	    (if #install_hgdocs
		(
		    (set #infos 1)
		    (set #dest-dir #docsdir)
		    (P_MkDirInfo)
		    (set #langmask #install_hgdocs)
		    (while #langmask
			(
			    (P_BitToLanguage)
			    (set #src-dir (cat "Docs/" #lang))
			    (set #file (cat #dt-base "_" #dt-suffix ".hguide"))
			    (P_CpFile)
			    (set #docs #dt-more-docs)
			    (while #docs
				(set #doc (fileonly #docs))
				(set #docs (pathonly #docs))
				(set #file (cat #doc ".hguide"))
				(P_CpFile)
			    )
			    (set #docs #dt-ascii-docs)
			    (while #docs
				(set #file (fileonly #docs))
				(set #docs (pathonly #docs))
				(P_CpFile)
			    )
			    ; install HyperGuide macro file
			    (if (AND (> (strlen #dt-hg-macro-file) 0) (exists (tackon #src-dir #dt-hg-macro-file))) (
				(set #file #dt-hg-macro-file)
				(P_CpFile)
			    ))
			    ;
			    (if (exists (tackon (cat "Docs/" #lang) "pics"))
				(
				    (copyfiles
					(prompt #prompt_copy)
					(help @copyfiles-help)
					(source (tackon (cat "Docs/" #lang) "pics"))
					(pattern "#?")
					(dest (tackon #dest-dir "pics"))
					(confirm "expert")
				    )
				)
			    )
			)
		    )
		)
	    )

	    ; 1.2.5.4. Install html docs
	    (if #install_htmldocs
		(
		    (set #infos 1)
		    (set #dest-dir #docsdir)
		    (P_MkDirInfo)
		    (set #langmask #install_htmldocs)
		    (while #langmask
			(
			    (P_BitToLanguage)
			    (set #src-dir (cat "Docs/" #lang))
			    (set #file (cat #dt-base "_" #dt-suffix ".html"))
			    (P_CpFile)
			    (set #docs #dt-more-docs)
			    (while #docs
				(set #doc (fileonly #docs))
				(set #docs (pathonly #docs))
				(set #file (cat #doc ".html"))
				(P_CpFile)
			    )
			    (set #docs #dt-ascii-docs)
			    (while #docs
				(set #file (fileonly #docs))
				(set #docs (pathonly #docs))
				(P_CpFile)
			    )
			)
		    )
		    (if (exists (tackon (cat "Docs/" #lang) "pics"))
			(
			    (copyfiles
				(prompt #prompt_copy)
				(help @copyfiles-help)
				(source (tackon (cat "Docs/" #lang) "pics"))
				(pattern "#?")
				(dest (tackon #dest-dir "pics"))
				(confirm "expert")
			    )
			)
		    )
		)
	    )

	    ; 1.2.5.5. Install none standard distribution documentation
	    (if #chk_user_docs
		(
		    (set #dest-dir #docsdir)
		    (set #src-dir  #dt-doc-dir)
		    (set #file #dt-doc-file)
		    (P_CpFile)
		)
	    )
	)

	(P_Completed)

	; 1.2.6. Install prefs tool
	(if #install_prefs (
	    (copyfiles
		    (help @copyfiles-help)
		    (source (tackon "prefs/datatypes" #dt-prefs))
		    (dest #dt_prefs_dir)
	    )
	))

	(P_Completed)

	; 1.2.7. Install Icons
	(if #install_icons
	    (
		(set #infos 1)
		(set #dest-dir #icondir)
		(P_MkDirInfo)
		(copyfiles
		    (prompt #prompt_copyicons)
		    (help @copyfiles-help)
		    (source (cat #dir "Icons/" #iconpackage "/def_Icons"))
		    (dest #icondir)
		    (pattern "#?.info")
		    (infos)
		    (if (= @user-level 2) (confirm))
		)
	    )
	)

	(P_Completed)

	; 1.2.8. Install arexx scripts
	(if #install_arexx
	    (
		(set #infos 1)
		(set #dest-dir #arexxdir)
		(P_MkDirInfo)
		(set #dest-dir (tackon #arexxdir #dt-type))
		(P_MkDirInfo)
		(copyfiles
		    (prompt #prompt_arexxscripts)
		    (help @copyfiles-help)
		    (source "arexx")
		    (dest (tackon #arexxdir #dt-type))
		    (pattern "#?")
		    (infos)
		    (if (= @user-level 2) (confirm))
		)
	    )
	)

	(P_Completed)

	; 1.2.9. Install examples
	(if #install_examples
	    (
		(set #infos 1)
		(set #dest-dir "Examples")
		(P_MkDirInfo)
		(set #dest-dir (tackon "Examples" #dt-type))
		(P_MkDirInfo)
		(copyfiles
		    (prompt #prompt_copyexamples)
		    (help @copyfiles-help)
		    (source (cat #dir "Examples"))
		    (dest (tackon #defaultdir #dest-dir))
		    (pattern "#?")
		    (infos)
		    (if (= @user-level 2) (confirm))
		)
	    )
	)

	(P_Completed)

	; 1.2.10. Install developer stuff
	(if #install_developer
	    (
		(set #infos 1)
		(set #dest-dir "Developer")
		(P_MkDirInfo)

		; 1.2.10.1.  Install Autodoc
		(if #chk_autodoc
		    (
			(set #dest-dir "Developer/Autodocs")
			(P_MkDirInfo)
			(set #infos 1)
			(set #src-dir #dest-dir)
			(set #dest-dir (tackon #defaultdir #dest-dir))
			(set #file (cat #dt-base "_" #dt-suffix ".doc"))
			(P_CpFile)
		    )
		)
		(if #chk_autodoc_guide
		    (
			(set #dest-dir "Developer/Autodocs")
			(P_MkDirInfo)
			(set #infos 1)
			(set #src-dir #dest-dir)
			(set #dest-dir (tackon #defaultdir #dest-dir))
			(set #file (cat #dt-base "_" #dt-suffix))
			(P_CpFile)
		    )
		)

		(P_Completed)

		(if #chk_fd
		    (
			(set #infos 1)
			(set #dest-dir "Developer/FD")
			(P_MkDirInfo)
			(set #src-dir #dest-dir)
			(set #dest-dir (tackon #defaultdir #dest-dir))
			(set #file (cat #dt-base "dtclass_lib.fd"))
			(P_CpFile)
		    )
		)

		; 1.2.10.2. Install C Language stuff
		(if (IN #install_proglang 0)
		    (
			(set #infos 1)
			(set #dest-dir "Developer/C")
			(P_MkDirInfo)
			(set #infos 0)
			(set #dest-dir "Developer/C/Include")
			(P_MkDirInfo)
			(set #dest-dir "Developer/C/Include/Datatypes")
			(P_MkDirInfo)
			(set #src-dir #dest-dir)
			(set #dest-dir (tackon #defaultdir #dest-dir))
			(set #file (cat #dt-base "class.h"))
			(P_CpFile)
			(if #chk_c_example
			    (
				(set #infos 0)
				(set #dest-dir "Developer/C/Examples")
				(P_MkDirInfo)
				(set #src-dir #dest-dir)
				(set #dest-dir (tackon #defaultdir #dest-dir))
				(set #file (cat #dt-base "-Demo.c"))
				(P_CpFile)
			    )
			)
			(if #chk_c_clib
			    (
				(set #infos 0)
				(set #dest-dir "Developer/C/Include/clib")
				(P_MkDirInfo)
				(set #src-dir #dest-dir)
				(set #dest-dir (tackon #defaultdir #dest-dir))
				(set #file (cat #dt-base "dtclass_protos.h"))
				(P_CpFile)
			    )
			)
			(if #chk_c_pragmas
			    (
				(set #infos 0)
				(set #dest-dir "Developer/C/Include/pragmas")
				(P_MkDirInfo)
				(set #src-dir #dest-dir)
				(set #dest-dir (tackon #defaultdir #dest-dir))
				(set #file (cat #dt-base "dtclass_pragmas.h"))
				(P_CpFile)
			    )
			)
			(if #chk_c_proto
			    (
				(set #infos 0)
				(set #dest-dir "Developer/C/Include/proto")
				(P_MkDirInfo)
				(set #src-dir #dest-dir)
				(set #dest-dir (tackon #defaultdir #dest-dir))
				(set #file (cat #dt-base "dtclass.h"))
				(P_CpFile)
			    )
			)
			(if #chk_c_inline
			    (
				(set #infos 1)
				(set #dest-dir "Developer/C/Include/inline")
				(P_MkDirInfo)
				(set #src-dir #dest-dir)
				(set #dest-dir (tackon #defaultdir #dest-dir))
				(set #file (cat #dt-base "dtclass_inline.h"))
				(P_CpFile)
			    )
			)
		    )
		)

		(P_Completed)

		; 1.2.10.3. Install C++ Language stuff (not supported)

		(P_Completed)

		; 1.2.10.4. Install Asm Language stuff
		(if (IN #install_proglang 2)
		    (
			(set #infos 1)
			(set #dest-dir "Developer/Assembler")
			(P_MkDirInfo)
			(set #infos 0)
			(set #dest-dir "Developer/Assembler/Include")
			(P_MkDirInfo)
			(set #dest-dir "Developer/Assembler/Include/Datatypes")
			(P_MkDirInfo)
			(set #src-dir #dest-dir)
			(set #dest-dir (tackon #defaultdir #dest-dir))
			(set #file (cat #dt-base "class.i"))
			(P_CpFile)
			(if #chk_asm_example
			    (
				(set #dest-dir "Developer/Assembler/Examples")
				(P_MkDirInfo)
				(set #src-dir #dest-dir)
				(set #dest-dir (tackon #defaultdir #dest-dir))
				(set #file (cat #dt-base "-Demo.s"))
				(P_CpFile)
			    )
			)
		    )
		)

		(P_Completed)

		; 1.2.10.5.  Install Amiga-E Language stuff
		(if (IN #install_proglang 3)
		    (
			(set #infos 1)
			(set #dest-dir "Developer/Amiga-E")
			(P_MkDirInfo)
			(set #infos 0)
			(set #dest-dir "Developer/Amiga-E/Modules")
			(P_MkDirInfo)
			(set #dest-dir "Developer/Amiga-E/Modules/Datatypes")
			(P_MkDirInfo)
			(set #src-dir #dest-dir)
			(set #dest-dir (tackon #defaultdir #dest-dir))
			(set #file (cat #dt-base "class.e"))
			(P_CpFile)
			(if #chk_e_example
			    (
				(set #dest-dir "Developer/Amiga-E/Examples")
				(P_MkDirInfo)
				(set #src-dir #dest-dir)
				(set #dest-dir (tackon #defaultdir #dest-dir))
				(set #file (cat #dt-base "-Demo.e"))
				(P_CpFile)
			    )
			)
		    )
		)

		(P_Completed)

		; 1.2.10.6. Install Modula-II Language stuff
		(if (IN #install_proglang 4)
		    (
			(set #infos 1)
			(set #dest-dir "Developer/Modula")
			(P_MkDirInfo)
			(set #dest-dir "Developer/Modula/Datatypes")
			(P_MkDirInfo)
			(set #infos 0)
			(set #src-dir #dest-dir)
			(set #dest-dir (tackon #defaultdir #dest-dir))
			(set #file (cat #dt-base ".def"))
			(P_CpFile)
			(set #file (cat #dt-base ".mod"))
			(P_CpFile)
			(if #chk_modula_demo
			    (
				(set #dest-dir "Developer/Modula/Examples")
				(P_MkDirInfo)
				(set #src-dir #dest-dir)
				(set #dest-dir (tackon #defaultdir #dest-dir))
				(set #file (cat #dt-base "-Demo.mod"))
				(P_CpFile)
			    )
			)
		    )
		)

		(P_Completed)

		; 1.2.10.7. Install Oberon Language stuff
		(if (IN #install_proglang 5)
		    (
			(set #infos 1)
			(set #dest-dir "Developer/Oberon")
			(P_MkDirInfo)
			(set #dest-dir "Developer/Oberon/Datatypes")
			(P_MkDirInfo)
			(set #infos 0)
			(set #src-dir #dest-dir)
			(set #dest-dir (tackon #defaultdir #dest-dir))
			(set #file (cat #dt-base ".mod"))
			(P_CpFile)
			(if #chk_oberon_example
			    (
				(set #dest-dir "Developer/Oberon/Examples")
				(P_MkDirInfo)
				(set #src-dir #dest-dir)
				(set #dest-dir (tackon #defaultdir #dest-dir))
				(set #file (cat #dt-base "-Demo.mod"))
				(P_CpFile)
			    )
			)
		    )
		)
	    )
	)
	(set #completed (- #max_installation_parts 2))
	(P_Completed)

	; 1.2.11. Install custom stuff
	(P_CustomInstall)
	(P_Completed)

	; 1.3 Save installation options selected by the user
	(if #save_user_selections (
	    (set #dest-dir (pathonly (tackon @default-dest #save_user_selections_icon)))
	    (makedir #dest-dir)
	    (if (NOT (exists (cat (tackon @default-dest #save_user_selections_icon) ".info"))) (
		(copyfiles (prompt #prompt_copyicon) (help @help-copyfiles) (source (cat @icon ".info")) (dest #dest-dir) (newname (cat (fileonly #save_user_selections_icon) ".info")))
		(tooltype  (dest (tackon @default-dest #save_user_selections_icon))
		     (setdefaulttool "")
		     (settooltype "APPNAME")
		     (settooltype "NOPRINT")
		     (settooltype "LOG")
		     (settooltype "LOGFILE")
		     (settooltype "DEFUSER")
		     (settooltype "MINUSER")
		)
	    ))
	    (tooltype (dest (tackon @default-dest #save_user_selections_icon))
		      (settooltype "CPU" ("%ld" #cpu_save))
		      (settooltype "IconPackage" (if (> (strlen #iconpackage) 0) ("%s" #iconpackage) ("none")))
		      (settooltype "ClassDir" ("%s" #classdir))
		      (settooltype "DescriptorDir" ("%s" #descdir))
		      (settooltype "ARexxDir" ("%s" #arexxdir))
	    )
	))
	(P_Completed)
    )

    ; 2. Remove TODO!!!
    (
	; Don't want to use the confusing "Installation Complete" message
	; when what we really did was remove things...
	(message #prompt_deinstalled)

	(exit (quiet))

	; Remove the non-standard pieces
	(set #file (tackon (tackon #classdir "datatypes") #dt-name))
	(P_DeleteFile)

	; delete all descriptors
	(run (cat "delete " (tackon #descdir #dt-descrpat)))

	; remove eventual prefs files
	(set #file  (tackon "env:datatypes" #dt-prefs))
	(P_DeleteFile)

	(set #file (tackon "envarc:datatypes" #dt-prefs))
	(P_DeleteFile)

	; TODO check language
	;(set #file (tackon "Locale:Catalogs" (cat #dt-base "_" #dt-suffix ".catalog")))
	;(P_DeleteFile)

	(P_CustomUnInstall)

    )
)

