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 8095 - (show annotations) (download) (as text)
Sun Sep 8 14:03:15 2019 UTC (4 years, 7 months ago) by yasuhide
File MIME type: text/x-c++src
File size: 52070 byte(s)
半透明度をAlpha値からパーセント表示に変更した

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

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