Manager-API
Die Wails v3 Manager-API bietet eine organisierte und gut auffindbare Möglichkeit, auf die Anwendungsfunktionalität über fokussierte Manager-Strukturen zuzugreifen. Diese neue API-Struktur gruppiert zusammengehörige Methoden zusammen und bewahrt dabei die volle Abwärtskompatibilität mit der traditionellen App-API.
Übersicht
Abschnitt betitelt „Übersicht“Die Manager-API organisiert die Anwendungsfunktionalität in elf fokussierte Bereiche:
app.Window- Fenstererstellung, -verwaltung und Callbacksapp.ContextMenu- Registrierung und Verwaltung von Kontextmenüsapp.KeyBinding- Verwaltung globaler Tastenkürzelapp.Browser- Browserintegration (Öffnen von URLs und Dateien)app.Env- Umgebungsinformationen und Systemstatusapp.Dialog- Datei- und Nachrichten-Dialogeapp.Event- Verarbeitung benutzerdefinierter Ereignisse und Anwendungsereignisseapp.Menu- Verwaltung des Anwendungsmenüsapp.Screen- Bildschirmverwaltung und Koordinatentransformationenapp.Clipboard- Zwischenablage-Textoperationenapp.SystemTray- Erstellung und Verwaltung von Systemablage-Symbolen
Vorteile
Abschnitt betitelt „Vorteile“- Bessere Auffindbarkeit - Die IDE-Vervollständigung zeigt eine organisierte API-Oberfläche
- Verbesserte Codeorganisation - Zusammengehörige Methoden sind gruppiert
- Verbesserte Wartbarkeit - Trennung der Zuständigkeiten zwischen den Managern
- Zukünftige Erweiterbarkeit - Einfacher, neue Funktionen in spezifische Bereiche hinzuzufügen
Verwendung
Abschnitt betitelt „Verwendung“Die Manager-API bietet organisierten Zugriff auf alle Anwendungsfunktionalitäten:
// Ereignisse und benutzerdefinierte Ereignisverarbeitungapp.Event.Emit("custom", data)app.Event.On("custom", func(e *CustomEvent) { ... })
// Fensterverwaltungwindow, _ := app.Window.GetByName("main")app.Window.OnCreate(func(window Window) { ... })
// Browserintegrationapp.Browser.OpenURL("https://wails.io")
// Menüverwaltungmenu := app.Menu.New()app.Menu.Set(menu)
// Systemablagesystray := app.SystemTray.New()Manager-Referenz
Abschnitt betitelt „Manager-Referenz“Fenster-Manager
Abschnitt betitelt „Fenster-Manager“Verwaltet die Fenstererstellung, -abruf und Lebenszyklus-Callbacks.
// Fenster erstellenwindow := app.Window.New()window := app.Window.NewWithOptions(options)current := app.Window.Current()
// Fenster findenwindow, exists := app.Window.GetByName("main")windows := app.Window.GetAll()
// Fenster-Callbacksapp.Window.OnCreate(func(window Window) { // Fenstererstellung verarbeiten})Ereignis-Manager
Abschnitt betitelt „Ereignis-Manager“Verwaltet benutzerdefinierte Ereignisse und das Abhören von Anwendungsereignissen.
// Benutzerdefinierte Ereignisseapp.Event.Emit("userAction", data)cancelFunc := app.Event.On("userAction", func(e *CustomEvent) { // Ereignis verarbeiten})app.Event.Off("userAction")app.Event.Reset() // Alle Listener entfernen
// Anwendungsereignisseapp.Event.OnApplicationEvent(events.Common.ThemeChanged, func(e *ApplicationEvent) { // System-Designänderung verarbeiten})Browser-Manager
Abschnitt betitelt „Browser-Manager“Bietet Browserintegration zum Öffnen von URLs und Dateien.
// URLs und Dateien im Standardbrowser öffnenerr := app.Browser.OpenURL("https://wails.io")err := app.Browser.OpenFile("/path/to/document.pdf")Umgebungs-Manager
Abschnitt betitelt „Umgebungs-Manager“Zugriff auf Systemumgebungsinformationen.
// Umgebungsinformationen abrufenenv := app.Env.Info()fmt.Printf("OS: %s, Arch: %s\n", env.OS, env.Arch)
// System-Design prüfenif app.Env.IsDarkMode() { // Dunkles Design ist aktiv}
// Dateimanager öffnenerr := app.Env.OpenFileManager("/path/to/folder", false)Dialog-Manager
Abschnitt betitelt „Dialog-Manager“Organisierter Zugriff auf Datei- und Nachrichten-Dialoge.
// Datei-Dialogeresult, err := app.Dialog.OpenFile(). AddFilter("Textdateien", "*.txt"). PromptForSingleSelection()
result, err = app.Dialog.SaveFile(). SetDefaultFilename("document.txt"). PromptForSingleSelection()
// Nachrichten-Dialogeapp.Dialog.Info(). SetTitle("Information"). SetMessage("Vorgang erfolgreich abgeschlossen"). Show()
app.Dialog.Error(). SetTitle("Fehler"). SetMessage("Ein Fehler ist aufgetreten"). Show()Menü-Manager
Abschnitt betitelt „Menü-Manager“Erstellung und Verwaltung des Anwendungsmenüs.
// Anwendungsmenü erstellen und festlegenmenu := app.Menu.New()fileMenu := menu.AddSubmenu("Datei")fileMenu.Add("Neu").OnClick(func(ctx *Context) { // Menü-Klick verarbeiten})
app.Menu.Set(menu)
// Über-Dialog anzeigenapp.Menu.ShowAbout()Tastenkürzel-Manager
Abschnitt betitelt „Tastenkürzel-Manager“Dynamische Verwaltung globaler Tastenkürzel.
// Tastenkürzel hinzufügenapp.KeyBinding.Add("ctrl+n", func(window *WebviewWindow) { // Strg+N verarbeiten})
app.KeyBinding.Add("ctrl+q", func(window *WebviewWindow) { app.Quit()})
// Tastenkürzel entfernenapp.KeyBinding.Remove("ctrl+n")
// Alle Kürzel abrufenbindings := app.KeyBinding.GetAll()Kontextmenü-Manager
Abschnitt betitelt „Kontextmenü-Manager“Erweiterte Kontextmenüverwaltung (für Bibliotheksautoren).
// Kontextmenü erstellen und registrierenmenu := app.ContextMenu.New()app.ContextMenu.Add("myMenu", menu)
// Kontextmenü abrufenmenu, exists := app.ContextMenu.Get("myMenu")
// Kontextmenü entfernenapp.ContextMenu.Remove("myMenu")Bildschirm-Manager
Abschnitt betitelt „Bildschirm-Manager“Bildschirmverwaltung und Koordinatentransformationen für Multi-Monitor-Setups.
// Bildschirminformationen abrufenscreens := app.Screen.GetAll()primary := app.Screen.GetPrimary()
// KoordinatentransformationenphysicalPoint := app.Screen.DipToPhysicalPoint(logicalPoint)logicalPoint := app.Screen.PhysicalToDipPoint(physicalPoint)
// Bildschirmerkennungscreen := app.Screen.ScreenNearestDipPoint(point)screen = app.Screen.ScreenNearestDipRect(rect)Zwischenablage-Manager
Abschnitt betitelt „Zwischenablage-Manager“Zwischenablage-Operationen zum Lesen und Schreiben von Text.
// Text in die Zwischenablage schreibensuccess := app.Clipboard.SetText("Hello World")if !success { // Fehler verarbeiten}
// Text aus der Zwischenablage lesentext, ok := app.Clipboard.Text()if !ok { // Fehler verarbeiten} else { // Text verwenden}Systemablage-Manager
Abschnitt betitelt „Systemablage-Manager“Erstellung und Verwaltung von Systemablage-Symbolen.
// Systemablage erstellensystray := app.SystemTray.New()systray.SetLabel("Meine App")systray.SetIcon(iconBytes)
// Menü zur Systemablage hinzufügenmenu := app.Menu.New()menu.Add("Öffnen").OnClick(func(ctx *Context) { // Klick verarbeiten})systray.SetMenu(menu)
// Systemablage zerstören, wenn fertigsystray.Destroy()