Author: janderwald Date: Tue Jul 4 17:22:05 2006 New Revision: 22820
URL: http://svn.reactos.org/svn/reactos?rev=22820&view=rev Log: * remove unreferenced parameters warning in font.c layout.c colors.c * remove global structure g_ConsoleInfo * implemented reading/writing of options dialog settings * added apply dialog * thnx to w3seek for help
Modified: trunk/reactos/dll/win32/console/colors.c trunk/reactos/dll/win32/console/console.c trunk/reactos/dll/win32/console/console.h trunk/reactos/dll/win32/console/en.rc trunk/reactos/dll/win32/console/font.c trunk/reactos/dll/win32/console/layout.c trunk/reactos/dll/win32/console/options.c trunk/reactos/dll/win32/console/resource.h
Modified: trunk/reactos/dll/win32/console/colors.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/console/colors.c?... ============================================================================== --- trunk/reactos/dll/win32/console/colors.c (original) +++ trunk/reactos/dll/win32/console/colors.c Tue Jul 4 17:22:05 2006 @@ -18,6 +18,10 @@ LPARAM lParam ) { + UNREFERENCED_PARAMETER(hwndDlg) + UNREFERENCED_PARAMETER(wParam) + UNREFERENCED_PARAMETER(lParam) + switch(uMsg) { case WM_INITDIALOG:
Modified: trunk/reactos/dll/win32/console/console.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/console/console.c... ============================================================================== --- trunk/reactos/dll/win32/console/console.c (original) +++ trunk/reactos/dll/win32/console/console.c Tue Jul 4 17:22:05 2006 @@ -36,6 +36,129 @@ psp->pfnDlgProc = DlgProc; }
+BOOL +InitConsoleInfo(HWND hwnd) +{ + PConsoleInfo pConInfo; + STARTUPINFO StartupInfo; + TCHAR * ptr; + SIZE_T length; + + pConInfo = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(ConsoleInfo)); + if (!pConInfo) + return FALSE; + + /* initialize struct */ + pConInfo->InsertMode = TRUE; + pConInfo->HistoryBufferSize = 50; + pConInfo->NumberOfHistoryBuffers = 5; + + GetStartupInfo(&StartupInfo); + + if ( StartupInfo.lpTitle ) + { + if ( _tcslen(StartupInfo.lpTitle) ) + { + if ( !GetWindowsDirectory(pConInfo->szProcessName, MAX_PATH) ) + { + HeapFree(GetProcessHeap(), 0, pConInfo); + return FALSE; + } + length = _tcslen(pConInfo->szProcessName); + if ( !_tcsncmp(pConInfo->szProcessName, StartupInfo.lpTitle, length) ) + { + // Windows XP SP2 uses unexpanded environment vars to get path + // i.e. c:\windows\system32\cmd.exe + // becomes + // %SystemRoot%_system32_cmd.exe + + _tcscpy(pConInfo->szProcessName, _T("%SystemRoot%")); + _tcsncpy(&pConInfo->szProcessName[12], &StartupInfo.lpTitle[length], _tcslen(StartupInfo.lpTitle) - length + 1); + + ptr = &pConInfo->szProcessName[12]; + while( (ptr = _tcsstr(ptr, _T("\"))) ) + ptr[0] = _T('_'); + } + } + else + { + _tcscpy(pConInfo->szProcessName, _T("Console")); + } + } + else + { + _tcscpy(pConInfo->szProcessName, _T("Console")); + } + + SetWindowText(hwnd, pConInfo->szProcessName); + SetWindowLongPtr(hwnd, DWLP_USER , (LONG)pConInfo); + + return TRUE; +} + +INT_PTR +CALLBACK +ApplyProc( + HWND hwndDlg, + UINT uMsg, + WPARAM wParam, + LPARAM lParam +) +{ + HWND hDlgCtrl; + + UNREFERENCED_PARAMETER(lParam) + + switch(uMsg) + { + case WM_INITDIALOG: + { +#if 0 + hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_APPLY_CURRENT); +#else + hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_APPLY_ALL); +#endif + SendMessage(hDlgCtrl, BM_SETCHECK, BST_CHECKED, 0); + return TRUE; + } + case WM_COMMAND: + { + if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) + { + hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_APPLY_CURRENT); + if ( SendMessage(hDlgCtrl, BM_GETCHECK, 0, 0) == BST_CHECKED ) + EndDialog(hwndDlg, IDC_RADIO_APPLY_CURRENT); + else + EndDialog(hwndDlg, IDC_RADIO_APPLY_ALL); + } + break; + } + default: + break; + } + return FALSE; + +} + +void +ApplyConsoleInfo(HWND hwndDlg, PConsoleInfo pConInfo) +{ + INT_PTR res; + + res = DialogBox(hApplet, MAKEINTRESOURCE(IDD_APPLYOPTIONS), hwndDlg, ApplyProc); + + if ( res == IDC_RADIO_APPLY_ALL ) + { + WriteConsoleOptions(pConInfo); + } + else if ( res == IDC_RADIO_APPLY_CURRENT ) + { + /* + * TODO: check if szProcessName != _T("Console") + * in that case notify win32csr that the changes are local + */ + } +}
/* Property Sheet Callback */ int CALLBACK @@ -45,66 +168,78 @@ LPARAM lParam ) { - UNREFERENCED_PARAMETER(hwndDlg) - switch(uMsg) - { - case PSCB_BUTTONPRESSED: - switch(lParam) - { - case PSBTN_OK: /* OK */ - break; - case PSBTN_CANCEL: /* Cancel */ - break; - case PSBTN_APPLYNOW: /* Apply now */ - break; - case PSBTN_FINISH: /* Close */ - break; - default: - return FALSE; - } - break; - - case PSCB_INITIALIZED: - break; - } - return TRUE; + PConsoleInfo pConInfo = (PConsoleInfo) GetWindowLongPtr(hwndDlg, DWLP_USER); + + switch(uMsg) + { + case PSCB_BUTTONPRESSED: + { + switch(lParam) + { + case PSBTN_OK: /* OK */ + { + if ( pConInfo ) + { + ApplyConsoleInfo(hwndDlg, pConInfo); + } + break; + } + case PSBTN_CANCEL: /* Cancel */ + { + break; + } + case PSBTN_FINISH: /* Close */ + { + break; + } + default: + return FALSE; + } + break; + } + case PSCB_INITIALIZED: + { + break; + } + default: + break; + } + return TRUE; }
/* First Applet */ LONG APIENTRY InitApplet(HWND hwnd, UINT uMsg, LONG wParam, LONG lParam) { - PROPSHEETPAGE psp[5]; - PROPSHEETHEADER psh; - TCHAR Caption[1024]; - INT i=0; - - UNREFERENCED_PARAMETER(hwnd) - UNREFERENCED_PARAMETER(uMsg) - UNREFERENCED_PARAMETER(wParam) - UNREFERENCED_PARAMETER(lParam) - - memset(Caption, 0x0, sizeof(Caption)); - LoadString(hApplet, IDS_CPLNAME, Caption, sizeof(Caption) / sizeof(TCHAR)); + PROPSHEETPAGE psp[4]; + PROPSHEETHEADER psh; + INT i=0; + + UNREFERENCED_PARAMETER(hwnd) + UNREFERENCED_PARAMETER(uMsg) + UNREFERENCED_PARAMETER(wParam) + UNREFERENCED_PARAMETER(lParam) + + + + ZeroMemory(&psh, sizeof(PROPSHEETHEADER)); + psh.dwSize = sizeof(PROPSHEETHEADER); + psh.dwFlags = PSH_PROPSHEETPAGE | PSH_NOAPPLYNOW | PSH_PROPTITLE | PSH_USECALLBACK; + psh.hwndParent = NULL; + psh.hInstance = hApplet; + psh.hIcon = LoadIcon(hApplet, MAKEINTRESOURCE(IDC_CPLICON)); + psh.pszCaption = 0; + psh.nPages = 4; + psh.nStartPage = 0; + psh.ppsp = psp; + psh.pfnCallback = PropSheetProc;
- ZeroMemory(&psh, sizeof(PROPSHEETHEADER)); - psh.dwSize = sizeof(PROPSHEETHEADER); - psh.dwFlags = PSH_PROPSHEETPAGE | PSH_USECALLBACK | PSH_PROPTITLE; - psh.hwndParent = NULL; - psh.hInstance = hApplet; - psh.hIcon = LoadIcon(hApplet, MAKEINTRESOURCE(IDC_CPLICON)); - psh.pszCaption = Caption; - psh.nPages = 4; - psh.nStartPage = 0; - psh.ppsp = psp; - psh.pfnCallback = PropSheetProc; - - InitPropSheetPage(&psp[i++], IDD_PROPPAGEOPTIONS, (DLGPROC) OptionsProc); - InitPropSheetPage(&psp[i++], IDD_PROPPAGEFONT, (DLGPROC) FontProc); - InitPropSheetPage(&psp[i++], IDD_PROPPAGELAYOUT, (DLGPROC) LayoutProc); - InitPropSheetPage(&psp[i++], IDD_PROPPAGECOLORS, (DLGPROC) ColorsProc); - - return (LONG)(PropertySheet(&psh) != -1); + InitPropSheetPage(&psp[i++], IDD_PROPPAGEOPTIONS, (DLGPROC) OptionsProc); + InitPropSheetPage(&psp[i++], IDD_PROPPAGEFONT, (DLGPROC) FontProc); + InitPropSheetPage(&psp[i++], IDD_PROPPAGELAYOUT, (DLGPROC) LayoutProc); + InitPropSheetPage(&psp[i++], IDD_PROPPAGECOLORS, (DLGPROC) ColorsProc); + + return (PropertySheet(&psh) != -1); }
/* Control Panel Callback */ @@ -116,7 +251,7 @@ LPARAM lParam2) { int i = (int)lParam1; - + switch(uMsg) { case CPL_INIT: @@ -130,7 +265,6 @@ case CPL_INQUIRE: { CPLINFO *CPlInfo = (CPLINFO*)lParam2; - CPlInfo->lData = 0; CPlInfo->idIcon = Applets[i].idIcon; CPlInfo->idName = Applets[i].idName; CPlInfo->idInfo = Applets[i].idDescription; @@ -146,7 +280,7 @@ }
-BOOLEAN +INT WINAPI DllMain( HINSTANCE hinstDLL, @@ -154,12 +288,6 @@ LPVOID lpvReserved) { UNREFERENCED_PARAMETER(lpvReserved) - - /* initialize global struct */ - memset(&g_ConsoleInfo, 0x0, sizeof(ConsoleInfo)); - g_ConsoleInfo.InsertMode = TRUE; - g_ConsoleInfo.HistoryBufferSize = 50; - g_ConsoleInfo.NumberOfHistoryBuffers = 5;
switch(dwReason) {
Modified: trunk/reactos/dll/win32/console/console.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/console/console.h... ============================================================================== --- trunk/reactos/dll/win32/console/console.h (original) +++ trunk/reactos/dll/win32/console/console.h Tue Jul 4 17:22:05 2006 @@ -20,7 +20,7 @@
typedef struct TAGConsoleInfo { - LPSTR szProcessName; + TCHAR szProcessName[MAX_PATH]; DWORD CursorSize; DWORD NumberOfHistoryBuffers; DWORD HistoryBufferSize; @@ -31,6 +31,7 @@
} ConsoleInfo, *PConsoleInfo;
-extern ConsoleInfo g_ConsoleInfo; +BOOL WriteConsoleOptions(PConsoleInfo pConInfo); +BOOL InitConsoleInfo(HWND hwnd);
#endif /* CONSOLE_H__ */
Modified: trunk/reactos/dll/win32/console/en.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/console/en.rc?rev... ============================================================================== --- trunk/reactos/dll/win32/console/en.rc (original) +++ trunk/reactos/dll/win32/console/en.rc Tue Jul 4 17:22:05 2006 @@ -10,18 +10,18 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
IDD_PROPPAGEOPTIONS DIALOGEX 0, 0, 250, 220 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_CAPTION CAPTION "Options" FONT 8, "MS Shell Dlg" BEGIN -GROUPBOX "Cursor Size", -1, 15, 15, 120, 70 -CONTROL "&Small", IDC_RADIO_SMALL_CURSOR, "Button", 0x50010009, 25, 25, 90, 10 -CONTROL "&Medium", IDC_RADIO_MEDIUM_CURSOR, "Button", 0x50010009, 25, 40, 90, 10 -CONTROL "&Large", IDC_RADIO_LARGE_CURSOR, "Button", 0x50010009, 25, 55, 90, 10 -GROUPBOX "Display Options", -1, 140, 15, 100, 70 -CONTROL "&Window", IDC_RADIO_DISPLAY_WINDOW, "Button", 0x50010009, 150, 35, 70, 10 -CONTROL "F&ull Screen", IDC_RADIO_DISPLAY_FULL, "Button", 0x50010009, 150, 50, 70, 10 -GROUPBOX "Command History:", -1, 15, 90, 120, 70 +GROUPBOX "Cursor Size", -1, 15, 15, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP +CONTROL "&Small", IDC_RADIO_SMALL_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 25, 90, 10 +CONTROL "&Medium", IDC_RADIO_MEDIUM_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 40, 90, 10 +CONTROL "&Large", IDC_RADIO_LARGE_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 55, 90, 10 +GROUPBOX "Display Options", -1, 140, 15, 100, 70, WS_CHILD | WS_VISIBLE | WS_GROUP +CONTROL "&Window", IDC_RADIO_DISPLAY_WINDOW, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 150, 35, 70, 10 +CONTROL "F&ull Screen", IDC_RADIO_DISPLAY_FULL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 150, 50, 70, 10 +GROUPBOX "Command History:", -1, 15, 90, 120, 70, WS_CHILD | WS_VISIBLE | WS_GROUP LTEXT "&Buffer Size", -1, 25, 100, 60, 15 EDITTEXT IDC_EDIT_BUFFER_SIZE, 90, 100, 30, 15, ES_RIGHT | WS_GROUP CONTROL "", IDC_UPDOWN_BUFFER_SIZE, UPDOWN_CLASS,UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 115, 100, 12, 12 @@ -31,13 +31,13 @@ CHECKBOX "&Discard Old Duplicates", IDC_CHECK_DISCARD_DUPLICATES, 25, 140, 100, 15
-GROUPBOX "Edit Options", -1, 140, 90, 100, 70 -CHECKBOX "&QuickEdit Mode", IDC_CHECK_QUICK_EDIT, 150, 100, 60, 15 -CHECKBOX "&Insert Mode", IDC_CHECK_INSERT_MODE, 150, 120, 60, 15 +GROUPBOX "Edit Options", -1, 140, 90, 100, 70, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP +CHECKBOX "&QuickEdit Mode", IDC_CHECK_QUICK_EDIT, 150, 100, 60, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP +CHECKBOX "&Insert Mode", IDC_CHECK_INSERT_MODE, 150, 120, 60, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP END
IDD_PROPPAGEFONT DIALOGEX 0, 0, 220, 220 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_CAPTION CAPTION "Font" FONT 8, "MS Shell Dlg" BEGIN @@ -45,7 +45,7 @@ END
IDD_PROPPAGELAYOUT DIALOGEX 0, 0, 220, 220 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_CAPTION CAPTION "Layout" FONT 8, "MS Shell Dlg" BEGIN @@ -53,15 +53,27 @@ END
IDD_PROPPAGECOLORS DIALOGEX 0, 0, 220, 220 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_CAPTION CAPTION "Colors" FONT 8, "MS Shell Dlg" BEGIN LTEXT "This space is intentionally left blank", -1, 55, 103, 120, 10 END
+IDD_APPLYOPTIONS DIALOGEX 0, 0, 220, 100 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_CAPTION +CAPTION "Apply Properties" +FONT 8, "MS Shell Dlg" +BEGIN +CONTROL "&Apply Properties to current window only", IDC_RADIO_APPLY_CURRENT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED, 25, 25, 150, 10 +CONTROL "&Save Properties for future windows with same title", IDC_RADIO_APPLY_ALL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 25, 40, 185, 10 +PUSHBUTTON "OK", IDOK, 25, 80, 40, 15, WS_VISIBLE +PUSHBUTTON "Cancel", IDCANCEL, 120, 80, 50, 15, WS_VISIBLE +END + STRINGTABLE BEGIN IDS_CPLNAME "Console" IDS_CPLDESCRIPTION "Configures console properties." + IDS_APPLY_SHORTCUT_ALL "Modify &shortcut that started this window" END
Modified: trunk/reactos/dll/win32/console/font.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/console/font.c?re... ============================================================================== --- trunk/reactos/dll/win32/console/font.c (original) +++ trunk/reactos/dll/win32/console/font.c Tue Jul 4 17:22:05 2006 @@ -19,6 +19,10 @@ LPARAM lParam ) { + UNREFERENCED_PARAMETER(hwndDlg) + UNREFERENCED_PARAMETER(wParam) + UNREFERENCED_PARAMETER(lParam) + switch(uMsg) { case WM_INITDIALOG:
Modified: trunk/reactos/dll/win32/console/layout.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/console/layout.c?... ============================================================================== --- trunk/reactos/dll/win32/console/layout.c (original) +++ trunk/reactos/dll/win32/console/layout.c Tue Jul 4 17:22:05 2006 @@ -18,6 +18,10 @@ LPARAM lParam ) { + UNREFERENCED_PARAMETER(hwndDlg) + UNREFERENCED_PARAMETER(wParam) + UNREFERENCED_PARAMETER(lParam) + switch(uMsg) { case WM_INITDIALOG:
Modified: trunk/reactos/dll/win32/console/options.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/console/options.c... ============================================================================== --- trunk/reactos/dll/win32/console/options.c (original) +++ trunk/reactos/dll/win32/console/options.c Tue Jul 4 17:22:05 2006 @@ -9,9 +9,6 @@
#include "console.h"
- -ConsoleInfo g_ConsoleInfo; - BOOLEAN InitializeOptionsDialog();
INT_PTR @@ -23,11 +20,128 @@ LPARAM lParam ) { + PConsoleInfo pConInfo; + LRESULT lResult; + HWND hDlgCtrl; + LPPSHNOTIFY lppsn; + + pConInfo = (PConsoleInfo) GetWindowLongPtr(GetParent(hwndDlg), DWLP_USER); + switch(uMsg) { case WM_INITDIALOG: + { return InitializeOptionsDialog(hwndDlg); - + } + case WM_NOTIFY: + { + if (!pConInfo) + { + break; + } + lppsn = (LPPSHNOTIFY) lParam; + if (lppsn->hdr.code == UDN_DELTAPOS) + { + hDlgCtrl = GetDlgItem(hwndDlg, IDC_EDIT_BUFFER_SIZE); + pConInfo->HistoryBufferSize = LOWORD(SendMessage(hDlgCtrl, UDM_GETPOS, 0, 0)); + + hDlgCtrl = GetDlgItem(hwndDlg, IDC_EDIT_NUM_BUFFER); + pConInfo->NumberOfHistoryBuffers = LOWORD(SendMessage(hDlgCtrl, UDM_GETPOS, 0, 0)); + //PropSheet_Changed(GetParent(hwndDlg), hwndDlg); + } + break; + } + case WM_COMMAND: + { + if (!pConInfo) + { + break; + } + switch(LOWORD(wParam)) + { + case IDC_RADIO_SMALL_CURSOR: + { + pConInfo->CursorSize = 0x0; + //PropSheet_Changed(GetParent(hwndDlg), hwndDlg); + break; + } + case IDC_RADIO_MEDIUM_CURSOR: + { + pConInfo->CursorSize = 0x32; + //PropSheet_Changed(GetParent(hwndDlg), hwndDlg); + break; + } + case IDC_RADIO_LARGE_CURSOR: + { + pConInfo->CursorSize = 0x64; + //PropSheet_Changed(GetParent(hwndDlg), hwndDlg); + break; + } + case IDC_RADIO_DISPLAY_WINDOW: + { + pConInfo->FullScreen = FALSE; + //PropSheet_Changed(GetParent(hwndDlg), hwndDlg); + break; + } + case IDC_RADIO_DISPLAY_FULL: + { + pConInfo->FullScreen = TRUE; + //PropSheet_Changed(GetParent(hwndDlg), hwndDlg); + break; + } + case IDC_CHECK_QUICK_EDIT: + { + lResult = SendMessage((HWND)lParam, BM_GETCHECK, (WPARAM)0, (LPARAM)0); + if (lResult == BST_CHECKED) + { + pConInfo->QuickEdit = FALSE; + SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, (LPARAM)0); + } + else if (lResult == BST_UNCHECKED) + { + pConInfo->QuickEdit = TRUE; + SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0); + } + //PropSheet_Changed(GetParent(hwndDlg), hwndDlg); + break; + } + case IDC_CHECK_INSERT_MODE: + { + lResult = SendMessage((HWND)lParam, BM_GETCHECK, (WPARAM)0, (LPARAM)0); + if (lResult == BST_CHECKED) + { + pConInfo->InsertMode = FALSE; + SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, (LPARAM)0); + } + else if (lResult == BST_UNCHECKED) + { + pConInfo->InsertMode = TRUE; + SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0); + } + //PropSheet_Changed(GetParent(hwndDlg), hwndDlg); + break; + } + case IDC_CHECK_DISCARD_DUPLICATES: + { + lResult = SendMessage((HWND)lParam, BM_GETCHECK, (WPARAM)0, (LPARAM)0); + if (lResult == BST_CHECKED) + { + pConInfo->HistoryNoDup = FALSE; + SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, (LPARAM)0); + } + else if (lResult == BST_UNCHECKED) + { + pConInfo->HistoryNoDup = TRUE; + SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0); + } + //PropSheet_Changed(GetParent(hwndDlg), hwndDlg); + break; + } + default: + break; + } + break; + } default: break; } @@ -35,7 +149,7 @@ return FALSE; }
-BOOL InitializeOptionsFromReg(TCHAR * Path) +BOOL InitializeOptionsFromReg(TCHAR * Path, PConsoleInfo pConInfo) { HKEY hKey; HKEY hSubKey; @@ -66,37 +180,37 @@ if ( RegEnumValue(hSubKey, dwIndex, szValueName, &dwValueName, NULL, NULL, (BYTE*)&Value, &dwValue) != ERROR_SUCCESS) break;
- if ( !_tcscmp(szValueName, _T("CursorSize")) ) - { + if ( !_tcscmp(szValueName, _T("CursorSize")) ) + { if ( Value == 0x32) - g_ConsoleInfo.CursorSize = Value; + pConInfo->CursorSize = Value; else if ( Value == 0x64 ) - g_ConsoleInfo.CursorSize = Value; + pConInfo->CursorSize = Value; } else if ( !_tcscmp(szValueName, _T("NumberOfHistoryBuffers")) ) { - g_ConsoleInfo.NumberOfHistoryBuffers = Value; - } - else if ( !_tcscmp(szValueName, _T("HistoryBufferSize")) ) - { - g_ConsoleInfo.HistoryBufferSize = Value; - } - else if ( !_tcscmp(szValueName, _T("HistoryNoDup")) ) - { - g_ConsoleInfo.HistoryNoDup = Value; - } - else if ( !_tcscmp(szValueName, _T("FullScreen")) ) - { - g_ConsoleInfo.FullScreen = Value; - } - else if ( !_tcscmp(szValueName, _T("QuickEdit")) ) - { - g_ConsoleInfo.QuickEdit = Value; - } - else if ( !_tcscmp(szValueName, _T("InsertMode")) ) - { - g_ConsoleInfo.InsertMode = Value; - } + pConInfo->NumberOfHistoryBuffers = Value; + } + else if ( !_tcscmp(szValueName, _T("HistoryBufferSize")) ) + { + pConInfo->HistoryBufferSize = Value; + } + else if ( !_tcscmp(szValueName, _T("HistoryNoDup")) ) + { + pConInfo->HistoryNoDup = Value; + } + else if ( !_tcscmp(szValueName, _T("FullScreen")) ) + { + pConInfo->FullScreen = Value; + } + else if ( !_tcscmp(szValueName, _T("QuickEdit")) ) + { + pConInfo->QuickEdit = Value; + } + else if ( !_tcscmp(szValueName, _T("InsertMode")) ) + { + pConInfo->InsertMode = Value; + } }
RegCloseKey(hKey); @@ -105,13 +219,13 @@ }
void -UpdateDialogElements(HWND hwndDlg) +UpdateDialogElements(HWND hwndDlg, PConsoleInfo pConInfo) { HWND hDlgCtrl; TCHAR szBuffer[MAX_PATH];
/* update cursor size */ - if ( g_ConsoleInfo.CursorSize == 0 ) + if ( pConInfo->CursorSize == 0 ) { /* small cursor */ hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_SMALL_CURSOR); @@ -122,7 +236,7 @@ hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_LARGE_CURSOR); SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); } - else if ( g_ConsoleInfo.CursorSize == 0x32 ) + else if ( pConInfo->CursorSize == 0x32 ) { hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_MEDIUM_CURSOR); SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0); @@ -132,7 +246,7 @@ hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_LARGE_CURSOR); SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); } - else if ( g_ConsoleInfo.CursorSize == 0x64 ) + else if ( pConInfo->CursorSize == 0x64 ) { hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_LARGE_CURSOR); SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0); @@ -144,24 +258,30 @@ }
/* update num buffers */ + hDlgCtrl = GetDlgItem(hwndDlg, IDC_UPDOWN_NUM_BUFFER); + SendMessage(hDlgCtrl, UDM_SETRANGE, 0, MAKELONG((short)999, (short)1)); hDlgCtrl = GetDlgItem(hwndDlg, IDC_EDIT_NUM_BUFFER); - _stprintf(szBuffer, _T("%d"), g_ConsoleInfo.NumberOfHistoryBuffers); + _stprintf(szBuffer, _T("%d"), pConInfo->NumberOfHistoryBuffers); SendMessage(hDlgCtrl, WM_SETTEXT, 0, (LPARAM)szBuffer);
/* update buffer size */ + hDlgCtrl = GetDlgItem(hwndDlg, IDC_UPDOWN_BUFFER_SIZE); + SendMessage(hDlgCtrl, UDM_SETRANGE, 0, MAKELONG((short)999, (short)1)); hDlgCtrl = GetDlgItem(hwndDlg, IDC_EDIT_BUFFER_SIZE); - _stprintf(szBuffer, _T("%d"), g_ConsoleInfo.HistoryBufferSize); + _stprintf(szBuffer, _T("%d"), pConInfo->HistoryBufferSize); SendMessage(hDlgCtrl, WM_SETTEXT, 0, (LPARAM)szBuffer); + +
/* update discard duplicates */ hDlgCtrl = GetDlgItem(hwndDlg, IDC_CHECK_DISCARD_DUPLICATES); - if ( g_ConsoleInfo.HistoryNoDup ) + if ( pConInfo->HistoryNoDup ) SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0); else SendMessage(hDlgCtrl, BM_SETCHECK, (LPARAM)BST_UNCHECKED, 0);
/* update full/window screen */ - if ( g_ConsoleInfo.FullScreen ) + if ( pConInfo->FullScreen ) { hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_DISPLAY_FULL); SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0); @@ -180,14 +300,14 @@
/* update quick edit */ hDlgCtrl = GetDlgItem(hwndDlg, IDC_CHECK_QUICK_EDIT); - if ( g_ConsoleInfo.QuickEdit ) + if ( pConInfo->QuickEdit ) SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0); else SendMessage(hDlgCtrl, BM_SETCHECK, (LPARAM)BST_UNCHECKED, 0);
/* update insert mode */ hDlgCtrl = GetDlgItem(hwndDlg, IDC_CHECK_INSERT_MODE); - if ( g_ConsoleInfo.InsertMode ) + if ( pConInfo->InsertMode ) SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0); else SendMessage(hDlgCtrl, BM_SETCHECK, (LPARAM)BST_UNCHECKED, 0); @@ -196,52 +316,68 @@
BOOLEAN InitializeOptionsDialog(HWND hwndDlg) { - STARTUPINFO StartupInfo; - TCHAR szBuffer[MAX_PATH]; - GetStartupInfo(&StartupInfo); - TCHAR * ptr; - DWORD length; - - if ( StartupInfo.lpTitle ) - { - if ( !GetWindowsDirectory(szBuffer, MAX_PATH) ) - return FALSE; - - length = _tcslen(szBuffer); - if ( !_tcsncmp(szBuffer, StartupInfo.lpTitle, length) ) - { - // Windows XP SP2 uses unexpanded environment vars to get path - // i.e. c:\windows\system32\cmd.exe - // becomes - // %SystemRoot%_system32_cmd.exe - - _tcscpy(szBuffer, _T("%SystemRoot%")); - _tcsncpy(&szBuffer[12], &StartupInfo.lpTitle[length], _tcslen(StartupInfo.lpTitle) - length + 1); - - ptr = &szBuffer[12]; - while( (ptr = _tcsstr(ptr, _T("\"))) ) - ptr[0] = _T('_'); - } - - - if ( InitializeOptionsFromReg(szBuffer) ) - { - UpdateDialogElements(hwndDlg); - return TRUE; - } - UpdateDialogElements(hwndDlg); - - } - else - { - - if ( InitializeOptionsFromReg( _T("Console")) ) - { - UpdateDialogElements(hwndDlg); - return TRUE; - - } - } - + PConsoleInfo pConInfo = (PConsoleInfo) GetWindowLongPtr(GetParent(hwndDlg), DWLP_USER); + + if (!pConInfo) + return FALSE; + + InitializeOptionsFromReg(pConInfo->szProcessName, pConInfo); + UpdateDialogElements(hwndDlg, pConInfo); return TRUE; } + +BOOL WriteConsoleOptions(PConsoleInfo pConInfo) +{ + HKEY hKey; + HKEY hSubKey; + + if ( RegOpenCurrentUser(KEY_READ | KEY_SET_VALUE, &hKey) != ERROR_SUCCESS ) + return FALSE; + + + if ( RegOpenKeyEx(hKey, pConInfo->szProcessName, 0, KEY_READ | KEY_SET_VALUE, &hSubKey) != ERROR_SUCCESS) + { + RegCloseKey(hKey); + return FALSE; + } + + if ( pConInfo->CursorSize == 0x0) + RegDeleteKey(hSubKey, _T("CursorSize")); + else + RegSetValueEx(hSubKey, _T("CursorSize"), 0, REG_DWORD, (const BYTE *)&pConInfo->CursorSize, sizeof(DWORD)); + + if ( pConInfo->NumberOfHistoryBuffers == 0x5 ) + RegDeleteKey(hSubKey, _T("NumberOfHistoryBuffers")); + else + RegSetValueEx(hSubKey, _T("NumberOfHistoryBuffers"), 0, REG_DWORD, (const BYTE *)&pConInfo->NumberOfHistoryBuffers, sizeof(DWORD)); + + if ( pConInfo->HistoryBufferSize == 50 ) + RegDeleteKey(hSubKey, _T("HistoryBufferSize")); + else + RegSetValueEx(hSubKey, _T("HistoryBufferSize"), 0, REG_DWORD, (const BYTE *)&pConInfo->HistoryBufferSize, sizeof(DWORD)); + + if ( pConInfo->FullScreen == FALSE ) + RegDeleteKey(hSubKey, _T("FullScreen")); + else + RegSetValueEx(hSubKey, _T("FullScreen"), 0, REG_DWORD, (const BYTE *)&pConInfo->FullScreen, sizeof(DWORD)); + + if ( pConInfo->QuickEdit == FALSE) + RegDeleteKey(hSubKey, _T("QuickEdit")); + else + RegSetValueEx(hSubKey, _T("QuickEdit"), 0, REG_DWORD, (const BYTE *)&pConInfo->QuickEdit, sizeof(DWORD)); + + if ( pConInfo->InsertMode == TRUE ) + RegDeleteKey(hSubKey, _T("InsertMode")); + else + RegSetValueEx(hSubKey, _T("InsertMode"), 0, REG_DWORD, (const BYTE *)&pConInfo->InsertMode, sizeof(DWORD)); + + if ( pConInfo->HistoryNoDup == FALSE ) + RegDeleteKey(hSubKey, _T("HistoryNoDup")); + else + RegSetValueEx(hSubKey, _T("HistoryNoDup"), 0, REG_DWORD, (const BYTE *)&pConInfo->HistoryNoDup, sizeof(DWORD)); + + RegCloseKey(hKey); + RegCloseKey(hSubKey); + + return TRUE; +}
Modified: trunk/reactos/dll/win32/console/resource.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/console/resource.... ============================================================================== --- trunk/reactos/dll/win32/console/resource.h (original) +++ trunk/reactos/dll/win32/console/resource.h Tue Jul 4 17:22:05 2006 @@ -4,12 +4,15 @@ #define IDC_CPLICON 40 #define IDS_CPLNAME 41 #define IDS_CPLDESCRIPTION 42 +#define IDS_APPLY_SHORTCUT_ALL 43
#define IDD_PROPPAGEOPTIONS 100 #define IDD_PROPPAGEFONT 101 #define IDD_PROPPAGELAYOUT 102 #define IDD_PROPPAGECOLORS 103 +#define IDD_APPLYOPTIONS 104
+//options dialog #define IDC_CHECK_QUICK_EDIT 200 #define IDC_CHECK_INSERT_MODE 201 #define IDC_CHECK_DISCARD_DUPLICATES 202 @@ -23,4 +26,14 @@ #define IDC_RADIO_DISPLAY_WINDOW 210 #define IDC_RADIO_DISPLAY_FULL 211
+// apply dialog +#define IDC_RADIO_APPLY_ALL 300 +#define IDC_RADIO_APPLY_CURRENT 301 + +//font dialog +#define IDC_CHECK_BOLD_FONTS 400 + + + + #endif