/* AmigaE Asl file requester multiselect example ghh 2019 */
MODULE 'asl','libraries/asl'
MODULE 'workbench/startup' /* wbarg */
ENUM ERR_NONE, ERR_ASL, ERR_LIB /* errors */
DEF fname[512]:STRING /* Estring pro jmeno souboru*/
DEF fr:PTR TO filerequester /* asl module */
RAISE ERR_ASL IF AllocAslRequest()=NIL, /* hlaseni chyb */
ERR_LIB IF OpenLibrary()=NIL
/* /// -------------------------------- main */
PROC main() HANDLE
aslbase:=OpenLibrary('asl.library',37)
fr:=AllocAslRequest(ASL_FILEREQUEST, /* fr - ASL_FILEREQUEST=typ filerequester */
[ASLFR_TITLETEXT,'Select file(s)', /* napis na requesteru */
ASLFR_REJECTICONS, TRUE, /* nezobrazovat ikony */
ASLFR_DOMULTISELECT, TRUE, /* povolit vyber vice souboru */
ASLFR_INITIALDRAWER, 'Ram:', /* pocatecni adresar */
ASLFR_DOPATTERNS, TRUE, /* povolit masku pro vyber */
NIL])
IF AslRequest(fr, NIL) = NIL /* pokud je requester zavren nebo tlaciko cancel */
WriteF('User Cancelled\n')
ELSE
WriteF('Asl req ok :)\n')
IF fr.numargs > 1 /* pokud je vybran vic nez jeden soubor provede funkci printselframes */
printselframes(fr.arglist,fr.numargs) /* dva argumenty pro funkci arglist a numargs (soucast asl.library) */
ELSE /* pokud je vybran jen jeden soubor */
AddPart(fname,fr.drawer,256) /* parametr drawer - cast cesty k souboru je pridana do Estringu fname */
AddPart(fname,fr.file,256) /* parametr file - samotny nazev souboru v Estringu je ted kompletni cesta k souboru */
IF FileLength(fname) >0 /* pokud je soubor vetsi nez nula */
WriteF('Jeden soubor \s\n',fname) /* vypise nazev souboru */
ELSE
WriteF('Soubor nebyl vybran nebo soubor \s neexistuje!\n',fname) /* pokud ne soubor nebyl vybran nebo neexistuje */
ENDIF
ENDIF
ENDIF
EXCEPT DO
IF fr THEN FreeAslRequest(fr) /* pokud vse probehlo spravne uvolni-zavre requester */
IF aslbase THEN CloseLibrary(aslbase) /* zavre asl knihovnu */
SELECT exception
CASE ERR_ASL; WriteF('Error: Could not allocate ASL request\n') /* pokud se vyskytne chyba vypise hlasku */
CASE ERR_LIB; WriteF('Error: Could not open ASL library\n')
ENDSELECT
ENDPROC
/* /// */
PROC printselframes(rqarg:PTR TO wbarg, numargs) /* funkce prijma dva parametry (wbarg - startup module) */
DEF i
AddPart(fname,fr.drawer,256)
AddPart(fname,rqarg[numargs - 1].name,256) /* posledni soubor */
IF FileLength(fname) >1 /* overeni existence souboru */
FOR i:=0 TO numargs - 1
AddPart(fname,fr.drawer,256)
AddPart(fname,rqarg[i].name,256) /* slozi cestu k adresari a k souboru [i] je cislo */
WriteF('\s\n',fname) /* vypise vsechny vybrane soubory */
ENDFOR
ELSE
WriteF('Soubor print \s neexistuje!\n',fname)
ENDIF
WriteF('pocet vybranych souboru \d\n',numargs)
ENDPROC
|