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 }