Develop and Download Open Source Software

Browse Subversion Repository

Contents of /trunk/teraterm/teraterm/addsetting.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 7759 - (show annotations) (download) (as text)
Wed Jun 12 08:32:27 2019 UTC (4 years, 10 months ago) by maya
File MIME type: text/x-c++src
File size: 50706 byte(s)
ほかのシートでは GetSafeHwnd() を使っているので統一
1 /*
2 * Copyright (C) 2008-2019 TeraTerm Project
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * 3. The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29 /*
30 * Additional settings dialog
31 */
32 #include "teraterm_conf.h"
33
34 #include <stdio.h>
35 #include <tchar.h>
36 #include <windows.h>
37 #include <commctrl.h>
38 #include <time.h>
39 #include <tchar.h>
40
41 #include "addsetting.h"
42 #include "teraterm.h"
43 #include "tttypes.h"
44 #include "ttwinman.h" // for ts
45 #include "ttcommon.h"
46 #include "ttftypes.h"
47 #include "dlglib.h"
48 #include "compat_win.h"
49
50 #undef GetDlgItemText
51 #define GetDlgItemText GetDlgItemTextA
52 #undef SetDlgItemText
53 #define SetDlgItemText SetDlgItemTextA
54
55 const mouse_cursor_t MouseCursor[] = {
56 {"ARROW", IDC_ARROW},
57 {"IBEAM", IDC_IBEAM},
58 {"CROSS", IDC_CROSS},
59 {"HAND", IDC_HAND},
60 {NULL, NULL},
61 };
62 #define MOUSE_CURSOR_MAX (sizeof(MouseCursor)/sizeof(MouseCursor[0]) - 1)
63
64 void CVisualPropPageDlg::SetupRGBbox(int index)
65 {
66 BYTE c;
67
68 c = GetRValue(ts.ANSIColor[index]);
69 SetDlgItemNum(IDC_COLOR_RED, c);
70
71 c = GetGValue(ts.ANSIColor[index]);
72 SetDlgItemNum(IDC_COLOR_GREEN, c);
73
74 c = GetBValue(ts.ANSIColor[index]);
75 SetDlgItemNum(IDC_COLOR_BLUE, c);
76 }
77
78 // CGeneralPropPageDlg �_�C�A���O
79
80 CGeneralPropPageDlg::CGeneralPropPageDlg(HINSTANCE inst, TTCPropertySheet *sheet)
81 : TTCPropertyPage(inst, CGeneralPropPageDlg::IDD, sheet)
82 {
83 TCHAR UIMsg[MAX_UIMSG];
84 get_lang_msgT("DLG_TABSHEET_TITLE_GENERAL", UIMsg, _countof(UIMsg),
85 _T("General"), ts.UILanguageFile);
86 m_psp.pszTitle = _tcsdup(UIMsg);
87 m_psp.dwFlags |= PSP_USETITLE;
88 }
89
90 CGeneralPropPageDlg::~CGeneralPropPageDlg()
91 {
92 free((void *)m_psp.pszTitle);
93 }
94
95 // CGeneralPropPageDlg ���b�Z�[�W �n���h��
96
97 void CGeneralPropPageDlg::OnInitDialog()
98 {
99 TTCPropertyPage::OnInitDialog();
100
101 static const DlgTextInfo TextInfos[] = {
102 { IDC_CLICKABLE_URL, "DLG_TAB_GENERAL_CLICKURL" },
103 { IDC_DISABLE_SENDBREAK, "DLG_TAB_GENERAL_DISABLESENDBREAK" },
104 { IDC_ACCEPT_BROADCAST, "DLG_TAB_GENERAL_ACCEPTBROADCAST" },
105 { IDC_MOUSEWHEEL_SCROLL_LINE, "DLG_TAB_GENERAL_MOUSEWHEEL_SCROLL_LINE" },
106 { IDC_AUTOSCROLL_ONLY_IN_BOTTOM_LINE, "DLG_TAB_GENERAL_AUTOSCROLL_ONLY_IN_BOTTOM_LINE" },
107 { IDC_CLEAR_ON_RESIZE, "DLG_TAB_GENERAL_CLEAR_ON_RESIZE" },
108 { IDC_CURSOR_CHANGE_IME, "DLG_TAB_GENERAL_CURSOR_CHANGE_IME" },
109 { IDC_LIST_HIDDEN_FONTS, "DLG_TAB_GENERAL_LIST_HIDDEN_FONTS" },
110 { IDC_TITLEFMT_GROUP, "DLG_TAB_GENERAL_TITLEFMT_GROUP" },
111 { IDC_TITLEFMT_DISPHOSTNAME, "DLG_TAB_GENERAL_TITLEFMT_DISPHOSTNAME" },
112 { IDC_TITLEFMT_DISPSESSION, "DLG_TAB_GENERAL_TITLEFMT_DISPSESSION" },
113 { IDC_TITLEFMT_DISPVTTEK, "DLG_TAB_GENERAL_TITLEFMT_DISPVTTEK" },
114 { IDC_TITLEFMT_SWAPHOSTTITLE, "DLG_TAB_GENERAL_TITLEFMT_SWAPHOSTTITLE" },
115 { IDC_TITLEFMT_DISPTCPPORT, "DLG_TAB_GENERAL_TITLEFMT_DISPTCPPORT" },
116 { IDC_TITLEFMT_DISPSERIALSPEED, "DLG_TAB_GENERAL_TITLEFMT_DISPSERIALSPEED" }
117 };
118 SetDlgTexts(m_hWnd, TextInfos, _countof(TextInfos), ts.UILanguageFile);
119
120 // (1)DisableAcceleratorSendBreak
121 SetCheck(IDC_DISABLE_SENDBREAK, ts.DisableAcceleratorSendBreak);
122
123 // (2)EnableClickableUrl
124 SetCheck(IDC_CLICKABLE_URL, ts.EnableClickableUrl);
125
126 // (3)AcceptBroadcast 337: 2007/03/20
127 SetCheck(IDC_ACCEPT_BROADCAST, ts.AcceptBroadcast);
128
129 // (4)IDC_MOUSEWHEEL_SCROLL_LINE
130 SetDlgItemNum(IDC_SCROLL_LINE, ts.MouseWheelScrollLine);
131
132 // (5)IDC_AUTOSCROLL_ONLY_IN_BOTTOM_LINE
133 SetCheck(IDC_AUTOSCROLL_ONLY_IN_BOTTOM_LINE, ts.AutoScrollOnlyInBottomLine);
134
135 // (6)IDC_CLEAR_ON_RESIZE
136 SetCheck(IDC_CLEAR_ON_RESIZE, (ts.TermFlag & TF_CLEARONRESIZE) != 0);
137
138 // (7)IDC_CURSOR_CHANGE_IME
139 SetCheck(IDC_CURSOR_CHANGE_IME, (ts.WindowFlag & WF_IMECURSORCHANGE) != 0);
140
141 // (8)IDC_LIST_HIDDEN_FONTS
142 SetCheck(IDC_LIST_HIDDEN_FONTS, ts.ListHiddenFonts);
143
144 // (9) Title Format
145 SetCheck(IDC_TITLEFMT_DISPHOSTNAME, (ts.TitleFormat & 1) != 0);
146 SetCheck(IDC_TITLEFMT_DISPSESSION, (ts.TitleFormat & (1<<1)) != 0);
147 SetCheck(IDC_TITLEFMT_DISPVTTEK, (ts.TitleFormat & (1<<2)) != 0);
148 SetCheck(IDC_TITLEFMT_SWAPHOSTTITLE, (ts.TitleFormat & (1<<3)) != 0);
149 SetCheck(IDC_TITLEFMT_DISPTCPPORT, (ts.TitleFormat & (1<<4)) != 0);
150 SetCheck(IDC_TITLEFMT_DISPSERIALSPEED, (ts.TitleFormat & (1<<5)) != 0);
151
152 // �_�C�A���O���t�H�[�J�X�������� (2004.12.7 yutaka)
153 ::SetFocus(::GetDlgItem(GetSafeHwnd(), IDC_CLICKABLE_URL));
154 }
155
156 void CGeneralPropPageDlg::OnOK()
157 {
158 TCHAR buf[64];
159 int val;
160
161 // (1)
162 ts.DisableAcceleratorSendBreak = GetCheck(IDC_DISABLE_SENDBREAK);
163
164 // (2)
165 ts.EnableClickableUrl = GetCheck(IDC_CLICKABLE_URL);
166
167 // (3) 337: 2007/03/20
168 ts.AcceptBroadcast = GetCheck(IDC_ACCEPT_BROADCAST);
169
170 // (4)IDC_MOUSEWHEEL_SCROLL_LINE
171 GetDlgItemTextT(IDC_SCROLL_LINE, buf, _countof(buf));
172 val = _tstoi(buf);
173 if (val > 0)
174 ts.MouseWheelScrollLine = val;
175
176 // (5)IDC_AUTOSCROLL_ONLY_IN_BOTTOM_LINE
177 ts.AutoScrollOnlyInBottomLine = GetCheck(IDC_AUTOSCROLL_ONLY_IN_BOTTOM_LINE);
178
179 // (6)IDC_CLEAR_ON_RESIZE
180 if (((ts.TermFlag & TF_CLEARONRESIZE) != 0) != GetCheck(IDC_CLEAR_ON_RESIZE)) {
181 ts.TermFlag ^= TF_CLEARONRESIZE;
182 }
183
184 // (7)IDC_CURSOR_CHANGE_IME
185 if (((ts.WindowFlag & WF_IMECURSORCHANGE) != 0) != GetCheck(IDC_CURSOR_CHANGE_IME)) {
186 ts.WindowFlag ^= WF_IMECURSORCHANGE;
187 }
188
189 // (8)IDC_LIST_HIDDEN_FONTS
190 ts.ListHiddenFonts = GetCheck(IDC_LIST_HIDDEN_FONTS);
191
192 // (9) Title Format
193 ts.TitleFormat = GetCheck(IDC_TITLEFMT_DISPHOSTNAME) == BST_CHECKED;
194 ts.TitleFormat |= (GetCheck(IDC_TITLEFMT_DISPSESSION) == BST_CHECKED) << 1;
195 ts.TitleFormat |= (GetCheck(IDC_TITLEFMT_DISPVTTEK) == BST_CHECKED) << 2;
196 ts.TitleFormat |= (GetCheck(IDC_TITLEFMT_SWAPHOSTTITLE) == BST_CHECKED) << 3;
197 ts.TitleFormat |= (GetCheck(IDC_TITLEFMT_DISPTCPPORT) == BST_CHECKED) << 4;
198 ts.TitleFormat |= (GetCheck(IDC_TITLEFMT_DISPSERIALSPEED) == BST_CHECKED) << 5;
199 }
200
201 // CSequencePropPageDlg �_�C�A���O
202
203 CSequencePropPageDlg::CSequencePropPageDlg(HINSTANCE inst, TTCPropertySheet *sheet)
204 : TTCPropertyPage(inst, CSequencePropPageDlg::IDD, sheet)
205 {
206 TCHAR UIMsg[MAX_UIMSG];
207 get_lang_msgT("DLG_TABSHEET_TITLE_SEQUENCE", UIMsg, _countof(UIMsg),
208 _T("Control Sequence"), ts.UILanguageFile);
209 m_psp.pszTitle = _tcsdup(UIMsg);
210 m_psp.dwFlags |= PSP_USETITLE;
211 }
212
213 CSequencePropPageDlg::~CSequencePropPageDlg()
214 {
215 free((void *)m_psp.pszTitle);
216 }
217
218 // CSequencePropPageDlg ���b�Z�[�W �n���h��
219
220 void CSequencePropPageDlg::OnInitDialog()
221 {
222 TTCPropertyPage::OnInitDialog();
223
224 static const DlgTextInfo TextInfos[] = {
225 { IDC_ACCEPT_MOUSE_EVENT_TRACKING, "DLG_TAB_SEQUENCE_ACCEPT_MOUSE_EVENT_TRACKING" },
226 { IDC_DISABLE_MOUSE_TRACKING_CTRL, "DLG_TAB_SEQUENCE_DISABLE_MOUSE_TRACKING_CTRL" },
227 { IDC_ACCEPT_TITLE_CHANGING_LABEL, "DLG_TAB_SEQUENCE_ACCEPT_TITLE_CHANGING" },
228
229 { IDC_CURSOR_CTRL_SEQ, "DLG_TAB_SEQUENCE_CURSOR_CTRL" },
230 { IDC_WINDOW_CTRL, "DLG_TAB_SEQUENCE_WINDOW_CTRL" },
231 { IDC_WINDOW_REPORT, "DLG_TAB_SEQUENCE_WINDOW_REPORT" },
232 { IDC_TITLE_REPORT_LABEL, "DLG_TAB_SEQUENCE_TITLE_REPORT" },
233
234 { IDC_CLIPBOARD_ACCESS_LABEL, "DLG_TAB_SEQUENCE_CLIPBOARD_ACCESS" },
235
236 { IDC_CLIPBOARD_NOTIFY, "DLG_TAB_SEQUENCE_CLIPBOARD_NOTIFY" },
237 };
238 SetDlgTexts(m_hWnd, TextInfos, _countof(TextInfos), ts.UILanguageFile);
239
240 TCHAR uimsg[MAX_UIMSG];
241 get_lang_msgT("DLG_TAB_SEQUENCE_ACCEPT_TITLE_CHANGING_OFF", uimsg, _countof(uimsg), _T("off"), ts.UILanguageFile);
242 SendDlgItemMessage(IDC_ACCEPT_TITLE_CHANGING, CB_ADDSTRING, 0, (LPARAM)uimsg);
243 get_lang_msgT("DLG_TAB_SEQUENCE_ACCEPT_TITLE_CHANGING_OVERWRITE", uimsg, _countof(uimsg), _T("overwrite"), ts.UILanguageFile);
244 SendDlgItemMessage(IDC_ACCEPT_TITLE_CHANGING, CB_ADDSTRING, 0, (LPARAM)uimsg);
245 get_lang_msgT("DLG_TAB_SEQUENCE_ACCEPT_TITLE_CHANGING_AHEAD", uimsg, _countof(uimsg), _T("ahead"), ts.UILanguageFile);
246 SendDlgItemMessage(IDC_ACCEPT_TITLE_CHANGING, CB_ADDSTRING, 0, (LPARAM)uimsg);
247 get_lang_msgT("DLG_TAB_SEQUENCE_ACCEPT_TITLE_CHANGING_LAST", uimsg, _countof(uimsg), _T("last"), ts.UILanguageFile);
248 SendDlgItemMessage(IDC_ACCEPT_TITLE_CHANGING, CB_ADDSTRING, 0, (LPARAM)uimsg);
249
250 get_lang_msgT("DLG_TAB_SEQUENCE_TITLE_REPORT_IGNORE", uimsg, _countof(uimsg), _T("ignore"), ts.UILanguageFile);
251 SendDlgItemMessage(IDC_TITLE_REPORT, CB_ADDSTRING, 0, (LPARAM)uimsg);
252 get_lang_msgT("DLG_TAB_SEQUENCE_TITLE_REPORT_ACCEPT", uimsg, _countof(uimsg), _T("accept"), ts.UILanguageFile);
253 SendDlgItemMessage(IDC_TITLE_REPORT, CB_ADDSTRING, 0, (LPARAM)uimsg);
254 get_lang_msgT("DLG_TAB_SEQUENCE_TITLE_REPORT_EMPTY", uimsg, _countof(uimsg), _T("empty"), ts.UILanguageFile);
255 SendDlgItemMessage(IDC_TITLE_REPORT, CB_ADDSTRING, 0, (LPARAM)uimsg);
256
257 get_lang_msgT("DLG_TAB_SEQUENCE_CLIPBOARD_ACCESS_OFF", uimsg, _countof(uimsg), _T("off"), ts.UILanguageFile);
258 SendDlgItemMessage(IDC_CLIPBOARD_ACCESS, CB_ADDSTRING, 0, (LPARAM)uimsg);
259 get_lang_msgT("DLG_TAB_SEQUENCE_CLIPBOARD_ACCESS_WRITE", uimsg, _countof(uimsg), _T("write only"), ts.UILanguageFile);
260 SendDlgItemMessage(IDC_CLIPBOARD_ACCESS, CB_ADDSTRING, 0, (LPARAM)uimsg);
261 get_lang_msgT("DLG_TAB_SEQUENCE_CLIPBOARD_ACCESS_READ", uimsg, _countof(uimsg), _T("read only"), ts.UILanguageFile);
262 SendDlgItemMessage(IDC_CLIPBOARD_ACCESS, CB_ADDSTRING, 0, (LPARAM)uimsg);
263 get_lang_msgT("DLG_TAB_SEQUENCE_CLIPBOARD_ACCESS_ON", uimsg, _countof(uimsg), _T("read/write"), ts.UILanguageFile);
264 SendDlgItemMessage(IDC_CLIPBOARD_ACCESS, CB_ADDSTRING, 0, (LPARAM)uimsg);
265
266 // (1)IDC_ACCEPT_MOUSE_EVENT_TRACKING
267 SetCheck(IDC_ACCEPT_MOUSE_EVENT_TRACKING, ts.MouseEventTracking);
268 EnableDlgItem(IDC_DISABLE_MOUSE_TRACKING_CTRL, ts.MouseEventTracking ? TRUE : FALSE);
269
270 // (2)IDC_DISABLE_MOUSE_TRACKING_CTRL
271 SetCheck(IDC_DISABLE_MOUSE_TRACKING_CTRL, ts.DisableMouseTrackingByCtrl);
272
273 // (3)IDC_ACCEPT_TITLE_CHANGING
274 SetCurSel(IDC_ACCEPT_TITLE_CHANGING, ts.AcceptTitleChangeRequest);
275
276 // (4)IDC_TITLE_REPORT
277 SetCurSel(IDC_TITLE_REPORT,
278 (ts.WindowFlag & WF_TITLEREPORT) == IdTitleReportIgnore ? 0 :
279 (ts.WindowFlag & WF_TITLEREPORT) == IdTitleReportAccept ? 1
280 /*(ts.WindowFlag & WF_TITLEREPORT) == IdTitleReportEmptye ? */ : 2);
281
282 // (5)IDC_WINDOW_CTRL
283 SetCheck(IDC_WINDOW_CTRL, (ts.WindowFlag & WF_WINDOWCHANGE) != 0);
284
285 // (6)IDC_WINDOW_REPORT
286 SetCheck(IDC_WINDOW_REPORT, (ts.WindowFlag & WF_WINDOWREPORT) != 0);
287
288 // (7)IDC_CURSOR_CTRL_SEQ
289 SetCheck(IDC_CURSOR_CTRL_SEQ, (ts.WindowFlag & WF_CURSORCHANGE) != 0);
290
291 // (8)IDC_CLIPBOARD_ACCESS
292 SetCurSel(IDC_CLIPBOARD_ACCESS,
293 (ts.CtrlFlag & CSF_CBRW) == CSF_CBRW ? 3 :
294 (ts.CtrlFlag & CSF_CBRW) == CSF_CBREAD ? 2 :
295 (ts.CtrlFlag & CSF_CBRW) == CSF_CBWRITE ? 1 :
296 0); // off
297
298 // (9)IDC_CLIPBOARD_NOTIFY
299 SetCheck(IDC_CLIPBOARD_NOTIFY, ts.NotifyClipboardAccess);
300 EnableDlgItem(IDC_CLIPBOARD_NOTIFY, HasBalloonTipSupport() ? TRUE : FALSE);
301
302 // �_�C�A���O���t�H�[�J�X�������� (2004.12.7 yutaka)
303 ::SetFocus(::GetDlgItem(GetSafeHwnd(), IDC_ACCEPT_MOUSE_EVENT_TRACKING));
304 }
305
306 BOOL CSequencePropPageDlg::OnCommand(WPARAM wParam, LPARAM lParam)
307 {
308 switch (wParam) {
309 case IDC_ACCEPT_MOUSE_EVENT_TRACKING | (BN_CLICKED << 16):
310 EnableDlgItem(IDC_DISABLE_MOUSE_TRACKING_CTRL,
311 GetCheck(IDC_ACCEPT_MOUSE_EVENT_TRACKING) ? TRUE : FALSE);
312 return TRUE;
313 }
314 return TTCPropertyPage::OnCommand(wParam, lParam);
315 }
316
317 void CSequencePropPageDlg::OnOK()
318 {
319 // (1)IDC_ACCEPT_MOUSE_EVENT_TRACKING
320 ts.MouseEventTracking = GetCheck(IDC_ACCEPT_MOUSE_EVENT_TRACKING);
321
322 // (2)IDC_DISABLE_MOUSE_TRACKING_CTRL
323 ts.DisableMouseTrackingByCtrl = GetCheck(IDC_DISABLE_MOUSE_TRACKING_CTRL);
324
325 // (3)IDC_ACCEPT_TITLE_CHANGING
326 int sel = GetCurSel(IDC_ACCEPT_TITLE_CHANGING);
327 if (0 <= sel && sel <= IdTitleChangeRequestMax) {
328 ts.AcceptTitleChangeRequest = sel;
329 }
330
331 // (4)IDC_TITLE_REPORT
332 switch (GetCurSel(IDC_TITLE_REPORT)) {
333 case 0:
334 ts.WindowFlag &= ~WF_TITLEREPORT;
335 break;
336 case 1:
337 ts.WindowFlag &= ~WF_TITLEREPORT;
338 ts.WindowFlag |= IdTitleReportAccept;
339 break;
340 case 2:
341 ts.WindowFlag |= IdTitleReportEmpty;
342 break;
343 default: // Invalid value.
344 break;
345 }
346
347 // (5)IDC_WINDOW_CTRL
348 if (((ts.WindowFlag & WF_WINDOWCHANGE) != 0) != GetCheck(IDC_WINDOW_CTRL)) {
349 ts.WindowFlag ^= WF_WINDOWCHANGE;
350 }
351
352 // (6)IDC_WINDOW_REPORT
353 if (((ts.WindowFlag & WF_WINDOWREPORT) != 0) != GetCheck(IDC_WINDOW_REPORT)) {
354 ts.WindowFlag ^= WF_WINDOWREPORT;
355 }
356
357 // (7)IDC_CURSOR_CTRL_SEQ
358 if (((ts.WindowFlag & WF_CURSORCHANGE) != 0) != GetCheck(IDC_CURSOR_CTRL_SEQ)) {
359 ts.WindowFlag ^= WF_CURSORCHANGE;
360 }
361
362 // (8)IDC_CLIPBOARD_ACCESS
363 switch (GetCurSel(IDC_CLIPBOARD_ACCESS)) {
364 case 0: // off
365 ts.CtrlFlag &= ~CSF_CBRW;
366 break;
367 case 1: // write only
368 ts.CtrlFlag &= ~CSF_CBRW;
369 ts.CtrlFlag |= CSF_CBWRITE;
370 break;
371 case 2: // read only
372 ts.CtrlFlag &= ~CSF_CBRW;
373 ts.CtrlFlag |= CSF_CBREAD;
374 break;
375 case 3: // read/write
376 ts.CtrlFlag |= CSF_CBRW;
377 break;
378 default: // Invalid value.
379 break;
380 }
381
382 // (9)IDC_CLIPBOARD_ACCESS
383 ts.NotifyClipboardAccess = GetCheck(IDC_CLIPBOARD_NOTIFY);
384 }
385
386
387 // CCopypastePropPageDlg �_�C�A���O
388
389 CCopypastePropPageDlg::CCopypastePropPageDlg(HINSTANCE inst, TTCPropertySheet *sheet)
390 : TTCPropertyPage(inst, CCopypastePropPageDlg::IDD, sheet)
391 {
392 TCHAR UIMsg[MAX_UIMSG];
393 get_lang_msgT("DLG_TABSHEET_TITLE_COPYPASTE", UIMsg, _countof(UIMsg),
394 _T("Copy and Paste"), ts.UILanguageFile);
395 m_psp.pszTitle = _tcsdup(UIMsg);
396 m_psp.dwFlags |= PSP_USETITLE;
397 }
398
399 CCopypastePropPageDlg::~CCopypastePropPageDlg()
400 {
401 free((void *)m_psp.pszTitle);
402 }
403
404 // CCopypastePropPageDlg ���b�Z�[�W �n���h��
405
406 void CCopypastePropPageDlg::OnInitDialog()
407 {
408 TTCPropertyPage::OnInitDialog();
409
410 static const DlgTextInfo TextInfos[] = {
411 { IDC_LINECOPY, "DLG_TAB_COPYPASTE_CONTINUE" },
412 { IDC_DISABLE_PASTE_RBUTTON, "DLG_TAB_COPYPASTE_MOUSEPASTE" },
413 { IDC_CONFIRM_PASTE_RBUTTON, "DLG_TAB_COPYPASTE_CONFIRMPASTE" },
414 { IDC_DISABLE_PASTE_MBUTTON, "DLG_TAB_COPYPASTE_MOUSEPASTEM" },
415 { IDC_SELECT_LBUTTON, "DLG_TAB_COPYPASTE_SELECTLBUTTON" },
416 { IDC_TRIMNLCHAR, "DLG_TAB_COPYPASTE_TRIM_TRAILING_NL" },
417 { IDC_NORMALIZE_LINEBREAK, "DLG_TAB_COPYPASTE_NORMALIZE_LINEBREAK" },
418 { IDC_CONFIRM_CHANGE_PASTE, "DLG_TAB_COPYPASTE_CONFIRM_CHANGE_PASTE" },
419 { IDC_CONFIRM_STRING_FILE_LABEL, "DLG_TAB_COPYPASTE_STRINGFILE" },
420 { IDC_DELIMITER, "DLG_TAB_COPYPASTE_DELIMITER" },
421 { IDC_PASTEDELAY_LABEL, "DLG_TAB_COPYPASTE_PASTEDELAY" },
422 { IDC_PASTEDELAY_LABEL2, "DLG_TAB_COPYPASTE_PASTEDELAY2" }
423 };
424 SetDlgTexts(m_hWnd, TextInfos, _countof(TextInfos), ts.UILanguageFile);
425
426 // (1)Enable continued-line copy
427 SetCheck(IDC_LINECOPY, ts.EnableContinuedLineCopy);
428
429 // (2)DisablePasteMouseRButton
430 if (ts.PasteFlag & CPF_DISABLE_RBUTTON) {
431 SetCheck(IDC_DISABLE_PASTE_RBUTTON, BST_CHECKED);
432 EnableDlgItem(IDC_CONFIRM_PASTE_RBUTTON, FALSE);
433 } else {
434 SetCheck(IDC_DISABLE_PASTE_RBUTTON, BST_UNCHECKED);
435 EnableDlgItem(IDC_CONFIRM_PASTE_RBUTTON, TRUE);
436 }
437
438 // (3)ConfirmPasteMouseRButton
439 SetCheck(IDC_CONFIRM_PASTE_RBUTTON, (ts.PasteFlag & CPF_CONFIRM_RBUTTON)?BST_CHECKED:BST_UNCHECKED);
440
441 // (4)DisablePasteMouseMButton
442 SetCheck(IDC_DISABLE_PASTE_MBUTTON, (ts.PasteFlag & CPF_DISABLE_MBUTTON)?BST_CHECKED:BST_UNCHECKED);
443
444 // (5)SelectOnlyByLButton
445 SetCheck(IDC_SELECT_LBUTTON, ts.SelectOnlyByLButton);
446
447 // (6)TrimTrailingNLonPaste
448 SetCheck(IDC_TRIMNLCHAR, (ts.PasteFlag & CPF_TRIM_TRAILING_NL)?BST_CHECKED:BST_UNCHECKED);
449
450 // (7)NormalizeLineBreak
451 SetCheck(IDC_NORMALIZE_LINEBREAK, (ts.PasteFlag & CPF_NORMALIZE_LINEBREAK)?BST_CHECKED:BST_UNCHECKED);
452
453 // (8)ConfirmChangePaste
454 SetCheck(IDC_CONFIRM_CHANGE_PASTE, (ts.PasteFlag & CPF_CONFIRM_CHANGEPASTE)?BST_CHECKED:BST_UNCHECKED);
455
456 // �t�@�C���p�X
457 SetDlgItemTextA(IDC_CONFIRM_STRING_FILE, ts.ConfirmChangePasteStringFile);
458 if (ts.PasteFlag & CPF_CONFIRM_CHANGEPASTE) {
459 EnableDlgItem(IDC_CONFIRM_STRING_FILE, TRUE);
460 EnableDlgItem(IDC_CONFIRM_STRING_FILE_PATH, TRUE);
461 } else {
462 EnableDlgItem(IDC_CONFIRM_STRING_FILE, FALSE);
463 EnableDlgItem(IDC_CONFIRM_STRING_FILE_PATH, FALSE);
464 }
465
466 // (9)delimiter characters
467 SetDlgItemTextA(IDC_DELIM_LIST, ts.DelimList);
468
469 // (10)PasteDelayPerLine
470 char buf[64];
471 _snprintf_s(buf, sizeof(buf), "%d", ts.PasteDelayPerLine);
472 SetDlgItemNum(IDC_PASTEDELAY_EDIT, ts.PasteDelayPerLine);
473
474 // �_�C�A���O���t�H�[�J�X��������
475 ::SetFocus(::GetDlgItem(GetSafeHwnd(), IDC_LINECOPY));
476 }
477
478 BOOL CCopypastePropPageDlg::OnCommand(WPARAM wParam, LPARAM lParam)
479 {
480 char uimsg[MAX_UIMSG];
481
482 switch (wParam) {
483 case IDC_DISABLE_PASTE_RBUTTON | (BN_CLICKED << 16):
484 EnableDlgItem(IDC_CONFIRM_PASTE_RBUTTON,
485 GetCheck(IDC_DISABLE_PASTE_RBUTTON) ? FALSE : TRUE);
486 return TRUE;
487
488 case IDC_CONFIRM_CHANGE_PASTE | (BN_CLICKED << 16):
489 if (GetCheck(IDC_CONFIRM_CHANGE_PASTE)) {
490 EnableDlgItem(IDC_CONFIRM_STRING_FILE, TRUE);
491 EnableDlgItem(IDC_CONFIRM_STRING_FILE_PATH, TRUE);
492 } else {
493 EnableDlgItem(IDC_CONFIRM_STRING_FILE, FALSE);
494 EnableDlgItem(IDC_CONFIRM_STRING_FILE_PATH, FALSE);
495 }
496 return TRUE;
497
498 case IDC_CONFIRM_STRING_FILE_PATH | (BN_CLICKED << 16):
499 {
500 OPENFILENAMEA ofn;
501
502 memset(&ofn, 0, sizeof(ofn));
503 ofn.lStructSize = get_OPENFILENAME_SIZEA();
504 ofn.hwndOwner = GetSafeHwnd();
505 get_lang_msg("FILEDLG_SELECT_CONFIRM_STRING_APP_FILTER", ts.UIMsg, sizeof(ts.UIMsg),
506 "txt(*.txt)\\0*.txt\\0all(*.*)\\0*.*\\0\\0", ts.UILanguageFile);
507 ofn.lpstrFilter = ts.UIMsg;
508 ofn.lpstrFile = ts.ConfirmChangePasteStringFile;
509 ofn.nMaxFile = sizeof(ts.ConfirmChangePasteStringFile);
510 get_lang_msg("FILEDLG_SELECT_CONFIRM_STRING_APP_TITLE", uimsg, sizeof(uimsg),
511 "Choose a file including strings for ConfirmChangePaste", ts.UILanguageFile);
512 ofn.lpstrTitle = uimsg;
513 ofn.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_FORCESHOWHIDDEN | OFN_HIDEREADONLY;
514 if (GetOpenFileNameA(&ofn) != 0) {
515 SetDlgItemTextA(IDC_CONFIRM_STRING_FILE, ts.ConfirmChangePasteStringFile);
516 }
517 }
518 return TRUE;
519 }
520
521 return TTCPropertyPage::OnCommand(wParam, lParam);
522 }
523
524 void CCopypastePropPageDlg::OnOK()
525 {
526 char buf[64];
527 int val;
528
529 // (1)
530 ts.EnableContinuedLineCopy = GetCheck(IDC_LINECOPY);
531
532 // (2)
533 if (GetCheck(IDC_DISABLE_PASTE_RBUTTON)) {
534 ts.PasteFlag |= CPF_DISABLE_RBUTTON;
535 }
536 else {
537 ts.PasteFlag &= ~CPF_DISABLE_RBUTTON;
538 }
539
540 // (3)
541 if (GetCheck(IDC_CONFIRM_PASTE_RBUTTON)) {
542 ts.PasteFlag |= CPF_CONFIRM_RBUTTON;
543 }
544 else {
545 ts.PasteFlag &= ~CPF_CONFIRM_RBUTTON;
546 }
547
548 // (4)
549 if (GetCheck(IDC_DISABLE_PASTE_MBUTTON)) {
550 ts.PasteFlag |= CPF_DISABLE_MBUTTON;
551 }
552 else {
553 ts.PasteFlag &= ~CPF_DISABLE_MBUTTON;
554 }
555
556 // (5)
557 ts.SelectOnlyByLButton = GetCheck(IDC_SELECT_LBUTTON);
558
559 // (6)
560 if (GetCheck(IDC_TRIMNLCHAR)) {
561 ts.PasteFlag |= CPF_TRIM_TRAILING_NL;
562 }
563 else {
564 ts.PasteFlag &= ~CPF_TRIM_TRAILING_NL;
565 }
566
567 // (7)
568 if (GetCheck(IDC_NORMALIZE_LINEBREAK)) {
569 ts.PasteFlag |= CPF_NORMALIZE_LINEBREAK;
570 }
571 else {
572 ts.PasteFlag &= ~CPF_NORMALIZE_LINEBREAK;
573 }
574
575 // (8)IDC_CONFIRM_CHANGE_PASTE
576 if (GetCheck(IDC_CONFIRM_CHANGE_PASTE)) {
577 ts.PasteFlag |= CPF_CONFIRM_CHANGEPASTE;
578 }
579 else {
580 ts.PasteFlag &= ~CPF_CONFIRM_CHANGEPASTE;
581 }
582 GetDlgItemTextA(IDC_CONFIRM_STRING_FILE, ts.ConfirmChangePasteStringFile, sizeof(ts.ConfirmChangePasteStringFile));
583
584 // (9)
585 GetDlgItemTextA(IDC_DELIM_LIST, ts.DelimList, sizeof(ts.DelimList));
586
587 // (10)
588 GetDlgItemTextA(IDC_PASTEDELAY_EDIT, buf, sizeof(buf));
589 val = atoi(buf);
590 ts.PasteDelayPerLine =
591 (val < 0) ? 0 :
592 (val > 5000) ? 5000 : val;
593 }
594
595
596 // CVisualPropPageDlg �_�C�A���O
597
598 CVisualPropPageDlg::CVisualPropPageDlg(HINSTANCE inst, TTCPropertySheet *sheet)
599 : TTCPropertyPage(inst, CVisualPropPageDlg::IDD, sheet)
600 {
601 TCHAR UIMsg[MAX_UIMSG];
602 get_lang_msgT("DLG_TABSHEET_TITLE_VISUAL", UIMsg, _countof(UIMsg),
603 _T("Visual"), ts.UILanguageFile);
604 m_psp.pszTitle = _tcsdup(UIMsg);
605 m_psp.dwFlags |= PSP_USETITLE;
606 }
607
608 CVisualPropPageDlg::~CVisualPropPageDlg()
609 {
610 free((void *)m_psp.pszTitle);
611 }
612
613 // CVisualPropPageDlg ���b�Z�[�W �n���h��
614
615 void CVisualPropPageDlg::OnInitDialog()
616 {
617 char buf[MAXPATHLEN];
618
619 TTCPropertyPage::OnInitDialog();
620
621 static const DlgTextInfo TextInfos[] = {
622 { IDC_ALPHABLEND, "DLG_TAB_VISUAL_ALPHA" },
623 { IDC_ALPHA_BLEND_ACTIVE_LABEL, "DLG_TAB_VISUAL_ALPHA_ACTIVE_LABEL" },
624 { IDC_ALPHA_BLEND_INACTIVE_LABEL, "DLG_TAB_VISUAL_ALPHA_INACTIVE_LABEL" },
625 { IDC_ETERM_LOOKFEEL, "DLG_TAB_VISUAL_ETERM" },
626 { IDC_BGIMG_CHECK, "DLG_TAB_VISUAL_BGIMG" },
627 { IDC_BGIMG_BRIGHTNESS, "DLG_TAB_VISUAL_BGIMG_BRIGHTNESS" },
628 { IDC_MOUSE, "DLG_TAB_VISUAL_MOUSE" },
629 { IDC_FONT_QUALITY_LABEL, "DLG_TAB_VISUAL_FONT_QUALITY" },
630 { IDC_ANSICOLOR, "DLG_TAB_VISUAL_ANSICOLOR" },
631 { IDC_RED, "DLG_TAB_VISUAL_RED" },
632 { IDC_GREEN, "DLG_TAB_VISUAL_GREEN" },
633 { IDC_BLUE, "DLG_TAB_VISUAL_BLUE" },
634 { IDC_ENABLE_ATTR_COLOR_BOLD, "DLG_TAB_VISUAL_BOLD" },
635 { IDC_ENABLE_ATTR_COLOR_BLINK, "DLG_TAB_VISUAL_BLINK" },
636 { IDC_ENABLE_ATTR_COLOR_REVERSE, "DLG_TAB_VISUAL_REVERSE" },
637 { IDC_ENABLE_URL_COLOR, "DLG_TAB_VISUAL_URL" },
638 { IDC_ENABLE_ANSI_COLOR, "DLG_TAB_VISUAL_ANSI" },
639 { IDC_URL_UNDERLINE, "DLG_TAB_VISUAL_URLUL" },
640 { IDC_RESTART, "DLG_TAB_VISUAL_RESTART" },
641 };
642 SetDlgTexts(m_hWnd, TextInfos, _countof(TextInfos), ts.UILanguageFile);
643
644 TCHAR uimsg[MAX_UIMSG];
645 get_lang_msgT("DLG_TAB_VISUAL_FONT_QUALITY_DEFAULT",
646 uimsg, _countof(uimsg), _T("Default"), ts.UILanguageFile);
647 SendDlgItemMessage(IDC_FONT_QUALITY, CB_ADDSTRING, 0, (LPARAM)uimsg);
648 get_lang_msgT("DLG_TAB_VISUAL_FONT_QUALITY_NONANTIALIASED",
649 uimsg, _countof(uimsg), _T("Non-Antialiased"), ts.UILanguageFile);
650 SendDlgItemMessage(IDC_FONT_QUALITY, CB_ADDSTRING, 0, (LPARAM)uimsg);
651 get_lang_msgT("DLG_TAB_VISUAL_FONT_QUALITY_ANTIALIASED",
652 uimsg, _countof(uimsg), _T("Antialiased"), ts.UILanguageFile);
653 SendDlgItemMessage(IDC_FONT_QUALITY, CB_ADDSTRING, 0, (LPARAM)uimsg);
654 get_lang_msgT("DLG_TAB_VISUAL_FONT_QUALITY_CLEARTYPE",
655 uimsg, _countof(uimsg), _T("ClearType"), ts.UILanguageFile);
656 SendDlgItemMessage(IDC_FONT_QUALITY, CB_ADDSTRING, 0, (LPARAM)uimsg);
657
658 // (1)AlphaBlend
659
660 SetDlgItemNum(IDC_ALPHA_BLEND_ACTIVE, ts.AlphaBlendActive);
661
662 SetDlgItemNum(IDC_ALPHA_BLEND_INACTIVE, ts.AlphaBlendInactive);
663
664 // (2)[BG] BGEnable
665 SetCheck(IDC_ETERM_LOOKFEEL, ts.EtermLookfeel.BGEnable);
666
667 // Eterm look-feel���w�i�����w���B
668 SetDlgItemTextA(IDC_BGIMG_EDIT, ts.BGImageFilePath);
669
670 _snprintf_s(buf, sizeof(buf), _TRUNCATE, "%d", ts.BGImgBrightness);
671 SetDlgItemNum(IDC_EDIT_BGIMG_BRIGHTNESS, ts.BGImgBrightness);
672
673 if (ts.EtermLookfeel.BGEnable) {
674 EnableDlgItem(IDC_BGIMG_CHECK, TRUE);
675
676 if (strcmp(ts.EtermLookfeel.BGThemeFile, BG_THEME_IMAGEFILE) == 0) {
677 SetCheck(IDC_BGIMG_CHECK, BST_CHECKED);
678 EnableDlgItem(IDC_BGIMG_EDIT, TRUE);
679 EnableDlgItem(IDC_BGIMG_BUTTON, TRUE);
680
681 EnableDlgItem(IDC_BGIMG_BRIGHTNESS, TRUE);
682 EnableDlgItem(IDC_EDIT_BGIMG_BRIGHTNESS, TRUE);
683 } else {
684 SetCheck(IDC_BGIMG_CHECK, BST_UNCHECKED);
685 EnableDlgItem(IDC_BGIMG_EDIT, FALSE);
686 EnableDlgItem(IDC_BGIMG_BUTTON, FALSE);
687
688 EnableDlgItem(IDC_BGIMG_BRIGHTNESS, FALSE);
689 EnableDlgItem(IDC_EDIT_BGIMG_BRIGHTNESS, FALSE);
690 }
691 } else {
692 EnableDlgItem(IDC_BGIMG_CHECK, FALSE);
693 EnableDlgItem(IDC_BGIMG_EDIT, FALSE);
694 EnableDlgItem(IDC_BGIMG_BUTTON, FALSE);
695
696 EnableDlgItem(IDC_BGIMG_BRIGHTNESS, FALSE);
697 EnableDlgItem(IDC_EDIT_BGIMG_BRIGHTNESS, FALSE);
698 }
699
700 // (3)Mouse cursor type
701 int sel = 0;
702 for (int i = 0 ; MouseCursor[i].name ; i++) {
703 const char *name = MouseCursor[i].name;
704 SendDlgItemMessageA(IDC_MOUSE_CURSOR, CB_ADDSTRING, i, (LPARAM)name);
705 if (strcmp(name, ts.MouseCursorName) == 0) {
706 sel = i;
707 }
708 }
709 SetCurSel(IDC_MOUSE_CURSOR, sel);
710
711 // (4)Font quality
712 switch (ts.FontQuality) {
713 case DEFAULT_QUALITY:
714 SetCurSel(IDC_FONT_QUALITY, 0);
715 break;
716 case NONANTIALIASED_QUALITY:
717 SetCurSel(IDC_FONT_QUALITY, 1);
718 break;
719 case ANTIALIASED_QUALITY:
720 SetCurSel(IDC_FONT_QUALITY, 2);
721 break;
722 default: // CLEARTYPE_QUALITY
723 SetCurSel(IDC_FONT_QUALITY, 3);
724 break;
725 }
726
727 // (5)ANSI color
728 for (int i = 0 ; i < 16 ; i++) {
729 _snprintf_s(buf, sizeof(buf), _TRUNCATE, "%d", i);
730 SendDlgItemMessageA(IDC_ANSI_COLOR, LB_INSERTSTRING, i, (LPARAM)buf);
731 }
732 SetupRGBbox(0);
733 SendDlgItemMessage(IDC_ANSI_COLOR, LB_SETCURSEL, 0, 0);
734 ::InvalidateRect(GetDlgItem(IDC_SAMPLE_COLOR), NULL, TRUE);
735
736 // (6)Bold Attr Color
737 SetCheck(IDC_ENABLE_ATTR_COLOR_BOLD, (ts.ColorFlag&CF_BOLDCOLOR) != 0);
738
739 // (7)Blink Attr Color
740 SetCheck(IDC_ENABLE_ATTR_COLOR_BLINK, (ts.ColorFlag&CF_BLINKCOLOR) != 0);
741
742 // (8)Reverse Attr Color
743 SetCheck(IDC_ENABLE_ATTR_COLOR_REVERSE, (ts.ColorFlag&CF_REVERSECOLOR) != 0);
744
745 // (9)URL Color
746 SetCheck(IDC_ENABLE_URL_COLOR, (ts.ColorFlag&CF_URLCOLOR) != 0);
747
748 // (10)Color
749 SetCheck(IDC_ENABLE_ANSI_COLOR, (ts.ColorFlag&CF_ANSICOLOR) != 0);
750
751 // (11)URL Underline
752 SetCheck(IDC_URL_UNDERLINE, (ts.FontFlag&FF_URLUNDERLINE) != 0);
753
754 // �_�C�A���O���t�H�[�J�X��������
755 ::SetFocus(GetDlgItem(IDC_ALPHA_BLEND_ACTIVE));
756 }
757
758 BOOL CVisualPropPageDlg::OnCommand(WPARAM wParam, LPARAM lParam)
759 {
760 int sel;
761
762 switch (wParam) {
763 case IDC_ETERM_LOOKFEEL:
764 // �`�F�b�N�������� Enable/Disable ���g�O�������B
765 if (GetCheck(IDC_ETERM_LOOKFEEL)) {
766 EnableDlgItem(IDC_BGIMG_CHECK, TRUE);
767 if (GetCheck(IDC_BGIMG_CHECK)) {
768 EnableDlgItem(IDC_BGIMG_EDIT, TRUE);
769 EnableDlgItem(IDC_BGIMG_BUTTON, TRUE);
770
771 EnableDlgItem(IDC_BGIMG_BRIGHTNESS, TRUE);
772 EnableDlgItem(IDC_EDIT_BGIMG_BRIGHTNESS, TRUE);
773 } else {
774 EnableDlgItem(IDC_BGIMG_EDIT, FALSE);
775 EnableDlgItem(IDC_BGIMG_BUTTON, FALSE);
776
777 EnableDlgItem(IDC_BGIMG_BRIGHTNESS, FALSE);
778 EnableDlgItem(IDC_EDIT_BGIMG_BRIGHTNESS, FALSE);
779 }
780 } else {
781 EnableDlgItem(IDC_BGIMG_CHECK, FALSE);
782 EnableDlgItem(IDC_BGIMG_EDIT, FALSE);
783 EnableDlgItem(IDC_BGIMG_BUTTON, FALSE);
784
785 EnableDlgItem(IDC_BGIMG_BRIGHTNESS, FALSE);
786 EnableDlgItem(IDC_EDIT_BGIMG_BRIGHTNESS, FALSE);
787
788 // ���������������ABGThemeFile �����������B
789 strncpy_s(ts.EtermLookfeel.BGThemeFile, BG_THEME_IMAGEFILE_DEFAULT, sizeof(ts.EtermLookfeel.BGThemeFile));
790 // �w�i�����������������B
791 SetDlgItemTextT(IDC_BGIMG_EDIT, _T(""));
792 SetDlgItemInt(IDC_EDIT_BGIMG_BRIGHTNESS, BG_THEME_IMAGE_BRIGHTNESS_DEFAULT);
793 }
794 return TRUE;
795
796 case IDC_BGIMG_CHECK:
797 if (GetCheck(IDC_BGIMG_CHECK)) {
798 EnableDlgItem(IDC_BGIMG_EDIT, TRUE);
799 EnableDlgItem(IDC_BGIMG_BUTTON, TRUE);
800
801 EnableDlgItem(IDC_BGIMG_BRIGHTNESS, TRUE);
802 EnableDlgItem(IDC_EDIT_BGIMG_BRIGHTNESS, TRUE);
803
804 strncpy_s(ts.EtermLookfeel.BGThemeFile, BG_THEME_IMAGEFILE, sizeof(ts.EtermLookfeel.BGThemeFile));
805 } else {
806 EnableDlgItem(IDC_BGIMG_EDIT, FALSE);
807 EnableDlgItem(IDC_BGIMG_BUTTON, FALSE);
808
809 EnableDlgItem(IDC_BGIMG_BRIGHTNESS, FALSE);
810 EnableDlgItem(IDC_EDIT_BGIMG_BRIGHTNESS, FALSE);
811
812 // ���������������ABGThemeFile �����������B
813 strncpy_s(ts.EtermLookfeel.BGThemeFile, BG_THEME_IMAGEFILE_DEFAULT, sizeof(ts.EtermLookfeel.BGThemeFile));
814 // �w�i�����������������B
815 SetDlgItemTextT(IDC_BGIMG_EDIT, _T(""));
816 SetDlgItemInt(IDC_EDIT_BGIMG_BRIGHTNESS, BG_THEME_IMAGE_BRIGHTNESS_DEFAULT);
817 }
818 return TRUE;
819
820 case IDC_BGIMG_BUTTON | (BN_CLICKED << 16):
821 // �w�i�������_�C�A���O���w�������B
822 {
823 OPENFILENAMEA ofn;
824 char szFile[MAX_PATH];
825
826 memset(&ofn, 0, sizeof(ofn));
827 memset(szFile, 0, sizeof(szFile));
828 ofn.lStructSize = get_OPENFILENAME_SIZEA();
829 ofn.hwndOwner = GetSafeHwnd();
830 ofn.lpstrFilter = "Image Files(*.jpg;*.jpeg;*.bmp)\\0*.jpg;*.jpeg;*.bmp\\0All Files(*.*)\\0*.*\\0\\0";
831 ofn.lpstrFile = szFile;
832 ofn.nMaxFile = _countof(szFile);
833 ofn.lpstrTitle = "select image file";
834 ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
835 if (GetOpenFileNameA(&ofn) != 0) {
836 SetDlgItemTextA(IDC_BGIMG_EDIT, szFile);
837 }
838 }
839 return TRUE;
840
841 case IDC_ANSI_COLOR | (LBN_SELCHANGE << 16):
842 sel = SendDlgItemMessage(IDC_ANSI_COLOR, LB_GETCURSEL, 0, 0);
843 if (sel != -1) {
844 SetupRGBbox(sel);
845 ::InvalidateRect(GetDlgItem(IDC_SAMPLE_COLOR), NULL, TRUE);
846 }
847 return TRUE;
848
849 case IDC_COLOR_RED | (EN_KILLFOCUS << 16):
850 case IDC_COLOR_GREEN | (EN_KILLFOCUS << 16):
851 case IDC_COLOR_BLUE | (EN_KILLFOCUS << 16):
852 {
853 BYTE r, g, b;
854 char buf[8];
855
856 sel = GetCurSel(IDC_ANSI_COLOR);
857 if (sel < 0 && sel > sizeof(ts.ANSIColor)-1) {
858 return TRUE;
859 }
860
861 GetDlgItemTextA(IDC_COLOR_RED, buf, sizeof(buf));
862 r = atoi(buf);
863
864 GetDlgItemTextA(IDC_COLOR_GREEN, buf, sizeof(buf));
865 g = atoi(buf);
866
867 GetDlgItemTextA(IDC_COLOR_BLUE, buf, sizeof(buf));
868 b = atoi(buf);
869
870 ts.ANSIColor[sel] = RGB(r, g, b);
871
872 // 255��������RGB�l�����������������A������Edit���\������ (2007.2.18 maya)
873 SetupRGBbox(sel);
874
875 ::InvalidateRect(GetDlgItem(IDC_SAMPLE_COLOR), NULL, TRUE);
876 }
877
878 return TRUE;
879 }
880
881 return TTCPropertyPage::OnCommand(wParam, lParam);
882 }
883
884 HBRUSH CVisualPropPageDlg::OnCtlColor(HDC hDC, HWND hWnd)
885 {
886 if ( hWnd == GetDlgItem(IDC_SAMPLE_COLOR) ) {
887 BYTE r, g, b;
888 char buf[8];
889
890 GetDlgItemTextA(IDC_COLOR_RED, buf, sizeof(buf));
891 r = atoi(buf);
892
893 GetDlgItemTextA(IDC_COLOR_GREEN, buf, sizeof(buf));
894 g = atoi(buf);
895
896 GetDlgItemTextA(IDC_COLOR_BLUE, buf, sizeof(buf));
897 b = atoi(buf);
898
899 SetBkMode(hDC, TRANSPARENT);
900 SetTextColor(hDC, RGB(r, g, b) );
901
902 return (HBRUSH)GetStockObject(NULL_BRUSH);
903 }
904 return TTCPropertyPage::OnCtlColor(hDC, hWnd);
905 }
906
907 void CVisualPropPageDlg::OnOK()
908 {
909 int sel;
910 char buf[MAXPATHLEN];
911 COLORREF TmpColor;
912 int flag_changed = 0;
913
914 // (1)
915 GetDlgItemTextA(IDC_ALPHA_BLEND_ACTIVE, buf, sizeof(buf));
916 if (isdigit(buf[0])) {
917 int i = atoi(buf);
918 ts.AlphaBlendActive =
919 (i < 0) ? 0 :
920 (i > 255) ? 255 : i;
921 }
922 GetDlgItemTextA(IDC_ALPHA_BLEND_INACTIVE, buf, sizeof(buf));
923 if (isdigit(buf[0])) {
924 int i = atoi(buf);
925 ts.AlphaBlendInactive =
926 (i < 0) ? 0 :
927 (i > 255) ? 255 : i;
928 }
929
930 // (2)
931 // �O���[�o������ BGEnable �������������������A�v���O������������������
932 // ���������R�s�[���C�����������������B(2005.4.24 yutaka)
933 if (ts.EtermLookfeel.BGEnable != GetCheck(IDC_ETERM_LOOKFEEL)) {
934 flag_changed = 1;
935 ts.EtermLookfeel.BGEnable = GetCheck(IDC_ETERM_LOOKFEEL);
936 }
937 if (ts.EtermLookfeel.BGEnable) {
938 GetDlgItemTextA(IDC_BGIMG_EDIT, ts.BGImageFilePath, sizeof(ts.BGImageFilePath));
939 } else {
940 strncpy_s(ts.BGImageFilePath, sizeof(ts.BGImageFilePath), "%SystemRoot%\\Web\\Wallpaper\\*.bmp", _TRUNCATE);
941 }
942
943 GetDlgItemTextA(IDC_EDIT_BGIMG_BRIGHTNESS, buf, sizeof(buf));
944 if (isdigit(buf[0])) {
945 int i = atoi(buf);
946 ts.BGImgBrightness =
947 (i < 0) ? 0 :
948 (i > 255) ? 255 : i;
949 }
950
951 // (3)
952 sel = GetCurSel(IDC_MOUSE_CURSOR);
953 if (sel >= 0 && sel < MOUSE_CURSOR_MAX) {
954 strncpy_s(ts.MouseCursorName, sizeof(ts.MouseCursorName), MouseCursor[sel].name, _TRUNCATE);
955 }
956
957 // (4)Font quality
958 switch (GetCurSel(IDC_FONT_QUALITY)) {
959 case 0:
960 ts.FontQuality = DEFAULT_QUALITY;
961 break;
962 case 1:
963 ts.FontQuality = NONANTIALIASED_QUALITY;
964 break;
965 case 2:
966 ts.FontQuality = ANTIALIASED_QUALITY;
967 break;
968 case 3:
969 ts.FontQuality = CLEARTYPE_QUALITY;
970 break;
971 default: // Invalid value.
972 break;
973 }
974
975 // (6) Attr Bold Color
976 if (((ts.ColorFlag & CF_BOLDCOLOR) != 0) != GetCheck(IDC_ENABLE_ATTR_COLOR_BOLD)) {
977 ts.ColorFlag ^= CF_BOLDCOLOR;
978 }
979
980 // (7) Attr Blink Color
981 if (((ts.ColorFlag & CF_BLINKCOLOR) != 0) != GetCheck(IDC_ENABLE_ATTR_COLOR_BLINK)) {
982 ts.ColorFlag ^= CF_BLINKCOLOR;
983 }
984
985 // (8) Attr Reverse Color
986 if (ts.ColorFlag & CF_REVERSEVIDEO) { // Reverse Video���[�h(DECSCNM)����������������
987 if (ts.ColorFlag & CF_REVERSECOLOR) {
988 if (!GetCheck(IDC_ENABLE_ATTR_COLOR_REVERSE)) {
989 TmpColor = ts.VTColor[0];
990 ts.VTColor[0] = ts.VTReverseColor[1];
991 ts.VTReverseColor[1] = ts.VTColor[1];
992 ts.VTColor[1] = ts.VTReverseColor[0];
993 ts.VTReverseColor[0] = TmpColor;
994 ts.ColorFlag ^= CF_REVERSECOLOR;
995 }
996 }
997 else if (GetCheck(IDC_ENABLE_ATTR_COLOR_REVERSE)) {
998 TmpColor = ts.VTColor[0];
999 ts.VTColor[0] = ts.VTReverseColor[0];
1000 ts.VTReverseColor[0] = ts.VTColor[1];
1001 ts.VTColor[1] = ts.VTReverseColor[1];
1002 ts.VTReverseColor[1] = TmpColor;
1003 ts.ColorFlag ^= CF_REVERSECOLOR;
1004 }
1005 }
1006 else if (((ts.ColorFlag & CF_REVERSECOLOR) != 0) != GetCheck(IDC_ENABLE_ATTR_COLOR_REVERSE)) {
1007 ts.ColorFlag ^= CF_REVERSECOLOR;
1008 }
1009
1010 // (9) URL Color
1011 if (((ts.ColorFlag & CF_URLCOLOR) != 0) != GetCheck(IDC_ENABLE_URL_COLOR)) {
1012 ts.ColorFlag ^= CF_URLCOLOR;
1013 }
1014
1015 // (10) Color
1016 if (((ts.ColorFlag & CF_ANSICOLOR) != 0) != GetCheck(IDC_ENABLE_ANSI_COLOR)) {
1017 ts.ColorFlag ^= CF_ANSICOLOR;
1018 }
1019
1020 // (11) URL Underline
1021 if (((ts.FontFlag & FF_URLUNDERLINE) != 0) != GetCheck(IDC_URL_UNDERLINE)) {
1022 ts.FontFlag ^= FF_URLUNDERLINE;
1023 }
1024
1025 if (flag_changed) {
1026 // re-launch
1027 // RestartTeraTerm(GetSafeHwnd(), &ts);
1028 }
1029 }
1030
1031
1032
1033 // CLogPropPageDlg �_�C�A���O
1034
1035 CLogPropPageDlg::CLogPropPageDlg(HINSTANCE inst, TTCPropertySheet *sheet)
1036 : TTCPropertyPage(inst, CLogPropPageDlg::IDD, sheet)
1037 {
1038 TCHAR UIMsg[MAX_UIMSG];
1039 get_lang_msgT("DLG_TABSHEET_TITLE_Log", UIMsg, _countof(UIMsg),
1040 _T("Log"), ts.UILanguageFile);
1041 m_psp.pszTitle = _tcsdup(UIMsg);
1042 m_psp.dwFlags |= PSP_USETITLE;
1043 }
1044
1045 CLogPropPageDlg::~CLogPropPageDlg()
1046 {
1047 free((void *)m_psp.pszTitle);
1048 }
1049
1050 // CLogPropPageDlg ���b�Z�[�W �n���h��
1051
1052 #define LOG_ROTATE_SIZETYPE_NUM 3
1053 static const char *LogRotateSizeType[] = {
1054 "Byte", "KB", "MB"
1055 };
1056
1057 static const char *GetLogRotateSizeType(int val)
1058 {
1059 if (val >= LOG_ROTATE_SIZETYPE_NUM)
1060 val = 0;
1061
1062 return LogRotateSizeType[val];
1063 }
1064
1065 void CLogPropPageDlg::OnInitDialog()
1066 {
1067 TTCPropertyPage::OnInitDialog();
1068
1069 static const DlgTextInfo TextInfos[] = {
1070 { IDC_VIEWLOG_LABEL, "DLG_TAB_LOG_EDITOR" },
1071 { IDC_DEFAULTNAME_LABEL, "DLG_TAB_LOG_FILENAME" },
1072 { IDC_DEFAULTPATH_LABEL, "DLG_TAB_LOG_FILEPATH" },
1073 { IDC_AUTOSTART, "DLG_TAB_LOG_AUTOSTART" },
1074 // Log rotate
1075 { IDC_LOG_ROTATE, "DLG_TAB_LOG_ROTATE" },
1076 { IDC_ROTATE_SIZE_TEXT, "DLG_TAB_LOG_ROTATE_SIZE_TEXT" },
1077 { IDC_ROTATE_STEP_TEXT, "DLG_TAB_LOG_ROTATESTEP" },
1078 // Log options
1079 // FIXME: ���b�Z�[�W�J�^���O�����������O�I�v�V���������������p�������A�A�N�Z�����[�^�L�[���d�������������������B
1080 { IDC_LOG_OPTION_GROUP, "DLG_FOPT" },
1081 { IDC_OPT_BINARY, "DLG_FOPT_BINARY" },
1082 { IDC_OPT_APPEND, "DLG_FOPT_APPEND" },
1083 { IDC_OPT_PLAINTEXT, "DLG_FOPT_PLAIN" },
1084 { IDC_OPT_HIDEDLG, "DLG_FOPT_HIDEDIALOG" },
1085 { IDC_OPT_INCBUF, "DLG_FOPT_ALLBUFFINFIRST" },
1086 { IDC_OPT_TIMESTAMP, "DLG_FOPT_TIMESTAMP" },
1087 };
1088 SetDlgTexts(m_hWnd, TextInfos, _countof(TextInfos), ts.UILanguageFile);
1089
1090 TCHAR UIMsg[MAX_UIMSG];
1091 get_lang_msgT("DLG_FOPT_TIMESTAMP_LOCAL", UIMsg, _countof(UIMsg), _T("Local Time"), ts.UILanguageFile);
1092 SendDlgItemMessage(IDC_OPT_TIMESTAMP_TYPE, CB_ADDSTRING, 0, (LPARAM)UIMsg);
1093 get_lang_msgT("DLG_FOPT_TIMESTAMP_UTC", UIMsg, _countof(UIMsg), _T("UTC"), ts.UILanguageFile);
1094 SendDlgItemMessage(IDC_OPT_TIMESTAMP_TYPE, CB_ADDSTRING, 0, (LPARAM)UIMsg);
1095 get_lang_msgT("DLG_FOPT_TIMESTAMP_ELAPSED_LOGGING", UIMsg, _countof(UIMsg), _T("Elapsed Time (Logging)"), ts.UILanguageFile);
1096 SendDlgItemMessage(IDC_OPT_TIMESTAMP_TYPE, CB_ADDSTRING, 0, (LPARAM)UIMsg);
1097 get_lang_msgT("DLG_FOPT_TIMESTAMP_ELAPSED_CONNECTION", UIMsg, _countof(UIMsg), _T("Elapsed Time (Connection)"), ts.UILanguageFile);
1098 SendDlgItemMessage(IDC_OPT_TIMESTAMP_TYPE, CB_ADDSTRING, 0, (LPARAM)UIMsg);
1099
1100
1101 // Viewlog Editor path (2005.1.29 yutaka)
1102 SetDlgItemTextA(IDC_VIEWLOG_EDITOR, ts.ViewlogEditor);
1103
1104 // Log Default File Name (2006.8.28 maya)
1105 SetDlgItemTextA(IDC_DEFAULTNAME_EDITOR, ts.LogDefaultName);
1106
1107 // Log Default File Path (2007.5.30 maya)
1108 SetDlgItemTextA(IDC_DEFAULTPATH_EDITOR, ts.LogDefaultPath);
1109
1110 /* Auto start logging (2007.5.31 maya) */
1111 SetCheck(IDC_AUTOSTART, ts.LogAutoStart);
1112
1113 // Log rotate
1114 SetCheck(IDC_LOG_ROTATE, ts.LogRotate != ROTATE_NONE);
1115
1116 for (int i = 0 ; i < LOG_ROTATE_SIZETYPE_NUM ; i++) {
1117 SendDlgItemMessageA(IDC_ROTATE_SIZE_TYPE, CB_ADDSTRING, 0, (LPARAM)LogRotateSizeType[i]);
1118 }
1119 int TmpLogRotateSize = ts.LogRotateSize;
1120 for (int i = 0 ; i < ts.LogRotateSizeType ; i++)
1121 TmpLogRotateSize /= 1024;
1122 SetDlgItemInt(IDC_ROTATE_SIZE, TmpLogRotateSize, FALSE);
1123 SendDlgItemMessageA(IDC_ROTATE_SIZE_TYPE, CB_SELECTSTRING, -1, (LPARAM)GetLogRotateSizeType(ts.LogRotateSizeType));
1124 SetDlgItemInt(IDC_ROTATE_STEP, ts.LogRotateStep, FALSE);
1125 if (ts.LogRotate == ROTATE_NONE) {
1126 EnableDlgItem(IDC_ROTATE_SIZE_TEXT, FALSE);
1127 EnableDlgItem(IDC_ROTATE_SIZE, FALSE);
1128 EnableDlgItem(IDC_ROTATE_SIZE_TYPE, FALSE);
1129 EnableDlgItem(IDC_ROTATE_STEP_TEXT, FALSE);
1130 EnableDlgItem(IDC_ROTATE_STEP, FALSE);
1131 } else {
1132 EnableDlgItem(IDC_ROTATE_SIZE_TEXT, TRUE);
1133 EnableDlgItem(IDC_ROTATE_SIZE, TRUE);
1134 EnableDlgItem(IDC_ROTATE_SIZE_TYPE, TRUE);
1135 EnableDlgItem(IDC_ROTATE_STEP_TEXT, TRUE);
1136 EnableDlgItem(IDC_ROTATE_STEP, TRUE);
1137 }
1138
1139 // Log options
1140 SetCheck(IDC_OPT_BINARY, ts.LogBinary != 0);
1141 if (ts.LogBinary) {
1142 EnableDlgItem(IDC_OPT_PLAINTEXT, FALSE);
1143 EnableDlgItem(IDC_OPT_TIMESTAMP, FALSE);
1144 } else {
1145 EnableDlgItem(IDC_OPT_PLAINTEXT, TRUE);
1146 EnableDlgItem(IDC_OPT_TIMESTAMP, TRUE);
1147 }
1148 SetCheck(IDC_OPT_APPEND, ts.Append != 0);
1149 SetCheck(IDC_OPT_PLAINTEXT, ts.LogTypePlainText != 0);
1150 SetCheck(IDC_OPT_HIDEDLG, ts.LogHideDialog != 0);
1151 SetCheck(IDC_OPT_INCBUF, ts.LogAllBuffIncludedInFirst != 0);
1152 SetCheck(IDC_OPT_TIMESTAMP, ts.LogTimestamp != 0);
1153
1154 SetCurSel(IDC_OPT_TIMESTAMP_TYPE, ts.LogTimestampType);
1155 if (ts.LogBinary || !ts.LogTimestamp) {
1156 EnableDlgItem(IDC_OPT_TIMESTAMP_TYPE, FALSE);
1157 }
1158 else {
1159 EnableDlgItem(IDC_OPT_TIMESTAMP_TYPE, TRUE);
1160 }
1161 /*
1162 switch (ts.LogTimestampType) {
1163 case CSF_CBRW:
1164 cmb->SetCurSel(3);
1165 break;
1166 case CSF_CBREAD:
1167 cmb->SetCurSel(2);
1168 break;
1169 case CSF_CBWRITE:
1170 cmb->SetCurSel(1);
1171 break;
1172 default: // off
1173 cmb->SetCurSel(0);
1174 break;
1175 }
1176 */
1177
1178 // �_�C�A���O���t�H�[�J�X��������
1179 ::SetFocus(::GetDlgItem(GetSafeHwnd(), IDC_VIEWLOG_EDITOR));
1180 }
1181
1182 BOOL CLogPropPageDlg::OnCommand(WPARAM wParam, LPARAM lParam)
1183 {
1184 char uimsg[MAX_UIMSG];
1185 char buf[MAX_PATH];
1186 char buf2[MAX_PATH];
1187
1188 switch (wParam) {
1189 case IDC_VIEWLOG_PATH | (BN_CLICKED << 16):
1190 {
1191 OPENFILENAMEA ofn;
1192
1193 ZeroMemory(&ofn, sizeof(ofn));
1194 ofn.lStructSize = get_OPENFILENAME_SIZEA();
1195 ofn.hwndOwner = GetSafeHwnd();
1196 get_lang_msg("FILEDLG_SELECT_LOGVIEW_APP_FILTER", ts.UIMsg, sizeof(ts.UIMsg),
1197 "exe(*.exe)\\0*.exe\\0all(*.*)\\0*.*\\0\\0", ts.UILanguageFile);
1198 ofn.lpstrFilter = ts.UIMsg;
1199 ofn.lpstrFile = ts.ViewlogEditor;
1200 ofn.nMaxFile = sizeof(ts.ViewlogEditor);
1201 get_lang_msg("FILEDLG_SELECT_LOGVIEW_APP_TITLE", uimsg, sizeof(uimsg),
1202 "Choose a executing file with launching logging file", ts.UILanguageFile);
1203 ofn.lpstrTitle = uimsg;
1204 ofn.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_FORCESHOWHIDDEN | OFN_HIDEREADONLY;
1205 if (GetOpenFileNameA(&ofn) != 0) {
1206 SetDlgItemTextA(IDC_VIEWLOG_EDITOR, ts.ViewlogEditor);
1207 }
1208 }
1209 return TRUE;
1210
1211 case IDC_DEFAULTPATH_PUSH | (BN_CLICKED << 16):
1212 // ���O�f�B���N�g�����I���_�C�A���O
1213 get_lang_msg("FILEDLG_SELECT_LOGDIR_TITLE", ts.UIMsg, sizeof(ts.UIMsg),
1214 "Select log folder", ts.UILanguageFile);
1215 GetDlgItemText(IDC_DEFAULTPATH_EDITOR, buf, sizeof(buf));
1216 if (doSelectFolder(GetSafeHwnd(), buf2, sizeof(buf2), buf, ts.UIMsg)) {
1217 SetDlgItemText(IDC_DEFAULTPATH_EDITOR, buf2);
1218 }
1219
1220 return TRUE;
1221
1222 case IDC_LOG_ROTATE | (BN_CLICKED << 16):
1223 {
1224 if (GetCheck(IDC_LOG_ROTATE)) {
1225 EnableDlgItem(IDC_ROTATE_SIZE_TEXT, TRUE);
1226 EnableDlgItem(IDC_ROTATE_SIZE, TRUE);
1227 EnableDlgItem(IDC_ROTATE_SIZE_TYPE, TRUE);
1228 EnableDlgItem(IDC_ROTATE_STEP_TEXT, TRUE);
1229 EnableDlgItem(IDC_ROTATE_STEP, TRUE);
1230 } else {
1231 EnableDlgItem(IDC_ROTATE_SIZE_TEXT, FALSE);
1232 EnableDlgItem(IDC_ROTATE_SIZE, FALSE);
1233 EnableDlgItem(IDC_ROTATE_SIZE_TYPE, FALSE);
1234 EnableDlgItem(IDC_ROTATE_STEP_TEXT, FALSE);
1235 EnableDlgItem(IDC_ROTATE_STEP, FALSE);
1236 }
1237
1238 }
1239 return TRUE;
1240
1241 case IDC_OPT_BINARY | (BN_CLICKED << 16):
1242 {
1243 if (GetCheck(IDC_OPT_BINARY)) {
1244 EnableDlgItem(IDC_OPT_PLAINTEXT, FALSE);
1245 EnableDlgItem(IDC_OPT_TIMESTAMP, FALSE);
1246 EnableDlgItem(IDC_OPT_TIMESTAMP_TYPE, FALSE);
1247 } else {
1248 EnableDlgItem(IDC_OPT_PLAINTEXT, TRUE);
1249 EnableDlgItem(IDC_OPT_TIMESTAMP, TRUE);
1250
1251 if (GetCheck(IDC_OPT_TIMESTAMP)) {
1252 EnableDlgItem(IDC_OPT_TIMESTAMP_TYPE, TRUE);
1253 }
1254 }
1255 }
1256 return TRUE;
1257
1258 case IDC_OPT_TIMESTAMP | (BN_CLICKED << 16):
1259 {
1260 if (GetCheck(IDC_OPT_TIMESTAMP)) {
1261 EnableDlgItem(IDC_OPT_TIMESTAMP_TYPE, TRUE);
1262 } else {
1263 EnableDlgItem(IDC_OPT_TIMESTAMP_TYPE, FALSE);
1264 }
1265 }
1266 return TRUE;
1267 }
1268
1269 return TTCPropertyPage::OnCommand(wParam, lParam);
1270 }
1271
1272 void CLogPropPageDlg::OnOK()
1273 {
1274 char buf[80], buf2[80];
1275 time_t time_local;
1276 struct tm *tm_local;
1277 TCHAR uimsg[MAX_UIMSG];
1278 TCHAR uimsg2[MAX_UIMSG];
1279
1280 // Viewlog Editor path (2005.1.29 yutaka)
1281 GetDlgItemText(IDC_VIEWLOG_EDITOR, ts.ViewlogEditor, _countof(ts.ViewlogEditor));
1282
1283 // Log Default File Name (2006.8.28 maya)
1284 GetDlgItemTextA(IDC_DEFAULTNAME_EDITOR, buf, sizeof(buf));
1285 if (isInvalidStrftimeChar(buf)) {
1286 get_lang_msgT("MSG_ERROR", uimsg, _countof(uimsg), _T("ERROR"), ts.UILanguageFile);
1287 get_lang_msgT("MSG_LOGFILE_INVALID_CHAR_ERROR", uimsg2, _countof(uimsg2),
1288 _T("Invalid character is included in log file name."), ts.UILanguageFile);
1289 MessageBox(uimsg2, uimsg, MB_ICONEXCLAMATION);
1290 return;
1291 }
1292
1293 // ��������������
1294 time(&time_local);
1295 tm_local = localtime(&time_local);
1296 // ����������������
1297 if (strlen(buf) != 0 && strftime(buf2, sizeof(buf2), buf, tm_local) == 0) {
1298 get_lang_msgT("MSG_ERROR", uimsg, _countof(uimsg), _T("ERROR"), ts.UILanguageFile);
1299 get_lang_msgT("MSG_LOGFILE_TOOLONG_ERROR", uimsg2, _countof(uimsg2),
1300 _T("The log file name is too long."), ts.UILanguageFile);
1301 MessageBox(uimsg2, uimsg, MB_ICONEXCLAMATION);
1302 return;
1303 }
1304 if (isInvalidFileNameChar(buf2)) {
1305 get_lang_msgT("MSG_ERROR", uimsg, _countof(uimsg), _T("ERROR"), ts.UILanguageFile);
1306 get_lang_msgT("MSG_LOGFILE_INVALID_CHAR_ERROR", uimsg2, _countof(uimsg2),
1307 _T("Invalid character is included in log file name."), ts.UILanguageFile);
1308 MessageBox(uimsg2, uimsg, MB_ICONEXCLAMATION);
1309 return;
1310 }
1311 strncpy_s(ts.LogDefaultName, sizeof(ts.LogDefaultName), buf, _TRUNCATE);
1312
1313 // Log Default File Path (2007.5.30 maya)
1314 GetDlgItemText(IDC_DEFAULTPATH_EDITOR, ts.LogDefaultPath, _countof(ts.LogDefaultPath));
1315
1316 /* Auto start logging (2007.5.31 maya) */
1317 ts.LogAutoStart = GetCheck(IDC_AUTOSTART);
1318
1319 /* Log Rotate */
1320 if (GetCheck(IDC_LOG_ROTATE)) { /* on */
1321 ts.LogRotate = ROTATE_SIZE;
1322 GetDlgItemText(IDC_ROTATE_SIZE_TYPE, buf, _countof(buf));
1323 ts.LogRotateSizeType = 0;
1324 for (int i = 0 ; i < LOG_ROTATE_SIZETYPE_NUM ; i++) {
1325 if (strcmp(buf, LogRotateSizeType[i]) == 0) {
1326 ts.LogRotateSizeType = i;
1327 break;
1328 }
1329 }
1330 ts.LogRotateSize = GetDlgItemInt(IDC_ROTATE_SIZE);
1331 for (int i = 0 ; i < ts.LogRotateSizeType ; i++)
1332 ts.LogRotateSize *= 1024;
1333
1334 ts.LogRotateStep = GetDlgItemInt(IDC_ROTATE_STEP);
1335
1336 } else { /* off */
1337 ts.LogRotate = ROTATE_NONE;
1338 /* �c���������o�[�����}�I���������c���B*/
1339 }
1340
1341 // Log Options
1342 if (GetCheck(IDC_OPT_BINARY)) {
1343 ts.LogBinary = 1;
1344 }
1345 else {
1346 ts.LogBinary = 0;
1347 }
1348
1349 if (GetCheck(IDC_OPT_APPEND)) {
1350 ts.Append = 1;
1351 }
1352 else {
1353 ts.Append = 0;
1354 }
1355
1356 if (GetCheck(IDC_OPT_PLAINTEXT)) {
1357 ts.LogTypePlainText = 1;
1358 }
1359 else {
1360 ts.LogTypePlainText = 0;
1361 }
1362
1363 if (GetCheck(IDC_OPT_HIDEDLG)) {
1364 ts.LogHideDialog = 1;
1365 }
1366 else {
1367 ts.LogHideDialog = 0;
1368 }
1369
1370 if (GetCheck(IDC_OPT_INCBUF)) {
1371 ts.LogAllBuffIncludedInFirst = 1;
1372 }
1373 else {
1374 ts.LogAllBuffIncludedInFirst = 0;
1375 }
1376
1377 if (GetCheck(IDC_OPT_TIMESTAMP)) {
1378 ts.LogTimestamp = 1;
1379 }
1380 else {
1381 ts.LogTimestamp = 0;
1382 }
1383
1384 ts.LogTimestampType = GetCurSel(IDC_OPT_TIMESTAMP_TYPE);
1385 }
1386
1387 /////////////////////////////
1388
1389 // CCygwinPropPageDlg �_�C�A���O
1390
1391 CCygwinPropPageDlg::CCygwinPropPageDlg(HINSTANCE inst, TTCPropertySheet *sheet)
1392 : TTCPropertyPage(inst, CCygwinPropPageDlg::IDD, sheet)
1393 {
1394 TCHAR UIMsg[MAX_UIMSG];
1395 get_lang_msgT("DLG_TABSHEET_TITLE_CYGWIN", UIMsg, _countof(UIMsg),
1396 _T("Cygwin"), ts.UILanguageFile);
1397 m_psp.pszTitle = _tcsdup(UIMsg);
1398 m_psp.dwFlags |= PSP_USETITLE;
1399 }
1400
1401 CCygwinPropPageDlg::~CCygwinPropPageDlg()
1402 {
1403 free((void *)m_psp.pszTitle);
1404 }
1405
1406 // CCygwinPropPageDlg ���b�Z�[�W �n���h��
1407
1408 void CCygwinPropPageDlg::OnInitDialog()
1409 {
1410 TTCPropertyPage::OnInitDialog();
1411
1412 static const DlgTextInfo TextInfos[] = {
1413 { IDC_CYGWIN_PATH_LABEL, "DLG_TAB_CYGWIN_PATH" }
1414 };
1415 SetDlgTexts(m_hWnd, TextInfos, _countof(TextInfos), ts.UILanguageFile);
1416
1417 memcpy(&settings, &ts.CygtermSettings, sizeof(cygterm_t));
1418
1419 SetDlgItemTextA(IDC_TERM_EDIT, settings.term);
1420 SetDlgItemTextA(IDC_TERM_TYPE, settings.term_type);
1421 SetDlgItemTextA(IDC_PORT_START, settings.port_start);
1422 SetDlgItemTextA(IDC_PORT_RANGE, settings.port_range);
1423 SetDlgItemTextA(IDC_SHELL, settings.shell);
1424 SetDlgItemTextA(IDC_ENV1, settings.env1);
1425 SetDlgItemTextA(IDC_ENV2, settings.env2);
1426
1427 SetCheck(IDC_LOGIN_SHELL, settings.login_shell);
1428 SetCheck(IDC_HOME_CHDIR, settings.home_chdir);
1429 SetCheck(IDC_AGENT_PROXY, settings.agent_proxy);
1430
1431 // Cygwin install path
1432 SetDlgItemTextA(IDC_CYGWIN_PATH, ts.CygwinDirectory);
1433
1434 // �_�C�A���O���t�H�[�J�X��������
1435 ::SetFocus(::GetDlgItem(GetSafeHwnd(), IDC_CYGWIN_PATH));
1436 }
1437
1438 BOOL CCygwinPropPageDlg::OnCommand(WPARAM wParam, LPARAM lParam)
1439 {
1440 char buf[MAX_PATH], buf2[MAX_PATH];
1441
1442 switch (wParam) {
1443 case IDC_SELECT_FILE | (BN_CLICKED << 16):
1444 // Cygwin install �f�B���N�g�����I���_�C�A���O
1445 get_lang_msg("DIRDLG_CYGTERM_DIR_TITLE", ts.UIMsg, sizeof(ts.UIMsg),
1446 "Select Cygwin directory", ts.UILanguageFile);
1447 GetDlgItemTextA(IDC_CYGWIN_PATH, buf, sizeof(buf));
1448 if (doSelectFolder(GetSafeHwnd(), buf2, sizeof(buf2), buf, ts.UIMsg)) {
1449 SetDlgItemTextA(IDC_CYGWIN_PATH, buf2);
1450 }
1451 return TRUE;
1452 }
1453
1454 return TTCPropertyPage::OnCommand(wParam, lParam);
1455 }
1456
1457 void CCygwinPropPageDlg::OnOK()
1458 {
1459 // writing to CygTerm config file
1460 GetDlgItemTextA(IDC_TERM_EDIT, settings.term, sizeof(settings.term));
1461 GetDlgItemTextA(IDC_TERM_TYPE, settings.term_type, sizeof(settings.term_type));
1462 GetDlgItemTextA(IDC_PORT_START, settings.port_start, sizeof(settings.port_start));
1463 GetDlgItemTextA(IDC_PORT_RANGE, settings.port_range, sizeof(settings.port_range));
1464 GetDlgItemTextA(IDC_SHELL, settings.shell, sizeof(settings.shell));
1465 GetDlgItemTextA(IDC_ENV1, settings.env1, sizeof(settings.env1));
1466 GetDlgItemTextA(IDC_ENV2, settings.env2, sizeof(settings.env2));
1467
1468 settings.login_shell = GetCheck(IDC_LOGIN_SHELL);
1469 settings.home_chdir = GetCheck(IDC_HOME_CHDIR);
1470 settings.agent_proxy = GetCheck(IDC_AGENT_PROXY);
1471
1472 memcpy(&ts.CygtermSettings, &settings, sizeof(cygterm_t));
1473
1474 // �������������������t���O�������������B
1475 ts.CygtermSettings.update_flag = TRUE;
1476
1477 // Cygwin install path
1478 GetDlgItemTextA(IDC_CYGWIN_PATH, ts.CygwinDirectory, sizeof(ts.CygwinDirectory));
1479 }
1480
1481 // CAddSettingPropSheetDlg
1482 CAddSettingPropSheetDlg::CAddSettingPropSheetDlg(
1483 HINSTANCE hInstance, LPCTSTR pszCaption, HWND hParentWnd) :
1484 TTCPropertySheet(hInstance, pszCaption, hParentWnd)
1485 {
1486 m_GeneralPage = new CGeneralPropPageDlg(hInstance, this);
1487 m_SequencePage = new CSequencePropPageDlg(hInstance, this);
1488 m_CopypastePage = new CCopypastePropPageDlg(hInstance, this);
1489 m_VisualPage = new CVisualPropPageDlg(hInstance, this);
1490 m_LogPage = new CLogPropPageDlg(hInstance, this);
1491 m_CygwinPage = new CCygwinPropPageDlg(hInstance, this);
1492
1493 hPsp[0] = CreatePropertySheetPage(&m_GeneralPage->m_psp);
1494 hPsp[1] = CreatePropertySheetPage(&m_SequencePage->m_psp);
1495 hPsp[2] = CreatePropertySheetPage(&m_CopypastePage->m_psp);
1496 hPsp[3] = CreatePropertySheetPage(&m_VisualPage->m_psp);
1497 hPsp[4] = CreatePropertySheetPage(&m_LogPage->m_psp);
1498 hPsp[5] = CreatePropertySheetPage(&m_CygwinPage->m_psp);
1499 m_psh.nPages = 6;
1500 m_psh.phpage = hPsp;
1501
1502 TCHAR UIMsg[MAX_UIMSG];
1503 get_lang_msgT("DLG_TABSHEET_TITLE", UIMsg, _countof(UIMsg),
1504 pszCaption, ts.UILanguageFile);
1505 m_psh.pszCaption = _tcsdup(UIMsg);
1506 }
1507
1508 CAddSettingPropSheetDlg::~CAddSettingPropSheetDlg()
1509 {
1510 free((void*)m_psh.pszCaption);
1511 delete m_GeneralPage;
1512 delete m_SequencePage;
1513 delete m_CopypastePage;
1514 delete m_VisualPage;
1515 delete m_LogPage;
1516 delete m_CygwinPage;
1517 }
1518
1519 void CAddSettingPropSheetDlg::OnInitDialog()
1520 {
1521 TTCPropertySheet::OnInitDialog();
1522 CenterWindow(m_hWnd, m_hParentWnd);
1523 }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26