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.
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
Section intitulée « 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
Section intitulée « 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ésapp.Event.Emit("custom", data)app.Event.On("custom", func(e *CustomEvent) { ... })
// Gestion des fenêtreswindow, _ := app.Window.GetByName("main")app.Window.OnCreate(func(window Window) { ... })
// Intégration du navigateurapp.Browser.OpenURL("https://wails.io")
// Gestion du menumenu := app.Menu.New()app.Menu.Set(menu)
// Zone de notificationsystray := app.SystemTray.New()Référence des gestionnaires
Section intitulée « Référence des gestionnaires »Gestionnaire de fenêtres
Section intitulée « 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êtreswindow := app.Window.New()window := app.Window.NewWithOptions(options)current := app.Window.Current()
// Trouver des fenêtreswindow, exists := app.Window.GetByName("main")windows := app.Window.GetAll()
// Rappels de fenêtreapp.Window.OnCreate(func(window Window) { // Gérer la création de la fenêtre})Gestionnaire d’événements
Section intitulée « Gestionnaire d’événements »Gère les événements personnalisés et l’écoute des événements de l’application.
// Événements personnalisésapp.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'applicationapp.Event.OnApplicationEvent(events.Common.ThemeChanged, func(e *ApplicationEvent) { // Gérer le changement de thème système})Gestionnaire de navigateur
Section intitulée « 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éfauterr := app.Browser.OpenURL("https://wails.io")err := app.Browser.OpenFile("/path/to/document.pdf")Gestionnaire d’environnement
Section intitulée « Gestionnaire d’environnement »Accès aux informations de l’environnement système.
// Obtenir les informations de l'environnementenv := app.Env.Info()fmt.Printf("OS: %s, Arch: %s\n", env.OS, env.Arch)
// Vérifier le thème systèmeif app.Env.IsDarkMode() { // Le mode sombre est actif}
// Ouvrir le gestionnaire de fichierserr := app.Env.OpenFileManager("/path/to/folder", false)Gestionnaire de boîtes de dialogue
Section intitulée « Gestionnaire de boîtes de dialogue »Accès organisé aux boîtes de dialogue de fichiers et de messages.
// Boîtes de dialogue de fichiersresult, err := app.Dialog.OpenFile(). AddFilter("Text Files", "*.txt"). PromptForSingleSelection()
result, err = app.Dialog.SaveFile(). SetDefaultFilename("document.txt"). PromptForSingleSelection()
// Boîtes de dialogue de messagesapp.Dialog.Info(). SetTitle("Information"). SetMessage("Operation completed successfully"). Show()
app.Dialog.Error(). SetTitle("Error"). SetMessage("An error occurred"). Show()Gestionnaire de menus
Section intitulée « Gestionnaire de menus »Création et gestion du menu de l’application.
// Créer et définir le menu de l'applicationmenu := 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 À proposapp.Menu.ShowAbout()Gestionnaire de raccourcis clavier
Section intitulée « Gestionnaire de raccourcis clavier »Gestion dynamique des raccourcis clavier globaux.
// Ajouter des raccourcis clavierapp.KeyBinding.Add("ctrl+n", func(window *WebviewWindow) { // Gérer Ctrl+N})
app.KeyBinding.Add("ctrl+q", func(window *WebviewWindow) { app.Quit()})
// Supprimer des raccourcis clavierapp.KeyBinding.Remove("ctrl+n")
// Obtenir tous les raccourcisbindings := app.KeyBinding.GetAll()Gestionnaire de menus contextuels
Section intitulée « Gestionnaire de menus contextuels »Gestion avancée des menus contextuels (pour les auteurs de bibliothèques).
// Créer et enregistrer un menu contextuelmenu := app.ContextMenu.New()app.ContextMenu.Add("myMenu", menu)
// Récupérer le menu contextuelmenu, exists := app.ContextMenu.Get("myMenu")
// Supprimer le menu contextuelapp.ContextMenu.Remove("myMenu")Gestionnaire d’écrans
Section intitulée « Gestionnaire d’écrans »Gestion des écrans et transformations de coordonnées pour les configurations multi-écrans.
// Obtenir les informations des écransscreens := app.Screen.GetAll()primary := app.Screen.GetPrimary()
// Transformations de coordonnéesphysicalPoint := app.Screen.DipToPhysicalPoint(logicalPoint)logicalPoint := app.Screen.PhysicalToDipPoint(physicalPoint)
// Détection d'écranscreen := app.Screen.ScreenNearestDipPoint(point)screen = app.Screen.ScreenNearestDipRect(rect)Gestionnaire de presse-papiers
Section intitulée « Gestionnaire de presse-papiers »Opérations de presse-papiers pour la lecture et l’écriture de texte.
// Définir le texte dans le presse-papierssuccess := app.Clipboard.SetText("Hello World")if !success { // Gérer l'erreur}
// Obtenir le texte du presse-papierstext, ok := app.Clipboard.Text()if !ok { // Gérer l'erreur} else { // Utiliser le texte}Gestionnaire de zone de notification
Section intitulée « Gestionnaire de zone de notification »Création et gestion de l’icône de la zone de notification.
// Créer la zone de notificationsystray := app.SystemTray.New()systray.SetLabel("My App")systray.SetIcon(iconBytes)
// Ajouter un menu à la zone de notificationmenu := 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()