API des gestionnaires
L’API des gestionnaires de Wails v3 offre un moyen organisé et facile à découvrir d’accéder aux fonctionnalités de l’application via des structs de gestionnaire spécialisées. Cette nouvelle structure d’API regroupe les méthodes liées tout en maintenant une compatibilité ascendante totale avec l’API App traditionnelle.
Aperçu
L’API des gestionnaires organise les fonctionnalités de l’application en onze domaines spécialisés :
app.Window- Création, gestion et rappels des fenêtresapp.ContextMenu- Enregistrement et gestion des menus contextuelsapp.KeyBinding- Gestion des raccourcis clavier globauxapp.Browser- Intégration du navigateur (ouverture d’URL et de fichiers)app.Env- Informations d’environnement et état du systèmeapp.Dialog- Opérations de boîtes de dialogue de fichiers et de messagesapp.Event- Gestion des événements personnalisés et des événements de l’applicationapp.Menu- Gestion du menu de l’applicationapp.Screen- Gestion des écrans et transformations de coordonnéesapp.Clipboard- Opérations de texte du presse-papiersapp.SystemTray- Création et gestion de l’icône de la zone de notification
Avantages
- Meilleure découvrabilité - L’autocomplétion de l’IDE affiche une surface d’API organisée
- Organisation du code améliorée - Méthodes liées regroupées ensemble
- Maintenabilité accrue - Séparation des responsabilités entre les gestionnaires
- Extensibilité future - Plus facile d’ajouter de nouvelles fonctionnalités à des domaines spécifiques
Utilisation
L’API des gestionnaires fournit un accès organisé à toutes les fonctionnalités de l’application :
// Événements et gestion d'événements personnalisés
app.Event.Emit("custom", data)
app.Event.On("custom", func(e *CustomEvent) { ... })
// Gestion des fenêtres
window, _ := app.Window.GetByName("main")
app.Window.OnCreate(func(window Window) { ... })
// Intégration du navigateur
app.Browser.OpenURL("https://wails.io")
// Gestion du menu
menu := app.Menu.New()
app.Menu.Set(menu)
// Zone de notification
systray := app.SystemTray.New()Référence des gestionnaires
Gestionnaire de fenêtres
Gère la création, la récupération et les rappels de cycle de vie des fenêtres.
// Créer des fenêtres
window := app.Window.New()
window := app.Window.NewWithOptions(options)
current := app.Window.Current()
// Trouver des fenêtres
window, exists := app.Window.GetByName("main")
windows := app.Window.GetAll()
// Rappels de fenêtre
app.Window.OnCreate(func(window Window) {
// Gérer la création de la fenêtre
})Gestionnaire d’événements
Gère les événements personnalisés et l’écoute des événements de l’application.
// Événements personnalisés
app.Event.Emit("userAction", data)
cancelFunc := app.Event.On("userAction", func(e *CustomEvent) {
// Gérer l'événement
})
app.Event.Off("userAction")
app.Event.Reset() // Supprimer tous les écouteurs
// Événements de l'application
app.Event.OnApplicationEvent(events.Common.ThemeChanged, func(e *ApplicationEvent) {
// Gérer le changement de thème système
})Gestionnaire de navigateur
Fournit l’intégration du navigateur pour l’ouverture d’URL et de fichiers.
// Ouvrir des URL et des fichiers dans le navigateur par défaut
err := app.Browser.OpenURL("https://wails.io")
err := app.Browser.OpenFile("/path/to/document.pdf")Gestionnaire d’environnement
Accès aux informations de l’environnement système.
// Obtenir les informations de l'environnement
env := app.Env.Info()
fmt.Printf("OS: %s, Arch: %s\n", env.OS, env.Arch)
// Vérifier le thème système
if app.Env.IsDarkMode() {
// Le mode sombre est actif
}
// Ouvrir le gestionnaire de fichiers
err := app.Env.OpenFileManager("/path/to/folder", false)Gestionnaire de boîtes de dialogue
Accès organisé aux boîtes de dialogue de fichiers et de messages.
// Boîtes de dialogue de fichiers
result, err := app.Dialog.OpenFile().
AddFilter("Text Files", "*.txt").
PromptForSingleSelection()
result, err = app.Dialog.SaveFile().
SetDefaultFilename("document.txt").
PromptForSingleSelection()
// Boîtes de dialogue de messages
app.Dialog.Info().
SetTitle("Information").
SetMessage("Operation completed successfully").
Show()
app.Dialog.Error().
SetTitle("Error").
SetMessage("An error occurred").
Show()Gestionnaire de menus
Création et gestion du menu de l’application.
// Créer et définir le menu de l'application
menu := app.Menu.New()
fileMenu := menu.AddSubmenu("File")
fileMenu.Add("New").OnClick(func(ctx *Context) {
// Gérer le clic de menu
})
app.Menu.Set(menu)
// Afficher la boîte de dialogue À propos
app.Menu.ShowAbout()Gestionnaire de raccourcis clavier
Gestion dynamique des raccourcis clavier globaux.
// Ajouter des raccourcis clavier
app.KeyBinding.Add("ctrl+n", func(window *WebviewWindow) {
// Gérer Ctrl+N
})
app.KeyBinding.Add("ctrl+q", func(window *WebviewWindow) {
app.Quit()
})
// Supprimer des raccourcis clavier
app.KeyBinding.Remove("ctrl+n")
// Obtenir tous les raccourcis
bindings := app.KeyBinding.GetAll()Gestionnaire de menus contextuels
Gestion avancée des menus contextuels (pour les auteurs de bibliothèques).
// Créer et enregistrer un menu contextuel
menu := app.ContextMenu.New()
app.ContextMenu.Add("myMenu", menu)
// Récupérer le menu contextuel
menu, exists := app.ContextMenu.Get("myMenu")
// Supprimer le menu contextuel
app.ContextMenu.Remove("myMenu")Gestionnaire d’écrans
Gestion des écrans et transformations de coordonnées pour les configurations multi-écrans.
// Obtenir les informations des écrans
screens := app.Screen.GetAll()
primary := app.Screen.GetPrimary()
// Transformations de coordonnées
physicalPoint := app.Screen.DipToPhysicalPoint(logicalPoint)
logicalPoint := app.Screen.PhysicalToDipPoint(physicalPoint)
// Détection d'écran
screen := app.Screen.ScreenNearestDipPoint(point)
screen = app.Screen.ScreenNearestDipRect(rect)Gestionnaire de presse-papiers
Opérations de presse-papiers pour la lecture et l’écriture de texte.
// Définir le texte dans le presse-papiers
success := app.Clipboard.SetText("Hello World")
if !success {
// Gérer l'erreur
}
// Obtenir le texte du presse-papiers
text, ok := app.Clipboard.Text()
if !ok {
// Gérer l'erreur
} else {
// Utiliser le texte
}Gestionnaire de zone de notification
Création et gestion de l’icône de la zone de notification.
// Créer la zone de notification
systray := app.SystemTray.New()
systray.SetLabel("My App")
systray.SetIcon(iconBytes)
// Ajouter un menu à la zone de notification
menu := app.Menu.New()
menu.Add("Open").OnClick(func(ctx *Context) {
// Gérer le clic
})
systray.SetMenu(menu)
// Détruire la zone de notification lorsque c'est terminé
systray.Destroy()