Refactor settings menu and add autostart/close-to-tray options
This commit is contained in:
45
main.js
45
main.js
@@ -16,11 +16,14 @@ const store = new Store({
|
|||||||
selected: null,
|
selected: null,
|
||||||
skymode: true,
|
skymode: true,
|
||||||
skipGitPrompt: true,
|
skipGitPrompt: true,
|
||||||
intelligentCommitThreshold: 100
|
intelligentCommitThreshold: 20,
|
||||||
|
autostart: false,
|
||||||
|
closeToTray: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
let tray = null;
|
let tray = null;
|
||||||
|
let isQuiting = false;
|
||||||
|
|
||||||
function createTray(win) {
|
function createTray(win) {
|
||||||
const iconPath = path.join(__dirname, 'assets/icon/trayicon.png');
|
const iconPath = path.join(__dirname, 'assets/icon/trayicon.png');
|
||||||
@@ -570,17 +573,16 @@ async function autoCommit(folderPath, message) {
|
|||||||
app.whenReady().then(() => {
|
app.whenReady().then(() => {
|
||||||
const win = createWindow();
|
const win = createWindow();
|
||||||
|
|
||||||
// Menüs
|
// Menubar
|
||||||
|
|
||||||
const menu = Menu.buildFromTemplate([
|
const menu = Menu.buildFromTemplate([
|
||||||
{
|
{
|
||||||
role: 'appMenu',
|
role: 'appMenu',
|
||||||
submenu: [
|
submenu: [
|
||||||
{ label: 'Settings', click: () => openSettings(win) },
|
{ label: 'Settings', click: () => openSettings(win) },
|
||||||
{ role: 'quit', label: 'Quit' }
|
{ label: 'Quit', role: 'quit', click: () => { isQuiting = true; app.quit(); } }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{ role: 'editMenu' } // <-- hiermit aktivierst du Copy/Paste via Ctrl+C / Cmd+C
|
{ role: 'editMenu' }
|
||||||
]);
|
]);
|
||||||
Menu.setApplicationMenu(menu);
|
Menu.setApplicationMenu(menu);
|
||||||
|
|
||||||
@@ -634,7 +636,7 @@ app.whenReady().then(() => {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ type: 'separator' },
|
{ type: 'separator' },
|
||||||
{ label: 'Beenden', role: 'quit' }
|
{ label: 'Beenden', click: () => { isQuiting = true; app.quit(); } }
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1016,12 +1018,35 @@ app.whenReady().then(() => {
|
|||||||
store.set('intelligentCommitThreshold', value);
|
store.set('intelligentCommitThreshold', value);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
ipcMain.handle('get-autostart', () => store.get('autostart'));
|
||||||
|
ipcMain.handle('set-autostart', (_e, val) => {
|
||||||
|
store.set('autostart', val);
|
||||||
|
// Optional: System-Autostart umschalten (siehe unten)
|
||||||
|
});
|
||||||
|
ipcMain.handle('get-close-to-tray', () => store.get('closeToTray'));
|
||||||
|
ipcMain.handle('set-close-to-tray', (_e, val) => store.set('closeToTray', val));
|
||||||
|
|
||||||
|
|
||||||
ipcMain.on('close-settings', () => {
|
ipcMain.on('close-settings', () => {
|
||||||
if (settingsWin) settingsWin.close();
|
if (settingsWin) settingsWin.close();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ipcMain.handle('set-autostart', (_e, enabled) => {
|
||||||
|
store.set('autostart', enabled);
|
||||||
|
app.setLoginItemSettings({
|
||||||
|
openAtLogin: !!enabled
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
win.webContents.openDevTools({ mode: 'detach' });
|
win.webContents.openDevTools({ mode: 'detach' });
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// … Ende der IPC-Handler …
|
// … Ende der IPC-Handler …
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1047,9 +1072,9 @@ ipcMain.on('show-folder-context-menu', (event, folderPath) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// clean up on exit
|
// clean up on exit
|
||||||
app.on('window-all-closed', () => {
|
win.on('close', (e) => {
|
||||||
if (process.platform !== 'darwin'){
|
if (!isQuiting && store.get('closeToTray')) {
|
||||||
//app.isQuiting = true;
|
e.preventDefault();
|
||||||
app.quit();
|
win.hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -12,6 +12,10 @@ contextBridge.exposeInMainWorld('settingsAPI', {
|
|||||||
getReadmeModel: () => ipcRenderer.invoke('get-readme-model'),
|
getReadmeModel: () => ipcRenderer.invoke('get-readme-model'),
|
||||||
setReadmeModel: (model) => ipcRenderer.invoke('set-readme-model', model),
|
setReadmeModel: (model) => ipcRenderer.invoke('set-readme-model', model),
|
||||||
close: () => ipcRenderer.send('close-settings')
|
close: () => ipcRenderer.send('close-settings')
|
||||||
|
getAutostart: () => ipcRenderer.invoke('get-autostart'),
|
||||||
|
setAutostart: val => ipcRenderer.invoke('set-autostart', val),
|
||||||
|
getCloseToTray: () => ipcRenderer.invoke('get-close-to-tray'),
|
||||||
|
setCloseToTray: val => ipcRenderer.invoke('set-close-to-tray', val),
|
||||||
});
|
});
|
||||||
|
|
||||||
contextBridge.exposeInMainWorld('electronAPI', {
|
contextBridge.exposeInMainWorld('electronAPI', {
|
||||||
|
|||||||
@@ -149,6 +149,15 @@
|
|||||||
const ok = document.getElementById('okBtn');
|
const ok = document.getElementById('okBtn');
|
||||||
const cancel = document.getElementById('cancelBtn');
|
const cancel = document.getElementById('cancelBtn');
|
||||||
const close = document.getElementById('closeBtn');
|
const close = document.getElementById('closeBtn');
|
||||||
|
const cbAutostart = document.getElementById('autostart');
|
||||||
|
const cbCloseToTray= document.getElementById('closeToTray');
|
||||||
|
|
||||||
|
const [initialAutostart, initialCloseToTray] = await Promise.all([
|
||||||
|
window.settingsAPI.getAutostart(),
|
||||||
|
window.settingsAPI.getCloseToTray()
|
||||||
|
]);
|
||||||
|
cbAutostart.checked = initialAutostart;
|
||||||
|
cbCloseToTray.checked = initialCloseToTray;
|
||||||
|
|
||||||
// Initialwerte parallel laden
|
// Initialwerte parallel laden
|
||||||
const [initialSky, initialSkip, initialThreshold] = await Promise.all([
|
const [initialSky, initialSkip, initialThreshold] = await Promise.all([
|
||||||
@@ -284,7 +293,14 @@
|
|||||||
<!-- Hier kommt das Model-Selector-HTML rein -->
|
<!-- Hier kommt das Model-Selector-HTML rein -->
|
||||||
<div id="ollama-model-selectors"></div>
|
<div id="ollama-model-selectors"></div>
|
||||||
</div>
|
</div>
|
||||||
|
<label class="option">
|
||||||
|
<input type="checkbox" id="autostart" />
|
||||||
|
Launch on System start
|
||||||
|
</label>
|
||||||
|
<label class="option">
|
||||||
|
<input type="checkbox" id="closeToTray" checked />
|
||||||
|
Close to Tray
|
||||||
|
</label>
|
||||||
<!-- Weitere Optionen in Zukunft hier hinzufügen -->
|
<!-- Weitere Optionen in Zukunft hier hinzufügen -->
|
||||||
</div>
|
</div>
|
||||||
<div class="buttons">
|
<div class="buttons">
|
||||||
|
|||||||
Reference in New Issue
Block a user