-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMenu_windows.go
94 lines (82 loc) · 1.56 KB
/
Menu_windows.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
// +build windows
package frame
/*
#ifndef WEBVIEW_WINAPI
#define WEBVIEW_WINAPI
#endif
#include "c_windows.h"
*/
import "C"
type (
// Menu of window
Menu struct {
title string
key string
menu interface{} //*C.NSMenu
menuItem interface{} //*C.NSMenuItem
parent *Menu
}
// MenuItem element
MenuItem struct {
Action func()
title string
key string
menuItem interface{} //*C.NSMenuItem
parent *Menu
}
)
var (
menuItems = []*MenuItem{}
)
// AddSubMenu returns a new submenu
func (m *Menu) AddSubMenu(title string) *Menu {
// retM := C.addSubMenu(C.MenuObj{
// title: C.CString(title),
// menu: m.menu,
// })
menu := Menu{
title: title,
// menu: retM.menu,
// menuItem: retM.menuItem,
parent: m,
}
return &menu
}
// AddItem returns a new menu item
func (m *Menu) AddItem(title string, action func(), key ...string) *MenuItem {
/*
k := ""
if len(key) > 0 {
k = key[0]
}
retM := C.addItem(C.MenuObj{
title: C.CString(title),
key: C.CString(k),
menu: m.menu,
})
*/
item := MenuItem{
Action: action,
title: title,
// menuItem: retM.menuItem,
parent: m,
}
menuItems = append(menuItems, &item)
return &item
}
// AddSeparatorItem adds separator item to menu
func (m *Menu) AddSeparatorItem() {
/* C.addSeparatorItem(C.MenuObj{
menu: m.menu,
}) */
}
//export goMenuFunc
// func goMenuFunc(m C.MenuObj) {
// go func() {
// for _, mm := range menuItems {
// if unsafe.Pointer(mm.menuItem) == unsafe.Pointer(m.menuItem) {
// go mm.Action()
// }
// }
// }()
// }