Removed Menu GetByID / RemoveByID

This commit is contained in:
Lea Anthony
2021-01-11 13:41:07 +11:00
parent b4b7c9d306
commit 55d7d9693f
2 changed files with 38 additions and 72 deletions

View File

@@ -8,8 +8,6 @@ import (
// Menu defines all Menu related operations
type Menu interface {
UpdateApplicationMenu()
GetByID(menuID string) *menu.MenuItem
RemoveByID(id string) bool
}
type menuRuntime struct {
@@ -28,11 +26,3 @@ func newMenu(bus *servicebus.ServiceBus, menu *menu.Menu) Menu {
func (m *menuRuntime) UpdateApplicationMenu() {
m.bus.Publish("menu:updateappmenu", nil)
}
func (m *menuRuntime) GetByID(menuID string) *menu.MenuItem {
return m.menu.GetByID(menuID)
}
func (m *menuRuntime) RemoveByID(id string) bool {
return m.menu.RemoveByID(id)
}

View File

@@ -3,7 +3,6 @@ package main
import (
"fmt"
"github.com/wailsapp/wails/v2/pkg/menu/keys"
"math/rand"
"strconv"
"sync"
@@ -22,7 +21,8 @@ type Menu struct {
anotherDynamicMenuCounter int
// Menus
removeMenuItem *menu.MenuItem
removeMenuItem *menu.MenuItem
dynamicMenuOneSubmenu *menu.MenuItem
}
// WailsInit is called at application startup
@@ -71,7 +71,7 @@ func (m *Menu) addDynamicMenusOneMenu(data *menu.CallbackData) {
m.runtime.Menu.UpdateApplicationMenu()
}
func (m *Menu) removeDynamicMenuOneMenu(callbackData *menu.CallbackData) {
func (m *Menu) removeDynamicMenuOneMenu(_ *menu.CallbackData) {
//
// Lock because this method will be called in a goroutine
m.lock.Lock()
@@ -105,23 +105,20 @@ func (m *Menu) removeDynamicMenuOneMenu(callbackData *menu.CallbackData) {
func (m *Menu) createDynamicMenuTwo(data *menu.CallbackData) {
println("\n\n\n\n\n\n\nCreating dynamic menu two\n\n\n\n\n\n")
// Hide this menu
data.MenuItem.Hidden = true
// Create our submenu
dm2 := menu.SubMenu("Dynamic Menus 2", menu.NewMenuFromItems(
menu.Text("Insert Before Random Menu Item",
"Insert Before Random", keys.CmdOrCtrl("]"), nil),
menu.Text("Insert After Random Menu Item",
"Insert After Random", keys.CmdOrCtrl("["), nil),
menu.Text("Insert Before Random Menu Item", "Insert Before Random", keys.CmdOrCtrl("]"), m.insertBeforeRandom),
menu.Text("Insert After Random Menu Item", "Insert After Random", keys.CmdOrCtrl("["), m.insertAfterRandom),
menu.Separator(),
))
//m.runtime.Menu.On("Insert Before Random", m.insertBeforeRandom)
//m.runtime.Menu.On("Insert After Random", m.insertAfterRandom)
// Initialise out map
// Initialise dynamicMenuItems
m.dynamicMenuItems = make(map[string]*menu.MenuItem)
// Create some random menu items
@@ -133,80 +130,57 @@ func (m *Menu) createDynamicMenuTwo(data *menu.CallbackData) {
dm2.Append(item)
}
// Insert this menu after Dynamic Menu Item 1
dm1 := m.runtime.Menu.GetByID("Dynamic Menus 1")
if dm1 == nil {
return
}
dm1.InsertAfter(dm2)
m.dynamicMenuOneSubmenu.InsertAfter(dm2)
m.runtime.Menu.UpdateApplicationMenu()
}
func (m *Menu) insertBeforeRandom(_ *menu.MenuItem) {
func (m *Menu) insertBeforeRandom(_ *menu.CallbackData) {
// Lock because this method will be called in a goroutine
m.lock.Lock()
defer m.lock.Unlock()
// Pick a random menu
var randomItemID string
var count int
var random = rand.Intn(len(m.dynamicMenuItems))
for randomItemID = range m.dynamicMenuItems {
if count == random {
break
}
count++
var randomMenuItem *menu.MenuItem
for _, randomMenuItem = range m.dynamicMenuItems {
break
}
m.anotherDynamicMenuCounter++
text := "Other Dynamic Menu Item " + strconv.Itoa(
m.anotherDynamicMenuCounter+1)
newItem := menu.Text(text, text, nil, nil)
m.dynamicMenuItems[text] = newItem
item := m.runtime.Menu.GetByID(randomItemID)
if item == nil {
if randomMenuItem == nil {
return
}
m.runtime.Log.Info(fmt.Sprintf(
"Inserting menu item '%s' before menu item '%s'", newItem.Label,
item.Label))
m.anotherDynamicMenuCounter++
text := "Other Dynamic Menu Item " + strconv.Itoa(m.anotherDynamicMenuCounter)
newItem := menu.Text(text, text, nil, nil)
m.dynamicMenuItems[text] = newItem
item.InsertBefore(newItem)
m.runtime.Log.Info(fmt.Sprintf("Inserting menu item '%s' before menu item '%s'", newItem.Label, randomMenuItem.Label))
randomMenuItem.InsertBefore(newItem)
m.runtime.Menu.UpdateApplicationMenu()
}
func (m *Menu) insertAfterRandom(_ *menu.MenuItem) {
// Lock because this method will be called in a goroutine
m.lock.Lock()
defer m.lock.Unlock()
func (m *Menu) insertAfterRandom(_ *menu.CallbackData) {
// Pick a random menu
var randomItemID string
var count int
var random = rand.Intn(len(m.dynamicMenuItems))
for randomItemID = range m.dynamicMenuItems {
if count == random {
break
}
count++
var randomMenuItem *menu.MenuItem
for _, randomMenuItem = range m.dynamicMenuItems {
break
}
m.anotherDynamicMenuCounter++
text := "Other Dynamic Menu Item " + strconv.Itoa(
m.anotherDynamicMenuCounter+1)
newItem := menu.Text(text, text, nil, nil)
item := m.runtime.Menu.GetByID(randomItemID)
if randomMenuItem == nil {
return
}
m.anotherDynamicMenuCounter++
text := "Other Dynamic Menu Item " + strconv.Itoa(m.anotherDynamicMenuCounter)
newItem := menu.Text(text, text, nil, nil)
m.dynamicMenuItems[text] = newItem
m.runtime.Log.Info(fmt.Sprintf(
"Inserting menu item '%s' after menu item '%s'", newItem.Label,
item.Label))
m.runtime.Log.Info(fmt.Sprintf("Inserting menu item '%s' after menu item '%s'", newItem.Label, randomMenuItem.Label))
item.InsertAfter(newItem)
randomMenuItem.InsertBefore(newItem)
m.runtime.Menu.UpdateApplicationMenu()
}
@@ -217,6 +191,11 @@ func (m *Menu) processPlainText(callbackData *menu.CallbackData) {
func (m *Menu) createApplicationMenu() *menu.Menu {
m.dynamicMenuOneSubmenu = menu.SubMenuWithID("Dynamic Menus 1", "Dynamic Menus 1", menu.NewMenuFromItems(
menu.Text("Add Menu Item", "Add Menu Item", keys.CmdOrCtrl("+"), m.addDynamicMenusOneMenu),
menu.Separator(),
))
// Create menu
myMenu := menu.DefaultMacMenu()
@@ -290,10 +269,7 @@ func (m *Menu) createApplicationMenu() *menu.Menu {
menu.Text("Plus", "Plus", keys.Key("+"), nil),
)),
)),
menu.SubMenuWithID("Dynamic Menus 1", "Dynamic Menus 1", menu.NewMenuFromItems(
menu.Text("Add Menu Item", "Add Menu Item", keys.CmdOrCtrl("+"), m.addDynamicMenusOneMenu),
menu.Separator(),
)),
m.dynamicMenuOneSubmenu,
&menu.MenuItem{
Label: "Disabled Menu",
Type: menu.TextType,