Manager API
Manager API Wails v3 menyediakan cara yang terorganisir dan mudah ditemukan untuk mengakses fungsionalitas aplikasi melalui struct manager yang fokus, dikelompokkan di bawah field publik pada *application.App. Wails 3 adalah perubahan bersih dari v2 — tidak ada lapisan wrapper per-panggilan untuk menjaga kompatibilitas dengan API gaya lama app.NewWebviewWindow(...), jadi manager di bawah ini adalah cara untuk mengendalikan aplikasi.
Ringkasan
Section titled “Ringkasan”Manager API mengorganisir fungsionalitas aplikasi ke dalam dua belas area fokus (satu logger plus sebelas manager):
app.Window- Pembuatan, pengelolaan, dan callback windowapp.ContextMenu- Registrasi dan pengelolaan context menuapp.KeyBinding- Pengelolaan key binding globalapp.Browser- Integrasi browser (membuka URL dan file)app.Env- Informasi lingkungan dan status sistemapp.Dialog- Operasi dialog file dan pesanapp.Event- Penanganan event kustom dan event aplikasiapp.Menu- Pengelolaan menu aplikasiapp.Screen- Pengelolaan layar dan transformasi koordinatapp.Clipboard- Operasi teks clipboardapp.SystemTray- Pembuatan dan pengelolaan ikon system trayapp.Autostart- Mendaftarkan aplikasi agar diluncurkan saat login pengguna
Manfaat
Section titled “Manfaat”- Discoverability lebih baik - Autocomplete IDE menampilkan permukaan API yang terorganisir
- Organisasi kode lebih baik - Metode terkait dikelompokkan bersama
- Maintainability lebih baik - Pemisahan concern antar manager
- Ekstensibilitas ke depan - Lebih mudah menambahkan fitur baru ke area spesifik
Penggunaan
Section titled “Penggunaan”Manager API menyediakan akses terorganisir ke semua fungsionalitas aplikasi:
// Event dan penanganan event kustomapp.Event.Emit("custom", data)app.Event.On("custom", func(e *CustomEvent) { ... })
// Pengelolaan windowwindow, _ := app.Window.GetByName("main")app.Window.OnCreate(func(window Window) { ... })
// Integrasi browserapp.Browser.OpenURL("https://wails.io")
// Pengelolaan menumenu := app.Menu.New()app.Menu.Set(menu)
// System traysystray := app.SystemTray.New()Referensi Manager
Section titled “Referensi Manager”Window Manager
Section titled “Window Manager”Mengelola pembuatan window, pengambilan, dan callback siklus hidup.
// Membuat windowwindow := app.Window.New()window := app.Window.NewWithOptions(options)current := app.Window.Current()
// Mencari windowwindow, exists := app.Window.GetByName("main")windows := app.Window.GetAll()
// Callback windowapp.Window.OnCreate(func(window Window) { // Tangani pembuatan window})Event Manager
Section titled “Event Manager”Menangani event kustom dan pendengaran event aplikasi.
// Event kustomapp.Event.Emit("userAction", data)cancelFunc := app.Event.On("userAction", func(e *CustomEvent) { // Tangani event})app.Event.Off("userAction")app.Event.Reset() // Hapus semua listener
// Event aplikasiapp.Event.OnApplicationEvent(events.Common.ThemeChanged, func(e *ApplicationEvent) { // Tangani perubahan tema sistem})Browser Manager
Section titled “Browser Manager”Menyediakan integrasi browser untuk membuka URL dan file.
// Buka URL dan file di browser defaulterr := app.Browser.OpenURL("https://wails.io")err := app.Browser.OpenFile("/path/to/document.pdf")Environment Manager
Section titled “Environment Manager”Akses ke informasi lingkungan sistem.
// Dapatkan info lingkunganenv := app.Env.Info()fmt.Printf("OS: %s, Arch: %s\n", env.OS, env.Arch)
// Periksa tema sistemif app.Env.IsDarkMode() { // Mode gelap aktif}
// Buka file managererr := app.Env.OpenFileManager("/path/to/folder", false)Dialog Manager
Section titled “Dialog Manager”Akses terorganisir ke dialog file dan pesan.
// Dialog fileresult, err := app.Dialog.OpenFile(). AddFilter("Text Files", "*.txt"). PromptForSingleSelection()
result, err = app.Dialog.SaveFile(). SetFilename("document.txt"). PromptForSingleSelection()
// Dialog pesanapp.Dialog.Info(). SetTitle("Information"). SetMessage("Operation completed successfully"). Show()
app.Dialog.Error(). SetTitle("Error"). SetMessage("An error occurred"). Show()Menu Manager
Section titled “Menu Manager”Pembuatan dan pengelolaan menu aplikasi.
// Buat dan atur menu aplikasimenu := app.Menu.New()fileMenu := menu.AddSubmenu("File")fileMenu.Add("New").OnClick(func(ctx *Context) { // Tangani klik menu})
app.Menu.Set(menu)
// Tampilkan dialog aboutapp.Menu.ShowAbout()Key Binding Manager
Section titled “Key Binding Manager”Pengelolaan dinamis key binding global.
// Tambahkan key bindingapp.KeyBinding.Add("ctrl+n", func(window application.Window) { // Tangani Ctrl+N})
app.KeyBinding.Add("ctrl+q", func(window application.Window) { app.Quit()})
// Hapus key bindingapp.KeyBinding.Remove("ctrl+n")
// Dapatkan semua bindingbindings := app.KeyBinding.GetAll()Context Menu Manager
Section titled “Context Menu Manager”Pengelolaan context menu lanjutan (untuk penulis library).
// Buat dan daftarkan context menumenu := app.ContextMenu.New()app.ContextMenu.Add("myMenu", menu)
// Ambil context menumenu, exists := app.ContextMenu.Get("myMenu")
// Hapus context menuapp.ContextMenu.Remove("myMenu")Screen Manager
Section titled “Screen Manager”Pengelolaan layar dan transformasi koordinat untuk setup multi-monitor.
// Dapatkan informasi layarscreens := app.Screen.GetAll()primary := app.Screen.GetPrimary()
// Transformasi koordinatphysicalPoint := app.Screen.DipToPhysicalPoint(logicalPoint)logicalPoint := app.Screen.PhysicalToDipPoint(physicalPoint)
// Deteksi layarscreen := app.Screen.ScreenNearestDipPoint(point)screen = app.Screen.ScreenNearestDipRect(rect)Clipboard Manager
Section titled “Clipboard Manager”Operasi clipboard untuk membaca dan menulis teks.
// Set teks ke clipboardsuccess := app.Clipboard.SetText("Hello World")if !success { // Tangani error}
// Ambil teks dari clipboardtext, ok := app.Clipboard.Text()if !ok { // Tangani error} else { // Gunakan teks}SystemTray Manager
Section titled “SystemTray Manager”Pembuatan dan pengelolaan ikon system tray.
// Buat system traysystray := app.SystemTray.New()systray.SetLabel("My App")systray.SetIcon(iconBytes)
// Tambahkan menu ke system traymenu := app.Menu.New()menu.Add("Open").OnClick(func(ctx *Context) { // Tangani klik})systray.SetMenu(menu)
// Hancurkan system tray saat selesaisystray.Destroy()Autostart Manager
Section titled “Autostart Manager”Mendaftarkan aplikasi agar diluncurkan saat login pengguna. Memilih mekanisme native yang sesuai per platform: SMAppService atau LaunchAgent plist di macOS, kunci registry HKCU\…\Run di Windows, entri XDG .desktop di Linux.
// Daftarkan untuk diluncurkan saat loginerr := app.Autostart.Enable()
// Dengan argumen tambahan saat peluncuran dan identifier kustomerr = app.Autostart.EnableWithOptions(application.AutostartOptions{ Identifier: "com.example.myapp", Arguments: []string{"--hidden"},})
// Periksa / hapusenabled, err := app.Autostart.IsEnabled()status, err := app.Autostart.Status() // includes Path + Strategyerr = app.Autostart.Disable()Lihat halaman fitur Autostart untuk perilaku platform, aturan identifier, dan jaminan deteksi stale.