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  }