>  It should return a FileReference, not an open stream. I believe there
are methods that do that.

There are different APIs for that.

fileOpen*, as the name implies, _opens the file_ and returns the stream. (I
think this should be the case for fileSave*)

If you want file reference, then you can use e.g.

UIManager default chooseFileMatching: #() label: nil

or `chooseFileMatching:label:`, `chooseFileName:extensions:path:preview:`,
`chooseFullFileName:extensions:path:preview:`,
`chooseFullFileNameMatching:label:`.
Also some methods for selecting directories
(`chooseDirectory:path:`, chooseDirectory:from:`, ...)

iirc some of them actually return String (file path) instead of
FileReference. (
https://gist.github.com/peteruhnak/8ac6667b8eb11daee71517d0172b7355#file-ui-manager-md
)

So it can be confusing, but the API is already available.

Also iirc UIManager should be preferred over UITheme builder.

Peter

On Thu, Sep 6, 2018 at 9:57 PM Sven Van Caekenberghe <[email protected]> wrote:

>
>
> > On 6 Sep 2018, at 21:37, Torsten Bergmann <[email protected]> wrote:
> >
> > Hi,
> >
> > A question to those who worked on the new streams for Pharo 7:
> >
> >
> > In PHARO 6 I used the following expression to open a file dialog and let
> the user choose
> > a binary file:
> >
> >    s := UITheme builder fileOpen: 'Choose a file' extensions: #('exe').
> >
> > This returned
> > - either nil (when file dialog was canceled)
> > - a "MultiByteFileStream" instance when a file was selected
> >
> > The MultiByteFileStream instance already had the name of the file (=
> full path) and I was
> > able to query it for further use:
> >
> > s := UITheme builder fileOpen: 'Choose a file' extensions: #('exe').
> > s name inspect
> >
> > (for instance to display which file is processed in a window by showing
> the full path)
> >
> >
> >
> > Now in PHARO 7 same expression returns an instance of
> ZnCharacterReadStream (as MultiByteFileStream
> > is deprecated):
> >
> > s := UITheme builder fileOpen: 'Choose a file' extensions: #('exe').
> >
> > and  ZnCharacterReadStream  does not understand #name - and in fact the
> info about the name is
> > totally lost/not available. To me this looks missing/broken.
> >
> > So what is the recommended way in Pharo 7 to open a file dialog, let the
> use choose a file
> > and get a file stream but also the name? IMHO this is either broken or
> missing...
> >
> > Thanks
> > T.
>
> It should return a FileReference, not an open stream. I believe there are
> methods that do that.
>
> But that is an incompatible API change (same selector, different return
> type). So hard to decide.
>
>
>

Reply via email to