ecxtlacitka.png (2658 bytes) Ecx EcxDocs EcxMUI EcxExamples Back to Amiga E home page
/* 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
ghh don'tpanic