[ros-diffs] [janderwald] 22820: * 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

janderwald at svn.reactos.org janderwald at svn.reactos.org
Tue Jul 4 15:22:06 CEST 2006


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?rev=22820&r1=22819&r2=22820&view=diff
==============================================================================
--- 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?rev=22820&r1=22819&r2=22820&view=diff
==============================================================================
--- 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?rev=22820&r1=22819&r2=22820&view=diff
==============================================================================
--- 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=22820&r1=22819&r2=22820&view=diff
==============================================================================
--- 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?rev=22820&r1=22819&r2=22820&view=diff
==============================================================================
--- 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?rev=22820&r1=22819&r2=22820&view=diff
==============================================================================
--- 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?rev=22820&r1=22819&r2=22820&view=diff
==============================================================================
--- 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.h?rev=22820&r1=22819&r2=22820&view=diff
==============================================================================
--- 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




More information about the Ros-diffs mailing list