github.com/secoba/wails/v2@v2.6.4/pkg/menu/menu.go (about) 1 package menu 2 3 import "github.com/secoba/wails/v2/pkg/menu/keys" 4 5 type Menu struct { 6 Items []*MenuItem 7 } 8 9 func NewMenu() *Menu { 10 return &Menu{} 11 } 12 13 func (m *Menu) Append(item *MenuItem) { 14 m.Items = append(m.Items, item) 15 } 16 17 // Merge will append the items in the given menu 18 // into this menu 19 func (m *Menu) Merge(menu *Menu) { 20 m.Items = append(m.Items, menu.Items...) 21 } 22 23 // AddText adds a TextMenu item to the menu 24 func (m *Menu) AddText(label string, accelerator *keys.Accelerator, click Callback) *MenuItem { 25 item := Text(label, accelerator, click) 26 m.Append(item) 27 return item 28 } 29 30 // AddCheckbox adds a CheckboxMenu item to the menu 31 func (m *Menu) AddCheckbox(label string, checked bool, accelerator *keys.Accelerator, click Callback) *MenuItem { 32 item := Checkbox(label, checked, accelerator, click) 33 m.Append(item) 34 return item 35 } 36 37 // AddRadio adds a radio item to the menu 38 func (m *Menu) AddRadio(label string, checked bool, accelerator *keys.Accelerator, click Callback) *MenuItem { 39 item := Radio(label, checked, accelerator, click) 40 m.Append(item) 41 return item 42 } 43 44 // AddSeparator adds a separator to the menu 45 func (m *Menu) AddSeparator() { 46 item := Separator() 47 m.Append(item) 48 } 49 50 func (m *Menu) AddSubmenu(label string) *Menu { 51 submenu := NewMenu() 52 item := SubMenu(label, submenu) 53 m.Append(item) 54 return submenu 55 } 56 57 func (m *Menu) Prepend(item *MenuItem) { 58 m.Items = append([]*MenuItem{item}, m.Items...) 59 } 60 61 func NewMenuFromItems(first *MenuItem, rest ...*MenuItem) *Menu { 62 result := NewMenu() 63 result.Append(first) 64 for _, item := range rest { 65 result.Append(item) 66 } 67 68 return result 69 } 70 71 func (m *Menu) setParent(menuItem *MenuItem) { 72 for _, item := range m.Items { 73 item.parent = menuItem 74 } 75 }