Diálogo
Esta parte do tempo de execução fornece acesso a dialogos nativos, como os Seletores de Arquivo e caixas de mensagem.
O dialog não é suportado pelo runtime do JS.
OpenDirectoryDialog
Abre um diálogo que solicita o usuário para selecionar um diretório. Pode ser personalizado usando o OpenDialogOptions.
Go: OpenDirectoryDialog(ctx context.Context, dialogOptions OpenDialogOptions) (string, error)
Retorna: Diretório selecionado (nulo se o usuário cancelar) ou um erro
OpenFileDialog
Abre um diálogo que solicita o usuário para selecionar um arquivo. Pode ser personalizado usando o OpenDialogOptions.
Go: OpenFileDialog(ctx context.Context, dialogOptions OpenDialogOptions) (string, error)
Retorna: Arquivo selecionado (nulo se o usuário cancelar) ou um erro
OpenMultipleFilesDialog
Abre um diálogo que pede o usuário para selecionar vários arquivos. Pode ser personalizado usando o OpenDialogOptions.
Go: OpenMultipleFilesDialog(ctx context.Context, dialogOptions OpenDialogOptions) ([]string, error)
Retorna: Arquivos selecionados (nulo se o usuário cancelar) ou um erro
SaveFileDialog
Abre um diálogo que solicita o usuário selecionar um nome de arquivo para salvar. Pode ser personalizado usando SaveDialogOptions.
Go: SaveFileDialog(ctx context.Context, dialogOptions SaveDialogOptions) (string, error)
Retorna: O arquivo selecionado (nulo se o usuário cancelar) ou um erro
MessageDialog
Exibe uma mensagem usando a caixa de diálogo da mensagem. Pode ser personalizado usando o MessageDialogOptions.
Go: MessageDialog(ctx context.Context, dialogOptions MessageDialogOptions) (string, error)
Retorna: O texto do botão selecionado ou um erro
Opções
OpenDialogOptions
type OpenDialogOptions struct {
    DefaultDirectory           string
    DefaultFilename            string
    Title                      string
    Filters                    []FileFilter
    ShowHiddenFiles            bool
    CanCreateDirectories       bool
    ResolvesAliases            bool
    TreatPackagesAsDirectories bool
}
| Atributo | Descrição | Win | Mac | Lin | 
|---|---|---|---|---|
| DefaultDirectory | O diretório que a caixa de diálogo será exibida quando aberta | ✅ | ✅ | ✅ | 
| DefaultFilename | O nome do arquivo padrão | ✅ | ✅ | ✅ | 
| Title | Título para a caixa de diálogo | ✅ | ✅ | ✅ | 
| Filters | Uma lista de filtros de arquivos | ✅ | ✅ | ✅ | 
| ShowHiddenFiles | Exibir arquivos ocultos pelo sistema | ✅ | ✅ | |
| CanCreateDirectories | Permitir que o usuário crie diretórios | ✅ | ||
| ResolvesAliases | Se verdadeiro, retorna o arquivo não o alias | ✅ | ||
| TreatPackagesAsDirectories | Permitir a navegação em pacotes | ✅ | 
SaveDialogOptions
type SaveDialogOptions struct {
    DefaultDirectory           string
    DefaultFilename            string
    Title                      string
    Filters                    []FileFilter
    ShowHiddenFiles            bool
    CanCreateDirectories       bool
    TreatPackagesAsDirectories bool
}
| Atributo | Descrição | Win | Mac | Lin | 
|---|---|---|---|---|
| DefaultDirectory | O diretório que a caixa de diálogo será exibida quando aberta | ✅ | ✅ | ✅ | 
| DefaultFilename | O nome do arquivo padrão | ✅ | ✅ | ✅ | 
| Title | Título para a caixa de diálogo | ✅ | ✅ | ✅ | 
| Filters | Uma lista de filtros de arquivos | ✅ | ✅ | ✅ | 
| ShowHiddenFiles | Exibir arquivos ocultos pelo sistema | ✅ | ✅ | |
| CanCreateDirectories | Permitir que o usuário crie diretórios | ✅ | ||
| TreatPackagesAsDirectories | Permitir a navegação em pacotes | ✅ | 
MessageDialogOptions
type MessageDialogOptions struct {
    Type          DialogType
    Title         string
    Message       string
    Buttons       []string
    DefaultButton string
    CancelButton  string
}
| Atributo | Descrição | Win | Mac | Lin | 
|---|---|---|---|---|
| Tipo | O tipo de diálogo de mensagem, por exemplo, pergunta, informações... | ✅ | ✅ | ✅ | 
| Title | Título para a caixa de diálogo | ✅ | ✅ | ✅ | 
| Message | A mensagem para mostrar o usuário | ✅ | ✅ | ✅ | 
| Buttons | Uma lista de títulos de botões | ✅ | ||
| DefaultButton | O botão com este texto deve ser tratado como padrão. Vincule a return. | ✅* | ✅ | |
| CancelButton | O botão com este texto deve ser tratado como padrão. Vincule a return | ✅ | 
Windows
Windows tem tipos de diálogo padrão em que os botões não são personalizáveis. O valor retornado será um dos: "Ok", "Cancel", "Abort", "Retry", "Ignore", "Yes", "No", "Try Again" or "Continue".
Para diálogos de Perguntas, o botão padrão é "Sim" e o botão cancelar é "Não". Isso pode ser alterado definindo o valor do DefaultButton para "No".
Exemplo:
    result, err := runtime.MessageDialog(a.ctx, runtime.MessageDialogOptions{
        Type:          runtime.QuestionDialog,
        Title:         "Question",
        Message:       "Do you want to continue?",
        DefaultButton: "No",
    })
Linux
Linux tem tipos de diálogo padrão em que os botões não são personalizáveis. O valor retornado será um de: "Ok", "Cancel", "Yes", "No"
Mac
Uma caixa de diálogo de mensagem no Mac pode especificar até 4 botões. Se nenhum DefaultButton ou CancelButton for dado, o primeiro botão é considerado padrão e está ligado à chave return.
Para o código a seguir:
selection, err := runtime.MessageDialog(b.ctx, runtime.MessageDialogOptions{
    Title:        "It's your turn!",
    Message:      "Select a number",
    Buttons:      []string{"one", "two", "three", "four"},
})
o primeiro botão é mostrado como padrão:

E se especificarmos o DefaultButton como "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",
})
o segundo botão será mostrado como padrão. Quando return é pressionado, o valor "dois" é retornado.

Se especificarmos agora o CancelButton como "três:
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",
})
o botão com "três" é mostrado na parte inferior do diálogo. Quando escape é pressionado, o valor "três" é retornado:

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
O Windows permite que você use vários filtros de arquivos em caixas de diálogo. Cada FileFilter aparecerá como uma entrada separada na caixa de diálogo:

Linux
Linux permite que você use vários filtros de arquivo em caixas de diálogo. Cada FileFilter aparecerá como uma entrada separada na caixa de diálogo:

Mac
As caixas de diálogo Mac possuem apenas o conceito de um único conjunto de padrões para filtrar arquivos. Se vários Filtros forem fornecidos, o Wails usará todos os padrões definidos.
Exemplo:
    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",
            },
        },
    })
Isso resultará na caixa de diálogo Abrir Arquivo usando *.png,*.jpg,*.mov,*.mp4 como filtro.