-
Notifications
You must be signed in to change notification settings - Fork 31
/
Copy pathmain.js
163 lines (132 loc) · 4.6 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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
const { app, BrowserWindow } = require('electron')
const path = require('path')
const url = require('url')
const glob = require('glob')
const debug = /--debug/.test(process.argv[2])
const autoUpdater = require('./auto-updater')
const Store = require('electron-store');
const store = new Store();
// 保持一个对于 window 对象的全局引用,如果你不这样做,
// 当 JavaScript 对象被垃圾回收, window 会被自动地关闭
let mainWindow
// App 启动初始化
function initialize() {
var shouldQuit = makeSingleInstance()
if (shouldQuit) return app.quit()
loadMainJS()
// 创建启动主页面窗口
function createWindow() {
var windowOptions = {
width: 1188,
minWidth: 880,
height: 650,
minHeight: 450,
title: app.getName()
}
if (process.platform === 'linux') {
windowOptions.icon = path.join(__dirname, '/assets/app-icon/png/512.png')
}
mainWindow = new BrowserWindow(windowOptions);
let getLocalLanguagueSetting = "index.html";
let _let_language = store.get('languageStore');
console.log(_let_language);
switch (_let_language) {
case "ru":
getLocalLanguagueSetting = "index-ru.html"
break;
case "us":
getLocalLanguagueSetting = "index-us.html"
break;
case "cn":
getLocalLanguagueSetting = "index.html"
break;
}
// 然后加载应用的 index.html。
mainWindow.loadURL(url.format({
pathname: path.join(__dirname, getLocalLanguagueSetting),
protocol: 'file:',
slashes: true
}))
// Launch fullscreen with DevTools open, usage: npm run debug
if (debug) {
mainWindow.webContents.openDevTools()
mainWindow.maximize()
require('devtron').install()
}
// 取消引用 window 对象,如果你的应用支持多窗口的话,
// 通常会把多个 window 对象存放在一个数组里面,
// 与此同时,你应该删除相应的元素。
mainWindow.on('closed', function() {
mainWindow = null
})
mainWindow.on('resize', updateReply);
function updateReply() {
// const message = `大小: ${mainWindow.getSize()} - 位置: ${mainWindow.getPosition()}`
// console.log("mainWindow:" + message);
}
}
// Electron 会在初始化后并准备
// 创建浏览器窗口时,调用这个函数。
// 部分 API 在 ready 事件触发后才能使用。
app.on('ready', function() {
createWindow()
autoUpdater.initialize()
})
// 当全部窗口关闭时退出。
app.on('window-all-closed', () => {
// 在 macOS 上,除非用户用 Cmd + Q 确定地退出,
// 否则绝大部分应用及其菜单栏会保持激活。
if (process.platform !== 'darwin') {
app.quit()
}
})
app.on('activate', () => {
// 在macOS上,当单击dock图标并且没有其他窗口打开时,
// 通常在应用程序中重新创建一个窗口。
if (mainWindow === null) {
createWindow()
}
})
}
// 在这文件,你可以续写应用剩下主进程代码。
// 也可以拆分成几个文件,然后用 require 导入。
//
// Require each JS file in the main-process dir
function loadMainJS() {
var files = glob.sync(path.join(__dirname, 'main-process/*.js'))
files.forEach(function(file) {
require(file)
})
autoUpdater.updateMenu()
}
// Make this app a single instance app.
//
// The main window will be restored and focused instead of a second window
// opened when a person attempts to launch a second instance.
//
// Returns true if the current version of the app should quit instead of
// launching.
function makeSingleInstance() {
if (process.mas) return false
return app.makeSingleInstance(function() {
if (mainWindow) {
if (mainWindow.isMinimized()) mainWindow.restore()
mainWindow.focus()
}
})
}
// Handle Squirrel on Windows startup events
switch (process.argv[1]) {
case '--squirrel-install':
autoUpdater.createShortcut(function() { app.quit() })
break
case '--squirrel-uninstall':
autoUpdater.removeShortcut(function() { app.quit() })
break
case '--squirrel-obsolete':
case '--squirrel-updated':
app.quit()
break
default:
initialize()
}