From 9fc398c76be4b2d5379b5bba877e627ecd739971 Mon Sep 17 00:00:00 2001 From: "mr.exodia" Date: Thu, 13 Mar 2014 15:37:21 +0100 Subject: [PATCH] - threaded dialog, meaning you can see the log when a target is running - aligned the GUI elements --- TitanScriptGui/TitanScriptGui.cpp | 48 +++++++++++++++++++----------- TitanScriptGui/TitanScriptGui.rc | Bin 7214 -> 7216 bytes 2 files changed, 31 insertions(+), 17 deletions(-) diff --git a/TitanScriptGui/TitanScriptGui.cpp b/TitanScriptGui/TitanScriptGui.cpp index 2d97edb..8a1b2e6 100644 --- a/TitanScriptGui/TitanScriptGui.cpp +++ b/TitanScriptGui/TitanScriptGui.cpp @@ -6,6 +6,8 @@ //variables static HINSTANCE hInst; static HWND hLogBox; +static HWND hRunBtn; +static bool bRunning; static TCHAR FileNameTarget[MAX_PATH] = {}; static TCHAR FileNameScript[MAX_PATH] = {}; static TCHAR FileNameIni[MAX_PATH] = {}; @@ -18,6 +20,7 @@ static void SettingSet(const TCHAR* name, const TCHAR* value); static void SettingGet(const TCHAR* name, TCHAR* value, int value_size); static bool FileExists(LPCTSTR szPath); static void CreateDummyUnicodeFile(const TCHAR* szFileName); +static DWORD WINAPI TitanScriptExecThread(LPVOID lpParam); //TitanScript functions static tScripterLoadFileA load_file = NULL; @@ -49,6 +52,7 @@ INT_PTR CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) //initialize variables hLogBox = GetDlgItem(hWnd, IDC_LOG); + hRunBtn = GetDlgItem(hWnd, IDC_RUN); int i = GetModuleFileName(hInst, FileNameIni, _countof(FileNameIni)); while(FileNameIni[i] != TCHAR('\\') && i) i--; @@ -117,23 +121,10 @@ INT_PTR CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) } case IDC_RUN: { - char buf[MAX_PATH] = {0}; - - wcstombs(buf, FileNameScript, sizeof(buf)); - if(!load_file(buf)) - { - AddLogMessage("Script failed to load", TS_LOG_ERROR); - break; - } - - wcstombs(buf, FileNameTarget, sizeof(buf)); - if(!exec(buf, "")) //TitanScript will generate the output filename - { - AddLogMessage("Failed to execute", TS_LOG_ERROR); - break; - } - - break; + if(!bRunning) + CreateThread(0, 0, TitanScriptExecThread, 0, 0, 0); + else + StopDebug(); } } @@ -209,3 +200,26 @@ static void CreateDummyUnicodeFile(const TCHAR* szFileName) CloseHandle(hFile); } } + +static DWORD WINAPI TitanScriptExecThread(LPVOID lpParam) +{ + char buf[MAX_PATH] = {0}; + wcstombs(buf, FileNameScript, sizeof(buf)); + if(!load_file(buf)) + { + AddLogMessage("Script failed to load", TS_LOG_ERROR); + return 0; + } + SetWindowText(hRunBtn, _T("Stop")); + bRunning = true; + wcstombs(buf, FileNameTarget, sizeof(buf)); + if(!exec(buf, "")) //TitanScript will generate the output filename + { + AddLogMessage("Failed to execute", TS_LOG_ERROR); + } + else + AddLogMessage("Debugging stopped", TS_LOG_NORMAL); + bRunning = false; + SetWindowText(hRunBtn, _T("Run")); + return 0; +} \ No newline at end of file diff --git a/TitanScriptGui/TitanScriptGui.rc b/TitanScriptGui/TitanScriptGui.rc index 52caa2537f1926ed9dd839da457d8a210e030e4d..30ce4dd91c76faa4c58ec19d09f9c69978506cac 100644 GIT binary patch delta 45 ycmZ2yvB6@)D