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 2504 - (hide annotations) (download) (as text)
Sun May 11 15:37:00 2008 UTC (15 years, 11 months ago) by maya
Original Path: teraterm/trunk/teraterm/addsetting.cpp
File MIME type: text/x-c++src
File size: 37232 byte(s)
Additional settings を、タブコントロールから CPropertySheet に変更した。
vtwin.cpp から addsetting.cpp に処理を移動した。

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

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