2 * PROJECT: ReactOS Console Configuration DLL
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: dll/win32/console/options.c
5 * PURPOSE: displays options dialog
6 * PROGRAMMERS: Johannes Anderwald (johannes.anderwald@student.tugraz.at)
13 UpdateDialogElements(HWND hwndDlg
, PConsoleInfo pConInfo
);
24 PConsoleInfo pConInfo
;
29 pConInfo
= (PConsoleInfo
) GetWindowLongPtr(hwndDlg
, DWLP_USER
);
35 pConInfo
= (PConsoleInfo
) ((LPPROPSHEETPAGE
)lParam
)->lParam
;
36 SetWindowLongPtr(hwndDlg
, DWLP_USER
, (LONG_PTR
)pConInfo
);
37 UpdateDialogElements(hwndDlg
, pConInfo
);
46 lppsn
= (LPPSHNOTIFY
) lParam
;
47 if (lppsn
->hdr
.code
== UDN_DELTAPOS
)
49 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_EDIT_BUFFER_SIZE
);
50 pConInfo
->HistoryBufferSize
= LOWORD(SendMessage(hDlgCtrl
, UDM_GETPOS
, 0, 0));
52 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_EDIT_NUM_BUFFER
);
53 pConInfo
->NumberOfHistoryBuffers
= LOWORD(SendMessage(hDlgCtrl
, UDM_GETPOS
, 0, 0));
54 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
56 else if (lppsn
->hdr
.code
== PSN_APPLY
)
58 if (!pConInfo
->AppliedConfig
)
60 ApplyConsoleInfo(hwndDlg
, pConInfo
);
64 /* options have already been applied */
65 SetWindowLongPtr(hwndDlg
, DWL_MSGRESULT
, PSNRET_NOERROR
);
78 switch(LOWORD(wParam
))
80 case IDC_RADIO_SMALL_CURSOR
:
82 pConInfo
->CursorSize
= 0x0;
83 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
86 case IDC_RADIO_MEDIUM_CURSOR
:
88 pConInfo
->CursorSize
= 0x32;
89 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
92 case IDC_RADIO_LARGE_CURSOR
:
94 pConInfo
->CursorSize
= 0x64;
95 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
98 case IDC_RADIO_DISPLAY_WINDOW
:
100 pConInfo
->FullScreen
= FALSE
;
101 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
104 case IDC_RADIO_DISPLAY_FULL
:
106 pConInfo
->FullScreen
= TRUE
;
107 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
110 case IDC_CHECK_QUICK_EDIT
:
112 lResult
= SendMessage((HWND
)lParam
, BM_GETCHECK
, (WPARAM
)0, (LPARAM
)0);
113 if (lResult
== BST_CHECKED
)
115 pConInfo
->QuickEdit
= FALSE
;
116 SendMessage((HWND
)lParam
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, (LPARAM
)0);
118 else if (lResult
== BST_UNCHECKED
)
120 pConInfo
->QuickEdit
= TRUE
;
121 SendMessage((HWND
)lParam
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, (LPARAM
)0);
123 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
126 case IDC_CHECK_INSERT_MODE
:
128 lResult
= SendMessage((HWND
)lParam
, BM_GETCHECK
, (WPARAM
)0, (LPARAM
)0);
129 if (lResult
== BST_CHECKED
)
131 pConInfo
->InsertMode
= FALSE
;
132 SendMessage((HWND
)lParam
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, (LPARAM
)0);
134 else if (lResult
== BST_UNCHECKED
)
136 pConInfo
->InsertMode
= TRUE
;
137 SendMessage((HWND
)lParam
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, (LPARAM
)0);
139 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
142 case IDC_CHECK_DISCARD_DUPLICATES
:
144 lResult
= SendMessage((HWND
)lParam
, BM_GETCHECK
, (WPARAM
)0, (LPARAM
)0);
145 if (lResult
== BST_CHECKED
)
147 pConInfo
->HistoryNoDup
= FALSE
;
148 SendMessage((HWND
)lParam
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, (LPARAM
)0);
150 else if (lResult
== BST_UNCHECKED
)
152 pConInfo
->HistoryNoDup
= TRUE
;
153 SendMessage((HWND
)lParam
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, (LPARAM
)0);
155 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
172 UpdateDialogElements(HWND hwndDlg
, PConsoleInfo pConInfo
)
175 TCHAR szBuffer
[MAX_PATH
];
177 /* update cursor size */
178 if ( pConInfo
->CursorSize
== 0)
181 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_SMALL_CURSOR
);
182 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, 0);
184 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_MEDIUM_CURSOR
);
185 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, 0);
186 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_LARGE_CURSOR
);
187 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, 0);
189 else if ( pConInfo
->CursorSize
== 0x32 )
191 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_MEDIUM_CURSOR
);
192 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, 0);
194 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_SMALL_CURSOR
);
195 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, 0);
196 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_LARGE_CURSOR
);
197 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, 0);
199 else if ( pConInfo
->CursorSize
== 0x64 )
201 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_LARGE_CURSOR
);
202 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, 0);
204 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_SMALL_CURSOR
);
205 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, 0);
206 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_MEDIUM_CURSOR
);
207 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, 0);
210 /* update num buffers */
211 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_UPDOWN_NUM_BUFFER
);
212 SendMessage(hDlgCtrl
, UDM_SETRANGE
, 0, MAKELONG((short)999, (short)1));
213 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_EDIT_NUM_BUFFER
);
214 _stprintf(szBuffer
, _T("%d"), pConInfo
->NumberOfHistoryBuffers
);
215 SendMessage(hDlgCtrl
, WM_SETTEXT
, 0, (LPARAM
)szBuffer
);
217 /* update buffer size */
218 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_UPDOWN_BUFFER_SIZE
);
219 SendMessage(hDlgCtrl
, UDM_SETRANGE
, 0, MAKELONG((short)999, (short)1));
220 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_EDIT_BUFFER_SIZE
);
221 _stprintf(szBuffer
, _T("%d"), pConInfo
->HistoryBufferSize
);
222 SendMessage(hDlgCtrl
, WM_SETTEXT
, 0, (LPARAM
)szBuffer
);
226 /* update discard duplicates */
227 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_CHECK_DISCARD_DUPLICATES
);
228 if ( pConInfo
->HistoryNoDup
)
229 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, 0);
231 SendMessage(hDlgCtrl
, BM_SETCHECK
, (LPARAM
)BST_UNCHECKED
, 0);
233 /* update full/window screen */
234 if ( pConInfo
->FullScreen
)
236 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_DISPLAY_FULL
);
237 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, 0);
239 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_DISPLAY_WINDOW
);
240 SendMessage(hDlgCtrl
, BM_SETCHECK
, (LPARAM
)BST_UNCHECKED
, 0);
244 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_DISPLAY_WINDOW
);
245 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, 0);
247 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_DISPLAY_FULL
);
248 SendMessage(hDlgCtrl
, BM_SETCHECK
, (LPARAM
)BST_UNCHECKED
, 0);
251 /* update quick edit */
252 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_CHECK_QUICK_EDIT
);
253 if ( pConInfo
->QuickEdit
)
254 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, 0);
256 SendMessage(hDlgCtrl
, BM_SETCHECK
, (LPARAM
)BST_UNCHECKED
, 0);
258 /* update insert mode */
259 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_CHECK_INSERT_MODE
);
260 if ( pConInfo
->InsertMode
)
261 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, 0);
263 SendMessage(hDlgCtrl
, BM_SETCHECK
, (LPARAM
)BST_UNCHECKED
, 0);