## 11.1 Library ``find_file''

The library `library(find_file)` defines the class finder, representing a modal dialog window for entering a filename. This class defines the method `finder`<-`file':

finder <-file: Exists:[bool], Ext:[name|chain], Dir:[directory], Def:[file]
  name Ask the user for a file. If Exists is @on, only existing files can be returned. Ext is either an atom denoting a single extension or a chain of allowed extensions. Extensions can be specified with or without the leading dot. I.e. both `pl` and `'.pl'` are valid specifications of files ending in `'.pl'`. Dir is the directory to start from. When omitted, this is the last directory visited by this instance of finder or the current working directory. Def is the default file-name returned. When omitted there is no default.

  Below is the typical declaration and usage. In this example we ask for an existing Prolog file.

      :- pce_autoload(finder, library(find_file)).
      :- pce_global(@finder, new(finder)).

              ...,
              get(@finder, file, @on, pl, PlFile),
              ...,

The Windows version of XPCE implements the method `display`<-`win_file_name', using the Win32 API standard functions GetOpenFileName() or GetSaveFileName() to obtain a file-name for saving or loading. If this method is defined, `finder`<-`file' uses it, showing the users familiar dialog.

Names for the extensions (as `Prolog file' rather than '*.pl') can be defined by extending the multifile predicate pce_finder:file_type/2. See the library source for the standard definition.