@@ -11,6 +11,7 @@ import (
11
11
12
12
"fyne.io/fyne/v2"
13
13
"fyne.io/fyne/v2/app"
14
+ "fyne.io/fyne/v2/driver/desktop"
14
15
"fyne.io/fyne/v2/container"
15
16
"fyne.io/fyne/v2/layout"
16
17
"fyne.io/fyne/v2/widget"
@@ -131,7 +132,7 @@ func main() {
131
132
}
132
133
}
133
134
134
- window . SetCloseIntercept ( func () {
135
+ stopButton := widget . NewButton ( "关闭程序" , func () {
135
136
dialog .ShowConfirm ("警告" , "确定要退出程序吗?" , func (b bool ) {
136
137
if b {
137
138
if daemon .Started {
@@ -143,9 +144,33 @@ func main() {
143
144
}, window )
144
145
})
145
146
147
+ if desk , ok := app .(desktop.App ); ok {
148
+ m := fyne .NewMenu ("MCSManager" ,
149
+ fyne .NewMenuItem ("显示" , func () {
150
+ window .Show ()
151
+ }))
152
+ fyne .NewMenuItem ("关闭" , func () {
153
+ window .Show ()
154
+ dialog .ShowConfirm ("警告" , "确定要退出程序吗?" , func (b bool ) {
155
+ if b {
156
+ if daemon .Started {
157
+ dialog .ShowInformation ("错误" , "您必须关闭后台程序才能关闭本窗口" , window )
158
+ return
159
+ }
160
+ os .Exit (0 )
161
+ }
162
+ }, window )
163
+ })
164
+ desk .SetSystemTrayMenu (m )
165
+ }
166
+
167
+ window .SetCloseIntercept (func () {
168
+ window .Hide ()
169
+ })
170
+
146
171
paddingContainer1 := container .New (layout .NewPaddedLayout (), infoLabel .Canvas )
147
172
paddingContainer2 := container .New (layout .NewPaddedLayout (), container .New (layout .NewVBoxLayout (), statusLabel .Canvas , tipLabelWrapper ))
148
- paddingContainer3 := container .New (layout .NewPaddedLayout (), container .New (layout .NewVBoxLayout (), btnWrapper , openBrowser ))
173
+ paddingContainer3 := container .New (layout .NewPaddedLayout (), container .New (layout .NewVBoxLayout (), btnWrapper , openBrowser , stopButton ))
149
174
content := container .New (layout .NewVBoxLayout (), paddingContainer1 , layout .NewSpacer (), paddingContainer2 , paddingContainer3 )
150
175
window .SetContent (container .New (layout .NewPaddedLayout (), content ))
151
176
window .ShowAndRun ()
0 commit comments