github.com/daidehu6831/wails/v2@v2.2.0/pkg/menu/menu.go (about) 1 package menu 2 3 import "github.com/daidehu6831/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 for _, item := range menu.Items { 21 m.Items = append(m.Items, item) 22 } 23 } 24 25 // AddText adds a TextMenu item to the menu 26 func (m *Menu) AddText(label string, accelerator *keys.Accelerator, click Callback) *MenuItem { 27 item := Text(label, accelerator, click) 28 m.Append(item) 29 return item 30 } 31 32 // AddCheckbox adds a CheckboxMenu item to the menu 33 func (m *Menu) AddCheckbox(label string, checked bool, accelerator *keys.Accelerator, click Callback) *MenuItem { 34 item := Checkbox(label, checked, accelerator, click) 35 m.Append(item) 36 return item 37 } 38 39 // AddRadio adds a radio item to the menu 40 func (m *Menu) AddRadio(label string, checked bool, accelerator *keys.Accelerator, click Callback) *MenuItem { 41 item := Radio(label, checked, accelerator, click) 42 m.Append(item) 43 return item 44 } 45 46 // AddSeparator adds a separator to the menu 47 func (m *Menu) AddSeparator() { 48 item := Separator() 49 m.Append(item) 50 } 51 52 func (m *Menu) AddSubmenu(label string) *Menu { 53 submenu := NewMenu() 54 item := SubMenu(label, submenu) 55 m.Append(item) 56 return submenu 57 } 58 59 func (m *Menu) Prepend(item *MenuItem) { 60 m.Items = append([]*MenuItem{item}, m.Items...) 61 } 62 63 func NewMenuFromItems(first *MenuItem, rest ...*MenuItem) *Menu { 64 65 var result = NewMenu() 66 result.Append(first) 67 for _, item := range rest { 68 result.Append(item) 69 } 70 71 return result 72 } 73 74 func (m *Menu) setParent(menuItem *MenuItem) { 75 for _, item := range m.Items { 76 item.parent = menuItem 77 } 78 }