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 2628 - (show annotations) (download) (as text)
Wed Dec 24 09:38:42 2008 UTC (15 years, 3 months ago) by doda
Original Path: teraterm/trunk/teraterm/addsetting.cpp
File MIME type: text/x-c++src
File size: 42445 byte(s)
Controlを押している間はMouse Event Trackingを無効に出来るようにした。
http://sourceforge.jp/tracker/index.php?func=detail&aid=14342&group_id=1412&atid=5336

1 /*
2 * Additional settings dialog
3 */
4
5 #include <afxwin.h>
6 #include <afxdlgs.h>
7 #include <afxcmn.h>
8 #include <commctrl.h>
9
10 #include "addsetting.h"
11 #include "teraterm.h"
12 #include "tttypes.h"
13 #include "ttwinman.h"
14
15 mouse_cursor_t MouseCursor[] = {
16 {"ARROW", IDC_ARROW},
17 {"IBEAM", IDC_IBEAM},
18 {"CROSS", IDC_CROSS},
19 {"HAND", IDC_HAND},
20 {NULL, NULL},
21 };
22 #define MOUSE_CURSOR_MAX (sizeof(MouseCursor)/sizeof(MouseCursor[0]) - 1)
23
24 // –{‘Ì‚Í vtwin.cpp
25 extern void SetWindowStyle(TTTSet *ts);
26
27 void split_buffer(char *buffer, int delimiter, char **head, char **body)
28 {
29 char *p1, *p2;
30
31 *head = *body = NULL;
32
33 if (!isalnum(*buffer) || (p1 = strchr(buffer, delimiter)) == NULL) {
34 return;
35 }
36
37 *head = buffer;
38
39 p2 = buffer;
40 while (p2 < p1 && !isspace(*p2)) {
41 p2++;
42 }
43
44 *p2 = '\0';
45
46 p1++;
47 while (*p1 && isspace(*p1)) {
48 p1++;
49 }
50
51 *body = p1;
52 }
53
54
55 static void SetupRGBbox(HWND hDlgWnd, int index)
56 {
57 HWND hWnd;
58 BYTE c;
59 char buf[10];
60
61 hWnd = GetDlgItem(hDlgWnd, IDC_COLOR_RED);
62 c = GetRValue(ts.ANSIColor[index]);
63 _snprintf_s(buf, sizeof(buf), _TRUNCATE, "%d", c);
64 SendMessage(hWnd, WM_SETTEXT , 0, (LPARAM)buf);
65
66 hWnd = GetDlgItem(hDlgWnd, IDC_COLOR_GREEN);
67 c = GetGValue(ts.ANSIColor[index]);
68 _snprintf_s(buf, sizeof(buf), _TRUNCATE, "%d", c);
69 SendMessage(hWnd, WM_SETTEXT , 0, (LPARAM)buf);
70
71 hWnd = GetDlgItem(hDlgWnd, IDC_COLOR_BLUE);
72 c = GetBValue(ts.ANSIColor[index]);
73 _snprintf_s(buf, sizeof(buf), _TRUNCATE, "%d", c);
74 SendMessage(hWnd, WM_SETTEXT , 0, (LPARAM)buf);
75 }
76
77
78
79 // CGeneralPropPageDlg ƒ_ƒCƒAƒ�ƒO
80
81 IMPLEMENT_DYNAMIC(CGeneralPropPageDlg, CPropertyPage)
82
83 CGeneralPropPageDlg::CGeneralPropPageDlg()
84 : CPropertyPage(CGeneralPropPageDlg::IDD)
85 {
86 }
87
88 CGeneralPropPageDlg::~CGeneralPropPageDlg()
89 {
90 if (DlgGeneralFont != NULL) {
91 DeleteObject(DlgGeneralFont);
92 }
93 }
94
95 BEGIN_MESSAGE_MAP(CGeneralPropPageDlg, CPropertyPage)
96 END_MESSAGE_MAP()
97
98 // CGeneralPropPageDlg ƒ�ƒbƒZ�[ƒW ƒnƒ“ƒhƒ‰
99
100 BOOL CGeneralPropPageDlg::OnInitDialog()
101 {
102 char uimsg[MAX_UIMSG];
103 char buf[64];
104 CButton *btn, *btn2;
105 CComboBox *cmb;
106
107 CPropertyPage::OnInitDialog();
108
109 font = (HFONT)SendMessage(WM_GETFONT, 0, 0);
110 GetObject(font, sizeof(LOGFONT), &logfont);
111 if (get_lang_font("DLG_TAHOMA_FONT", GetSafeHwnd(), &logfont, &DlgGeneralFont, ts.UILanguageFile)) {
112 SendDlgItemMessage(IDC_CLICKABLE_URL, WM_SETFONT, (WPARAM)DlgGeneralFont, MAKELPARAM(TRUE,0));
113 SendDlgItemMessage(IDC_DISABLE_SENDBREAK, WM_SETFONT, (WPARAM)DlgGeneralFont, MAKELPARAM(TRUE,0));
114 SendDlgItemMessage(IDC_ACCEPT_BROADCAST, WM_SETFONT, (WPARAM)DlgGeneralFont, MAKELPARAM(TRUE,0)); // 337: 2007/03/20
115 SendDlgItemMessage(IDC_MOUSEWHEEL_SCROLL_LINE, WM_SETFONT, (WPARAM)DlgGeneralFont, MAKELPARAM(TRUE,0));
116 SendDlgItemMessage(IDC_SCROLL_LINE, WM_SETFONT, (WPARAM)DlgGeneralFont, MAKELPARAM(TRUE,0));
117 SendDlgItemMessage(IDC_AUTOSCROLL_ONLY_IN_BOTTOM_LINE, WM_SETFONT, (WPARAM)DlgGeneralFont, MAKELPARAM(TRUE,0));
118 SendDlgItemMessage(IDC_ACCEPT_MOUSE_EVENT_TRACKING, WM_SETFONT, (WPARAM)DlgGeneralFont, MAKELPARAM(TRUE,0));
119 SendDlgItemMessage(IDC_DISABLE_MOUSE_TRACKING_CTRL, WM_SETFONT, (WPARAM)DlgGeneralFont, MAKELPARAM(TRUE,0));
120 SendDlgItemMessage(IDC_ACCEPT_TITLE_CHANGING_LABEL, WM_SETFONT, (WPARAM)DlgGeneralFont, MAKELPARAM(TRUE,0));
121 SendDlgItemMessage(IDC_ACCEPT_TITLE_CHANGING, WM_SETFONT, (WPARAM)DlgGeneralFont, MAKELPARAM(TRUE,0));
122 }
123 else {
124 DlgGeneralFont = NULL;
125 }
126
127 GetDlgItemText(IDC_CLICKABLE_URL, uimsg, sizeof(uimsg));
128 get_lang_msg("DLG_TAB_GENERAL_CLICKURL", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
129 SetDlgItemText(IDC_CLICKABLE_URL, ts.UIMsg);
130 GetDlgItemText(IDC_DISABLE_SENDBREAK, uimsg, sizeof(uimsg));
131 get_lang_msg("DLG_TAB_GENERAL_DISABLESENDBREAK", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
132 SetDlgItemText(IDC_DISABLE_SENDBREAK, ts.UIMsg);
133 GetDlgItemText(IDC_ACCEPT_BROADCAST, uimsg, sizeof(uimsg));
134 get_lang_msg("DLG_TAB_GENERAL_ACCEPTBROADCAST", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
135 SetDlgItemText(IDC_ACCEPT_BROADCAST, ts.UIMsg);
136 GetDlgItemText(IDC_MOUSEWHEEL_SCROLL_LINE, uimsg, sizeof(uimsg));
137 get_lang_msg("DLG_TAB_GENERAL_MOUSEWHEEL_SCROLL_LINE", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
138 SetDlgItemText(IDC_MOUSEWHEEL_SCROLL_LINE, ts.UIMsg);
139 GetDlgItemText(IDC_AUTOSCROLL_ONLY_IN_BOTTOM_LINE, uimsg, sizeof(uimsg));
140 get_lang_msg("DLG_TAB_GENERAL_AUTOSCROLL_ONLY_IN_BOTTOM_LINE", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
141 SetDlgItemText(IDC_AUTOSCROLL_ONLY_IN_BOTTOM_LINE, ts.UIMsg);
142 GetDlgItemText(IDC_ACCEPT_MOUSE_EVENT_TRACKING, uimsg, sizeof(uimsg));
143 get_lang_msg("DLG_TAB_GENERAL_ACCEPT_MOUSE_EVENT_TRACKING", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
144 SetDlgItemText(IDC_ACCEPT_MOUSE_EVENT_TRACKING, ts.UIMsg);
145 GetDlgItemText(IDC_DISABLE_MOUSE_TRACKING_CTRL, uimsg, sizeof(uimsg));
146 get_lang_msg("DLG_TAB_GENERAL_DISABLE_MOUSE_TRACKING_CTRL", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
147 SetDlgItemText(IDC_DISABLE_MOUSE_TRACKING_CTRL, ts.UIMsg);
148 GetDlgItemText(IDC_ACCEPT_TITLE_CHANGING_LABEL, uimsg, sizeof(uimsg));
149 get_lang_msg("DLG_TAB_GENERAL_ACCEPT_TITLE_CHANGING", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
150 SetDlgItemText(IDC_ACCEPT_TITLE_CHANGING_LABEL, ts.UIMsg);
151
152 get_lang_msg("DLG_TAB_GENERAL_ACCEPT_TITLE_CHANGING_OFF", ts.UIMsg, sizeof(ts.UIMsg), "off", ts.UILanguageFile);
153 SendDlgItemMessage(IDC_ACCEPT_TITLE_CHANGING, CB_ADDSTRING, 0, (LPARAM)ts.UIMsg);
154 get_lang_msg("DLG_TAB_GENERAL_ACCEPT_TITLE_CHANGING_OVERWRITE", ts.UIMsg, sizeof(ts.UIMsg), "overwrite", ts.UILanguageFile);
155 SendDlgItemMessage(IDC_ACCEPT_TITLE_CHANGING, CB_ADDSTRING, 0, (LPARAM)ts.UIMsg);
156 get_lang_msg("DLG_TAB_GENERAL_ACCEPT_TITLE_CHANGING_AHEAD", ts.UIMsg, sizeof(ts.UIMsg), "ahead", ts.UILanguageFile);
157 SendDlgItemMessage(IDC_ACCEPT_TITLE_CHANGING, CB_ADDSTRING, 0, (LPARAM)ts.UIMsg);
158 get_lang_msg("DLG_TAB_GENERAL_ACCEPT_TITLE_CHANGING_LAST", ts.UIMsg, sizeof(ts.UIMsg), "last", ts.UILanguageFile);
159 SendDlgItemMessage(IDC_ACCEPT_TITLE_CHANGING, CB_ADDSTRING, 0, (LPARAM)ts.UIMsg);
160
161
162 // (1)DisableAcceleratorSendBreak
163 btn = (CButton *)GetDlgItem(IDC_DISABLE_SENDBREAK);
164 btn->SetCheck(ts.DisableAcceleratorSendBreak);
165
166 // (2)EnableClickableUrl
167 btn = (CButton *)GetDlgItem(IDC_CLICKABLE_URL);
168 btn->SetCheck(ts.EnableClickableUrl);
169
170 // (3)AcceptBroadcast 337: 2007/03/20
171 btn = (CButton *)GetDlgItem(IDC_ACCEPT_BROADCAST);
172 btn->SetCheck(ts.AcceptBroadcast);
173
174 // (4)IDC_MOUSEWHEEL_SCROLL_LINE
175 _snprintf_s(buf, sizeof(buf), "%d", ts.MouseWheelScrollLine);
176 SetDlgItemText(IDC_SCROLL_LINE, buf);
177
178 // (5)IDC_AUTOSCROLL_ONLY_IN_BOTTOM_LINE
179 btn = (CButton *)GetDlgItem(IDC_AUTOSCROLL_ONLY_IN_BOTTOM_LINE);
180 btn->SetCheck(ts.AutoScrollOnlyInBottomLine);
181
182 // (6)IDC_ACCEPT_MOUSE_EVENT_TRACKING
183 btn = (CButton *)GetDlgItem(IDC_ACCEPT_MOUSE_EVENT_TRACKING);
184 btn2 = (CButton *)GetDlgItem(IDC_DISABLE_MOUSE_TRACKING_CTRL);
185 btn->SetCheck(ts.MouseEventTracking);
186 if (ts.MouseEventTracking) {
187 btn2->EnableWindow(TRUE);
188 } else {
189 btn2->EnableWindow(FALSE);
190 }
191
192 // (7)IDC_DISABLE_MOUSE_TRACKING_CTRL
193 btn2->SetCheck(ts.DisableMouseTrackingByCtrl);
194
195 // (8)IDC_ACCEPT_TITLE_CHANGING
196 cmb = (CComboBox *)GetDlgItem(IDC_ACCEPT_TITLE_CHANGING);
197 cmb->SetCurSel(ts.AcceptTitleChangeRequest);
198
199 // ƒ_ƒCƒAƒ�ƒO‚ɃtƒH�[ƒJƒX‚ð“–‚Ä‚é (2004.12.7 yutaka)
200 ::SetFocus(::GetDlgItem(GetSafeHwnd(), IDC_CLICKABLE_URL));
201
202 return FALSE;
203 }
204
205 BOOL CGeneralPropPageDlg::OnCommand(WPARAM wParam, LPARAM lParam)
206 {
207 CButton *btn, *btn2;
208
209 switch (wParam) {
210 case IDC_ACCEPT_MOUSE_EVENT_TRACKING | (BN_CLICKED << 16):
211 btn = (CButton *)GetDlgItem(IDC_ACCEPT_MOUSE_EVENT_TRACKING);
212 btn2 = (CButton *)GetDlgItem(IDC_DISABLE_MOUSE_TRACKING_CTRL);
213 if (btn->GetCheck()) {
214 btn2->EnableWindow(TRUE);
215 } else {
216 btn2->EnableWindow(FALSE);
217 }
218 return TRUE;
219 }
220 return CPropertyPage::OnCommand(wParam, lParam);
221 }
222
223 void CGeneralPropPageDlg::OnOK()
224 {
225 CButton *btn;
226 CComboBox *cmb;
227 char buf[64];
228 int val;
229
230 // (1)
231 btn = (CButton *)GetDlgItem(IDC_DISABLE_SENDBREAK);
232 ts.DisableAcceleratorSendBreak = btn->GetCheck();
233
234 // (2)
235 btn = (CButton *)GetDlgItem(IDC_CLICKABLE_URL);
236 ts.EnableClickableUrl = btn->GetCheck();
237
238 // (3) 337: 2007/03/20
239 btn = (CButton *)GetDlgItem(IDC_ACCEPT_BROADCAST);
240 ts.AcceptBroadcast = btn->GetCheck();
241
242 // (4)IDC_MOUSEWHEEL_SCROLL_LINE
243 GetDlgItemText(IDC_SCROLL_LINE, buf, sizeof(buf));
244 val = atoi(buf);
245 if (val > 0)
246 ts.MouseWheelScrollLine = val;
247
248 // (5)IDC_AUTOSCROLL_ONLY_IN_BOTTOM_LINE
249 btn = (CButton *)GetDlgItem(IDC_AUTOSCROLL_ONLY_IN_BOTTOM_LINE);
250 ts.AutoScrollOnlyInBottomLine = btn->GetCheck();
251
252 // (6)IDC_ACCEPT_MOUSE_EVENT_TRACKING
253 btn = (CButton *)GetDlgItem(IDC_ACCEPT_MOUSE_EVENT_TRACKING);
254 ts.MouseEventTracking = btn->GetCheck();
255
256 // (7)IDC_DISABLE_MOUSE_TRACKING_CTRL
257 btn = (CButton *)GetDlgItem(IDC_DISABLE_MOUSE_TRACKING_CTRL);
258 ts.DisableMouseTrackingByCtrl = btn->GetCheck();
259
260 // (8)IDC_ACCEPT_TITLE_CHANGING
261 cmb = (CComboBox *)GetDlgItem(IDC_ACCEPT_TITLE_CHANGING);
262 ts.AcceptTitleChangeRequest = cmb->GetCurSel();
263 }
264
265
266
267 // CCopypastePropPageDlg ƒ_ƒCƒAƒ�ƒO
268
269 IMPLEMENT_DYNAMIC(CCopypastePropPageDlg, CPropertyPage)
270
271 CCopypastePropPageDlg::CCopypastePropPageDlg()
272 : CPropertyPage(CCopypastePropPageDlg::IDD)
273 {
274 }
275
276 CCopypastePropPageDlg::~CCopypastePropPageDlg()
277 {
278 if (DlgCopypasteFont != NULL) {
279 DeleteObject(DlgCopypasteFont);
280 }
281 }
282
283 BEGIN_MESSAGE_MAP(CCopypastePropPageDlg, CPropertyPage)
284 END_MESSAGE_MAP()
285
286 // CCopypastePropPageDlg ƒ�ƒbƒZ�[ƒW ƒnƒ“ƒhƒ‰
287
288 BOOL CCopypastePropPageDlg::OnInitDialog()
289 {
290 char uimsg[MAX_UIMSG];
291 CButton *btn, *btn2;
292
293 CPropertyPage::OnInitDialog();
294
295 font = (HFONT)SendMessage(WM_GETFONT, 0, 0);
296 GetObject(font, sizeof(LOGFONT), &logfont);
297 if (get_lang_font("DLG_TAHOMA_FONT", GetSafeHwnd(), &logfont, &DlgCopypasteFont, ts.UILanguageFile)) {
298 SendDlgItemMessage(IDC_LINECOPY, WM_SETFONT, (WPARAM)DlgCopypasteFont, MAKELPARAM(TRUE,0));
299 SendDlgItemMessage(IDC_DISABLE_PASTE_RBUTTON, WM_SETFONT, (WPARAM)DlgCopypasteFont, MAKELPARAM(TRUE,0));
300 SendDlgItemMessage(IDC_CONFIRM_PASTE_RBUTTON, WM_SETFONT, (WPARAM)DlgCopypasteFont, MAKELPARAM(TRUE,0));
301 SendDlgItemMessage(IDC_SELECT_LBUTTON, WM_SETFONT, (WPARAM)DlgCopypasteFont, MAKELPARAM(TRUE,0));
302 SendDlgItemMessage(IDC_CONFIRM_CHANGE_PASTE, WM_SETFONT, (WPARAM)DlgCopypasteFont, MAKELPARAM(TRUE,0));
303 SendDlgItemMessage(IDC_DELIMITER, WM_SETFONT, (WPARAM)DlgCopypasteFont, MAKELPARAM(TRUE,0));
304 SendDlgItemMessage(IDC_DELIM_LIST, WM_SETFONT, (WPARAM)DlgCopypasteFont, MAKELPARAM(TRUE,0));
305 }
306 else {
307 DlgCopypasteFont = NULL;
308 }
309
310 GetDlgItemText(IDC_LINECOPY, uimsg, sizeof(uimsg));
311 get_lang_msg("DLG_TAB_COPYPASTE_CONTINUE", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
312 SetDlgItemText(IDC_LINECOPY, ts.UIMsg);
313 GetDlgItemText(IDC_DISABLE_PASTE_RBUTTON, uimsg, sizeof(uimsg));
314 get_lang_msg("DLG_TAB_COPYPASTE_MOUSEPASTE", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
315 SetDlgItemText(IDC_DISABLE_PASTE_RBUTTON, ts.UIMsg);
316 GetDlgItemText(IDC_CONFIRM_PASTE_RBUTTON, uimsg, sizeof(uimsg));
317 get_lang_msg("DLG_TAB_COPYPASTE_CONFIRMPASTE", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
318 SetDlgItemText(IDC_CONFIRM_PASTE_RBUTTON, ts.UIMsg);
319 GetDlgItemText(IDC_SELECT_LBUTTON, uimsg, sizeof(uimsg));
320 get_lang_msg("DLG_TAB_COPYPASTE_SELECTLBUTTON", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
321 SetDlgItemText(IDC_SELECT_LBUTTON, ts.UIMsg);
322 GetDlgItemText(IDC_CONFIRM_CHANGE_PASTE, uimsg, sizeof(uimsg));
323 get_lang_msg("DLG_TAB_COPYPASTE_CONFIRM_CHANGE_PASTE", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
324 SetDlgItemText(IDC_CONFIRM_CHANGE_PASTE, ts.UIMsg);
325 GetDlgItemText(IDC_DELIMITER, uimsg, sizeof(uimsg));
326 get_lang_msg("DLG_TAB_COPYPASTE_DELIMITER", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
327 SetDlgItemText(IDC_DELIMITER, ts.UIMsg);
328
329 // (1)Enable continued-line copy
330 btn = (CButton *)GetDlgItem(IDC_LINECOPY);
331 btn->SetCheck(ts.EnableContinuedLineCopy);
332
333 // (2)DisablePasteMouseRButton
334 btn = (CButton *)GetDlgItem(IDC_DISABLE_PASTE_RBUTTON);
335 btn2 = (CButton *)GetDlgItem(IDC_CONFIRM_PASTE_RBUTTON);
336 btn->SetCheck(ts.DisablePasteMouseRButton);
337 if (ts.DisablePasteMouseRButton) {
338 btn2->EnableWindow(FALSE);
339 } else {
340 btn2->EnableWindow(TRUE);
341 }
342
343 // (3)ConfirmPasteMouseRButton
344 btn2->SetCheck(ts.ConfirmPasteMouseRButton);
345
346 // (4)SelectOnlyByLButton
347 btn = (CButton *)GetDlgItem(IDC_SELECT_LBUTTON);
348 btn->SetCheck(ts.SelectOnlyByLButton);
349
350 // (5)ConfirmChangePaste
351 btn = (CButton *)GetDlgItem(IDC_CONFIRM_CHANGE_PASTE);
352 btn->SetCheck(ts.ConfirmChangePaste);
353
354 // (6)delimiter characters
355 SetDlgItemText(IDC_DELIM_LIST, ts.DelimList);
356
357
358 // ƒ_ƒCƒAƒ�ƒO‚ɃtƒH�[ƒJƒX‚ð“–‚Ä‚é
359 ::SetFocus(::GetDlgItem(GetSafeHwnd(), IDC_LINECOPY));
360
361 return FALSE;
362 }
363
364 BOOL CCopypastePropPageDlg::OnCommand(WPARAM wParam, LPARAM lParam)
365 {
366 CButton *btn, *btn2;
367
368 switch (wParam) {
369 case IDC_DISABLE_PASTE_RBUTTON | (BN_CLICKED << 16):
370 btn = (CButton *)GetDlgItem(IDC_DISABLE_PASTE_RBUTTON);
371 btn2 = (CButton *)GetDlgItem(IDC_CONFIRM_PASTE_RBUTTON);
372 if (btn->GetCheck()) {
373 btn2->EnableWindow(FALSE);
374 } else {
375 btn2->EnableWindow(TRUE);
376 }
377 return TRUE;
378 }
379
380 return CPropertyPage::OnCommand(wParam, lParam);
381 }
382
383 void CCopypastePropPageDlg::OnOK()
384 {
385 CButton *btn;
386
387 // (1)
388 btn = (CButton *)GetDlgItem(IDC_LINECOPY);
389 ts.EnableContinuedLineCopy = btn->GetCheck();
390
391 // (2)
392 btn = (CButton *)GetDlgItem(IDC_DISABLE_PASTE_RBUTTON);
393 ts.DisablePasteMouseRButton = btn->GetCheck();
394
395 // (3)
396 btn = (CButton *)GetDlgItem(IDC_CONFIRM_PASTE_RBUTTON);
397 ts.ConfirmPasteMouseRButton = btn->GetCheck();
398
399 // (4)
400 btn = (CButton *)GetDlgItem(IDC_SELECT_LBUTTON);
401 ts.SelectOnlyByLButton = btn->GetCheck();
402
403 // (5)IDC_CONFIRM_CHANGE_PASTE
404 btn = (CButton *)GetDlgItem(IDC_CONFIRM_CHANGE_PASTE);
405 ts.ConfirmChangePaste = btn->GetCheck();
406
407 // (6)
408 GetDlgItemText(IDC_DELIM_LIST, ts.DelimList, sizeof(ts.DelimList));
409 }
410
411
412
413 // CVisualPropPageDlg ƒ_ƒCƒAƒ�ƒO
414
415 IMPLEMENT_DYNAMIC(CVisualPropPageDlg, CPropertyPage)
416
417 CVisualPropPageDlg::CVisualPropPageDlg()
418 : CPropertyPage(CVisualPropPageDlg::IDD)
419 {
420
421 }
422
423 CVisualPropPageDlg::~CVisualPropPageDlg()
424 {
425 if (DlgVisualFont != NULL) {
426 DeleteObject(DlgVisualFont);
427 }
428 }
429
430 BEGIN_MESSAGE_MAP(CVisualPropPageDlg, CPropertyPage)
431 END_MESSAGE_MAP()
432
433 // CVisualPropPageDlg ƒ�ƒbƒZ�[ƒW ƒnƒ“ƒhƒ‰
434
435 BOOL CVisualPropPageDlg::OnInitDialog()
436 {
437 char buf[MAXPATHLEN];
438 char uimsg[MAX_UIMSG];
439 CListBox *listbox;
440 CButton *btn;
441 int i;
442
443 CPropertyPage::OnInitDialog();
444
445 font = (HFONT)SendMessage(WM_GETFONT, 0, 0);
446 GetObject(font, sizeof(LOGFONT), &logfont);
447 if (get_lang_font("DLG_TAHOMA_FONT", GetSafeHwnd(), &logfont, &DlgVisualFont, ts.UILanguageFile)) {
448 SendDlgItemMessage(IDC_ALPHABLEND, WM_SETFONT, (WPARAM)DlgVisualFont, MAKELPARAM(TRUE,0));
449 SendDlgItemMessage(IDC_ALPHA_BLEND, WM_SETFONT, (WPARAM)DlgVisualFont, MAKELPARAM(TRUE,0));
450 SendDlgItemMessage(IDC_ETERM_LOOKFEEL, WM_SETFONT, (WPARAM)DlgVisualFont, MAKELPARAM(TRUE,0));
451 SendDlgItemMessage(IDC_MOUSE, WM_SETFONT, (WPARAM)DlgVisualFont, MAKELPARAM(TRUE,0));
452 SendDlgItemMessage(IDC_MOUSE_CURSOR, WM_SETFONT, (WPARAM)DlgVisualFont, MAKELPARAM(TRUE,0));
453 SendDlgItemMessage(IDC_ANSICOLOR, WM_SETFONT, (WPARAM)DlgVisualFont, MAKELPARAM(TRUE,0));
454 SendDlgItemMessage(IDC_ANSI_COLOR, WM_SETFONT, (WPARAM)DlgVisualFont, MAKELPARAM(TRUE,0));
455 SendDlgItemMessage(IDC_RED, WM_SETFONT, (WPARAM)DlgVisualFont, MAKELPARAM(TRUE,0));
456 SendDlgItemMessage(IDC_COLOR_RED, WM_SETFONT, (WPARAM)DlgVisualFont, MAKELPARAM(TRUE,0));
457 SendDlgItemMessage(IDC_GREEN, WM_SETFONT, (WPARAM)DlgVisualFont, MAKELPARAM(TRUE,0));
458 SendDlgItemMessage(IDC_COLOR_GREEN, WM_SETFONT, (WPARAM)DlgVisualFont, MAKELPARAM(TRUE,0));
459 SendDlgItemMessage(IDC_BLUE, WM_SETFONT, (WPARAM)DlgVisualFont, MAKELPARAM(TRUE,0));
460 SendDlgItemMessage(IDC_COLOR_BLUE, WM_SETFONT, (WPARAM)DlgVisualFont, MAKELPARAM(TRUE,0));
461 SendDlgItemMessage(IDC_SAMPLE_COLOR, WM_SETFONT, (WPARAM)DlgVisualFont, MAKELPARAM(TRUE,0));
462 }
463 else {
464 DlgVisualFont = NULL;
465 }
466
467 GetDlgItemText(IDC_ALPHABLEND, uimsg, sizeof(uimsg));
468 get_lang_msg("DLG_TAB_VISUAL_ALHPA", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
469 SetDlgItemText(IDC_ALPHABLEND, ts.UIMsg);
470 GetDlgItemText(IDC_ETERM_LOOKFEEL, uimsg, sizeof(uimsg));
471 get_lang_msg("DLG_TAB_VISUAL_ETERM", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
472 SetDlgItemText(IDC_ETERM_LOOKFEEL, ts.UIMsg);
473 GetDlgItemText(IDC_MOUSE, uimsg, sizeof(uimsg));
474 get_lang_msg("DLG_TAB_VISUAL_MOUSE", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
475 SetDlgItemText(IDC_MOUSE, ts.UIMsg);
476 GetDlgItemText(IDC_RED, uimsg, sizeof(uimsg));
477 get_lang_msg("DLG_TAB_VISUAL_RED", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
478 SetDlgItemText(IDC_RED, ts.UIMsg);
479 GetDlgItemText(IDC_GREEN, uimsg, sizeof(uimsg));
480 get_lang_msg("DLG_TAB_VISUAL_GREEN", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
481 SetDlgItemText(IDC_GREEN, ts.UIMsg);
482 GetDlgItemText(IDC_BLUE, uimsg, sizeof(uimsg));
483 get_lang_msg("DLG_TAB_VISUAL_BLUE", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
484 SetDlgItemText(IDC_BLUE, ts.UIMsg);
485
486 // (1)AlphaBlend
487 _snprintf_s(buf, sizeof(buf), _TRUNCATE, "%d", ts.AlphaBlend);
488 SetDlgItemText(IDC_ALPHA_BLEND, buf);
489
490 // (2)[BG] BGEnable
491 btn = (CButton *)GetDlgItem(IDC_ETERM_LOOKFEEL);
492 btn->SetCheck(ts.EtermLookfeel.BGEnable);
493
494 // (3)Mouse cursor type
495 listbox = (CListBox *)GetDlgItem(IDC_MOUSE_CURSOR);
496 for (i = 0 ; MouseCursor[i].name ; i++) {
497 listbox->InsertString(i, MouseCursor[i].name);
498 }
499 listbox->SelectString(0, ts.MouseCursorName);
500
501 // (4)ANSI color
502 listbox = (CListBox *)GetDlgItem(IDC_ANSI_COLOR);
503 for (i = 0 ; i < 16 ; i++) {
504 _snprintf_s(buf, sizeof(buf), _TRUNCATE, "%d", i);
505 listbox->InsertString(i, buf);
506 }
507 SetupRGBbox(GetSafeHwnd(), 0);
508 #if 0
509 SendMessage(WM_CTLCOLORSTATIC,
510 (WPARAM)label_hdc,
511 (LPARAM)GetDlgItem(IDC_SAMPLE_COLOR));
512 #endif
513
514 // ƒ_ƒCƒAƒ�ƒO‚ɃtƒH�[ƒJƒX‚ð“–‚Ä‚é
515 ::SetFocus(::GetDlgItem(GetSafeHwnd(), IDC_ALPHA_BLEND));
516
517 return FALSE;
518 }
519
520 BOOL CVisualPropPageDlg::OnCommand(WPARAM wParam, LPARAM lParam)
521 {
522 CListBox *listbox;
523 int sel;
524 char buf[MAXPATHLEN];
525
526 switch (wParam) {
527 case IDC_ANSI_COLOR | (LBN_SELCHANGE << 16):
528 listbox = (CListBox *)GetDlgItem(IDC_ANSI_COLOR);
529 sel = listbox->GetCurSel();
530 if (sel != -1) {
531 SetupRGBbox(GetSafeHwnd(), sel);
532 #if 0
533 SendMessage(WM_CTLCOLORSTATIC,
534 (WPARAM)label_hdc,
535 (LPARAM)GetDlgItem(IDC_SAMPLE_COLOR));
536 #endif
537 }
538 return TRUE;
539
540 case IDC_COLOR_RED | (EN_KILLFOCUS << 16):
541 case IDC_COLOR_GREEN | (EN_KILLFOCUS << 16):
542 case IDC_COLOR_BLUE | (EN_KILLFOCUS << 16):
543 {
544 BYTE r, g, b;
545
546 listbox = (CListBox *)GetDlgItem(IDC_ANSI_COLOR);
547 sel = listbox->GetCurSel();
548 if (sel < 0 && sel > sizeof(ts.ANSIColor)-1) {
549 return TRUE;
550 }
551
552 GetDlgItemText(IDC_COLOR_RED, buf, sizeof(buf));
553 r = atoi(buf);
554
555 GetDlgItemText(IDC_COLOR_GREEN, buf, sizeof(buf));
556 g = atoi(buf);
557
558 GetDlgItemText(IDC_COLOR_BLUE, buf, sizeof(buf));
559 b = atoi(buf);
560
561 ts.ANSIColor[sel] = RGB(r, g, b);
562
563 // 255‚ð’´‚¦‚½RGB’l‚Í•â�³‚³‚ê‚é‚Ì‚Å�A‚»‚ê‚ðEdit‚É•\ަ‚·‚é (2007.2.18 maya)
564 SetupRGBbox(GetSafeHwnd(), sel);
565 #if 0
566 SendMessage(WM_CTLCOLORSTATIC,
567 (WPARAM)label_hdc,
568 (LPARAM)GetDlgItem(IDC_SAMPLE_COLOR));
569 #endif
570 }
571
572 return TRUE;
573 #if 0
574 case WM_CTLCOLORSTATIC:
575 {
576 HDC hDC = (HDC)wp;
577 HWND hWnd = (HWND)lp;
578
579 //if (label_hdc == NULL) {
580 hDC = GetWindowDC(GetDlgItem(hDlgWnd, IDC_SAMPLE_COLOR));
581 // label_hdc = hDC;
582 //}
583
584 if ( hWnd == GetDlgItem(hDlgWnd, IDC_SAMPLE_COLOR) ) {
585 BYTE r, g, b;
586
587 hWnd = GetDlgItem(hDlgWnd, IDC_COLOR_RED);
588 SendMessage(hWnd, WM_GETTEXT , sizeof(buf), (LPARAM)buf);
589 r = atoi(buf);
590
591 hWnd = GetDlgItem(hDlgWnd, IDC_COLOR_GREEN);
592 SendMessage(hWnd, WM_GETTEXT , sizeof(buf), (LPARAM)buf);
593 g = atoi(buf);
594
595 hWnd = GetDlgItem(hDlgWnd, IDC_COLOR_BLUE);
596 SendMessage(hWnd, WM_GETTEXT , sizeof(buf), (LPARAM)buf);
597 b = atoi(buf);
598
599 OutputDebugPrintf("%06x\n", RGB(r, g, b));
600
601 SetBkMode(hDC, TRANSPARENT);
602 SetTextColor(hDC, RGB(r, g, b) );
603 ReleaseDC(hDlgWnd, hDC);
604
605 return (BOOL)(HBRUSH)GetStockObject(NULL_BRUSH);
606 }
607 return FALSE;
608 }
609 break ;
610 #endif
611 }
612
613 return CPropertyPage::OnCommand(wParam, lParam);
614 }
615
616 void CVisualPropPageDlg::OnOK()
617 {
618 CListBox *listbox;
619 CButton *btn;
620 int sel;
621 int beforeAlphaBlend;
622 char buf[MAXPATHLEN];
623
624 // (1)
625 beforeAlphaBlend = ts.AlphaBlend;
626 GetDlgItemText(IDC_ALPHA_BLEND, buf, sizeof(buf));
627 ts.AlphaBlend = atoi(buf);
628 ts.AlphaBlend = max(0, ts.AlphaBlend);
629 ts.AlphaBlend = min(255, ts.AlphaBlend);
630
631 // (2)
632 // ƒOƒ��[ƒoƒ‹•Ï�” BGEnable ‚ð’¼�Ú�‘‚«Š·‚¦‚邯�Aƒvƒ�ƒOƒ‰ƒ€‚ª—Ž‚¿‚邱‚Æ‚ª
633 // ‚ ‚é‚̂ŃRƒs�[‚ð�C�³‚·‚é‚݂̂Ƃ·‚é�B(2005.4.24 yutaka)
634 btn = (CButton *)GetDlgItem(IDC_ETERM_LOOKFEEL);
635 ts.EtermLookfeel.BGEnable = btn->GetCheck();
636
637 // (3)
638 listbox = (CListBox *)GetDlgItem(IDC_MOUSE_CURSOR);
639 sel = listbox->GetCurSel();
640 if (sel >= 0 && sel < MOUSE_CURSOR_MAX) {
641 strncpy_s(ts.MouseCursorName, sizeof(ts.MouseCursorName), MouseCursor[sel].name, _TRUNCATE);
642 }
643
644 // 2006/03/11 by 337 : Alpha’l‚à‘¦Žž•Ï�X
645 // Layered‘‹‚ɂȂÁ‚Ä‚¢‚È‚¢�ê�‡‚ÍŒø‰Ê‚ª–³‚¢
646 if (ts.EtermLookfeel.BGUseAlphaBlendAPI) {
647 // ‹N“®Žž‚É”¼“§–¾ƒŒƒCƒ„‚É‚µ‚Ä‚¢‚È‚¢�ê�‡‚Å‚à�A‘¦�À‚É”¼“§–¾‚Æ‚È‚é‚æ‚¤‚É‚·‚é�B(2006.4.1 yutaka)
648 //MySetLayeredWindowAttributes(HVTWin, 0, (ts.AlphaBlend > 255) ? 255: ts.AlphaBlend, LWA_ALPHA);
649 // ’l‚ª•Ï�X‚³‚ꂽ‚Æ‚«‚Ì‚Ý�Ý’è‚𔽉f‚·‚é�B(2007.10.19 maya)
650 if (ts.AlphaBlend != beforeAlphaBlend) {
651 SetWindowStyle(&ts);
652 }
653 }
654 }
655
656
657
658 // CLogPropPageDlg ƒ_ƒCƒAƒ�ƒO
659
660 IMPLEMENT_DYNAMIC(CLogPropPageDlg, CPropertyPage)
661
662 CLogPropPageDlg::CLogPropPageDlg()
663 : CPropertyPage(CLogPropPageDlg::IDD)
664 {
665
666 }
667
668 CLogPropPageDlg::~CLogPropPageDlg()
669 {
670 if (DlgLogFont != NULL) {
671 DeleteObject(DlgLogFont);
672 }
673 }
674
675 BEGIN_MESSAGE_MAP(CLogPropPageDlg, CPropertyPage)
676 END_MESSAGE_MAP()
677
678 // CLogPropPageDlg ƒ�ƒbƒZ�[ƒW ƒnƒ“ƒhƒ‰
679
680 BOOL CLogPropPageDlg::OnInitDialog()
681 {
682 char uimsg[MAX_UIMSG];
683 CButton *btn;
684
685 CPropertyPage::OnInitDialog();
686
687 font = (HFONT)SendMessage(WM_GETFONT, 0, 0);
688 GetObject(font, sizeof(LOGFONT), &logfont);
689 if (get_lang_font("DLG_TAHOMA_FONT", GetSafeHwnd(), &logfont, &DlgLogFont, ts.UILanguageFile)) {
690 SendDlgItemMessage(IDC_VIEWLOG_LABEL, WM_SETFONT, (WPARAM)DlgLogFont, MAKELPARAM(TRUE,0));
691 SendDlgItemMessage(IDC_VIEWLOG_EDITOR, WM_SETFONT, (WPARAM)DlgLogFont, MAKELPARAM(TRUE,0));
692 SendDlgItemMessage(IDC_VIEWLOG_PATH, WM_SETFONT, (WPARAM)DlgLogFont, MAKELPARAM(TRUE,0));
693 SendDlgItemMessage(IDC_DEFAULTNAME_LABEL, WM_SETFONT, (WPARAM)DlgLogFont, MAKELPARAM(TRUE,0));
694 SendDlgItemMessage(IDC_DEFAULTNAME_EDITOR, WM_SETFONT, (WPARAM)DlgLogFont, MAKELPARAM(TRUE,0));
695 SendDlgItemMessage(IDC_DEFAULTPATH_LABEL, WM_SETFONT, (WPARAM)DlgLogFont, MAKELPARAM(TRUE,0));
696 SendDlgItemMessage(IDC_DEFAULTPATH_EDITOR, WM_SETFONT, (WPARAM)DlgLogFont, MAKELPARAM(TRUE,0));
697 SendDlgItemMessage(IDC_DEFAULTPATH_PUSH, WM_SETFONT, (WPARAM)DlgLogFont, MAKELPARAM(TRUE,0));
698 SendDlgItemMessage(IDC_AUTOSTART, WM_SETFONT, (WPARAM)DlgLogFont, MAKELPARAM(TRUE,0));
699 }
700 else {
701 DlgLogFont = NULL;
702 }
703
704 GetDlgItemText(IDC_VIEWLOG_LABEL, uimsg, sizeof(uimsg));
705 get_lang_msg("DLG_TAB_LOG_EDITOR", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
706 SetDlgItemText(IDC_VIEWLOG_LABEL, ts.UIMsg);
707 GetDlgItemText(IDC_DEFAULTNAME_LABEL, uimsg, sizeof(uimsg));
708 get_lang_msg("DLG_TAB_LOG_FILENAME", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
709 SetDlgItemText(IDC_DEFAULTNAME_LABEL, ts.UIMsg);
710 GetDlgItemText(IDC_DEFAULTPATH_LABEL, uimsg, sizeof(uimsg));
711 get_lang_msg("DLG_TAB_LOG_FILEPATH", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
712 SetDlgItemText(IDC_DEFAULTPATH_LABEL, ts.UIMsg);
713 GetDlgItemText(IDC_AUTOSTART, uimsg, sizeof(uimsg));
714 get_lang_msg("DLG_TAB_LOG_AUTOSTART", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
715 SetDlgItemText(IDC_AUTOSTART, ts.UIMsg);
716
717 // Viewlog Editor path (2005.1.29 yutaka)
718 SetDlgItemText(IDC_VIEWLOG_EDITOR, ts.ViewlogEditor);
719
720 // Log Default File Name (2006.8.28 maya)
721 SetDlgItemText(IDC_DEFAULTNAME_EDITOR, ts.LogDefaultName);
722
723 // Log Default File Path (2007.5.30 maya)
724 SetDlgItemText(IDC_DEFAULTPATH_EDITOR, ts.LogDefaultPath);
725
726 /* Auto start logging (2007.5.31 maya) */
727 btn = (CButton *)GetDlgItem(IDC_AUTOSTART);
728 btn->SetCheck(ts.LogAutoStart);
729
730 // ƒ_ƒCƒAƒ�ƒO‚ɃtƒH�[ƒJƒX‚ð“–‚Ä‚é
731 ::SetFocus(::GetDlgItem(GetSafeHwnd(), IDC_VIEWLOG_EDITOR));
732
733 return FALSE;
734 }
735
736 BOOL CLogPropPageDlg::OnCommand(WPARAM wParam, LPARAM lParam)
737 {
738 char uimsg[MAX_UIMSG];
739
740 switch (wParam) {
741 case IDC_VIEWLOG_PATH | (BN_CLICKED << 16):
742 {
743 OPENFILENAME ofn;
744
745 ZeroMemory(&ofn, sizeof(ofn));
746 ofn.lStructSize = get_OPENFILENAME_SIZE();
747 ofn.hwndOwner = GetSafeHwnd();
748 get_lang_msg("FILEDLG_SELECT_LOGVIEW_APP_FILTER", ts.UIMsg, sizeof(ts.UIMsg),
749 "exe(*.exe)\\0*.exe\\0all(*.*)\\0*.*\\0\\0", ts.UILanguageFile);
750 ofn.lpstrFilter = ts.UIMsg;
751 ofn.lpstrFile = ts.ViewlogEditor;
752 ofn.nMaxFile = sizeof(ts.ViewlogEditor);
753 get_lang_msg("FILEDLG_SELECT_LOGVIEW_APP_TITLE", uimsg, sizeof(uimsg),
754 "Choose a executing file with launching logging file", ts.UILanguageFile);
755 ofn.lpstrTitle = uimsg;
756 ofn.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_FORCESHOWHIDDEN | OFN_HIDEREADONLY;
757 if (GetOpenFileName(&ofn) != 0) {
758 SetDlgItemText(IDC_VIEWLOG_EDITOR, ts.ViewlogEditor);
759 }
760 }
761 return TRUE;
762
763 case IDC_DEFAULTPATH_PUSH | (BN_CLICKED << 16):
764 // ƒ�ƒOƒfƒBƒŒƒNƒgƒŠ‚Ì‘I‘ðƒ_ƒCƒAƒ�ƒO
765 get_lang_msg("FILEDLG_SELECT_LOGDIR_TITLE", ts.UIMsg, sizeof(ts.UIMsg),
766 "Select log folder", ts.UILanguageFile);
767 doSelectFolder(GetSafeHwnd(), ts.LogDefaultPath, sizeof(ts.LogDefaultPath),
768 ts.UIMsg);
769 SetDlgItemText(IDC_DEFAULTPATH_EDITOR, ts.LogDefaultPath);
770
771 return TRUE;
772 }
773
774 return CPropertyPage::OnCommand(wParam, lParam);
775 }
776
777 void CLogPropPageDlg::OnOK()
778 {
779 char buf[80], buf2[80];
780 time_t time_local;
781 struct tm *tm_local;
782 char uimsg[MAX_UIMSG];
783 CButton *btn;
784
785 // Viewlog Editor path (2005.1.29 yutaka)
786 GetDlgItemText(IDC_VIEWLOG_EDITOR, ts.ViewlogEditor, sizeof(ts.ViewlogEditor));
787
788 // Log Default File Name (2006.8.28 maya)
789 GetDlgItemText(IDC_DEFAULTNAME_EDITOR, buf, sizeof(buf));
790 if (isInvalidStrftimeChar(buf)) {
791 get_lang_msg("MSG_ERROR", uimsg, sizeof(uimsg), "ERROR", ts.UILanguageFile);
792 get_lang_msg("MSG_LOGFILE_INVALID_CHAR_ERROR", ts.UIMsg, sizeof(ts.UIMsg),
793 "Invalid character is included in log file name.", ts.UILanguageFile);
794 MessageBox(ts.UIMsg, uimsg, MB_ICONEXCLAMATION);
795 return;
796 }
797 // Œ»�ÝŽž��‚ðŽæ“¾
798 time(&time_local);
799 tm_local = localtime(&time_local);
800 // Žž��•¶Žš—ñ‚ɕϊ·
801 if (strlen(buf) != 0 && strftime(buf2, sizeof(buf2), buf, tm_local) == 0) {
802 get_lang_msg("MSG_ERROR", uimsg, sizeof(uimsg), "ERROR", ts.UILanguageFile);
803 get_lang_msg("MSG_LOGFILE_TOOLONG_ERROR", ts.UIMsg, sizeof(ts.UIMsg),
804 "The log file name is too long.", ts.UILanguageFile);
805 MessageBox(ts.UIMsg, uimsg, MB_ICONEXCLAMATION);
806 return;
807 }
808 if (isInvalidFileNameChar(buf2)) {
809 get_lang_msg("MSG_ERROR", uimsg, sizeof(uimsg), "ERROR", ts.UILanguageFile);
810 get_lang_msg("MSG_LOGFILE_INVALID_CHAR_ERROR", ts.UIMsg, sizeof(ts.UIMsg),
811 "Invalid character is included in log file name.", ts.UILanguageFile);
812 MessageBox(ts.UIMsg, uimsg, MB_ICONEXCLAMATION);
813 return;
814 }
815 strncpy_s(ts.LogDefaultName, sizeof(ts.LogDefaultName), buf, _TRUNCATE);
816
817 // Log Default File Path (2007.5.30 maya)
818 GetDlgItemText(IDC_DEFAULTPATH_EDITOR, ts.LogDefaultPath, sizeof(ts.LogDefaultPath));
819
820 /* Auto start logging (2007.5.31 maya) */
821 btn = (CButton *)GetDlgItem(IDC_AUTOSTART);
822 ts.LogAutoStart = btn->GetCheck();
823 }
824
825
826
827 // CCygwinPropPageDlg ƒ_ƒCƒAƒ�ƒO
828
829 IMPLEMENT_DYNAMIC(CCygwinPropPageDlg, CPropertyPage)
830
831 CCygwinPropPageDlg::CCygwinPropPageDlg()
832 : CPropertyPage(CCygwinPropPageDlg::IDD)
833 {
834 }
835
836 CCygwinPropPageDlg::~CCygwinPropPageDlg()
837 {
838 if (DlgCygwinFont != NULL) {
839 DeleteObject(DlgCygwinFont);
840 }
841 }
842
843 BEGIN_MESSAGE_MAP(CCygwinPropPageDlg, CPropertyPage)
844 END_MESSAGE_MAP()
845
846 // CCygwinPropPageDlg ƒ�ƒbƒZ�[ƒW ƒnƒ“ƒhƒ‰
847
848 BOOL CCygwinPropPageDlg::OnInitDialog()
849 {
850 char *cfgfile = "cygterm.cfg"; // CygTerm configuration file
851 char cfg[MAX_PATH];
852 FILE *fp;
853 char buf[256], *head, *body;
854 char uimsg[MAX_UIMSG];
855 CButton *btn;
856
857 CPropertyPage::OnInitDialog();
858
859 font = (HFONT)SendMessage(WM_GETFONT, 0, 0);
860 GetObject(font, sizeof(LOGFONT), &logfont);
861 if (get_lang_font("DLG_TAHOMA_FONT", GetSafeHwnd(), &logfont, &DlgCygwinFont, ts.UILanguageFile)) {
862 SendDlgItemMessage(IDC_CYGWIN_PATH_LABEL, WM_SETFONT, (WPARAM)DlgCygwinFont, MAKELPARAM(TRUE,0));
863 SendDlgItemMessage(IDC_CYGWIN_PATH, WM_SETFONT, (WPARAM)DlgCygwinFont, MAKELPARAM(TRUE,0));
864 SendDlgItemMessage(IDC_SELECT_FILE, WM_SETFONT, (WPARAM)DlgCygwinFont, MAKELPARAM(TRUE,0));
865 SendDlgItemMessage(IDC_CYGWIN, WM_SETFONT, (WPARAM)DlgCygwinFont, MAKELPARAM(TRUE,0));
866 SendDlgItemMessage(IDC_TERM_LABEL, WM_SETFONT, (WPARAM)DlgCygwinFont, MAKELPARAM(TRUE,0));
867 SendDlgItemMessage(IDC_TERM_EDIT, WM_SETFONT, (WPARAM)DlgCygwinFont, MAKELPARAM(TRUE,0));
868 SendDlgItemMessage(IDC_TERMTYPE_LABEL, WM_SETFONT, (WPARAM)DlgCygwinFont, MAKELPARAM(TRUE,0));
869 SendDlgItemMessage(IDC_TERM_TYPE, WM_SETFONT, (WPARAM)DlgCygwinFont, MAKELPARAM(TRUE,0));
870 SendDlgItemMessage(IDC_PORTSTART_LABEL, WM_SETFONT, (WPARAM)DlgCygwinFont, MAKELPARAM(TRUE,0));
871 SendDlgItemMessage(IDC_PORT_START, WM_SETFONT, (WPARAM)DlgCygwinFont, MAKELPARAM(TRUE,0));
872 SendDlgItemMessage(IDC_PORTRANGE_LABEL, WM_SETFONT, (WPARAM)DlgCygwinFont, MAKELPARAM(TRUE,0));
873 SendDlgItemMessage(IDC_PORT_RANGE, WM_SETFONT, (WPARAM)DlgCygwinFont, MAKELPARAM(TRUE,0));
874 SendDlgItemMessage(IDC_SHELL_LABEL, WM_SETFONT, (WPARAM)DlgCygwinFont, MAKELPARAM(TRUE,0));
875 SendDlgItemMessage(IDC_SHELL, WM_SETFONT, (WPARAM)DlgCygwinFont, MAKELPARAM(TRUE,0));
876 SendDlgItemMessage(IDC_ENV1_LABEL, WM_SETFONT, (WPARAM)DlgCygwinFont, MAKELPARAM(TRUE,0));
877 SendDlgItemMessage(IDC_ENV1, WM_SETFONT, (WPARAM)DlgCygwinFont, MAKELPARAM(TRUE,0));
878 SendDlgItemMessage(IDC_ENV2_LABEL, WM_SETFONT, (WPARAM)DlgCygwinFont, MAKELPARAM(TRUE,0));
879 SendDlgItemMessage(IDC_ENV2, WM_SETFONT, (WPARAM)DlgCygwinFont, MAKELPARAM(TRUE,0));
880 SendDlgItemMessage(IDC_LOGIN_SHELL, WM_SETFONT, (WPARAM)DlgCygwinFont, MAKELPARAM(TRUE,0));
881 SendDlgItemMessage(IDC_HOME_CHDIR, WM_SETFONT, (WPARAM)DlgCygwinFont, MAKELPARAM(TRUE,0));
882 SendDlgItemMessage(IDC_AGENT_PROXY, WM_SETFONT, (WPARAM)DlgCygwinFont, MAKELPARAM(TRUE,0));
883 }
884 else {
885 DlgCygwinFont = NULL;
886 }
887
888 GetDlgItemText(IDC_CYGWIN_PATH_LABEL, uimsg, sizeof(uimsg));
889 get_lang_msg("DLG_TAB_CYGWIN_PATH", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
890 SetDlgItemText(IDC_CYGWIN_PATH_LABEL, ts.UIMsg);
891
892 // try to read CygTerm config file
893 memset(&settings, 0, sizeof(settings));
894 _snprintf_s(settings.term, sizeof(settings.term), _TRUNCATE, "ttermpro.exe %%s %%d /E /KR=SJIS /KT=SJIS /VTICON=CygTerm /nossh");
895 _snprintf_s(settings.term_type, sizeof(settings.term_type), _TRUNCATE, "vt100");
896 _snprintf_s(settings.port_start, sizeof(settings.port_start), _TRUNCATE, "20000");
897 _snprintf_s(settings.port_range, sizeof(settings.port_range), _TRUNCATE, "40");
898 _snprintf_s(settings.shell, sizeof(settings.shell), _TRUNCATE, "auto");
899 _snprintf_s(settings.env1, sizeof(settings.env1), _TRUNCATE, "MAKE_MODE=unix");
900 _snprintf_s(settings.env2, sizeof(settings.env2), _TRUNCATE, "");
901 settings.login_shell = FALSE;
902 settings.home_chdir = FALSE;
903 settings.agent_proxy = FALSE;
904
905 strncpy_s(cfg, sizeof(cfg), ts.HomeDir, _TRUNCATE);
906 AppendSlash(cfg, sizeof(cfg));
907 strncat_s(cfg, sizeof(cfg), cfgfile, _TRUNCATE);
908
909 fp = fopen(cfg, "r");
910 if (fp != NULL) {
911 while (fgets(buf, sizeof(buf), fp) != NULL) {
912 int len = strlen(buf);
913
914 if (buf[len - 1] == '\n')
915 buf[len - 1] = '\0';
916
917 split_buffer(buf, '=', &head, &body);
918 if (head == NULL || body == NULL)
919 continue;
920
921 if (_stricmp(head, "TERM") == 0) {
922 _snprintf_s(settings.term, sizeof(settings.term), _TRUNCATE, "%s", body);
923
924 } else if (_stricmp(head, "TERM_TYPE") == 0) {
925 _snprintf_s(settings.term_type, sizeof(settings.term_type), _TRUNCATE, "%s", body);
926
927 } else if (_stricmp(head, "PORT_START") == 0) {
928 _snprintf_s(settings.port_start, sizeof(settings.port_start), _TRUNCATE, "%s", body);
929
930 } else if (_stricmp(head, "PORT_RANGE") == 0) {
931 _snprintf_s(settings.port_range, sizeof(settings.port_range), _TRUNCATE, "%s", body);
932
933 } else if (_stricmp(head, "SHELL") == 0) {
934 _snprintf_s(settings.shell, sizeof(settings.shell), _TRUNCATE, "%s", body);
935
936 } else if (_stricmp(head, "ENV_1") == 0) {
937 _snprintf_s(settings.env1, sizeof(settings.env1), _TRUNCATE, "%s", body);
938
939 } else if (_stricmp(head, "ENV_2") == 0) {
940 _snprintf_s(settings.env2, sizeof(settings.env2), _TRUNCATE, "%s", body);
941
942 } else if (_stricmp(head, "LOGIN_SHELL") == 0) {
943 if (strchr("YyTt", *body)) {
944 settings.login_shell = TRUE;
945 }
946
947 } else if (_stricmp(head, "HOME_CHDIR") == 0) {
948 if (strchr("YyTt", *body)) {
949 settings.home_chdir = TRUE;
950 }
951
952 } else if (_stricmp(head, "SSH_AGENT_PROXY") == 0) {
953 if (strchr("YyTt", *body)) {
954 settings.agent_proxy = TRUE;
955 }
956
957 } else {
958 // TODO: error check
959
960 }
961 }
962 fclose(fp);
963 }
964 SetDlgItemText(IDC_TERM_EDIT, settings.term);
965 SetDlgItemText(IDC_TERM_TYPE, settings.term_type);
966 SetDlgItemText(IDC_PORT_START, settings.port_start);
967 SetDlgItemText(IDC_PORT_RANGE, settings.port_range);
968 SetDlgItemText(IDC_SHELL, settings.shell);
969 SetDlgItemText(IDC_ENV1, settings.env1);
970 SetDlgItemText(IDC_ENV2, settings.env2);
971 btn = (CButton *)GetDlgItem(IDC_LOGIN_SHELL);
972 btn->SetCheck(settings.login_shell);
973 btn = (CButton *)GetDlgItem(IDC_HOME_CHDIR);
974 btn->SetCheck(settings.home_chdir);
975 btn = (CButton *)GetDlgItem(IDC_AGENT_PROXY);
976 btn->SetCheck(settings.agent_proxy);
977
978 // Cygwin install path
979 SetDlgItemText(IDC_CYGWIN_PATH, ts.CygwinDirectory);
980
981 // ƒ_ƒCƒAƒ�ƒO‚ɃtƒH�[ƒJƒX‚ð“–‚Ä‚é
982 ::SetFocus(::GetDlgItem(GetSafeHwnd(), IDC_CYGWIN_PATH));
983
984 return FALSE;
985 }
986
987 BOOL CCygwinPropPageDlg::OnCommand(WPARAM wParam, LPARAM lParam)
988 {
989 switch (wParam) {
990 case IDC_SELECT_FILE | (BN_CLICKED << 16):
991 // Cygwin install ƒfƒBƒŒƒNƒgƒŠ‚Ì‘I‘ðƒ_ƒCƒAƒ�ƒO
992 get_lang_msg("DIRDLG_CYGTERM_DIR_TITLE", ts.UIMsg, sizeof(ts.UIMsg),
993 "Select Cygwin directory", ts.UILanguageFile);
994 doSelectFolder(GetSafeHwnd(), ts.CygwinDirectory, sizeof(ts.CygwinDirectory),
995 ts.UIMsg);
996 // Cygwin install path
997 SetDlgItemText(IDC_CYGWIN_PATH, ts.CygwinDirectory);
998 return TRUE;
999 }
1000
1001 return CPropertyPage::OnCommand(wParam, lParam);
1002 }
1003
1004 void CCygwinPropPageDlg::OnOK()
1005 {
1006 char *cfgfile = "cygterm.cfg"; // CygTerm configuration file
1007 char *tmpfile = "cygterm.tmp";
1008 char cfg[MAX_PATH];
1009 char tmp[MAX_PATH];
1010 FILE *fp;
1011 FILE *tmp_fp;
1012 char buf[256], *head, *body;
1013 char uimsg[MAX_UIMSG];
1014 CButton *btn;
1015
1016 // writing to CygTerm config file
1017 GetDlgItemText(IDC_TERM_EDIT, settings.term, sizeof(settings.term));
1018 GetDlgItemText(IDC_TERM_TYPE, settings.term_type, sizeof(settings.term_type));
1019 GetDlgItemText(IDC_PORT_START, settings.port_start, sizeof(settings.port_start));
1020 GetDlgItemText(IDC_PORT_RANGE, settings.port_range, sizeof(settings.port_range));
1021 GetDlgItemText(IDC_SHELL, settings.shell, sizeof(settings.shell));
1022 GetDlgItemText(IDC_ENV1, settings.env1, sizeof(settings.env1));
1023 GetDlgItemText(IDC_ENV2, settings.env2, sizeof(settings.env2));
1024 btn = (CButton *)GetDlgItem(IDC_LOGIN_SHELL);
1025 settings.login_shell = btn->GetCheck();
1026 btn = (CButton *)GetDlgItem(IDC_HOME_CHDIR);
1027 settings.home_chdir = btn->GetCheck();
1028 btn = (CButton *)GetDlgItem(IDC_AGENT_PROXY);
1029 settings.agent_proxy = btn->GetCheck();
1030
1031 strncpy_s(cfg, sizeof(cfg), ts.HomeDir, _TRUNCATE);
1032 AppendSlash(cfg, sizeof(cfg));
1033 strncat_s(cfg, sizeof(cfg), cfgfile, _TRUNCATE);
1034
1035 strncpy_s(tmp, sizeof(tmp), ts.HomeDir, _TRUNCATE);
1036 AppendSlash(tmp, sizeof(tmp));
1037 strncat_s(tmp, sizeof(tmp), tmpfile, _TRUNCATE);
1038
1039 fp = fopen(cfg, "r");
1040 tmp_fp = fopen(tmp, "w");
1041 if (tmp_fp == NULL) {
1042 get_lang_msg("MSG_ERROR", uimsg, sizeof(uimsg), "ERROR", ts.UILanguageFile);
1043 get_lang_msg("MSG_CYGTERM_CONF_WRITEFILE_ERROR", ts.UIMsg, sizeof(ts.UIMsg),
1044 "Can't write CygTerm configuration file (%d).", ts.UILanguageFile);
1045 _snprintf_s(buf, sizeof(buf), _TRUNCATE, ts.UIMsg, GetLastError());
1046 MessageBox(buf, uimsg, MB_ICONEXCLAMATION);
1047 } else {
1048 if (fp != NULL) {
1049 while (fgets(buf, sizeof(buf), fp) != NULL) {
1050 int len = strlen(buf);
1051
1052 if (buf[len - 1] == '\n')
1053 buf[len - 1] = '\0';
1054
1055 split_buffer(buf, '=', &head, &body);
1056 if (head == NULL || body == NULL) {
1057 fprintf(tmp_fp, "%s\n", buf);
1058 }
1059 else if (_stricmp(head, "TERM") == 0) {
1060 fprintf(tmp_fp, "TERM = %s\n", settings.term);
1061 settings.term[0] = '\0';
1062 }
1063 else if (_stricmp(head, "TERM_TYPE") == 0) {
1064 fprintf(tmp_fp, "TERM_TYPE = %s\n", settings.term_type);
1065 settings.term_type[0] = '\0';
1066 }
1067 else if (_stricmp(head, "PORT_START") == 0) {
1068 fprintf(tmp_fp, "PORT_START = %s\n", settings.port_start);
1069 settings.port_start[0] = '\0';
1070 }
1071 else if (_stricmp(head, "PORT_RANGE") == 0) {
1072 fprintf(tmp_fp, "PORT_RANGE = %s\n", settings.port_range);
1073 settings.port_range[0] = '\0';
1074 }
1075 else if (_stricmp(head, "SHELL") == 0) {
1076 fprintf(tmp_fp, "SHELL = %s\n", settings.shell);
1077 settings.shell[0] = '\0';
1078 }
1079 else if (_stricmp(head, "ENV_1") == 0) {
1080 fprintf(tmp_fp, "ENV_1 = %s\n", settings.env1);
1081 settings.env1[0] = '\0';
1082 }
1083 else if (_stricmp(head, "ENV_2") == 0) {
1084 fprintf(tmp_fp, "ENV_2 = %s\n", settings.env2);
1085 settings.env2[0] = '\0';
1086 }
1087 else if (_stricmp(head, "LOGIN_SHELL") == 0) {
1088 fprintf(tmp_fp, "LOGIN_SHELL = %s\n", (settings.login_shell == TRUE) ? "yes" : "no");
1089 settings.login_shell = FALSE;
1090 }
1091 else if (_stricmp(head, "HOME_CHDIR") == 0) {
1092 fprintf(tmp_fp, "HOME_CHDIR = %s\n", (settings.home_chdir == TRUE) ? "yes" : "no");
1093 settings.home_chdir = FALSE;
1094 }
1095 else if (_stricmp(head, "SSH_AGENT_PROXY") == 0) {
1096 fprintf(tmp_fp, "SSH_AGENT_PROXY = %s\n", (settings.agent_proxy == TRUE) ? "yes" : "no");
1097 settings.agent_proxy = FALSE;
1098 }
1099 else {
1100 fprintf(tmp_fp, "%s = %s\n", head, body);
1101 }
1102 }
1103 fclose(fp);
1104 }
1105 else {
1106 fputs("# CygTerm setting\n", tmp_fp);
1107 fputs("\n", tmp_fp);
1108 }
1109 if (settings.term[0] != '\0') {
1110 fprintf(tmp_fp, "TERM = %s\n", settings.term);
1111 }
1112 if (settings.term_type[0] != '\0') {
1113 fprintf(tmp_fp, "TERM_TYPE = %s\n", settings.term_type);
1114 }
1115 if (settings.port_start[0] != '\0') {
1116 fprintf(tmp_fp, "PORT_START = %s\n", settings.port_start);
1117 }
1118 if (settings.port_range[0] != '\0') {
1119 fprintf(tmp_fp, "PORT_RANGE = %s\n", settings.port_range);
1120 }
1121 if (settings.shell[0] != '\0') {
1122 fprintf(tmp_fp, "SHELL = %s\n", settings.shell);
1123 }
1124 if (settings.env1[0] != '\0') {
1125 fprintf(tmp_fp, "ENV_1 = %s\n", settings.env1);
1126 }
1127 if (settings.env2[0] != '\0') {
1128 fprintf(tmp_fp, "ENV_2 = %s\n", settings.env2);
1129 }
1130 if (settings.login_shell) {
1131 fprintf(tmp_fp, "LOGIN_SHELL = yes\n");
1132 }
1133 if (settings.home_chdir) {
1134 fprintf(tmp_fp, "HOME_CHDIR = yes\n");
1135 }
1136 if (settings.agent_proxy) {
1137 fprintf(tmp_fp, "SSH_AGENT_PROXY = yes\n");
1138 }
1139 fclose(tmp_fp);
1140
1141 if (remove(cfg) != 0 && errno != ENOENT) {
1142 get_lang_msg("MSG_ERROR", uimsg, sizeof(uimsg), "ERROR", ts.UILanguageFile);
1143 get_lang_msg("MSG_CYGTERM_CONF_REMOVEFILE_ERROR", ts.UIMsg, sizeof(ts.UIMsg),
1144 "Can't remove old CygTerm configuration file (%d).", ts.UILanguageFile);
1145 _snprintf_s(buf, sizeof(buf), _TRUNCATE, ts.UIMsg, GetLastError());
1146 MessageBox(buf, uimsg, MB_ICONEXCLAMATION);
1147 }
1148 else if (rename(tmp, cfg) != 0) {
1149 get_lang_msg("MSG_ERROR", uimsg, sizeof(uimsg), "ERROR", ts.UILanguageFile);
1150 get_lang_msg("MSG_CYGTERM_CONF_RENAMEFILE_ERROR", ts.UIMsg, sizeof(ts.UIMsg),
1151 "Can't rename CygTerm configuration file (%d).", ts.UILanguageFile);
1152 _snprintf_s(buf, sizeof(buf), _TRUNCATE, ts.UIMsg, GetLastError());
1153 MessageBox(buf, uimsg, MB_ICONEXCLAMATION);
1154 }
1155 }
1156
1157 // Cygwin install path
1158 GetDlgItemText(IDC_CYGWIN_PATH, ts.CygwinDirectory, sizeof(ts.CygwinDirectory));
1159 }
1160
1161
1162
1163 // CAddSettingPropSheetDlg
1164
1165 IMPLEMENT_DYNAMIC(CAddSettingPropSheetDlg, CPropertySheet)
1166
1167 CAddSettingPropSheetDlg::CAddSettingPropSheetDlg(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
1168 :CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
1169 {
1170 AddPage(&m_GeneralPage);
1171 AddPage(&m_VisualPage);
1172 AddPage(&m_LogPage);
1173 AddPage(&m_CygwinPage);
1174
1175 m_psh.dwFlags |= PSH_NOAPPLYNOW;
1176 }
1177
1178 CAddSettingPropSheetDlg::CAddSettingPropSheetDlg(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
1179 :CPropertySheet(pszCaption, pParentWnd, iSelectPage)
1180 {
1181 AddPage(&m_GeneralPage);
1182 AddPage(&m_CopypastePage);
1183 AddPage(&m_VisualPage);
1184 AddPage(&m_LogPage);
1185 AddPage(&m_CygwinPage);
1186
1187 m_psh.dwFlags |= PSH_NOAPPLYNOW;
1188 }
1189
1190 CAddSettingPropSheetDlg::~CAddSettingPropSheetDlg()
1191 {
1192 }
1193
1194
1195 BEGIN_MESSAGE_MAP(CAddSettingPropSheetDlg, CPropertySheet)
1196 END_MESSAGE_MAP()
1197
1198
1199 // CAddSettingPropSheetDlg ƒ�ƒbƒZ�[ƒW ƒnƒ“ƒhƒ‰
1200
1201 BOOL CAddSettingPropSheetDlg::OnInitDialog()
1202 {
1203 CPropertySheet::OnInitDialog();
1204
1205 get_lang_msg("DLG_TABSHEET_TITLE", ts.UIMsg, sizeof(ts.UIMsg),
1206 "Tera Term: Additional settings", ts.UILanguageFile);
1207 SetWindowText(ts.UIMsg);
1208
1209 CTabCtrl *tab = GetTabControl();
1210 TCITEM tc;
1211 tc.mask = TCIF_TEXT;
1212
1213 get_lang_msg("DLG_TABSHEET_TITLE_GENERAL", ts.UIMsg, sizeof(ts.UIMsg),
1214 "General", ts.UILanguageFile);
1215 tc.pszText = ts.UIMsg;
1216 tab->SetItem(0, &tc);
1217
1218 get_lang_msg("DLG_TABSHEET_TITLE_COPYPASTE", ts.UIMsg, sizeof(ts.UIMsg),
1219 "Copy and Paste", ts.UILanguageFile);
1220 tc.pszText = ts.UIMsg;
1221 tab->SetItem(1, &tc);
1222
1223 get_lang_msg("DLG_TABSHEET_TITLE_VISUAL", ts.UIMsg, sizeof(ts.UIMsg),
1224 "Visual", ts.UILanguageFile);
1225 tc.pszText = ts.UIMsg;
1226 tab->SetItem(2, &tc);
1227
1228 get_lang_msg("DLG_TABSHEET_TITLE_Log", ts.UIMsg, sizeof(ts.UIMsg),
1229 "Log", ts.UILanguageFile);
1230 tc.pszText = ts.UIMsg;
1231 tab->SetItem(3, &tc);
1232
1233 get_lang_msg("DLG_TABSHEET_TITLE_CYGWIN", ts.UIMsg, sizeof(ts.UIMsg),
1234 "Cygwin", ts.UILanguageFile);
1235 tc.pszText = ts.UIMsg;
1236 tab->SetItem(4, &tc);
1237
1238 return FALSE;
1239 }

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