From 0537163f8d10674d96e2782f27f44f35a8c4abb2 Mon Sep 17 00:00:00 2001 From: Ged Murphy Date: Fri, 20 Jun 2008 11:20:26 +0000 Subject: [PATCH] Save the select test info on close. The browse dialog now lists all winetest dlls and allows selection of either all tests in all dlls, all tests within a dll, or the option to choose individual tests. (rewuires a modified winetest framework) svn path=/trunk/; revision=34034 --- rostests/winetests/GUI/browsewnd.c | 59 +++++++++++++++++++++------- rostests/winetests/GUI/lang/en-US.rc | 4 +- rostests/winetests/GUI/misc.c | 2 +- rostests/winetests/GUI/precomp.h | 4 +- 4 files changed, 49 insertions(+), 20 deletions(-) diff --git a/rostests/winetests/GUI/browsewnd.c b/rostests/winetests/GUI/browsewnd.c index 1e0b650f16f..0b82fb3d3b1 100644 --- a/rostests/winetests/GUI/browsewnd.c +++ b/rostests/winetests/GUI/browsewnd.c @@ -88,8 +88,6 @@ GetListOfTestDlls(PMAIN_WND_INFO pInfo) { if (!(findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { - //MessageBoxW(NULL, findFileData.cFileName, NULL, 0); - /* set the path */ wcscpy(ptr, szDllPath); @@ -124,11 +122,9 @@ FreeItemTag(PMAIN_WND_INFO pInfo, HTREEITEM hItem) { TV_ITEM tvItem; - WCHAR buf[256]; tvItem.hItem = hItem; - tvItem.mask = TVIF_PARAM | TVIF_TEXT; - tvItem.pszText = buf; + tvItem.mask = TVIF_PARAM; (void)TreeView_GetItem(pInfo->hBrowseTV, &tvItem); @@ -217,8 +213,10 @@ BuildTestItemData(LPWSTR lpDll, sizeof(TEST_ITEM)); if (pItem) { - wcsncpy(pItem->szSelectedDll, lpDll, MAX_PATH); - wcsncpy(pItem->szRunString, lpRun, MAX_RUN_CMD); + if (lpDll) + wcsncpy(pItem->szSelectedDll, lpDll, MAX_PATH); + if (lpRun) + wcsncpy(pItem->szRunString, lpRun, MAX_RUN_CMD); } return pItem; @@ -229,6 +227,7 @@ PopulateTreeView(PMAIN_WND_INFO pInfo) { HTREEITEM hRoot; HIMAGELIST hImgList; + PTEST_ITEM pTestItem; DLLNAME GetTestName; MODULES GetModulesInTest; HMODULE hDll; @@ -250,11 +249,13 @@ PopulateTreeView(PMAIN_WND_INFO pInfo) hImgList, TVSIL_NORMAL); + pTestItem = BuildTestItemData(L"", L"Full"); + /* insert the root item into the tree */ hRoot = InsertIntoTreeView(pInfo->hBrowseTV, NULL, L"Full", - 0, + pTestItem, IL_MAIN, HAS_CHILD); @@ -272,7 +273,6 @@ PopulateTreeView(PMAIN_WND_INFO pInfo) LPSTR lpModules, ptr; LPWSTR lpModW; INT numMods; - PTEST_ITEM pTestItem; lpTestName = GetTestName(); @@ -383,14 +383,43 @@ BrowseDlgProc(HWND hDlg, case WM_COMMAND: { - if ((LOWORD(wParam) == IDOK) || (LOWORD(wParam) == IDCANCEL)) + switch (LOWORD(wParam)) { - HeapFree(GetProcessHeap(), 0, pInfo->lpDllList); - pInfo->lpDllList = NULL; + case IDOK: + { + TV_ITEM tvItem; - EndDialog(hDlg, - LOWORD(wParam)); - return TRUE; + tvItem.hItem = TreeView_GetSelection(pInfo->hBrowseTV); + tvItem.mask = TVIF_PARAM; + + if (TreeView_GetItem(pInfo->hBrowseTV, &tvItem)) + { + PTEST_ITEM pItem; + + pItem = (PTEST_ITEM)tvItem.lParam; + if (pItem) + CopyMemory(&pInfo->SelectedTest, pItem, sizeof(TEST_ITEM)); + + EndDialog(hDlg, + LOWORD(wParam)); + } + else + { + DisplayMessage(L"Please select an item"); + } + + break; + } + + case IDCANCEL: + { + HeapFree(GetProcessHeap(), 0, pInfo->lpDllList); + pInfo->lpDllList = NULL; + + EndDialog(hDlg, + LOWORD(wParam)); + return TRUE; + } } break; diff --git a/rostests/winetests/GUI/lang/en-US.rc b/rostests/winetests/GUI/lang/en-US.rc index dd54c735626..3b2578cb931 100644 --- a/rostests/winetests/GUI/lang/en-US.rc +++ b/rostests/winetests/GUI/lang/en-US.rc @@ -29,7 +29,7 @@ STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME CAPTION "Test hierarchy" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - PUSHBUTTON "Select", IDC_SELECT, 202, 7, 50, 14 + PUSHBUTTON "Select", IDOK, 202, 7, 50, 14 + PUSHBUTTON "Close", IDCANCEL, 202, 34, 50, 14 CONTROL "", IDC_TREEVIEW, "SysTreeView32", WS_BORDER | TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT, 7, 7, 189, 236 - PUSHBUTTON "Close", IDOK, 202, 34, 50, 14 END diff --git a/rostests/winetests/GUI/misc.c b/rostests/winetests/GUI/misc.c index 227657583b1..215b3d3119b 100644 --- a/rostests/winetests/GUI/misc.c +++ b/rostests/winetests/GUI/misc.c @@ -208,7 +208,7 @@ VOID DisplayError(INT err) LocalFree(lpMsgBuf); } -VOID DisplayString(LPWSTR lpMsg) +VOID DisplayMessage(LPWSTR lpMsg) { MessageBoxW(NULL, lpMsg, L"Note!", MB_ICONEXCLAMATION|MB_OK); } diff --git a/rostests/winetests/GUI/precomp.h b/rostests/winetests/GUI/precomp.h index 279cd97a094..91d3481f335 100644 --- a/rostests/winetests/GUI/precomp.h +++ b/rostests/winetests/GUI/precomp.h @@ -32,7 +32,7 @@ typedef struct _MAIN_WND_INFO LPWSTR lpDllList; INT numDlls; - PTEST_ITEM SelectedTest; + TEST_ITEM SelectedTest; } MAIN_WND_INFO, *PMAIN_WND_INFO; @@ -46,7 +46,7 @@ BOOL CALLBACK BrowseDlgProc(HWND hDlg, UINT Message, WPARAM wParam, LPARAM lPara /* misc.c */ HIMAGELIST InitImageList(UINT StartResource, UINT EndResource, UINT Width, UINT Height); -VOID DisplayString(LPWSTR lpMsg); +VOID DisplayMessage(LPWSTR lpMsg); VOID DisplayError(INT err); DWORD AnsiToUnicode(LPCSTR lpSrcStr, LPWSTR *lpDstStr);