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)
16 UpdateDialogElements(HWND hwndDlg
, PCONSOLE_PROPS pConInfo
);
20 OptionsProc(HWND hwndDlg
,
25 PCONSOLE_PROPS pConInfo
;
30 pConInfo
= (PCONSOLE_PROPS
)GetWindowLongPtr(hwndDlg
, DWLP_USER
);
36 pConInfo
= (PCONSOLE_PROPS
)((LPPROPSHEETPAGE
)lParam
)->lParam
;
37 SetWindowLongPtr(hwndDlg
, DWLP_USER
, (LONG_PTR
)pConInfo
);
38 UpdateDialogElements(hwndDlg
, pConInfo
);
45 lppsn
= (LPPSHNOTIFY
) lParam
;
46 if (lppsn
->hdr
.code
== UDN_DELTAPOS
)
48 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_EDIT_BUFFER_SIZE
);
49 pConInfo
->ci
.HistoryBufferSize
= LOWORD(SendMessage(hDlgCtrl
, UDM_GETPOS
, 0, 0));
51 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_EDIT_NUM_BUFFER
);
52 pConInfo
->ci
.NumberOfHistoryBuffers
= LOWORD(SendMessage(hDlgCtrl
, UDM_GETPOS
, 0, 0));
53 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
55 else if (lppsn
->hdr
.code
== PSN_APPLY
)
57 if (!pConInfo
->AppliedConfig
)
59 return ApplyConsoleInfo(hwndDlg
, pConInfo
);
63 /* Options have already been applied */
64 SetWindowLongPtr(hwndDlg
, DWLP_MSGRESULT
, PSNRET_NOERROR
);
74 switch (LOWORD(wParam
))
76 case IDC_RADIO_SMALL_CURSOR
:
78 pConInfo
->ci
.CursorSize
= 25;
79 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
82 case IDC_RADIO_MEDIUM_CURSOR
:
84 pConInfo
->ci
.CursorSize
= 50;
85 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
88 case IDC_RADIO_LARGE_CURSOR
:
90 pConInfo
->ci
.CursorSize
= 100;
91 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
94 case IDC_RADIO_DISPLAY_WINDOW
:
96 pConInfo
->ci
.FullScreen
= FALSE
;
97 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
100 case IDC_RADIO_DISPLAY_FULL
:
102 pConInfo
->ci
.FullScreen
= TRUE
;
103 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
106 case IDC_CHECK_QUICK_EDIT
:
108 lResult
= SendMessage((HWND
)lParam
, BM_GETCHECK
, (WPARAM
)0, (LPARAM
)0);
109 if (lResult
== BST_CHECKED
)
111 pConInfo
->ci
.QuickEdit
= FALSE
;
112 SendMessage((HWND
)lParam
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, (LPARAM
)0);
114 else if (lResult
== BST_UNCHECKED
)
116 pConInfo
->ci
.QuickEdit
= TRUE
;
117 SendMessage((HWND
)lParam
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, (LPARAM
)0);
119 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
122 case IDC_CHECK_INSERT_MODE
:
124 lResult
= SendMessage((HWND
)lParam
, BM_GETCHECK
, (WPARAM
)0, (LPARAM
)0);
125 if (lResult
== BST_CHECKED
)
127 pConInfo
->ci
.InsertMode
= FALSE
;
128 SendMessage((HWND
)lParam
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, (LPARAM
)0);
130 else if (lResult
== BST_UNCHECKED
)
132 pConInfo
->ci
.InsertMode
= TRUE
;
133 SendMessage((HWND
)lParam
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, (LPARAM
)0);
135 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
138 case IDC_CHECK_DISCARD_DUPLICATES
:
140 lResult
= SendMessage((HWND
)lParam
, BM_GETCHECK
, (WPARAM
)0, (LPARAM
)0);
141 if (lResult
== BST_CHECKED
)
143 pConInfo
->ci
.HistoryNoDup
= FALSE
;
144 SendMessage((HWND
)lParam
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, (LPARAM
)0);
146 else if (lResult
== BST_UNCHECKED
)
148 pConInfo
->ci
.HistoryNoDup
= TRUE
;
149 SendMessage((HWND
)lParam
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, (LPARAM
)0);
151 PropSheet_Changed(GetParent(hwndDlg
), hwndDlg
);
168 UpdateDialogElements(HWND hwndDlg
, PCONSOLE_PROPS pConInfo
)
171 TCHAR szBuffer
[MAX_PATH
];
173 /* Update cursor size */
174 if (pConInfo
->ci
.CursorSize
<= 25)
177 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_SMALL_CURSOR
);
178 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, 0);
180 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_MEDIUM_CURSOR
);
181 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, 0);
182 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_LARGE_CURSOR
);
183 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, 0);
185 else if (pConInfo
->ci
.CursorSize
<= 50)
187 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_MEDIUM_CURSOR
);
188 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, 0);
190 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_SMALL_CURSOR
);
191 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, 0);
192 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_LARGE_CURSOR
);
193 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, 0);
195 else /* if (pConInfo->ci.CursorSize <= 100) */
197 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_LARGE_CURSOR
);
198 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, 0);
200 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_SMALL_CURSOR
);
201 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, 0);
202 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_MEDIUM_CURSOR
);
203 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_UNCHECKED
, 0);
206 /* Update num buffers */
207 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_UPDOWN_NUM_BUFFER
);
208 SendMessage(hDlgCtrl
, UDM_SETRANGE
, 0, MAKELONG((short)999, (short)1));
209 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_EDIT_NUM_BUFFER
);
210 _stprintf(szBuffer
, _T("%d"), pConInfo
->ci
.NumberOfHistoryBuffers
);
211 SendMessage(hDlgCtrl
, WM_SETTEXT
, 0, (LPARAM
)szBuffer
);
213 /* Update buffer size */
214 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_UPDOWN_BUFFER_SIZE
);
215 SendMessage(hDlgCtrl
, UDM_SETRANGE
, 0, MAKELONG((short)999, (short)1));
216 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_EDIT_BUFFER_SIZE
);
217 _stprintf(szBuffer
, _T("%d"), pConInfo
->ci
.HistoryBufferSize
);
218 SendMessage(hDlgCtrl
, WM_SETTEXT
, 0, (LPARAM
)szBuffer
);
220 /* Update discard duplicates */
221 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_CHECK_DISCARD_DUPLICATES
);
222 if (pConInfo
->ci
.HistoryNoDup
)
223 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, 0);
225 SendMessage(hDlgCtrl
, BM_SETCHECK
, (LPARAM
)BST_UNCHECKED
, 0);
227 /* Update full/window screen */
228 if (pConInfo
->ci
.FullScreen
)
230 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_DISPLAY_FULL
);
231 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, 0);
233 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_DISPLAY_WINDOW
);
234 SendMessage(hDlgCtrl
, BM_SETCHECK
, (LPARAM
)BST_UNCHECKED
, 0);
238 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_DISPLAY_WINDOW
);
239 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, 0);
241 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_RADIO_DISPLAY_FULL
);
242 SendMessage(hDlgCtrl
, BM_SETCHECK
, (LPARAM
)BST_UNCHECKED
, 0);
245 /* Update quick edit */
246 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_CHECK_QUICK_EDIT
);
247 if (pConInfo
->ci
.QuickEdit
)
248 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, 0);
250 SendMessage(hDlgCtrl
, BM_SETCHECK
, (LPARAM
)BST_UNCHECKED
, 0);
252 /* Update insert mode */
253 hDlgCtrl
= GetDlgItem(hwndDlg
, IDC_CHECK_INSERT_MODE
);
254 if (pConInfo
->ci
.InsertMode
)
255 SendMessage(hDlgCtrl
, BM_SETCHECK
, (WPARAM
)BST_CHECKED
, 0);
257 SendMessage(hDlgCtrl
, BM_SETCHECK
, (LPARAM
)BST_UNCHECKED
, 0);