-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathmain.go
More file actions
118 lines (101 loc) · 2.95 KB
/
Copy pathmain.go
File metadata and controls
118 lines (101 loc) · 2.95 KB
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
package main
import (
"embed"
"log"
"github.com/wailsapp/wails/v3/pkg/application"
"github.com/wailsapp/wails/v3/pkg/events"
"vshell/internal/app"
)
//go:embed all:frontend/dist
var assets embed.FS
//go:embed internal/app/icons/save.png
var saveIcon []byte
//go:embed internal/app/icons/close.png
var closeIcon []byte
func main() {
svc := app.New()
wailsApp := application.New(application.Options{
Name: "vShell",
Description: "SSH Client Management Tool",
Services: []application.Service{
application.NewService(svc),
},
Assets: application.AssetOptions{
Handler: application.AssetFileServerFS(assets),
},
Mac: application.MacOptions{
ApplicationShouldTerminateAfterLastWindowClosed: true,
},
})
svc.SetApp(wailsApp)
// Set application menu: vShell (with Settings) + File + Edit + Window
menu := application.NewMenu()
appMenu := menu.AddSubmenu("vShell")
appMenu.AddRole(application.About)
appMenu.AddSeparator()
appMenu.Add("Settings...").
SetAccelerator("CommandOrControl+,").
OnClick(func(ctx *application.Context) {
wailsApp.Event.Emit("menu:settings", nil)
})
appMenu.AddSeparator()
appMenu.AddRole(application.ServicesMenu)
appMenu.AddSeparator()
appMenu.AddRole(application.Hide)
appMenu.AddRole(application.HideOthers)
appMenu.AddRole(application.UnHide)
appMenu.AddSeparator()
appMenu.AddRole(application.Quit)
fileMenu := menu.AddSubmenu("File")
fileMenu.Add("Save").
SetBitmap(saveIcon).
SetAccelerator("CommandOrControl+S").
OnClick(func(ctx *application.Context) {
wailsApp.Event.Emit("menu:save", nil)
})
fileMenu.AddSeparator()
fileMenu.Add("Close").
SetBitmap(closeIcon).
SetAccelerator("CommandOrControl+W").
OnClick(func(ctx *application.Context) {
wailsApp.Event.Emit("menu:close-tab", nil)
})
editMenu := menu.AddSubmenu("Edit")
editMenu.AddRole(application.Undo)
editMenu.AddRole(application.Redo)
editMenu.AddSeparator()
editMenu.AddRole(application.Cut)
editMenu.AddRole(application.Copy)
editMenu.AddRole(application.Paste)
editMenu.AddRole(application.SelectAll)
menu.AddRole(application.WindowMenu)
wailsApp.Menu.Set(menu)
win := wailsApp.Window.NewWithOptions(application.WebviewWindowOptions{
Title: "vShell",
EnableFileDrop: true,
Mac: application.MacWindow{
InvisibleTitleBarHeight: 30,
TitleBar: application.MacTitleBarHidden,
},
BackgroundColour: application.NewRGB(30, 30, 30),
Width: 1280,
Height: 800,
MinWidth: 960,
MinHeight: 600,
URL: "/",
})
win.OnWindowEvent(events.Common.WindowFilesDropped, func(event *application.WindowEvent) {
files := event.Context().DroppedFiles()
details := event.Context().DropTargetDetails()
if len(files) == 0 || details == nil {
return
}
wailsApp.Event.Emit("native:file-drop", map[string]any{
"files": files,
"targetId": details.ElementID,
})
})
if err := wailsApp.Run(); err != nil {
log.Fatal(err)
}
}