Pertanyaan Bagaimana saya menanyakan nama file kepada pengguna?


Mencari panggilan FileDialog

Saya ingin bertanya kepada pengguna untuk nama file di Pharo 4.0

Melalui pengintai saya menemukan kelas

  FileDialogWindow

dengan metode

  answerFileName

Mencari pengirim #answerFileName saya sampai di kelas

  UITheme

dimana itu disebut dalam metode

  chooseFileNameIn: aThemedMorph 
  title: title 
  extensions: exts 
  path: path preview: preview

Dan dari sana saya datang ke kelas

 TEasilyThemed

dengan metode

 chooseFileName: title extensions: exts path: path preview: preview

Dari sana akhirnya saya sampai di kelas

  WidgetExamples class >> exampleDialogs

Dan kemudian saya memiliki panggilan

WidgetExamples exampleBuilder 
chooseFileName: 'Pick a file name' 
extensions: nil path: nil preview: nil.

Namun a print it dari ekspresi ini tidak berikan kembali nama file.

Pertanyaan

Apa cara biasa memanggil dialog file?

Pertanyaan tambahan setelah jawaban

Dua kelas disebutkan menyediakan layanan ini.

  • UIManager
  • UITheme

UIManager berkomentar

UIManager adalah dispatcher untuk berbagai permintaan UI.

Komentar UITheme

Superclass umum untuk tema Antarmuka Pengguna. Menyediakan metode untuk membuat morph baru dengan cara standar, berbagai "layanan" seperti dialog file, dialog pesan dll, dan juga metode untuk menyesuaikan aspek penampilan berbagai morphs. Meskipun secara konsep abstrak, tidak ada kode yang "hilang". Oleh karena itu, subclass harus mengesampingkan aspek yang ingin diubah.

Apa perbedaan antara dua pendekatan ini?


5
2017-08-25 07:55


asal


Jawaban:


Cara termudah adalah menggunakan:

UIManager default chooseFileMatching: nil

Anda dapat menentukan pola sebagai:

UIManager default chooseFileMatching: #('*.jpg' '*.png')

Anda juga dapat menentukan label untuk dialog:

UIManager default
    chooseFileMatching: #('*.jpg' '*.png')
    label: 'Please select and image to process'

6
2017-08-25 08:16



Apa yang saya gunakan di salah satu aplikasi demo saya adalah

MindmapNode class>>open
    |fileName|
    fileName := UITheme current chooseFileIn: World title: 'Choose file' extensions: nil path: nil preview:nil.
    fileName ifNotNil: [ (FLMaterializer materializationFromFileNamed: fileName)
        root openInWorld attachAllSubnodes detachAllSubnodes ]

MindmapNode>>saveMap
    |fileName|
    fileName := UITheme current fileSaveIn: World title: 'Choose file' extensions: nil path: nil.
    fileName ifNotNil: [ FLSerializer serialize: self toFileNamed: fileName].

UIManager yang peduli tentang bisa berlari tanpa kepala, dari garis perintah. Maka Anda ingin dapat memberikan nama file baik dalam parameter atau file input. Dalam situasi standar gambar, default UIManager adalah MorphicUIManager yang mendelegasikan ke tema saat ini.

Jadi menggunakan UIManager mungkin akan lebih baik


2
2017-08-25 08:32