ダイアログ
ランタイムでは、ファイルセレクターやメッセージボックスといったネイティブダイアログへのアクセスを提供しています。
現在、Javascriptランタイムではダイアログをサポートしていません。
OpenDirectoryDialog
ユーザにディレクトリの選択を求めるダイアログを開きます。 OpenDialogOptionsを使用してカスタマイズできます。
Go: OpenDirectoryDialog(ctx context.Context, dialogOptions OpenDialogOptions) (string, error)
返り値: 選択されたディレクトリ(キャンセルされた場合は空) またはエラー
OpenFileDialog
ユーザにファイルの選択を求めるダイアログを開きます。 OpenDialogOptionsを使用してカスタマイズできます。
Go: OpenFileDialog(ctx context.Context, dialogOptions OpenDialogOptions) (string, error)
返り値: 選択されたファイル(キャンセルされた場合は空) またはエラー
OpenMultipleFilesDialog
ユーザに複数ファイルの選択を求めるダイアログを開きます。 OpenDialogOptionsを使用してカスタマイズできます。
Go: OpenMultipleFilesDialog(ctx context.Context, dialogOptions OpenDialogOptions) ([]string, error)
返り値: 選択された複数ファイル(キャンセルされた場合はnil) またはエラー
SaveFileDialog
保存の目的でユーザにファイル名を入力選択させるダイアログを開きます。 SaveDialogOptionsを使用してカスタマイズできます。
Go: SaveFileDialog(ctx context.Context, dialogOptions SaveDialogOptions) (string, error)
返り値: 入力選択されたファイル(キャンセルされた場合は空) またはエラー
MessageDialog
メッセージダイアログを使用してメッセージを表示します。 MessageDialogOptionsを使用してカスタマイズできます。
Go: MessageDialog(ctx context.Context, dialogOptions MessageDialogOptions) (string, error)
返り値: 選択されたボタンのテキストまたはエラー
オプション
OpenDialogOptions
type OpenDialogOptions struct {
    DefaultDirectory           string
    DefaultFilename            string
    Title                      string
    Filters                    []FileFilter
    ShowHiddenFiles            bool
    CanCreateDirectories       bool
    ResolvesAliases            bool
    TreatPackagesAsDirectories bool
}
| フィールド | 説明 | Win | Mac | Lin | 
|---|---|---|---|---|
| DefaultDirectory | ダイアログが開かれたときに初期表示するディレクトリ | ✅ | ✅ | ✅ | 
| DefaultFilename | デフォルトファイル名 | ✅ | ✅ | ✅ | 
| Title | ダイアログのタイトル | ✅ | ✅ | ✅ | 
| Filters | ファイルフィルタのリスト | ✅ | ✅ | ✅ | 
| ShowHiddenFiles | システムの隠しファイルを表示 | ✅ | ✅ | |
| CanCreateDirectories | ユーザによるディレクトリの作成を許可する | ✅ | ||
| ResolvesAliases | エイリアスではなくファイルパスを返す | ✅ | ||
| TreatPackagesAsDirectories | パッケージへのナビゲーションを許可 | ✅ | 
SaveDialogOptions
type SaveDialogOptions struct {
    DefaultDirectory           string
    DefaultFilename            string
    Title                      string
    Filters                    []FileFilter
    ShowHiddenFiles            bool
    CanCreateDirectories       bool
    TreatPackagesAsDirectories bool
}
| フィールド | 説明 | Win | Mac | Lin | 
|---|---|---|---|---|
| DefaultDirectory | ダイアログが開かれたときに初期表示するディレクトリ | ✅ | ✅ | ✅ | 
| DefaultFilename | デフォルトファイル名 | ✅ | ✅ | ✅ | 
| Title | ダイアログのタイトル | ✅ | ✅ | ✅ | 
| Filters | ファイルフィルタのリスト | ✅ | ✅ | ✅ | 
| ShowHiddenFiles | システムの隠しファイルを表示 | ✅ | ✅ | |
| CanCreateDirectories | ユーザによるディレクトリの作成を許可する | ✅ | ||
| TreatPackagesAsDirectories | パッケージへのナビゲーションを許可 | ✅ | 
MessageDialogOptions
type MessageDialogOptions struct {
    Type          DialogType
    Title         string
    Message       string
    Buttons       []string
    DefaultButton string
    CancelButton  string
}
| フィールド | 説明 | Win | Mac | Lin | 
|---|---|---|---|---|
| Type | メッセージダイアログの種類 (質問、情報など) | ✅ | ✅ | ✅ | 
| Title | ダイアログのタイトル | ✅ | ✅ | ✅ | 
| Message | ユーザに表示するメッセージ | ✅ | ✅ | ✅ | 
| Buttons | ボタンテキストのリスト | ✅ | ||
| DefaultButton | 指定されたテキストのボタンをデフォルトボタンとして扱う。 returnキーにバインドされます。 | ✅* | ✅ | |
| CancelButton | 指定されたテキストのボタンをキャンセルボタンとして扱う。 escapeキーにバインドされます。 | ✅ | 
Windows
Windowsでは、ボタンのカスタマイズができない標準ダイアログタイプがあります。 返却される値は次のいずれかとなります: "Ok"、"Cancel"、"Abort"、"Retry"、"Ignore"、"Yes"、"No"、"Try Again"、"Continue"。
質問ダイアログの場合、デフォルトボタンは"Yes"、キャンセルボタンは"No"となります。 この設定は、DefaultButtonの値を"No"にすることで、変更できます。
例:
    result, err := runtime.MessageDialog(a.ctx, runtime.MessageDialogOptions{
        Type:          runtime.QuestionDialog,
        Title:         "Question",
        Message:       "Do you want to continue?",
        DefaultButton: "No",
    })
Linux
Linuxでは、ボタンのカスタマイズができない標準ダイアログタイプがあります。 返り値は次のいずれかになります: "Ok"、"Cancel"、"Yes"、"No"
Mac
Macのメッセージダイアログでは、最大4つまでのボタンを指定できます。 DefaultButtonやCancelButtonが指定されていない場合、1番目のボタンがデフォルトボタンとして扱われ、returnキーにバインドされます。
例えば次のようなコードの場合:
selection, err := runtime.MessageDialog(b.ctx, runtime.MessageDialogOptions{
    Title:        "It's your turn!",
    Message:      "Select a number",
    Buttons:      []string{"one", "two", "three", "four"},
})
1番目のボタンがデフォルトになります:

そしてDefaultButtonを"two"に設定した場合:
selection, err := runtime.MessageDialog(b.ctx, runtime.MessageDialogOptions{
    Title:         "It's your turn!",
    Message:       "Select a number",
    Buttons:       []string{"one", "two", "three", "four"},
    DefaultButton: "two",
})
2番目のボタンがデフォルトになります。 このときreturnキーが押されると、返り値として"two"が返却されます:

また、CancelButtonを"three"に設定した場合
selection, err := runtime.MessageDialog(b.ctx, runtime.MessageDialogOptions{
    Title:         "It's your turn!",
    Message:       "Select a number",
    Buttons:       []string{"one", "two", "three", "four"},
    DefaultButton: "two",
    CancelButton:  "three",
})
ダイアログの下部に"three"ボタンが表示されるようになります。 このときescapeキーが押されると、返り値として"three"が返却されます:

DialogType
const (
        InfoDialog     DialogType = "info"
        WarningDialog  DialogType = "warning"
        ErrorDialog    DialogType = "error"
        QuestionDialog DialogType = "question"
     )
FileFilter
type FileFilter struct {
    DisplayName string // Filter information EG: "Image Files (*.jpg, *.png)"
    Pattern     string // semi-colon separated list of extensions, EG: "*.jpg;*.png"
}
Windows
Windowsでは、ダイアログボックスで複数のファイルフィルタを使用できます。 それぞれのFileFiltersは、ダイアログ上で個別のエントリーとして表示されます:

Linux
Linuxでは、ダイアログボックスで複数のファイルフィルタを使用できます。 それぞれのFileFiltersは、ダイアログ上で個別のエントリーとして表示されます:

Mac
Macのダイアログでは、ファイルをフィルタするためのパターンセットは1つしか持たせることができません。 もし複数のFileFiltersを定義した場合、Wailsはそれらすべてのパターンを使用します。
例:
    selection, err := runtime.OpenFileDialog(b.ctx, runtime.OpenDialogOptions{
        Title: "Select File",
        Filters: []runtime.FileFilter{
            {
                DisplayName: "Images (*.png;*.jpg)",
                Pattern:     "*.png;*.jpg",
            }, {
                DisplayName: "Videos (*.mov;*.mp4)",
                Pattern:     "*.mov;*.mp4",
            },
        },
    })
このとき、ファイル選択ダイアログを開くと、*.png,*.jpg,*.mov,*.mp4がフィルタとして使用されます。