如何询问用户文件名?

z--*_*z-- 5 smalltalk pharo

搜索FileDialog的调用

我想问一下用户在Pharo 4.0中的文件名

通过观察员,我找到了上课

  FileDialogWindow
Run Code Online (Sandbox Code Playgroud)

用一种方法

  answerFileName
Run Code Online (Sandbox Code Playgroud)

寻找#answerFileName的发件人,我上课了

  UITheme
Run Code Online (Sandbox Code Playgroud)

在方法中调用它的位置

  chooseFileNameIn: aThemedMorph 
  title: title 
  extensions: exts 
  path: path preview: preview
Run Code Online (Sandbox Code Playgroud)

从那里我来上课

 TEasilyThemed
Run Code Online (Sandbox Code Playgroud)

用这个方法

 chooseFileName: title extensions: exts path: path preview: preview
Run Code Online (Sandbox Code Playgroud)

从那里我终于上课了

  WidgetExamples class >> exampleDialogs
Run Code Online (Sandbox Code Playgroud)

然后我接到电话

WidgetExamples exampleBuilder 
chooseFileName: 'Pick a file name' 
extensions: nil path: nil preview: nil.
Run Code Online (Sandbox Code Playgroud)

但是一个print it这样的表达并没有给回一个文件名.

调用文件对话框的常规方法是什么?

答案后的补充问题

提到这项服务提到了两个类.

  • UIManager的
  • UITheme

UIManager评论

UIManager是各种UI请求的调度程序.

UITheme评论

用户界面主题的通用超类.提供以标准方式创建新变形的方法,各种"服务",如文件对话框,消息对话框等,以及定制各种变形外观方面的方法.虽然在概念上是抽象的,但没有代码"缺失".因此,子类应该覆盖他们希望改变的方面.

这两种方法有什么区别?

Uko*_*Uko 6

最简单的方法是使用:

UIManager default chooseFileMatching: nil
Run Code Online (Sandbox Code Playgroud)

您可以将模式指定为:

UIManager default chooseFileMatching: #('*.jpg' '*.png')
Run Code Online (Sandbox Code Playgroud)

您还可以为对话框指定标签:

UIManager default
    chooseFileMatching: #('*.jpg' '*.png')
    label: 'Please select and image to process'
Run Code Online (Sandbox Code Playgroud)