Develop and Download Open Source Software

Browse Subversion Repository

Annotation of /branches/ttcomtester/teraterm/teraterm/addsetting.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 9230 - (hide annotations) (download) (as text)
Mon May 3 15:04:42 2021 UTC (2 years, 11 months ago) by zmatsuo
Original Path: trunk/teraterm/teraterm/addsetting.cpp
File MIME type: text/x-c++src
File size: 57306 byte(s)
_WIN32_WINNTをコンパイルオプションで指定

- Tera Term は _WIN32_WINNT >= 0x0501 でビルドすることが前提となっている
  - 0x0501=_WIN32_WINNT_WINXP
    - Windows XP
    - Windows Server 2003
  - Visual Studio 2005 のプロジェクトファイルに /D_WIN32_WINNT=0x0501 追加済み(r9191)
- teraterm_conf.h を削除
  - WIN32_WINNT をコンパイルオプションで指定するため r7554 で追加した
  - コマンドラインで明示的に指定するようになったた不要となった
    - SDK 7.0 では _WIN32_WINNT が自動で設定されない
    - SDK 7.0 より新しいSDKでは、特に指定されていない場合、自動で設定される
      - SDKのバージョンによって自動で設定される_WIN32_WINNT の値は異なっている
      - SDK 7.1 の場合 0x0601
      - SDK 10.0.18362.0 の場合 0x0A00
      - sdkddkver.h 内で設定される
        - MinGWの場合は _mingw.h
- Visual Studio 2005 では次のSDKでビルドできることを確認済み
  - SDK 7.0
  - SDK 7.1
- Tera Term は Visual Studio 2005 以上をサポート
  - MSC_VER >= 1400
1 maya 3227 /*
2 nmaya 9048 * Copyright (C) 2008- TeraTerm Project
3 doda 6806 * All rights reserved.
4     *
5 doda 6841 * Redistribution and use in source and binary forms, with or without
6     * modification, are permitted provided that the following conditions
7     * are met:
8 doda 6806 *
9 doda 6841 * 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 doda 6806 *
17 doda 6841 * 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 doda 6806 */
28    
29     /*
30 maya 3227 * Additional settings dialog
31     */
32    
33 zmatsuo 7525 #include <stdio.h>
34     #include <windows.h>
35 maya 3227 #include <commctrl.h>
36 zmatsuo 7525 #include <time.h>
37 zmatsuo 8390 #define _CRTDBG_MAP_ALLOC
38     #include <stdlib.h>
39 zmatsuo 7938 #include <crtdbg.h>
40 zmatsuo 8569 #include <assert.h>
41 maya 3227
42     #include "teraterm.h"
43     #include "tttypes.h"
44 zmatsuo 7525 #include "ttwinman.h" // for ts
45 yutakapon 4916 #include "ttcommon.h"
46 zmatsuo 7525 #include "dlglib.h"
47     #include "compat_win.h"
48 zmatsuo 8017 #include "helpid.h"
49 zmatsuo 7938 #include "addsetting.h"
50 doda 8445 #include "debug_pp.h"
51 zmatsuo 8122 #include "tipwin.h"
52 zmatsuo 8569 #include "i18n.h"
53 zmatsuo 8619 #include "codeconv.h"
54     #include "layer_for_unicode.h"
55 zmatsuo 8767 #include "coding_pp.h"
56 zmatsuo 8771 #include "font_pp.h"
57 yasuhide 8116
58 zmatsuo 7525 const mouse_cursor_t MouseCursor[] = {
59 maya 3227 {"ARROW", IDC_ARROW},
60     {"IBEAM", IDC_IBEAM},
61     {"CROSS", IDC_CROSS},
62     {"HAND", IDC_HAND},
63     {NULL, NULL},
64     };
65     #define MOUSE_CURSOR_MAX (sizeof(MouseCursor)/sizeof(MouseCursor[0]) - 1)
66    
67 zmatsuo 7525 void CVisualPropPageDlg::SetupRGBbox(int index)
68 maya 3227 {
69 maya 8182 COLORREF Color = ts.ANSIColor[index];
70 maya 3227 BYTE c;
71    
72 maya 8182 c = GetRValue(Color);
73 zmatsuo 7525 SetDlgItemNum(IDC_COLOR_RED, c);
74 maya 3227
75 maya 8182 c = GetGValue(Color);
76 zmatsuo 7525 SetDlgItemNum(IDC_COLOR_GREEN, c);
77 maya 3227
78 maya 8182 c = GetBValue(Color);
79 zmatsuo 7525 SetDlgItemNum(IDC_COLOR_BLUE, c);
80 maya 3227 }
81    
82     // CGeneralPropPageDlg �_�C�A���O
83    
84 zmatsuo 8761 CGeneralPropPageDlg::CGeneralPropPageDlg(HINSTANCE inst)
85     : TTCPropertyPage(inst, CGeneralPropPageDlg::IDD)
86 maya 3227 {
87 doda 8445 wchar_t UIMsg[MAX_UIMSG];
88     get_lang_msgW("DLG_TABSHEET_TITLE_GENERAL", UIMsg, _countof(UIMsg),
89     L"General", ts.UILanguageFile);
90     m_psp.pszTitle = _wcsdup(UIMsg);
91 zmatsuo 8017 m_psp.dwFlags |= (PSP_USETITLE | PSP_HASHELP);
92 maya 3227 }
93    
94     CGeneralPropPageDlg::~CGeneralPropPageDlg()
95     {
96 zmatsuo 7525 free((void *)m_psp.pszTitle);
97 maya 3227 }
98    
99     // CGeneralPropPageDlg ���b�Z�[�W �n���h��
100    
101 zmatsuo 7525 void CGeneralPropPageDlg::OnInitDialog()
102 maya 3227 {
103 zmatsuo 7525 TTCPropertyPage::OnInitDialog();
104 maya 3227
105 zmatsuo 7525 static const DlgTextInfo TextInfos[] = {
106     { IDC_CLICKABLE_URL, "DLG_TAB_GENERAL_CLICKURL" },
107     { IDC_DISABLE_SENDBREAK, "DLG_TAB_GENERAL_DISABLESENDBREAK" },
108     { IDC_ACCEPT_BROADCAST, "DLG_TAB_GENERAL_ACCEPTBROADCAST" },
109     { IDC_MOUSEWHEEL_SCROLL_LINE, "DLG_TAB_GENERAL_MOUSEWHEEL_SCROLL_LINE" },
110     { IDC_AUTOSCROLL_ONLY_IN_BOTTOM_LINE, "DLG_TAB_GENERAL_AUTOSCROLL_ONLY_IN_BOTTOM_LINE" },
111     { IDC_CLEAR_ON_RESIZE, "DLG_TAB_GENERAL_CLEAR_ON_RESIZE" },
112     { IDC_CURSOR_CHANGE_IME, "DLG_TAB_GENERAL_CURSOR_CHANGE_IME" },
113     { IDC_LIST_HIDDEN_FONTS, "DLG_TAB_GENERAL_LIST_HIDDEN_FONTS" },
114     { IDC_TITLEFMT_GROUP, "DLG_TAB_GENERAL_TITLEFMT_GROUP" },
115     { IDC_TITLEFMT_DISPHOSTNAME, "DLG_TAB_GENERAL_TITLEFMT_DISPHOSTNAME" },
116     { IDC_TITLEFMT_DISPSESSION, "DLG_TAB_GENERAL_TITLEFMT_DISPSESSION" },
117     { IDC_TITLEFMT_DISPVTTEK, "DLG_TAB_GENERAL_TITLEFMT_DISPVTTEK" },
118     { IDC_TITLEFMT_SWAPHOSTTITLE, "DLG_TAB_GENERAL_TITLEFMT_SWAPHOSTTITLE" },
119     { IDC_TITLEFMT_DISPTCPPORT, "DLG_TAB_GENERAL_TITLEFMT_DISPTCPPORT" },
120     { IDC_TITLEFMT_DISPSERIALSPEED, "DLG_TAB_GENERAL_TITLEFMT_DISPSERIALSPEED" }
121     };
122     SetDlgTexts(m_hWnd, TextInfos, _countof(TextInfos), ts.UILanguageFile);
123 maya 3227
124     // (1)DisableAcceleratorSendBreak
125 zmatsuo 7525 SetCheck(IDC_DISABLE_SENDBREAK, ts.DisableAcceleratorSendBreak);
126 maya 3227
127     // (2)EnableClickableUrl
128 zmatsuo 7525 SetCheck(IDC_CLICKABLE_URL, ts.EnableClickableUrl);
129 maya 3227
130     // (3)AcceptBroadcast 337: 2007/03/20
131 zmatsuo 7525 SetCheck(IDC_ACCEPT_BROADCAST, ts.AcceptBroadcast);
132 maya 3227
133     // (4)IDC_MOUSEWHEEL_SCROLL_LINE
134 zmatsuo 7525 SetDlgItemNum(IDC_SCROLL_LINE, ts.MouseWheelScrollLine);
135 maya 3227
136     // (5)IDC_AUTOSCROLL_ONLY_IN_BOTTOM_LINE
137 zmatsuo 7525 SetCheck(IDC_AUTOSCROLL_ONLY_IN_BOTTOM_LINE, ts.AutoScrollOnlyInBottomLine);
138 maya 3227
139 maya 3777 // (6)IDC_CLEAR_ON_RESIZE
140 zmatsuo 7525 SetCheck(IDC_CLEAR_ON_RESIZE, (ts.TermFlag & TF_CLEARONRESIZE) != 0);
141 maya 3777
142 doda 4043 // (7)IDC_CURSOR_CHANGE_IME
143 zmatsuo 7525 SetCheck(IDC_CURSOR_CHANGE_IME, (ts.WindowFlag & WF_IMECURSORCHANGE) != 0);
144 doda 4043
145 doda 6857 // (8)IDC_LIST_HIDDEN_FONTS
146 zmatsuo 7525 SetCheck(IDC_LIST_HIDDEN_FONTS, ts.ListHiddenFonts);
147 doda 6857
148 doda 7131 // (9) Title Format
149 zmatsuo 7525 SetCheck(IDC_TITLEFMT_DISPHOSTNAME, (ts.TitleFormat & 1) != 0);
150     SetCheck(IDC_TITLEFMT_DISPSESSION, (ts.TitleFormat & (1<<1)) != 0);
151     SetCheck(IDC_TITLEFMT_DISPVTTEK, (ts.TitleFormat & (1<<2)) != 0);
152     SetCheck(IDC_TITLEFMT_SWAPHOSTTITLE, (ts.TitleFormat & (1<<3)) != 0);
153     SetCheck(IDC_TITLEFMT_DISPTCPPORT, (ts.TitleFormat & (1<<4)) != 0);
154     SetCheck(IDC_TITLEFMT_DISPSERIALSPEED, (ts.TitleFormat & (1<<5)) != 0);
155 doda 7131
156 maya 3777 // �_�C�A���O���t�H�[�J�X�������� (2004.12.7 yutaka)
157     ::SetFocus(::GetDlgItem(GetSafeHwnd(), IDC_CLICKABLE_URL));
158     }
159    
160     void CGeneralPropPageDlg::OnOK()
161     {
162 zmatsuo 8466 char buf[64];
163 maya 3777 int val;
164    
165     // (1)
166 zmatsuo 7525 ts.DisableAcceleratorSendBreak = GetCheck(IDC_DISABLE_SENDBREAK);
167 maya 3777
168     // (2)
169 zmatsuo 7525 ts.EnableClickableUrl = GetCheck(IDC_CLICKABLE_URL);
170 maya 3777
171     // (3) 337: 2007/03/20
172 zmatsuo 7525 ts.AcceptBroadcast = GetCheck(IDC_ACCEPT_BROADCAST);
173 maya 3777
174     // (4)IDC_MOUSEWHEEL_SCROLL_LINE
175 zmatsuo 8466 GetDlgItemText(IDC_SCROLL_LINE, buf, _countof(buf));
176     val = atoi(buf);
177 doda 6435 if (val > 0)
178 maya 3777 ts.MouseWheelScrollLine = val;
179    
180     // (5)IDC_AUTOSCROLL_ONLY_IN_BOTTOM_LINE
181 zmatsuo 7525 ts.AutoScrollOnlyInBottomLine = GetCheck(IDC_AUTOSCROLL_ONLY_IN_BOTTOM_LINE);
182 maya 3777
183     // (6)IDC_CLEAR_ON_RESIZE
184 zmatsuo 7525 if (((ts.TermFlag & TF_CLEARONRESIZE) != 0) != GetCheck(IDC_CLEAR_ON_RESIZE)) {
185 maya 3777 ts.TermFlag ^= TF_CLEARONRESIZE;
186     }
187 doda 4043
188     // (7)IDC_CURSOR_CHANGE_IME
189 zmatsuo 7525 if (((ts.WindowFlag & WF_IMECURSORCHANGE) != 0) != GetCheck(IDC_CURSOR_CHANGE_IME)) {
190 doda 4043 ts.WindowFlag ^= WF_IMECURSORCHANGE;
191     }
192 doda 6857
193     // (8)IDC_LIST_HIDDEN_FONTS
194 zmatsuo 7525 ts.ListHiddenFonts = GetCheck(IDC_LIST_HIDDEN_FONTS);
195 doda 7131
196     // (9) Title Format
197 zmatsuo 7525 ts.TitleFormat = GetCheck(IDC_TITLEFMT_DISPHOSTNAME) == BST_CHECKED;
198     ts.TitleFormat |= (GetCheck(IDC_TITLEFMT_DISPSESSION) == BST_CHECKED) << 1;
199     ts.TitleFormat |= (GetCheck(IDC_TITLEFMT_DISPVTTEK) == BST_CHECKED) << 2;
200     ts.TitleFormat |= (GetCheck(IDC_TITLEFMT_SWAPHOSTTITLE) == BST_CHECKED) << 3;
201     ts.TitleFormat |= (GetCheck(IDC_TITLEFMT_DISPTCPPORT) == BST_CHECKED) << 4;
202     ts.TitleFormat |= (GetCheck(IDC_TITLEFMT_DISPSERIALSPEED) == BST_CHECKED) << 5;
203 maya 3777 }
204    
205 zmatsuo 8017 void CGeneralPropPageDlg::OnHelp()
206     {
207     PostMessage(HVTWin, WM_USER_DLGHELP2, HlpMenuSetupAdditional, 0);
208     }
209    
210 maya 3777 // CSequencePropPageDlg �_�C�A���O
211    
212 zmatsuo 8761 CSequencePropPageDlg::CSequencePropPageDlg(HINSTANCE inst)
213     : TTCPropertyPage(inst, CSequencePropPageDlg::IDD)
214 maya 3777 {
215 doda 8445 wchar_t UIMsg[MAX_UIMSG];
216     get_lang_msgW("DLG_TABSHEET_TITLE_SEQUENCE", UIMsg, _countof(UIMsg),
217     L"Control Sequence", ts.UILanguageFile);
218     m_psp.pszTitle = _wcsdup(UIMsg);
219 zmatsuo 8017 m_psp.dwFlags |= (PSP_USETITLE | PSP_HASHELP);
220 maya 3777 }
221    
222     CSequencePropPageDlg::~CSequencePropPageDlg()
223     {
224 zmatsuo 7525 free((void *)m_psp.pszTitle);
225 maya 3777 }
226    
227     // CSequencePropPageDlg ���b�Z�[�W �n���h��
228    
229 zmatsuo 7525 void CSequencePropPageDlg::OnInitDialog()
230 maya 3777 {
231 zmatsuo 7525 TTCPropertyPage::OnInitDialog();
232 maya 3777
233 zmatsuo 7525 static const DlgTextInfo TextInfos[] = {
234     { IDC_ACCEPT_MOUSE_EVENT_TRACKING, "DLG_TAB_SEQUENCE_ACCEPT_MOUSE_EVENT_TRACKING" },
235     { IDC_DISABLE_MOUSE_TRACKING_CTRL, "DLG_TAB_SEQUENCE_DISABLE_MOUSE_TRACKING_CTRL" },
236     { IDC_ACCEPT_TITLE_CHANGING_LABEL, "DLG_TAB_SEQUENCE_ACCEPT_TITLE_CHANGING" },
237 maya 3777
238 zmatsuo 7525 { IDC_CURSOR_CTRL_SEQ, "DLG_TAB_SEQUENCE_CURSOR_CTRL" },
239     { IDC_WINDOW_CTRL, "DLG_TAB_SEQUENCE_WINDOW_CTRL" },
240     { IDC_WINDOW_REPORT, "DLG_TAB_SEQUENCE_WINDOW_REPORT" },
241     { IDC_TITLE_REPORT_LABEL, "DLG_TAB_SEQUENCE_TITLE_REPORT" },
242 maya 3777
243 zmatsuo 7525 { IDC_CLIPBOARD_ACCESS_LABEL, "DLG_TAB_SEQUENCE_CLIPBOARD_ACCESS" },
244 maya 3777
245 zmatsuo 7525 { IDC_CLIPBOARD_NOTIFY, "DLG_TAB_SEQUENCE_CLIPBOARD_NOTIFY" },
246 doda 8383 { IDC_ACCEPT_CLEAR_SBUFF, "DLG_TAB_SEQUENCE_ACCEPT_CLEAR_SBUFF" },
247 zmatsuo 7525 };
248     SetDlgTexts(m_hWnd, TextInfos, _countof(TextInfos), ts.UILanguageFile);
249 maya 3777
250 zmatsuo 8569 const static I18nTextInfo accept_title_changing[] = {
251     { "DLG_TAB_SEQUENCE_ACCEPT_TITLE_CHANGING_OFF", L"off" },
252     { "DLG_TAB_SEQUENCE_ACCEPT_TITLE_CHANGING_OVERWRITE", L"overwrite" },
253     { "DLG_TAB_SEQUENCE_ACCEPT_TITLE_CHANGING_AHEAD", L"ahead" },
254     { "DLG_TAB_SEQUENCE_ACCEPT_TITLE_CHANGING_LAST", L"last" },
255     };
256     SetI18nList("Tera Term", m_hWnd, IDC_ACCEPT_TITLE_CHANGING, accept_title_changing, _countof(accept_title_changing),
257     ts.UILanguageFile, 0);
258 maya 3777
259 zmatsuo 8569 const static I18nTextInfo sequence_title_report[] = {
260     { "DLG_TAB_SEQUENCE_TITLE_REPORT_IGNORE", L"ignore" },
261     { "DLG_TAB_SEQUENCE_TITLE_REPORT_ACCEPT", L"accept" },
262     { "DLG_TAB_SEQUENCE_TITLE_REPORT_EMPTY", L"empty" },
263     };
264     SetI18nList("Tera Term", m_hWnd, IDC_TITLE_REPORT, sequence_title_report, _countof(sequence_title_report),
265     ts.UILanguageFile, 0);
266 maya 3777
267 zmatsuo 8569 const static I18nTextInfo sequence_clipboard_access[] = {
268     { "DLG_TAB_SEQUENCE_CLIPBOARD_ACCESS_OFF", L"off" },
269     { "DLG_TAB_SEQUENCE_CLIPBOARD_ACCESS_WRITE", L"write only" },
270     { "DLG_TAB_SEQUENCE_CLIPBOARD_ACCESS_READ", L"read only" },
271     { "DLG_TAB_SEQUENCE_CLIPBOARD_ACCESS_ON", L"read/write" },
272     };
273     SetI18nList("Tera Term", m_hWnd, IDC_CLIPBOARD_ACCESS, sequence_clipboard_access,
274     _countof(sequence_clipboard_access), ts.UILanguageFile, 0);
275 doda 4702
276 maya 3777 // (1)IDC_ACCEPT_MOUSE_EVENT_TRACKING
277 zmatsuo 7525 SetCheck(IDC_ACCEPT_MOUSE_EVENT_TRACKING, ts.MouseEventTracking);
278     EnableDlgItem(IDC_DISABLE_MOUSE_TRACKING_CTRL, ts.MouseEventTracking ? TRUE : FALSE);
279 maya 3227
280 maya 3777 // (2)IDC_DISABLE_MOUSE_TRACKING_CTRL
281 zmatsuo 7525 SetCheck(IDC_DISABLE_MOUSE_TRACKING_CTRL, ts.DisableMouseTrackingByCtrl);
282 maya 3227
283 maya 3777 // (3)IDC_ACCEPT_TITLE_CHANGING
284 zmatsuo 7525 SetCurSel(IDC_ACCEPT_TITLE_CHANGING, ts.AcceptTitleChangeRequest);
285 maya 3227
286 maya 3777 // (4)IDC_TITLE_REPORT
287 zmatsuo 7525 SetCurSel(IDC_TITLE_REPORT,
288     (ts.WindowFlag & WF_TITLEREPORT) == IdTitleReportIgnore ? 0 :
289     (ts.WindowFlag & WF_TITLEREPORT) == IdTitleReportAccept ? 1
290     /*(ts.WindowFlag & WF_TITLEREPORT) == IdTitleReportEmptye ? */ : 2);
291 doda 3727
292 maya 3777 // (5)IDC_WINDOW_CTRL
293 zmatsuo 7525 SetCheck(IDC_WINDOW_CTRL, (ts.WindowFlag & WF_WINDOWCHANGE) != 0);
294 maya 3777
295     // (6)IDC_WINDOW_REPORT
296 zmatsuo 7525 SetCheck(IDC_WINDOW_REPORT, (ts.WindowFlag & WF_WINDOWREPORT) != 0);
297 maya 3777
298     // (7)IDC_CURSOR_CTRL_SEQ
299 zmatsuo 7525 SetCheck(IDC_CURSOR_CTRL_SEQ, (ts.WindowFlag & WF_CURSORCHANGE) != 0);
300 yutakapon 3735
301 doda 4702 // (8)IDC_CLIPBOARD_ACCESS
302 zmatsuo 7525 SetCurSel(IDC_CLIPBOARD_ACCESS,
303     (ts.CtrlFlag & CSF_CBRW) == CSF_CBRW ? 3 :
304     (ts.CtrlFlag & CSF_CBRW) == CSF_CBREAD ? 2 :
305     (ts.CtrlFlag & CSF_CBRW) == CSF_CBWRITE ? 1 :
306     0); // off
307 doda 4702
308 doda 6676 // (9)IDC_CLIPBOARD_NOTIFY
309 zmatsuo 7525 SetCheck(IDC_CLIPBOARD_NOTIFY, ts.NotifyClipboardAccess);
310     EnableDlgItem(IDC_CLIPBOARD_NOTIFY, HasBalloonTipSupport() ? TRUE : FALSE);
311 doda 6676
312 doda 8383 // (10)IDC_ACCEPT_CLEAR_SBUFF
313     SetCheck(IDC_ACCEPT_CLEAR_SBUFF, (ts.TermFlag & TF_REMOTECLEARSBUFF) != 0);
314    
315 maya 3227 // �_�C�A���O���t�H�[�J�X�������� (2004.12.7 yutaka)
316 doda 6494 ::SetFocus(::GetDlgItem(GetSafeHwnd(), IDC_ACCEPT_MOUSE_EVENT_TRACKING));
317 maya 3227 }
318    
319 maya 3777 BOOL CSequencePropPageDlg::OnCommand(WPARAM wParam, LPARAM lParam)
320 maya 3227 {
321     switch (wParam) {
322     case IDC_ACCEPT_MOUSE_EVENT_TRACKING | (BN_CLICKED << 16):
323 zmatsuo 8951 EnableDlgItem(IDC_DISABLE_MOUSE_TRACKING_CTRL,
324 zmatsuo 7525 GetCheck(IDC_ACCEPT_MOUSE_EVENT_TRACKING) ? TRUE : FALSE);
325 maya 3227 return TRUE;
326     }
327 zmatsuo 7525 return TTCPropertyPage::OnCommand(wParam, lParam);
328 maya 3227 }
329    
330 maya 3777 void CSequencePropPageDlg::OnOK()
331 maya 3227 {
332 maya 3777 // (1)IDC_ACCEPT_MOUSE_EVENT_TRACKING
333 zmatsuo 7525 ts.MouseEventTracking = GetCheck(IDC_ACCEPT_MOUSE_EVENT_TRACKING);
334 maya 3227
335 maya 3777 // (2)IDC_DISABLE_MOUSE_TRACKING_CTRL
336 zmatsuo 7525 ts.DisableMouseTrackingByCtrl = GetCheck(IDC_DISABLE_MOUSE_TRACKING_CTRL);
337 maya 3227
338 maya 3777 // (3)IDC_ACCEPT_TITLE_CHANGING
339 zmatsuo 7525 int sel = GetCurSel(IDC_ACCEPT_TITLE_CHANGING);
340 doda 6496 if (0 <= sel && sel <= IdTitleChangeRequestMax) {
341     ts.AcceptTitleChangeRequest = sel;
342     }
343 doda 3727
344 maya 3777 // (4)IDC_TITLE_REPORT
345 zmatsuo 7525 switch (GetCurSel(IDC_TITLE_REPORT)) {
346 maya 3777 case 0:
347     ts.WindowFlag &= ~WF_TITLEREPORT;
348     break;
349     case 1:
350     ts.WindowFlag &= ~WF_TITLEREPORT;
351     ts.WindowFlag |= IdTitleReportAccept;
352     break;
353 doda 6496 case 2:
354 maya 3777 ts.WindowFlag |= IdTitleReportEmpty;
355     break;
356 doda 6496 default: // Invalid value.
357     break;
358 doda 3727 }
359 yutakapon 3735
360 maya 3777 // (5)IDC_WINDOW_CTRL
361 zmatsuo 7525 if (((ts.WindowFlag & WF_WINDOWCHANGE) != 0) != GetCheck(IDC_WINDOW_CTRL)) {
362 maya 3777 ts.WindowFlag ^= WF_WINDOWCHANGE;
363     }
364    
365     // (6)IDC_WINDOW_REPORT
366 zmatsuo 7525 if (((ts.WindowFlag & WF_WINDOWREPORT) != 0) != GetCheck(IDC_WINDOW_REPORT)) {
367 maya 3777 ts.WindowFlag ^= WF_WINDOWREPORT;
368     }
369    
370     // (7)IDC_CURSOR_CTRL_SEQ
371 zmatsuo 7525 if (((ts.WindowFlag & WF_CURSORCHANGE) != 0) != GetCheck(IDC_CURSOR_CTRL_SEQ)) {
372 yutakapon 3735 ts.WindowFlag ^= WF_CURSORCHANGE;
373     }
374 maya 3777
375 doda 6496 // (8)IDC_CLIPBOARD_ACCESS
376 zmatsuo 7525 switch (GetCurSel(IDC_CLIPBOARD_ACCESS)) {
377 doda 4702 case 0: // off
378     ts.CtrlFlag &= ~CSF_CBRW;
379     break;
380     case 1: // write only
381     ts.CtrlFlag &= ~CSF_CBRW;
382     ts.CtrlFlag |= CSF_CBWRITE;
383     break;
384     case 2: // read only
385     ts.CtrlFlag &= ~CSF_CBRW;
386     ts.CtrlFlag |= CSF_CBREAD;
387     break;
388 doda 6496 case 3: // read/write
389 doda 4702 ts.CtrlFlag |= CSF_CBRW;
390     break;
391 doda 6496 default: // Invalid value.
392     break;
393 doda 4702 }
394 doda 6676
395     // (9)IDC_CLIPBOARD_ACCESS
396 zmatsuo 7525 ts.NotifyClipboardAccess = GetCheck(IDC_CLIPBOARD_NOTIFY);
397 doda 8383
398     // (10)IDC_ACCEPT_CLEAR_SBUFF
399     if (((ts.TermFlag & TF_REMOTECLEARSBUFF) != 0) != GetCheck(IDC_ACCEPT_CLEAR_SBUFF)) {
400     ts.TermFlag ^= TF_REMOTECLEARSBUFF;
401     }
402 maya 3227 }
403    
404 zmatsuo 8017 void CSequencePropPageDlg::OnHelp()
405     {
406     PostMessage(HVTWin, WM_USER_DLGHELP2, HlpMenuSetupAdditional, 0);
407     }
408 maya 3227
409     // CCopypastePropPageDlg �_�C�A���O
410    
411 zmatsuo 8761 CCopypastePropPageDlg::CCopypastePropPageDlg(HINSTANCE inst)
412     : TTCPropertyPage(inst, CCopypastePropPageDlg::IDD)
413 maya 3227 {
414 doda 8445 wchar_t UIMsg[MAX_UIMSG];
415     get_lang_msgW("DLG_TABSHEET_TITLE_COPYPASTE", UIMsg, _countof(UIMsg),
416     L"Copy and Paste", ts.UILanguageFile);
417     m_psp.pszTitle = _wcsdup(UIMsg);
418 zmatsuo 8017 m_psp.dwFlags |= (PSP_USETITLE | PSP_HASHELP);
419 maya 3227 }
420    
421     CCopypastePropPageDlg::~CCopypastePropPageDlg()
422     {
423 zmatsuo 7525 free((void *)m_psp.pszTitle);
424 maya 3227 }
425    
426     // CCopypastePropPageDlg ���b�Z�[�W �n���h��
427    
428 zmatsuo 7525 void CCopypastePropPageDlg::OnInitDialog()
429 maya 3227 {
430 zmatsuo 7525 TTCPropertyPage::OnInitDialog();
431 maya 3227
432 zmatsuo 7525 static const DlgTextInfo TextInfos[] = {
433     { IDC_LINECOPY, "DLG_TAB_COPYPASTE_CONTINUE" },
434     { IDC_DISABLE_PASTE_RBUTTON, "DLG_TAB_COPYPASTE_MOUSEPASTE" },
435     { IDC_CONFIRM_PASTE_RBUTTON, "DLG_TAB_COPYPASTE_CONFIRMPASTE" },
436     { IDC_DISABLE_PASTE_MBUTTON, "DLG_TAB_COPYPASTE_MOUSEPASTEM" },
437     { IDC_SELECT_LBUTTON, "DLG_TAB_COPYPASTE_SELECTLBUTTON" },
438     { IDC_TRIMNLCHAR, "DLG_TAB_COPYPASTE_TRIM_TRAILING_NL" },
439     { IDC_CONFIRM_CHANGE_PASTE, "DLG_TAB_COPYPASTE_CONFIRM_CHANGE_PASTE" },
440     { IDC_CONFIRM_STRING_FILE_LABEL, "DLG_TAB_COPYPASTE_STRINGFILE" },
441     { IDC_DELIMITER, "DLG_TAB_COPYPASTE_DELIMITER" },
442     { IDC_PASTEDELAY_LABEL, "DLG_TAB_COPYPASTE_PASTEDELAY" },
443 zmatsuo 7940 { IDC_PASTEDELAY_LABEL2, "DLG_TAB_COPYPASTE_PASTEDELAY2" },
444     { IDC_SELECT_ON_ACTIVATE, "DLG_TAB_COPYPASTE_SELECT_ON_ACTIVATE" }
445 zmatsuo 7525 };
446     SetDlgTexts(m_hWnd, TextInfos, _countof(TextInfos), ts.UILanguageFile);
447 maya 3227
448     // (1)Enable continued-line copy
449 zmatsuo 7525 SetCheck(IDC_LINECOPY, ts.EnableContinuedLineCopy);
450 maya 3227
451     // (2)DisablePasteMouseRButton
452 doda 6594 if (ts.PasteFlag & CPF_DISABLE_RBUTTON) {
453 zmatsuo 7525 SetCheck(IDC_DISABLE_PASTE_RBUTTON, BST_CHECKED);
454     EnableDlgItem(IDC_CONFIRM_PASTE_RBUTTON, FALSE);
455 maya 3227 } else {
456 zmatsuo 7525 SetCheck(IDC_DISABLE_PASTE_RBUTTON, BST_UNCHECKED);
457     EnableDlgItem(IDC_CONFIRM_PASTE_RBUTTON, TRUE);
458 maya 3227 }
459    
460     // (3)ConfirmPasteMouseRButton
461 zmatsuo 7525 SetCheck(IDC_CONFIRM_PASTE_RBUTTON, (ts.PasteFlag & CPF_CONFIRM_RBUTTON)?BST_CHECKED:BST_UNCHECKED);
462 maya 3227
463 doda 3594 // (4)DisablePasteMouseMButton
464 zmatsuo 7525 SetCheck(IDC_DISABLE_PASTE_MBUTTON, (ts.PasteFlag & CPF_DISABLE_MBUTTON)?BST_CHECKED:BST_UNCHECKED);
465 doda 3594
466     // (5)SelectOnlyByLButton
467 zmatsuo 7525 SetCheck(IDC_SELECT_LBUTTON, ts.SelectOnlyByLButton);
468 maya 3227
469 doda 6418 // (6)TrimTrailingNLonPaste
470 zmatsuo 7525 SetCheck(IDC_TRIMNLCHAR, (ts.PasteFlag & CPF_TRIM_TRAILING_NL)?BST_CHECKED:BST_UNCHECKED);
471 doda 6418
472 zmatsuo 8459 // (7)ConfirmChangePaste
473 zmatsuo 7525 SetCheck(IDC_CONFIRM_CHANGE_PASTE, (ts.PasteFlag & CPF_CONFIRM_CHANGEPASTE)?BST_CHECKED:BST_UNCHECKED);
474 maya 3227
475 yutakapon 3558 // �t�@�C���p�X
476 zmatsuo 7525 SetDlgItemTextA(IDC_CONFIRM_STRING_FILE, ts.ConfirmChangePasteStringFile);
477 doda 6594 if (ts.PasteFlag & CPF_CONFIRM_CHANGEPASTE) {
478 zmatsuo 7525 EnableDlgItem(IDC_CONFIRM_STRING_FILE, TRUE);
479     EnableDlgItem(IDC_CONFIRM_STRING_FILE_PATH, TRUE);
480 yutakapon 3558 } else {
481 zmatsuo 7525 EnableDlgItem(IDC_CONFIRM_STRING_FILE, FALSE);
482     EnableDlgItem(IDC_CONFIRM_STRING_FILE_PATH, FALSE);
483 yutakapon 3558 }
484    
485 zmatsuo 8459 // (8)delimiter characters
486 zmatsuo 7525 SetDlgItemTextA(IDC_DELIM_LIST, ts.DelimList);
487 maya 3227
488 zmatsuo 8459 // (9)PasteDelayPerLine
489 zmatsuo 7525 char buf[64];
490 maya 3306 _snprintf_s(buf, sizeof(buf), "%d", ts.PasteDelayPerLine);
491 zmatsuo 7525 SetDlgItemNum(IDC_PASTEDELAY_EDIT, ts.PasteDelayPerLine);
492 maya 3227
493 zmatsuo 8459 // (10) SelectOnActivate
494 zmatsuo 7940 SetCheck(IDC_SELECT_ON_ACTIVATE, ts.SelOnActive ? BST_CHECKED : BST_UNCHECKED);
495    
496 maya 3227 // �_�C�A���O���t�H�[�J�X��������
497     ::SetFocus(::GetDlgItem(GetSafeHwnd(), IDC_LINECOPY));
498     }
499    
500     BOOL CCopypastePropPageDlg::OnCommand(WPARAM wParam, LPARAM lParam)
501     {
502     switch (wParam) {
503     case IDC_DISABLE_PASTE_RBUTTON | (BN_CLICKED << 16):
504 zmatsuo 7525 EnableDlgItem(IDC_CONFIRM_PASTE_RBUTTON,
505     GetCheck(IDC_DISABLE_PASTE_RBUTTON) ? FALSE : TRUE);
506 maya 3227 return TRUE;
507 yutakapon 3558
508     case IDC_CONFIRM_CHANGE_PASTE | (BN_CLICKED << 16):
509 zmatsuo 7525 if (GetCheck(IDC_CONFIRM_CHANGE_PASTE)) {
510     EnableDlgItem(IDC_CONFIRM_STRING_FILE, TRUE);
511     EnableDlgItem(IDC_CONFIRM_STRING_FILE_PATH, TRUE);
512 yutakapon 3558 } else {
513 zmatsuo 7525 EnableDlgItem(IDC_CONFIRM_STRING_FILE, FALSE);
514     EnableDlgItem(IDC_CONFIRM_STRING_FILE_PATH, FALSE);
515 yutakapon 3558 }
516     return TRUE;
517    
518     case IDC_CONFIRM_STRING_FILE_PATH | (BN_CLICKED << 16):
519     {
520 zmatsuo 8619 wchar_t fileW[_countof(ts.ConfirmChangePasteStringFile)];
521     MultiByteToWideChar(CP_ACP, 0, ts.ConfirmChangePasteStringFile, -1, fileW, _countof(fileW));
522 yutakapon 3558
523 zmatsuo 8619 OPENFILENAMEW ofn;
524    
525 zmatsuo 7525 memset(&ofn, 0, sizeof(ofn));
526 zmatsuo 8619 ofn.lStructSize = get_OPENFILENAME_SIZEW();
527 yutakapon 3558 ofn.hwndOwner = GetSafeHwnd();
528 zmatsuo 8619 ofn.lpstrFilter = TTGetLangStrW("Tera Term", "FILEDLG_SELECT_CONFIRM_STRING_APP_FILTER", L"txt(*.txt)\\0*.txt\\0all(*.*)\\0*.*\\0\\0", ts.UILanguageFile);
529     ofn.lpstrFile = fileW;
530     ofn.nMaxFile = _countof(fileW);
531     ofn.lpstrTitle = TTGetLangStrW("Tera Term", "FILEDLG_SELECT_CONFIRM_STRING_APP_TITLE", L"Choose a file including strings for ConfirmChangePaste", ts.UILanguageFile);
532 maya 7775 ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
533 zmatsuo 8619 BOOL ok = _GetOpenFileNameW(&ofn);
534     if (ok) {
535     char *file = ToCharW(fileW);
536     strncpy_s(ts.ConfirmChangePasteStringFile, sizeof(ts.ConfirmChangePasteStringFile), file, _TRUNCATE);
537     free(file);
538 zmatsuo 7525 SetDlgItemTextA(IDC_CONFIRM_STRING_FILE, ts.ConfirmChangePasteStringFile);
539 yutakapon 3558 }
540 zmatsuo 8619 free((void *)ofn.lpstrFilter);
541     free((void *)ofn.lpstrTitle);
542 yutakapon 3558 }
543     return TRUE;
544 maya 3227 }
545    
546 zmatsuo 7525 return TTCPropertyPage::OnCommand(wParam, lParam);
547 maya 3227 }
548    
549     void CCopypastePropPageDlg::OnOK()
550     {
551 maya 3306 char buf[64];
552     int val;
553 maya 3227
554     // (1)
555 zmatsuo 7525 ts.EnableContinuedLineCopy = GetCheck(IDC_LINECOPY);
556 maya 3227
557     // (2)
558 zmatsuo 7525 if (GetCheck(IDC_DISABLE_PASTE_RBUTTON)) {
559 doda 6594 ts.PasteFlag |= CPF_DISABLE_RBUTTON;
560     }
561     else {
562     ts.PasteFlag &= ~CPF_DISABLE_RBUTTON;
563     }
564 maya 3227
565     // (3)
566 zmatsuo 7525 if (GetCheck(IDC_CONFIRM_PASTE_RBUTTON)) {
567 doda 6594 ts.PasteFlag |= CPF_CONFIRM_RBUTTON;
568     }
569     else {
570     ts.PasteFlag &= ~CPF_CONFIRM_RBUTTON;
571     }
572 maya 3227
573     // (4)
574 zmatsuo 7525 if (GetCheck(IDC_DISABLE_PASTE_MBUTTON)) {
575 doda 6594 ts.PasteFlag |= CPF_DISABLE_MBUTTON;
576     }
577     else {
578     ts.PasteFlag &= ~CPF_DISABLE_MBUTTON;
579     }
580 doda 3594
581     // (5)
582 zmatsuo 7525 ts.SelectOnlyByLButton = GetCheck(IDC_SELECT_LBUTTON);
583 maya 3227
584 doda 6418 // (6)
585 zmatsuo 7525 if (GetCheck(IDC_TRIMNLCHAR)) {
586 doda 6594 ts.PasteFlag |= CPF_TRIM_TRAILING_NL;
587     }
588     else {
589     ts.PasteFlag &= ~CPF_TRIM_TRAILING_NL;
590     }
591 doda 6418
592 zmatsuo 8459 // (7)IDC_CONFIRM_CHANGE_PASTE
593 zmatsuo 7525 if (GetCheck(IDC_CONFIRM_CHANGE_PASTE)) {
594 doda 6594 ts.PasteFlag |= CPF_CONFIRM_CHANGEPASTE;
595     }
596     else {
597     ts.PasteFlag &= ~CPF_CONFIRM_CHANGEPASTE;
598     }
599 zmatsuo 7525 GetDlgItemTextA(IDC_CONFIRM_STRING_FILE, ts.ConfirmChangePasteStringFile, sizeof(ts.ConfirmChangePasteStringFile));
600 maya 3227
601 zmatsuo 8459 // (8)
602 zmatsuo 7525 GetDlgItemTextA(IDC_DELIM_LIST, ts.DelimList, sizeof(ts.DelimList));
603 maya 3306
604 zmatsuo 8459 // (9)
605 zmatsuo 7525 GetDlgItemTextA(IDC_PASTEDELAY_EDIT, buf, sizeof(buf));
606 maya 3306 val = atoi(buf);
607 zmatsuo 7525 ts.PasteDelayPerLine =
608     (val < 0) ? 0 :
609     (val > 5000) ? 5000 : val;
610 zmatsuo 7940
611 zmatsuo 8459 // (10) SelectOnActivate
612 zmatsuo 7940 ts.SelOnActive = (GetCheck(IDC_SELECT_ON_ACTIVATE) == BST_CHECKED);
613 maya 3227 }
614    
615 zmatsuo 8017 void CCopypastePropPageDlg::OnHelp()
616     {
617     PostMessage(HVTWin, WM_USER_DLGHELP2, HlpMenuSetupAdditional, 0);
618     }
619 maya 3227
620     // CVisualPropPageDlg �_�C�A���O
621    
622 zmatsuo 8761 CVisualPropPageDlg::CVisualPropPageDlg(HINSTANCE inst)
623     : TTCPropertyPage(inst, CVisualPropPageDlg::IDD)
624 maya 3227 {
625 doda 8445 wchar_t UIMsg[MAX_UIMSG];
626     get_lang_msgW("DLG_TABSHEET_TITLE_VISUAL", UIMsg, _countof(UIMsg),
627     L"Visual", ts.UILanguageFile);
628     m_psp.pszTitle = _wcsdup(UIMsg);
629 zmatsuo 8017 m_psp.dwFlags |= (PSP_USETITLE | PSP_HASHELP);
630 yasuhide 8268 TipWin = new CTipWin(inst);
631 maya 3227 }
632    
633     CVisualPropPageDlg::~CVisualPropPageDlg()
634     {
635 zmatsuo 7525 free((void *)m_psp.pszTitle);
636 yasuhide 8143 TipWin->Destroy();
637 yasuhide 8268 delete TipWin;
638     TipWin = NULL;
639 maya 3227 }
640    
641     // CVisualPropPageDlg ���b�Z�[�W �n���h��
642    
643 zmatsuo 7525 void CVisualPropPageDlg::OnInitDialog()
644 maya 3227 {
645     char buf[MAXPATHLEN];
646    
647 zmatsuo 7525 TTCPropertyPage::OnInitDialog();
648 maya 3227
649 zmatsuo 7525 static const DlgTextInfo TextInfos[] = {
650     { IDC_ALPHABLEND, "DLG_TAB_VISUAL_ALPHA" },
651 yasuhide 8095 { IDC_ALPHA_BLEND_ACTIVE_LABEL, "DLG_TAB_VISUAL_ALPHA_ACTIVE" },
652     { IDC_ALPHA_BLEND_INACTIVE_LABEL, "DLG_TAB_VISUAL_ALPHA_INACTIVE" },
653 zmatsuo 7525 { IDC_ETERM_LOOKFEEL, "DLG_TAB_VISUAL_ETERM" },
654 yutakapon 8106 { IDC_MIXED_THEME_FILE, "DLG_TAB_VISUAL_BGMIXED_THEMEFILE" },
655 zmatsuo 7525 { IDC_BGIMG_CHECK, "DLG_TAB_VISUAL_BGIMG" },
656     { IDC_BGIMG_BRIGHTNESS, "DLG_TAB_VISUAL_BGIMG_BRIGHTNESS" },
657     { IDC_MOUSE, "DLG_TAB_VISUAL_MOUSE" },
658     { IDC_FONT_QUALITY_LABEL, "DLG_TAB_VISUAL_FONT_QUALITY" },
659     { IDC_ANSICOLOR, "DLG_TAB_VISUAL_ANSICOLOR" },
660     { IDC_RED, "DLG_TAB_VISUAL_RED" },
661     { IDC_GREEN, "DLG_TAB_VISUAL_GREEN" },
662     { IDC_BLUE, "DLG_TAB_VISUAL_BLUE" },
663     { IDC_ENABLE_ATTR_COLOR_BOLD, "DLG_TAB_VISUAL_BOLD" },
664     { IDC_ENABLE_ATTR_COLOR_BLINK, "DLG_TAB_VISUAL_BLINK" },
665     { IDC_ENABLE_ATTR_COLOR_REVERSE, "DLG_TAB_VISUAL_REVERSE" },
666     { IDC_ENABLE_URL_COLOR, "DLG_TAB_VISUAL_URL" },
667     { IDC_ENABLE_ANSI_COLOR, "DLG_TAB_VISUAL_ANSI" },
668     { IDC_URL_UNDERLINE, "DLG_TAB_VISUAL_URLUL" },
669     { IDC_RESTART, "DLG_TAB_VISUAL_RESTART" },
670     };
671     SetDlgTexts(m_hWnd, TextInfos, _countof(TextInfos), ts.UILanguageFile);
672 maya 3227
673 zmatsuo 8569 const static I18nTextInfo visual_font_quality[] = {
674     { "DLG_TAB_VISUAL_FONT_QUALITY_DEFAULT", L"Default" },
675     { "DLG_TAB_VISUAL_FONT_QUALITY_NONANTIALIASED", L"Non-Antialiased" },
676     { "DLG_TAB_VISUAL_FONT_QUALITY_ANTIALIASED", L"Antialiased" },
677     { "DLG_TAB_VISUAL_FONT_QUALITY_CLEARTYPE", L"ClearType" },
678     };
679     SetI18nList("Tera Term", m_hWnd, IDC_FONT_QUALITY, visual_font_quality, _countof(visual_font_quality),
680     ts.UILanguageFile, 0);
681 maya 3227
682     // (1)AlphaBlend
683    
684 yasuhide 8116 SetDlgItemNum(IDC_ALPHA_BLEND_ACTIVE, ts.AlphaBlendActive);
685 yasuhide 8117 SendDlgItemMessage(IDC_ALPHA_BLEND_ACTIVE_TRACKBAR, TBM_SETRANGE, TRUE, MAKELPARAM(0, 255));
686     SendDlgItemMessage(IDC_ALPHA_BLEND_ACTIVE_TRACKBAR, TBM_SETPOS, TRUE, ts.AlphaBlendActive);
687 zmatsuo 7525
688 yasuhide 8116 SetDlgItemNum(IDC_ALPHA_BLEND_INACTIVE, ts.AlphaBlendInactive);
689 yasuhide 8117 SendDlgItemMessage(IDC_ALPHA_BLEND_INACTIVE_TRACKBAR, TBM_SETRANGE, TRUE, MAKELPARAM(0, 255));
690     SendDlgItemMessage(IDC_ALPHA_BLEND_INACTIVE_TRACKBAR, TBM_SETPOS, TRUE, ts.AlphaBlendInactive);
691 zmatsuo 7525
692 yasuhide 8269 BOOL isLayeredWindowSupported = (pSetLayeredWindowAttributes != NULL);
693     EnableDlgItem(IDC_ALPHA_BLEND_ACTIVE, isLayeredWindowSupported);
694     EnableDlgItem(IDC_ALPHA_BLEND_ACTIVE_TRACKBAR, isLayeredWindowSupported);
695     EnableDlgItem(IDC_ALPHA_BLEND_INACTIVE, isLayeredWindowSupported);
696     EnableDlgItem(IDC_ALPHA_BLEND_INACTIVE_TRACKBAR, isLayeredWindowSupported);
697 yasuhide 8143
698 maya 3227 // (2)[BG] BGEnable
699 zmatsuo 7525 SetCheck(IDC_ETERM_LOOKFEEL, ts.EtermLookfeel.BGEnable);
700 maya 3227
701 yutakapon 4942 // Eterm look-feel���w�i�����w���B
702 zmatsuo 7525 SetDlgItemTextA(IDC_BGIMG_EDIT, ts.BGImageFilePath);
703 yutakapon 6095
704     _snprintf_s(buf, sizeof(buf), _TRUNCATE, "%d", ts.BGImgBrightness);
705 zmatsuo 7525 SetDlgItemNum(IDC_EDIT_BGIMG_BRIGHTNESS, ts.BGImgBrightness);
706 yutakapon 6095
707 yutakapon 8106 // BGEnable���W�����A�`�F�b�N�{�b�N�X���t�����B
708     if (strcmp(ts.EtermLookfeel.BGThemeFile, BG_THEME_IMAGEFILE) == 0) {
709     SetCheck(IDC_BGIMG_CHECK, BST_CHECKED);
710     } else {
711     SetCheck(IDC_BGIMG_CHECK, BST_UNCHECKED);
712     }
713     // �e�[�}�t�@�C�����������������������������������B
714     if (ts.EtermLookfeel.BGIgnoreThemeFile) {
715     SetCheck(IDC_MIXED_THEME_FILE, BST_UNCHECKED);
716     } else {
717     SetCheck(IDC_MIXED_THEME_FILE, BST_CHECKED);
718     }
719    
720 yutakapon 4942 if (ts.EtermLookfeel.BGEnable) {
721 zmatsuo 7525 EnableDlgItem(IDC_BGIMG_CHECK, TRUE);
722 yutakapon 8106 EnableDlgItem(IDC_MIXED_THEME_FILE, TRUE);
723 yutakapon 5573
724     if (strcmp(ts.EtermLookfeel.BGThemeFile, BG_THEME_IMAGEFILE) == 0) {
725 zmatsuo 7525 EnableDlgItem(IDC_BGIMG_EDIT, TRUE);
726     EnableDlgItem(IDC_BGIMG_BUTTON, TRUE);
727 yutakapon 6095
728 zmatsuo 7525 EnableDlgItem(IDC_BGIMG_BRIGHTNESS, TRUE);
729     EnableDlgItem(IDC_EDIT_BGIMG_BRIGHTNESS, TRUE);
730 yutakapon 5573 } else {
731 zmatsuo 7525 EnableDlgItem(IDC_BGIMG_EDIT, FALSE);
732     EnableDlgItem(IDC_BGIMG_BUTTON, FALSE);
733 yutakapon 6095
734 zmatsuo 7525 EnableDlgItem(IDC_BGIMG_BRIGHTNESS, FALSE);
735     EnableDlgItem(IDC_EDIT_BGIMG_BRIGHTNESS, FALSE);
736 yutakapon 5573 }
737 yutakapon 8106
738 yutakapon 4942 } else {
739 zmatsuo 7525 EnableDlgItem(IDC_BGIMG_CHECK, FALSE);
740     EnableDlgItem(IDC_BGIMG_EDIT, FALSE);
741     EnableDlgItem(IDC_BGIMG_BUTTON, FALSE);
742 yutakapon 6095
743 zmatsuo 7525 EnableDlgItem(IDC_BGIMG_BRIGHTNESS, FALSE);
744     EnableDlgItem(IDC_EDIT_BGIMG_BRIGHTNESS, FALSE);
745 yutakapon 8106
746     EnableDlgItem(IDC_MIXED_THEME_FILE, FALSE);
747 yutakapon 4942 }
748    
749 maya 3227 // (3)Mouse cursor type
750 zmatsuo 7525 int sel = 0;
751     for (int i = 0 ; MouseCursor[i].name ; i++) {
752     const char *name = MouseCursor[i].name;
753     SendDlgItemMessageA(IDC_MOUSE_CURSOR, CB_ADDSTRING, i, (LPARAM)name);
754     if (strcmp(name, ts.MouseCursorName) == 0) {
755     sel = i;
756     }
757 maya 3227 }
758 zmatsuo 7525 SetCurSel(IDC_MOUSE_CURSOR, sel);
759 maya 3227
760 maya 4874 // (4)Font quality
761     switch (ts.FontQuality) {
762     case DEFAULT_QUALITY:
763 zmatsuo 7525 SetCurSel(IDC_FONT_QUALITY, 0);
764 maya 4874 break;
765     case NONANTIALIASED_QUALITY:
766 zmatsuo 7525 SetCurSel(IDC_FONT_QUALITY, 1);
767 maya 4874 break;
768     case ANTIALIASED_QUALITY:
769 zmatsuo 7525 SetCurSel(IDC_FONT_QUALITY, 2);
770 maya 4874 break;
771     default: // CLEARTYPE_QUALITY
772 zmatsuo 7525 SetCurSel(IDC_FONT_QUALITY, 3);
773 maya 4874 break;
774     }
775    
776     // (5)ANSI color
777 zmatsuo 7525 for (int i = 0 ; i < 16 ; i++) {
778 maya 3227 _snprintf_s(buf, sizeof(buf), _TRUNCATE, "%d", i);
779 zmatsuo 7525 SendDlgItemMessageA(IDC_ANSI_COLOR, LB_INSERTSTRING, i, (LPARAM)buf);
780 maya 3227 }
781 zmatsuo 7525 SetupRGBbox(0);
782     SendDlgItemMessage(IDC_ANSI_COLOR, LB_SETCURSEL, 0, 0);
783     ::InvalidateRect(GetDlgItem(IDC_SAMPLE_COLOR), NULL, TRUE);
784 maya 3227
785 maya 4874 // (6)Bold Attr Color
786 zmatsuo 7525 SetCheck(IDC_ENABLE_ATTR_COLOR_BOLD, (ts.ColorFlag&CF_BOLDCOLOR) != 0);
787 maya 3227
788 maya 4874 // (7)Blink Attr Color
789 zmatsuo 7525 SetCheck(IDC_ENABLE_ATTR_COLOR_BLINK, (ts.ColorFlag&CF_BLINKCOLOR) != 0);
790 maya 3227
791 maya 4874 // (8)Reverse Attr Color
792 zmatsuo 7525 SetCheck(IDC_ENABLE_ATTR_COLOR_REVERSE, (ts.ColorFlag&CF_REVERSECOLOR) != 0);
793 maya 3227
794 maya 4874 // (9)URL Color
795 zmatsuo 7525 SetCheck(IDC_ENABLE_URL_COLOR, (ts.ColorFlag&CF_URLCOLOR) != 0);
796 maya 3227
797 maya 4874 // (10)Color
798 zmatsuo 7525 SetCheck(IDC_ENABLE_ANSI_COLOR, (ts.ColorFlag&CF_ANSICOLOR) != 0);
799 maya 3227
800 maya 4874 // (11)URL Underline
801 zmatsuo 7525 SetCheck(IDC_URL_UNDERLINE, (ts.FontFlag&FF_URLUNDERLINE) != 0);
802 doda 3667
803 doda 6435 // �_�C�A���O���t�H�[�J�X��������
804 zmatsuo 7525 ::SetFocus(GetDlgItem(IDC_ALPHA_BLEND_ACTIVE));
805 yasuhide 8268
806     // �c�[���`�b�v����
807     TipWin->Create(m_hWnd);
808 maya 3227 }
809    
810 yasuhide 8116 void CVisualPropPageDlg::OnHScroll(UINT nSBCode, UINT nPos, HWND pScrollBar)
811     {
812     int pos;
813     if ( pScrollBar == GetDlgItem(IDC_ALPHA_BLEND_ACTIVE_TRACKBAR) ) {
814     switch (nSBCode) {
815     case SB_TOP:
816     case SB_BOTTOM:
817     case SB_LINEDOWN:
818     case SB_LINEUP:
819     case SB_PAGEDOWN:
820     case SB_PAGEUP:
821     case SB_THUMBPOSITION:
822     case SB_THUMBTRACK:
823     pos = SendDlgItemMessage(IDC_ALPHA_BLEND_ACTIVE_TRACKBAR, TBM_GETPOS, NULL, NULL);
824     SetDlgItemNum(IDC_ALPHA_BLEND_ACTIVE, pos);
825     break;
826     case SB_ENDSCROLL:
827     default:
828     return;
829     }
830     }
831     else if ( pScrollBar == GetDlgItem(IDC_ALPHA_BLEND_INACTIVE_TRACKBAR) ) {
832     switch (nSBCode) {
833     case SB_TOP:
834     case SB_BOTTOM:
835     case SB_LINEDOWN:
836     case SB_LINEUP:
837     case SB_PAGEDOWN:
838     case SB_PAGEUP:
839     case SB_THUMBPOSITION:
840     case SB_THUMBTRACK:
841     pos = SendDlgItemMessage(IDC_ALPHA_BLEND_INACTIVE_TRACKBAR, TBM_GETPOS, NULL, NULL);
842     SetDlgItemNum(IDC_ALPHA_BLEND_INACTIVE, pos);
843     break;
844     case SB_ENDSCROLL:
845     default:
846     return;
847     }
848     }
849     }
850    
851 zmatsuo 8460 static void OpacityTooltip(CTipWin* tip, HWND hDlg, int trackbar, int pos, const char *UILanguageFile)
852     {
853     wchar_t uimsg[MAX_UIMSG];
854     get_lang_msgW("TOOLTIP_TITLEBAR_OPACITY", uimsg, sizeof(uimsg), L"Opacity %.1f %%", ts.UILanguageFile);
855     wchar_t tipbuf[MAX_UIMSG];
856     swprintf_s(tipbuf, _countof(tipbuf), uimsg, (pos / 255.0) * 100);
857     RECT rc;
858     ::GetWindowRect(::GetDlgItem(hDlg, trackbar), &rc);
859     tip->SetText(tipbuf);
860     tip->SetPos(rc.right, rc.bottom);
861     tip->SetHideTimer(1000);
862     if (! tip->IsVisible()) {
863     tip->SetVisible(TRUE);
864     }
865     }
866    
867 maya 3227 BOOL CVisualPropPageDlg::OnCommand(WPARAM wParam, LPARAM lParam)
868     {
869     int sel;
870    
871     switch (wParam) {
872 zmatsuo 7525 case IDC_ETERM_LOOKFEEL:
873 yutakapon 4942 // �`�F�b�N�������� Enable/Disable ���g�O�������B
874 zmatsuo 7525 if (GetCheck(IDC_ETERM_LOOKFEEL)) {
875 yutakapon 8106 EnableDlgItem(IDC_MIXED_THEME_FILE, TRUE);
876 zmatsuo 7525 EnableDlgItem(IDC_BGIMG_CHECK, TRUE);
877     if (GetCheck(IDC_BGIMG_CHECK)) {
878     EnableDlgItem(IDC_BGIMG_EDIT, TRUE);
879     EnableDlgItem(IDC_BGIMG_BUTTON, TRUE);
880 yutakapon 6095
881 zmatsuo 7525 EnableDlgItem(IDC_BGIMG_BRIGHTNESS, TRUE);
882     EnableDlgItem(IDC_EDIT_BGIMG_BRIGHTNESS, TRUE);
883 yutakapon 5573 } else {
884 zmatsuo 7525 EnableDlgItem(IDC_BGIMG_EDIT, FALSE);
885     EnableDlgItem(IDC_BGIMG_BUTTON, FALSE);
886 yutakapon 6095
887 zmatsuo 7525 EnableDlgItem(IDC_BGIMG_BRIGHTNESS, FALSE);
888     EnableDlgItem(IDC_EDIT_BGIMG_BRIGHTNESS, FALSE);
889 yutakapon 5573 }
890     } else {
891 zmatsuo 7525 EnableDlgItem(IDC_BGIMG_CHECK, FALSE);
892     EnableDlgItem(IDC_BGIMG_EDIT, FALSE);
893     EnableDlgItem(IDC_BGIMG_BUTTON, FALSE);
894 yutakapon 5573
895 zmatsuo 7525 EnableDlgItem(IDC_BGIMG_BRIGHTNESS, FALSE);
896     EnableDlgItem(IDC_EDIT_BGIMG_BRIGHTNESS, FALSE);
897 yutakapon 6095
898 yutakapon 5573 // ���������������ABGThemeFile �����������B
899     strncpy_s(ts.EtermLookfeel.BGThemeFile, BG_THEME_IMAGEFILE_DEFAULT, sizeof(ts.EtermLookfeel.BGThemeFile));
900     // �w�i�����������������B
901 zmatsuo 8466 SetDlgItemText(IDC_BGIMG_EDIT, "");
902 yutakapon 6095 SetDlgItemInt(IDC_EDIT_BGIMG_BRIGHTNESS, BG_THEME_IMAGE_BRIGHTNESS_DEFAULT);
903 yutakapon 8106
904     EnableDlgItem(IDC_MIXED_THEME_FILE, FALSE);
905 yutakapon 5573 }
906     return TRUE;
907    
908 yutakapon 8106 case IDC_MIXED_THEME_FILE:
909     if (GetCheck(IDC_MIXED_THEME_FILE)) {
910     // �w�i�������`�F�b�N���O���B
911     SetCheck(IDC_BGIMG_CHECK, BST_UNCHECKED);
912     }
913     return TRUE;
914    
915 yutakapon 5573 case IDC_BGIMG_CHECK:
916 zmatsuo 7525 if (GetCheck(IDC_BGIMG_CHECK)) {
917     EnableDlgItem(IDC_BGIMG_EDIT, TRUE);
918     EnableDlgItem(IDC_BGIMG_BUTTON, TRUE);
919 yutakapon 5573
920 zmatsuo 7525 EnableDlgItem(IDC_BGIMG_BRIGHTNESS, TRUE);
921     EnableDlgItem(IDC_EDIT_BGIMG_BRIGHTNESS, TRUE);
922 yutakapon 6095
923 yutakapon 5573 strncpy_s(ts.EtermLookfeel.BGThemeFile, BG_THEME_IMAGEFILE, sizeof(ts.EtermLookfeel.BGThemeFile));
924 yutakapon 8106 // �������`�F�b�N���O���B
925     SetCheck(IDC_MIXED_THEME_FILE, BST_UNCHECKED);
926 yutakapon 4942 } else {
927 zmatsuo 7525 EnableDlgItem(IDC_BGIMG_EDIT, FALSE);
928     EnableDlgItem(IDC_BGIMG_BUTTON, FALSE);
929 yutakapon 5573
930 zmatsuo 7525 EnableDlgItem(IDC_BGIMG_BRIGHTNESS, FALSE);
931     EnableDlgItem(IDC_EDIT_BGIMG_BRIGHTNESS, FALSE);
932 yutakapon 6095
933 yutakapon 4942 // ���������������ABGThemeFile �����������B
934     strncpy_s(ts.EtermLookfeel.BGThemeFile, BG_THEME_IMAGEFILE_DEFAULT, sizeof(ts.EtermLookfeel.BGThemeFile));
935 yutakapon 4945 // �w�i�����������������B
936 zmatsuo 8466 SetDlgItemText(IDC_BGIMG_EDIT, "");
937 yutakapon 6095 SetDlgItemInt(IDC_EDIT_BGIMG_BRIGHTNESS, BG_THEME_IMAGE_BRIGHTNESS_DEFAULT);
938 yutakapon 4942 }
939     return TRUE;
940    
941     case IDC_BGIMG_BUTTON | (BN_CLICKED << 16):
942     // �w�i�������_�C�A���O���w�������B
943     {
944 zmatsuo 8619 OPENFILENAMEW ofn;
945     wchar_t szFile[MAX_PATH];
946 zmatsuo 7525
947     memset(&ofn, 0, sizeof(ofn));
948     memset(szFile, 0, sizeof(szFile));
949 zmatsuo 8619 ofn.lStructSize = get_OPENFILENAME_SIZEW();
950 maya 7759 ofn.hwndOwner = GetSafeHwnd();
951 zmatsuo 8619 ofn.lpstrFilter = L"Image Files(*.jpg;*.jpeg;*.bmp)\0*.jpg;*.jpeg;*.bmp\0All Files(*.*)\0*.*\0";
952 zmatsuo 7525 ofn.lpstrFile = szFile;
953     ofn.nMaxFile = _countof(szFile);
954 zmatsuo 8619 ofn.lpstrTitle = L"select image file";
955 zmatsuo 7525 ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
956 zmatsuo 8619 BOOL ok = _GetOpenFileNameW(&ofn);
957     if (ok) {
958     SetDlgItemTextW(IDC_BGIMG_EDIT, szFile);
959 yutakapon 4942 }
960     }
961     return TRUE;
962    
963 maya 8152 case IDC_EDIT_BGIMG_BRIGHTNESS | (EN_CHANGE << 16) :
964     {
965     int b;
966    
967     b = GetDlgItemInt(IDC_EDIT_BGIMG_BRIGHTNESS);
968     if (b < 0) {
969     b = 0;
970 yasuhide 8157 SetDlgItemNum(IDC_EDIT_BGIMG_BRIGHTNESS, b);
971 maya 8152 }
972     else if (b > 255) {
973     b = 255;
974 yasuhide 8157 SetDlgItemNum(IDC_EDIT_BGIMG_BRIGHTNESS, b);
975 maya 8152 }
976     }
977     return TRUE;
978    
979 maya 3227 case IDC_ANSI_COLOR | (LBN_SELCHANGE << 16):
980 zmatsuo 7525 sel = SendDlgItemMessage(IDC_ANSI_COLOR, LB_GETCURSEL, 0, 0);
981 maya 3227 if (sel != -1) {
982 zmatsuo 7525 SetupRGBbox(sel);
983     ::InvalidateRect(GetDlgItem(IDC_SAMPLE_COLOR), NULL, TRUE);
984 maya 3227 }
985     return TRUE;
986    
987 maya 8147 case IDC_COLOR_RED | (EN_CHANGE << 16) :
988     case IDC_COLOR_GREEN | (EN_CHANGE << 16) :
989     case IDC_COLOR_BLUE | (EN_CHANGE << 16) :
990 maya 3227 {
991 maya 8147 int r, g, b;
992 maya 3227
993 zmatsuo 7525 sel = GetCurSel(IDC_ANSI_COLOR);
994 maya 3227 if (sel < 0 && sel > sizeof(ts.ANSIColor)-1) {
995     return TRUE;
996     }
997    
998 maya 8147 r = GetDlgItemInt(IDC_COLOR_RED);
999     if (r < 0) {
1000     r = 0;
1001 yasuhide 8157 SetDlgItemNum(IDC_COLOR_RED, r);
1002 maya 8147 }
1003     else if (r > 255) {
1004     r = 255;
1005 yasuhide 8157 SetDlgItemNum(IDC_COLOR_RED, r);
1006 maya 8147 }
1007 maya 3227
1008 maya 8147 g = GetDlgItemInt(IDC_COLOR_GREEN);
1009     if (g < 0) {
1010     g = 0;
1011 yasuhide 8157 SetDlgItemNum(IDC_COLOR_GREEN, g);
1012 maya 8147 }
1013     else if (g > 255) {
1014     g = 255;
1015 yasuhide 8157 SetDlgItemNum(IDC_COLOR_GREEN, g);
1016 maya 8147 }
1017 maya 3227
1018 maya 8147 b = GetDlgItemInt(IDC_COLOR_BLUE);
1019     if (b < 0) {
1020     b = 0;
1021 yasuhide 8157 SetDlgItemNum(IDC_COLOR_BLUE, b);
1022 maya 8147 }
1023     else if (b > 255) {
1024     b = 255;
1025 yasuhide 8157 SetDlgItemNum(IDC_COLOR_BLUE, b);
1026 maya 8147 }
1027 maya 3227
1028 maya 8147 // OK ����������������������������������
1029 maya 3227 ts.ANSIColor[sel] = RGB(r, g, b);
1030    
1031 zmatsuo 7525 ::InvalidateRect(GetDlgItem(IDC_SAMPLE_COLOR), NULL, TRUE);
1032 maya 3227 }
1033 yasuhide 8116 return TRUE;
1034     case IDC_ALPHA_BLEND_ACTIVE | (EN_CHANGE << 16):
1035     {
1036     int pos;
1037     pos = GetDlgItemInt(IDC_ALPHA_BLEND_ACTIVE);
1038 yasuhide 8142 if(pos < 0) {
1039     pos = 0;
1040     SetDlgItemNum(IDC_ALPHA_BLEND_ACTIVE, pos);
1041     }
1042     else if(pos > 255) {
1043     pos = 255;
1044     SetDlgItemNum(IDC_ALPHA_BLEND_ACTIVE, pos);
1045     }
1046 yasuhide 8116 SendDlgItemMessage(IDC_ALPHA_BLEND_ACTIVE_TRACKBAR, TBM_SETPOS, TRUE, pos);
1047 zmatsuo 8460 OpacityTooltip(TipWin, m_hWnd, IDC_ALPHA_BLEND_ACTIVE, pos, ts.UILanguageFile);
1048 yasuhide 8116 return TRUE;
1049     }
1050     case IDC_ALPHA_BLEND_INACTIVE | (EN_CHANGE << 16):
1051     {
1052     int pos;
1053     pos = GetDlgItemInt(IDC_ALPHA_BLEND_INACTIVE);
1054 yasuhide 8142 if(pos < 0) {
1055     pos = 0;
1056     SetDlgItemNum(IDC_ALPHA_BLEND_INACTIVE, pos);
1057     }
1058     else if(pos > 255) {
1059     pos = 255;
1060     SetDlgItemNum(IDC_ALPHA_BLEND_INACTIVE, pos);
1061     }
1062 yasuhide 8116 SendDlgItemMessage(IDC_ALPHA_BLEND_INACTIVE_TRACKBAR, TBM_SETPOS, TRUE, pos);
1063 zmatsuo 8460 OpacityTooltip(TipWin, m_hWnd, IDC_ALPHA_BLEND_INACTIVE, pos, ts.UILanguageFile);
1064 yasuhide 8116 return TRUE;
1065     }
1066 zmatsuo 7525 }
1067 maya 3227
1068 zmatsuo 7525 return TTCPropertyPage::OnCommand(wParam, lParam);
1069     }
1070 maya 3227
1071 zmatsuo 7525 HBRUSH CVisualPropPageDlg::OnCtlColor(HDC hDC, HWND hWnd)
1072     {
1073     if ( hWnd == GetDlgItem(IDC_SAMPLE_COLOR) ) {
1074     BYTE r, g, b;
1075     char buf[8];
1076 maya 3227
1077 zmatsuo 7525 GetDlgItemTextA(IDC_COLOR_RED, buf, sizeof(buf));
1078     r = atoi(buf);
1079 maya 3227
1080 zmatsuo 7525 GetDlgItemTextA(IDC_COLOR_GREEN, buf, sizeof(buf));
1081     g = atoi(buf);
1082 maya 3227
1083 zmatsuo 7525 GetDlgItemTextA(IDC_COLOR_BLUE, buf, sizeof(buf));
1084     b = atoi(buf);
1085 maya 3227
1086 zmatsuo 7525 SetBkMode(hDC, TRANSPARENT);
1087     SetTextColor(hDC, RGB(r, g, b) );
1088 maya 3227
1089 zmatsuo 7525 return (HBRUSH)GetStockObject(NULL_BRUSH);
1090 maya 3227 }
1091 zmatsuo 7525 return TTCPropertyPage::OnCtlColor(hDC, hWnd);
1092 maya 3227 }
1093    
1094     void CVisualPropPageDlg::OnOK()
1095     {
1096     int sel;
1097     char buf[MAXPATHLEN];
1098     COLORREF TmpColor;
1099 yutakapon 4916 int flag_changed = 0;
1100 maya 3227
1101     // (1)
1102 zmatsuo 7525 GetDlgItemTextA(IDC_ALPHA_BLEND_ACTIVE, buf, sizeof(buf));
1103 maya 3227 if (isdigit(buf[0])) {
1104 yasuhide 8116 int i = atoi(buf);
1105 zmatsuo 7390 ts.AlphaBlendActive =
1106     (i < 0) ? 0 :
1107     (i > 255) ? 255 : i;
1108 maya 3227 }
1109 zmatsuo 7525 GetDlgItemTextA(IDC_ALPHA_BLEND_INACTIVE, buf, sizeof(buf));
1110 zmatsuo 7390 if (isdigit(buf[0])) {
1111 yasuhide 8116 int i = atoi(buf);
1112 zmatsuo 8951 ts.AlphaBlendInactive =
1113 zmatsuo 7390 (i < 0) ? 0 :
1114     (i > 255) ? 255 : i;
1115     }
1116 maya 3227
1117     // (2)
1118     // �O���[�o������ BGEnable �������������������A�v���O������������������
1119     // ���������R�s�[���C�����������������B(2005.4.24 yutaka)
1120 zmatsuo 7525 if (ts.EtermLookfeel.BGEnable != GetCheck(IDC_ETERM_LOOKFEEL)) {
1121 yutakapon 4916 flag_changed = 1;
1122 zmatsuo 7525 ts.EtermLookfeel.BGEnable = GetCheck(IDC_ETERM_LOOKFEEL);
1123 yutakapon 4916 }
1124 yutakapon 4942 if (ts.EtermLookfeel.BGEnable) {
1125 zmatsuo 7525 GetDlgItemTextA(IDC_BGIMG_EDIT, ts.BGImageFilePath, sizeof(ts.BGImageFilePath));
1126 yutakapon 4945 } else {
1127     strncpy_s(ts.BGImageFilePath, sizeof(ts.BGImageFilePath), "%SystemRoot%\\Web\\Wallpaper\\*.bmp", _TRUNCATE);
1128 yutakapon 4942 }
1129    
1130 zmatsuo 7525 GetDlgItemTextA(IDC_EDIT_BGIMG_BRIGHTNESS, buf, sizeof(buf));
1131 yutakapon 6095 if (isdigit(buf[0])) {
1132 zmatsuo 7525 int i = atoi(buf);
1133 zmatsuo 8951 ts.BGImgBrightness =
1134 zmatsuo 7525 (i < 0) ? 0 :
1135     (i > 255) ? 255 : i;
1136 yutakapon 6095 }
1137    
1138 yutakapon 8106 // �e�[�}�t�@�C�������I���������B
1139     if (ts.EtermLookfeel.BGEnable) {
1140     if (GetCheck(IDC_BGIMG_CHECK)) {
1141     strncpy_s(ts.EtermLookfeel.BGThemeFile, BG_THEME_IMAGEFILE, sizeof(ts.EtermLookfeel.BGThemeFile));
1142     } else {
1143     strncpy_s(ts.EtermLookfeel.BGThemeFile, BG_THEME_IMAGEFILE_DEFAULT, sizeof(ts.EtermLookfeel.BGThemeFile));
1144     }
1145     if (GetCheck(IDC_MIXED_THEME_FILE)) {
1146     // �����������������A�f�t�H���g�������������B
1147     ts.EtermLookfeel.BGIgnoreThemeFile = FALSE;
1148     } else {
1149     // �e�[�}�t�@�C�������������B
1150     ts.EtermLookfeel.BGIgnoreThemeFile = TRUE;
1151     }
1152    
1153     } else {
1154     // BG���������������f�t�H���g�������������B
1155     strncpy_s(ts.EtermLookfeel.BGThemeFile, BG_THEME_IMAGEFILE_DEFAULT, sizeof(ts.EtermLookfeel.BGThemeFile));
1156     }
1157    
1158    
1159 maya 3227 // (3)
1160 zmatsuo 7525 sel = GetCurSel(IDC_MOUSE_CURSOR);
1161 maya 3227 if (sel >= 0 && sel < MOUSE_CURSOR_MAX) {
1162     strncpy_s(ts.MouseCursorName, sizeof(ts.MouseCursorName), MouseCursor[sel].name, _TRUNCATE);
1163     }
1164    
1165 maya 4874 // (4)Font quality
1166 zmatsuo 7525 switch (GetCurSel(IDC_FONT_QUALITY)) {
1167 maya 4874 case 0:
1168     ts.FontQuality = DEFAULT_QUALITY;
1169     break;
1170     case 1:
1171     ts.FontQuality = NONANTIALIASED_QUALITY;
1172     break;
1173     case 2:
1174     ts.FontQuality = ANTIALIASED_QUALITY;
1175     break;
1176 doda 6496 case 3:
1177 maya 4874 ts.FontQuality = CLEARTYPE_QUALITY;
1178     break;
1179 doda 6496 default: // Invalid value.
1180     break;
1181 maya 4874 }
1182    
1183     // (6) Attr Bold Color
1184 zmatsuo 7525 if (((ts.ColorFlag & CF_BOLDCOLOR) != 0) != GetCheck(IDC_ENABLE_ATTR_COLOR_BOLD)) {
1185 maya 3227 ts.ColorFlag ^= CF_BOLDCOLOR;
1186     }
1187    
1188 maya 4874 // (7) Attr Blink Color
1189 zmatsuo 7525 if (((ts.ColorFlag & CF_BLINKCOLOR) != 0) != GetCheck(IDC_ENABLE_ATTR_COLOR_BLINK)) {
1190 maya 3227 ts.ColorFlag ^= CF_BLINKCOLOR;
1191     }
1192    
1193 maya 4874 // (8) Attr Reverse Color
1194 maya 3227 if (ts.ColorFlag & CF_REVERSEVIDEO) { // Reverse Video���[�h(DECSCNM)����������������
1195     if (ts.ColorFlag & CF_REVERSECOLOR) {
1196 zmatsuo 7525 if (!GetCheck(IDC_ENABLE_ATTR_COLOR_REVERSE)) {
1197 maya 3227 TmpColor = ts.VTColor[0];
1198     ts.VTColor[0] = ts.VTReverseColor[1];
1199     ts.VTReverseColor[1] = ts.VTColor[1];
1200     ts.VTColor[1] = ts.VTReverseColor[0];
1201     ts.VTReverseColor[0] = TmpColor;
1202     ts.ColorFlag ^= CF_REVERSECOLOR;
1203     }
1204     }
1205 zmatsuo 7525 else if (GetCheck(IDC_ENABLE_ATTR_COLOR_REVERSE)) {
1206 maya 3227 TmpColor = ts.VTColor[0];
1207     ts.VTColor[0] = ts.VTReverseColor[0];
1208     ts.VTReverseColor[0] = ts.VTColor[1];
1209     ts.VTColor[1] = ts.VTReverseColor[1];
1210     ts.VTReverseColor[1] = TmpColor;
1211     ts.ColorFlag ^= CF_REVERSECOLOR;
1212     }
1213     }
1214 zmatsuo 7525 else if (((ts.ColorFlag & CF_REVERSECOLOR) != 0) != GetCheck(IDC_ENABLE_ATTR_COLOR_REVERSE)) {
1215 maya 3227 ts.ColorFlag ^= CF_REVERSECOLOR;
1216     }
1217    
1218 maya 4874 // (9) URL Color
1219 zmatsuo 7525 if (((ts.ColorFlag & CF_URLCOLOR) != 0) != GetCheck(IDC_ENABLE_URL_COLOR)) {
1220 maya 3227 ts.ColorFlag ^= CF_URLCOLOR;
1221     }
1222    
1223 maya 4874 // (10) Color
1224 zmatsuo 7525 if (((ts.ColorFlag & CF_ANSICOLOR) != 0) != GetCheck(IDC_ENABLE_ANSI_COLOR)) {
1225 maya 3227 ts.ColorFlag ^= CF_ANSICOLOR;
1226     }
1227    
1228 maya 4874 // (11) URL Underline
1229 zmatsuo 7525 if (((ts.FontFlag & FF_URLUNDERLINE) != 0) != GetCheck(IDC_URL_UNDERLINE)) {
1230 doda 3667 ts.FontFlag ^= FF_URLUNDERLINE;
1231     }
1232    
1233 yutakapon 4916 if (flag_changed) {
1234     // re-launch
1235 maya 4944 // RestartTeraTerm(GetSafeHwnd(), &ts);
1236 yutakapon 4916 }
1237 maya 3227 }
1238    
1239 zmatsuo 8017 void CVisualPropPageDlg::OnHelp()
1240     {
1241     PostMessage(HVTWin, WM_USER_DLGHELP2, HlpMenuSetupAdditional, 0);
1242     }
1243 maya 3227
1244     // CLogPropPageDlg �_�C�A���O
1245    
1246 zmatsuo 8761 CLogPropPageDlg::CLogPropPageDlg(HINSTANCE inst)
1247     : TTCPropertyPage(inst, CLogPropPageDlg::IDD)
1248 maya 3227 {
1249 doda 8445 wchar_t UIMsg[MAX_UIMSG];
1250     get_lang_msgW("DLG_TABSHEET_TITLE_Log", UIMsg, _countof(UIMsg),
1251     L"Log", ts.UILanguageFile);
1252     m_psp.pszTitle = _wcsdup(UIMsg);
1253 zmatsuo 8017 m_psp.dwFlags |= (PSP_USETITLE | PSP_HASHELP);
1254 maya 3227 }
1255    
1256     CLogPropPageDlg::~CLogPropPageDlg()
1257     {
1258 zmatsuo 7525 free((void *)m_psp.pszTitle);
1259 maya 3227 }
1260    
1261     // CLogPropPageDlg ���b�Z�[�W �n���h��
1262    
1263 yutakapon 5171 #define LOG_ROTATE_SIZETYPE_NUM 3
1264 zmatsuo 7525 static const char *LogRotateSizeType[] = {
1265 yutakapon 5171 "Byte", "KB", "MB"
1266     };
1267    
1268 zmatsuo 7525 static const char *GetLogRotateSizeType(int val)
1269 yutakapon 5171 {
1270     if (val >= LOG_ROTATE_SIZETYPE_NUM)
1271     val = 0;
1272    
1273     return LogRotateSizeType[val];
1274     }
1275    
1276 zmatsuo 7525 void CLogPropPageDlg::OnInitDialog()
1277 maya 3227 {
1278 zmatsuo 7525 TTCPropertyPage::OnInitDialog();
1279 maya 3227
1280 zmatsuo 7525 static const DlgTextInfo TextInfos[] = {
1281     { IDC_VIEWLOG_LABEL, "DLG_TAB_LOG_EDITOR" },
1282     { IDC_DEFAULTNAME_LABEL, "DLG_TAB_LOG_FILENAME" },
1283     { IDC_DEFAULTPATH_LABEL, "DLG_TAB_LOG_FILEPATH" },
1284     { IDC_AUTOSTART, "DLG_TAB_LOG_AUTOSTART" },
1285 yutakapon 5171 // Log rotate
1286 zmatsuo 7525 { IDC_LOG_ROTATE, "DLG_TAB_LOG_ROTATE" },
1287     { IDC_ROTATE_SIZE_TEXT, "DLG_TAB_LOG_ROTATE_SIZE_TEXT" },
1288     { IDC_ROTATE_STEP_TEXT, "DLG_TAB_LOG_ROTATESTEP" },
1289 yutakapon 5613 // Log options
1290 zmatsuo 7525 // FIXME: ���b�Z�[�W�J�^���O�����������O�I�v�V���������������p�������A�A�N�Z�����[�^�L�[���d�������������������B
1291     { IDC_LOG_OPTION_GROUP, "DLG_FOPT" },
1292     { IDC_OPT_BINARY, "DLG_FOPT_BINARY" },
1293     { IDC_OPT_APPEND, "DLG_FOPT_APPEND" },
1294     { IDC_OPT_PLAINTEXT, "DLG_FOPT_PLAIN" },
1295     { IDC_OPT_HIDEDLG, "DLG_FOPT_HIDEDIALOG" },
1296     { IDC_OPT_INCBUF, "DLG_FOPT_ALLBUFFINFIRST" },
1297     { IDC_OPT_TIMESTAMP, "DLG_FOPT_TIMESTAMP" },
1298     };
1299     SetDlgTexts(m_hWnd, TextInfos, _countof(TextInfos), ts.UILanguageFile);
1300 maya 3227
1301 zmatsuo 8569 const static I18nTextInfo fopt_timestamp[] = {
1302     { "DLG_FOPT_TIMESTAMP_LOCAL", L"Local Time" },
1303     { "DLG_FOPT_TIMESTAMP_UTC", L"UTC" },
1304     { "DLG_FOPT_TIMESTAMP_ELAPSED_LOGGING", L"Elapsed Time (Logging)" },
1305     { "DLG_FOPT_TIMESTAMP_ELAPSED_CONNECTION", L"Elapsed Time (Connection)" },
1306     };
1307     SetI18nList("Tera Term", m_hWnd, IDC_OPT_TIMESTAMP_TYPE, fopt_timestamp, _countof(fopt_timestamp),
1308     ts.UILanguageFile, 0);
1309 maya 3227
1310     // Viewlog Editor path (2005.1.29 yutaka)
1311 zmatsuo 7525 SetDlgItemTextA(IDC_VIEWLOG_EDITOR, ts.ViewlogEditor);
1312 maya 3227
1313     // Log Default File Name (2006.8.28 maya)
1314 zmatsuo 7525 SetDlgItemTextA(IDC_DEFAULTNAME_EDITOR, ts.LogDefaultName);
1315 maya 3227
1316     // Log Default File Path (2007.5.30 maya)
1317 zmatsuo 7525 SetDlgItemTextA(IDC_DEFAULTPATH_EDITOR, ts.LogDefaultPath);
1318 maya 3227
1319     /* Auto start logging (2007.5.31 maya) */
1320 zmatsuo 7525 SetCheck(IDC_AUTOSTART, ts.LogAutoStart);
1321 maya 3227
1322 yutakapon 5171 // Log rotate
1323 zmatsuo 7525 SetCheck(IDC_LOG_ROTATE, ts.LogRotate != ROTATE_NONE);
1324 yutakapon 5171
1325 zmatsuo 7525 for (int i = 0 ; i < LOG_ROTATE_SIZETYPE_NUM ; i++) {
1326     SendDlgItemMessageA(IDC_ROTATE_SIZE_TYPE, CB_ADDSTRING, 0, (LPARAM)LogRotateSizeType[i]);
1327 yutakapon 5171 }
1328 zmatsuo 7525 int TmpLogRotateSize = ts.LogRotateSize;
1329     for (int i = 0 ; i < ts.LogRotateSizeType ; i++)
1330 maya 5762 TmpLogRotateSize /= 1024;
1331     SetDlgItemInt(IDC_ROTATE_SIZE, TmpLogRotateSize, FALSE);
1332 zmatsuo 7525 SendDlgItemMessageA(IDC_ROTATE_SIZE_TYPE, CB_SELECTSTRING, -1, (LPARAM)GetLogRotateSizeType(ts.LogRotateSizeType));
1333 yutakapon 5171 SetDlgItemInt(IDC_ROTATE_STEP, ts.LogRotateStep, FALSE);
1334     if (ts.LogRotate == ROTATE_NONE) {
1335 zmatsuo 7525 EnableDlgItem(IDC_ROTATE_SIZE_TEXT, FALSE);
1336     EnableDlgItem(IDC_ROTATE_SIZE, FALSE);
1337     EnableDlgItem(IDC_ROTATE_SIZE_TYPE, FALSE);
1338     EnableDlgItem(IDC_ROTATE_STEP_TEXT, FALSE);
1339     EnableDlgItem(IDC_ROTATE_STEP, FALSE);
1340 yutakapon 5171 } else {
1341 zmatsuo 7525 EnableDlgItem(IDC_ROTATE_SIZE_TEXT, TRUE);
1342     EnableDlgItem(IDC_ROTATE_SIZE, TRUE);
1343     EnableDlgItem(IDC_ROTATE_SIZE_TYPE, TRUE);
1344     EnableDlgItem(IDC_ROTATE_STEP_TEXT, TRUE);
1345     EnableDlgItem(IDC_ROTATE_STEP, TRUE);
1346 yutakapon 5171 }
1347    
1348 yutakapon 5613 // Log options
1349 zmatsuo 7525 SetCheck(IDC_OPT_BINARY, ts.LogBinary != 0);
1350 yutakapon 5613 if (ts.LogBinary) {
1351 zmatsuo 7525 EnableDlgItem(IDC_OPT_PLAINTEXT, FALSE);
1352     EnableDlgItem(IDC_OPT_TIMESTAMP, FALSE);
1353 yutakapon 5613 } else {
1354 zmatsuo 7525 EnableDlgItem(IDC_OPT_PLAINTEXT, TRUE);
1355     EnableDlgItem(IDC_OPT_TIMESTAMP, TRUE);
1356 yutakapon 5613 }
1357 zmatsuo 7525 SetCheck(IDC_OPT_APPEND, ts.Append != 0);
1358     SetCheck(IDC_OPT_PLAINTEXT, ts.LogTypePlainText != 0);
1359     SetCheck(IDC_OPT_HIDEDLG, ts.LogHideDialog != 0);
1360     SetCheck(IDC_OPT_INCBUF, ts.LogAllBuffIncludedInFirst != 0);
1361     SetCheck(IDC_OPT_TIMESTAMP, ts.LogTimestamp != 0);
1362 yutakapon 5171
1363 zmatsuo 7525 SetCurSel(IDC_OPT_TIMESTAMP_TYPE, ts.LogTimestampType);
1364 doda 6956 if (ts.LogBinary || !ts.LogTimestamp) {
1365 zmatsuo 7525 EnableDlgItem(IDC_OPT_TIMESTAMP_TYPE, FALSE);
1366 doda 6956 }
1367     else {
1368 zmatsuo 7525 EnableDlgItem(IDC_OPT_TIMESTAMP_TYPE, TRUE);
1369 doda 6956 }
1370     /*
1371     switch (ts.LogTimestampType) {
1372     case CSF_CBRW:
1373     cmb->SetCurSel(3);
1374     break;
1375     case CSF_CBREAD:
1376     cmb->SetCurSel(2);
1377     break;
1378     case CSF_CBWRITE:
1379     cmb->SetCurSel(1);
1380     break;
1381     default: // off
1382     cmb->SetCurSel(0);
1383     break;
1384     }
1385     */
1386 yutakapon 5613
1387 maya 3227 // �_�C�A���O���t�H�[�J�X��������
1388     ::SetFocus(::GetDlgItem(GetSafeHwnd(), IDC_VIEWLOG_EDITOR));
1389     }
1390    
1391     BOOL CLogPropPageDlg::OnCommand(WPARAM wParam, LPARAM lParam)
1392     {
1393     switch (wParam) {
1394     case IDC_VIEWLOG_PATH | (BN_CLICKED << 16):
1395     {
1396 zmatsuo 8619 wchar_t fileW[_countof(ts.ViewlogEditor)];
1397     MultiByteToWideChar(CP_ACP, 0, ts.ViewlogEditor, -1, fileW, _countof(fileW));
1398 maya 3227
1399 zmatsuo 8619 OPENFILENAMEW ofn;
1400    
1401     memset(&ofn, 0, sizeof(ofn));
1402     ofn.lStructSize = get_OPENFILENAME_SIZEW();
1403 maya 3227 ofn.hwndOwner = GetSafeHwnd();
1404 zmatsuo 8619 ofn.lpstrFilter = TTGetLangStrW("Tera Term", "FILEDLG_SELECT_LOGVIEW_APP_FILTER", L"exe(*.exe)\\0*.exe\\0all(*.*)\\0*.*\\0\\0", ts.UILanguageFile);
1405     ofn.lpstrFile = fileW;
1406     ofn.nMaxFile = _countof(fileW);
1407     ofn.lpstrTitle = TTGetLangStrW("Tera Term", "FILEDLG_SELECT_LOGVIEW_APP_TITLE", L"Choose a executing file with launching logging file", ts.UILanguageFile);
1408 maya 7775 ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
1409 zmatsuo 8619 BOOL ok = _GetOpenFileNameW(&ofn);
1410     if (ok) {
1411     char *file = ToCharW(fileW);
1412     strncpy_s(ts.ViewlogEditor, sizeof(ts.ViewlogEditor), file, _TRUNCATE);
1413     free(file);
1414 zmatsuo 7525 SetDlgItemTextA(IDC_VIEWLOG_EDITOR, ts.ViewlogEditor);
1415 maya 3227 }
1416 zmatsuo 8619 free((void *)ofn.lpstrFilter);
1417     free((void *)ofn.lpstrTitle);
1418 maya 3227 }
1419     return TRUE;
1420    
1421     case IDC_DEFAULTPATH_PUSH | (BN_CLICKED << 16):
1422     // ���O�f�B���N�g�����I���_�C�A���O
1423 zmatsuo 7938 {
1424 zmatsuo 8691 wchar_t *title = TTGetLangStrW("Tera Term", "FILEDLG_SELECT_LOGDIR_TITLE", L"Select log folder", ts.UILanguageFile);
1425     wchar_t buf[MAX_PATH];
1426     wchar_t buf2[MAX_PATH];
1427     GetDlgItemTextW(IDC_DEFAULTPATH_EDITOR, buf, _countof(buf));
1428     if (doSelectFolderW(GetSafeHwnd(), buf2, _countof(buf2), buf, title)) {
1429     SetDlgItemTextW(IDC_DEFAULTPATH_EDITOR, buf2);
1430 zmatsuo 7938 }
1431 zmatsuo 8691 free(title);
1432 maya 5778 }
1433 maya 3227
1434     return TRUE;
1435 yutakapon 5171
1436     case IDC_LOG_ROTATE | (BN_CLICKED << 16):
1437     {
1438 zmatsuo 7525 if (GetCheck(IDC_LOG_ROTATE)) {
1439     EnableDlgItem(IDC_ROTATE_SIZE_TEXT, TRUE);
1440     EnableDlgItem(IDC_ROTATE_SIZE, TRUE);
1441     EnableDlgItem(IDC_ROTATE_SIZE_TYPE, TRUE);
1442     EnableDlgItem(IDC_ROTATE_STEP_TEXT, TRUE);
1443     EnableDlgItem(IDC_ROTATE_STEP, TRUE);
1444 yutakapon 5171 } else {
1445 zmatsuo 7525 EnableDlgItem(IDC_ROTATE_SIZE_TEXT, FALSE);
1446     EnableDlgItem(IDC_ROTATE_SIZE, FALSE);
1447     EnableDlgItem(IDC_ROTATE_SIZE_TYPE, FALSE);
1448     EnableDlgItem(IDC_ROTATE_STEP_TEXT, FALSE);
1449     EnableDlgItem(IDC_ROTATE_STEP, FALSE);
1450 doda 6435 }
1451 yutakapon 5171
1452     }
1453     return TRUE;
1454 yutakapon 5613
1455     case IDC_OPT_BINARY | (BN_CLICKED << 16):
1456     {
1457 zmatsuo 7525 if (GetCheck(IDC_OPT_BINARY)) {
1458     EnableDlgItem(IDC_OPT_PLAINTEXT, FALSE);
1459     EnableDlgItem(IDC_OPT_TIMESTAMP, FALSE);
1460     EnableDlgItem(IDC_OPT_TIMESTAMP_TYPE, FALSE);
1461 yutakapon 5613 } else {
1462 zmatsuo 7525 EnableDlgItem(IDC_OPT_PLAINTEXT, TRUE);
1463     EnableDlgItem(IDC_OPT_TIMESTAMP, TRUE);
1464 doda 6956
1465 zmatsuo 7525 if (GetCheck(IDC_OPT_TIMESTAMP)) {
1466     EnableDlgItem(IDC_OPT_TIMESTAMP_TYPE, TRUE);
1467 doda 6956 }
1468 yutakapon 5613 }
1469     }
1470     return TRUE;
1471 doda 6956
1472     case IDC_OPT_TIMESTAMP | (BN_CLICKED << 16):
1473     {
1474 zmatsuo 7525 if (GetCheck(IDC_OPT_TIMESTAMP)) {
1475     EnableDlgItem(IDC_OPT_TIMESTAMP_TYPE, TRUE);
1476 doda 6956 } else {
1477 zmatsuo 7525 EnableDlgItem(IDC_OPT_TIMESTAMP_TYPE, FALSE);
1478 doda 6956 }
1479     }
1480     return TRUE;
1481 maya 3227 }
1482    
1483 zmatsuo 7525 return TTCPropertyPage::OnCommand(wParam, lParam);
1484 maya 3227 }
1485    
1486     void CLogPropPageDlg::OnOK()
1487     {
1488     char buf[80], buf2[80];
1489     time_t time_local;
1490     struct tm *tm_local;
1491    
1492     // Viewlog Editor path (2005.1.29 yutaka)
1493 zmatsuo 7938 GetDlgItemTextA(IDC_VIEWLOG_EDITOR, ts.ViewlogEditor, _countof(ts.ViewlogEditor));
1494 maya 3227
1495     // Log Default File Name (2006.8.28 maya)
1496 zmatsuo 7525 GetDlgItemTextA(IDC_DEFAULTNAME_EDITOR, buf, sizeof(buf));
1497 maya 3227 if (isInvalidStrftimeChar(buf)) {
1498 zmatsuo 8619 static const TTMessageBoxInfoW info = {
1499     "Tera Term",
1500     "MSG_ERROR", L"ERROR",
1501     "MSG_LOGFILE_INVALID_CHAR_ERROR", L"Invalid character is included in log file name." };
1502     TTMessageBoxW(m_hWnd, &info, MB_ICONEXCLAMATION, ts.UILanguageFile);
1503 maya 3227 return;
1504     }
1505 zmatsuo 7525
1506 maya 3227 // ��������������
1507     time(&time_local);
1508     tm_local = localtime(&time_local);
1509     // ����������������
1510     if (strlen(buf) != 0 && strftime(buf2, sizeof(buf2), buf, tm_local) == 0) {
1511 zmatsuo 8619 static const TTMessageBoxInfoW info = {
1512     "Tera Term",
1513     "MSG_ERROR", L"ERROR",
1514     "MSG_LOGFILE_TOOLONG_ERROR", L"The log file name is too long." };
1515     TTMessageBoxW(m_hWnd, &info, MB_ICONEXCLAMATION, ts.UILanguageFile);
1516 maya 3227 return;
1517     }
1518     if (isInvalidFileNameChar(buf2)) {
1519 zmatsuo 8619 static const TTMessageBoxInfoW info = {
1520     "Tera Term",
1521     "MSG_ERROR", L"ERROR",
1522     "MSG_LOGFILE_INVALID_CHAR_ERROR", L"Invalid character is included in log file name." };
1523     TTMessageBoxW(m_hWnd, &info, MB_ICONEXCLAMATION, ts.UILanguageFile);
1524 maya 3227 return;
1525     }
1526     strncpy_s(ts.LogDefaultName, sizeof(ts.LogDefaultName), buf, _TRUNCATE);
1527    
1528     // Log Default File Path (2007.5.30 maya)
1529 zmatsuo 7938 GetDlgItemTextA(IDC_DEFAULTPATH_EDITOR, ts.LogDefaultPath, _countof(ts.LogDefaultPath));
1530 maya 3227
1531     /* Auto start logging (2007.5.31 maya) */
1532 zmatsuo 7525 ts.LogAutoStart = GetCheck(IDC_AUTOSTART);
1533 yutakapon 5171
1534     /* Log Rotate */
1535 zmatsuo 7525 if (GetCheck(IDC_LOG_ROTATE)) { /* on */
1536 yutakapon 5171 ts.LogRotate = ROTATE_SIZE;
1537 zmatsuo 7938 GetDlgItemTextA(IDC_ROTATE_SIZE_TYPE, buf, _countof(buf));
1538 zmatsuo 7525 ts.LogRotateSizeType = 0;
1539     for (int i = 0 ; i < LOG_ROTATE_SIZETYPE_NUM ; i++) {
1540     if (strcmp(buf, LogRotateSizeType[i]) == 0) {
1541     ts.LogRotateSizeType = i;
1542 yutakapon 5171 break;
1543 zmatsuo 7525 }
1544 yutakapon 5171 }
1545     ts.LogRotateSize = GetDlgItemInt(IDC_ROTATE_SIZE);
1546 zmatsuo 7525 for (int i = 0 ; i < ts.LogRotateSizeType ; i++)
1547 yutakapon 5171 ts.LogRotateSize *= 1024;
1548    
1549     ts.LogRotateStep = GetDlgItemInt(IDC_ROTATE_STEP);
1550    
1551     } else { /* off */
1552     ts.LogRotate = ROTATE_NONE;
1553     /* �c���������o�[�����}�I���������c���B*/
1554     }
1555    
1556 doda 6955 // Log Options
1557 zmatsuo 7525 if (GetCheck(IDC_OPT_BINARY)) {
1558 doda 6955 ts.LogBinary = 1;
1559     }
1560     else {
1561     ts.LogBinary = 0;
1562     }
1563    
1564 zmatsuo 7525 if (GetCheck(IDC_OPT_APPEND)) {
1565 doda 6955 ts.Append = 1;
1566     }
1567     else {
1568     ts.Append = 0;
1569     }
1570    
1571 zmatsuo 7525 if (GetCheck(IDC_OPT_PLAINTEXT)) {
1572 doda 6955 ts.LogTypePlainText = 1;
1573     }
1574     else {
1575     ts.LogTypePlainText = 0;
1576     }
1577    
1578 zmatsuo 7525 if (GetCheck(IDC_OPT_HIDEDLG)) {
1579 doda 6955 ts.LogHideDialog = 1;
1580     }
1581     else {
1582     ts.LogHideDialog = 0;
1583     }
1584    
1585 zmatsuo 7525 if (GetCheck(IDC_OPT_INCBUF)) {
1586 doda 6955 ts.LogAllBuffIncludedInFirst = 1;
1587     }
1588     else {
1589     ts.LogAllBuffIncludedInFirst = 0;
1590     }
1591 doda 6956
1592 zmatsuo 7525 if (GetCheck(IDC_OPT_TIMESTAMP)) {
1593 doda 6956 ts.LogTimestamp = 1;
1594     }
1595     else {
1596     ts.LogTimestamp = 0;
1597     }
1598    
1599 zmatsuo 7525 ts.LogTimestampType = GetCurSel(IDC_OPT_TIMESTAMP_TYPE);
1600 maya 3227 }
1601    
1602 zmatsuo 8017 void CLogPropPageDlg::OnHelp()
1603     {
1604 zmatsuo 8853 PostMessage(HVTWin, WM_USER_DLGHELP2, HlpMenuSetupAdditionalLog, 0);
1605 zmatsuo 8017 }
1606    
1607 zmatsuo 7525 /////////////////////////////
1608 maya 3227
1609     // CCygwinPropPageDlg �_�C�A���O
1610    
1611 zmatsuo 8761 CCygwinPropPageDlg::CCygwinPropPageDlg(HINSTANCE inst)
1612     : TTCPropertyPage(inst, CCygwinPropPageDlg::IDD)
1613 maya 3227 {
1614 doda 8445 wchar_t UIMsg[MAX_UIMSG];
1615     get_lang_msgW("DLG_TABSHEET_TITLE_CYGWIN", UIMsg, _countof(UIMsg),
1616     L"Cygwin", ts.UILanguageFile);
1617     m_psp.pszTitle = _wcsdup(UIMsg);
1618 zmatsuo 8017 m_psp.dwFlags |= (PSP_USETITLE | PSP_HASHELP);
1619 maya 3227 }
1620    
1621     CCygwinPropPageDlg::~CCygwinPropPageDlg()
1622     {
1623 zmatsuo 7525 free((void *)m_psp.pszTitle);
1624 maya 3227 }
1625    
1626     // CCygwinPropPageDlg ���b�Z�[�W �n���h��
1627    
1628 zmatsuo 7525 void CCygwinPropPageDlg::OnInitDialog()
1629 maya 3227 {
1630 zmatsuo 7525 TTCPropertyPage::OnInitDialog();
1631 maya 3227
1632 zmatsuo 7525 static const DlgTextInfo TextInfos[] = {
1633     { IDC_CYGWIN_PATH_LABEL, "DLG_TAB_CYGWIN_PATH" }
1634     };
1635     SetDlgTexts(m_hWnd, TextInfos, _countof(TextInfos), ts.UILanguageFile);
1636 maya 3227
1637 zmatsuo 7525 memcpy(&settings, &ts.CygtermSettings, sizeof(cygterm_t));
1638 maya 3227
1639 zmatsuo 7525 SetDlgItemTextA(IDC_TERM_EDIT, settings.term);
1640     SetDlgItemTextA(IDC_TERM_TYPE, settings.term_type);
1641     SetDlgItemTextA(IDC_PORT_START, settings.port_start);
1642     SetDlgItemTextA(IDC_PORT_RANGE, settings.port_range);
1643     SetDlgItemTextA(IDC_SHELL, settings.shell);
1644     SetDlgItemTextA(IDC_ENV1, settings.env1);
1645     SetDlgItemTextA(IDC_ENV2, settings.env2);
1646 maya 3227
1647 zmatsuo 7525 SetCheck(IDC_LOGIN_SHELL, settings.login_shell);
1648     SetCheck(IDC_HOME_CHDIR, settings.home_chdir);
1649     SetCheck(IDC_AGENT_PROXY, settings.agent_proxy);
1650 maya 3227
1651     // Cygwin install path
1652 zmatsuo 7525 SetDlgItemTextA(IDC_CYGWIN_PATH, ts.CygwinDirectory);
1653 maya 3227
1654     // �_�C�A���O���t�H�[�J�X��������
1655     ::SetFocus(::GetDlgItem(GetSafeHwnd(), IDC_CYGWIN_PATH));
1656     }
1657    
1658     BOOL CCygwinPropPageDlg::OnCommand(WPARAM wParam, LPARAM lParam)
1659     {
1660 zmatsuo 8691 wchar_t buf[MAX_PATH], buf2[MAX_PATH];
1661 maya 5778
1662 maya 3227 switch (wParam) {
1663     case IDC_SELECT_FILE | (BN_CLICKED << 16):
1664     // Cygwin install �f�B���N�g�����I���_�C�A���O
1665 zmatsuo 8691 wchar_t *title = TTGetLangStrW("Tera Term", "DIRDLG_CYGTERM_DIR_TITLE", L"Select Cygwin directory", ts.UILanguageFile);
1666     GetDlgItemTextW(IDC_CYGWIN_PATH, buf, _countof(buf));
1667     if (doSelectFolderW(GetSafeHwnd(), buf2, _countof(buf2), buf, title)) {
1668     SetDlgItemTextW(IDC_CYGWIN_PATH, buf2);
1669 maya 5778 }
1670 zmatsuo 8691 free(title);
1671 maya 3227 return TRUE;
1672     }
1673    
1674 zmatsuo 7525 return TTCPropertyPage::OnCommand(wParam, lParam);
1675 maya 3227 }
1676    
1677     void CCygwinPropPageDlg::OnOK()
1678     {
1679     // writing to CygTerm config file
1680 zmatsuo 7525 GetDlgItemTextA(IDC_TERM_EDIT, settings.term, sizeof(settings.term));
1681     GetDlgItemTextA(IDC_TERM_TYPE, settings.term_type, sizeof(settings.term_type));
1682     GetDlgItemTextA(IDC_PORT_START, settings.port_start, sizeof(settings.port_start));
1683     GetDlgItemTextA(IDC_PORT_RANGE, settings.port_range, sizeof(settings.port_range));
1684     GetDlgItemTextA(IDC_SHELL, settings.shell, sizeof(settings.shell));
1685     GetDlgItemTextA(IDC_ENV1, settings.env1, sizeof(settings.env1));
1686     GetDlgItemTextA(IDC_ENV2, settings.env2, sizeof(settings.env2));
1687 maya 3227
1688 zmatsuo 7525 settings.login_shell = GetCheck(IDC_LOGIN_SHELL);
1689     settings.home_chdir = GetCheck(IDC_HOME_CHDIR);
1690     settings.agent_proxy = GetCheck(IDC_AGENT_PROXY);
1691    
1692 yutakapon 6119 memcpy(&ts.CygtermSettings, &settings, sizeof(cygterm_t));
1693 maya 3227
1694 yutakapon 6119 // �������������������t���O�������������B
1695     ts.CygtermSettings.update_flag = TRUE;
1696 maya 3227
1697     // Cygwin install path
1698 zmatsuo 7525 GetDlgItemTextA(IDC_CYGWIN_PATH, ts.CygwinDirectory, sizeof(ts.CygwinDirectory));
1699 maya 3227 }
1700    
1701 zmatsuo 8017 void CCygwinPropPageDlg::OnHelp()
1702     {
1703     PostMessage(HVTWin, WM_USER_DLGHELP2, HlpMenuSetupAdditional, 0);
1704     }
1705    
1706 zmatsuo 8761 //////////////////////////////////////////////////////////////////////////////
1707    
1708     #define REWRITE_TEMPLATE 1
1709     // quick hack :-(
1710 zmatsuo 8767 HINSTANCE CAddSettingPropSheetDlg::ghInstance;
1711     class CAddSettingPropSheetDlg *CAddSettingPropSheetDlg::gTTCPS;
1712 zmatsuo 8761
1713     int CALLBACK CAddSettingPropSheetDlg::PropSheetProc(HWND hWnd, UINT msg, LPARAM lp)
1714     {
1715     switch (msg) {
1716     case PSCB_PRECREATE:
1717     {
1718     #if defined(REWRITE_TEMPLATE)
1719     // �e���v���[�g�����e������������
1720     // http://home.att.ne.jp/banana/akatsuki/doc/atlwtl/atlwtl15-01/index.html
1721     size_t PrevTemplSize;
1722     size_t NewTemplSize;
1723     DLGTEMPLATE *NewTempl =
1724     TTGetNewDlgTemplate(ghInstance, (DLGTEMPLATE *)lp,
1725     &PrevTemplSize, &NewTemplSize);
1726     NewTempl->style &= ~DS_CONTEXTHELP; // check DLGTEMPLATEEX
1727     memcpy((void *)lp, NewTempl, NewTemplSize);
1728     free(NewTempl);
1729     #endif
1730     break;
1731     }
1732     case PSCB_INITIALIZED:
1733     {
1734     CAddSettingPropSheetDlg *self = gTTCPS;
1735     self->m_hWnd = hWnd;
1736     CenterWindow(hWnd, self->m_hParentWnd);
1737     break;
1738     }
1739     }
1740     return 0;
1741     }
1742    
1743 maya 3227 // CAddSettingPropSheetDlg
1744 zmatsuo 8761 CAddSettingPropSheetDlg::CAddSettingPropSheetDlg(HINSTANCE hInstance, HWND hParentWnd)
1745 maya 3227 {
1746 zmatsuo 8761 m_hInst = hInstance;
1747     m_hWnd = 0;
1748     m_hParentWnd = hParentWnd;
1749     memset(&m_psh, 0, sizeof(m_psh));
1750     m_psh.dwSize = sizeof(m_psh);
1751 zmatsuo 8767 m_psh.dwFlags = PSH_DEFAULT | PSH_NOAPPLYNOW | PSH_USECALLBACK;
1752 zmatsuo 8761 //m_psh.dwFlags |= PSH_PROPTITLE; // �u���v���p�e�B�[�v������������?
1753     m_psh.hwndParent = hParentWnd;
1754     m_psh.hInstance = hInstance;
1755     m_psh.pfnCallback = PropSheetProc;
1756    
1757 zmatsuo 8767 // CPP,tmfc��TTCPropertyPage�h���N���X��������
1758 doda 8445 int i = 0;
1759 zmatsuo 8761 m_Page[i++] = new CGeneralPropPageDlg(hInstance);
1760     m_Page[i++] = new CSequencePropPageDlg(hInstance);
1761     m_Page[i++] = new CCopypastePropPageDlg(hInstance);
1762     m_Page[i++] = new CVisualPropPageDlg(hInstance);
1763     m_Page[i++] = new CLogPropPageDlg(hInstance);
1764     m_Page[i++] = new CCygwinPropPageDlg(hInstance);
1765 doda 8445 if ((GetKeyState(VK_CONTROL) & 0x8000) != 0 ||
1766     (GetKeyState(VK_SHIFT) & 0x8000) != 0 ) {
1767 zmatsuo 8761 m_Page[i++] = new CDebugPropPage(hInstance);
1768 doda 8445 }
1769 zmatsuo 8767 m_PageCountCPP = i;
1770     for (i = 0; i < m_PageCountCPP; i++) {
1771 doda 8445 hPsp[i] = m_Page[i]->CreatePropertySheetPage();
1772     }
1773    
1774 zmatsuo 8767 // TTCPropertyPage ���g�p������ PropertyPage
1775     hPsp[m_PageCountCPP+0] = CodingPageCreate(hInstance, &ts);
1776 zmatsuo 8771 hPsp[m_PageCountCPP+1] = FontPageCreate(hInstance, &ts);
1777     m_PageCount = m_PageCountCPP + 2;
1778 zmatsuo 8767
1779 doda 8445 m_psh.nPages = m_PageCount;
1780 zmatsuo 7525 m_psh.phpage = hPsp;
1781 maya 3227
1782 doda 8445 wchar_t UIMsg[MAX_UIMSG];
1783     get_lang_msgW("DLG_TABSHEET_TITLE", UIMsg, _countof(UIMsg),
1784     L"Tera Term: Additional settings", ts.UILanguageFile);
1785     m_psh.pszCaption = _wcsdup(UIMsg);
1786 maya 3227 }
1787    
1788     CAddSettingPropSheetDlg::~CAddSettingPropSheetDlg()
1789     {
1790 zmatsuo 7525 free((void*)m_psh.pszCaption);
1791 zmatsuo 8767 for (int i = 0; i < m_PageCountCPP; i++) {
1792 doda 8445 delete m_Page[i];
1793     }
1794 maya 3227 }
1795    
1796 zmatsuo 8761 INT_PTR CAddSettingPropSheetDlg::DoModal()
1797 zmatsuo 7592 {
1798 zmatsuo 8761 ghInstance = m_hInst;
1799     gTTCPS = this;
1800     return _PropertySheetW(&m_psh);
1801 zmatsuo 7592 }

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