-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.js
112 lines (91 loc) · 2.77 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
const electron = require( "electron" );
const path = require( "path" );
const reload = require( "electron-reload" );
const isDev = require( "electron-is-dev" );
const { app, BrowserWindow, ipcMain, dialog } = electron;
/*************************************************************
* py process
*************************************************************/
const PY_DIST_FOLDER = 'pyDLdist'
const PY_FOLDER = 'pyDL'
const PY_MODULE = 'api' // without .py suffix
let pyProc = null
let pyPort = null
const guessPackaged = () => {
const fullPath = path.join(__dirname, PY_DIST_FOLDER)
return require('fs').existsSync(fullPath)
}
const getScriptPath = () => {
if (!guessPackaged()) {
return path.join(__dirname, PY_FOLDER, PY_MODULE + '.py')
}
if (process.platform === 'win32') {
return path.join(__dirname, PY_DIST_FOLDER, PY_MODULE, PY_MODULE + '.exe')
}
return path.join(__dirname, PY_DIST_FOLDER, PY_MODULE, PY_MODULE)
}
const selectPort = () => {
pyPort = 4242
return pyPort
}
const createPyProc = () => {
let script = getScriptPath()
let port = '' + selectPort()
if (guessPackaged()) {
pyProc = require('child_process').execFile(script, [port])
} else {
pyProc = require('child_process').spawn('python', [script, port])
}
if (pyProc != null) {
//console.log(pyProc)
console.log('child process success on port ' + port)
}
}
const exitPyProc = () => {
pyProc.kill()
pyProc = null
pyPort = null
}
app.on('ready', createPyProc)
app.on('will-quit', exitPyProc)
/*************************************************************
* window management
*************************************************************/
let mainWindow = null;
if ( isDev ) {
const electronPath = path.join( __dirname, "node_modules", ".bin", "electron" );
reload( __dirname, { electron: electronPath } );
}
app.on( "window-all-closed", () => {
if ( process.platform !== "darwin" ) {
app.quit();
}
} );
//app.on( "ready", function() {
// mainWindow = new BrowserWindow( { width: 800, height: 600 } );
// mainWindow.loadURL( `file://${ __dirname }/index.html` );
// mainWindow.on( "closed", function() {
// mainWindow = null;
// } );
//} );
app.on( "ready", () => {
mainWindow = new BrowserWindow( { width: 800, height: 600, show: false } );
mainWindow.loadURL( `file://${ __dirname }/index.html` );
if ( isDev ) {
mainWindow.webContents.openDevTools();
}
mainWindow.once( "ready-to-show", () => {
mainWindow.show();
} );
mainWindow.on( "closed", () => {
mainWindow = null;
} );
} );
ipcMain.on( "show-dialog", ( e, arg ) => {
const msgInfo = {
title: "My App Alert",
message: arg.message,
buttons: [ "OK" ]
};
dialog.showMessageBox( msgInfo );
} );