;/* filepat.c - Execute me to compile me with SASC 5.10
LC -b1 -cfistq -v -y -j73 filepat.c
Blink FROM LIB:c.o,filepat.o TO filepat LIBRARY LIB:LC.lib,LIB:Amiga.lib
quit
*/
#include <exec/types.h>
#include <intuition/intuition.h>
#include <intuition/screens.h>
#include <graphics/displayinfo.h>
#include <libraries/asl.h>
#include <workbench/startup.h>
#include <clib/asl_protos.h>
#include <clib/exec_protos.h>
#include <clib/intuition_protos.h>
#include <stdio.h>
#ifdef LATTICE
int CXBRK(void) { return(0); } /* Disable Lattice CTRL/C handling */
void chkabort(void) { return; } /* really */
#endif
UBYTE *vers = "$VER: filepat 37.0";
struct Library *AslBase = NULL;
struct Library *IntuitionBase = NULL;
struct Screen *screen = NULL;
struct Window *window = NULL;
void main(int argc, char **argv)
{
struct FileRequester *fr;
struct WBArg *frargs;
int x;
if (AslBase = OpenLibrary("asl.library", 37L))
{
if (IntuitionBase = (struct IntuitionBase *)
OpenLibrary("intuition.library", 37L))
{
if (screen = (struct Screen *)OpenScreenTags(NULL,
SA_DisplayID, HIRESLACE_KEY,
SA_Title, "ASL Test Screen",
TAG_END))
{
if (window = (struct Window *)OpenWindowTags(NULL,
WA_CustomScreen, screen,
WA_Title, "Demo Customscreen, File Pattern, Multi-select",
WA_Flags, WINDOWDEPTH | WINDOWDRAG,
TAG_END))
{
if (fr = (struct FileRequester *)
AllocAslRequestTags(ASL_FileRequest,
ASL_Hail, (ULONG)"FilePat/MultiSelect Demo",
ASL_Dir, (ULONG)"libs:",
ASL_File, (ULONG)"asl.library",
/* Initial pattern string for pattern matching */
ASL_Pattern, (ULONG)"~(rexx#?|math#?)",
/* Enable multiselection and pattern match gadget */
ASL_FuncFlags, FILF_MULTISELECT | FILF_PATGAD,
/* This requester comes up on the screen of this
** window (and uses window's message port, if any).
*/
ASL_Window, window,
TAG_DONE))
{
/* Put up file requester */
if (AslRequest(fr, 0L))
{
/* If the file requester's rf_NumArgs field
** is not zero, the user multiselected. The
** number of files is stored in rf_NumArgs.
*/
if (fr->rf_NumArgs)
{
/* rf_ArgList is an array of WBArg structures
** (see <workbench/startup.h>). Each entry in
** this array corresponds to one of the files
** the user selected (in alphabetical order).
*/
frargs = fr->rf_ArgList;
/* The user multiselected, step through
** the list of selected files.
*/
for ( x=0; x < fr->rf_NumArgs; x++ )
printf("Argument %d: PATH=%s FILE=%s\n",
x, fr->rf_Dir, frargs[x].wa_Name);
}
else
/* The user didn't multiselect, use the
** normal way to get the file name.
*/
printf("PATH=%s FILE=%s\n", fr->rf_Dir, fr->rf_File);
}
/* Done with the FileRequester, better return it */
FreeAslRequest(fr);
}
CloseWindow(window);
}
CloseScreen(screen);
}
CloseLibrary(IntuitionBase);
}
CloseLibrary(AslBase);
}
}
[Back to Amiga Developer Docs]