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+
254264LRESULT 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