From e611b132f9b8abe35b362e5870b74bce94a1e58e Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 16 May 2020 20:51:50 -0700 Subject: initial commit --- private/nw/convert/nwconv/statbox.c | 568 ++++++++++++++++++++++++++++++++++++ 1 file changed, 568 insertions(+) create mode 100644 private/nw/convert/nwconv/statbox.c (limited to 'private/nw/convert/nwconv/statbox.c') diff --git a/private/nw/convert/nwconv/statbox.c b/private/nw/convert/nwconv/statbox.c new file mode 100644 index 000000000..70d2b42a8 --- /dev/null +++ b/private/nw/convert/nwconv/statbox.c @@ -0,0 +1,568 @@ +/* + +-------------------------------------------------------------------------+ + | Status Dialog box routines - Used during Conversion | + +-------------------------------------------------------------------------+ + | (c) Copyright 1993-1994 | + | Microsoft Corp. | + | All rights reserved | + | | + | Program : [StatBox.c] | + | Programmer : Arthur Hanson | + | Original Program Date : [Feb 08, 1994] | + | Last Update : [Feb 08, 1994] | + | | + | Version: 1.00 | + | | + | Description: | + | | + | History: | + | arth Feb 08, 1994 1.00 Original Version. | + | | + +-------------------------------------------------------------------------+ +*/ + + +#include "globals.h" +#include "convapi.h" + +static TCHAR tmpStr[1024]; +static TCHAR PanelTitle[80]; +static HANDLE hStatus = NULL; +static HANDLE hPanel = NULL; +static BOOL DoCancel = FALSE; + +/*+-------------------------------------------------------------------------+ + | Routines for status dialog put up during conversion. | + +-------------------------------------------------------------------------+*/ + +/*+-------------------------------------------------------------------------+ + | DrainPump() + +-------------------------------------------------------------------------+*/ +void DrainPump() { + MSG msg; + + while (PeekMessage(&msg, hStatus, 0, 0xfff, PM_REMOVE)) { + if ((IsDialogMessage(hStatus, &msg) == FALSE) && + (IsDialogMessage(hPanel, &msg) == FALSE)) { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + } + +} // DrainPump + + +/*+-------------------------------------------------------------------------+ + | Status_CurConv() + +-------------------------------------------------------------------------+*/ +// Current server pair being converted +void Status_CurConv(UINT Num) { + wsprintf(tmpStr, TEXT("%5u"), Num); + SendDlgItemMessage(hStatus, IDC_S_CUR_CONV, WM_SETTEXT, 0, (LPARAM) tmpStr); + SendMessage(hStatus, WM_PAINT, 0, 0L); + DrainPump(); +} // Status_CurConv + + +/*+-------------------------------------------------------------------------+ + | Status_TotConv() + +-------------------------------------------------------------------------+*/ +// Total number of server pairs to convert +void Status_TotConv(UINT Num) { + wsprintf(tmpStr, TEXT("%5u"), Num); + SendDlgItemMessage(hStatus, IDC_S_TOT_CONV, WM_SETTEXT, 0, (LPARAM) tmpStr); + SendMessage(hStatus, WM_PAINT, 0, 0L); + DrainPump(); +} // Status_TotConv + + +/*+-------------------------------------------------------------------------+ + | Status_SrcServ() + +-------------------------------------------------------------------------+*/ +// Current source server of server pair being converted +void Status_SrcServ(LPTSTR Server) { + wsprintf(tmpStr, TEXT("%-15s"), Server); + SendDlgItemMessage(hStatus, IDC_S_SRCSERV, WM_SETTEXT, 0, (LPARAM) tmpStr); + SendMessage(hStatus, WM_PAINT, 0, 0L); + DrainPump(); +} // Status_SrcServ + + +/*+-------------------------------------------------------------------------+ + | Status_DestServ() + +-------------------------------------------------------------------------+*/ +// Current destination server of server pair being converted +void Status_DestServ(LPTSTR Server) { + wsprintf(tmpStr, TEXT("%-15s"), Server); + SendDlgItemMessage(hStatus, IDC_S_DESTSERV, WM_SETTEXT, 0, (LPARAM) tmpStr); + SendMessage(hStatus, WM_PAINT, 0, 0L); + DrainPump(); +} // Status_DestServ + + +/*+-------------------------------------------------------------------------+ + | Status_ConvTxt() + +-------------------------------------------------------------------------+*/ +// Text describing what is being converted (Groups, Users Files) +void Status_ConvTxt(LPTSTR Text) { + wsprintf(tmpStr, TEXT("%-20s"), Text); + SendDlgItemMessage(hStatus, IDC_S_CONVTXT, WM_SETTEXT, 0, (LPARAM) tmpStr); + SendMessage(hStatus, WM_PAINT, 0, 0L); + DrainPump(); +} // Status_ConvTxt + + +/*+-------------------------------------------------------------------------+ + | Status_CurNum() + +-------------------------------------------------------------------------+*/ +// Current item number being converted (current group # or User # or file #)... +void Status_CurNum(UINT Num) { + wsprintf(tmpStr, TEXT("%7s"), lToStr(Num)); + SendDlgItemMessage(hStatus, IDC_S_CUR_NUM, WM_SETTEXT, 0, (LPARAM) tmpStr); + SendMessage(hStatus, WM_PAINT, 0, 0L); + DrainPump(); +} // Status_CurNum + + +/*+-------------------------------------------------------------------------+ + | Status_CurTot() + +-------------------------------------------------------------------------+*/ +// Total items in set being converted (user, group, files...) +void Status_CurTot(UINT Num) { + wsprintf(tmpStr, TEXT("%7s"), lToStr(Num)); + SendDlgItemMessage(hStatus, IDC_S_CUR_TOT, WM_SETTEXT, 0, (LPARAM) tmpStr); + SendMessage(hStatus, WM_PAINT, 0, 0L); + DrainPump(); +} // Status_CurTot + + +/*+-------------------------------------------------------------------------+ + | Status_ItemLabel() + +-------------------------------------------------------------------------+*/ +// Label for set being converted ("Group:", "User:") +void Status_ItemLabel(LPTSTR Text, ...) { + va_list marker; + + va_start(marker, Text); + + wvsprintf(tmpStr, Text, marker); + SendDlgItemMessage(hStatus, IDC_S_ITEMLABEL, WM_SETTEXT, 0, (LPARAM) tmpStr); + SendMessage(hStatus, WM_PAINT, 0, 0L); + DrainPump(); + + va_end(marker); + +} // Status_ItemLabel + + +/*+-------------------------------------------------------------------------+ + | Status_Item() + +-------------------------------------------------------------------------+*/ +// Name of current thing being converted (actual user or group name) +void Status_Item(LPTSTR Text) { + wsprintf(tmpStr, TEXT("%-15s"), Text); + SendDlgItemMessage(hStatus, IDC_S_STATUSITEM, WM_SETTEXT, 0, (LPARAM) tmpStr); + SendMessage(hStatus, WM_PAINT, 0, 0L); + DrainPump(); +} // Status_Item + + +/*+-------------------------------------------------------------------------+ + | Status_TotComplete() + +-------------------------------------------------------------------------+*/ +// Total #server pairs converted so far +void Status_TotComplete(UINT Num) { + wsprintf(tmpStr, TEXT("%7s"), lToStr(Num)); + SendDlgItemMessage(hStatus, IDC_S_TOT_COMP, WM_SETTEXT, 0, (LPARAM) tmpStr); + SendMessage(hStatus, WM_PAINT, 0, 0L); + DrainPump(); +} // Status_TotComplete + + +/*+-------------------------------------------------------------------------+ + | Status_TotGroups() + +-------------------------------------------------------------------------+*/ +void Status_TotGroups(UINT Num) { + wsprintf(tmpStr, TEXT("%7s"), lToStr(Num)); + SendDlgItemMessage(hStatus, IDC_S_TOT_GROUPS, WM_SETTEXT, 0, (LPARAM) tmpStr); + SendMessage(hStatus, WM_PAINT, 0, 0L); + DrainPump(); +} // Status_TotGroup + + +/*+-------------------------------------------------------------------------+ + | Status_TotUsers() + +-------------------------------------------------------------------------+*/ +void Status_TotUsers(UINT Num) { + wsprintf(tmpStr, TEXT("%7s"), lToStr(Num)); + SendDlgItemMessage(hStatus, IDC_S_TOT_USERS, WM_SETTEXT, 0, (LPARAM) tmpStr); + SendMessage(hStatus, WM_PAINT, 0, 0L); + DrainPump(); +} // Status_TotUsers + + +/*+-------------------------------------------------------------------------+ + | Status_TotFiles() + +-------------------------------------------------------------------------+*/ +void Status_TotFiles(UINT Num) { + wsprintf(tmpStr, TEXT("%7s"), lToStr(Num)); + SendDlgItemMessage(hStatus, IDC_S_TOT_FILES, WM_SETTEXT, 0, (LPARAM) tmpStr); + SendMessage(hStatus, WM_PAINT, 0, 0L); + DrainPump(); +} // Status_TotFiles + + +/*+-------------------------------------------------------------------------+ + | Status_TotErrors() + +-------------------------------------------------------------------------+*/ +void Status_TotErrors(UINT Num) { + wsprintf(tmpStr, TEXT("%7s"), lToStr(Num)); + SendDlgItemMessage(hStatus, IDC_S_TOT_ERRORS, WM_SETTEXT, 0, (LPARAM) tmpStr); + SendMessage(hStatus, WM_PAINT, 0, 0L); + DrainPump(); +} // Status_TotErrors + + +/*+-------------------------------------------------------------------------+ + | Status_BytesTxt() + +-------------------------------------------------------------------------+*/ +void Status_BytesTxt(LPTSTR Text) { + wsprintf(tmpStr, TEXT("%-15s"), Text); + SendDlgItemMessage(hStatus, IDC_PANEL1, WM_SETTEXT, 0, (LPARAM) tmpStr); + SendMessage(hStatus, WM_PAINT, 0, 0L); + DrainPump(); +} // Status_BytesTxt + + +/*+-------------------------------------------------------------------------+ + | Status_Bytes() + +-------------------------------------------------------------------------+*/ +void Status_Bytes(LPTSTR Text) { + wsprintf(tmpStr, TEXT("%s"), Text); + SendDlgItemMessage(hStatus, IDC_PANEL2, WM_SETTEXT, 0, (LPARAM) tmpStr); + SendMessage(hStatus, WM_PAINT, 0, 0L); + DrainPump(); +} // Status_Bytes + + +/*+-------------------------------------------------------------------------+ + | Status_TotBytes() + +-------------------------------------------------------------------------+*/ +void Status_TotBytes(LPTSTR Text) { + wsprintf(tmpStr, TEXT("%s"), Text); + SendDlgItemMessage(hStatus, IDC_PANEL3, WM_SETTEXT, 0, (LPARAM) tmpStr); + SendMessage(hStatus, WM_PAINT, 0, 0L); + DrainPump(); +} // Status_TotBytes + + +/*+-------------------------------------------------------------------------+ + | Status_BytesSep() + +-------------------------------------------------------------------------+*/ +void Status_BytesSep(LPTSTR Text) { + wsprintf(tmpStr, TEXT("%s"), Text); + SendDlgItemMessage(hStatus, IDC_PANEL4, WM_SETTEXT, 0, (LPARAM) tmpStr); + SendMessage(hStatus, WM_PAINT, 0, 0L); + DrainPump(); +} // Status_BytesSep + + +/*+-------------------------------------------------------------------------+ + | DlgStatus() + +-------------------------------------------------------------------------+*/ +LRESULT CALLBACK DlgStatus(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { + RECT rc; + + switch (message) { + case WM_INITDIALOG: + // Center the dialog over the application window + CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER)); + return (TRUE); + + case WM_SETFOCUS: + GetWindowRect(hDlg, &rc); + InvalidateRect(hDlg, &rc, FALSE); + SendMessage(hStatus, WM_PAINT, 0, 0L); + break; + } + + return (FALSE); // Didn't process the message + + lParam; +} // DlgStatus + + + +/*+-------------------------------------------------------------------------+ + | DoStatusDlg() + +-------------------------------------------------------------------------+*/ +void DoStatusDlg(HWND hDlg) { + DLGPROC lpfnDlg; + + lpfnDlg = MakeProcInstance((DLGPROC)DlgStatus, hInst); + hStatus = CreateDialog(hInst, TEXT("StatusDlg"), hDlg, lpfnDlg) ; + FreeProcInstance(lpfnDlg); + +} // DoStatusDlg + + +/*+-------------------------------------------------------------------------+ + | StatusDlgKill() + +-------------------------------------------------------------------------+*/ +void StatusDlgKill() { + DestroyWindow(hStatus); + hStatus = NULL; + +} // StatusDlgKill + + + +/*+-------------------------------------------------------------------------+ + | Information (Panel) Dialog Routines | + +-------------------------------------------------------------------------+*/ + +/*+-------------------------------------------------------------------------+ + | Panel_Line() + +-------------------------------------------------------------------------+*/ +void Panel_Line(int Line, LPTSTR szFormat, ...) { + va_list marker; + + if (hPanel == NULL) + return; + + va_start(marker, szFormat); + + wvsprintf(tmpStr, szFormat, marker); + tmpStr[60] = TEXT('\0'); + SendDlgItemMessage(hPanel, IDC_PANEL1 - 1 + Line, WM_SETTEXT, 0, (LPARAM) tmpStr); + SendMessage(hPanel, WM_PAINT, 0, 0L); + DrainPump(); + + va_end(marker); + +} // Panel_ConvTxt + + +/*+-------------------------------------------------------------------------+ + | Panel_Cancel() + +-------------------------------------------------------------------------+*/ +BOOL Panel_Cancel() { + + if ((hPanel == NULL) || !DoCancel) + return FALSE; + + return TRUE; + +} // Panel_Cancel + + +/*+-------------------------------------------------------------------------+ + | DlgPanel() + +-------------------------------------------------------------------------+*/ +LRESULT CALLBACK DlgPanel(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { + int wmId, wmEvent; + RECT rc; + + switch (message) { + case WM_INITDIALOG: + // Center the dialog over the application window + DoCancel = FALSE; + CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER)); + SendMessage(hDlg, WM_SETTEXT, (WPARAM) 0, (LPARAM) PanelTitle); + return (TRUE); + + case WM_SETFOCUS: + GetWindowRect(hDlg, &rc); + InvalidateRect(hDlg, &rc, FALSE); + SendMessage(hPanel, WM_PAINT, 0, 0L); + break; + + case WM_COMMAND: + wmId = LOWORD(wParam); + wmEvent = HIWORD(wParam); + + switch (wmId) { + case IDCANCEL: + DoCancel = TRUE; + return (TRUE); + + break; + } + + break; + } + + return (FALSE); // Didn't process the message + + lParam; +} // DlgPanel + + +/*+-------------------------------------------------------------------------+ + | PanelDlg_Do() + +-------------------------------------------------------------------------+*/ +void PanelDlg_Do(HWND hDlg, LPTSTR Title) { + DLGPROC lpfnDlg; + + lstrcpy(PanelTitle, Title); + lpfnDlg = MakeProcInstance((DLGPROC)DlgPanel, hInst); + hPanel = CreateDialog(hInst, TEXT("PanelDLG"), hDlg, lpfnDlg) ; + FreeProcInstance(lpfnDlg); + +} // PanelDlg_Do + + +/*+-------------------------------------------------------------------------+ + | PanelDlgKill() + +-------------------------------------------------------------------------+*/ +void PanelDlgKill() { + + if (hPanel == NULL) + return; + + DestroyWindow(hPanel); + hPanel = NULL; + DoCancel = FALSE; + +} // PanelDlgKill + + +/*+-------------------------------------------------------------------------+ + | Name Error Dialog (User and Group) | + +-------------------------------------------------------------------------+*/ + +static TCHAR OldName[60]; +static TCHAR NewName[60]; +static LPTSTR DlgTitle; +static LPTSTR NameErrorProblem; +static ULONG RetType; +static ULONG MaxNameLen; +/*+-------------------------------------------------------------------------+ + | NameErrorDlg() + | + +-------------------------------------------------------------------------+*/ +LRESULT CALLBACK NameErrorDlg(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { + int wmId, wmEvent; + + switch (message) { + case WM_INITDIALOG: + // Center the dialog over the application window + CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER)); + + // Init all the display fields + SendMessage(hDlg, WM_SETTEXT, (WPARAM) 0, (LPARAM) DlgTitle); + SendMessage(GetDlgItem(hDlg, IDC_OLDNAME), WM_SETTEXT, (WPARAM) 0, (LPARAM) OldName); + SendMessage(GetDlgItem(hDlg, IDC_NEWNAME), WM_SETTEXT, (WPARAM) 0, (LPARAM) NewName); + SendMessage(GetDlgItem(hDlg, IDC_PANEL1), WM_SETTEXT, (WPARAM) 0, (LPARAM) NameErrorProblem); + + // limit the name length + PostMessage(GetDlgItem(hDlg, IDC_NEWNAME), EM_LIMITTEXT, (WPARAM) MaxNameLen, 0); + return (TRUE); + + case WM_COMMAND: + wmId = LOWORD(wParam); + wmEvent = HIWORD(wParam); + + switch (wmId) { + case IDABORT: + // This will cancel the conversion - but need to check with the user + // if this is what they really want to do + if (MessageBox(hDlg, Lids(IDS_E_15), Lids(IDS_E_16), MB_YESNO) == IDYES) { + RetType = (ULONG) IDABORT; + EndDialog(hDlg, 0); + } + + return (TRUE); + break; + + case IDRETRY: + * (WORD *)NewName = (WORD) MaxNameLen + 1; + SendMessage(GetDlgItem(hDlg, IDC_NEWNAME), EM_GETLINE, 0, (LPARAM) NewName); + RetType = (ULONG) IDRETRY; + EndDialog(hDlg, 0); + return (TRUE); + break; + + case IDIGNORE: + RetType = (ULONG) IDCANCEL; + EndDialog(hDlg, 0); + return (TRUE); + break; + + } + + break; + } + + return (FALSE); // Didn't process the message + + lParam; +} // NameErrorDlg + + +/*+-------------------------------------------------------------------------+ + | UserNameErrorDlg_Do() + | + +-------------------------------------------------------------------------+*/ +ULONG UserNameErrorDlg_Do(LPTSTR Title, LPTSTR Problem, USER_BUFFER *User) { + DLGPROC lpfnDlg; + + lstrcpy(OldName, User->Name); + lstrcpy(NewName, User->NewName); + MaxNameLen = MAX_USER_NAME_LEN; + + DlgTitle = Title; + NameErrorProblem = Problem; + lpfnDlg = MakeProcInstance((DLGPROC) NameErrorDlg, hInst); + CursorNormal(); + DialogBox(hInst, TEXT("NameError"), hStatus, lpfnDlg) ; + CursorHourGlass(); + FreeProcInstance(lpfnDlg); + + if (RetType == IDRETRY) { + User->err = 0; + lstrcpy(User->NewName, NewName); + + // if the name is different then flag that it is a new name + if (lstrcmpi(User->NewName, User->Name)) + User->IsNewName = TRUE; + } + + return RetType; + +} // UserNameErrorDlg_Do + + +/*+-------------------------------------------------------------------------+ + | GroupNameErrorDlg_Do() + | + +-------------------------------------------------------------------------+*/ +ULONG GroupNameErrorDlg_Do(LPTSTR Title, LPTSTR Problem, GROUP_BUFFER *Group) { + DLGPROC lpfnDlg; + + lstrcpy(OldName, Group->Name); + lstrcpy(NewName, Group->NewName); + MaxNameLen = MAX_NT_GROUP_NAME_LEN; + + DlgTitle = Title; + NameErrorProblem = Problem; + lpfnDlg = MakeProcInstance((DLGPROC) NameErrorDlg, hInst); + CursorNormal(); + DialogBox(hInst, TEXT("NameError"), hStatus, lpfnDlg) ; + CursorHourGlass(); + FreeProcInstance(lpfnDlg); + + if (RetType == IDRETRY) { + Group->err = 0; + lstrcpy(Group->NewName, NewName); + + // if the name is different then flag that it is a new name + if (lstrcmpi(Group->NewName, Group->Name)) + Group->IsNewName = TRUE; + } + + return RetType; + +} // GroupNameErrorDlg_Do + + -- cgit v1.2.3