-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.go
143 lines (128 loc) · 3.57 KB
/
main.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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
package main
import (
"fmt"
"io/ioutil"
"strconv"
"systray"
"time"
//"github.com/getlantern/systray"
)
func main() {
onExit := func() {
fmt.Println("Starting onExit")
now := time.Now()
ioutil.WriteFile(fmt.Sprintf(`on_exit_%d.txt`, now.UnixNano()), []byte(now.String()), 0644)
fmt.Println("Finished onExit")
}
// Should be called at the very beginning of main().
systray.Run(onReady, onExit)
}
func onReady() {
mQuitOrig := systray.AddMenuItem("Quit", "Quit the whole app")
/* go func() {
<-mQuitOrig.ClickedCh
fmt.Println("Requesting quit")
systray.Quit()
fmt.Println("Finished quitting")
}()
*/
// We can manipulate the systray in other goroutines
go func() {
systray.SetIcon(getIcon("assets/hacker.ico"))
systray.SetTitle("Awesome App")
systray.SetTooltip("Pretty awesome棒棒嗒")
mChange := systray.AddMenuItem("Change Me", "Change Me")
mChecked := systray.AddMenuItem("Unchecked", "Check Me")
mEnabled := systray.AddMenuItem("Enabled", "Enabled")
systray.AddMenuItem("Ignored", "Ignored")
mUrl := systray.AddMenuItem("Open Lantern.org", "my home")
/* */
mUrl.SetIcon(getIcon("assets/hacker.ico"))
mmmmm := mUrl.AddSubMenuItem("mmmmmmmUrl-Sub2", "mmmmmmUrl-Sub2")
mmmmm.SetTitle("uuuuuuu")
mUrlSub := mUrl.AddSubMenuItem("mUrl-Sub1", "mUrl-Sub1")
mUrlSub.SetIcon(getIcon("assets/hacker.ico"))
/* */
mUrl.AddSubMenuItem("mUrl-Sub3", "mUrl-Sub3")
mUrilSubSub := mUrlSub.AddSubMenuItem("mUrl-Sub1-Sub1", "mUrl-Sub1-Sub1")
/* */ mUrlSub.AddSubMenuItem("mUrl-Sub1-Sub2", "mUrl-Sub1-Sub2")
/* */ mUrlSub.AddSubMenuItem("mUrl-Sub1-Sub3", "mUrl-Sub1-Sub3")
/* */ mUrlSub.AddSubMenuItem("mUrl-Sub1-Sub4", "mUrl-Sub1-Sub4")
mUrilSubSub.AddSubMenuItem("mUrl-Sub-Sub-Sub", "mUrl-Sub-Sub-Sub")
mQuit := systray.AddMenuItem("退出", "Quit the whole app")
// Sets the icon of a menu item. Only available on Mac.
mQuit.SetIcon(getIcon("assets/hacker.ico"))
systray.AddSeparator()
mToggle := systray.AddMenuItem("Toggle", "Toggle the Quit button")
shown := true
for {
select {
case <-mmmmm.ClickedCh:
fmt.Println("mmmmm")
if mmmmm.Checked() {
mmmmm.Uncheck()
mmmmm.SetTitle("Arash unchecked")
} else {
mmmmm.Check()
mmmmm.SetTitle("Arach checked")
}
case <-mUrlSub.ClickedCh:
fmt.Println("murl")
case <-mChange.ClickedCh:
mChange.SetTitle("I've Changed")
fmt.Println("AAA")
case <-mUrlSub.ClickedCh:
mUrlSub.SetTitle("I've Changed")
case <-mChecked.ClickedCh:
if mChecked.Checked() {
mChecked.Uncheck()
mChecked.SetTitle("Unchecked")
} else {
mChecked.Check()
mChecked.SetTitle("Checked")
}
case <-mEnabled.ClickedCh:
mEnabled.SetTitle("Disabled")
mEnabled.Disable()
case <-mToggle.ClickedCh:
if shown {
mQuitOrig.Hide()
mEnabled.Hide()
shown = false
} else {
mQuitOrig.Show()
mEnabled.Show()
shown = true
}
case <-mQuit.ClickedCh:
systray.Quit()
fmt.Println("Quit2 now...")
return
}
}
}()
go func() {
for {
systray.SetTitle(getTime())
//systray.SetTooltip("Look at me, I'm a tooltip!")
time.Sleep(1 * time.Second)
//systray.AddMenuItem("退出", "Quit the whole app")
}
}()
}
func getTime() string {
t := time.Now()
hour, min, sec := t.Clock()
return ItoaTwoDigits(hour) + ":" + ItoaTwoDigits(min) + ":" + ItoaTwoDigits(sec)
}
func ItoaTwoDigits(i int) string {
b := "0" + strconv.Itoa(i)
return b[len(b)-2:]
}
func getIcon(s string) []byte {
b, err := ioutil.ReadFile(s)
if err != nil {
fmt.Print(err)
}
return b
}