API do Gerenciador
A API do Gerenciador do Wails v3 oferece uma maneira organizada e descoberta de acessar a funcionalidade do aplicativo por meio de estruturas de gerenciador focadas. Esta nova estrutura de API agrupa métodos relacionados, mantendo total compatibilidade com a API tradicional do App.
Visão Geral
Seção intitulada “Visão Geral”A API do Gerenciador organiza a funcionalidade do aplicativo em onze áreas focadas:
app.Window- Criação, gerenciamento e callbacks de janelasapp.ContextMenu- Registro e gerenciamento de menus de contextoapp.KeyBinding- Gerenciamento de associações de teclas globaisapp.Browser- Integração com navegador (abertura de URLs e arquivos)app.Env- Informações de ambiente e estado do sistemaapp.Dialog- Operações de diálogo de arquivos e mensagensapp.Event- Manipulação de eventos personalizados e eventos do aplicativoapp.Menu- Gerenciamento do menu do aplicativoapp.Screen- Gerenciamento de telas e transformações de coordenadasapp.Clipboard- Operações de texto da área de transferênciaapp.SystemTray- Criação e gerenciamento de ícones na bandeja do sistema
Benefícios
Seção intitulada “Benefícios”- Melhor descoberta - O preenchimento automático do IDE mostra a superfície da API organizada
- Organização de código aprimorada - Métodos relacionados agrupados
- Manutenibilidade aprimorada - Separação de responsabilidades entre gerenciadores
- Extensibilidade futura - Mais fácil adicionar novos recursos a áreas específicas
A API do Gerenciador fornece acesso organizado a toda a funcionalidade do aplicativo:
// Eventos e manipulação de eventos personalizadosapp.Event.Emit("custom", data)app.Event.On("custom", func(e *CustomEvent) { ... })
// Gerenciamento de janelaswindow, _ := app.Window.GetByName("main")app.Window.OnCreate(func(window Window) { ... })
// Integração com navegadorapp.Browser.OpenURL("https://wails.io")
// Gerenciamento de menusmenu := app.Menu.New()app.Menu.Set(menu)
// Bandeja do sistemasystray := app.SystemTray.New()Referência do Gerenciador
Seção intitulada “Referência do Gerenciador”Gerenciador de Janelas
Seção intitulada “Gerenciador de Janelas”Gerencia a criação, recuperação e callbacks de ciclo de vida de janelas.
// Criar janelaswindow := app.Window.New()window := app.Window.NewWithOptions(options)current := app.Window.Current()
// Encontrar janelaswindow, exists := app.Window.GetByName("main")windows := app.Window.GetAll()
// Callbacks de janelaapp.Window.OnCreate(func(window Window) { // Lidar com a criação da janela})Gerenciador de Eventos
Seção intitulada “Gerenciador de Eventos”Lida com eventos personalizados e escuta de eventos do aplicativo.
// Eventos personalizadosapp.Event.Emit("userAction", data)cancelFunc := app.Event.On("userAction", func(e *CustomEvent) { // Lidar com o evento})app.Event.Off("userAction")app.Event.Reset() // Remover todos os ouvintes
// Eventos do aplicativoapp.Event.OnApplicationEvent(events.Common.ThemeChanged, func(e *ApplicationEvent) { // Lidar com a mudança de tema do sistema})Gerenciador de Navegador
Seção intitulada “Gerenciador de Navegador”Fornece integração com navegador para abrir URLs e arquivos.
// Abrir URLs e arquivos no navegador padrãoerr := app.Browser.OpenURL("https://wails.io")err := app.Browser.OpenFile("/path/to/document.pdf")Gerenciador de Ambiente
Seção intitulada “Gerenciador de Ambiente”Acesso a informações do ambiente do sistema.
// Obter informações do ambienteenv := app.Env.Info()fmt.Printf("OS: %s, Arch: %s\n", env.OS, env.Arch)
// Verificar o tema do sistemaif app.Env.IsDarkMode() { // O modo escuro está ativo}
// Abrir o gerenciador de arquivoserr := app.Env.OpenFileManager("/path/to/folder", false)Gerenciador de Diálogos
Seção intitulada “Gerenciador de Diálogos”Acesso organizado a diálogos de arquivos e mensagens.
// Diálogos de arquivosresult, err := app.Dialog.OpenFile(). AddFilter("Text Files", "*.txt"). PromptForSingleSelection()
result, err = app.Dialog.SaveFile(). SetDefaultFilename("document.txt"). PromptForSingleSelection()
// Diálogos de mensagensapp.Dialog.Info(). SetTitle("Information"). SetMessage("Operation completed successfully"). Show()
app.Dialog.Error(). SetTitle("Error"). SetMessage("An error occurred"). Show()Gerenciador de Menus
Seção intitulada “Gerenciador de Menus”Criação e gerenciamento de menus do aplicativo.
// Criar e definir o menu do aplicativomenu := app.Menu.New()fileMenu := menu.AddSubmenu("File")fileMenu.Add("New").OnClick(func(ctx *Context) { // Lidar com o clique no menu})
app.Menu.Set(menu)
// Exibir diálogo Sobreapp.Menu.ShowAbout()Gerenciador de Associações de Teclas
Seção intitulada “Gerenciador de Associações de Teclas”Gerenciamento dinâmico de associações de teclas globais.
// Adicionar associações de teclasapp.KeyBinding.Add("ctrl+n", func(window *WebviewWindow) { // Lidar com Ctrl+N})
app.KeyBinding.Add("ctrl+q", func(window *WebviewWindow) { app.Quit()})
// Remover associações de teclasapp.KeyBinding.Remove("ctrl+n")
// Obter todas as associaçõesbindings := app.KeyBinding.GetAll()Gerenciador de Menus de Contexto
Seção intitulada “Gerenciador de Menus de Contexto”Gerenciamento avançado de menus de contexto (para autores de bibliotecas).
// Criar e registrar menu de contextomenu := app.ContextMenu.New()app.ContextMenu.Add("myMenu", menu)
// Recuperar menu de contextomenu, exists := app.ContextMenu.Get("myMenu")
// Remover menu de contextoapp.ContextMenu.Remove("myMenu")Gerenciador de Telas
Seção intitulada “Gerenciador de Telas”Gerenciamento de telas e transformações de coordenadas para configurações de múltiplos monitores.
// Obter informações da telascreens := app.Screen.GetAll()primary := app.Screen.GetPrimary()
// Transformações de coordenadasphysicalPoint := app.Screen.DipToPhysicalPoint(logicalPoint)logicalPoint := app.Screen.PhysicalToDipPoint(physicalPoint)
// Detecção de telascreen := app.Screen.ScreenNearestDipPoint(point)screen = app.Screen.ScreenNearestDipRect(rect)Gerenciador da Área de Transferência
Seção intitulada “Gerenciador da Área de Transferência”Operações da área de transferência para leitura e gravação de texto.
// Definir texto na área de transferênciasuccess := app.Clipboard.SetText("Hello World")if !success { // Lidar com o erro}
// Obter texto da área de transferênciatext, ok := app.Clipboard.Text()if !ok { // Lidar com o erro} else { // Usar o texto}Gerenciador da Bandeja do Sistema
Seção intitulada “Gerenciador da Bandeja do Sistema”Criação e gerenciamento de ícones na bandeja do sistema.
// Criar bandeja do sistemasystray := app.SystemTray.New()systray.SetLabel("My App")systray.SetIcon(iconBytes)
// Adicionar menu à bandeja do sistemamenu := app.Menu.New()menu.Add("Open").OnClick(func(ctx *Context) { // Lidar com o clique})systray.SetMenu(menu)
// Destruir a bandeja do sistema quando terminarsystray.Destroy()