[SELECT-FILE crashes under ACL if called with no arguments.]
OK, seems like one problem for me is that the file-selector is not happy when given a pathname argument (or a default) that has no :name component. In that case it crashes (at least for me). I haven't identified why.
So
(select-file) crashes but
(select-file :pathname (parse-namestring "/home/rpg/lisp/mcclim/file-selector.lisp")) is fine.[1]
Here are my *default-pathname-defaults*:
CL-USER(11): *default-pathname-defaults* #p"/home/rpg/lisp/mcclim/" CL-USER(12): (describe *) #p"/home/rpg/lisp/mcclim/" is a structure of type PATHNAME. It has these slots: HOST NIL DEVICE :UNSPECIFIC DIRECTORY (:ABSOLUTE "home" "rpg" "lisp" "mcclim") NAME NIL TYPE NIL VERSION :UNSPECIFIC NAMESTRING "/home/rpg/lisp/mcclim/" HASH NIL DIR-NAMESTRING "/home/rpg/lisp/mcclim/" PLIST NIL
... I don't know if these are odd...
gen-wild-pathname gives the following:
CL-USER(13): (clim-listener::gen-wild-pathname *default-pathname-defaults*) #p"/home/rpg/lisp/mcclim/*.*" CL-USER(14): (describe (clim-listener::gen-wild-pathname *default-pathname-defaults*)) #p"/home/rpg/lisp/mcclim/*.*" is a structure of type PATHNAME. It has these slots: HOST NIL DEVICE :UNSPECIFIC DIRECTORY (:ABSOLUTE "home" "rpg" "lisp" "mcclim") NAME :WILD TYPE :WILD VERSION :UNSPECIFIC NAMESTRING NIL HASH NIL DIR-NAMESTRING NIL PLIST NIL
Aha! If I change the default pathname argument to be the following:
(pathname (clim-listener::gen-wild-pathname *default-pathname-defaults*))
instead of just *default-pathname-defaults*, that seems to fix things by changind NIL to :WILD for NAME.
A couple of remaning problems:
1. running select-file makes the size of the clim-listener window go crazy. First, it shrinks to fit only the accepting-values (I'm not sure I have the right term here), and leaves the directory listing pane out of the window. Then, after I select a file, it leaves only the
2. Unless I press return after entering a string in the filename textbox, that input is simply discarded when I press Exit for the file-selector as a whole. This is probably McCLIM's fault as a whole, rather than yours, right? But it's quite annoying. The user has the right to expect that what's on the screen is what is going to be accepted. Adding an extra requirement for a "Simon Says" gesture [2] is really a Bad Thing.
Footnotes: [1] Ouch! I wish I could cut and paste out of the clim-listener! :-/
[2] This is an American (poss British, too?) children's game, where one player tries to trick the other into doing an action without explicit permission being given.