80 lines
2.2 KiB
JavaScript
80 lines
2.2 KiB
JavaScript
let electronMain;
|
|
try {
|
|
electronMain = require('electron/main');
|
|
} catch {
|
|
electronMain = require('electron');
|
|
}
|
|
|
|
const { app, BrowserWindow, ipcMain, Menu } = electronMain;
|
|
const path = require('path');
|
|
|
|
const {
|
|
listJLinks,
|
|
startTest,
|
|
stopTest,
|
|
getStatus,
|
|
syncSessionConfig,
|
|
canStartSession,
|
|
stopAllSessions,
|
|
} = require('./services/dtmController.cjs');
|
|
|
|
let mainWindow;
|
|
|
|
const createWindow = async () => {
|
|
mainWindow = new BrowserWindow({
|
|
width: 1500,
|
|
height: 980,
|
|
minWidth: 1180,
|
|
minHeight: 760,
|
|
backgroundColor: '#f3f0e8',
|
|
webPreferences: {
|
|
preload: path.join(__dirname, 'preload.cjs'),
|
|
contextIsolation: true,
|
|
nodeIntegration: false,
|
|
},
|
|
});
|
|
|
|
const devServerUrl = process.env.VITE_DEV_SERVER_URL;
|
|
|
|
if (devServerUrl) {
|
|
await mainWindow.loadURL(devServerUrl);
|
|
mainWindow.webContents.openDevTools({ mode: 'detach' });
|
|
} else {
|
|
await mainWindow.loadFile(path.join(app.getAppPath(), 'dist', 'index.html'));
|
|
}
|
|
};
|
|
|
|
ipcMain.handle('jlink:list', async () => listJLinks());
|
|
ipcMain.handle('serial:list', async () => listJLinks());
|
|
ipcMain.handle('dtm:status', async (_, sessionId) => getStatus(sessionId));
|
|
ipcMain.handle('dtm:stop', async (_, sessionId) => stopTest(sessionId));
|
|
ipcMain.handle('dtm:sync-config', async (_, sessionId, config) => syncSessionConfig(sessionId, config));
|
|
ipcMain.handle('dtm:can-start', async (_, sessionId, config) => canStartSession(sessionId, config));
|
|
ipcMain.handle('dtm:start', async (_, sessionId, config) =>
|
|
startTest(sessionId, config, event => {
|
|
if (!mainWindow || mainWindow.isDestroyed()) return;
|
|
mainWindow.webContents.send('dtm:event', event);
|
|
})
|
|
);
|
|
|
|
app.whenReady().then(() => {
|
|
Menu.setApplicationMenu(null);
|
|
return createWindow();
|
|
});
|
|
|
|
app.on('before-quit', () => {
|
|
stopAllSessions().catch(() => {});
|
|
});
|
|
|
|
app.on('window-all-closed', () => {
|
|
if (process.platform !== 'darwin') {
|
|
app.quit();
|
|
}
|
|
});
|
|
|
|
app.on('activate', () => {
|
|
if (BrowserWindow.getAllWindows().length === 0) {
|
|
createWindow().catch(console.error);
|
|
}
|
|
});
|