Develop and Download Open Source Software

Browse Subversion Repository

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 10521 - (hide annotations) (download) (as text)
Fri Jan 20 16:03:38 2023 UTC (14 months, 2 weeks ago) by zmatsuo
File MIME type: text/x-c++src
File size: 8295 byte(s)
add communication test tool
1 doda 6806 /*
2     * Copyright (C) 1994-1998 T. Teranishi
3 nmaya 9048 * (C) 2007- TeraTerm Project
4 doda 6806 * All rights reserved.
5     *
6 doda 6841 * Redistribution and use in source and binary forms, with or without
7     * modification, are permitted provided that the following conditions
8     * are met:
9 doda 6806 *
10 doda 6841 * 1. Redistributions of source code must retain the above copyright
11     * notice, this list of conditions and the following disclaimer.
12     * 2. Redistributions in binary form must reproduce the above copyright
13     * notice, this list of conditions and the following disclaimer in the
14     * documentation and/or other materials provided with the distribution.
15     * 3. The name of the author may not be used to endorse or promote products
16     * derived from this software without specific prior written permission.
17 doda 6806 *
18 doda 6841 * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
19     * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20     * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21     * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
22     * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
23     * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24     * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25     * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26     * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27     * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 doda 6806 */
29 maya 3227
30     /* TERATERM.EXE, file transfer dialog box */
31 zmatsuo 7554
32 zmatsuo 7526 #include <stdio.h>
33     #include <windows.h>
34     #include <commctrl.h>
35 zmatsuo 7554
36 maya 3227 #include "teraterm.h"
37     #include "tttypes.h"
38     #include "ttlib.h"
39 zmatsuo 7526 #include "dlglib.h"
40 maya 3227 #include "tt_res.h"
41     #include "ftdlg.h"
42 zmatsuo 7528 #include "teraterml.h"
43 zmatsuo 8225 #include "helpid.h"
44 zmatsuo 8857 #include "filesys.h"
45 zmatsuo 8899 #include "codeconv.h"
46 nmaya 10009 #include "compat_win.h"
47 maya 3227
48     /////////////////////////////////////////////////////////////////////////////
49     // CFileTransDlg dialog
50    
51 zmatsuo 8895 CFileTransDlg::CFileTransDlg()
52 maya 3227 {
53 zmatsuo 8895 DlgCaption = NULL;
54     FileName = NULL;
55     FullName = NULL;
56     ProgStat = 0;
57     }
58    
59     CFileTransDlg::~CFileTransDlg()
60     {
61     free(DlgCaption);
62     free(FileName);
63     free(FullName);
64     }
65    
66 zmatsuo 9070 BOOL CFileTransDlg::Create(HINSTANCE hInstance, CFileTransDlg::Info *info)
67 zmatsuo 8895 {
68 maya 3392 BOOL Ok;
69 maya 4822 HWND hwnd;
70 maya 3227
71 zmatsuo 8895 UILanguageFile = info->UILanguageFile;
72 zmatsuo 9067 OpId = info->OpId; // OpLog or OpSendFile ����
73 zmatsuo 8899 DlgCaption = _wcsdup(info->DlgCaption);
74     FullName = _wcsdup(info->FullName);
75 zmatsuo 8902 if (info->FileName != NULL) {
76     FileName = _wcsdup(info->FileName);
77     }
78     else {
79     const wchar_t *fullname = info->FullName;
80     const wchar_t *p = wcsrchr(fullname, L'\\');
81     if (p == NULL) {
82     p = wcsrchr(fullname, L'/');
83     }
84     if (p == NULL) {
85     FileName = _wcsdup(fullname);
86     }
87     else {
88     FileName = _wcsdup(p + 1);
89     }
90     }
91 zmatsuo 8895 HideDialog = info->HideDialog;
92     HMainWin = info->HMainWin;
93 maya 3227
94 maya 3392 Pause = FALSE;
95 zmatsuo 7526 hwnd = GetForegroundWindow();
96 zmatsuo 8895 if (OpId == OpLog) { // parent window is desktop
97 zmatsuo 8850 Ok = TTCDialog::Create(hInstance, GetDesktopWindow(), IDD_FILETRANSDLG);
98 maya 3392 }
99     else { // parent window is VT window
100 zmatsuo 8850 Ok = TTCDialog::Create(hInstance, NULL, IDD_FILETRANSDLG);
101 maya 3392 }
102 zmatsuo 8895 if (OpId == OpSendFile) {
103     HWND HProg = ::GetDlgItem(m_hWnd, IDC_TRANSPROGRESS);
104    
105     ProgStat = 0;
106    
107     ::SendMessage(HProg, PBM_SETRANGE, (WPARAM)0, MAKELPARAM(0, 100));
108     ::SendMessage(HProg, PBM_SETSTEP, (WPARAM)1, 0);
109     ::SendMessage(HProg, PBM_SETPOS, (WPARAM)0, 0);
110    
111     ::ShowWindow(HProg, SW_SHOW);
112    
113 zmatsuo 8857 ::ShowWindow(GetDlgItem(IDC_TRANS_ELAPSED), SW_SHOW);
114     }
115 maya 3227
116 zmatsuo 8895 if (!HideDialog) {
117 maya 4818 // Visible = False ���_�C�A���O���\������
118 maya 3709 ShowWindow(SW_SHOWNORMAL);
119 zmatsuo 8895 if (OpId == OpLog) {
120 maya 3392 ShowWindow(SW_MINIMIZE);
121     }
122     }
123 maya 3596 else {
124 maya 4822 // ���O���t�H�A�O���E���h�������E�B���h�E���t�H�[�J�X�������B
125     // ���j���[�������O���X�^�[�g�������� VTWin ���t�H�[�J�X���������������K�v�������B
126 maya 3600 ::SetForegroundWindow(hwnd);
127 maya 3596 }
128 maya 3227
129 maya 3392 return Ok;
130 maya 3227 }
131    
132 zmatsuo 8857 /**
133     * �e�L�X�g�����X����
134     */
135 maya 3227 void CFileTransDlg::ChangeButton(BOOL PauseFlag)
136     {
137 maya 3392 Pause = PauseFlag;
138     if (Pause) {
139 zmatsuo 8857 static const DlgTextInfo TextInfos[] = {
140     { IDC_TRANSPAUSESTART, "DLG_FILETRANS_START" },
141     };
142     SetDlgTexts(m_hWnd, TextInfos, _countof(TextInfos), UILanguageFile);
143 maya 3392 }
144     else {
145 zmatsuo 8857 static const DlgTextInfo TextInfos[] = {
146     { IDC_TRANSPAUSESTART, "DLG_FILETRANS_PAUSE" },
147     };
148     SetDlgTexts(m_hWnd, TextInfos, _countof(TextInfos), UILanguageFile);
149 maya 3392 }
150 maya 3227 }
151    
152 zmatsuo 8895 void CFileTransDlg::RefreshNum(DWORD StartTime, LONG FileSize, LONG ByteCount)
153 maya 3227 {
154 maya 3392 char NumStr[24];
155     double rate;
156 doda 4454 int rate2;
157     static DWORD prev_elapsed;
158     DWORD elapsed;
159 maya 3227
160 zmatsuo 8895 if (OpId == OpSendFile) {
161     if (StartTime == 0) {
162 doda 4461 SetDlgItemText(IDC_TRANS_ETIME, "0:00");
163 doda 4454 prev_elapsed = 0;
164     }
165     else {
166 zmatsuo 8895 elapsed = (GetTickCount() - StartTime) / 1000;
167 doda 4454 if (elapsed != prev_elapsed && elapsed != 0) {
168 zmatsuo 8895 rate2 = ByteCount / elapsed;
169 doda 4454 if (rate2 < 1200) {
170     _snprintf_s(NumStr, sizeof(NumStr), _TRUNCATE, "%d:%02d (%dBytes/s)", elapsed / 60, elapsed % 60, rate2);
171     }
172     else if (rate2 < 1200000) {
173     _snprintf_s(NumStr, sizeof(NumStr), _TRUNCATE, "%d:%02d (%d.%02dKB/s)", elapsed / 60, elapsed % 60, rate2 / 1000, rate2 / 10 % 100);
174     }
175     else {
176     _snprintf_s(NumStr, sizeof(NumStr), _TRUNCATE, "%d:%02d (%d.%02dMB/s)", elapsed / 60, elapsed % 60, rate2 / (1000*1000), rate2 / 10000 % 100);
177     }
178 doda 4461 SetDlgItemText(IDC_TRANS_ETIME, NumStr);
179 doda 4454 prev_elapsed = elapsed;
180     }
181     }
182    
183 zmatsuo 8895 if (FileSize > 0) {
184     rate = 100.0 * (double)ByteCount / (double)FileSize;
185     if (ProgStat < (int)rate) {
186     ProgStat = (int)rate;
187     SendDlgItemMessage(IDC_TRANSPROGRESS, PBM_SETPOS, (WPARAM)ProgStat, 0);
188     }
189     _snprintf_s(NumStr,sizeof(NumStr),_TRUNCATE,"%u (%3.1f%%)",ByteCount, rate);
190 maya 3392 }
191 zmatsuo 8895 SetDlgItemText(IDC_TRANSBYTES, NumStr);
192 maya 3392 }
193     else {
194 zmatsuo 8895 _snprintf_s(NumStr,sizeof(NumStr),_TRUNCATE,"%u",ByteCount);
195     SetDlgItemText(IDC_TRANSBYTES, NumStr);
196 maya 3392 }
197 maya 3227 }
198    
199     /////////////////////////////////////////////////////////////////////////////
200     // CFileTransDlg message handler
201    
202     BOOL CFileTransDlg::OnInitDialog()
203     {
204 zmatsuo 7526 static const DlgTextInfo TextInfos[] = {
205     { IDC_TRANS_FILENAME, "DLG_FILETRANS_FILENAME" },
206     { IDC_FULLPATH_LABEL, "DLG_FILETRANS_FULLPATH" },
207     { IDC_TRANS_TRANS, "DLG_FILETRANS_TRNAS" },
208     { IDC_TRANS_ELAPSED, "DLG_FILETRANS_ELAPSED" },
209     { IDCANCEL, "DLG_FILETRANS_CLOSE" },
210     { IDC_TRANSPAUSESTART, "DLG_FILETRANS_PAUSE" },
211     { IDC_TRANSHELP, "BTN_HELP" },
212     };
213    
214 zmatsuo 8895 if (HideDialog) {
215 maya 4822 // Visible = False �����t�H�A�O���E���h�����������������A������������
216     // �������g���X�^�C�� WS_EX_NOACTIVATE ���w�������B
217     // (Windows 2000 �������L��)
218     // WS_EX_NOACTIVATE ���w���������\�����������������^�X�N�o�[����������
219     // ���� WS_EX_APPWINDOW ���w�������B
220     ModifyStyleEx(0, WS_EX_NOACTIVATE | WS_EX_APPWINDOW);
221     }
222    
223 zmatsuo 8899 SetWindowTextW(DlgCaption);
224     SetDlgItemTextW(IDC_TRANSFNAME, FileName);
225     SetDlgItemTextW(IDC_EDIT_FULLPATH, FullName);
226 maya 3227
227 zmatsuo 8857 SetDlgTexts(m_hWnd, TextInfos, _countof(TextInfos), UILanguageFile);
228 zmatsuo 7526
229 nmaya 10009 TTSetIcon(m_hInst, m_hWnd, MAKEINTRESOURCEW(IDI_TTERM), 0);
230 maya 3227
231 zmatsuo 7915 AddModelessHandle(m_hWnd);
232 zmatsuo 7526
233     return TRUE;
234 maya 3227 }
235    
236 zmatsuo 7526 BOOL CFileTransDlg::OnCancel( )
237 maya 3227 {
238 zmatsuo 8900 if (OpId == OpLog) {
239     FLogClose();
240     }
241     else {
242 zmatsuo 9067 FileSendEnd();
243 zmatsuo 8900 }
244 zmatsuo 7526 return TRUE;
245 maya 3227 }
246    
247 doda 6435 BOOL CFileTransDlg::OnCommand(WPARAM wParam, LPARAM lParam)
248 maya 3227 {
249 maya 3392 switch (LOWORD(wParam)) {
250     case IDC_TRANSPAUSESTART:
251     ChangeButton(! Pause);
252 zmatsuo 8900 if (OpId == OpLog) {
253     FLogPause(Pause);
254     }
255     else {
256 zmatsuo 9069 FileSendPause(Pause);
257 zmatsuo 8900 }
258 maya 3392 return TRUE;
259     case IDC_TRANSHELP:
260 zmatsuo 8895 if (OpId == OpLog) {
261     ::PostMessage(HMainWin, WM_USER_DLGHELP2, HlpFileLog, 0);
262 zmatsuo 8851 }
263     else {
264 zmatsuo 8895 ::PostMessage(HMainWin, WM_USER_DLGHELP2, HlpFileSend, 0);
265 zmatsuo 8851 }
266 maya 3392 return TRUE;
267     default:
268 zmatsuo 7526 return (TTCDialog::OnCommand(wParam,lParam));
269 maya 3392 }
270 maya 3227 }
271    
272 nmaya 10009 BOOL CFileTransDlg::OnClose()
273     {
274     TTSetIcon(m_hInst, m_hWnd, NULL, 0);
275     return TRUE;
276     }
277    
278 zmatsuo 7526 BOOL CFileTransDlg::PostNcDestroy()
279 maya 3227 {
280 zmatsuo 7915 RemoveModelessHandle(m_hWnd);
281 zmatsuo 7526
282 maya 3392 delete this;
283 zmatsuo 7526 return TRUE;
284 maya 3227 }
285 nmaya 10009
286     LRESULT CFileTransDlg::DlgProc(UINT msg, WPARAM wp, LPARAM)
287     {
288     switch (msg) {
289     case WM_DPICHANGED: {
290     const UINT NewDPI = LOWORD(wp);
291     TTSetIcon(m_hInst, m_hWnd, MAKEINTRESOURCEW(IDI_TTERM), NewDPI);
292     break;
293     }
294     default:
295     break;
296     }
297     return (LRESULT)FALSE;
298     }

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