/* HiP-ARexx-Play
   (c) by Marcel Döring in 1995-1996
*/

IF ~SHOW('LIBRARIES','rexxreqtools.library') THEN DO
   IF ~ADDLIB('rexxreqtools.library',0,-30,0) THEN DO
         SAY 'No tritonrexx.library found !'
         SAY 'Available on Aminet !'
   EXIT(10)
   END
END


Say 'RexxReqTools.library found'

IF ~SHOW('LIBRARIES','tritonrexx.library') THEN DO
   IF ~ADDLIB('tritonrexx.library',10,-30,0) THEN DO
      SAY 'No tritonrexx.library found !'
      SAY 'Available on Aminet !'
      EXIT(10)
   END
END

rtv=TritonRexxVersion()

Say 'TritonRexx.library v. 'rtv' found'

IF ~SHOW('LIBRARIES','rexxtricks.library') THEN DO
   IF ~ADDLIB('rexxtricks.library',2,-30,0) THEN DO
      SAY 'No Rexxtricks.library found !'
      Say 'Available on Aminet !'
      EXIT(10)
    END
END

Say 'RexxTricks.library found'

IF ~SHOW('LIBRARIES','rexxsupport.library') THEN DO
   IF ~ADDLIB('rexxsupport.library',0,-30,0) THEN DO
      SAY 'No Rexxsupport.library available '
      EXIT(10)
    END
END

Say 'RexxSupport.library found'

kick = GETENV('Kickstart')

vewb = GETENV('Workbench')

lang = GETENV('Language')

Hippo='Work:Hippoplayer/HiP'

nohip=0

disbld=0

IF ~SHOWLIST('P','HIPPOPLAYER') THEN
NoHip=1


tv=TritonVersion()

SIGNAL ON break_c
SIGNAL ON failure
SIGNAL ON halt
SIGNAL ON ioerr
SIGNAL ON syntax

minimum = 0
maximum = 64
wert    = 64

bold='1b'x'[1m'

app = TR_CREATEAPP('TRCA_Name     Emergency-Break',
                   'TRCA_LongName "Emergency-Break in scripts with errors"',
                   'TRCA_Info     "Tries to shut everything down.."',
                   'TRCA_Version  1.2',
                   'TRCA_Release  1',
                   'TRCA_Date     8.11.95',
                   'TAG_END')

IF app ~= '00000000'x THEN DO

appname      = 'HiP-ARexx-Play'
applongname  = 'HiP-ARexx-Play - (c)1995 by Marcel Doering'
appinfo      = 'ARexx-Player using Hippoplayer'
appversion   = '2.0'
apprelease   = '2'
appdate      = '11.3.1996'

clipname      = ' HiP-ARexx-Play '
clipinfo      = ' ARexx-Player using Hippoplayer '

app = TR_CREATEAPP('TRCA_Name'     '"'appname'"',
                   'TRCA_LongName' '"'applongname'"',
                   'TRCA_Info'     '"'appinfo'"',
                   'TRCA_Version'  '"'appversion'"',
                   'TRCA_Release'  '"'apprelease'"',
                   'TRCA_Date'     '"'appdate'"',
                   'TAG_END')

IF NoHip=1 THEN
notrunning = rtezrequest('Attention !'||'0a'x||'You have to start HiP if you want to use H.A.P. !','Okay','Attention !','rtez_flags=ezreqf_centertext','rtez_defaultresponse = 0',)
ELSE
NOP

SayVol = FALSE
HelpBool = 0

windowtags =   WindowID(1),
               QuickHelpOn(HelpBool),
               WindowFlags(TRWI_Backfill TRBF_SHINE),
               WindowBackFillFB,
               WindowTitle(appname appversion),
                 BeginMenu("Project"),
                  MenuItem("A_About",10),
                  MenuItem("History",15) ItemBarlabel,
                  MenuItem("I_HiP-Status",11) ItemBarlabel,
                  MenuItem("Y_Iconify",14) ItemBarlabel,
                  MenuItemC("U_QuickHelp",103),
                  MenuItemC("V_Print Volume",110) ItemBarlabel,
                  MenuItem("Q_Quit HiP & H.A.P.",12),
                  BeginMenu('H.A.P. Control'),
                  MenuItem('L_Load & Play',1),
                  MenuItem('D_Add module',7),
                  MenuItem('P_Pause',2),
                  MenuItem('>_Pattern >>',3),
                  MenuItem('<_Pattern <<',4),
                  MenuItem('Z_Zip',5),
                  MenuItem('H_Hide',9),
                  MenuItem('W_Samples Window',8),
                  MenuItem('T_Status...',11),
                  MenuItem('E_Eject',6),
                     NamedFrameBox('Volume'),
                     'VertGroupA',
                     SliderGadget(0,maximum-minimum,wert+minimum,1),
                     'HorizGroupA',
                     'Space',
                     'VertGroupA',
                        'SpaceS',
                        Button("Start HiP !",13) QuickHelp('Start HiP, using defined path'),
                        Button("Load & Play",1) QuickHelp('Load & Play a module'),
                        Button("Add module",7) QuickHelp('Add an module to the Mod-List of HiP'),
                        Button("Pause",2) QuickHelp('Pause the module HiP is playing'),
                        Button("Pattern >>",3) QuickHelp('Jump pattern forward of module'),
                        Button("Pattern <<",4) QuickHelp('Jump pattern reverse of module'),
                        Button("Zip",5) QuickHelp('Zip HiP-window'),
                       'EndGroup',
                       'VertGroupA',
                       'SpaceS',
                        Button("Hide",9) QuickHelp('Hide HiP-window'),
                        Button("Samples Window",8) QuickHelp('Open samples window of HiP'),
                        Button("Status...",11) QuickHelp('Get some informations'),
                        Button("Eject",6) QuickHelp('Eject playing module'),
                        Button("Quit HiP & H.A.P.",12) QuickHelp('Quit Hippoplayer & HiP-ARexx-Play'),
                        Button("Iconify H.A.P.",14) QuickHelp('Iconify HiP-ARexx-Play'),
                        Button("About...",10) QuickHelp('Guess what...'),
                       'EndGroup',
                       'Space',
                     'EndGroup',
                    'Space',
                   'EndGroup',
                   'Space',
                 'EndProject'

app = TR_CREATEAPP('TRCA_Name Button')

IF app ~= '00000000'x THEN DO

   window = TR_OPENPROJECT(app,windowtags)

   IF window ~= '00000000'x THEN DO
      ende = 0

      if nohip=1 then
        if disbld=0 then
        call dagads

      DO WHILE ende ~= 1
         CALL TR_WAIT(app,'')

         DO WHILE TR_HANDLEMSG(app,'event')
           IF event.trm_class = 'TRMS_NEWVALUE' THEN DO
             SELECT
              WHEN event.trm_id = 1 THEN DO
              IF SayVol = TRUE THEN
              SAY 'Volume:' event.trm_data

              ADDRESS 'HIPPOPLAYER'
              VOLUME event.trm_data

              CALL TR_SETATTRIBUTE(window,2,'TRAT_Text',event.trm_data)
              END

              WHEN event.trm_id = 103 THEN DO
              nummer = TR_GETATTRIBUTE(window,103,'TRAT_VALUE')
              CALL TR_SETATTRIBUTE(window,0,'TRWI_QuickHelp',nummer)
              END

              WHEN event.trm_id = 110 THEN DO
              number = TR_GETATTRIBUTE(window,110,'TRAT_VALUE')
              IF number = 1 THEN
              call enablepvol

              IF number = 0 THEN
              call disablepvol
              END

             OTHERWISE
             NOP
            END
           END

            IF event.trm_class = 'TRMS_ACTION' THEN DO
               SELECT
                  WHEN event.trm_id = 1 THEN
                     call playfile

                  WHEN event.trm_id = 2 THEN
                      call pause

                  WHEN event.trm_id = 3 THEN
                      call fwd

                  WHEN event.trm_id = 4 THEN
                      call rwd

                  WHEN event.trm_id = 5 THEN
                      call zip

                  WHEN event.trm_id = 6 THEN
                      call eject

                  WHEN event.trm_id = 7 THEN
                      call add

                  WHEN event.trm_id = 8 THEN
                      call sampwind

                  WHEN event.trm_id = 9 THEN
                      call hide

                  WHEN event.trm_id = 10 THEN
                      call about

                  WHEN event.trm_id = 11 THEN
                      call getinfos

                  WHEN event.trm_id = 12 THEN
                      call quit

                  WHEN event.trm_id = 13 THEN
                      call starthip

                  WHEN event.trm_id = 14 THEN
                      call iconify

                  WHEN event.trm_id = 15 THEN
                      call historee

                  OTHERWISE
                     NOP
               END
            END

          IF event.trm_class = 'TRMS_CLOSEWINDOW' THEN
             IF Iconified~=YO THEN
              ende = 1
             ELSE
              CALL UnIconify
         END
      END

     CALL TR_CLOSEPROJECT(window)
   END
   CALL TR_DELETEAPP(app)
   call cleanup
   EXIT
END

playfile:
mainwindow    = '00000000'x
ModFile = rtfilerequest('SYS:',,'Please choose a Module...',,'')
Say ModFile
  IF ModFile='' THEN
  RETURN
ADDRESS 'HIPPOPLAYER'
PLAY ModFile
RETURN

FWD:
ADDRESS 'HIPPOPLAYER'
FFWD
RETURN

RWD:
ADDRESS 'HIPPOPLAYER'
REW
RETURN

PAUSE:
Dummy=No
IF Dummy=No THEN DO
    If STAT=YO THEN DO
         ADDRESS 'HIPPOPLAYER'
         'CONT'
       STAT=NO
    RETURN
END

ADDRESS 'HIPPOPLAYER'
'STOP'
STAT=YO
RETURN
END

Zip:
Dummy2=No
IF Dummy2=No THEN DO
    IF STAT2=YO THEN DO
         ADDRESS 'HIPPOPLAYER'
         'ZIP 1'
       STAT2=NO
    RETURN
END

ADDRESS 'HIPPOPLAYER'
'ZIP 0'
STAT2=YO
RETURN
END

Eject:
ADDRESS 'HIPPOPLAYER'
'EJECT'
RETURN
END

Add:
if ende ~= 1 THEN DO
mainwindow    = '00000000'x
AddFile = rtfilerequest('SYS:',,'Please choose a Module...',,'')
  If AddFile='' THEN
  RETURN
ADDRESS 'HIPPOPLAYER'
ADD AddFile
RETURN

Quit:
ADDRESS 'HIPPOPLAYER'
'QUIT'
CALL TR_DELETEAPP(app)
call cleanup
EXIT

sampwind:
ADDRESS 'HIPPOPLAYER'
Samples
RETURN
END

hide:
Dummy3=No
IF Dummy3=No THEN DO
    IF STAT3=YO THEN DO
         ADDRESS 'HIPPOPLAYER'
         'HIDE 1'
       STAT3=NO
    RETURN
END

ADDRESS 'HIPPOPLAYER'
'HIDE 0'
STAT3=YO
RETURN
END
EXIT

about:
   CALL TR_AUTOREQUEST(app,window,PubScreenName('workbench'),
         BeginRequester('About HiP-ARexx-Play (c) by Marcel Doering','TRWP_CENTERDISPLAY'),
            'VertGroupA',
               'Space',
               'HorizSeparator',
               'Space',
               NamedSeparator('HiP-ARexx-Play'),
               'Space',
               CenteredText('Public Domain'),
               'Space',
               CenteredText('Version:'appversion),
               'Space',
               CenteredText('Date of Release:'appdate),
               'Space',
               CenteredText('(c) by Marcel Doering `95'),
               'Space',
               CenteredText('Contact me:'),
               'Space',
               CenteredText('DonDoringo@GURU.rhein-main.de'),
               'Space',
               'HorizSeparator',
               'Space',
               NamedSeparator('Libraries:'),
               'Space',
               CenteredText('Using Tritonrexx.library v.' rtv '(c) by Juergen Kohrmeyer.'),
               'Space',
               CenteredText('Using Triton.library v.' tv '(c) by Stefan Zeiger.'),
               'Space',
               CenteredText('Using RexxTricks.library (c) by Juergen Kohrmeyer.'),
               'Space',
               CenteredText('Using RexxSysLib, RexxReqTools & Rexxsupport.library'),
               'Space',
               'HorizSeparator',
               'Space',
            'EndGroup',
            'BeginRequesterGads',
            CenteredButtonRE('Okay',10000),
         'EndRequester')

   CALL TR_AUTOREQUEST(app,window,PubScreenName('workbench'),
         BeginRequester('About TriTon','TRWP_CENTERDISPLAY'),
            'VertGroupA',
               'Space',
               'HorizSeparator',
               'Space',
               NamedSeparator('About TriTon:'),
               'Space',
               CenteredText('This application uses the Triton GUI creation system (c) by Stefan Zeiger'),
               'Space',
               'HorizSeparator',
               'Space',
               CenteredText('**********************************************'),
               'Space',
               'Space',
               CenteredText('Triton'),
               'Space',
               'Space',
               CenteredText('An object oriented GUI creation system.'),
               'Space',
               'Space',
               CenteredText('Release 1.3'),
               'Space',
               'Space',
               CenteredText('(c) 1993-1995 Stefan Zeiger'),
               'Space',
               'Space',
               CenteredText('**********************************************'),
               'Space',
               'HorizSeparator',
               'Space',
            'EndGroup',
            'BeginRequesterGads',
            CenteredButtonRE('Important',10000),
         'EndRequester')
 RETURN

NotInit:
CALL TR_EASYREQUEST(app,'ATTENTION !'||'0a'x||'HippoPlayer is not running,'||'0a'x||'You can start it from HiP-ARexx-Play or directly, but'||'0a'x||'Don`t use HiP-ARexx-Play`s other functions without HiP running !','I`ll do that','TREZ_LockProject' C2D(window) 'TAG_END')
RETURN
END

GetInfos:
options results

address 'HIPPOPLAYER'
get play
if result == 1 then do
play = "  HiP is playing  "
end
else do
play = " HiP is not playing  "
end

get name
NAME = "  Loaded module: " result "  "

get fnam
FNAM = "  Full name of the loaded module: " result "  "

get type
TYPE = "  Type of the loaded module: " result "  "

get size
SIZE = "  Size of the loaded module: " result "  "

get comm
COMM = "  Filecomment for the loaded module: " result "  "

get curr
CURR = "  Number of the loaded module: " result "  "

get csng
CSNG = "  Current song: "result "  "

get nsng
NSNG = "  Number of songs: " result "  "

get cspo
CSPO = "  Current songposition: " result "  "

get mspo
MSPO = "  Maximum songposition: " result "  "

get cfil
CFIL = "  Chosen file number: " result "  "

get cnam
CNAM = "  Chosen file name: " result "  "

get nfil
NFIL = "  Files in list: " result "  "

get dura
IF result == 0 then do
DURT = "  Duration not available  "  "  "
END
ELSE DO
DURT = "  Duration: " result "  "
END

KIKK = "  Kickstart-version: " KICK "  "

WBVE = "  Workbench-version: " VEWB "  "

CITY = "  System-language: " LANG "  "

Parse Version arexx version cpu mpu video freq

REXV = "  ARexx version: " arexx version "  "

CPUV = "  CPU: " cpu "  "

FPUV = "  FPU: " mpu "  "

VIDV = "  Videomode:>> " video "  "

FRQV = "  VBL frequency: " freq "  "

   CALL TR_AUTOREQUEST(app,window,PubScreenName('workbench'),
         BeginRequester('HiP-Status','TRWP_CENTERDISPLAY'),
            'VertGroupA',
               'Space',
               NamedSeparator('HiP-Status'),
               'Space',
               CenteredText(PLAY),
               'SpaceS',
               TextN(NAME),
               'SpaceS',
               TextN(FNAM),
               'SpaceS',
               TextN(TYPE),
               'SpaceS',
               TextN(DURT),
               'SpaceS',
               TextN(SIZE),
               'SpaceS',
               TextN(COMM),
               'SpaceS',
               TextN(CURR),
               'SpaceS',
               TextN(CSNG),
               'SpaceS',
               TextN(NSNG),
               'SpaceS',
               TextN(CSPO),
               'SpaceS',
               TextN(MSPO),
               'SpaceS',
               TextN(CFIL),
               'SpaceS',
               TextN(NFIL),
               'SpaceS',
               TextN(CNAM),
               'Space',
            'EndGroup',
            'BeginRequesterGads',
            CenteredButtonRE('Great!',10000),
         'EndRequester')

   CALL TR_AUTOREQUEST(app,window,PubScreenName('workbench'),
         BeginRequester('Status','TRWP_CENTERDISPLAY'),
            'VertGroupA',
               'Space',
               NamedSeparator('Status'),
               'Space',
               'HorizSeparator',
               'Space',
               TextN(KIKK),
               'SpaceS',
               TextN(WBVE),
               'SpaceS',
               TextN(CITY),
               'SpaceS',
               TextN(REXV),
               'SpaceS',
               TextN(CPUV),
               'SpaceS',
               TextN(FPUV),
               'SpaceS',
               TextN(VIDV),
               'SpaceS',
               TextN(FRQV),
               'Space',
               'HorizSeparator',
               'Space',
               NamedSeparator('Status'),
               'Space',
            'EndGroup',
            'BeginRequesterGads',
            CenteredButtonRE('Okay',10000),
         'EndRequester')

DROP PLAY NAME FNAM TYPE SIZE COMM PR0T CURR CSNG NSNG CSPO MSPO CFIL NFIL CNAM KIKK WBVE CITY DURA DURT
RETURN

starthip:
Say 'Hippopath is:' Hippo
if ~exists(hippo) then do
notthere=rtezrequest('Couldn`t find HippoPlayer as 'hippo','||'0a'x||' edit the script at line 53 to enter your path !','Ups..','Couldn`t start HiP !','rtez_flags=ezreqf_centertext','rtez_defaultresponse = 0',)
return
end
Say 'Trying to start HiP...'
ADDRESS COMMAND Hippo
delay(50)
note = rtezrequest('Due to some unfixable problems, '||'0a'x||'HiP should be started before H.A.P. !'||'0a'x||'Otherwise some functions, especially the status-req'||'0a'x||'might not work properly !'||'0a'x||'Though you can try it..:)','Hmm..','Please Note !','rtez_flags=ezreqf_centertext','rtez_defaultresponse = 0',)
IF SHOWLIST('P','HIPPOPLAYER') THEN
call engads
else
notthere=rtezrequest('Couldn`t find HippoPlayer`s ARexx-Port.,'||'0a'x||'I`ve no idea, why this happens.','?!?','Couldn`t find HiP-Port !','rtez_flags=ezreqf_centertext','rtez_defaultresponse = 0',)
RETURN
END

e-break:
CALL TR_DELETEAPP(app)
END
EXIT(0)

iconify:
dummywindow = TR_OPENPROJECT(app,WindowID(1000) WindowTitle('H.A.P. (c) by Marcel Doering `95-`96  iconified') PubScreenName('workbench') 'EndProject')

IF dummywindow ~= '00000000'x THEN DO
   CALL TR_CLOSEPROJECT(window)
   Iconified=YO
END
ELSE
CALL TR_EASYREQUEST(app,'ATTENTION !'||'0a'x||'Couldn`t iconify H.A.P. !'||'0a'x||'Version:'appversion,'_Oops','TREZ_Title "Error !"' 'TREZ_LockProject' C2D(window) 'TAG_END')
RETURN

uniconify:
CALL TR_CLOSEPROJECT(dummywindow)
dummywindow = '00000000'x
window = TR_OPENPROJECT(app,windowtags)

IF window = '00000000'x THEN
quit('Error! Couldn`t open window !!',10)

   Iconified=NO
RETURN

historee:
   CALL TR_AUTOREQUEST(app,window,PubScreenName('workbench'),
         BeginRequester('HiP-ARexx-Play - History','TRWP_CENTERDISPLAY'),
            'VertGroupA',
               'Space',
               'HorizSeparator',
               'Space',
               NamedSeparator('Version 2.0'),
               'Space',
               TextN(' ˇ Splitted the buttons into two banks,'),
               TextN('   looks better now and also works on  '),
               TextN('   very small screenheights.'),
               TextN(''),
               TextN(' ˇ If HiP is not started, all buttons and '),
               TextN('   the menu will stay disabled till you start '),
               TextN('   HiP. (from H.A.P. !)'),
               TextN(''),
               TextN(' ˇ Added a funtion to check if HiP started '),
               TextN('   correctly, if not, the buttons will stay '),
               TextN('   disabled. '),
               'Space',
               'HorizSeparator',
               'Space',
            'EndGroup',
            'BeginRequesterGads',
            CenteredButtonRE('Gee..',10000),
         'EndRequester')
RETURN

/***************IS GOING TO BE IMPLEMENTED !*******************************

openlocale:
uselocale = TRUE

IF ~SHOW('LIBRARIES','locale.library') THEN
   IF ~ADDLIB('locale.library',-10,-30,0) THEN
      uselocale = FALSE

IF ~loadrexx(progdir,'HiP-ARexx-Play.strings','') THEN
   quit('Error reading file "HiP-ARexx-Play.strings"!'),10)

IF uselocale THEN DO
   catalogfile = 'catalogs/deutsch/HAP.catalog'

   IF RIGHT(progdir,1) = ':' THEN
      catalog = OPENCATALOG(progdir||'catalogs/deutsch/HAP.catalog','deutsch',0)
   ELSE
      catalog = OPENCATALOG(progdir||'/catalogs/deutsch/HAP.catalog','deutsch',0)

   IF catalog = 0 THEN
      catalog = OPENCATALOG('HAP.catalog','deutsch',0)
END
RETURN

***************************************************************************/

dagads:
disbld=1
CALL TR_SETATTRIBUTE(window,1,'TRAT_Disabled',1)
CALL TR_SETATTRIBUTE(window,2,'TRAT_Disabled',1)
CALL TR_SETATTRIBUTE(window,3,'TRAT_Disabled',1)
CALL TR_SETATTRIBUTE(window,4,'TRAT_Disabled',1)
CALL TR_SETATTRIBUTE(window,5,'TRAT_Disabled',1)
CALL TR_SETATTRIBUTE(window,6,'TRAT_Disabled',1)
CALL TR_SETATTRIBUTE(window,7,'TRAT_Disabled',1)
CALL TR_SETATTRIBUTE(window,8,'TRAT_Disabled',1)
CALL TR_SETATTRIBUTE(window,9,'TRAT_Disabled',1)
CALL TR_SETATTRIBUTE(window,11,'TRAT_Disabled',1)
CALL TR_SETATTRIBUTE(window,12,'TRAT_Disabled',1)
CALL TR_SETATTRIBUTE(window,10,'TRAT_Disabled',1)
CALL TR_SETATTRIBUTE(window,14,'TRAT_Disabled',1)
RETURN

engads:
disbld=0
CALL TR_SETATTRIBUTE(window,1,'TRAT_Disabled',0)
CALL TR_SETATTRIBUTE(window,2,'TRAT_Disabled',0)
CALL TR_SETATTRIBUTE(window,3,'TRAT_Disabled',0)
CALL TR_SETATTRIBUTE(window,4,'TRAT_Disabled',0)
CALL TR_SETATTRIBUTE(window,5,'TRAT_Disabled',0)
CALL TR_SETATTRIBUTE(window,6,'TRAT_Disabled',0)
CALL TR_SETATTRIBUTE(window,7,'TRAT_Disabled',0)
CALL TR_SETATTRIBUTE(window,8,'TRAT_Disabled',0)
CALL TR_SETATTRIBUTE(window,9,'TRAT_Disabled',0)
CALL TR_SETATTRIBUTE(window,11,'TRAT_Disabled',0)
CALL TR_SETATTRIBUTE(window,12,'TRAT_Disabled',0)
CALL TR_SETATTRIBUTE(window,10,'TRAT_Disabled',0)
CALL TR_SETATTRIBUTE(window,14,'TRAT_Disabled',0)
RETURN

CheckHipPorts:
IF ~ShowList('P','HIPPOPLAYER') THEN
CALL DAGADS
RETURN
END

enablepvol:
SayVol = TRUE
RETURN

disablepvol:
SayVol = FALSE
RETURN

break_c:
failure:
halt:
ioerr:
syntax:
SAY '+++ Error!' rc 'in Line' sigl '-' ERRORTEXT(rc)
Say 'Trying to close complete script...'
SAY SOURCELINE(sigl)
IF app ~= '00000000'x THEN
CALL TR_DELETEAPP(app)

EXIT(10)

cleanup:
/*remlib('rexxreqtools.library')
remlib('tritonrexx.library')
remlib('rexxtricks.library')
remlib('rexxsupport.library')
*/
return

/* Following lines are just storage for me */
Store:
/*                        'SpaceS',
                        NamedFrameBox('ShortInfo'),
                        'TROB_FrameBox TRFB_Text',
                        'VertGroupA',
                        'SpaceS',
                         ClippedTextID(clipname appversion,2),
                         ClippedTextID(clipinfo,22),
                        'Space EndGroup',
*/
