/*
     REXX :

     Erzeuge TY.CMD WPS Object und Zuordnung zu einigen Dateiarten
     create  TY.CMD WPS objekt and association with some filetypes
                                                                            */

Call rxfuncadd sysloadfuncs, rexxutil, sysloadfuncs
Call sysloadfuncs
Call SysCls

/* Sprache */
if Translate(Substr(VALUE('LANG',,'OS2ENVIRONMENT'),1,2))=='DE' then
  Sprache='D'
else
  Sprache='E'

/* suche TY.CMD */

TY_CMD = 'TY.CMD'

SUCHE_TY_CMD:

CMD_NAME = SysSearchPath( 'PATH', TY_CMD )

BATCHUNP_CMD = SysSearchPath( 'PATH', 'BATCHUNP.CMD' )

TEMPDIR = Value('TEMP',,'OS2ENVIRONMENT')
if TEMPDIR == '' then
  TEMPDIR = Value('TMP',,'OS2ENVIRONMENT')


IF CMD_NAME == '' then
  do
    IF Sprache=='D' then Say TY_CMD' nicht gefunden * Bitte vorher TYPEIN2.EXE starten'
    IF Sprache=='E' then Say TY_CMD' not found * please run TYPEIN2.EXE before'
    Pull Taste
    TYPEIN2.EXE
    Goto SUCHE_TY_CMD
  end

IF Sprache=='D' then Say TY_CMD' als 'CMD_NAME' gefunden.'
IF Sprache=='E' then Say 'found 'TY_CMD' as 'CMD_NAME'.'
Say ''

/* ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ */

Say ''
Say ''
Say '  ŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪ'
Say '  ŪŪ                                         ŪŪ'
IF Sprache=='D' then Say '  ŪŪ    Erzeuge Erweiterte Attribute ...     ŪŪ'
IF Sprache=='E' then Say '  ŪŪ    Creating Extended Attributes ...     ŪŪ'
Say '  ŪŪ                                         ŪŪ'
Say '  ŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪ'
Say ''

'@EAUTIL TYP2.EXE TYP2.EA /J /O /P'
'@EAUTIL 'CMD_NAME' TYP2.EA /J /O /P'
'@EAUTIL BATCHUNP.CMD BATCHUNP.EA /J /O /P'

Say ''
Say ''
Say '  ŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪ'
Say '  ŪŪ                                         ŪŪ'
IF Sprache=='D' then Say '  ŪŪ    Erzeuge WPS Objekt fr 'TY_CMD' ...    ŪŪ'
IF Sprache=='E' then Say '  ŪŪ    Create WPS object for 'TY_CMD' ...     ŪŪ'
Say '  ŪŪ                                         ŪŪ'
Say '  ŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪŪ'
Say ''


TITEL = 'Typ'
OID = '<WP_DESKTOP>'

PRGPARA = 'EXENAME='CMD_NAME';PROGTYPE=PROG_WINDOWABLEVIO;STARTUPDIR='||TEMPDIR||';PARAMETERS=/P- /M- /A-;ASSOCTYPE=zz_any_type_file,Executable;ASSOCFILTER=;OBJECTID=<TYP_CMD>;'

Fehler = SysCreateObject('WPProgram',TITEL,OID,PRGPARA,'Replace')

IF Fehler = 0 then
  DO
    IF Sprache=='D' then Say '         Fehler aufgetreten !'
    IF Sprache=='E' then Say '            error occured !'
    Exit 1
  END

Fehler = SysCreateObject('WPProgram','Batch unpacker','<WP_DESKTOP>','EXENAME='||BATCHUNP_CMD||';PROGTYPE=PROG_WINDOWABLEVIO;STARTUPDIR='||TEMPDIR||';NOAUTOCLOSE=YES;OBJECTID=<BATCHUNP_CMD>;','Replace')



IF Sprache=='D' then Say 'Bitte whlen Sie die Erweiterungen aus, denen TYP zugeordnet werden soll.'
IF Sprache=='E' then Say 'Please select file file extensions to associate with TYP.'
                      Say ''
IF Sprache=='D' then Say '1 alle Masken'
IF Sprache=='E' then Say '1 all masks'
IF Sprache=='D' then Say '2 Benutzerdefiniert'
IF Sprache=='E' then Say '2 user selection'
IF Sprache=='D' then Say '3 keine Masken'
IF Sprache=='E' then Say '3 no masks'

Say ''
Say '1/2/3 ?'

confirm=0
do until confirm=='1'|confirm=='2'|confirm=='3'
  confirm=SysGetKey('NOECHO')
end

Say confirm


if confirm=='2' then IF Sprache=='D' then Say 'Antworten Sie jeweils mit j,n oder a fr Ja/Nein/Abbruch.'
if confirm=='2' then IF Sprache=='E' then Say 'Answer with y,n or a for Yes/No/Abort.'

/* be nice, do not associate with conflicting "better" file types (XWP) */
Negativ_Liste=''
Call SysIni 'USER','XWorkplace:FileFilters','ALL:','Negativ_Stamm'
if Result\=='ERROR:' then
  do j=1 to Negativ_Stamm.0
    if Negativ_Stamm.j\=='zz_any_type_file' then Negativ_Liste=Negativ_Liste||SysIni('USER','XWorkplace:FileFilters',Negativ_Stamm.j)
  end

Drop Negativ_Stamm.
Drop Negativ_Stamm

/* ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ please edit  Bitte editieren ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ */

if confirm=='2' then IF Sprache=='D' then Say 'ž Archive ...'
if confirm=='2' then IF Sprache=='E' then Say 'ž Archiver ...'
Call Frage '*.ARJ,*.A0?,*.A1?,*.ZIP,*.RAR,*.R0?,*.RTP,*.ACE,*.C0?,*.C1?'
Call Frage '*.TAR,*.JAR,*.RTP,*.LZH,*.ICE,*.ZOO,*.Z,*.GZ,*.BZ,*.BSN'
Call Frage '*._??,*.??_,*.@,*.PKG,BUNDLE*.,REQUIRED,PACK*.,*.PK2'
Call Frage '*.MSI,*.MST,*.HYP,*.CPZ,*.SQZ,*.EXX,*.CAR,*.WPI,*.SIT,*.PAK'
Call Frage '*.BSA,*.BSN,*.CPIO,*.SFX'
Call Frage '*.CAB,*.HDR'
Call Frage '*.ADF,*.D64'

if confirm=='2' then IF Sprache=='D' then Say 'ž Programmdateien ...'
if confirm=='2' then IF Sprache=='E' then Say 'ž Executables ...'
Call Frage '*.EXE,*.DLL,*.COM,*.CMD,*.BAT,*.OVL,*.OVR,*.PRG,*.,*.GEO'
Call Frage '*.ADD,*.SYS,*.SNP,*.IFS,*.FLT,*.DRV,*.PDR,*.DEV,*.OPT,*.DMD'
Call Frage '*.OS2,*.DOS,OS2BOOT.*,OS2KRNL*'
Call Frage '*.BGI,*.CHR,*.OBJ,*.LIB,*.VPI,*.DEB,*.CUP'
Call Frage '*.BIN,*.BIO,*.AWD,*.ROM'
Call Frage '*.NE,*.LE,*.LX,*.PE'
Call Frage '*.BPD,*.ELF'

if confirm=='2' then IF Sprache=='D' then Say 'ž Daten ...'
if confirm=='2' then IF Sprache=='E' then Say 'ž Data ...'
Call Frage '*.DAT,*.DB,CONTROL.*,BACKUP.*'
Call Frage '*.EA,*.EAS,*.INI'
Call Frage '*.CSF,*.XDF,*.144,*.DSK,*.SEK,*.PAR,*.0??'
Call Frage '*.FON,*.TTF,*.FNT'
Call Frage 'SYSLEVEL.*'
Call Frage '*.PGP'
Call Frage '*.TMP,*.CHK,*._DD,*.REC'
Call Frage '*.AVC'
Call Frage '*.TRK,*.ISO,*.VHD,*.VFD,*.IMG,*.VCP'
Call Frage '*.RES'
Call Frage '*.AWD,*.ROM'
Call Frage '*.SAV,*.BAK,*.SIK'
Call Frage 'COUNTRY.SYS,*.DCP,*.CPI'

if confirm=='2' then IF Sprache=='D' then Say 'ž Textdateien ...'
if confirm=='2' then IF Sprache=='E' then Say 'ž Text files ...'
Call Frage '*.TXT,*.DIZ,*.ICF,*.DSC,*.DDP,*.DSP,*.ANS,*.MSG'
Call Frage '*.HLP,*.INF'

if confirm=='2' then IF Sprache=='D' then Say 'ž Klangdateien ...'
if confirm=='2' then IF Sprache=='E' then Say 'ž Sound files ...'
Call Frage '*.MOD,*.STM,*.S3M,*.XM,*.IT,*.FAR,*.WAV,*.VOC,*.AU,*.MP3,*.OGG'

if confirm=='2' then IF Sprache=='D' then Say 'ž Grafikdateien'
if confirm=='2' then IF Sprache=='E' then Say 'ž Graphic files'
Call Frage '*.TGA,*.TIF,*.TIFF,*.BMP,*.PCX,*.GIF,*.JPG,*.JPEG,*.PNG,*.LBM,*.IMG,*.LGO'
Call Frage '*.PTR,*.ICO,*.CUR'

Exit 0

/* ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ */

Frage:
    ARG Dateimasken

    if confirm=='1' then Taste='J'
    if confirm=='2' then Taste='?'
    if confirm=='3' then Taste='N'

    if Taste=='?' then
      do
        Say '  "'Dateimasken'"'
        do /*until Taste=='J'|Taste=='N' */
          Taste=Translate(SysGetKey('NOECHO'))

          if Taste=='X'|Taste=='A'|Taste==D2C(27) then
            do
              IF Sprache=='D' then Say 'Abbruch.'
              IF Sprache=='E' then Say 'Abort.'
              Exit 1
            end

          if Taste=='Y'|Taste==D2C(13)|Taste==' ' then Taste='J'

        end
      end

    if Taste=='N' then Return 2

/*    Fehler = SysCreateObject('WPProgram',TITEL,OID,'ASSOCFILTER='Dateimasken';','U')*/

    if Fehler = 0 then
      do
        if Sprache=='D' then Say '         Fehler aufgetreten !'
        if Sprache=='E' then Say '            error occured !'
        Exit 1
      end


    Dateimasken0=Translate(Dateimasken,D2C(0),',')||D2C(0)

    zz_any_type_file=SysIni('USER','XWorkplace:FileFilters','zz_any_type_file')
    if zz_any_type_file=='ERROR:' then
      zz_any_type_file=''

    do while Dateimasken\==''
      Parse Value Dateimasken with EinzelMaske "," Dateimasken
      Say "X:" EinzelMaske
      EinzelMaske=EinzelMaske||D2C(0)
      if Pos(EinzelMaske,zz_any_type_file)==0 then
        if Pos(EinzelMaske,Negativ_Liste)==0 then
          zz_any_type_file=zz_any_type_file||EinzelMaske
      if EinzelMaske=='*.MOD'||D2C(0) then 
        do
          say Negativ_Liste
          say Pos(EinzelMaske,zz_any_type_file)
          say zz_any_type_file
          pull key
        end
    end

    /*call Sysini 'USER','XWorkplace:FileFilters','zz_any_type_file',zz_any_type_file*/


    Return 0


/* ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄSYS2006ÄÄÄ */

