forked from SheepTester/words-go-here
-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.js
148 lines (133 loc) · 5.15 KB
/
main.js
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
144
145
146
147
148
const license = `版权所有 © 2019-2020 冯铄及Pixelworld Studio
特此免费授予获得此软件和相关文档文件(“软件”)副本的任何人无限制使用软件的权利,包括但不限于使用,复制,修改,合并的权利,发布,分发,再许可和/或出售本软件的副本,并允许具备软件的人员这样做,但须满足以下条件:
上述版权声明和此许可声明应包含在本软件的所有副本或大部分内容中。
本软件按“原样”提供,不提供任何形式的明示或暗示的保证,包括但不限于对适销性,特定目的的适用性和非侵权性的保证。无论是由于软件,使用或其他方式产生的,与之有关或与之有关的合同,侵权或其他形式的任何索赔,损害或其他责任,作者或版权所有者概不负责。`;
const aboutElectron = `本程序使用了Electron v8.2.5
Electron利用Chromium渲染引擎和NodeJS运行时实现基于JavaScript,HTML和CSS等网页前端技术的跨平台桌面应用并可为其自动生成安装包。
更多信息请见官网 https://www.electronjs.org`;
const electron = require('electron');
const _app = electron.app;
const _BrowserWindow = electron.BrowserWindow;
const _Menu = electron.Menu;
// 保持一个对于 window 对象的全局引用,不然,当 JavaScript 被 GC,
// window 会被自动地关闭
var mainWindow = null;
// ========== Menu Bar ==========
const template = [
{
label: "查看(V)",
submenu: [
{
label: "放大",
accelerator: "CmdOrCtrl+=",
role: "zoomin"
},
{
label: "缩小",
accelerator: "CmdOrCtrl+-",
role: "zoomout"
},
{
label: "重置缩放级别",
accelerator: "CmdOrCtrl+0",
role: "resetzoom"
}
]
},
{
label: "帮助(H)",
submenu: [
{
label: "联机帮助文档...",
click() {
electron.shell.openExternal("https://github.com/fengshuo2004/SB3toHTML/wiki");
}
},
{
label: "提交错误报告...",
click() {
electron.shell.openExternal("https://github.com/fengshuo2004/SB3toHTML/issues/new");
}
}
]
},
{
label: "关于(A)",
submenu: [
{
label: "原作者SheepTester...",
click(){
electron.shell.openExternal("https://sheeptester.github.io/");
}
},
{
label: "Scratch虚拟机...",
click(){
electron.shell.openExternal("https://github.com/LLK/scratch-vm/");
}
},
{
label: "Electron框架...",
click() {
electron.dialog.showMessageBox(mainWindow, { type: "info", message: aboutElectron, icon: "resources/app.asar/assets/electron.png" });
}
},
{
label: "MIT开源软件许可证...",
click() {
electron.dialog.showMessageBox(mainWindow, { type: "info", message: license, icon: "resources/app.asar/assets/icon.png"});
}
}
]
}
]
if (process.platform === 'darwin') {
template.unshift({
label: app.getName(),
submenu: [
{
label: '退出',
accelerator: 'CmdOrCtrl+Q',
click() {
app.quit();
}
}
]
});
}
// Allow Win10 Notifications to work, although we don't use it anyway
_app.setAppUserModelId("com.pixelworld.sbconv");
// 当所有窗口被关闭了,退出。
_app.on('window-all-closed', function () {
// 在 OS X 上,通常用户在明确地按下 Cmd + Q 之前
// 应用会保持活动状态
if (process.platform != 'darwin') {
_app.quit();
}
});
// 当 Electron 完成了初始化并且准备创建浏览器窗口的时候
// 这个方法就被调用
_app.on('ready', function () {
const appMenu = _Menu.buildFromTemplate(template);
_Menu.setApplicationMenu(appMenu);
// 创建浏览器窗口。
mainWindow = new _BrowserWindow(
{ width: 600, height: 710, icon: "assets/icon.png",
webPreferences: {nodeIntegration: true, zoomFactor: 0.8}}
);
// 加载应用的 index.html
mainWindow.loadURL('file://' + __dirname + '/index.html');
// mainWindow.openDevTools();
// 当 window 被关闭,这个事件会被发出
mainWindow.on('closed', function () {
// 取消引用 window 对象,如果你的应用支持多窗口的话,
// 通常会把多个 window 对象存放在一个数组里面,
// 但这次不是。
mainWindow = null;
});
// Links open in your default browser
mainWindow.webContents.on('new-window', function (e, url) {
e.preventDefault();
electron.shell.openExternal(url);
});
});