Skip to content

Commit 32845d7

Browse files
committed
Add restart to tray
1 parent a69244c commit 32845d7

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

src/main.c

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
// TODO:
2-
// - some way to reload scripts... maybe just restart process until it is figured out
32
// - click handlers for blocks
43

54
// Require Windows 10
@@ -25,7 +24,7 @@ INCTXT(wblocksLibMJS, "src/lib.mjs");
2524
#define WM_WBLOCKS_TRAY (WM_USER + 1)
2625

2726
#define TRAY_MENU_SHOW_LOG 1
28-
#define TRAY_MENU_RELOAD_SCRIPTS 2
27+
#define TRAY_MENU_RESTART 2
2928
#define TRAY_MENU_EXIT 3
3029

3130
#define WBLOCKS_MAX_LEN 1024
@@ -251,6 +250,17 @@ void cleanupWnd()
251250
createWindowTimer = SetTimer(NULL, 0, 3000, (TIMERPROC)retryCreateWindow);
252251
}
253252

253+
void restartProgram()
254+
{
255+
STARTUPINFO si;
256+
GetStartupInfo(&si);
257+
TCHAR szPath[MAX_PATH + 1];
258+
GetModuleFileName(NULL, szPath, MAX_PATH);
259+
PROCESS_INFORMATION pi;
260+
assert(CreateProcess(szPath, GetCommandLine(), NULL, NULL, FALSE, DETACHED_PROCESS, NULL, NULL, &si, &pi));
261+
exit(0);
262+
}
263+
254264
LRESULT CALLBACK wndProc(HWND wnd, UINT msg, WPARAM wParam, LPARAM lParam)
255265
{
256266
#ifdef DEBUG
@@ -271,7 +281,7 @@ LRESULT CALLBACK wndProc(HWND wnd, UINT msg, WPARAM wParam, LPARAM lParam)
271281
GetCursorPos(&pt);
272282
HMENU hmenu = CreatePopupMenu();
273283
InsertMenu(hmenu, 0, MF_BYPOSITION | MF_STRING, TRAY_MENU_SHOW_LOG, "Show Log");
274-
InsertMenu(hmenu, 1, MF_BYPOSITION | MF_STRING, TRAY_MENU_RELOAD_SCRIPTS, "Reload Scripts");
284+
InsertMenu(hmenu, 1, MF_BYPOSITION | MF_STRING, TRAY_MENU_RESTART, "Restart");
275285
InsertMenu(hmenu, 2, MF_BYPOSITION | MF_STRING, TRAY_MENU_EXIT, "Exit");
276286
SetForegroundWindow(wnd);
277287
int cmd = TrackPopupMenu(hmenu,
@@ -280,8 +290,9 @@ LRESULT CALLBACK wndProc(HWND wnd, UINT msg, WPARAM wParam, LPARAM lParam)
280290
PostMessage(wnd, WM_NULL, 0, 0);
281291
if (cmd == TRAY_MENU_SHOW_LOG) {
282292
ShellExecute(NULL, NULL, WBLOCKS_LOGFILE, NULL, NULL, SW_SHOWNORMAL);
283-
} else if (cmd == TRAY_MENU_RELOAD_SCRIPTS) {
284-
MessageBoxA(0, "TODO", "TODO", 0); // TODO
293+
} else if (cmd == TRAY_MENU_RESTART) {
294+
cleanupWnd();
295+
restartProgram(); // TODO: opt for proper reload instead
285296
} else if (cmd == TRAY_MENU_EXIT) {
286297
cleanupWnd();
287298
exit(0);

0 commit comments

Comments
 (0)