github.com/AlpineAIO/wails/v2@v2.0.0-beta.32.0.20240505041856-1047a8fa5fef/internal/menumanager/applicationmenu.go (about)

     1  package menumanager
     2  
     3  import "github.com/AlpineAIO/wails/v2/pkg/menu"
     4  
     5  func (m *Manager) SetApplicationMenu(applicationMenu *menu.Menu) error {
     6  	if applicationMenu == nil {
     7  		return nil
     8  	}
     9  
    10  	m.applicationMenu = applicationMenu
    11  
    12  	// Reset the menu map
    13  	m.applicationMenuItemMap = NewMenuItemMap()
    14  
    15  	// Add the menu to the menu map
    16  	m.applicationMenuItemMap.AddMenu(applicationMenu)
    17  
    18  	return m.processApplicationMenu()
    19  }
    20  
    21  func (m *Manager) GetApplicationMenuJSON() string {
    22  	return m.applicationMenuJSON
    23  }
    24  
    25  func (m *Manager) GetProcessedApplicationMenu() *WailsMenu {
    26  	return m.processedApplicationMenu
    27  }
    28  
    29  // UpdateApplicationMenu reprocesses the application menu to pick up structure
    30  // changes etc
    31  // Returns the JSON representation of the updated menu
    32  func (m *Manager) UpdateApplicationMenu() (string, error) {
    33  	m.applicationMenuItemMap = NewMenuItemMap()
    34  	m.applicationMenuItemMap.AddMenu(m.applicationMenu)
    35  	err := m.processApplicationMenu()
    36  	return m.applicationMenuJSON, err
    37  }
    38  
    39  func (m *Manager) processApplicationMenu() error {
    40  	// Process the menu
    41  	m.processedApplicationMenu = NewWailsMenu(m.applicationMenuItemMap, m.applicationMenu)
    42  	m.processRadioGroups(m.processedApplicationMenu, m.applicationMenuItemMap)
    43  	applicationMenuJSON, err := m.processedApplicationMenu.AsJSON()
    44  	if err != nil {
    45  		return err
    46  	}
    47  	m.applicationMenuJSON = applicationMenuJSON
    48  	return nil
    49  }