From 1cf1b5e6ce3981ea1ecbdafbbae0afa7b0983c99 Mon Sep 17 00:00:00 2001 From: Eric Pouech Date: Mon, 21 Oct 2002 18:20:23 +0000 Subject: [PATCH] Implemented a few more macros for button manipulation (enable/disable/changing macro). --- programs/winhelp/macro.c | 76 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 66 insertions(+), 10 deletions(-) diff --git a/programs/winhelp/macro.c b/programs/winhelp/macro.c index f2c42a4a780..076b917af1c 100644 --- a/programs/winhelp/macro.c +++ b/programs/winhelp/macro.c @@ -27,6 +27,18 @@ WINE_DEFAULT_DEBUG_CHANNEL(winhelp); +/******* helper functions *******/ +WINHELP_BUTTON** MACRO_LookupButton(WINHELP_WINDOW* win, LPCSTR name) +{ + WINHELP_BUTTON** b; + + for (b = &win->first_button; *b; b = &(*b)->next) + if (!lstrcmpi(name, (*b)->lpszID)) break; + return b; +} + +/******* real macro implementation *******/ + void MACRO_About(void) { WINE_FIXME("About()\n"); @@ -78,14 +90,49 @@ void MACRO_BrowseButtons(void) MACRO_CreateButton("BTN_NEXT", "&>>", "Next()"); } -void MACRO_ChangeButtonBinding(LPCSTR str1, LPCSTR str2) +void MACRO_ChangeButtonBinding(LPCSTR id, LPCSTR macro) { - WINE_FIXME("ChangeButtonBinding(\"%s\", \"%s\")\n", str1, str2); + WINHELP_WINDOW* win = Globals.active_win; + WINHELP_BUTTON* button; + WINHELP_BUTTON** b; + LONG size; + LPSTR ptr; + + b = MACRO_LookupButton(win, id); + if (!*b) {WINE_FIXME("Couldn't find button '%s'\n", id); return;} + + size = sizeof(WINHELP_BUTTON) + lstrlen(id) + + lstrlen((*b)->lpszName) + lstrlen(macro) + 3; + + button = HeapAlloc(GetProcessHeap(), 0, size); + if (!button) return; + + button->next = (*b)->next; + button->hWnd = (*b)->hWnd; + button->wParam = (*b)->wParam; + + ptr = (char*)button + sizeof(WINHELP_BUTTON); + + lstrcpy(ptr, (LPSTR) id); + button->lpszID = ptr; + ptr += lstrlen(id) + 1; + + lstrcpy(ptr, (LPSTR) (*b)->lpszName); + button->lpszName = ptr; + ptr += lstrlen((*b)->lpszName) + 1; + + lstrcpy(ptr, (LPSTR) macro); + button->lpszMacro = ptr; + + *b = button; + + SendMessage(win->hMainWnd, WM_USER, 0, 0); } -void MACRO_ChangeEnable(LPCSTR str1, LPCSTR str2) +void MACRO_ChangeEnable(LPCSTR id, LPCSTR macro) { - WINE_FIXME("ChangeEnable(\"%s\", \"%s\")\n", str1, str2); + MACRO_ChangeButtonBinding(id, macro); + MACRO_EnableButton(id); } void MACRO_ChangeItemBinding(LPCSTR str1, LPCSTR str2) @@ -193,9 +240,14 @@ void MACRO_DestroyButton(LPCSTR str) WINE_FIXME("DestroyButton(\"%s\")\n", str); } -void MACRO_DisableButton(LPCSTR str) +void MACRO_DisableButton(LPCSTR id) { - WINE_FIXME("DisableButton(\"%s\")\n", str); + WINHELP_BUTTON** b; + + b = MACRO_LookupButton(Globals.active_win, id); + if (!*b) {WINE_FIXME("Couldn't find button '%s'\n", id); return;} + + EnableWindow((*b)->hWnd, FALSE); } void MACRO_DisableItem(LPCSTR str) @@ -203,9 +255,14 @@ void MACRO_DisableItem(LPCSTR str) WINE_FIXME("DisableItem(\"%s\")\n", str); } -void MACRO_EnableButton(LPCSTR str) +void MACRO_EnableButton(LPCSTR id) { - WINE_FIXME("EnableButton(\"%s\")\n", str); + WINHELP_BUTTON** b; + + b = MACRO_LookupButton(Globals.active_win, id); + if (!*b) {WINE_FIXME("Couldn't find button '%s'\n", id); return;} + + EnableWindow((*b)->hWnd, TRUE); } void MACRO_EnableItem(LPCSTR str) @@ -251,8 +308,7 @@ void MACRO_ExtInsertMenu(LPCSTR str1, LPCSTR str2, LPCSTR str3, LONG u1, LONG u2 BOOL MACRO_FileExist(LPCSTR str) { - WINE_FIXME("FileExist(\"%s\")\n", str); - return TRUE; + return GetFileAttributes(str) != 0xFFFFFFFF; } void MACRO_FileOpen(void) -- 2.11.4.GIT