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  }