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
, PCONSOLE_PROPS pConInfo
);
17 OptionsProc(HWND hwndDlg
,
22 PCONSOLE_PROPS pConInfo
;
27 pConInfo
= (PCONSOLE_PROPS
)GetWindowLongPtr(hwndDlg
, DWLP_USER
);
33 pConInfo
= (PCONSOLE_PROPS
)((LPPROPSHEETPAGE
)lParam
)->lParam
;
34 SetWindowLongPtr(hwndDlg
, DWLP_USER
, (LONG_PTR
)pConInfo
);
35 UpdateDialogElements(hwndDlg
, pConInfo
);
44 lppsn
= (LPPSHNOTIFY
) lParam
;
45 if (lppsn
->hdr
.code
== UDN_DELTAPOS
)
47 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_EDIT_BUFFER_SIZE
);
48 pConInfo
->ci
.HistoryBufferSize
= LOWORD(SendMessage(hDlgCtrl
, UDM_GETPOS
, 0, 0));
50 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_EDIT_NUM_BUFFER
);
51 pConInfo
->ci
.NumberOfHistoryBuffers
= LOWORD(SendMessage(hDlgCtrl
, UDM_GETPOS
, 0, 0));
52 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
54 else if (lppsn
->hdr
.code
== PSN_APPLY
)
56 if (!pConInfo
->AppliedConfig
)
58 return ApplyConsoleInfo(hwndDlg
, pConInfo
);
62 /* Options have already been applied */
63 SetWindowLongPtr(hwndDlg
, DWLP_MSGRESULT
, PSNRET_NOERROR
);
75 switch (LOWORD(wParam
))
77 case IDC_RADIO_SMALL_CURSOR
:
79 pConInfo
->ci
.CursorSize
= 0;
80 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
83 case IDC_RADIO_MEDIUM_CURSOR
:
85 pConInfo
->ci
.CursorSize
= 50;
86 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
89 case IDC_RADIO_LARGE_CURSOR
:
91 pConInfo
->ci
.CursorSize
= 100;
92 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
95 case IDC_RADIO_DISPLAY_WINDOW
:
97 pConInfo
->ci
.FullScreen
= FALSE
;
98 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
101 case IDC_RADIO_DISPLAY_FULL
:
103 pConInfo
->ci
.FullScreen
= TRUE
;
104 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
107 case IDC_CHECK_QUICK_EDIT
:
109 lResult
= SendMessage((HWND
)lParam
, BM_GETCHECK
, (WPARAM
)0, (LPARAM
)0);
110 if (lResult
== BST_CHECKED
)
112 pConInfo
->ci
.QuickEdit
= FALSE
;
113 SendMessage((HWND
)lParam
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, (LPARAM
)0);
115 else if (lResult
== BST_UNCHECKED
)
117 pConInfo
->ci
.QuickEdit
= TRUE
;
118 SendMessage((HWND
)lParam
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, (LPARAM
)0);
120 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
123 case IDC_CHECK_INSERT_MODE
:
125 lResult
= SendMessage((HWND
)lParam
, BM_GETCHECK
, (WPARAM
)0, (LPARAM
)0);
126 if (lResult
== BST_CHECKED
)
128 pConInfo
->ci
.InsertMode
= FALSE
;
129 SendMessage((HWND
)lParam
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, (LPARAM
)0);
131 else if (lResult
== BST_UNCHECKED
)
133 pConInfo
->ci
.InsertMode
= TRUE
;
134 SendMessage((HWND
)lParam
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, (LPARAM
)0);
136 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
139 case IDC_CHECK_DISCARD_DUPLICATES
:
141 lResult
= SendMessage((HWND
)lParam
, BM_GETCHECK
, (WPARAM
)0, (LPARAM
)0);
142 if (lResult
== BST_CHECKED
)
144 pConInfo
->ci
.HistoryNoDup
= FALSE
;
145 SendMessage((HWND
)lParam
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, (LPARAM
)0);
147 else if (lResult
== BST_UNCHECKED
)
149 pConInfo
->ci
.HistoryNoDup
= TRUE
;
150 SendMessage((HWND
)lParam
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, (LPARAM
)0);
152 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
169 UpdateDialogElements(HWND hwndDlg
, PCONSOLE_PROPS pConInfo
)
172 TCHAR szBuffer
[MAX_PATH
];
174 /* Update cursor size */
175 if (pConInfo
->ci
.CursorSize
== 0)
178 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_SMALL_CURSOR
);
179 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, 0);
181 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_MEDIUM_CURSOR
);
182 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, 0);
183 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_LARGE_CURSOR
);
184 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, 0);
186 else if (pConInfo
->ci
.CursorSize
== 50)
188 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_MEDIUM_CURSOR
);
189 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, 0);
191 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_SMALL_CURSOR
);
192 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, 0);
193 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_LARGE_CURSOR
);
194 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, 0);
196 else if (pConInfo
->ci
.CursorSize
== 100)
198 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_LARGE_CURSOR
);
199 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, 0);
201 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_SMALL_CURSOR
);
202 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, 0);
203 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_MEDIUM_CURSOR
);
204 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, 0);
207 /* Update num buffers */
208 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_UPDOWN_NUM_BUFFER
);
209 SendMessage(hDlgCtrl
, UDM_SETRANGE
, 0, MAKELONG((short)999, (short)1));
210 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_EDIT_NUM_BUFFER
);
211 _stprintf(szBuffer
, _T("%d"), pConInfo
->ci
.NumberOfHistoryBuffers
);
212 SendMessage(hDlgCtrl
, WM_SETTEXT
, 0, (LPARAM
)szBuffer
);
214 /* Update buffer size */
215 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_UPDOWN_BUFFER_SIZE
);
216 SendMessage(hDlgCtrl
, UDM_SETRANGE
, 0, MAKELONG((short)999, (short)1));
217 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_EDIT_BUFFER_SIZE
);
218 _stprintf(szBuffer
, _T("%d"), pConInfo
->ci
.HistoryBufferSize
);
219 SendMessage(hDlgCtrl
, WM_SETTEXT
, 0, (LPARAM
)szBuffer
);
221 /* Update discard duplicates */
222 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_CHECK_DISCARD_DUPLICATES
);
223 if (pConInfo
->ci
.HistoryNoDup
)
224 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, 0);
226 SendMessage(hDlgCtrl
, BM_SETCHECK
, (LPARAM
)BST_UNCHECKED
, 0);
228 /* Update full/window screen */
229 if (pConInfo
->ci
.FullScreen
)
231 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_DISPLAY_FULL
);
232 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, 0);
234 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_DISPLAY_WINDOW
);
235 SendMessage(hDlgCtrl
, BM_SETCHECK
, (LPARAM
)BST_UNCHECKED
, 0);
239 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_DISPLAY_WINDOW
);
240 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, 0);
242 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_DISPLAY_FULL
);
243 SendMessage(hDlgCtrl
, BM_SETCHECK
, (LPARAM
)BST_UNCHECKED
, 0);
246 /* Update quick edit */
247 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_CHECK_QUICK_EDIT
);
248 if (pConInfo
->ci
.QuickEdit
)
249 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, 0);
251 SendMessage(hDlgCtrl
, BM_SETCHECK
, (LPARAM
)BST_UNCHECKED
, 0);
253 /* Update insert mode */
254 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_CHECK_INSERT_MODE
);
255 if (pConInfo
->ci
.InsertMode
)
256 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, 0);
258 SendMessage(hDlgCtrl
, BM_SETCHECK
, (LPARAM
)BST_UNCHECKED
, 0);