summaryrefslogtreecommitdiffabout
authorMichael Krelin <hacker@klever.net>2004-11-03 21:50:28 (UTC)
committer Michael Krelin <hacker@klever.net>2004-11-03 21:50:28 (UTC)
commit5f552506513653f08acc6921b8c158489a7ebbbb (patch) (unidiff)
tree74ab06cf90c488915b87f48e74359554521cbec9
parent4435ed85c3acb4df42135e009b133fb8e9d2f09c (diff)
downloadpumpkin-5f552506513653f08acc6921b8c158489a7ebbbb.zip
pumpkin-5f552506513653f08acc6921b8c158489a7ebbbb.tar.gz
pumpkin-5f552506513653f08acc6921b8c158489a7ebbbb.tar.bz2
Added dialog box in case we can't bind listening socket.
git-svn-id: http://svn.klever.net/kin/pumpkin/trunk@47 fe716a7a-6dde-0310-88d9-d003556173a8
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--PumpKINDlg.cpp1
-rw-r--r--pumpkin.rc10
-rw-r--r--resource.h1
3 files changed, 8 insertions, 4 deletions
diff --git a/PumpKINDlg.cpp b/PumpKINDlg.cpp
index 0b3bf41..fc24596 100644
--- a/PumpKINDlg.cpp
+++ b/PumpKINDlg.cpp
@@ -138,384 +138,385 @@ BEGIN_MESSAGE_MAP(CPumpKINDlg, CDialog)
138 ON_NOTIFY(LVN_INSERTITEM, IDC_CONNECTIONS, OnInsertitemConnections) 138 ON_NOTIFY(LVN_INSERTITEM, IDC_CONNECTIONS, OnInsertitemConnections)
139 ON_NOTIFY(LVN_ITEMCHANGED, IDC_CONNECTIONS, OnItemchangedConnections) 139 ON_NOTIFY(LVN_ITEMCHANGED, IDC_CONNECTIONS, OnItemchangedConnections)
140 ON_BN_CLICKED(IDC_ABORT, OnAbort) 140 ON_BN_CLICKED(IDC_ABORT, OnAbort)
141 ON_WM_CLOSE() 141 ON_WM_CLOSE()
142 ON_COMMAND(ID_TRAY_SHOWPUMPKINWINDOW, OnTrayShowpumpkinwindow) 142 ON_COMMAND(ID_TRAY_SHOWPUMPKINWINDOW, OnTrayShowpumpkinwindow)
143 ON_COMMAND(ID_TRAY_EXIT, OnTrayExit) 143 ON_COMMAND(ID_TRAY_EXIT, OnTrayExit)
144 ON_COMMAND(ID_TRAY_ABOUTPUMPKIN, OnTrayAboutpumpkin) 144 ON_COMMAND(ID_TRAY_ABOUTPUMPKIN, OnTrayAboutpumpkin)
145 ON_COMMAND(ID_TRAY_FETCHFILE, OnTrayFetchfile) 145 ON_COMMAND(ID_TRAY_FETCHFILE, OnTrayFetchfile)
146 ON_COMMAND(ID_TRAY_HELP, OnTrayHelp) 146 ON_COMMAND(ID_TRAY_HELP, OnTrayHelp)
147 ON_COMMAND(ID_TRAY_OPTIONS, OnTrayOptions) 147 ON_COMMAND(ID_TRAY_OPTIONS, OnTrayOptions)
148 ON_COMMAND(ID_TRAY_SENDFILE, OnTraySendfile) 148 ON_COMMAND(ID_TRAY_SENDFILE, OnTraySendfile)
149 ON_WM_WINDOWPOSCHANGING() 149 ON_WM_WINDOWPOSCHANGING()
150 ON_LBN_SELCHANGE(IDC_LOG, OnSelchangeLog) 150 ON_LBN_SELCHANGE(IDC_LOG, OnSelchangeLog)
151 ON_COMMAND(ID_TRAY_OPENFILESFOLDER, OnTrayOpenfilesfolder) 151 ON_COMMAND(ID_TRAY_OPENFILESFOLDER, OnTrayOpenfilesfolder)
152 ON_WM_DROPFILES() 152 ON_WM_DROPFILES()
153 ON_BN_CLICKED(ID_HELP, OnHelp) 153 ON_BN_CLICKED(ID_HELP, OnHelp)
154 //}}AFX_MSG_MAP 154 //}}AFX_MSG_MAP
155END_MESSAGE_MAP() 155END_MESSAGE_MAP()
156 156
157///////////////////////////////////////////////////////////////////////////// 157/////////////////////////////////////////////////////////////////////////////
158// CPumpKINDlg message handlers 158// CPumpKINDlg message handlers
159 159
160BOOL CPumpKINDlg::OnInitDialog() 160BOOL CPumpKINDlg::OnInitDialog()
161{ 161{
162 CDialog::OnInitDialog(); 162 CDialog::OnInitDialog();
163 163
164 // Add "About..." menu item to system menu. 164 // Add "About..." menu item to system menu.
165 165
166 // IDM_ABOUTBOX must be in the system command range. 166 // IDM_ABOUTBOX must be in the system command range.
167 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); 167 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
168 ASSERT(IDM_ABOUTBOX < 0xF000); 168 ASSERT(IDM_ABOUTBOX < 0xF000);
169 169
170 CMenu* pSysMenu = GetSystemMenu(FALSE); 170 CMenu* pSysMenu = GetSystemMenu(FALSE);
171 CString strAboutMenu; 171 CString strAboutMenu;
172 strAboutMenu.LoadString(IDS_ABOUTBOX); 172 strAboutMenu.LoadString(IDS_ABOUTBOX);
173 if (!strAboutMenu.IsEmpty()) 173 if (!strAboutMenu.IsEmpty())
174 { 174 {
175 pSysMenu->AppendMenu(MF_SEPARATOR); 175 pSysMenu->AppendMenu(MF_SEPARATOR);
176 pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); 176 pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
177 } 177 }
178 178
179 // Set the icon for this dialog. The framework does this automatically 179 // Set the icon for this dialog. The framework does this automatically
180 // when the application's main window is not a dialog 180 // when the application's main window is not a dialog
181 SetIcon(m_hIcon, TRUE); // Set big icon 181 SetIcon(m_hIcon, TRUE); // Set big icon
182 SetIcon(m_hIcon, FALSE); // Set small icon 182 SetIcon(m_hIcon, FALSE); // Set small icon
183 183
184 VERIFY(m_Retrier->Create(NULL,"PumpKIN-Retrier",WS_CHILD,CRect(0,0,0,0),this,0)); 184 VERIFY(m_Retrier->Create(NULL,"PumpKIN-Retrier",WS_CHILD,CRect(0,0,0,0),this,0));
185 185
186 186
187 m_Images.Create(16,16,TRUE,2,1); 187 m_Images.Create(16,16,TRUE,2,1);
188 m_iRRQ = m_Images.Add(AfxGetApp()->LoadIcon(IDI_RRQ)); 188 m_iRRQ = m_Images.Add(AfxGetApp()->LoadIcon(IDI_RRQ));
189 m_iWRQ = m_Images.Add(AfxGetApp()->LoadIcon(IDI_WRQ)); 189 m_iWRQ = m_Images.Add(AfxGetApp()->LoadIcon(IDI_WRQ));
190 ASSERT(m_iRRQ>=0); 190 ASSERT(m_iRRQ>=0);
191 ASSERT(m_iWRQ>=0); 191 ASSERT(m_iWRQ>=0);
192 m_List.SetImageList(&m_Images,LVSIL_NORMAL); 192 m_List.SetImageList(&m_Images,LVSIL_NORMAL);
193 m_List.SetImageList(&m_Images,LVSIL_SMALL); 193 m_List.SetImageList(&m_Images,LVSIL_SMALL);
194 m_List.SetImageList(&m_Images,LVSIL_STATE); 194 m_List.SetImageList(&m_Images,LVSIL_STATE);
195 m_List.SetTextColor(RGB(255,255,0));// Yellow 195 m_List.SetTextColor(RGB(255,255,0));// Yellow
196 m_List.SetTextBkColor(RGB(12,167,0));// Green 196 m_List.SetTextBkColor(RGB(12,167,0));// Green
197 m_List.SetBkColor(RGB(12,167,0));// Green 197 m_List.SetBkColor(RGB(12,167,0));// Green
198CRect listrc; 198CRect listrc;
199 m_List.GetClientRect(&listrc); 199 m_List.GetClientRect(&listrc);
200 m_List.InsertColumn(0,"File",LVCFMT_LEFT,listrc.Width()-((listrc.Width()/7)*3+listrc.Width()*2/7),subitemFile); 200 m_List.InsertColumn(0,"File",LVCFMT_LEFT,listrc.Width()-((listrc.Width()/7)*3+listrc.Width()*2/7),subitemFile);
201 m_List.InsertColumn(1,"type",LVCFMT_CENTER,listrc.Width()/7,subitemType); 201 m_List.InsertColumn(1,"type",LVCFMT_CENTER,listrc.Width()/7,subitemType);
202 m_List.InsertColumn(2,"peer",LVCFMT_LEFT,listrc.Width()*2/7,subitemPeer); 202 m_List.InsertColumn(2,"peer",LVCFMT_LEFT,listrc.Width()*2/7,subitemPeer);
203 m_List.InsertColumn(3,"ACK",LVCFMT_RIGHT,listrc.Width()/7,subitemBytes); 203 m_List.InsertColumn(3,"ACK",LVCFMT_RIGHT,listrc.Width()/7,subitemBytes);
204 m_List.InsertColumn(4,"tsize",LVCFMT_RIGHT,listrc.Width()/7,subitemTSize); 204 m_List.InsertColumn(4,"tsize",LVCFMT_RIGHT,listrc.Width()/7,subitemTSize);
205 205
206 LogLine(IDS_LOG_START); 206 LogLine(IDS_LOG_START);
207 207
208 SetupButtons(); 208 SetupButtons();
209 209
210CRect rc, drc; 210CRect rc, drc;
211 GetWindowRect(rc); 211 GetWindowRect(rc);
212 GetDesktopWindow()->GetWindowRect(drc); 212 GetDesktopWindow()->GetWindowRect(drc);
213 SetWindowPos(NULL,drc.right-6-rc.Width(),6,0,0,SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOZORDER); 213 SetWindowPos(NULL,drc.right-6-rc.Width(),6,0,0,SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOZORDER);
214 214
215 if(m_bShown) 215 if(m_bShown)
216 ShowWindow(SW_SHOW); 216 ShowWindow(SW_SHOW);
217 else 217 else
218 ShowWindow(SW_HIDE); 218 ShowWindow(SW_HIDE);
219 219
220 // CG: The following block was added by the ToolTips component. 220 // CG: The following block was added by the ToolTips component.
221 { 221 {
222 // Create the ToolTip control. 222 // Create the ToolTip control.
223 m_tooltip.Create(this); 223 m_tooltip.Create(this);
224 m_tooltip.Activate(TRUE); 224 m_tooltip.Activate(TRUE);
225 225
226 m_tooltip.AddTool(&m_List,IDC_CONNECTIONS); 226 m_tooltip.AddTool(&m_List,IDC_CONNECTIONS);
227 m_tooltip.AddTool(GetDlgItem(IDC_PUT),IDC_PUT); 227 m_tooltip.AddTool(GetDlgItem(IDC_PUT),IDC_PUT);
228 m_tooltip.AddTool(GetDlgItem(IDC_GET),IDC_GET); 228 m_tooltip.AddTool(GetDlgItem(IDC_GET),IDC_GET);
229 m_tooltip.AddTool(&m_AbortCtl,IDC_ABORT); 229 m_tooltip.AddTool(&m_AbortCtl,IDC_ABORT);
230 m_tooltip.AddTool(GetDlgItem(IDC_OPTIONS),IDC_OPTIONS); 230 m_tooltip.AddTool(GetDlgItem(IDC_OPTIONS),IDC_OPTIONS);
231 m_tooltip.AddTool(GetDlgItem(IDC_EXIT),IDC_EXIT); 231 m_tooltip.AddTool(GetDlgItem(IDC_EXIT),IDC_EXIT);
232 m_tooltip.AddTool(GetDlgItem(ID_HELP),ID_HELP); 232 m_tooltip.AddTool(GetDlgItem(ID_HELP),ID_HELP);
233 m_tooltip.AddTool(GetDlgItem(IDC_LOG),IDC_LOG); 233 m_tooltip.AddTool(GetDlgItem(IDC_LOG),IDC_LOG);
234 } 234 }
235 return TRUE; // return TRUE unless you set the focus to a control 235 return TRUE; // return TRUE unless you set the focus to a control
236} 236}
237 237
238void CPumpKINDlg::OnSysCommand(UINT nID, LPARAM lParam) 238void CPumpKINDlg::OnSysCommand(UINT nID, LPARAM lParam)
239{ 239{
240 if ((nID & 0xFFF0) == IDM_ABOUTBOX) 240 if ((nID & 0xFFF0) == IDM_ABOUTBOX)
241 { 241 {
242 CAboutDlg dlgAbout; 242 CAboutDlg dlgAbout;
243 dlgAbout.DoModal(); 243 dlgAbout.DoModal();
244 } 244 }
245 else 245 else
246 { 246 {
247 CDialog::OnSysCommand(nID, lParam); 247 CDialog::OnSysCommand(nID, lParam);
248 } 248 }
249} 249}
250 250
251void CPumpKINDlg::OnDestroy() 251void CPumpKINDlg::OnDestroy()
252{ 252{
253 SaveSettings(); 253 SaveSettings();
254 254
255NOTIFYICONDATA nid; 255NOTIFYICONDATA nid;
256 memset(&nid,0,sizeof(nid)); 256 memset(&nid,0,sizeof(nid));
257 nid.cbSize=sizeof(nid); 257 nid.cbSize=sizeof(nid);
258 nid.hWnd=m_Trayer->m_hWnd; 258 nid.hWnd=m_Trayer->m_hWnd;
259 nid.uID=IDC_TRAYICON; 259 nid.uID=IDC_TRAYICON;
260 nid.uFlags=0; 260 nid.uFlags=0;
261 VERIFY(Shell_NotifyIcon(NIM_DELETE,&nid)); 261 VERIFY(Shell_NotifyIcon(NIM_DELETE,&nid));
262 262
263 WinHelp(0L, HELP_QUIT); 263 WinHelp(0L, HELP_QUIT);
264 CDialog::OnDestroy(); 264 CDialog::OnDestroy();
265POSITION p = m_LogTimes.GetStartPosition(); 265POSITION p = m_LogTimes.GetStartPosition();
266 while(p){ 266 while(p){
267 CTime *t,*tt; 267 CTime *t,*tt;
268 m_LogTimes.GetNextAssoc(p,t,tt); 268 m_LogTimes.GetNextAssoc(p,t,tt);
269 ASSERT(t && tt && t==tt); 269 ASSERT(t && tt && t==tt);
270 delete t; 270 delete t;
271 } 271 }
272 // *** Abort and cleanup transfers 272 // *** Abort and cleanup transfers
273 m_LogTimes.RemoveAll(); 273 m_LogTimes.RemoveAll();
274} 274}
275 275
276// If you add a minimize button to your dialog, you will need the code below 276// If you add a minimize button to your dialog, you will need the code below
277// to draw the icon. For MFC applications using the document/view model, 277// to draw the icon. For MFC applications using the document/view model,
278// this is automatically done for you by the framework. 278// this is automatically done for you by the framework.
279 279
280void CPumpKINDlg::OnPaint() 280void CPumpKINDlg::OnPaint()
281{ 281{
282 if (IsIconic()) 282 if (IsIconic())
283 { 283 {
284 CPaintDC dc(this); // device context for painting 284 CPaintDC dc(this); // device context for painting
285 285
286 SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); 286 SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
287 287
288 // Center icon in client rectangle 288 // Center icon in client rectangle
289 int cxIcon = GetSystemMetrics(SM_CXICON); 289 int cxIcon = GetSystemMetrics(SM_CXICON);
290 int cyIcon = GetSystemMetrics(SM_CYICON); 290 int cyIcon = GetSystemMetrics(SM_CYICON);
291 CRect rect; 291 CRect rect;
292 GetClientRect(&rect); 292 GetClientRect(&rect);
293 int x = (rect.Width() - cxIcon + 1) / 2; 293 int x = (rect.Width() - cxIcon + 1) / 2;
294 int y = (rect.Height() - cyIcon + 1) / 2; 294 int y = (rect.Height() - cyIcon + 1) / 2;
295 295
296 // Draw the icon 296 // Draw the icon
297 dc.DrawIcon(x, y, m_hIcon); 297 dc.DrawIcon(x, y, m_hIcon);
298 } 298 }
299 else 299 else
300 { 300 {
301 CPaintDC pDC(this); 301 CPaintDC pDC(this);
302 CDC bmpDC; 302 CDC bmpDC;
303 bmpDC.CreateCompatibleDC(&pDC); 303 bmpDC.CreateCompatibleDC(&pDC);
304 bmpDC.SelectObject(&m_bmpBack); 304 bmpDC.SelectObject(&m_bmpBack);
305 CRect rc; 305 CRect rc;
306 GetClientRect(&rc); 306 GetClientRect(&rc);
307 for(int x=-m_bitmapBack.bmWidth*2/4;x<rc.Width();x+=m_bitmapBack.bmWidth) 307 for(int x=-m_bitmapBack.bmWidth*2/4;x<rc.Width();x+=m_bitmapBack.bmWidth)
308 for(int y=-m_bitmapBack.bmHeight*2/4;y<rc.Height();y+=m_bitmapBack.bmHeight) 308 for(int y=-m_bitmapBack.bmHeight*2/4;y<rc.Height();y+=m_bitmapBack.bmHeight)
309 pDC.BitBlt(x,y,m_bitmapBack.bmWidth,m_bitmapBack.bmHeight,&bmpDC,0,0,SRCCOPY); 309 pDC.BitBlt(x,y,m_bitmapBack.bmWidth,m_bitmapBack.bmHeight,&bmpDC,0,0,SRCCOPY);
310 bmpDC.DeleteDC(); 310 bmpDC.DeleteDC();
311 CDialog::OnPaint(); 311 CDialog::OnPaint();
312 } 312 }
313} 313}
314 314
315// The system calls this to obtain the cursor to display while the user drags 315// The system calls this to obtain the cursor to display while the user drags
316// the minimized window. 316// the minimized window.
317HCURSOR CPumpKINDlg::OnQueryDragIcon() 317HCURSOR CPumpKINDlg::OnQueryDragIcon()
318{ 318{
319 return (HCURSOR) m_hIcon; 319 return (HCURSOR) m_hIcon;
320} 320}
321 321
322int CPumpKINDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) 322int CPumpKINDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
323{ 323{
324 if (CDialog::OnCreate(lpCreateStruct) == -1) 324 if (CDialog::OnCreate(lpCreateStruct) == -1)
325 return -1; 325 return -1;
326 326
327 m_Listener.m_Daddy=this; 327 m_Listener.m_Daddy=this;
328 if(!m_Listener.Create(m_ListenPort,SOCK_DGRAM)){ 328 if(!m_Listener.Create(m_ListenPort,SOCK_DGRAM)){
329 TRACE0("Failed to create socket\n"); 329 TRACE0("Failed to create socket\n");
330 AfxMessageBox(IDS_BOX_CANTBIND,MB_OK|MB_ICONEXCLAMATION);
330 return -1; 331 return -1;
331 } 332 }
332 333
333 if(!m_Trayer->Create(NULL,"PumpKIN TrayIcon",WS_CHILD,CRect(0,0,0,0),this,0)){ 334 if(!m_Trayer->Create(NULL,"PumpKIN TrayIcon",WS_CHILD,CRect(0,0,0,0),this,0)){
334 TRACE0("Failed to create trayer\n"); 335 TRACE0("Failed to create trayer\n");
335 return -1; 336 return -1;
336 } 337 }
337 338
338NOTIFYICONDATA nid; 339NOTIFYICONDATA nid;
339 memset(&nid,0,sizeof(nid)); 340 memset(&nid,0,sizeof(nid));
340 nid.cbSize=sizeof(nid); 341 nid.cbSize=sizeof(nid);
341 nid.hWnd=m_Trayer->m_hWnd; 342 nid.hWnd=m_Trayer->m_hWnd;
342 nid.uID=IDC_TRAYICON; 343 nid.uID=IDC_TRAYICON;
343 nid.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP; 344 nid.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
344 nid.uCallbackMessage=WM_TRAYICON; 345 nid.uCallbackMessage=WM_TRAYICON;
345 nid.hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME); 346 nid.hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
346 // *** Load from resource 347 // *** Load from resource
347 strcpy(nid.szTip,"PumpKIN"); 348 strcpy(nid.szTip,"PumpKIN");
348 VERIFY(Shell_NotifyIcon(NIM_ADD,&nid)); 349 VERIFY(Shell_NotifyIcon(NIM_ADD,&nid));
349 350
350 return 0; 351 return 0;
351} 352}
352 353
353void CListenSocket::OnReceive(int nErrorCode) 354void CListenSocket::OnReceive(int nErrorCode)
354{ 355{
355 ASSERT(m_Daddy); 356 ASSERT(m_Daddy);
356 if(nErrorCode){ 357 if(nErrorCode){
357 m_Daddy->LogLine(IDS_LOG_LISTENRECEIVEERROR); 358 m_Daddy->LogLine(IDS_LOG_LISTENRECEIVEERROR);
358 return; 359 return;
359 } 360 }
360DWORD fionread = 0; 361DWORD fionread = 0;
361 VERIFY(IOCtl(FIONREAD,&fionread));// *** Do some checking on the value acquired 362 VERIFY(IOCtl(FIONREAD,&fionread));// *** Do some checking on the value acquired
362tftp *tftpRQ = tftp::Allocate(fionread); 363tftp *tftpRQ = tftp::Allocate(fionread);
363 ASSERT(tftpRQ); 364 ASSERT(tftpRQ);
364SOCKADDR_IN sin; 365SOCKADDR_IN sin;
365 if(!tftpRQ->Receive(this,fionread,&sin)){ 366 if(!tftpRQ->Receive(this,fionread,&sin)){
366 m_Daddy->LogLine(IDS_LOG_LISTENACCEPTERROR); 367 m_Daddy->LogLine(IDS_LOG_LISTENACCEPTERROR);
367 delete tftpRQ; 368 delete tftpRQ;
368 return; 369 return;
369 } 370 }
370 #ifndefNDEBUG 371 #ifndefNDEBUG
371CString tmp; 372CString tmp;
372 tmp.Format("%u - %s - %u\n",tftpRQ->Opcode(),inet_ntoa(sin.sin_addr),sin.sin_port); 373 tmp.Format("%u - %s - %u\n",tftpRQ->Opcode(),inet_ntoa(sin.sin_addr),sin.sin_port);
373 TRACE0(tmp); 374 TRACE0(tmp);
374#endif 375#endif
375POSITION p = m_Daddy->m_Xfers.GetStartPosition(); 376POSITION p = m_Daddy->m_Xfers.GetStartPosition();
376 while(p){ 377 while(p){
377 SOCKET key; 378 SOCKET key;
378 CXferSocket *sock; 379 CXferSocket *sock;
379 m_Daddy->m_Xfers.GetNextAssoc(p,key,sock); 380 m_Daddy->m_Xfers.GetNextAssoc(p,key,sock);
380 ASSERT(sock); 381 ASSERT(sock);
381 if(sock->m_Peer.sin_addr.s_addr==sin.sin_addr.s_addr && sock->m_Peer.sin_port==sin.sin_port){ 382 if(sock->m_Peer.sin_addr.s_addr==sin.sin_addr.s_addr && sock->m_Peer.sin_port==sin.sin_port){
382 TRACE0("Ignoring request which we are already processing\n"); 383 TRACE0("Ignoring request which we are already processing\n");
383 delete tftpRQ; 384 delete tftpRQ;
384 return; 385 return;
385 } 386 }
386 } 387 }
387 switch(tftpRQ->Opcode()){ 388 switch(tftpRQ->Opcode()){
388 case tftp::opRRQ: 389 case tftp::opRRQ:
389 // Read Request 390 // Read Request
390 { 391 {
391 CString tmp; 392 CString tmp;
392 tmp.Format(IDS_LOG_RRQSERVE,tftpRQ->rqFileName(),tftpRQ->rqType(),inet_ntoa(sin.sin_addr)); 393 tmp.Format(IDS_LOG_RRQSERVE,tftpRQ->rqFileName(),tftpRQ->rqType(),inet_ntoa(sin.sin_addr));
393 m_Daddy->LogLine(tmp); 394 m_Daddy->LogLine(tmp);
394 CRRQSocket *s = new CRRQSocket(m_Daddy,tftpRQ->rqFileName(),tftpRQ->rqType(),&sin); 395 CRRQSocket *s = new CRRQSocket(m_Daddy,tftpRQ->rqFileName(),tftpRQ->rqType(),&sin);
395 ASSERT(s); 396 ASSERT(s);
396 tftpRQ->GetOptions(&s->m_Options); 397 tftpRQ->GetOptions(&s->m_Options);
397 if(!s->Create()) 398 if(!s->Create())
398 s->Destroy(FALSE); 399 s->Destroy(FALSE);
399 } 400 }
400 break; 401 break;
401 case tftp::opWRQ: 402 case tftp::opWRQ:
402 // Write Request 403 // Write Request
403 { 404 {
404 CString tmp; 405 CString tmp;
405 tmp.Format(IDS_LOG_WRQSERVE,tftpRQ->rqFileName(),tftpRQ->rqType(),inet_ntoa(sin.sin_addr)); 406 tmp.Format(IDS_LOG_WRQSERVE,tftpRQ->rqFileName(),tftpRQ->rqType(),inet_ntoa(sin.sin_addr));
406 m_Daddy->LogLine(tmp); 407 m_Daddy->LogLine(tmp);
407 CWRQSocket *s = new CWRQSocket(m_Daddy,tftpRQ->rqFileName(),tftpRQ->rqType(),&sin); 408 CWRQSocket *s = new CWRQSocket(m_Daddy,tftpRQ->rqFileName(),tftpRQ->rqType(),&sin);
408 ASSERT(s); 409 ASSERT(s);
409 tftpRQ->GetOptions(&s->m_Options); 410 tftpRQ->GetOptions(&s->m_Options);
410 if(!s->Create(NULL,NULL)) 411 if(!s->Create(NULL,NULL))
411 s->Destroy(FALSE); 412 s->Destroy(FALSE);
412 } 413 }
413 break; 414 break;
414 default: 415 default:
415 m_Daddy->LogLine(IDS_LOG_LISTENOPCODE); 416 m_Daddy->LogLine(IDS_LOG_LISTENOPCODE);
416 delete tftpRQ; 417 delete tftpRQ;
417 return; 418 return;
418 } 419 }
419 delete tftpRQ; 420 delete tftpRQ;
420} 421}
421 422
422BOOL tftp::Receive(CAsyncSocket* socket,UINT maxLength,SOCKADDR_IN *sin) 423BOOL tftp::Receive(CAsyncSocket* socket,UINT maxLength,SOCKADDR_IN *sin)
423{ 424{
424 ASSERT(socket); 425 ASSERT(socket);
425int saddrLen = sizeof(SOCKADDR_IN); 426int saddrLen = sizeof(SOCKADDR_IN);
426 length = sin ? 427 length = sin ?
427 socket->ReceiveFrom(udpBase(),maxLength,(SOCKADDR*)sin,&saddrLen) 428 socket->ReceiveFrom(udpBase(),maxLength,(SOCKADDR*)sin,&saddrLen)
428 : 429 :
429 socket->Receive(udpBase(),maxLength) 430 socket->Receive(udpBase(),maxLength)
430 ; 431 ;
431 if(!length) 432 if(!length)
432 return FALSE; 433 return FALSE;
433 if(length==(tftpLength)SOCKET_ERROR) 434 if(length==(tftpLength)SOCKET_ERROR)
434 return FALSE; 435 return FALSE;
435 return TRUE; 436 return TRUE;
436} 437}
437 438
438UINT tftp::Opcode() 439UINT tftp::Opcode()
439{ 440{
440 return REVERSEBYTES(opcode); 441 return REVERSEBYTES(opcode);
441} 442}
442 443
443CString tftp::rqFileName() 444CString tftp::rqFileName()
444{ 445{
445 ASSERT(length); 446 ASSERT(length);
446 ASSERT(Opcode()==opRRQ || Opcode()==opWRQ); 447 ASSERT(Opcode()==opRRQ || Opcode()==opWRQ);
447CString rv; 448CString rv;
448 if(memchr(&data.m_RQ.data,0,length-sizeof(opcode))) 449 if(memchr(&data.m_RQ.data,0,length-sizeof(opcode)))
449 rv = (LPCTSTR)data.m_RQ.data; 450 rv = (LPCTSTR)data.m_RQ.data;
450 return rv; 451 return rv;
451} 452}
452 453
453CString tftp::rqType() 454CString tftp::rqType()
454{ 455{
455 ASSERT(length); 456 ASSERT(length);
456 ASSERT(Opcode()==opRRQ || Opcode()==opWRQ); 457 ASSERT(Opcode()==opRRQ || Opcode()==opWRQ);
457CString rv; 458CString rv;
458char *tmp = (char*)memchr(&data.m_RQ.data,0,length-sizeof(opcode)); 459char *tmp = (char*)memchr(&data.m_RQ.data,0,length-sizeof(opcode));
459 if(tmp++) 460 if(tmp++)
460 rv = (LPCTSTR)tmp; 461 rv = (LPCTSTR)tmp;
461 return rv; 462 return rv;
462} 463}
463 464
464UINT tftp::GetOptions(tftp::tftpOptions* ops) 465UINT tftp::GetOptions(tftp::tftpOptions* ops)
465{ 466{
466 ASSERT(length); 467 ASSERT(length);
467 ASSERT(Opcode()==opRRQ || Opcode()==opWRQ || Opcode()==opOACK); 468 ASSERT(Opcode()==opRRQ || Opcode()==opWRQ || Opcode()==opOACK);
468 ASSERT(ops); 469 ASSERT(ops);
469tftpOptions& o = *ops; 470tftpOptions& o = *ops;
470LPSTR base = (LPSTR)&data.m_RQ.data; 471LPSTR base = (LPSTR)&data.m_RQ.data;
471UINT basePtr = 0; 472UINT basePtr = 0;
472 if(Opcode()==opRRQ || Opcode()==opWRQ){ 473 if(Opcode()==opRRQ || Opcode()==opWRQ){
473 base = (LPSTR)memchr(&data.m_RQ.data,0,length-sizeof(opcode)); 474 base = (LPSTR)memchr(&data.m_RQ.data,0,length-sizeof(opcode));
474 if(!base) 475 if(!base)
475 return 0; 476 return 0;
476 base++; 477 base++;
477 basePtr = (base-(LPSTR)&data.m_RQ.data); 478 basePtr = (base-(LPSTR)&data.m_RQ.data);
478 base = (LPSTR)memchr(base,0,length-basePtr); 479 base = (LPSTR)memchr(base,0,length-basePtr);
479 if(!base) 480 if(!base)
480 return 0; 481 return 0;
481 base++; 482 base++;
482 basePtr = (base-(LPSTR)&data.m_RQ.data); 483 basePtr = (base-(LPSTR)&data.m_RQ.data);
483 } 484 }
484 ops->RemoveAll(); 485 ops->RemoveAll();
485UINT rv = 0; 486UINT rv = 0;
486 while(basePtr<(length-sizeof(opcode))){ 487 while(basePtr<(length-sizeof(opcode))){
487 CString onam = (LPSTR)&data.m_RQ.data[basePtr]; 488 CString onam = (LPSTR)&data.m_RQ.data[basePtr];
488 basePtr+=onam.GetLength()+1; 489 basePtr+=onam.GetLength()+1;
489 CString oval = (LPSTR)&data.m_RQ.data[basePtr]; 490 CString oval = (LPSTR)&data.m_RQ.data[basePtr];
490 basePtr+=oval.GetLength()+1; 491 basePtr+=oval.GetLength()+1;
491 onam.MakeLower(); 492 onam.MakeLower();
492 o[onam]=oval; 493 o[onam]=oval;
493 rv++; 494 rv++;
494 } 495 }
495 return rv; 496 return rv;
496} 497}
497 498
498tftp::tftp() 499tftp::tftp()
499{ 500{
500 length=0; 501 length=0;
501} 502}
502 503
503 504
504void CXferSocket::OnSend(int nErrorCode) 505void CXferSocket::OnSend(int nErrorCode)
505{ 506{
506 if(nErrorCode){ 507 if(nErrorCode){
507 ASSERT(m_Daddy); 508 ASSERT(m_Daddy);
508 m_Daddy->LogLine(IDS_LOG_XFERSEND); 509 m_Daddy->LogLine(IDS_LOG_XFERSEND);
509 return; 510 return;
510 } 511 }
511 if(!m_Queue.IsEmpty()){ 512 if(!m_Queue.IsEmpty()){
512 tftp *p = m_Queue.GetHead(); 513 tftp *p = m_Queue.GetHead();
513 ASSERT(p); 514 ASSERT(p);
514 m_Queue.RemoveHead(); 515 m_Queue.RemoveHead();
515 if(!p->Send(this,&m_Peer)){ 516 if(!p->Send(this,&m_Peer)){
516 ASSERT(m_Daddy); 517 ASSERT(m_Daddy);
517 m_Daddy->LogLine(IDS_LOG_XFERUDPSEND); 518 m_Daddy->LogLine(IDS_LOG_XFERUDPSEND);
518 } 519 }
519 delete p; 520 delete p;
520 } 521 }
521 DoSelect(); 522 DoSelect();
diff --git a/pumpkin.rc b/pumpkin.rc
index 7380e12..7f3bbde 100644
--- a/pumpkin.rc
+++ b/pumpkin.rc
@@ -1,279 +1,280 @@
1//Microsoft Developer Studio generated resource script. 1//Microsoft Developer Studio generated resource script.
2// 2//
3#include "resource.h" 3#include "resource.h"
4 4
5#define APSTUDIO_READONLY_SYMBOLS 5#define APSTUDIO_READONLY_SYMBOLS
6///////////////////////////////////////////////////////////////////////////// 6/////////////////////////////////////////////////////////////////////////////
7// 7//
8// Generated from the TEXTINCLUDE 2 resource. 8// Generated from the TEXTINCLUDE 2 resource.
9// 9//
10#include "afxres.h" 10#include "afxres.h"
11 11
12///////////////////////////////////////////////////////////////////////////// 12/////////////////////////////////////////////////////////////////////////////
13#undef APSTUDIO_READONLY_SYMBOLS 13#undef APSTUDIO_READONLY_SYMBOLS
14 14
15///////////////////////////////////////////////////////////////////////////// 15/////////////////////////////////////////////////////////////////////////////
16// English (U.S.) resources 16// English (U.S.) resources
17 17
18#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) 18#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
19#ifdef _WIN32 19#ifdef _WIN32
20LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US 20LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
21#pragma code_page(1252) 21#pragma code_page(1252)
22#endif //_WIN32 22#endif //_WIN32
23 23
24#ifdef APSTUDIO_INVOKED 24#ifdef APSTUDIO_INVOKED
25///////////////////////////////////////////////////////////////////////////// 25/////////////////////////////////////////////////////////////////////////////
26// 26//
27// TEXTINCLUDE 27// TEXTINCLUDE
28// 28//
29 29
301 TEXTINCLUDE DISCARDABLE 301 TEXTINCLUDE DISCARDABLE
31BEGIN 31BEGIN
32 "resource.h\0" 32 "resource.h\0"
33END 33END
34 34
352 TEXTINCLUDE DISCARDABLE 352 TEXTINCLUDE DISCARDABLE
36BEGIN 36BEGIN
37 "#include ""afxres.h""\r\n" 37 "#include ""afxres.h""\r\n"
38 "\0" 38 "\0"
39END 39END
40 40
413 TEXTINCLUDE DISCARDABLE 413 TEXTINCLUDE DISCARDABLE
42BEGIN 42BEGIN
43 "#define _AFX_NO_SPLITTER_RESOURCES\r\n" 43 "#define _AFX_NO_SPLITTER_RESOURCES\r\n"
44 "#define _AFX_NO_OLE_RESOURCES\r\n" 44 "#define _AFX_NO_OLE_RESOURCES\r\n"
45 "#define _AFX_NO_TRACKER_RESOURCES\r\n" 45 "#define _AFX_NO_TRACKER_RESOURCES\r\n"
46 "#define _AFX_NO_PROPERTY_RESOURCES\r\n" 46 "#define _AFX_NO_PROPERTY_RESOURCES\r\n"
47 "\r\n" 47 "\r\n"
48 "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" 48 "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
49 "#ifdef _WIN32\r\n" 49 "#ifdef _WIN32\r\n"
50 "LANGUAGE 9, 1\r\n" 50 "LANGUAGE 9, 1\r\n"
51 "#pragma code_page(1252)\r\n" 51 "#pragma code_page(1252)\r\n"
52 "#endif\r\n" 52 "#endif\r\n"
53 "#include ""res\\PumpKIN.rc2"" // non-Microsoft Visual C++ edited resources\r\n" 53 "#include ""res\\PumpKIN.rc2"" // non-Microsoft Visual C++ edited resources\r\n"
54 "#include ""afxres.rc"" // Standard components\r\n" 54 "#include ""afxres.rc"" // Standard components\r\n"
55 "#endif\0" 55 "#endif\0"
56END 56END
57 57
58#endif // APSTUDIO_INVOKED 58#endif // APSTUDIO_INVOKED
59 59
60 60
61///////////////////////////////////////////////////////////////////////////// 61/////////////////////////////////////////////////////////////////////////////
62// 62//
63// Icon 63// Icon
64// 64//
65 65
66// Icon with lowest ID value placed first to ensure application icon 66// Icon with lowest ID value placed first to ensure application icon
67// remains consistent on all systems. 67// remains consistent on all systems.
68IDI_RRQ ICON DISCARDABLE "res\\wrq.ico" 68IDI_RRQ ICON DISCARDABLE "res\\wrq.ico"
69IDI_WRQ ICON DISCARDABLE "res\\rrq.ico" 69IDI_WRQ ICON DISCARDABLE "res\\rrq.ico"
70IDI_BROWSE ICON DISCARDABLE "shared-data/browse-icon.ico" 70IDI_BROWSE ICON DISCARDABLE "shared-data/browse-icon.ico"
71IDR_MAINFRAME ICON DISCARDABLE "res\\pumpkin.ico" 71IDR_MAINFRAME ICON DISCARDABLE "res\\pumpkin.ico"
72IDI_PLAY ICON DISCARDABLE "shared-data/play-icon.ico" 72IDI_PLAY ICON DISCARDABLE "shared-data/play-icon.ico"
73 73
74///////////////////////////////////////////////////////////////////////////// 74/////////////////////////////////////////////////////////////////////////////
75// 75//
76// Dialog 76// Dialog
77// 77//
78 78
79IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 217, 74 79IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 217, 74
80STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU 80STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
81CAPTION "About PumpKIN" 81CAPTION "About PumpKIN"
82FONT 8, "MS Sans Serif" 82FONT 8, "MS Sans Serif"
83BEGIN 83BEGIN
84 ICON IDR_MAINFRAME,IDC_STATIC,7,17,18,20 84 ICON IDR_MAINFRAME,IDC_STATIC,7,17,18,20
85 LTEXT "PumpKIN, Version 2.5.1-trunk",IDC_STATIC,40,15,119,8,SS_NOPREFIX 85 LTEXT "PumpKIN, Version 2.5.1-trunk",IDC_STATIC,40,15,119,8,
86 LTEXT "Copyright © 1997-2004 Klever Group",IDC_STATIC,40,30,170, 86 SS_NOPREFIX
87 8 87 LTEXT "Copyright © 1997-2004 Klever Group",IDC_STATIC,40,30,
88 170,8
88 DEFPUSHBUTTON "OK",IDOK,178,7,32,14,WS_GROUP 89 DEFPUSHBUTTON "OK",IDOK,178,7,32,14,WS_GROUP
89 PUSHBUTTON "http://www.klever.net/",IDC_KLEVERNET,124,53,86,14 90 PUSHBUTTON "http://www.klever.net/",IDC_KLEVERNET,124,53,86,14
90END 91END
91 92
92IDD_PUMPKIN_DIALOG DIALOGEX 0, 0, 362, 191 93IDD_PUMPKIN_DIALOG DIALOGEX 0, 0, 362, 191
93STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | 94STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION |
94 WS_SYSMENU 95 WS_SYSMENU
95EXSTYLE WS_EX_ACCEPTFILES | WS_EX_APPWINDOW 96EXSTYLE WS_EX_ACCEPTFILES | WS_EX_APPWINDOW
96CAPTION " PumpKIN" 97CAPTION " PumpKIN"
97FONT 8, "MS Sans Serif", 0, 0, 0x1 98FONT 8, "MS Sans Serif", 0, 0, 0x1
98BEGIN 99BEGIN
99 CONTROL "List1",IDC_CONNECTIONS,"SysListView32",LVS_REPORT | 100 CONTROL "List1",IDC_CONNECTIONS,"SysListView32",LVS_REPORT |
100 LVS_AUTOARRANGE | WS_BORDER | WS_TABSTOP,7,7,295,108, 101 LVS_AUTOARRANGE | WS_BORDER | WS_TABSTOP,7,7,295,108,
101 WS_EX_DLGMODALFRAME 102 WS_EX_DLGMODALFRAME
102 PUSHBUTTON "&Get File",IDC_GET,305,7,50,17,BS_NOTIFY, 103 PUSHBUTTON "&Get File",IDC_GET,305,7,50,17,BS_NOTIFY,
103 WS_EX_CLIENTEDGE 104 WS_EX_CLIENTEDGE
104 PUSHBUTTON "&Put File",IDC_PUT,305,25,50,17,BS_NOTIFY, 105 PUSHBUTTON "&Put File",IDC_PUT,305,25,50,17,BS_NOTIFY,
105 WS_EX_CLIENTEDGE 106 WS_EX_CLIENTEDGE
106 PUSHBUTTON "&Abort xfer",IDC_ABORT,305,43,50,17,BS_NOTIFY, 107 PUSHBUTTON "&Abort xfer",IDC_ABORT,305,43,50,17,BS_NOTIFY,
107 WS_EX_CLIENTEDGE 108 WS_EX_CLIENTEDGE
108 PUSHBUTTON "&Options",IDC_OPTIONS,305,61,50,17,BS_NOTIFY, 109 PUSHBUTTON "&Options",IDC_OPTIONS,305,61,50,17,BS_NOTIFY,
109 WS_EX_CLIENTEDGE 110 WS_EX_CLIENTEDGE
110 PUSHBUTTON "E&xit",IDC_EXIT,305,79,50,17,BS_NOTIFY,WS_EX_CLIENTEDGE 111 PUSHBUTTON "E&xit",IDC_EXIT,305,79,50,17,BS_NOTIFY,WS_EX_CLIENTEDGE
111 PUSHBUTTON "&Help",ID_HELP,305,97,50,17,BS_NOTIFY,WS_EX_CLIENTEDGE 112 PUSHBUTTON "&Help",ID_HELP,305,97,50,17,BS_NOTIFY,WS_EX_CLIENTEDGE
112 LISTBOX IDC_LOG,7,115,348,69,LBS_USETABSTOPS | LBS_NOSEL | 113 LISTBOX IDC_LOG,7,115,348,69,LBS_USETABSTOPS | LBS_NOSEL |
113 WS_VSCROLL | WS_HSCROLL,WS_EX_DLGMODALFRAME 114 WS_VSCROLL | WS_HSCROLL,WS_EX_DLGMODALFRAME
114 PUSHBUTTON "..",IDCANCEL,0,183,6,7,NOT WS_VISIBLE | NOT WS_TABSTOP 115 PUSHBUTTON "..",IDCANCEL,0,183,6,7,NOT WS_VISIBLE | NOT WS_TABSTOP
115END 116END
116 117
117IDD_PROPS_SERVER DIALOG DISCARDABLE 0, 0, 210, 154 118IDD_PROPS_SERVER DIALOG DISCARDABLE 0, 0, 210, 154
118STYLE WS_CHILD | WS_DISABLED | WS_CAPTION 119STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
119CAPTION "Server" 120CAPTION "Server"
120FONT 8, "MS Sans Serif" 121FONT 8, "MS Sans Serif"
121BEGIN 122BEGIN
122 GROUPBOX "TFTP filesystem &root (download path)",IDC_STATIC,7,7, 123 GROUPBOX "TFTP filesystem &root (download path)",IDC_STATIC,7,7,
123 196,38 124 196,38
124 EDITTEXT IDC_TFTPROOT,13,16,170,13,ES_AUTOHSCROLL 125 EDITTEXT IDC_TFTPROOT,13,16,170,13,ES_AUTOHSCROLL
125 PUSHBUTTON "&B",IDC_BROWSE,186,16,13,13,BS_ICON 126 PUSHBUTTON "&B",IDC_BROWSE,186,16,13,13,BS_ICON
126 CONTROL "Allow access to &subdirectories",IDC_TFTPSUBDIRS, 127 CONTROL "Allow access to &subdirectories",IDC_TFTPSUBDIRS,
127 "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,31,111,10 128 "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,31,111,10
128 GROUPBOX "Read Request Behavior",IDC_STATIC,7,48,153,42 129 GROUPBOX "Read Request Behavior",IDC_STATIC,7,48,153,42
129 CONTROL "Give &all files",IDC_RRQ_GIVEALL,"Button", 130 CONTROL "Give &all files",IDC_RRQ_GIVEALL,"Button",
130 BS_AUTORADIOBUTTON | BS_NOTIFY | WS_GROUP,13,57,53,10 131 BS_AUTORADIOBUTTON | BS_NOTIFY | WS_GROUP,13,57,53,10
131 CONTROL "&Prompt before giving file",IDC_RRQ_ALWAYSCONFIRM, 132 CONTROL "&Prompt before giving file",IDC_RRQ_ALWAYSCONFIRM,
132 "Button",BS_AUTORADIOBUTTON | BS_NOTIFY,23,67,91,10 133 "Button",BS_AUTORADIOBUTTON | BS_NOTIFY,23,67,91,10
133 CONTROL "&Deny all requests",IDC_RRQ_DENYALL,"Button", 134 CONTROL "&Deny all requests",IDC_RRQ_DENYALL,"Button",
134 BS_AUTORADIOBUTTON | BS_NOTIFY,33,77,70,10 135 BS_AUTORADIOBUTTON | BS_NOTIFY,33,77,70,10
135 GROUPBOX "Write Request Behavior",IDC_STATIC,7,93,172,54,WS_GROUP 136 GROUPBOX "Write Request Behavior",IDC_STATIC,7,93,172,54,WS_GROUP
136 CONTROL "Take a&ll files",IDC_WRQ_TAKEALL,"Button", 137 CONTROL "Take a&ll files",IDC_WRQ_TAKEALL,"Button",
137 BS_AUTORADIOBUTTON | WS_GROUP,13,103,55,10 138 BS_AUTORADIOBUTTON | WS_GROUP,13,103,55,10
138 CONTROL "Prompt if file &exists",IDC_WRQ_PROMPTEXISTING,"Button", 139 CONTROL "Prompt if file &exists",IDC_WRQ_PROMPTEXISTING,"Button",
139 BS_AUTORADIOBUTTON,23,113,73,10 140 BS_AUTORADIOBUTTON,23,113,73,10
140 CONTROL "Always pro&mpt before accepting file", 141 CONTROL "Always pro&mpt before accepting file",
141 IDC_WRQ_ALWAYSCONFIRM,"Button",BS_AUTORADIOBUTTON,33,123, 142 IDC_WRQ_ALWAYSCONFIRM,"Button",BS_AUTORADIOBUTTON,33,123,
142 139,10 143 139,10
143 CONTROL "D&eny all requests",IDC_WRQ_DENYALL,"Button", 144 CONTROL "D&eny all requests",IDC_WRQ_DENYALL,"Button",
144 BS_AUTORADIOBUTTON,43,133,70,10 145 BS_AUTORADIOBUTTON,43,133,70,10
145 CTEXT "Confirmation &timeout",IDC_STATIC,163,52,40,19, 146 CTEXT "Confirmation &timeout",IDC_STATIC,163,52,40,19,
146 SS_NOTIFY 147 SS_NOTIFY
147 CONTROL "Slider1",IDC_PROMPTTIMEOUT,"msctls_trackbar32", 148 CONTROL "Slider1",IDC_PROMPTTIMEOUT,"msctls_trackbar32",
148 TBS_AUTOTICKS | TBS_VERT | TBS_TOP | WS_TABSTOP,182,73, 149 TBS_AUTOTICKS | TBS_VERT | TBS_TOP | WS_TABSTOP,182,73,
149 21,74 150 21,74
150END 151END
151 152
152IDD_PROPS_NETWORK DIALOG DISCARDABLE 0, 0, 210, 154 153IDD_PROPS_NETWORK DIALOG DISCARDABLE 0, 0, 210, 154
153STYLE WS_CHILD | WS_DISABLED | WS_CAPTION 154STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
154CAPTION "Network" 155CAPTION "Network"
155FONT 8, "MS Sans Serif" 156FONT 8, "MS Sans Serif"
156BEGIN 157BEGIN
157 GROUPBOX "UDP Ports",IDC_STATIC,7,7,196,40 158 GROUPBOX "UDP Ports",IDC_STATIC,7,7,196,40
158 RTEXT "Listen for &incoming requests on port:",IDC_STATIC,13, 159 RTEXT "Listen for &incoming requests on port:",IDC_STATIC,13,
159 18,135,8 160 18,135,8
160 EDITTEXT IDC_LISTENPORT,154,16,40,13,ES_AUTOHSCROLL 161 EDITTEXT IDC_LISTENPORT,154,16,40,13,ES_AUTOHSCROLL
161 CONTROL "Spin1",IDC_LISTENSPIN,"msctls_updown32",UDS_WRAP | 162 CONTROL "Spin1",IDC_LISTENSPIN,"msctls_updown32",UDS_WRAP |
162 UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | 163 UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
163 UDS_ARROWKEYS | UDS_NOTHOUSANDS,183,16,11,13 164 UDS_ARROWKEYS | UDS_NOTHOUSANDS,183,16,11,13
164 RTEXT "Send &outging requests to port:",IDC_STATIC,13,31,135,8 165 RTEXT "Send &outging requests to port:",IDC_STATIC,13,31,135,8
165 EDITTEXT IDC_SPEAKPORT,154,29,40,13,ES_AUTOHSCROLL 166 EDITTEXT IDC_SPEAKPORT,154,29,40,13,ES_AUTOHSCROLL
166 CONTROL "Spin1",IDC_SPEAKSPIN,"msctls_updown32",UDS_WRAP | 167 CONTROL "Spin1",IDC_SPEAKSPIN,"msctls_updown32",UDS_WRAP |
167 UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | 168 UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
168 UDS_ARROWKEYS | UDS_NOTHOUSANDS,183,29,11,13 169 UDS_ARROWKEYS | UDS_NOTHOUSANDS,183,29,11,13
169 LTEXT "Default connection timeout:",IDC_STATIC,7,52,88,8 170 LTEXT "Default connection timeout:",IDC_STATIC,7,52,88,8
170 EDITTEXT IDC_TIMEOUT,110,50,40,13,ES_AUTOHSCROLL | ES_NUMBER 171 EDITTEXT IDC_TIMEOUT,110,50,40,13,ES_AUTOHSCROLL | ES_NUMBER
171 CONTROL "Spin3",IDC_TIMESPIN,"msctls_updown32",UDS_WRAP | 172 CONTROL "Spin3",IDC_TIMESPIN,"msctls_updown32",UDS_WRAP |
172 UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | 173 UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
173 UDS_ARROWKEYS | UDS_NOTHOUSANDS,140,50,11,13 174 UDS_ARROWKEYS | UDS_NOTHOUSANDS,140,50,11,13
174 LTEXT "Default block size:",IDC_STATIC,7,66,59,8 175 LTEXT "Default block size:",IDC_STATIC,7,66,59,8
175 LTEXT "seconds",IDC_STATIC,154,52,28,8 176 LTEXT "seconds",IDC_STATIC,154,52,28,8
176 LTEXT "bytes",IDC_STATIC,154,66,18,8 177 LTEXT "bytes",IDC_STATIC,154,66,18,8
177 EDITTEXT IDC_BLOCKSIZE,110,64,40,13,ES_AUTOHSCROLL | ES_NUMBER 178 EDITTEXT IDC_BLOCKSIZE,110,64,40,13,ES_AUTOHSCROLL | ES_NUMBER
178 CONTROL "Spin3",IDC_BSIZESPIN,"msctls_updown32",UDS_WRAP | 179 CONTROL "Spin3",IDC_BSIZESPIN,"msctls_updown32",UDS_WRAP |
179 UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | 180 UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
180 UDS_ARROWKEYS | UDS_NOTHOUSANDS,140,64,11,13 181 UDS_ARROWKEYS | UDS_NOTHOUSANDS,140,64,11,13
181END 182END
182 183
183IDD_CONFIRM_RRQ DIALOGEX 0, 0, 181, 79 184IDD_CONFIRM_RRQ DIALOGEX 0, 0, 181, 79
184STYLE DS_MODALFRAME | DS_NOIDLEMSG | DS_SETFOREGROUND | DS_3DLOOK | WS_POPUP | 185STYLE DS_MODALFRAME | DS_NOIDLEMSG | DS_SETFOREGROUND | DS_3DLOOK | WS_POPUP |
185 WS_CAPTION 186 WS_CAPTION
186EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE 187EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE
187CAPTION " PumpKIN - Confirm Read Request" 188CAPTION " PumpKIN - Confirm Read Request"
188FONT 8, "MS Sans Serif", 0, 0, 0x1 189FONT 8, "MS Sans Serif", 0, 0, 0x1
189BEGIN 190BEGIN
190 DEFPUSHBUTTON "&Grant Access",IDOK,27,58,54,14 191 DEFPUSHBUTTON "&Grant Access",IDOK,27,58,54,14
191 PUSHBUTTON "&Deny Access",IDCANCEL,97,58,54,14 192 PUSHBUTTON "&Deny Access",IDCANCEL,97,58,54,14
192 LTEXT "The host",IDC_STATIC,77,7,29,8 193 LTEXT "The host",IDC_STATIC,77,7,29,8
193 CTEXT "255.255.255.255",IDC_HOST,57,15,68,14,SS_NOTIFY | 194 CTEXT "255.255.255.255",IDC_HOST,57,15,68,14,SS_NOTIFY |
194 SS_SUNKEN | WS_BORDER,WS_EX_DLGMODALFRAME | 195 SS_SUNKEN | WS_BORDER,WS_EX_DLGMODALFRAME |
195 WS_EX_CLIENTEDGE 196 WS_EX_CLIENTEDGE
196 CTEXT "is requesting the file",IDC_STATIC,23,29,135,8 197 CTEXT "is requesting the file",IDC_STATIC,23,29,135,8
197 CTEXT "",IDC_FILE,23,37,135,14,SS_NOTIFY | SS_SUNKEN | 198 CTEXT "",IDC_FILE,23,37,135,14,SS_NOTIFY | SS_SUNKEN |
198 WS_BORDER,WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE 199 WS_BORDER,WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE
199 CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,7,54,167,1 200 CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,7,54,167,1
200 ICON IDR_MAINFRAME,IDC_STATIC,7,7,18,20 201 ICON IDR_MAINFRAME,IDC_STATIC,7,7,18,20
201 ICON IDR_MAINFRAME,IDC_STATIC,153,7,18,20 202 ICON IDR_MAINFRAME,IDC_STATIC,153,7,18,20
202END 203END
203 204
204IDD_CONFIRM_WRQ DIALOGEX 0, 0, 201, 95 205IDD_CONFIRM_WRQ DIALOGEX 0, 0, 201, 95
205STYLE DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | WS_POPUP | WS_CAPTION 206STYLE DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | WS_POPUP | WS_CAPTION
206EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE 207EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE
207CAPTION " PumpKIN - Confirm Write Request" 208CAPTION " PumpKIN - Confirm Write Request"
208FONT 8, "MS Sans Serif", 0, 0, 0x1 209FONT 8, "MS Sans Serif", 0, 0, 0x1
209BEGIN 210BEGIN
210 DEFPUSHBUTTON "&Accept",IDOK,7,58,59,14 211 DEFPUSHBUTTON "&Accept",IDOK,7,58,59,14
211 PUSHBUTTON "&Rename",IDC_RENAME,71,58,59,14 212 PUSHBUTTON "&Rename",IDC_RENAME,71,58,59,14
212 PUSHBUTTON "&Deny Access",IDCANCEL,135,58,59,14 213 PUSHBUTTON "&Deny Access",IDCANCEL,135,58,59,14
213 LTEXT "The host",IDC_STATIC,87,7,29,8 214 LTEXT "The host",IDC_STATIC,87,7,29,8
214 CTEXT "255.255.255.255",IDC_HOST,67,15,68,14,SS_NOTIFY | 215 CTEXT "255.255.255.255",IDC_HOST,67,15,68,14,SS_NOTIFY |
215 SS_SUNKEN | WS_BORDER,WS_EX_DLGMODALFRAME | 216 SS_SUNKEN | WS_BORDER,WS_EX_DLGMODALFRAME |
216 WS_EX_CLIENTEDGE 217 WS_EX_CLIENTEDGE
217 CTEXT "is attempting to send you a file",IDC_STATIC,33,29,135, 218 CTEXT "is attempting to send you a file",IDC_STATIC,33,29,135,
218 8 219 8
219 CTEXT "",IDC_FILE,33,37,135,14,SS_NOTIFY | SS_SUNKEN | 220 CTEXT "",IDC_FILE,33,37,135,14,SS_NOTIFY | SS_SUNKEN |
220 WS_BORDER,WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE 221 WS_BORDER,WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE
221 CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,7,54,187,1 222 CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,7,54,187,1
222 ICON IDR_MAINFRAME,IDC_STATIC,7,7,21,20 223 ICON IDR_MAINFRAME,IDC_STATIC,7,7,21,20
223 ICON IDR_MAINFRAME,IDC_STATIC,173,7,21,20 224 ICON IDR_MAINFRAME,IDC_STATIC,173,7,21,20
224 PUSHBUTTON "Res&ume",IDC_RESUME,71,74,59,14 225 PUSHBUTTON "Res&ume",IDC_RESUME,71,74,59,14
225END 226END
226 227
227IDD_REQUEST DIALOGEX 0, 0, 191, 161 228IDD_REQUEST DIALOGEX 0, 0, 191, 161
228STYLE DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | WS_POPUP | WS_CAPTION | 229STYLE DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | WS_POPUP | WS_CAPTION |
229 WS_SYSMENU 230 WS_SYSMENU
230EXSTYLE WS_EX_CLIENTEDGE 231EXSTYLE WS_EX_CLIENTEDGE
231CAPTION "Request" 232CAPTION "Request"
232FONT 8, "MS Sans Serif", 0, 0, 0x1 233FONT 8, "MS Sans Serif", 0, 0, 0x1
233BEGIN 234BEGIN
234 LTEXT "&Local file:",IDC_STATIC,7,7,31,8,SS_NOTIFY 235 LTEXT "&Local file:",IDC_STATIC,7,7,31,8,SS_NOTIFY
235 EDITTEXT IDC_LOCALFILE,7,16,157,14,ES_AUTOHSCROLL, 236 EDITTEXT IDC_LOCALFILE,7,16,157,14,ES_AUTOHSCROLL,
236 WS_EX_CLIENTEDGE | WS_EX_STATICEDGE 237 WS_EX_CLIENTEDGE | WS_EX_STATICEDGE
237 PUSHBUTTON "...",IDC_BROWSE,165,16,19,14,BS_ICON,WS_EX_STATICEDGE 238 PUSHBUTTON "...",IDC_BROWSE,165,16,19,14,BS_ICON,WS_EX_STATICEDGE
238 LTEXT "&Remote file:",IDC_STATIC,7,34,38,8,SS_NOTIFY 239 LTEXT "&Remote file:",IDC_STATIC,7,34,38,8,SS_NOTIFY
239 EDITTEXT IDC_REMOTEFILE,7,44,177,14,ES_AUTOHSCROLL, 240 EDITTEXT IDC_REMOTEFILE,7,44,177,14,ES_AUTOHSCROLL,
240 WS_EX_CLIENTEDGE | WS_EX_STATICEDGE 241 WS_EX_CLIENTEDGE | WS_EX_STATICEDGE
241 LTEXT "Remote &host:",IDC_STATIC,7,61,43,8,SS_NOTIFY 242 LTEXT "Remote &host:",IDC_STATIC,7,61,43,8,SS_NOTIFY
242 COMBOBOX IDC_TALKS,7,72,157,66,CBS_SIMPLE | CBS_AUTOHSCROLL | 243 COMBOBOX IDC_TALKS,7,72,157,66,CBS_SIMPLE | CBS_AUTOHSCROLL |
243 CBS_SORT | CBS_NOINTEGRALHEIGHT | WS_VSCROLL | 244 CBS_SORT | CBS_NOINTEGRALHEIGHT | WS_VSCROLL |
244 WS_TABSTOP,WS_EX_CLIENTEDGE | WS_EX_STATICEDGE 245 WS_TABSTOP,WS_EX_CLIENTEDGE | WS_EX_STATICEDGE
245 PUSHBUTTON "R\nE\n&F\nR\nE\nS\nH",IDC_REFRESH,165,72,19,66, 246 PUSHBUTTON "R\nE\n&F\nR\nE\nS\nH",IDC_REFRESH,165,72,19,66,
246 BS_CENTER | BS_VCENTER | BS_MULTILINE | BS_NOTIFY, 247 BS_CENTER | BS_VCENTER | BS_MULTILINE | BS_NOTIFY,
247 WS_EX_CLIENTEDGE 248 WS_EX_CLIENTEDGE
248 LTEXT "&Type:",IDC_STATIC,58,34,19,8 249 LTEXT "&Type:",IDC_STATIC,58,34,19,8
249 COMBOBOX IDC_TYPE,80,31,43,41,CBS_DROPDOWN | CBS_AUTOHSCROLL | 250 COMBOBOX IDC_TYPE,80,31,43,41,CBS_DROPDOWN | CBS_AUTOHSCROLL |
250 CBS_LOWERCASE | WS_VSCROLL | WS_TABSTOP 251 CBS_LOWERCASE | WS_VSCROLL | WS_TABSTOP
251 LTEXT "&Block:",IDC_STATIC,127,34,21,8 252 LTEXT "&Block:",IDC_STATIC,127,34,21,8
252 COMBOBOX IDC_BSIZE,149,31,35,53,CBS_DROPDOWN | WS_VSCROLL | 253 COMBOBOX IDC_BSIZE,149,31,35,53,CBS_DROPDOWN | WS_VSCROLL |
253 WS_TABSTOP 254 WS_TABSTOP
254 DEFPUSHBUTTON "OK",IDOK,35,140,50,14 255 DEFPUSHBUTTON "OK",IDOK,35,140,50,14
255 PUSHBUTTON "Cancel",IDCANCEL,101,140,50,14 256 PUSHBUTTON "Cancel",IDCANCEL,101,140,50,14
256 CONTROL "",IDC_STATIC,"Static",SS_ETCHEDVERT,52,32,1,11 257 CONTROL "",IDC_STATIC,"Static",SS_ETCHEDVERT,52,32,1,11
257END 258END
258 259
259IDD_PROPS_SOUNDS DIALOG DISCARDABLE 0, 0, 210, 154 260IDD_PROPS_SOUNDS DIALOG DISCARDABLE 0, 0, 210, 154
260STYLE WS_CHILD | WS_DISABLED | WS_CAPTION 261STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
261CAPTION "Sounds" 262CAPTION "Sounds"
262FONT 8, "MS Sans Serif" 263FONT 8, "MS Sans Serif"
263BEGIN 264BEGIN
264 LTEXT "&Incoming request:",IDC_STATIC,7,9,57,8 265 LTEXT "&Incoming request:",IDC_STATIC,7,9,57,8
265 COMBOBOX IDC_RING,70,7,103,100,CBS_DROPDOWN | CBS_AUTOHSCROLL | 266 COMBOBOX IDC_RING,70,7,103,100,CBS_DROPDOWN | CBS_AUTOHSCROLL |
266 CBS_SORT | WS_VSCROLL | WS_TABSTOP 267 CBS_SORT | WS_VSCROLL | WS_TABSTOP
267 PUSHBUTTON "browse",IDC_RING_BROWSE,175,7,13,13,BS_ICON 268 PUSHBUTTON "browse",IDC_RING_BROWSE,175,7,13,13,BS_ICON
268 PUSHBUTTON "play",IDC_RING_PLAY,190,7,13,13,BS_ICON 269 PUSHBUTTON "play",IDC_RING_PLAY,190,7,13,13,BS_ICON
269 LTEXT "xfer &finished:",IDC_STATIC,7,25,57,8 270 LTEXT "xfer &finished:",IDC_STATIC,7,25,57,8
270 COMBOBOX IDC_FINISHED,70,22,103,100,CBS_DROPDOWN | 271 COMBOBOX IDC_FINISHED,70,22,103,100,CBS_DROPDOWN |
271 CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP 272 CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP
272 PUSHBUTTON "browse",IDC_FINISHED_BROWSE,175,22,13,13,BS_ICON 273 PUSHBUTTON "browse",IDC_FINISHED_BROWSE,175,22,13,13,BS_ICON
273 PUSHBUTTON "play",IDC_FINISHED_PLAY,190,22,13,13,BS_ICON 274 PUSHBUTTON "play",IDC_FINISHED_PLAY,190,22,13,13,BS_ICON
274 LTEXT "xfer &aborted:",IDC_STATIC,7,40,57,8 275 LTEXT "xfer &aborted:",IDC_STATIC,7,40,57,8
275 COMBOBOX IDC_ABORTED,70,37,103,100,CBS_DROPDOWN | CBS_AUTOHSCROLL | 276 COMBOBOX IDC_ABORTED,70,37,103,100,CBS_DROPDOWN | CBS_AUTOHSCROLL |
276 CBS_SORT | WS_VSCROLL | WS_TABSTOP 277 CBS_SORT | WS_VSCROLL | WS_TABSTOP
277 PUSHBUTTON "browse",IDC_ABORTED_BROWSE,175,37,13,13,BS_ICON 278 PUSHBUTTON "browse",IDC_ABORTED_BROWSE,175,37,13,13,BS_ICON
278 PUSHBUTTON "play",IDC_ABORTED_PLAY,190,37,13,13,BS_ICON 279 PUSHBUTTON "play",IDC_ABORTED_PLAY,190,37,13,13,BS_ICON
279END 280END
@@ -381,225 +382,226 @@ BEGIN
381 382
382 IDD_REQUEST, DIALOG 383 IDD_REQUEST, DIALOG
383 BEGIN 384 BEGIN
384 LEFTMARGIN, 7 385 LEFTMARGIN, 7
385 RIGHTMARGIN, 184 386 RIGHTMARGIN, 184
386 TOPMARGIN, 7 387 TOPMARGIN, 7
387 BOTTOMMARGIN, 154 388 BOTTOMMARGIN, 154
388 END 389 END
389 390
390 IDD_PROPS_SOUNDS, DIALOG 391 IDD_PROPS_SOUNDS, DIALOG
391 BEGIN 392 BEGIN
392 LEFTMARGIN, 7 393 LEFTMARGIN, 7
393 RIGHTMARGIN, 203 394 RIGHTMARGIN, 203
394 TOPMARGIN, 7 395 TOPMARGIN, 7
395 BOTTOMMARGIN, 147 396 BOTTOMMARGIN, 147
396 END 397 END
397END 398END
398#endif // APSTUDIO_INVOKED 399#endif // APSTUDIO_INVOKED
399 400
400 401
401///////////////////////////////////////////////////////////////////////////// 402/////////////////////////////////////////////////////////////////////////////
402// 403//
403// Bitmap 404// Bitmap
404// 405//
405 406
406IDB_BACKGROUND BITMAP DISCARDABLE "shared-data/klever-background.bmp" 407IDB_BACKGROUND BITMAP DISCARDABLE "shared-data/klever-background.bmp"
407 408
408///////////////////////////////////////////////////////////////////////////// 409/////////////////////////////////////////////////////////////////////////////
409// 410//
410// WAVE 411// WAVE
411// 412//
412 413
413IDR_WAVE_RING WAVE DISCARDABLE "res\\ring.wav" 414IDR_WAVE_RING WAVE DISCARDABLE "res\\ring.wav"
414IDR_WAVE_FINISHED WAVE DISCARDABLE "res\\finished.wav" 415IDR_WAVE_FINISHED WAVE DISCARDABLE "res\\finished.wav"
415IDR_WAVE_ABORTED WAVE DISCARDABLE "res\\failed.wav" 416IDR_WAVE_ABORTED WAVE DISCARDABLE "res\\failed.wav"
416 417
417///////////////////////////////////////////////////////////////////////////// 418/////////////////////////////////////////////////////////////////////////////
418// 419//
419// Dialog Info 420// Dialog Info
420// 421//
421 422
422IDD_REQUEST DLGINIT 423IDD_REQUEST DLGINIT
423BEGIN 424BEGIN
424 IDC_TYPE, 0x403, 6, 0 425 IDC_TYPE, 0x403, 6, 0
4250x636f, 0x6574, 0x0074, 4260x636f, 0x6574, 0x0074,
426 IDC_TYPE, 0x403, 9, 0 427 IDC_TYPE, 0x403, 9, 0
4270x656e, 0x6174, 0x6373, 0x6969, "\000" 4280x656e, 0x6174, 0x6373, 0x6969, "\000"
428 IDC_BSIZE, 0x403, 4, 0 429 IDC_BSIZE, 0x403, 4, 0
4290x3135, 0x0032, 4300x3135, 0x0032,
430 IDC_BSIZE, 0x403, 5, 0 431 IDC_BSIZE, 0x403, 5, 0
4310x3031, 0x3432, "\000" 4320x3031, 0x3432, "\000"
432 IDC_BSIZE, 0x403, 5, 0 433 IDC_BSIZE, 0x403, 5, 0
4330x3032, 0x3834, "\000" 4340x3032, 0x3834, "\000"
434 IDC_BSIZE, 0x403, 5, 0 435 IDC_BSIZE, 0x403, 5, 0
4350x3034, 0x3639, "\000" 4360x3034, 0x3639, "\000"
436 IDC_BSIZE, 0x403, 5, 0 437 IDC_BSIZE, 0x403, 5, 0
4370x3138, 0x3239, "\000" 4380x3138, 0x3239, "\000"
438 0 439 0
439END 440END
440 441
441 442
442///////////////////////////////////////////////////////////////////////////// 443/////////////////////////////////////////////////////////////////////////////
443// 444//
444// Menu 445// Menu
445// 446//
446 447
447IDM_POPUPS MENU DISCARDABLE 448IDM_POPUPS MENU DISCARDABLE
448BEGIN 449BEGIN
449 POPUP "&Tray" 450 POPUP "&Tray"
450 BEGIN 451 BEGIN
451 MENUITEM "&Send File", ID_TRAY_SENDFILE 452 MENUITEM "&Send File", ID_TRAY_SENDFILE
452 MENUITEM "F&etch file", ID_TRAY_FETCHFILE 453 MENUITEM "F&etch file", ID_TRAY_FETCHFILE
453 MENUITEM "&Options", ID_TRAY_OPTIONS 454 MENUITEM "&Options", ID_TRAY_OPTIONS
454 MENUITEM "Show &PumpKIN Window", ID_TRAY_SHOWPUMPKINWINDOW 455 MENUITEM "Show &PumpKIN Window", ID_TRAY_SHOWPUMPKINWINDOW
455 MENUITEM "Open &Files Folder", ID_TRAY_OPENFILESFOLDER 456 MENUITEM "Open &Files Folder", ID_TRAY_OPENFILESFOLDER
456 MENUITEM SEPARATOR 457 MENUITEM SEPARATOR
457 MENUITEM "&Help Topics", ID_TRAY_HELP 458 MENUITEM "&Help Topics", ID_TRAY_HELP
458 MENUITEM "&About PumpKIN", ID_TRAY_ABOUTPUMPKIN 459 MENUITEM "&About PumpKIN", ID_TRAY_ABOUTPUMPKIN
459 MENUITEM SEPARATOR 460 MENUITEM SEPARATOR
460 MENUITEM "E&xit", ID_TRAY_EXIT 461 MENUITEM "E&xit", ID_TRAY_EXIT
461 END 462 END
462END 463END
463 464
464 465
465///////////////////////////////////////////////////////////////////////////// 466/////////////////////////////////////////////////////////////////////////////
466// 467//
467// String Table 468// String Table
468// 469//
469 470
470STRINGTABLE DISCARDABLE 471STRINGTABLE DISCARDABLE
471BEGIN 472BEGIN
472 IDS_ABOUTBOX "&About PumpKIN..." 473 IDS_ABOUTBOX "&About PumpKIN..."
473 IDS_FMT_BYTES "%lu" 474 IDS_FMT_BYTES "%lu"
474 IDP_SOCKETS_INIT_FAILED "Windows sockets initialization failed." 475 IDP_SOCKETS_INIT_FAILED "Windows sockets initialization failed."
475 IDS_TFTP_ERROR_ACCESS "Access violation" 476 IDS_TFTP_ERROR_ACCESS "Access violation"
476 IDS_TFTP_ERROR_NOTFOUND "File not found" 477 IDS_TFTP_ERROR_NOTFOUND "File not found"
477 IDS_TFTP_ERROR_DIRFULL "Directory is full" 478 IDS_TFTP_ERROR_DIRFULL "Directory is full"
478 IDS_TFTP_ERROR_SHARING "Sharing violation" 479 IDS_TFTP_ERROR_SHARING "Sharing violation"
479 IDS_TFTP_ERROR_DISKFULL "Disk full" 480 IDS_TFTP_ERROR_DISKFULL "Disk full"
480 IDS_TFTP_ERROR_UNDEFINED "Undefined error" 481 IDS_TFTP_ERROR_UNDEFINED "Undefined error"
481 IDS_LOG_START "PumpKIN started" 482 IDS_LOG_START "PumpKIN started"
482 IDS_LOG_LISTENRECEIVEERROR "Error listening for incoming connections" 483 IDS_LOG_LISTENRECEIVEERROR "Error listening for incoming connections"
483END 484END
484 485
485STRINGTABLE DISCARDABLE 486STRINGTABLE DISCARDABLE
486BEGIN 487BEGIN
487 IDS_LOG_LISTENACCEPTERROR "Error accepting incoming connection" 488 IDS_LOG_LISTENACCEPTERROR "Error accepting incoming connection"
488 IDS_LOG_RRQSERVE "'%s' of type '%s' is requested from %s" 489 IDS_LOG_RRQSERVE "'%s' of type '%s' is requested from %s"
489 IDS_LOG_LISTENOPCODE "Invalid opcode in initial connection request" 490 IDS_LOG_LISTENOPCODE "Invalid opcode in initial connection request"
490 IDS_LOG_XFERUDPSEND "UDP packet send failed" 491 IDS_LOG_XFERUDPSEND "UDP packet send failed"
491 IDS_LOG_XFERRECEIVE "Error on xfer socket" 492 IDS_LOG_XFERRECEIVE "Error on xfer socket"
492 IDS_LOG_XFERSEND "Error on xfer socket" 493 IDS_LOG_XFERSEND "Error on xfer socket"
493 IDS_LOG_XFERUDPRECEIVE "UDP packet receive failed" 494 IDS_LOG_XFERUDPRECEIVE "UDP packet receive failed"
494 IDS_LOG_XFERSOURCETID "Packet from unexpected source" 495 IDS_LOG_XFERSOURCETID "Packet from unexpected source"
495 IDS_LOG_SENTTFTPERROR ":%u: %s" 496 IDS_LOG_SENTTFTPERROR ":%u: %s"
496 IDS_LOG_GOTTFTPERROR "TFTP:%u: %s" 497 IDS_LOG_GOTTFTPERROR "TFTP:%u: %s"
497 IDS_LOG_XFEROPCODE "Invalid opcode during transfer received" 498 IDS_LOG_XFEROPCODE "Invalid opcode during transfer received"
498 IDS_LOG_XFERRRQFINISHED "Transfer of '%s' has successfully completed" 499 IDS_LOG_XFERRRQFINISHED "Transfer of '%s' has successfully completed"
499 IDS_TITLE_OPTIONS "Options" 500 IDS_TITLE_OPTIONS "Options"
500 IDS_LOG_WRQSERVE "Writing of '%s' of type '%s' is requested by %s" 501 IDS_LOG_WRQSERVE "Writing of '%s' of type '%s' is requested by %s"
501 IDS_TFTP_ERROR_FAILEDTORENAME "Too many clones of the file" 502 IDS_TFTP_ERROR_FAILEDTORENAME "Too many clones of the file"
502 IDS_RENAME_TITLE "Save As" 503 IDS_RENAME_TITLE "Save As"
503END 504END
504 505
505STRINGTABLE DISCARDABLE 506STRINGTABLE DISCARDABLE
506BEGIN 507BEGIN
507 IDS_LOG_TIMEDOUT "Transmission of '%s' is timed out" 508 IDS_LOG_TIMEDOUT "Transmission of '%s' is timed out"
508 IDS_CONFIRMEXIT_TITLE "Exit" 509 IDS_CONFIRMEXIT_TITLE "Exit"
509 IDS_CONFIRMEXIT_TEXT "File transmission is currently in progress. Are you sure you want to exit?" 510 IDS_CONFIRMEXIT_TEXT "File transmission is currently in progress. Are you sure you want to exit?"
510 IDS_LOG_XFERWRQFINISHED "Transfer of '%s' has successfully completed" 511 IDS_LOG_XFERWRQFINISHED "Transfer of '%s' has successfully completed"
511 IDS_LOG_XFERABORTED "Transfer of '%s' was aborted" 512 IDS_LOG_XFERABORTED "Transfer of '%s' was aborted"
512 IDS_TITLE_PUTREQUEST "Send file" 513 IDS_TITLE_PUTREQUEST "Send file"
513 IDS_TITLE_GETREQUEST "Fetch file" 514 IDS_TITLE_GETREQUEST "Fetch file"
514 IDS_WTALKHEADING "Talk with " 515 IDS_WTALKHEADING "Talk with "
515 IDS_TITLE_BROWSEFILE "Browse" 516 IDS_TITLE_BROWSEFILE "Browse"
516 IDS_LOG_RESOLVEFAILED "Failed to resolve host address for '%s'" 517 IDS_LOG_RESOLVEFAILED "Failed to resolve host address for '%s'"
517 IDS_LOG_FAILEDLOCALFILE "Failed to open local file '%s'" 518 IDS_LOG_FAILEDLOCALFILE "Failed to open local file '%s'"
518 IDS_LOG_FAILEDTOOPEN "Failed to open '%s'" 519 IDS_LOG_FAILEDTOOPEN "Failed to open '%s'"
519 IDS_OTALXHEADING "Open Talks: talking to " 520 IDS_OTALXHEADING "Open Talks: talking to "
520 IDS_REGISTRYKEY "Klever Group" 521 IDS_REGISTRYKEY "Klever Group"
521 IDS_KLEVERNET_URL "http://www.klever.net/" 522 IDS_KLEVERNET_URL "http://www.klever.net/"
522 IDS_LOGTIMEFORMAT "%H:%M:%S %B %d" 523 IDS_LOGTIMEFORMAT "%H:%M:%S %B %d"
523END 524END
524 525
525STRINGTABLE DISCARDABLE 526STRINGTABLE DISCARDABLE
526BEGIN 527BEGIN
527 ID_TRAY_HELP "Read the help on PumpKIN" 528 ID_TRAY_HELP "Read the help on PumpKIN"
528 ID_TRAY_ABOUTPUMPKIN "Learn about PumpKIN and it's creator" 529 ID_TRAY_ABOUTPUMPKIN "Learn about PumpKIN and it's creator"
529 ID_TRAY_EXIT "Close PumpKIN" 530 ID_TRAY_EXIT "Close PumpKIN"
530 ID_TRAY_SENDFILE "Send file over the network to your tete-a-tete" 531 ID_TRAY_SENDFILE "Send file over the network to your tete-a-tete"
531 ID_TRAY_FETCHFILE "Fetch file from remote computer" 532 ID_TRAY_FETCHFILE "Fetch file from remote computer"
532 ID_TRAY_OPTIONS "Set PumpKIN options" 533 ID_TRAY_OPTIONS "Set PumpKIN options"
533 ID_TRAY_SHOWPUMPKINWINDOW "Show main window" 534 ID_TRAY_SHOWPUMPKINWINDOW "Show main window"
534 ID_TRAY_OPENFILESFOLDER "Explore TFTP root folder" 535 ID_TRAY_OPENFILESFOLDER "Explore TFTP root folder"
535END 536END
536 537
537STRINGTABLE DISCARDABLE 538STRINGTABLE DISCARDABLE
538BEGIN 539BEGIN
539 IDC_CONNECTIONS "Active transfers" 540 IDC_CONNECTIONS "Active transfers"
540 IDC_LOG "PumpKIN Activity Log" 541 IDC_LOG "PumpKIN Activity Log"
541 IDC_GET "Fetch file from remote server" 542 IDC_GET "Fetch file from remote server"
542 IDC_PUT "Send file over the net" 543 IDC_PUT "Send file over the net"
543 IDC_ABORT "Abort transfer currently in progress" 544 IDC_ABORT "Abort transfer currently in progress"
544 IDC_EXIT "Close PumpKIN" 545 IDC_EXIT "Close PumpKIN"
545END 546END
546 547
547STRINGTABLE DISCARDABLE 548STRINGTABLE DISCARDABLE
548BEGIN 549BEGIN
549 IDC_OPTIONS "Set PumpKIN options" 550 IDC_OPTIONS "Set PumpKIN options"
550 IDC_REFRESH "Refresh talks list" 551 IDC_REFRESH "Refresh talks list"
551 IDC_BROWSE "Browse" 552 IDC_BROWSE "Browse"
552END 553END
553 554
554STRINGTABLE DISCARDABLE 555STRINGTABLE DISCARDABLE
555BEGIN 556BEGIN
556 ID_HELP "Read help on PumpKIN" 557 ID_HELP "Read help on PumpKIN"
557END 558END
558 559
559STRINGTABLE DISCARDABLE 560STRINGTABLE DISCARDABLE
560BEGIN 561BEGIN
561 IDS_DROPFILES_TITLE "Drop Files" 562 IDS_DROPFILES_TITLE "Drop Files"
562 IDS_NOMULTIPLEDROP_TEXT "You can't drop more than one file here. Only the first one will be accepted" 563 IDS_NOMULTIPLEDROP_TEXT "You can't drop more than one file here. Only the first one will be accepted"
563 IDS_LOG_REQUESTING "Requesting '%s' from '%s'" 564 IDS_LOG_REQUESTING "Requesting '%s' from '%s'"
564 IDS_LOG_SENDING "Sending '%s' to '%s'" 565 IDS_LOG_SENDING "Sending '%s' to '%s'"
565 IDS_WTALKAT "@" 566 IDS_WTALKAT "@"
566 IDS_OTALXAT " at " 567 IDS_OTALXAT " at "
567 IDS_TFTP_ERROR_TSIZE "Invalid transfer size" 568 IDS_TFTP_ERROR_TSIZE "Invalid transfer size"
568 IDS_TFTP_ERROR_BSIZE "Invalid block size" 569 IDS_TFTP_ERROR_BSIZE "Invalid block size"
569 IDS_TFTP_ERROR_TOUT "Invalid timeout" 570 IDS_TFTP_ERROR_TOUT "Invalid timeout"
570 IDS_SELECT_TFTPROOT "Select TFTP filesystem root.." 571 IDS_SELECT_TFTPROOT "Select TFTP filesystem root.."
571 IDS_FILTER_WAV "Sound Files (*.wav)|*.wav||" 572 IDS_FILTER_WAV "Sound Files (*.wav)|*.wav||"
572 IDS_TITLE_WAV "Select sound.." 573 IDS_TITLE_WAV "Select sound.."
574 IDS_BOX_CANTBIND "Failed to create listening socket. The port may be in use by another application."
573END 575END
574 576
575STRINGTABLE DISCARDABLE 577STRINGTABLE DISCARDABLE
576BEGIN 578BEGIN
577 AFX_IDS_APP_TITLE "PUMPKIN" 579 AFX_IDS_APP_TITLE "PUMPKIN"
578END 580END
579 581
580#endif // English (U.S.) resources 582#endif // English (U.S.) resources
581///////////////////////////////////////////////////////////////////////////// 583/////////////////////////////////////////////////////////////////////////////
582 584
583 585
584 586
585#ifndef APSTUDIO_INVOKED 587#ifndef APSTUDIO_INVOKED
586///////////////////////////////////////////////////////////////////////////// 588/////////////////////////////////////////////////////////////////////////////
587// 589//
588// Generated from the TEXTINCLUDE 3 resource. 590// Generated from the TEXTINCLUDE 3 resource.
589// 591//
590#define _AFX_NO_SPLITTER_RESOURCES 592#define _AFX_NO_SPLITTER_RESOURCES
591#define _AFX_NO_OLE_RESOURCES 593#define _AFX_NO_OLE_RESOURCES
592#define _AFX_NO_TRACKER_RESOURCES 594#define _AFX_NO_TRACKER_RESOURCES
593#define _AFX_NO_PROPERTY_RESOURCES 595#define _AFX_NO_PROPERTY_RESOURCES
594 596
595#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) 597#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
596#ifdef _WIN32 598#ifdef _WIN32
597LANGUAGE 9, 1 599LANGUAGE 9, 1
598#pragma code_page(1252) 600#pragma code_page(1252)
599#endif 601#endif
600#include "res\pumpkin.rc2" // non-Microsoft Visual C++ edited resources 602#include "res\PumpKIN.rc2" // non-Microsoft Visual C++ edited resources
601#include "afxres.rc" // Standard components 603#include "afxres.rc" // Standard components
602#endif 604#endif
603///////////////////////////////////////////////////////////////////////////// 605/////////////////////////////////////////////////////////////////////////////
604#endif // not APSTUDIO_INVOKED 606#endif // not APSTUDIO_INVOKED
605 607
diff --git a/resource.h b/resource.h
index fcdda9c..8755a55 100644
--- a/resource.h
+++ b/resource.h
@@ -1,147 +1,148 @@
1//{{NO_DEPENDENCIES}} 1//{{NO_DEPENDENCIES}}
2// Microsoft Developer Studio generated include file. 2// Microsoft Developer Studio generated include file.
3// Used by PumpKIN.rc 3// Used by PumpKIN.rc
4// 4//
5#define IDM_ABOUTBOX 0x0010 5#define IDM_ABOUTBOX 0x0010
6#define IDD_ABOUTBOX 100 6#define IDD_ABOUTBOX 100
7#define IDS_ABOUTBOX 101 7#define IDS_ABOUTBOX 101
8#define IDC_TRAYICON 101 8#define IDC_TRAYICON 101
9#define IDD_PUMPKIN_DIALOG 102 9#define IDD_PUMPKIN_DIALOG 102
10#define IDS_FMT_BYTES 102 10#define IDS_FMT_BYTES 102
11#define IDP_SOCKETS_INIT_FAILED 103 11#define IDP_SOCKETS_INIT_FAILED 103
12#define IDS_TFTP_ERROR_ACCESS 104 12#define IDS_TFTP_ERROR_ACCESS 104
13#define IDS_TFTP_ERROR_NOTFOUND 105 13#define IDS_TFTP_ERROR_NOTFOUND 105
14#define IDS_TFTP_ERROR_DIRFULL 106 14#define IDS_TFTP_ERROR_DIRFULL 106
15#define IDD_PROPS_SERVER 106 15#define IDD_PROPS_SERVER 106
16#define IDS_TFTP_ERROR_SHARING 107 16#define IDS_TFTP_ERROR_SHARING 107
17#define IDD_PROPS_NETWORK 107 17#define IDD_PROPS_NETWORK 107
18#define IDS_TFTP_ERROR_DISKFULL 108 18#define IDS_TFTP_ERROR_DISKFULL 108
19#define IDS_TFTP_ERROR_UNDEFINED 109 19#define IDS_TFTP_ERROR_UNDEFINED 109
20#define IDS_LOG_START 110 20#define IDS_LOG_START 110
21#define IDS_LOG_LISTENRECEIVEERROR 111 21#define IDS_LOG_LISTENRECEIVEERROR 111
22#define IDS_LOG_LISTENACCEPTERROR 112 22#define IDS_LOG_LISTENACCEPTERROR 112
23#define IDS_LOG_RRQSERVE 113 23#define IDS_LOG_RRQSERVE 113
24#define IDS_LOG_LISTENOPCODE 114 24#define IDS_LOG_LISTENOPCODE 114
25#define IDS_LOG_XFERUDPSEND 115 25#define IDS_LOG_XFERUDPSEND 115
26#define IDS_LOG_XFERRECEIVE 116 26#define IDS_LOG_XFERRECEIVE 116
27#define IDS_LOG_XFERSEND 117 27#define IDS_LOG_XFERSEND 117
28#define IDS_LOG_XFERUDPRECEIVE 118 28#define IDS_LOG_XFERUDPRECEIVE 118
29#define IDS_LOG_XFERSOURCETID 119 29#define IDS_LOG_XFERSOURCETID 119
30#define IDS_LOG_SENTTFTPERROR 120 30#define IDS_LOG_SENTTFTPERROR 120
31#define IDS_LOG_GOTTFTPERROR 121 31#define IDS_LOG_GOTTFTPERROR 121
32#define IDS_LOG_XFEROPCODE 122 32#define IDS_LOG_XFEROPCODE 122
33#define IDS_LOG_XFERRRQFINISHED 123 33#define IDS_LOG_XFERRRQFINISHED 123
34#define IDS_TITLE_OPTIONS 124 34#define IDS_TITLE_OPTIONS 124
35#define IDS_LOG_WRQSERVE 125 35#define IDS_LOG_WRQSERVE 125
36#define IDS_TFTP_ERROR_FAILEDTORENAME 126 36#define IDS_TFTP_ERROR_FAILEDTORENAME 126
37#define IDS_RENAME_TITLE 127 37#define IDS_RENAME_TITLE 127
38#define IDR_MAINFRAME 128 38#define IDR_MAINFRAME 128
39#define IDS_LOG_TIMEDOUT 128 39#define IDS_LOG_TIMEDOUT 128
40#define IDS_CONFIRMEXIT_TITLE 129 40#define IDS_CONFIRMEXIT_TITLE 129
41#define IDI_RRQ 129 41#define IDI_RRQ 129
42#define IDS_CONFIRMEXIT_TEXT 130 42#define IDS_CONFIRMEXIT_TEXT 130
43#define IDI_WRQ 130 43#define IDI_WRQ 130
44#define IDD_CONFIRM_RRQ 131 44#define IDD_CONFIRM_RRQ 131
45#define IDS_LOG_XFERWRQFINISHED 131 45#define IDS_LOG_XFERWRQFINISHED 131
46#define IDD_CONFIRM_WRQ 132 46#define IDD_CONFIRM_WRQ 132
47#define IDB_BACKGROUND 132 47#define IDB_BACKGROUND 132
48#define IDS_LOG_XFERABORTED 132 48#define IDS_LOG_XFERABORTED 132
49#define IDS_TITLE_PUTREQUEST 133 49#define IDS_TITLE_PUTREQUEST 133
50#define IDS_TITLE_GETREQUEST 134 50#define IDS_TITLE_GETREQUEST 134
51#define IDR_WAVE_RING 135 51#define IDR_WAVE_RING 135
52#define IDS_TALKHEADING 135 52#define IDS_TALKHEADING 135
53#define IDS_WTALKHEADING 135 53#define IDS_WTALKHEADING 135
54#define IDR_WAVE_FINISHED 136 54#define IDR_WAVE_FINISHED 136
55#define IDS_TITLE_BROWSEFILE 136 55#define IDS_TITLE_BROWSEFILE 136
56#define IDD_REQUEST 137 56#define IDD_REQUEST 137
57#define IDS_LOG_RESOLVEFAILED 137 57#define IDS_LOG_RESOLVEFAILED 137
58#define IDS_LOG_FAILEDLOCALFILE 138 58#define IDS_LOG_FAILEDLOCALFILE 138
59#define IDD_PROPS_SOUNDS 138 59#define IDD_PROPS_SOUNDS 138
60#define IDS_LOG_FAILEDTOOPEN 139 60#define IDS_LOG_FAILEDTOOPEN 139
61#define IDM_POPUPS 140 61#define IDM_POPUPS 140
62#define IDS_OTALXHEADING 140 62#define IDS_OTALXHEADING 140
63#define IDS_REGISTRYKEY 141 63#define IDS_REGISTRYKEY 141
64#define IDS_KLEVERNET_URL 142 64#define IDS_KLEVERNET_URL 142
65#define IDR_WAVE_ABORTED 142 65#define IDR_WAVE_ABORTED 142
66#define IDS_LOGTIMEFORMAT 143 66#define IDS_LOGTIMEFORMAT 143
67#define IDS_DROPFILES_TITLE 144 67#define IDS_DROPFILES_TITLE 144
68#define IDS_NOMULTIPLEDROP_TEXT 145 68#define IDS_NOMULTIPLEDROP_TEXT 145
69#define IDI_BROWSE 145 69#define IDI_BROWSE 145
70#define IDS_LOG_REQUESTING 146 70#define IDS_LOG_REQUESTING 146
71#define IDS_LOG_SENDING 147 71#define IDS_LOG_SENDING 147
72#define IDS_WTALKAT 148 72#define IDS_WTALKAT 148
73#define IDS_OTALXAT 149 73#define IDS_OTALXAT 149
74#define IDI_PLAY 149 74#define IDI_PLAY 149
75#define IDS_TFTP_ERROR_TSIZE 150 75#define IDS_TFTP_ERROR_TSIZE 150
76#define IDS_TFTP_ERROR_BSIZE 151 76#define IDS_TFTP_ERROR_BSIZE 151
77#define IDS_TFTP_ERROR_TOUT 152 77#define IDS_TFTP_ERROR_TOUT 152
78#define IDS_SELECT_TFTPROOT 153 78#define IDS_SELECT_TFTPROOT 153
79#define IDS_FILTER_WAV 154 79#define IDS_FILTER_WAV 154
80#define IDS_TITLE_WAV 155 80#define IDS_TITLE_WAV 155
81#define IDS_BOX_CANTBIND 156
81#define IDC_KLEVERNET 1000 82#define IDC_KLEVERNET 1000
82#define IDC_CONNECTIONS 1001 83#define IDC_CONNECTIONS 1001
83#define IDC_LOG 1003 84#define IDC_LOG 1003
84#define IDC_GET 1004 85#define IDC_GET 1004
85#define IDC_PUT 1005 86#define IDC_PUT 1005
86#define IDC_ABORT 1006 87#define IDC_ABORT 1006
87#define IDC_EXIT 1007 88#define IDC_EXIT 1007
88#define IDC_TFTPROOT 1008 89#define IDC_TFTPROOT 1008
89#define IDC_TFTPSUBDIRS 1009 90#define IDC_TFTPSUBDIRS 1009
90#define IDC_RRQ_GIVEALL 1010 91#define IDC_RRQ_GIVEALL 1010
91#define IDC_RRQ_ALWAYSCONFIRM 1011 92#define IDC_RRQ_ALWAYSCONFIRM 1011
92#define IDC_RRQ_DENYALL 1012 93#define IDC_RRQ_DENYALL 1012
93#define IDC_WRQ_TAKEALL 1013 94#define IDC_WRQ_TAKEALL 1013
94#define IDC_WRQ_PROMPTEXISTING 1014 95#define IDC_WRQ_PROMPTEXISTING 1014
95#define IDC_WRQ_ALWAYSCONFIRM 1015 96#define IDC_WRQ_ALWAYSCONFIRM 1015
96#define IDC_WRQ_DENYALL 1016 97#define IDC_WRQ_DENYALL 1016
97#define IDC_PROMPTTIMEOUT 1017 98#define IDC_PROMPTTIMEOUT 1017
98#define IDC_LISTENPORT 1018 99#define IDC_LISTENPORT 1018
99#define IDC_LISTENSPIN 1019 100#define IDC_LISTENSPIN 1019
100#define IDC_SPEAKPORT 1020 101#define IDC_SPEAKPORT 1020
101#define IDC_SPEAKSPIN 1021 102#define IDC_SPEAKSPIN 1021
102#define IDC_MAXUDPSIZE 1022 103#define IDC_MAXUDPSIZE 1022
103#define IDC_MAXUDPSPIN 1023 104#define IDC_MAXUDPSPIN 1023
104#define IDC_TIMEOUT 1024 105#define IDC_TIMEOUT 1024
105#define IDC_TIMESPIN 1025 106#define IDC_TIMESPIN 1025
106#define IDC_OPTIONS 1026 107#define IDC_OPTIONS 1026
107#define IDC_BLOCKSIZE 1026 108#define IDC_BLOCKSIZE 1026
108#define IDC_BSIZESPIN 1027 109#define IDC_BSIZESPIN 1027
109#define IDC_HOST 1028 110#define IDC_HOST 1028
110#define IDC_FILE 1029 111#define IDC_FILE 1029
111#define IDC_RENAME 1030 112#define IDC_RENAME 1030
112#define IDC_REMOTEFILE 1030 113#define IDC_REMOTEFILE 1030
113#define IDC_RESUME 1031 114#define IDC_RESUME 1031
114#define IDC_REFRESH 1032 115#define IDC_REFRESH 1032
115#define IDC_BROWSE 1034 116#define IDC_BROWSE 1034
116#define IDC_TALKS 1035 117#define IDC_TALKS 1035
117#define IDC_LOCALFILE 1036 118#define IDC_LOCALFILE 1036
118#define IDC_TYPE 1037 119#define IDC_TYPE 1037
119#define IDC_BSIZE 1039 120#define IDC_BSIZE 1039
120#define IDC_RING 1041 121#define IDC_RING 1041
121#define IDC_RING_BROWSE 1042 122#define IDC_RING_BROWSE 1042
122#define IDC_RING_PLAY 1043 123#define IDC_RING_PLAY 1043
123#define IDC_FINISHED 1044 124#define IDC_FINISHED 1044
124#define IDC_FINISHED_BROWSE 1045 125#define IDC_FINISHED_BROWSE 1045
125#define IDC_FINISHED_PLAY 1046 126#define IDC_FINISHED_PLAY 1046
126#define IDC_ABORTED 1047 127#define IDC_ABORTED 1047
127#define IDC_ABORTED_BROWSE 1048 128#define IDC_ABORTED_BROWSE 1048
128#define IDC_ABORTED_PLAY 1049 129#define IDC_ABORTED_PLAY 1049
129#define ID_TRAY_HELP 32771 130#define ID_TRAY_HELP 32771
130#define ID_TRAY_ABOUTPUMPKIN 32772 131#define ID_TRAY_ABOUTPUMPKIN 32772
131#define ID_TRAY_EXIT 32773 132#define ID_TRAY_EXIT 32773
132#define ID_TRAY_SENDFILE 32774 133#define ID_TRAY_SENDFILE 32774
133#define ID_TRAY_FETCHFILE 32775 134#define ID_TRAY_FETCHFILE 32775
134#define ID_TRAY_OPTIONS 32776 135#define ID_TRAY_OPTIONS 32776
135#define ID_TRAY_SHOWPUMPKINWINDOW 32777 136#define ID_TRAY_SHOWPUMPKINWINDOW 32777
136#define ID_TRAY_OPENFILESFOLDER 32778 137#define ID_TRAY_OPENFILESFOLDER 32778
137 138
138// Next default values for new objects 139// Next default values for new objects
139// 140//
140#ifdef APSTUDIO_INVOKED 141#ifdef APSTUDIO_INVOKED
141#ifndef APSTUDIO_READONLY_SYMBOLS 142#ifndef APSTUDIO_READONLY_SYMBOLS
142#define _APS_NEXT_RESOURCE_VALUE 150 143#define _APS_NEXT_RESOURCE_VALUE 150
143#define _APS_NEXT_COMMAND_VALUE 32780 144#define _APS_NEXT_COMMAND_VALUE 32780
144#define _APS_NEXT_CONTROL_VALUE 1043 145#define _APS_NEXT_CONTROL_VALUE 1043
145#define _APS_NEXT_SYMED_VALUE 102 146#define _APS_NEXT_SYMED_VALUE 102
146#endif 147#endif
147#endif 148#endif