home *** CD-ROM | disk | FTP | other *** search
Text File | 1999-09-28 | 48.8 KB | 1,948 lines |
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- EasyPlayer, EYP, Ralph Debusmann 1997-9
- */
-
- OPT LARGE
- OPT OSVERSION=37
-
- MODULE 'tools/EasyGUI',
- 'devices/inputevent',
- 'dos/dos','dos/dostags',
- 'exec/memory','exec/tasks',
- 'gadtools','libraries/gadtools',
- 'intuition/intuition','intuition/intuitionbase',
- 'utility/tagitem',
- 'workbench/startup',
- 'afc/Reqtooller',
- '*modules/plugins/multitext','*modules/plugins/dclistview',
- '*modules/plugins/vanilla','*modules/plugins/rawkey',
- '*modules/listv','*modules/randomlist','*modules/reqs',
- '*modules/strings','*modules/time','*modules/vbsig',
- '*easyconst','*easyfile','*easyimages',
- '*easyinterface','*easyplaylist',
- '*easyrecognize','*easystructs'
-
- CONST FILEHEADER=5,VERSION=1,
- INVGUI=0,RECOGGUI=1,
- TAB=9,CR=13,ESCAPE=27,SPACEBAR=32,DEL=127,
- ATOZ=FALSE,ZTOA=TRUE,
- RTOPENLIB=$A0002
-
- DEF ver,
- rt:PTR TO reqtooller,ti:PTR TO time,vb:PTR TO vbsig,
- plst:PTR TO playlist,
- plstgad:PTR TO dclistview,
- images:PTR TO mainimages,
- menu,mh=NIL,ghmain:PTR TO guihandle,
- prevmodgad,playgad,nextmodgad,songnumgad,stopgad,ejectgad,
- mainx=-1,mainy=-1,mainxs=-1,mainys=-1,
- debug=FALSE,
- int:PTR TO interface,
- maintitle[42]:STRING,hours,mins,secs,ticker=FALSE, -> 42 > INTERFACE (20) + 5 + approx 5 + x
- modnum,nummods, -> modnum = module playing at the very moment
- modfilename[FULL]:STRING,plstfilename[FULL]:STRING,
- -> prefs
- ghprefs:PTR TO guihandle,prefschange,
- prefsmulti:PTR TO multitext_plugin,
- prefsfilereqimage1:PTR TO filereqimage,prefsfilereqimage2:PTR TO filereqimage,
- prefsvan:PTR TO vanilla,
- modpathgad,plstpathgad,
- modpath[FULL]:STRING,modpath2[FULL]:STRING,
- plstpath[FULL]:STRING,plstpath2[FULL]:STRING,
- prefsfilename[FULL]:STRING,
- -> ints
- ghints:PTR TO guihandle,intlist:PTR TO listv,
- intsmulti:PTR TO multitext_plugin,intsgad:PTR TO dclistview,
- intsvan:PTR TO vanilla,intsraw:PTR TO rawkey,
- upintsgad,firstintgad,downintsgad,lastintgad,sortintsgadatoz,sortintsgadztoa,
- editintgad,copyintgad,toggleintgad,delintgad,clearintsgad,
- intinfo:PTR TO interfaceinfo,intinfo2:PTR TO interfaceinfo,
- numints=0,numintst=0,
- intschange,
- intsfilename[FULL]:STRING,
- -> int
- ghint:PTR TO LONG,intgui:PTR TO LONG,intindex:PTR TO LONG,
- intnamegad:PTR TO LONG,prognamegad:PTR TO LONG,
- songarggad:PTR TO LONG,helparggad:PTR TO LONG,progargsgad:PTR TO LONG,consolegad:PTR TO LONG,
- headergad:PTR TO LONG,headeroffgad:PTR TO LONG,patterngad:PTR TO LONG,numoffgad:PTR TO LONG,
- numlengad:PTR TO LONG,numaddgad:PTR TO LONG,songsoffgad:PTR TO LONG,songslengad:PTR TO LONG,
- songsaddgad:PTR TO LONG,
- intvan:PTR TO LONG,intfilereqimage:PTR TO LONG,
- intinfo3:PTR TO interfaceinfo,intchangelist:PTR TO LONG,
- intname:PTR TO LONG,progname:PTR TO LONG,progargs:PTR TO LONG,console:PTR TO LONG,
- songarg:PTR TO LONG,helparg:PTR TO LONG,pattern:PTR TO LONG,header:PTR TO LONG
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- main
- */
-
- PROC main() HANDLE
- DEF multi=NIL:PTR TO multitext_plugin,
- van=NIL:PTR TO vanilla,raw=NIL:PTR TO rawkey
-
- ver:='$VER: EasyPlayer 0.91 (28.9.1999)'
-
- NEW rt.reqtooller(38) -> open reqtools.library v38
- NEW ti.time() -> plugin for time stopping
- NEW vb.vbsig(10,-10) -> plugin for vb interrupt
-
- StrCopy(prefsfilename,'PROGDIR:EYP.prefs')
- loadprefs()
- StrCopy(intsfilename,'PROGDIR:EYP.ints')
- NEW intlist.stringnode()
- loadints()
- updateintlist(0)
- newints(numints)
- useints()
-
- NEW plst.playlist()
-
- NEW multi.multitext([PLA_MultiText_Text,['Playlist'],
- PLA_MultiText_Justification,PLV_MultiText_JustifyCenter,
- PLA_MultiText_DrawBar,TRUE,TAG_DONE])
- NEW plstgad.dclistview([DCLV_RELX,10,DCLV_RELY,10,
- DCLV_LIST,plst.addr(),TAG_DONE])
- NEW images.mainimages()
- NEW van.vanilla([ESCAPE,CR,SPACEBAR,TAB,"a","+",DEL,"-","f","p","d","l","s","r","t"])
- NEW raw.rawkey([CURSORUP,CURSORDOWN,CURSORRIGHT,CURSORLEFT])
-
- menu:=[NM_TITLE,0,'Project',NIL,0,0,0,
- NM_ITEM,0,'Open ...','O',0,0,{main_open},
- NM_ITEM,0,'Append ...','A',0,0,{main_append},
- NM_ITEM,0,'Save As ...','S',0,0,{main_saveas},
- NM_ITEM,0,NM_BARLABEL,NIL,0,0,0,
- NM_ITEM,0,'Snapshot','T',0,0,{main_snapshot},
- NM_ITEM,0,NM_BARLABEL,NIL,0,0,0,
- NM_ITEM,0,'Debug ...','D',0,0,{main_debug},
- NM_ITEM,0,NM_BARLABEL,NIL,0,0,0,
- NM_ITEM,0,'About ...','?',0,0,{main_about},
- NM_ITEM,0,NM_BARLABEL,NIL,0,0,0,
- NM_ITEM,0,'Quit','Q',0,0,0,
- NM_TITLE,0,'Preferences',NIL,0,0,0,
- NM_ITEM,0,'Change ...','P',0,0,{openprefs},
- NM_ITEM,0,'Open ...','0',0,0,{prefs_open},
- NM_ITEM,0,'Save As ...','1',0,0,{prefs_saveas},
- NM_TITLE,0,'Interfaces',NIL,0,0,0,
- NM_ITEM,0,'Change ...','I',0,0,{openints},
- NM_ITEM,0,'Open ...','9',0,0,{ints_open},
- NM_ITEM,0,'Append ...','7',0,0,{ints_append},
- NM_ITEM,0,'Save as ...','6',0,0,{ints_saveas},
- NM_END,0,NIL,NIL,0,0,0]:newmenu
-
- mh:=multiinit()
-
- ghmain:=addmultiA(mh,'EYP (0:00)',
- [ROWS,
- [PLUGIN,1,multi],
- [PLUGIN,{main_plst},plstgad,TRUE],
- [COLS,
- [PLUGIN,{main_add},images.nib[ADDNIB]],
- [SPACEH],
- [PLUGIN,{main_del},images.nib[DELNIB]],
- [SPACEH],
- [PLUGIN,{main_first},images.nib[FIRSTNIB]],
- [SPACEH],
- [PLUGIN,{main_up},images.nib[UPNIB]],
- [SPACEH],
- [PLUGIN,{main_down},images.nib[DOWNNIB]],
- [SPACEH],
- [PLUGIN,{main_last},images.nib[LASTNIB]],
- [SPACEH],
- [PLUGIN,{main_shuffle},images.nib[SHUFFLENIB]]],
- [BAR],
- [BEVEL,
- [COLS,
- prevmodgad:=[PLUGIN,{main_prevmod},images.nib[PREVMODNIB]],
- [SPACEH],
- playgad:=[PLUGIN,{main_play},images.nib[PLAYNIB]],
- [SPACEH],
- songnumgad:=[PLUGIN,{main_songnum},images.nib[SONGNUMNIB]],
- [SPACEH],
- nextmodgad:=[PLUGIN,{main_nextmod},images.nib[NEXTMODNIB]],
- [SPACEH],
- stopgad:=[PLUGIN,{main_stop},images.nib[STOPNIB]],
- [SPACEH],
- ejectgad:=[PLUGIN,{main_eject},images.nib[EJECTNIB]]]],
- [PLUGIN,{main_vanilla},van],
- [PLUGIN,{main_rawkey},raw]],
- [EG_MENU,menu,EG_TOP,mainy,EG_LEFT,mainx,TAG_DONE])
-
- resizewin(ghmain,mainx,mainy,mainxs,mainys)
-
- plstitem(-1)
-
- startupargs()
-
- multiloop2(mh)
-
- EXCEPT DO
- END int
-
- cleanmulti(mh)
-
- END raw,van,images,plstgad,multi
-
- END plst
-
- endints(numints)
-
- END intlist
-
- END vb,ti
-
- IF reqtoolsbase THEN END rt
-
- SELECT exception
- CASE RTOPENLIB
- errorreq('Couldn''t open ''reqtools.library'' v38.','main')
- CASE "MEM"
- errorreq('EasyGUI-exception: "MEM".','main')
- CASE "GUI"
- errorreq('EasyGUI-exception: "GUI".','main')
- CASE "GT"
- errorreq('EasyGUI-exception: "GT".','main')
- CASE "bigg"
- errorreq('EasyGUI-exception: "bigg".','main')
- CASE "Egui"
- errorreq('EasyGUI-exception: "Egui".','main')
- ENDSELECT
- ENDPROC
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- main menu items
- */
-
- PROC main_open() HANDLE
- IF plstfilereq('Open playlist file')
- loadplst()
- stopmain()
- refreshplst()
- plstitem(0)
- play()
- ENDIF
- EXCEPT
- ENDPROC
-
- PROC main_append() HANDLE
- DEF oldpos
- IF plstfilereq('Append playlist file')
- oldpos:=plst.pos()
- IF oldpos=-1 THEN oldpos:=0
- loadplst(TRUE)
- refreshplst()
- plstitem(oldpos)
- ENDIF
- EXCEPT
- ENDPROC
-
- PROC main_saveas() HANDLE
- IF nummods=0 THEN Raise(ERR_NOMOD)
- IF plstfilereq('Save playlist file')
- saveplst(TRUE)
- ENDIF
- EXCEPT
- SELECT exception
- CASE ERR_NOMOD
- errorreq('No module in list to save.','main_saveas')
- ENDSELECT
- ENDPROC
-
- PROC main_snapshot()
- saveprefs(FALSE,TRUE)
- ENDPROC
-
- PROC main_debug()
- IF debug
- debug:=FALSE
- easyreq('Debug mode off.')
- ELSE
- debug:=TRUE
- easyreq('Debug mode on.')
- ENDIF
- ENDPROC
-
- PROC main_about()
- easyreq('%s\n\nModule Player Interface Program\n\n1997-1999 Ralph Debusmann',[ver+6],'EYP about','Ok')
- ENDPROC
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- main shortcuts
- */
-
- PROC main_vanilla(info,plugin:PTR TO vanilla)
- DEF qual
- qual:=plugin.qual
- SELECT 128 OF plugin.hit
- CASE ESCAPE
- Raise(0)
- CASE "a","+"
- main_add()
- CASE DEL
- IF images.enabled(DELNIB) THEN main_del()
- CASE "-"
- IF images.enabled(DELNIB) THEN main_del()
- CASE "f"
- IF images.enabled(FIRSTNIB) THEN main_first()
- CASE "p"
- IF images.enabled(UPNIB) THEN main_up()
- CASE "d"
- IF images.enabled(DOWNNIB) THEN main_down()
- CASE "l"
- IF images.enabled(LASTNIB) THEN main_last()
- CASE "s","r"
- IF images.enabled(SHUFFLENIB) THEN main_shuffle()
- CASE "t"
- BCHG #1,$BFE001
- CASE CR
- IF qual AND (IEQUALIFIER_LSHIFT OR IEQUALIFIER_RSHIFT)
- main_play()
- ELSE
- IF nummods>0 THEN play()
- ENDIF
- CASE SPACEBAR
- IF images.enabled(STOPNIB) THEN main_stop()
- CASE TAB
- IF images.enabled(EJECTNIB) THEN main_eject()
- ENDSELECT
- ENDPROC
-
- PROC main_rawkey(info,plugin:PTR TO rawkey)
- DEF qual,pos
- qual:=plugin.qual
- pos:=plst.pos()
- SELECT 128 OF plugin.hit
- CASE CURSORUP
- IF qual AND (IEQUALIFIER_LALT OR IEQUALIFIER_RALT)
- plstitem(0)
- ELSE
- IF pos>0 THEN plstitem(pos-1)
- ENDIF
- CASE CURSORDOWN
- IF qual AND (IEQUALIFIER_LALT OR IEQUALIFIER_RALT)
- plstitem(nummods-1)
- ELSE
- IF (nummods>0) AND pos<(nummods-1) THEN plstitem(pos+1)
- ENDIF
- CASE CURSORRIGHT
- IF qual AND (IEQUALIFIER_LSHIFT OR IEQUALIFIER_RSHIFT)
- IF images.enabled(NEXTMODNIB) THEN main_nextmod()
- ELSE
- IF images.enabled(SONGNUMNIB) THEN main_songnum2(1)
- ENDIF
- CASE CURSORLEFT
- IF qual AND (IEQUALIFIER_LSHIFT OR IEQUALIFIER_RSHIFT)
- IF images.enabled(PREVMODNIB) THEN main_prevmod()
- ELSE
- IF images.enabled(SONGNUMNIB) THEN main_songnum2(-1)
- ENDIF
- ENDSELECT
- ENDPROC
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- main playlist
- */
-
- PROC main_add()
- DEF oldpos
- oldpos:=plst.pos()
- IF modfilereq()
- refreshplst()
- IF oldpos=-1 THEN oldpos:=0
- plstitem(oldpos)
- ENDIF
- ENDPROC
-
- PROC main_del()
- IF nummods>0
- plst.del()
- nummods--
- refreshplst()
- plstitem(plst.pos())
- ENDIF
- ENDPROC
-
- PROC main_first()
- IF (nummods>0) AND (plst.pos()>0)
- plst.moveitemfirst()
- refreshplst()
- plstitem(0)
- ENDIF
- ENDPROC
-
- PROC main_up()
- DEF pos
- IF (nummods>0) AND (plst.pos()>0)
- pos:=plst.moveitemup()
- refreshplst()
- plstitem(pos)
- ENDIF
- ENDPROC
-
- PROC main_down()
- DEF pos
- IF (nummods>0) AND (plst.pos()<(nummods-1))
- pos:=plst.moveitemdown()
- refreshplst()
- plstitem(pos)
- ENDIF
- ENDPROC
-
- PROC main_last()
- DEF pos
- IF (nummods>0) AND (plst.pos()<(nummods-1))
- pos:=plst.moveitemlast()
- refreshplst()
- plstitem(pos)
- ENDIF
- ENDPROC
-
- PROC main_shuffle()
- DEF p,i,plst2:PTR TO playlist,oldpos,newpos=-1
- IF nummods>0
- oldpos:=plst.pos()
- p:=randomlist(nummods)
- NEW plst2.playlist()
- FOR i:=0 TO nummods-1
- plst.item(p[i])
- plst2.add(plst.dirlist.obj(),plst.filelist.obj())
- IF ((newpos=-1) AND (p[i]=oldpos)) THEN newpos:=i
- ENDFOR
- END plst
- plst:=plst2
- refreshplst()
- plstitem(newpos)
- ENDIF
- ENDPROC
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- main tapedeck
- */
-
- PROC main_plst(info,plugin)
- DEF n
- n:=plstgad.get(DCLV_CURRENT)
- IF plstgad.get(DCLV_CLICK) THEN play()
- plstitem(n)
- ENDPROC
-
- PROC main_prevmod()
- IF modnum>0
- plstitem(modnum-1)
- play()
- ENDIF
- ENDPROC
-
- PROC main_play()
- DEF oldnummods
- oldnummods:=nummods
- IF modfilereq()
- refreshplst()
- plstitem(oldnummods)
- play()
- ENDIF
- ENDPROC
-
- PROC main_songnum()
- main_songnum2(0)
- ENDPROC
-
- PROC main_songnum2(change)
- DEF n
- IF int
- IF int.numsongs
- IF ((int.songnum+change)>0) AND ((int.songnum+change)<=int.numsongs)
- rt.setattrs([RT_TITLE,'Choose new song number',
- RT_MINVAL,1,RT_MAXVAL,int.numsongs,RT_DEFVAL,int.songnum+change,TAG_DONE])
- IF rt.req(RTREQ_NUMBER)
- n:=rt.get(RT_NUM)
- IF (n<>0) AND (n<>int.songnum) AND (n<=int.numsongs) THEN play(n)
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- ENDPROC
-
- PROC main_nextmod()
- IF modnum<(nummods-1)
- plstitem(modnum+1)
- play()
- ENDIF
- ENDPROC
-
- PROC main_stop()
- stopmain()
- plstitem(plst.pos())
- ENDPROC
-
- PROC main_eject()
- stopmain()
- IF nummods
- nummods:=0
- plst.clear()
- refreshplst()
- plstitem(0)
- ENDIF
- ENDPROC
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- main support
- */
-
- PROC modfilereq()
- DEF dir,file,success
- rt.setattrs([RT_TITLE,'Add one or more module(s)',RT_PATH,modpath,
- RT_FILENAME,FilePart(modfilename),RT_FULLNAME,FALSE,TAG_DONE])
- IF (success:=rt.req(RTREQ_MULTI))
- dir:=rt.get(RT_PATH)
- WHILE (file:=rt.get(RT_MULTINEXT))
- plst.add(dir,file)
- ENDWHILE
- nummods:=plst.numitems()
-
- StrCopy(modpath,dir)
- IF ghprefs
- setstr(ghprefs,modpathgad,modpath)
- prefschange:=TRUE
- ENDIF
- ENDIF
- ENDPROC success
-
- PROC plstfilereq(title)
- DEF success
- rt.setattrs([RT_TITLE,title,RT_PATH,plstpath,RT_FILENAME,FilePart(plstfilename),RT_FULLNAME,TRUE,TAG_DONE])
- IF (success:=rt.req(RTREQ_FILE))
- strcopy(plstfilename,rt.get(RT_FILENAME))
-
- StrCopy(plstpath,rt.get(RT_PATH))
- IF ghprefs
- setstr(ghprefs,plstpathgad,plstpath)
- prefschange:=TRUE
- ENDIF
- ENDIF
- ENDPROC success
-
- PROC play(songnum=0) HANDLE
- DEF modid,oldwin,ib:PTR TO intuitionbase
- IF intinfo=NIL THEN Raise(ERR_NOINT)
- blockwin(ghmain)
- stopmain() -> ticker:=FALSE, END int, changetitle
- StrCopy(modfilename,plst.dirlist.obj())
- AddPart(modfilename,plst.filelist.obj(),FULL)
- modid:=recognize(modfilename,intinfo,numints)
- NEW int.interface(intinfo[modid-1],modfilename,debug)
- IF songnum THEN int.songnum:=songnum
- ib:=intuitionbase
- oldwin:=ib.activewindow
- int.start(debug)
- ActivateWindow(oldwin)
- ti.start()
- ticker:=TRUE
- modnum:=plst.pos()
- plstitem(modnum)
- EXCEPT DO
- unblockwin(ghmain)
- SELECT exception
- CASE ERR_NOINT
- errorreq('No interface enabled.','play')
- CASE ERR_LAUNCH
- errorreq('Couldn''t launch "%s"-player program.','play',[int.intinfo.intname])
- ENDSELECT
- ENDPROC
-
- PROC plstitem(newpos)
- DEF numsongs=0
- plst.item(newpos)
- plstgad.set(DCLV_CURRENT,newpos)
-
- IF int THEN numsongs:=int.numsongs
- enablenibgads([images.nib[PREVMODNIB],modnum>0,
- images.nib[PLAYNIB],TRUE,
- images.nib[SONGNUMNIB],numsongs>1,
- images.nib[NEXTMODNIB],modnum<(nummods-1),
- images.nib[STOPNIB],ticker,
- images.nib[EJECTNIB],nummods>0,
- images.nib[ADDNIB],TRUE,
- images.nib[DELNIB],nummods>0,
- images.nib[FIRSTNIB],(nummods>0) AND (newpos>0),
- images.nib[UPNIB],(nummods>0) AND (newpos>0),
- images.nib[DOWNNIB],(nummods>0) AND (newpos<(nummods-1)),
- images.nib[LASTNIB],(nummods>0) AND (newpos<(nummods-1)),
- images.nib[SHUFFLENIB],(nummods>1),TAG_DONE])
- ENDPROC
-
- PROC refreshplst()
- plstgad.set(DCLV_LIST,-1)
- plstgad.set(DCLV_LIST,plst.addr())
- ENDPROC
-
- PROC stopmain()
- DEF figure[4]:STRING
- ticker:=FALSE
-
- END int
-
- StrCopy(maintitle,'EYP (')
- IF hours>0
- StringF(figure,'\d:',hours)
- StrAdd(maintitle,figure)
- ENDIF
- IF mins>=10
- StringF(figure,'\z\d[2]:',mins)
- StrAdd(maintitle,figure)
- ELSE
- StringF(figure,'\z\d[1]:',mins)
- StrAdd(maintitle,figure)
- ENDIF
- StringF(figure,'\z\d[2])',secs)
- StrAdd(maintitle,figure)
- changetitle(ghmain,maintitle)
- ENDPROC
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- prefs
- */
-
- PROC openprefs()
- IF ghprefs=NIL
- NEW prefsmulti.multitext([PLA_MultiText_Text,['Preferences'],
- PLA_MultiText_Justification,PLV_MultiText_JustifyCenter,
- PLA_MultiText_DrawBar,TRUE,TAG_DONE])
- NEW prefsfilereqimage1.filereqimage()
- NEW prefsfilereqimage2.filereqimage()
- NEW prefsvan.vanilla([ESCAPE,"1","2"])
- ghprefs:=addmultiA(mh,'EYP prefs',
- [EQROWS,
- [PLUGIN,1,prefsmulti],
- [COLS,
- modpathgad:=[STR,{prefs_modpath},'_Module path',modpath,100,10,FALSE,NIL,"m"],
- [PLUGIN,{prefs_modpathreq},prefsfilereqimage1.nib]],
- [COLS,
- plstpathgad:=[STR,{prefs_plstpath},'_Playlist path',plstpath,100,10,FALSE,NIL,"p"],
- [PLUGIN,{prefs_plstpathreq},prefsfilereqimage2.nib]],
- [BAR],
- [COLS,
- [BUTTON,{prefs_save},'_Save',NIL,"s",NIL,FALSE],
- [SPACEH],
- [BUTTON,{prefs_use},'_Use',NIL,"u",NIL,FALSE],
- [SPACEH],
- [BUTTON,{prefs_cancel},'_Cancel',NIL,"c",NIL,FALSE]],
- [PLUGIN,{prefs_vanilla},prefsvan]],
- [EG_MENU,menu,EG_CLOSE,{prefs_use},TAG_DONE])
- prefschange:=FALSE
- StrCopy(modpath2,modpath)
- StrCopy(plstpath2,plstpath)
- ELSE
- WindowToFront(ghprefs.wnd)
- ActivateWindow(ghprefs.wnd)
- ENDIF
- ENDPROC
-
- PROC closeprefs()
- cleangui(ghprefs)
- ghprefs:=NIL
- END prefsvan,prefsfilereqimage2,prefsfilereqimage1,prefsmulti
- ENDPROC
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- prefs menu items
- */
-
- PROC prefs_open()
- IF filereq('Open preferences file',prefsfilename)
- IF loadprefs()
- resizewin(ghmain,mainx,mainy,mainxs,mainys)
- IF ghprefs
- closewin(ghprefs)
- setstr(ghprefs,modpathgad,modpath)
- setstr(ghprefs,plstpathgad,plstpath)
- openwin(ghprefs)
- ENDIF
- ENDIF
- ENDIF
- ENDPROC
-
- PROC prefs_saveas()
- IF filereq('Save preferences file',prefsfilename)
- useprefs()
- saveprefs(TRUE)
- ENDIF
- ENDPROC
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- prefs shortcuts
- */
-
- PROC prefs_vanilla(info,plugin:PTR TO vanilla)
- SELECT 128 OF plugin.hit
- CASE ESCAPE
- prefs_use()
- CASE "1"
- prefs_modpathreq()
- CASE "2"
- prefs_plstpathreq()
- ENDSELECT
- ENDPROC
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- prefs gui
- */
-
- PROC prefs_modpath()
- IF StrCmp(modpath,modpath2)=FALSE
- prefschange:=TRUE
- ENDIF
- ENDPROC
-
- PROC prefs_modpathreq()
- IF pathreq('Choose module path',modpath)
- setstr(ghprefs,modpathgad,modpath)
- prefschange:=TRUE
- ENDIF
- ENDPROC
-
- PROC prefs_plstpath()
- IF StrCmp(plstpath,plstpath2)=FALSE
- prefschange:=TRUE
- ENDIF
- ENDPROC
-
- PROC prefs_plstpathreq()
- IF pathreq('Choose playlist path',plstpath)
- setstr(ghprefs,plstpathgad,plstpath)
- prefschange:=TRUE
- ENDIF
- ENDPROC
-
- PROC prefs_save()
- useprefs()
- IF saveprefs(FALSE) THEN closeprefs()
- ENDPROC
-
- PROC prefs_use()
- useprefs()
- closeprefs()
- ENDPROC
-
- PROC prefs_cancel()
- IF prefschange
- StrCopy(modpath,modpath2)
- StrCopy(plstpath,plstpath2)
- ENDIF
- closeprefs()
- ENDPROC
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- prefs support
- */
-
- PROC useprefs()
- IF ghprefs
- StrCopy(modpath,getstr(ghprefs,modpathgad))
- StrCopy(plstpath,getstr(ghprefs,plstpathgad))
- ENDIF
- ENDPROC
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- interfaces
- */
-
- PROC openints()
- IF ghints=NIL
- NEW intsmulti.multitext([PLA_MultiText_Text,['Interfaces'],
- PLA_MultiText_Justification,PLV_MultiText_JustifyCenter,
- PLA_MultiText_DrawBar,TRUE,TAG_DONE])
- NEW intsgad.dclistview([DCLV_RELX,12,DCLV_RELY,12,
- DCLV_LIST,intlist.addr(),DCLV_CURRENT,intlist.pos(),TAG_DONE])
- NEW intsvan.vanilla([ESCAPE,CR,DEL,INTDISABLED])
- NEW intsraw.rawkey([CURSORUP,CURSORDOWN])
- ghints:=addmultiA(mh,'EYP ints',
- [ROWS,
- [PLUGIN,1,intsmulti],
- [COLS,
- [PLUGIN,{ints_intlist},intsgad,TRUE],
- [EQROWS,
- firstintgad:=[BUTTON,{ints_first},'_First',NIL,"f",NIL,Not(((numints>0) AND (intlist.pos()>0)))],
- upintsgad:=[BUTTON,{ints_up},'U_p',NIL,"p",NIL,Not(((numints>0) AND (intlist.pos()>0)))],
- downintsgad:=[BUTTON,{ints_down},'_Down',NIL,"d",NIL,Not(((numints>0) AND (intlist.pos()<(numints-1))))],
- lastintgad:=[BUTTON,{ints_last},'_Last',NIL,"l",NIL,Not(((numints>0) AND (intlist.pos()<(numints-1))))],
- sortintsgadatoz:=[BUTTON,{ints_sort},'_a-z',ATOZ,"a",NIL,Not(numints>1)],
- sortintsgadztoa:=[BUTTON,{ints_sort},'_z-a',ZTOA,"z",NIL,Not(numints>1)]]],
- [ROWS,
- [COLS,
- [SBUTTON,{ints_add},'_New',NIL,"n",NIL,FALSE],
- [SPACEH],
- editintgad:=[SBUTTON,{ints_edit},'_Edit',NIL,"e",NIL,FALSE],
- [SPACEH],
- copyintgad:=[SBUTTON,{ints_copy},'Cop_y',NIL,"y",NIL,Not(numints>0)],
- [SPACEH],
- toggleintgad:=[SBUTTON,{ints_toggle},'_*',NIL,"*",NIL,Not(numints>0)],
- [SPACEH],
- delintgad:=[SBUTTON,{ints_del},'Del',NIL,"m",NIL,Not(numints>0)],
- [SPACEH],
- clearintsgad:=[SBUTTON,{ints_clear},'Clea_r',NIL,"r",NIL,Not(numints>0)]],
- [BAR],
- [COLS,
- [BUTTON,{ints_save},'_Save',NIL,"s",NIL,FALSE],
- [SPACEH],
- [BUTTON,{ints_use},'_Use',NIL,"u",NIL,FALSE],
- [SPACEH],
- [BUTTON,{ints_cancel},'_Cancel',NIL,"c",NIL,FALSE]]],
- [PLUGIN,{ints_vanilla},intsvan],
- [PLUGIN,{ints_rawkey},intsraw]],
- [EG_MENU,menu,EG_CLOSE,{ints_use},EG_INFO,intlist.pos(),TAG_DONE])
- ELSE
- WindowToFront(ghints.wnd)
- ActivateWindow(ghints.wnd)
- ENDIF
- ENDPROC
-
- PROC closeints()
- DEF i,win:PTR TO window
- FOR i:=0 TO numints-1
- IF ghint[i]
- int_use(i)
- ENDIF
- ENDFOR
- win:=ghints.wnd
- cleangui(ghints)
- ghints:=NIL
- END intsvan,intsraw,intsmulti,intsgad
- ENDPROC
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- interfaces shortcuts
- */
-
- PROC ints_vanilla(num,plugin:PTR TO vanilla)
- SELECT 128 OF plugin.hit
- CASE ESCAPE
- ints_use()
- CASE CR
- IF numints THEN ints_edit(num)
- CASE DEL
- IF numints THEN ints_del()
- CASE INTDISABLED
- IF numints THEN ints_toggle(num)
- ENDSELECT
- ENDPROC
-
- PROC ints_rawkey(info,plugin:PTR TO rawkey)
- DEF qual
- qual:=plugin.qual
- SELECT 128 OF plugin.hit
- CASE CURSORUP
- IF intlist.empty()=FALSE
- IF qual AND (IEQUALIFIER_LALT OR IEQUALIFIER_RALT)
- IF intlist.first() THEN moveinintlist(0)
- ELSE
- IF intlist.prev() THEN moveinintlist(intlist.pos())
- ENDIF
- ENDIF
- CASE CURSORDOWN
- IF intlist.empty()=FALSE
- IF qual AND (IEQUALIFIER_LALT OR IEQUALIFIER_RALT)
- IF intlist.last() THEN moveinintlist(intlist.numitems()-1)
- ELSE
- IF intlist.succ() THEN moveinintlist(intlist.pos())
- ENDIF
- ENDIF
- ENDSELECT
- ENDPROC
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- interfaces menu items
- */
-
- PROC ints_open()
- DEF oldnumints
- IF filereq('Open interfaces file',intsfilename)
- oldnumints:=numints
- IF loadints()
- IF ghints THEN closewin(ghints)
- updateints(oldnumints,numints,0)
- updateintlist(0)
- IF ghints
- openwin(ghints)
- refreshintlist()
- ENDIF
- ENDIF
- ENDIF
- ENDPROC
-
- PROC ints_append()
- DEF oldnumints,oldpos
- IF filereq('Append interfaces file',intsfilename)
- oldnumints:=numints
- oldpos:=intlist.pos()
- IF oldpos=-1 THEN oldpos:=0
- IF loadints(TRUE)
- IF ghints THEN closewin(ghints)
- updateints(oldnumints,numints,oldpos)
- updateintlist(oldpos)
- IF ghints
- openwin(ghints)
- refreshintlist()
- ENDIF
- ENDIF
- ENDIF
- ENDPROC
-
- PROC ints_saveas() HANDLE
- IF numints=0 THEN Raise(ERR_NOINT)
- IF filereq('Save interfaces file',intsfilename)
- saveints(TRUE)
- ENDIF
- EXCEPT
- SELECT exception
- CASE ERR_NOINT
- errorreq('No interface available to save.','ints_saveas')
- ENDSELECT
- ENDPROC
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- interfaces gui
- */
-
- PROC ints_intlist(info,plugin)
- DEF num,double
- num:=intsgad.get(DCLV_CURRENT)
- double:=intsgad.get(DCLV_CLICK)
- intlist.item(num)
- moveinintlist(num)
- IF double THEN ints_edit(num)
- ENDPROC
-
- PROC ints_first()
- IF (numints>0) AND (intlist.pos()>0)
- intlist.moveitemfirst()
- intlisttointinfo()
- updateints(numints,numints,0)
- refreshintlist()
- ENDIF
- ENDPROC
-
- PROC ints_up()
- DEF newpos
- IF (numints>0) AND (intlist.pos()>0)
- newpos:=intlist.moveitemup()
- intlisttointinfo()
- updateints(numints,numints,newpos)
- refreshintlist()
- ENDIF
- ENDPROC
-
- PROC ints_down()
- DEF newpos
- IF (numints>0) AND (intlist.pos()<(numints-1))
- newpos:=intlist.moveitemdown()
- intlisttointinfo()
- updateints(numints,numints,newpos)
- refreshintlist()
- ENDIF
- ENDPROC
-
- PROC ints_last()
- IF (numints>0) AND (intlist.pos()<(numints-1))
- intlist.moveitemlast()
- intlisttointinfo()
- updateints(numints,numints,numints-1)
- refreshintlist()
- ENDIF
- ENDPROC
-
- PROC ints_sort(inverted,info)
- IF numints
- intlist.sort(FALSE,inverted)
- intlisttointinfo()
- updateints(numints,numints,0)
- refreshintlist()
- ENDIF
- ENDPROC
-
- PROC ints_add()
- DEF newpos
- newpos:=intlist.insert('<new>')
- intlisttointinfo()
- updateints(numints-1,numints,newpos)
- refreshintlist()
- openint(newpos)
- ENDPROC
-
- PROC ints_edit(num)
- openint(num)
- ENDPROC
-
- PROC ints_copy(num)
- DEF newpos
- newpos:=intlist.insert(intinfo[num].intname)
- intlisttointinfo()
- CopyMem(intinfo[num],intinfo[num+1],SIZEOF interfaceinfo)
- updateints(numints-1,numints,newpos)
- refreshintlist()
- ENDPROC
-
- PROC ints_toggle(num)
- DEF toggle,newintname[INTERFACE]:STRING
- toggle:=intinfo[num].intname[]=INTDISABLED
- IF toggle
- StrCopy(newintname,intinfo[num].intname+1)
- ELSE
- StrCopy(newintname,' ')
- newintname[]:=INTDISABLED
- StrAdd(newintname,intinfo[num].intname)
- ENDIF
- strcopy(intinfo[num].intname,newintname)
- StrCopy(intname[num],newintname)
- changeintlist(num,newintname)
- IF ghint[num]
- setstr(ghint[num],intnamegad[num],intname[num])
- changetitle(ghint[num],intinfo[num].intname)
- intchangelist[num]:=TRUE
- ENDIF
- ENDPROC
-
- PROC ints_del()
- DEF newpos
- IF numints
- intlist.del()
- newpos:=intlist.pos()
- intlisttointinfo()
- updateints(numints+1,numints,newpos)
- refreshintlist()
- ENDIF
- ENDPROC
-
- PROC ints_clear()
- DEF oldnumints
- IF numints
- oldnumints:=numints
- intlist.clear()
- intlisttointinfo()
- updateints(oldnumints,0,-1)
- refreshintlist()
- ENDIF
- ENDPROC
-
- PROC ints_save() HANDLE
- IF numints=0 THEN Raise(ERR_NOINT)
- saveints(FALSE)
- closeints()
- useints()
- EXCEPT
- SELECT exception
- CASE ERR_NOINT
- errorreq('No interface available to save.','ints_save')
- ENDSELECT
- ENDPROC
-
- PROC ints_use()
- closeints()
- useints()
- ENDPROC
-
- PROC ints_cancel()
- DEF oldnumints
- closeints()
- IF intschange
- oldnumints:=numints
- cancelints()
- updateintlist(0)
- updateints(oldnumints,numints,0)
- ENDIF
- ENDPROC
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- interfaces support
- */
-
- PROC cancelints()
- DEF i
- END intinfo[numints]
- NEW intinfo[numintst]
- FOR i:=0 TO numintst-1
- CopyMem(intinfo2[i],intinfo[i],SIZEOF interfaceinfo)
- ENDFOR
- numints:=numintst
- intschange:=FALSE
- ENDPROC
-
- PROC changeintlist(num,news)
- intlist.change2(num,news)
- IF ghints
- refreshintlist()
- ENDIF
- intschange:=TRUE
- ENDPROC
-
- PROC endints(endnumints)
- DEF i
- IF endnumints
- FOR i:=0 TO endnumints-1
- IF ghint[i]
- closeint(i)
- ENDIF
-
- DisposeLink(header[i]); DisposeLink(pattern[i]); DisposeLink(helparg[i])
- DisposeLink(songarg[i]); DisposeLink(console[i]); DisposeLink(progargs[i])
- DisposeLink(progname[i]); DisposeLink(intname[i])
- ENDFOR
-
- END header[endnumints],pattern[endnumints],helparg[endnumints],songarg[endnumints],
- console[endnumints],progargs[endnumints],progname[endnumints],intname[endnumints]
-
- END intinfo3[endnumints],intchangelist[endnumints]
-
- END intvan[endnumints],intfilereqimage[endnumints]
-
- END intnamegad[endnumints],prognamegad[endnumints],
- songarggad[endnumints],helparggad[endnumints],progargsgad[endnumints],consolegad[endnumints],
- headergad[endnumints],headeroffgad[endnumints],patterngad[endnumints],numoffgad[endnumints],
- numlengad[endnumints],numaddgad[endnumints],songsoffgad[endnumints],songslengad[endnumints],
- songsaddgad[endnumints]
-
- END intindex[endnumints]
-
- END intgui[endnumints]
-
- END ghint[endnumints]
- ENDIF
- ENDPROC
-
- PROC intlisttointinfo()
- DEF oldpos,intinfol=NIL:PTR TO interfaceinfo,i,j,found
- IF intlist.numitems()
- oldpos:=intlist.pos()
- NEW intinfol[intlist.numitems()]
- FOR i:=0 TO intlist.numitems()-1
- intlist.item(i)
- j:=0
- found:=FALSE
- IF intinfo
- REPEAT
- IF intinfo[j].intname[]
- IF StrCmp(intlist.obj(),intinfo[j].intname)
- CopyMem(intinfo[j],intinfol[i],SIZEOF interfaceinfo)
- intinfo[j].intname[]:=0
- found:=TRUE
- ENDIF
- ENDIF
- j++
- UNTIL (j=numints) OR found
- ENDIF
- IF found=FALSE
- nullintinfo(intinfol[i])
- strcopy(intinfol[i].intname,intlist.obj())
- ENDIF
- ENDFOR
- END intinfo[numints]
- intinfo:=intinfol
- intlist.item(oldpos)
- ELSE
- END intinfo[numints]
- ENDIF
- numints:=intlist.numitems()
- ENDPROC
-
- PROC moveinintlist(newpos)
- IF ghints
- IF newpos<>-1
- intsgad.set(DCLV_CURRENT,newpos)
- ENDIF
- changeinfo(ghints,newpos)
- enablegads(ghints,[
- firstintgad,((numints>0) AND (newpos>0)),
- upintsgad,((numints>0) AND (newpos>0)),
- downintsgad,((numints>0) AND (newpos<(numints-1))),
- lastintgad,((numints>0) AND (newpos<(numints-1))),
- sortintsgadatoz,numints>1,sortintsgadztoa,numints>1,
- copyintgad,numints>0,editintgad,numints>0,toggleintgad,numints>0,
- delintgad,numints>0,clearintsgad,numints>0,TAG_DONE])
- ENDIF
- ENDPROC
-
- PROC newints(newnumints)
- DEF i
- IF newnumints
- NEW ghint[newnumints] -> list of interface windows
-
- NEW intgui[newnumints]
-
- NEW intindex[newnumints]
-
- NEW intnamegad[newnumints],prognamegad[newnumints],
- songarggad[newnumints],helparggad[newnumints],progargsgad[newnumints],consolegad[newnumints],
- headergad[newnumints],headeroffgad[newnumints],patterngad[newnumints],numoffgad[newnumints],
- numlengad[newnumints],numaddgad[newnumints],songsoffgad[newnumints],songslengad[newnumints],
- songsaddgad[newnumints]
-
- NEW intvan[newnumints],intfilereqimage[newnumints]
-
- NEW intinfo3[newnumints],intchangelist[newnumints]
-
- NEW intname[newnumints] -> partial intinfo (need to have estrings for gui)
- NEW progname[newnumints]
- NEW progargs[newnumints]
- NEW console[newnumints]
- NEW songarg[newnumints]
- NEW helparg[newnumints]
- NEW pattern[newnumints]
- NEW header[newnumints]
-
- FOR i:=0 TO newnumints-1
- ghint[i]:=NIL
-
- intindex[i]:=0
-
- intname[i]:=String(INTERFACE)
- StrCopy(intname[i],intinfo[i].intname)
- progname[i]:=String(FULL)
- StrCopy(progname[i],intinfo[i].progname)
- progargs[i]:=String(FULL)
- StrCopy(progargs[i],intinfo[i].progargs)
- console[i]:=String(FULL)
- StrCopy(console[i],intinfo[i].console)
- songarg[i]:=String(SONGARG)
- StrCopy(songarg[i],intinfo[i].songarg)
- helparg[i]:=String(FULL)
- StrCopy(helparg[i],intinfo[i].helparg)
- pattern[i]:=String(PATTERN)
- StrCopy(pattern[i],intinfo[i].pattern)
- header[i]:=String(HEADER)
- StrCopy(header[i],intinfo[i].header)
- ENDFOR
- ENDIF
- ENDPROC
-
- PROC refreshintlist()
- intsgad.set(DCLV_LIST,-1)
- intsgad.set(DCLV_LIST,intlist.addr())
- ENDPROC
-
- PROC updateintlist(newpos)
- DEF i
- intlist.clear()
- FOR i:=0 TO numints-1 DO intlist.add(intinfo[i].intname)
- intlist.item(newpos)
- ENDPROC
-
- PROC updateints(oldnumints,newnumints,newpos)
- endints(oldnumints)
- newints(newnumints)
- moveinintlist(newpos)
- intschange:=TRUE
- ENDPROC
-
- PROC useints()
- DEF i
- END intinfo2[numintst]
- NEW intinfo2[numints]
- FOR i:=0 TO numints-1
- CopyMem(intinfo[i],intinfo2[i],SIZEOF interfaceinfo)
- ENDFOR
- numintst:=numints
- intschange:=FALSE
- ENDPROC
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- interface definition
- */
-
- PROC openint(num)
- DEF van:PTR TO vanilla,image:PTR TO filereqimage,intgui2:PTR TO LONG,ghint2:PTR TO guihandle,
- intnamegad2,prognamegad2,songarggad2,helparggad2,progargsgad2,consolegad2,
- headergad2,headeroffgad2,patterngad2,numoffgad2,numlengad2,numaddgad2,
- songsoffgad2,songslengad2,songsaddgad2,
- songnumlen,numsongslen
-
- IF ghint[num]=NIL
- NEW van.vanilla([ESCAPE,"1","?"])
- intvan[num]:=van
- NEW image.filereqimage()
- intfilereqimage[num]:=image
-
- IF intinfo[num].songnumlen=4 THEN songnumlen:=3 ELSE songnumlen:=intinfo[num].songnumlen
- IF intinfo[num].numsongslen=4 THEN numsongslen:=3 ELSE numsongslen:=intinfo[num].numsongslen
-
- intgui[num]:=
- NEW [
- NEW [ROWS,
- NEW [EQCOLS,
- NEW [SBUTTON,{int_changegui},'_Invocation',INVGUI,"i",NIL,TRUE],
- NEW [SBUTTON,{int_changegui},'_Recognition',RECOGGUI,"r",NIL,FALSE]],
- NEW [BAR],
- NEW [ROWS,
- intnamegad2:=NEW [STR,{int_intname},'_Name',intname[num],100,8,FALSE,NIL,"n"]],
- NEW [BAR],
- NEW [EQROWS,
- NEW [COLS,
- prognamegad2:=NEW [STR,{int_progname},' _Path',progname[num],100,8,FALSE,NIL,"p"],
- NEW [PLUGIN,{int_prognamereq},image.nib]],
- progargsgad2:=NEW [STR,{int_progargs},'_Misc args',progargs[num],100,8,FALSE,NIL,"m"],
- songarggad2:=NEW [STR,{int_songarg},'_Song arg',songarg[num],100,8,FALSE,NIL,"s"],
- NEW [COLS,
- helparggad2:=NEW [STR,{int_helparg},' _Help arg',helparg[num],100,4,FALSE,NIL,"h"],
- NEW [BUTTON,{int_help},'_?',NIL,"?",NIL,FALSE]],
- consolegad2:=NEW [STR,{int_console},'Conso_le',console[num],100,8,FALSE,NIL,"l"],
- NEW [CHECK,{int_quotes},'Put _quotes around modname',intinfo[num].quotes,FALSE,NIL,"q"],
- NEW [CHECK,{int_filter},'_Force filter off',intinfo[num].filter,FALSE,NIL,"f"]],
- NEW [ROWS,
- NEW [BAR],
- NEW [COLS,
- NEW [BUTTON,{int_use},'_Use',NIL,"u",NIL,FALSE],
- NEW [SPACEH],
- NEW [BUTTON,{int_cancel},'_Cancel',NIL,"c",NIL,FALSE]],
- NEW [PLUGIN,{int_vanilla},intvan[num]]]],
-
- NEW [ROWS,
- NEW [EQCOLS,
- NEW [SBUTTON,{int_changegui},'_Invocation',INVGUI,"i",NIL,FALSE],
- NEW [SBUTTON,{int_changegui},'_Recognition',RECOGGUI,"r",NIL,TRUE]],
- NEW [BAR],
- NEW [ROWS,
- NEW [COLS,
- headergad2:=NEW [STR,{int_header},' _Header',header[num],100,5,FALSE,NIL,"h"],
- headeroffgad2:=NEW [INTEGER,{int_headeroff},'_Offset',intinfo[num].headeroffset,5,FALSE,"o"]],
- patterngad2:=NEW [STR,{int_pattern},'_Pattern',pattern[num],100,5,FALSE,NIL,"p"]],
- NEW [BAR],
- NEW [ROWS,
- NEW [CHECK,{int_songs},'_Subsong support',intinfo[num].songs,TRUE,NIL,"s"],
- numoffgad2:=NEW [INTEGER,{int_numoff},' _Default song offset',intinfo[num].songnumoffset,6,0,"d",Not(intinfo[num].songs)],
- NEW [COLS,
- numlengad2:=NEW [CYCLE,{int_numlen},'_Length',['0','1','2','4',NIL],songnumlen,0,"l",Not(intinfo[num].songs)],
- numaddgad2:=NEW [INTEGER,{int_numadd},'_Add to value',intinfo[num].songnumadd,6,0,"a",Not(intinfo[num].songs)]],
- songsoffgad2:=NEW [INTEGER,{int_songsoff},'_Num songs offset',intinfo[num].numsongsoffset,6,0,"n",Not(intinfo[num].songs)],
- NEW [COLS,
- songslengad2:=NEW [CYCLE,{int_songslen},'L_ength',['0','1','2','4',NIL],numsongslen,0,"e",Not(intinfo[num].songs)],
- songsaddgad2:=NEW [INTEGER,{int_songsadd},'Add to _value',intinfo[num].numsongsadd,6,0,"v",Not(intinfo[num].songs)]]],
- NEW [ROWS,
- NEW [BAR],
- NEW [COLS,
- NEW [BUTTON,{int_use},'_Use',NIL,"u",NIL,FALSE],
- NEW [SPACEH],
- NEW [BUTTON,{int_cancel},'_Cancel',NIL,"c",NIL,FALSE]],
- NEW [PLUGIN,{int_vanilla},intvan[num]]]]
- ]
-
- intnamegad[num]:=intnamegad2 ; prognamegad[num]:=prognamegad2
- songarggad[num]:=songarggad2 ; helparggad[num]:=helparggad2
- progargsgad[num]:=progargsgad2 ; consolegad[num]:=consolegad2 ; headergad[num]:=headergad2
- headeroffgad[num]:=headeroffgad2 ; patterngad[num]:=patterngad2 ; numoffgad[num]:=numoffgad2
- numlengad[num]:=numlengad2 ; numaddgad[num]:=numaddgad2; songsoffgad[num]:=songsoffgad2
- songslengad[num]:=songslengad2 ; songsaddgad[num]:=songsaddgad2
-
- intgui2:=intgui[num]
- ghint[num]:=addmultiA(mh,intinfo[num].intname,intgui2[intindex[num]],
- [EG_MENU,menu,EG_CLOSE,{int_use},EG_INFO,num,TAG_DONE])
- CopyMem(intinfo[num],intinfo3[num],SIZEOF interfaceinfo)
- intchangelist[num]:=FALSE
- ELSE
- ghint2:=ghint[num]
- WindowToFront(ghint2.wnd)
- ActivateWindow(ghint2.wnd)
- ENDIF
- ENDPROC
-
- PROC closeint(num)
- DEF van:PTR TO vanilla,i,intgui2:PTR TO LONG
- cleangui(ghint[num])
- ghint[num]:=NIL
- intgui2:=intgui[num]
- FOR i:=INVGUI TO RECOGGUI DO disposegui(intgui2[i])
- van:=intvan[num]
- END van
- ENDPROC
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- interface shortcuts
- */
-
- PROC int_vanilla(num,plugin:PTR TO vanilla)
- SELECT 128 OF plugin.hit
- CASE ESCAPE
- int_use(num)
- CASE "1"
- int_prognamereq(num,0)
- CASE "?"
- int_help(num)
- ENDSELECT
- ENDPROC
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- interface gui
- */
-
- PROC int_changegui(index,num)
- DEF intgui2:PTR TO LONG
- intgui2:=intgui[num]
- changegui(ghint[num],intgui2[index])
- intindex[num]:=index
- ENDPROC
-
- PROC int_intname(num,news)
- IF StrCmp(intinfo[num].intname,news)=FALSE
- strcopy(intinfo[num].intname,news)
- changetitle(ghint[num],intinfo[num].intname)
- changeintlist(num,news)
- intchangelist[num]:=TRUE
- ENDIF
- ENDPROC
-
- PROC int_progname(num,news)
- IF StrCmp(intinfo[num].progname,news)=FALSE
- strcopy(intinfo[num].progname,news)
- intchangelist[num]:=TRUE
- ENDIF
- ENDPROC
-
- PROC int_prognamereq(num,plugin)
- IF filereq('Choose program file',intinfo[num].progname)
- setstr(ghint[num],prognamegad[num],intinfo[num].progname)
- intchangelist[num]:=TRUE
- ENDIF
- ENDPROC
-
- PROC int_songarg(num,news)
- IF StrCmp(intinfo[num].songarg,news)=FALSE
- strcopy(intinfo[num].songarg,news)
- intchangelist[num]:=TRUE
- ENDIF
- ENDPROC
-
- PROC int_helparg(num,news)
- IF StrCmp(intinfo[num].helparg,news)=FALSE
- strcopy(intinfo[num].helparg,news)
- intchangelist[num]:=TRUE
- ENDIF
- ENDPROC
-
- PROC int_help(num)
- DEF command[256]:STRING
- StrAdd(command,intinfo[num].progname)
- IF intinfo[num].helparg
- StrAdd(command,' ',1)
- StrAdd(command,intinfo[num].helparg)
- ENDIF
- IF debug THEN PrintF('command: \s\n',command)
- SystemTagList(command,[SYS_ASYNCH,TRUE,SYS_INPUT,NIL,SYS_OUTPUT,NIL,TAG_DONE])
- ENDPROC
-
- PROC int_progargs(num,news)
- IF StrCmp(intinfo[num].progargs,news)=FALSE
- strcopy(intinfo[num].progargs,news)
- intchangelist[num]:=TRUE
- ENDIF
- ENDPROC
-
- PROC int_console(num,news)
- IF StrCmp(intinfo[num].console,news)=FALSE
- strcopy(intinfo[num].console,news)
- intchangelist[num]:=TRUE
- ENDIF
- ENDPROC
-
- PROC int_quotes(num,quotes)
- intinfo[num].quotes:=quotes
- intchangelist[num]:=TRUE
- ENDPROC
-
- PROC int_filter(num,filter)
- intinfo[num].filter:=filter
- intchangelist[num]:=TRUE
- ENDPROC
-
- PROC int_header(num,news)
- IF StrCmp(intinfo[num].header,news)=FALSE
- strcopy(intinfo[num].header,news)
- intchangelist[num]:=TRUE
- ENDIF
- ENDPROC
-
- PROC int_headeroff(num,headeroffset)
- IF (intinfo[num].headeroffset)<>headeroffset
- intinfo[num].headeroffset:=headeroffset
- intchangelist[num]:=TRUE
- ENDIF
- ENDPROC
-
- PROC int_pattern(num,news)
- IF StrCmp(intinfo[num].pattern,news)=FALSE
- strcopy(intinfo[num].pattern,news)
- intchangelist[num]:=TRUE
- ENDIF
- ENDPROC
-
- PROC int_songs(num,songs)
- intinfo[num].songs:=songs
- enablegads(ghint[num],[numoffgad[num],songs,numlengad[num],songs,
- numaddgad[num],songs,songsoffgad[num],songs,songslengad[num],songs,
- songsaddgad[num],songs,TAG_DONE])
- intchangelist[num]:=TRUE
- ENDPROC
-
- PROC int_numoff(num,songnumoffset)
- IF (intinfo[num].songnumoffset)<>songnumoffset
- intinfo[num].songnumoffset:=songnumoffset
- intchangelist[num]:=TRUE
- ENDIF
- ENDPROC
-
- PROC int_numlen(num,songnumlen)
- IF songnumlen=3
- intinfo[num].songnumlen:=4
- ELSE
- intinfo[num].songnumlen:=songnumlen
- ENDIF
- intchangelist[num]:=TRUE
- ENDPROC
-
- PROC int_numadd(num,songnumadd)
- IF (intinfo[num].songnumadd)<>songnumadd
- intinfo[num].songnumadd:=songnumadd
- intchangelist[num]:=TRUE
- ENDIF
- ENDPROC
-
- PROC int_songsoff(num,numsongsoffset)
- IF (intinfo[num].numsongsoffset)<>numsongsoffset
- intinfo[num].numsongsoffset:=numsongsoffset
- intchangelist[num]:=TRUE
- ENDIF
- ENDPROC
-
- PROC int_songslen(num,numsongslen)
- IF numsongslen=3
- intinfo[num].numsongslen:=4
- ELSE
- intinfo[num].numsongslen:=numsongslen
- ENDIF
- intchangelist[num]:=TRUE
- ENDPROC
-
- PROC int_songsadd(num,numsongsadd)
- IF (intinfo[num].numsongsadd)<>numsongsadd
- intinfo[num].numsongsadd:=numsongsadd
- intchangelist[num]:=TRUE
- ENDIF
- ENDPROC
-
- PROC int_use(num) HANDLE
- DEF index
- index:=intindex[num]
- SELECT index
- CASE INVGUI
- strcopy(intinfo[num].intname,getstr(ghint[num],intnamegad[num]))
- strcopy(intinfo[num].progname,getstr(ghint[num],prognamegad[num]))
- strcopy(intinfo[num].songarg,getstr(ghint[num],songarggad[num]))
- strcopy(intinfo[num].helparg,getstr(ghint[num],helparggad[num]))
- strcopy(intinfo[num].progargs,getstr(ghint[num],progargsgad[num]))
- strcopy(intinfo[num].console,getstr(ghint[num],consolegad[num]))
- CASE RECOGGUI
- intinfo[num].songnumoffset:=getinteger(ghint[num],numoffgad[num])
- intinfo[num].numsongsoffset:=getinteger(ghint[num],songsoffgad[num])
- intinfo[num].songnumadd:=getinteger(ghint[num],numaddgad[num])
- intinfo[num].numsongsadd:=getinteger(ghint[num],songsaddgad[num])
- strcopy(intinfo[num].header,getstr(ghint[num],headergad[num]))
- intinfo[num].headeroffset:=getinteger(ghint[num],headeroffgad[num])
- strcopy(intinfo[num].pattern,getstr(ghint[num],patterngad[num]))
- ENDSELECT
- IF ghints
- intlist.change2(num,intinfo[num].intname)
- refreshintlist()
- ENDIF
- closeint(num)
- intschange:=TRUE
- EXCEPT
- ENDPROC
-
- PROC int_cancel(num)
- IF intchangelist[num]
- CopyMem(intinfo3[num],intinfo[num],SIZEOF interfaceinfo)
- StrCopy(intname[num],intinfo[num].intname)
- StrCopy(progname[num],intinfo[num].progname)
- StrCopy(progargs[num],intinfo[num].progargs)
- StrCopy(console[num],intinfo[num].console)
- StrCopy(songarg[num],intinfo[num].songarg)
- StrCopy(helparg[num],intinfo[num].helparg)
- StrCopy(pattern[num],intinfo[num].pattern)
- StrCopy(header[num],intinfo[num].header)
- ENDIF
- closeint(num)
- ENDPROC
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- message and interrupt control
- */
-
- PROC multiloop2(mh:PTR TO multihandle)
- DEF res=-1,wakeupsigs
- WHILE res<0
- EXIT mh.opencount=0
- wakeupsigs:=Wait(vb.mainsig OR mh.sig)
- IF wakeupsigs AND vb.mainsig THEN ticker_()
- res:=multimessage(mh)
- ENDWHILE
- ENDPROC res
-
- PROC ticker_()
- IF ticker AND int
- IF int.running()
- titletimer__()
- ELSE
- IF modnum<(nummods-1)
- main_nextmod()
- ELSE
- stopmain()
- ENDIF
- ENDIF
- ENDIF
- ENDPROC
-
- PROC titletimer__()
- DEF hours2=0,mins2=0,secs2=0,figure[4]:STRING,intname[INTERFACE]:STRING
- IF ti.started THEN hours2,mins2,secs2:=ti.stop()
- IF (hours<>hours2) OR (mins<>mins2) OR (secs<>secs2)
- hours:=hours2
- mins:=mins2
- secs:=secs2
- StrCopy(maintitle,'EYP, ')
- IF int
- StringF(intname,'\s, ',int.intinfo.intname)
- StrAdd(maintitle,intname)
- ENDIF
- IF hours>0
- StringF(figure,'\d:',hours)
- StrAdd(maintitle,figure)
- ENDIF
- IF mins>=10
- StringF(figure,'\z\d[2]:',mins)
- StrAdd(maintitle,figure)
- ELSE
- StringF(figure,'\z\d[1]:',mins)
- StrAdd(maintitle,figure)
- ENDIF
- StringF(figure,'\z\d[2]',secs)
- StrAdd(maintitle,figure)
- changetitle(ghmain,maintitle)
- ENDIF
- ENDPROC
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- EasyGUI support
- */
-
- PROC enablegads(gh,enablelist:PTR TO LONG)
- DEF item=0
- REPEAT
- setdisabled(gh,enablelist[item],Not(enablelist[item+1]))
- item:=item+2
- UNTIL enablelist[item]=0
- ENDPROC
-
- PROC resizewin(gh:PTR TO guihandle,x,y,xs,ys)
- DEF win:PTR TO window
- win:=gh.wnd
- IF ((x<>-1) AND (y<>-1)) AND ((x<>win.leftedge) OR (y<>win.topedge))
- movewin(gh,x,y)
- ENDIF
- IF ((xs<>-1) AND (ys<>-1)) AND ((xs<>win.width) OR (ys<>win.height))
- sizewin(gh,xs,ys)
- ENDIF
- ENDPROC
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- reqtooller support
- */
-
- PROC filereq(title,fullfilename)
- DEF pathname[FULL]:STRING,success
- StrCopy(pathname,fullfilename,PathPart(fullfilename)-fullfilename)
- rt.setattrs([RT_TITLE,title,RT_PATH,pathname,RT_FILENAME,FilePart(fullfilename),
- RT_FULLNAME,TRUE,TAG_DONE])
- IF (success:=rt.req(RTREQ_FILE)) THEN strcopy(fullfilename,rt.get(RT_FILENAME))
- ENDPROC success
-
- PROC pathreq(title,pathname)
- DEF success
- rt.setattrs([RT_TITLE,title,RT_PATH,pathname,TAG_DONE])
- IF (success:=rt.req(RTREQ_PATH)) THEN strcopy(pathname,rt.get(RT_PATH))
- ENDPROC success
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- shell and Workbench args
- */
-
- PROC startupargs() HANDLE
- DEF args[2]:ARRAY OF LONG,rdargs,wb:PTR TO wbstartup,p=FALSE
- IF (wb:=wbmessage)=NIL
- args[0]:=NIL
- args[1]:=NIL
- IF (rdargs:=ReadArgs('MOD=MODULE/M,PLST=PLAYLIST',args,NIL))=NIL
- Raise(ERR_READARGS)
- ELSE
- IF args[0]
- shelladdmods(args[0])
- p:=TRUE
- ENDIF
- IF args[1]
- StrCopy(plstfilename,args[1])
- loadplst(TRUE)
- p:=TRUE
- ENDIF
- FreeArgs(rdargs)
- ENDIF
- ELSE
- IF wb.numargs>1
- wbaddmods(wb)
- p:=TRUE
- ENDIF
- ENDIF
- IF p
- refreshplst()
- plstitem(0)
- play()
- ENDIF
- EXCEPT
- SELECT exception
- CASE ERR_READARGS
- errorreq('Couldn''t parse shell arguments.','shellargs')
- ENDSELECT
- ENDPROC
-
- PROC shelladdmods(shellarg:PTR TO LONG)
- DEF i=0,dir,file,filepart
- WHILE ((file:=shellarg[i])<>NIL) AND ((dir:=String(FULL))<>NIL)
- filepart:=FilePart(file)
- IF filepart>file THEN StrCopy(dir,file,filepart-file)
- plst.add(dir,filepart)
- i++
- ENDWHILE
- nummods:=plst.numitems()
- ENDPROC
-
- PROC wbaddmods(wb:PTR TO wbstartup)
- DEF i,args:PTR TO wbarg,lockname[FULL]:STRING
- args:=wb.arglist
- FOR i:=1 TO (wb.numargs-1)
- IF NameFromLock(args[i].lock,lockname,FULL)
- plst.add(lockname,args[i].name)
- ENDIF
- ENDFOR
- nummods:=plst.numitems()
- ENDPROC
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- load and save playlist
- */
-
- PROC loadplst(append=FALSE) HANDLE
- DEF buffer=NIL,bufferlen=0,nummods2,success=FALSE,i,j=2, -> skip 2 bytes (1 int) = nummods2
- dirname2[FULL]:ARRAY,filename2[FULL]:ARRAY
- buffer,bufferlen:=readfile(plstfilename,0,'EYPL',FILEHEADER,VERSION)
- IF (nummods2:=Int(buffer))=0 THEN Raise(ERR_NOMOD)
- IF append
- nummods:=nummods+nummods2
- ELSE
- nummods:=nummods2
- plst.clear()
- ENDIF
- FOR i:=0 TO nummods2-1
- strget(dirname2,buffer,{j})
- strget(filename2,buffer,{j})
- plst.add(dirname2,filename2)
- ENDFOR
- success:=TRUE
- IF debug THEN PrintF('loaded: \s, modules: \d\n',plstfilename,nummods)
- EXCEPT DO
- END buffer[bufferlen]
- ReThrow()
- ENDPROC success
-
- PROC saveplst(askoverwrite) HANDLE
- DEF buffer=NIL,bufferlen=0,success=FALSE,i,j,oldpos
- IF nummods
- bufferlen:=FILEHEADER+2+(2*FULL*nummods)
- NEW buffer[bufferlen]
- strcopy(buffer,'EYPL')
- PutChar(buffer+FILEHEADER-1,VERSION)
- PutInt(buffer+FILEHEADER,nummods)
- j:=FILEHEADER+2
- oldpos:=plst.pos()
- FOR i:=0 TO nummods-1
- plst.item(i)
- strput(buffer,plst.dirlist.obj(),{j})
- strput(buffer,plst.filelist.obj(),{j})
- ENDFOR
- plst.item(oldpos)
- writefile(plstfilename,buffer,j,askoverwrite)
- success:=TRUE
- IF debug THEN PrintF('saved: \s, modules: \d\n',plstfilename,nummods)
- ENDIF
- EXCEPT DO
- END buffer[bufferlen]
- ENDPROC success
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- load and save prefs
- */
-
- PROC loadprefs() HANDLE
- DEF buffer=NIL,bufferlen=0,success=FALSE,i=0
- buffer,bufferlen:=readfile(prefsfilename,0,'EYPP',FILEHEADER,VERSION)
-
- strget(modpath,buffer,{i})
- strget(plstpath,buffer,{i})
- mainx:=longget(buffer,{i})
- mainy:=longget(buffer,{i})
- mainxs:=longget(buffer,{i})
- mainys:=longget(buffer,{i})
-
- success:=TRUE
- IF debug THEN PrintF('loaded: \s\n',prefsfilename)
- EXCEPT DO
- END buffer[bufferlen]
- ENDPROC success
-
- PROC saveprefs(askoverwrite,snapshot=FALSE) HANDLE
- DEF buffer=NIL,bufferlen=0,i,success=FALSE,win:PTR TO window
- bufferlen:=FILEHEADER+StrLen(modpath)+1+StrLen(plstpath)+1+(4*4)
- -> 4*4=main window snapshot + 4*4=ints window snapshot
- NEW buffer[bufferlen]
- strcopy(buffer,'EYPP')
- PutChar(buffer+FILEHEADER-1,VERSION)
- i:=FILEHEADER
-
- strput(buffer,modpath,{i})
- strput(buffer,plstpath,{i})
-
- IF snapshot
- win:=ghmain.wnd
- mainx:=win.leftedge
- mainy:=win.topedge
- mainxs:=win.width
- mainys:=win.height
- ENDIF
- longput(buffer,mainx,{i})
- longput(buffer,mainy,{i})
- longput(buffer,mainxs,{i})
- longput(buffer,mainys,{i})
-
- writefile(prefsfilename,buffer,i,askoverwrite)
- success:=TRUE
- IF debug THEN PrintF('saved: \s\n',prefsfilename)
- EXCEPT DO
- END buffer[bufferlen]
- ENDPROC success
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- load and save interfaces
- */
-
- PROC loadints(append=FALSE) HANDLE
- DEF buffer=NIL,bufferlen=0,numints2,intinfol:PTR TO interfaceinfo,i,appendpos=0,j=1, -> skip 1 byte = numints2
- success=FALSE
- buffer,bufferlen:=readfile(intsfilename,0,'EYPI',FILEHEADER,VERSION)
- IF (numints2:=Char(buffer))=0 THEN Raise(ERR_NOINT)
- IF append
- numints2:=numints+numints2
- NEW intinfol[numints2]
- FOR i:=0 TO numints-1
- CopyMem(intinfo[i],intinfol[i],SIZEOF interfaceinfo)
- ENDFOR
- appendpos:=numints
- ELSE
- NEW intinfol[numints2]
- ENDIF
- END intinfo[numints]
- numints:=numints2
- intinfo:=intinfol
- FOR i:=appendpos TO numints2-1
- strget(intinfo[i].intname,buffer,{j})
- strget(intinfo[i].progname,buffer,{j})
- strget(intinfo[i].progargs,buffer,{j})
- strget(intinfo[i].console,buffer,{j})
- strget(intinfo[i].songarg,buffer,{j})
- strget(intinfo[i].helparg,buffer,{j})
- strget(intinfo[i].pattern,buffer,{j})
- strget(intinfo[i].header,buffer,{j})
-
- intinfo[i].quotes:=longget(buffer,{j})
- intinfo[i].filter:=longget(buffer,{j})
- intinfo[i].songs:=longget(buffer,{j})
- intinfo[i].songnumoffset:=longget(buffer,{j})
- intinfo[i].songnumlen:=longget(buffer,{j})
- intinfo[i].songnumadd:=longget(buffer,{j})
- intinfo[i].numsongsoffset:=longget(buffer,{j})
- intinfo[i].numsongslen:=longget(buffer,{j})
- intinfo[i].numsongsadd:=longget(buffer,{j})
- intinfo[i].headeroffset:=longget(buffer,{j})
- ENDFOR
- success:=TRUE
- IF debug THEN PrintF('loaded: \s, interfaces: \d\n',intsfilename,numints)
- EXCEPT DO
- END buffer[bufferlen]
- ENDPROC success
-
- PROC saveints(askoverwrite) HANDLE
- DEF buffer=NIL,bufferlen=0,i,j,success=FALSE
- IF numints
- bufferlen:=FILEHEADER+1+((SIZEOF interfaceinfo)*numints)
- NEW buffer[bufferlen]
- strcopy(buffer,'EYPI')
- PutChar(buffer+FILEHEADER-1,VERSION)
- PutChar(buffer+FILEHEADER,numints)
- j:=FILEHEADER+1
- FOR i:=0 TO numints-1
- strput(buffer,intinfo[i].intname,{j})
- strput(buffer,intinfo[i].progname,{j})
- strput(buffer,intinfo[i].progargs,{j})
- strput(buffer,intinfo[i].console,{j})
- strput(buffer,intinfo[i].songarg,{j})
- strput(buffer,intinfo[i].helparg,{j})
- strput(buffer,intinfo[i].pattern,{j})
- strput(buffer,intinfo[i].header,{j})
-
- longput(buffer,intinfo[i].quotes,{j})
- longput(buffer,intinfo[i].filter,{j})
- longput(buffer,intinfo[i].songs,{j})
- longput(buffer,intinfo[i].songnumoffset,{j})
- longput(buffer,intinfo[i].songnumlen,{j})
- longput(buffer,intinfo[i].songnumadd,{j})
- longput(buffer,intinfo[i].numsongsoffset,{j})
- longput(buffer,intinfo[i].numsongslen,{j})
- longput(buffer,intinfo[i].numsongsadd,{j})
- longput(buffer,intinfo[i].headeroffset,{j})
- ENDFOR
-
- writefile(intsfilename,buffer,j,askoverwrite)
- success:=TRUE
- IF debug THEN PrintF('saved: \s, interfaces: \d\n',intsfilename,numints)
- ENDIF
- EXCEPT DO
- END buffer[bufferlen]
- ENDPROC success
-
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- -- load and save support
- */
-
- PROC strget(dest,buffer,i)
- strcopy(dest,buffer+^i)
- ^i:=^i+StrLen(dest)+1
- ENDPROC
-
- PROC longget(buffer,i)
- DEF i2
- i2:=^i
- ^i:=^i+4
- ENDPROC Long(buffer+i2)
-
- PROC strput(buffer,source,i)
- strcopy(buffer+^i,source)
- ^i:=^i+StrLen(source)+1
- ENDPROC
-
- PROC longput(buffer,source,i)
- PutLong(buffer+^i,source)
- ^i:=^i+4
- ENDPROC
-