5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-03 01:13:03 +08:00
wails/v2/test/kitchensink/contextmenus.go
2021-01-13 22:51:44 +11:00

56 lines
1.3 KiB
Go

package main
import (
"fmt"
"sync"
"github.com/wailsapp/wails/v2"
"github.com/wailsapp/wails/v2/pkg/menu"
)
// ContextMenu struct
type ContextMenu struct {
runtime *wails.Runtime
counter int
lock sync.Mutex
testContextMenu *menu.ContextMenu
clickedMenu *menu.MenuItem
}
// WailsInit is called at application startup
func (c *ContextMenu) WailsInit(runtime *wails.Runtime) error {
// Perform your setup here
c.runtime = runtime
return nil
}
// Setup Menu Listeners
func (c *ContextMenu) updateContextMenu(_ *menu.CallbackData) {
c.lock.Lock()
c.counter++
c.clickedMenu.Label = fmt.Sprintf("Clicked %d times", c.counter)
c.lock.Unlock()
c.runtime.Menu.UpdateContextMenu(c.testContextMenu)
}
func (c *ContextMenu) createContextMenus() []*menu.ContextMenu {
c.clickedMenu = menu.Text("Clicked 0 times", nil, c.updateContextMenu)
c.testContextMenu = menu.NewContextMenu("test", menu.NewMenuFromItems(
c.clickedMenu,
menu.Separator(),
menu.Checkbox("I am a checkbox", false, nil, nil),
menu.Separator(),
menu.Radio("Radio Option 1", true, nil, nil),
menu.Radio("Radio Option 2", false, nil, nil),
menu.Radio("Radio Option 3", false, nil, nil),
menu.Separator(),
menu.SubMenu("A Submenu", menu.NewMenuFromItems(
menu.Text("Hello", nil, nil),
)),
))
return []*menu.ContextMenu{
c.testContextMenu,
}
}