]> git.saurik.com Git - wxWidgets.git/blame_incremental - samples/typetest/typetest.cpp
Patch #808669 more warngins and unicode fixes
[wxWidgets.git] / samples / typetest / typetest.cpp
... / ...
CommitLineData
1/////////////////////////////////////////////////////////////////////////////
2// Name: typetest.cpp
3// Purpose: Types wxWindows sample
4// Author: Julian Smart
5// Modified by:
6// Created: 04/01/98
7// RCS-ID: $Id$
8// Copyright: (c) Julian Smart
9// Licence: wxWindows license
10/////////////////////////////////////////////////////////////////////////////
11
12#ifdef __GNUG__
13#pragma implementation "typetest.h"
14#endif
15
16// For compilers that support precompilation, includes "wx/wx.h".
17#include "wx/wxprec.h"
18
19#ifdef __BORLANDC__
20#pragma hdrstop
21#endif
22
23#ifndef WX_PRECOMP
24#include "wx/wx.h"
25#endif
26
27#include "wx/variant.h"
28#include "wx/mimetype.h"
29
30#include "typetest.h"
31
32#if defined(__WXGTK__) || defined(__WXX11__) || defined(__WXMOTIF__) || defined(__WXMAC__) || defined(__WXMGL__)
33#include "mondrian.xpm"
34#endif
35
36#ifdef new
37#undef new
38#endif
39
40#include "wx/ioswrap.h"
41
42#if wxUSE_IOSTREAMH
43 #include <fstream.h>
44#else
45 #include <fstream>
46#endif
47
48#include "wx/wfstream.h"
49#include "wx/datstrm.h"
50#include "wx/txtstrm.h"
51#include "wx/mstream.h"
52
53// Create a new application object
54IMPLEMENT_APP (MyApp)
55
56IMPLEMENT_DYNAMIC_CLASS (MyApp, wxApp)
57
58BEGIN_EVENT_TABLE(MyApp, wxApp)
59 EVT_MENU(TYPES_VARIANT, MyApp::DoVariantDemo)
60 EVT_MENU(TYPES_BYTEORDER, MyApp::DoByteOrderDemo)
61#if wxUSE_UNICODE
62 EVT_MENU(TYPES_UNICODE, MyApp::DoUnicodeDemo)
63#endif // wxUSE_UNICODE
64 EVT_MENU(TYPES_STREAM, MyApp::DoStreamDemo)
65 EVT_MENU(TYPES_STREAM2, MyApp::DoStreamDemo2)
66 EVT_MENU(TYPES_STREAM3, MyApp::DoStreamDemo3)
67 EVT_MENU(TYPES_STREAM4, MyApp::DoStreamDemo4)
68 EVT_MENU(TYPES_STREAM5, MyApp::DoStreamDemo5)
69 EVT_MENU(TYPES_STREAM6, MyApp::DoStreamDemo6)
70 EVT_MENU(TYPES_STREAM7, MyApp::DoStreamDemo7)
71 EVT_MENU(TYPES_MIME, MyApp::DoMIMEDemo)
72END_EVENT_TABLE()
73
74bool MyApp::OnInit()
75{
76 // Create the main frame window
77 MyFrame *frame = new MyFrame((wxFrame *) NULL, _T("wxWindows Types Demo"),
78 wxPoint(50, 50), wxSize(450, 340));
79
80 // Give it an icon
81 frame->SetIcon(wxICON(mondrian));
82
83 // Make a menubar
84 wxMenu *file_menu = new wxMenu;
85
86 file_menu->Append(TYPES_ABOUT, _T("&About"));
87 file_menu->AppendSeparator();
88 file_menu->Append(TYPES_QUIT, _T("E&xit\tAlt-X"));
89
90 wxMenu *test_menu = new wxMenu;
91 test_menu->Append(TYPES_VARIANT, _T("&Variant test"));
92 test_menu->Append(TYPES_BYTEORDER, _T("&Byteorder test"));
93#if wxUSE_UNICODE
94 test_menu->Append(TYPES_UNICODE, _T("&Unicode test"));
95#endif // wxUSE_UNICODE
96 test_menu->Append(TYPES_STREAM, _T("&Stream test"));
97 test_menu->Append(TYPES_STREAM2, _T("&Stream seek test"));
98 test_menu->Append(TYPES_STREAM3, _T("&Stream error test"));
99 test_menu->Append(TYPES_STREAM4, _T("&Stream buffer test"));
100 test_menu->Append(TYPES_STREAM5, _T("&Stream peek test"));
101 test_menu->Append(TYPES_STREAM6, _T("&Stream ungetch test"));
102 test_menu->Append(TYPES_STREAM7, _T("&Stream ungetch test for a buffered stream"));
103 test_menu->AppendSeparator();
104 test_menu->Append(TYPES_MIME, _T("&MIME database test"));
105
106 wxMenuBar *menu_bar = new wxMenuBar;
107 menu_bar->Append(file_menu, _T("&File"));
108 menu_bar->Append(test_menu, _T("&Tests"));
109 frame->SetMenuBar(menu_bar);
110
111 m_textCtrl = new wxTextCtrl(frame, -1, _T(""), wxPoint(0, 0), wxDefaultSize, wxTE_MULTILINE);
112
113 // Show the frame
114 frame->Show(TRUE);
115
116 SetTopWindow(frame);
117
118 return TRUE;
119}
120
121void MyApp::DoStreamDemo(wxCommandEvent& WXUNUSED(event))
122{
123 wxTextCtrl& textCtrl = * GetTextCtrl();
124
125 textCtrl.Clear();
126 textCtrl << _T("\nTest fstream vs. wxFileStream:\n\n");
127
128 textCtrl.WriteText( _T("Writing to ofstream and wxFileOutputStream:\n") );
129
130 wxSTD ofstream std_file_output( "test_std.dat" );
131 wxFileOutputStream file_output( wxString(_T("test_wx.dat")) );
132 wxBufferedOutputStream buf_output( file_output );
133 wxTextOutputStream text_output( buf_output );
134
135 wxString tmp;
136 signed int si = 0xFFFFFFFF;
137 tmp.Printf( _T("Signed int: %d\n"), si );
138 textCtrl.WriteText( tmp );
139 text_output << si << _T("\n");
140 std_file_output << si << _T("\n");
141
142 unsigned int ui = 0xFFFFFFFF;
143 tmp.Printf( _T("Unsigned int: %u\n"), ui );
144 textCtrl.WriteText( tmp );
145 text_output << ui << _T("\n");
146 std_file_output << ui << _T("\n");
147
148 double d = 2.01234567890123456789;
149 tmp.Printf( _T("Double: %f\n"), d );
150 textCtrl.WriteText( tmp );
151 text_output << d << _T("\n");
152 std_file_output << d << _T("\n");
153
154 float f = (float)0.00001;
155 tmp.Printf( _T("Float: %f\n"), f );
156 textCtrl.WriteText( tmp );
157 text_output << f << _T("\n");
158 std_file_output << f << _T("\n");
159
160 wxString str( _T("Hello!") );
161 tmp.Printf( _T("String: %s\n"), str.c_str() );
162 textCtrl.WriteText( tmp );
163 text_output << str << _T("\n");
164 std_file_output << str.c_str() << _T("\n");
165
166 textCtrl.WriteText( _T("\nReading from ifstream:\n") );
167
168 wxSTD ifstream std_file_input( "test_std.dat" );
169
170 std_file_input >> si;
171 tmp.Printf( _T("Signed int: %d\n"), si );
172 textCtrl.WriteText( tmp );
173
174 std_file_input >> ui;
175 tmp.Printf( _T("Unsigned int: %u\n"), ui );
176 textCtrl.WriteText( tmp );
177
178 std_file_input >> d;
179 tmp.Printf( _T("Double: %f\n"), d );
180 textCtrl.WriteText( tmp );
181
182 std_file_input >> f;
183 tmp.Printf( _T("Float: %f\n"), f );
184 textCtrl.WriteText( tmp );
185
186 // Why doesn't this work?
187#if 0
188 char std_buf[200];
189 std_file_input >> std_buf;
190 tmp.Printf( _T("String: %s\n"), std_buf );
191 textCtrl.WriteText( tmp );
192#endif
193
194 textCtrl.WriteText( _T("\nReading from wxFileInputStream:\n") );
195
196 buf_output.Sync();
197
198 wxFileInputStream file_input( wxString(_T("test_wx.dat")) );
199 wxBufferedInputStream buf_input( file_input );
200 wxTextInputStream text_input( file_input );
201
202 text_input >> si;
203 tmp.Printf( _T("Signed int: %d\n"), si );
204 textCtrl.WriteText( tmp );
205
206 text_input >> ui;
207 tmp.Printf( _T("Unsigned int: %u\n"), ui );
208 textCtrl.WriteText( tmp );
209
210 text_input >> d;
211 tmp.Printf( _T("Double: %f\n"), d );
212 textCtrl.WriteText( tmp );
213
214 text_input >> f;
215 tmp.Printf( _T("Float: %f\n"), f );
216 textCtrl.WriteText( tmp );
217
218 text_input >> str;
219 tmp.Printf( _T("String: %s\n"), str.c_str() );
220 textCtrl.WriteText( tmp );
221
222
223
224 textCtrl << _T("\nTest for wxDataStream:\n\n");
225
226 textCtrl.WriteText( _T("Writing to wxDataOutputStream:\n") );
227
228 file_output.SeekO( 0 );
229 wxDataOutputStream data_output( buf_output );
230
231 wxInt16 i16 = (unsigned short)0xFFFF;
232 tmp.Printf( _T("Signed int16: %d\n"), (int)i16 );
233 textCtrl.WriteText( tmp );
234 data_output.Write16( i16 );
235
236 wxUint16 ui16 = 0xFFFF;
237 tmp.Printf( _T("Unsigned int16: %u\n"), (unsigned int) ui16 );
238 textCtrl.WriteText( tmp );
239 data_output.Write16( ui16 );
240
241 d = 2.01234567890123456789;
242 tmp.Printf( _T("Double: %f\n"), d );
243 textCtrl.WriteText( tmp );
244 data_output.WriteDouble( d );
245
246 str = _T("Hello!");
247 tmp.Printf( _T("String: %s\n"), str.c_str() );
248 textCtrl.WriteText( tmp );
249 data_output.WriteString( str );
250
251 buf_output.Sync();
252
253 textCtrl.WriteText( _T("\nReading from wxDataInputStream:\n") );
254
255 file_input.SeekI( 0 );
256 wxDataInputStream data_input( buf_input );
257
258 i16 = data_input.Read16();
259 tmp.Printf( _T("Signed int16: %d\n"), (int)i16 );
260 textCtrl.WriteText( tmp );
261
262 ui16 = data_input.Read16();
263 tmp.Printf( _T("Unsigned int16: %u\n"), (unsigned int) ui16 );
264 textCtrl.WriteText( tmp );
265
266 d = data_input.ReadDouble();
267 tmp.Printf( _T("Double: %f\n"), d );
268 textCtrl.WriteText( tmp );
269
270 str = data_input.ReadString();
271 tmp.Printf( _T("String: %s\n"), str.c_str() );
272 textCtrl.WriteText( tmp );
273}
274
275void MyApp::DoStreamDemo2(wxCommandEvent& WXUNUSED(event))
276{
277 wxTextCtrl& textCtrl = * GetTextCtrl();
278
279 textCtrl.Clear();
280 textCtrl << _T("\nTesting wxBufferedStream:\n\n");
281
282 char ch,ch2;
283
284 textCtrl.WriteText( _T("Writing number 0 to 9 to buffered wxFileOutputStream:\n\n") );
285
286 wxFileOutputStream file_output( wxString(_T("test_wx.dat")) );
287 wxBufferedOutputStream buf_output( file_output );
288 for (ch = 0; ch < 10; ch++)
289 buf_output.Write( &ch, 1 );
290 buf_output.Sync();
291
292 wxFileInputStream file_input( wxString(_T("test_wx.dat")) );
293 for (ch2 = 0; ch2 < 10; ch2++)
294 {
295 file_input.Read( &ch, 1 );
296 textCtrl.WriteText( (wxChar)(ch + _T('0')) );
297 }
298 textCtrl.WriteText( _T("\n\n\n") );
299
300 textCtrl.WriteText( _T("Writing number 0 to 9 to buffered wxFileOutputStream, then\n") );
301 textCtrl.WriteText( _T("seeking back to #3 and writing 0:\n\n") );
302
303 wxFileOutputStream file_output2( wxString(_T("test_wx2.dat")) );
304 wxBufferedOutputStream buf_output2( file_output2 );
305 for (ch = 0; ch < 10; ch++)
306 buf_output2.Write( &ch, 1 );
307 buf_output2.SeekO( 3 );
308 ch = 0;
309 buf_output2.Write( &ch, 1 );
310 buf_output2.Sync();
311
312 wxFileInputStream file_input2( wxString(_T("test_wx2.dat")) );
313 for (ch2 = 0; ch2 < 10; ch2++)
314 {
315 file_input2.Read( &ch, 1 );
316 textCtrl.WriteText( (wxChar)(ch + _T('0')) );
317 }
318 textCtrl.WriteText( _T("\n\n\n") );
319
320 // now append 2000 bytes to file (bigger than buffer)
321 buf_output2.SeekO( 0, wxFromEnd );
322 ch = 1;
323 for (int i = 0; i < 2000; i++)
324 buf_output2.Write( &ch, 1 );
325 buf_output2.Sync();
326
327 textCtrl.WriteText( _T("Reading number 0 to 9 from buffered wxFileInputStream, then\n") );
328 textCtrl.WriteText( _T("seeking back to #3 and reading the 0:\n\n") );
329
330 wxFileInputStream file_input3( wxString(_T("test_wx2.dat")) );
331 wxBufferedInputStream buf_input3( file_input3 );
332 for (ch2 = 0; ch2 < 10; ch2++)
333 {
334 buf_input3.Read( &ch, 1 );
335 textCtrl.WriteText( (wxChar)(ch + _T('0')) );
336 }
337 for (int j = 0; j < 2000; j++)
338 buf_input3.Read( &ch, 1 );
339 textCtrl.WriteText( _T("\n") );
340 buf_input3.SeekI( 3 );
341 buf_input3.Read( &ch, 1 );
342 textCtrl.WriteText( (wxChar)(ch + _T('0')) );
343 textCtrl.WriteText( _T("\n\n\n") );
344
345}
346
347void MyApp::DoStreamDemo3(wxCommandEvent& WXUNUSED(event))
348{
349 wxTextCtrl& textCtrl = * GetTextCtrl();
350
351 textCtrl.Clear();
352 textCtrl << _T("\nTesting wxFileInputStream's and wxFFileInputStream's error handling:\n\n");
353
354 char ch,ch2;
355
356 textCtrl.WriteText( _T("Writing number 0 to 9 to wxFileOutputStream:\n\n") );
357
358 wxFileOutputStream file_output( wxString(_T("test_wx.dat")) );
359 for (ch = 0; ch < 10; ch++)
360 file_output.Write( &ch, 1 );
361
362 // Testing wxFileInputStream
363
364 textCtrl.WriteText( _T("Reading 0 to 10 to wxFileInputStream:\n\n") );
365
366 wxFileInputStream file_input( wxString(_T("test_wx.dat")) );
367 for (ch2 = 0; ch2 < 11; ch2++)
368 {
369 file_input.Read( &ch, 1 );
370 textCtrl.WriteText( _T("Value read: ") );
371 textCtrl.WriteText( (wxChar)(ch + '0') );
372 textCtrl.WriteText( _T("; stream.GetLastError() returns: ") );
373 switch (file_input.GetLastError())
374 {
375 case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break;
376 case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break;
377 case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break;
378 case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break;
379 default: textCtrl.WriteText( _T("Huh?\n") ); break;
380 }
381 }
382 textCtrl.WriteText( _T("\n") );
383
384 textCtrl.WriteText( _T("Seeking to 0; stream.GetLastError() returns: ") );
385 file_input.SeekI( 0 );
386 switch (file_input.GetLastError())
387 {
388 case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break;
389 case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break;
390 case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break;
391 case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break;
392 default: textCtrl.WriteText( _T("Huh?\n") ); break;
393 }
394 textCtrl.WriteText( _T("\n") );
395
396 file_input.Read( &ch, 1 );
397 textCtrl.WriteText( _T("Value read: ") );
398 textCtrl.WriteText( (wxChar)(ch + _T('0')) );
399 textCtrl.WriteText( _T("; stream.GetLastError() returns: ") );
400 switch (file_input.GetLastError())
401 {
402 case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break;
403 case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break;
404 case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break;
405 case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break;
406 default: textCtrl.WriteText( _T("Huh?\n") ); break;
407 }
408 textCtrl.WriteText( _T("\n\n") );
409
410
411 // Testing wxFFileInputStream
412
413 textCtrl.WriteText( _T("Reading 0 to 10 to wxFFileInputStream:\n\n") );
414
415 wxFFileInputStream ffile_input( wxString(_T("test_wx.dat")) );
416 for (ch2 = 0; ch2 < 11; ch2++)
417 {
418 ffile_input.Read( &ch, 1 );
419 textCtrl.WriteText( _T("Value read: ") );
420 textCtrl.WriteText( (wxChar)(ch + '0') );
421 textCtrl.WriteText( _T("; stream.GetLastError() returns: ") );
422 switch (ffile_input.GetLastError())
423 {
424 case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break;
425 case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break;
426 case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break;
427 case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break;
428 default: textCtrl.WriteText( _T("Huh?\n") ); break;
429 }
430 }
431 textCtrl.WriteText( _T("\n") );
432
433 textCtrl.WriteText( _T("Seeking to 0; stream.GetLastError() returns: ") );
434 ffile_input.SeekI( 0 );
435 switch (ffile_input.GetLastError())
436 {
437 case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break;
438 case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break;
439 case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break;
440 case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break;
441 default: textCtrl.WriteText( _T("Huh?\n") ); break;
442 }
443 textCtrl.WriteText( _T("\n") );
444
445 ffile_input.Read( &ch, 1 );
446 textCtrl.WriteText( _T("Value read: ") );
447 textCtrl.WriteText( (wxChar)(ch + '0') );
448 textCtrl.WriteText( _T("; stream.GetLastError() returns: ") );
449 switch (ffile_input.GetLastError())
450 {
451 case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break;
452 case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break;
453 case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break;
454 case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break;
455 default: textCtrl.WriteText( _T("Huh?\n") ); break;
456 }
457 textCtrl.WriteText( _T("\n\n") );
458
459 // Testing wxFFileInputStream
460
461 textCtrl.WriteText( _T("Reading 0 to 10 to buffered wxFFileInputStream:\n\n") );
462
463 wxFFileInputStream ffile_input2( wxString(_T("test_wx.dat")) );
464 wxBufferedInputStream buf_input( ffile_input2 );
465 for (ch2 = 0; ch2 < 11; ch2++)
466 {
467 buf_input.Read( &ch, 1 );
468 textCtrl.WriteText( _T("Value read: ") );
469 textCtrl.WriteText( (wxChar)(ch + '0') );
470 textCtrl.WriteText( _T("; stream.GetLastError() returns: ") );
471 switch (buf_input.GetLastError())
472 {
473 case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break;
474 case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break;
475 case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break;
476 case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break;
477 default: textCtrl.WriteText( _T("Huh?\n") ); break;
478 }
479 }
480 textCtrl.WriteText( _T("\n") );
481
482 textCtrl.WriteText( _T("Seeking to 0; stream.GetLastError() returns: ") );
483 buf_input.SeekI( 0 );
484 switch (buf_input.GetLastError())
485 {
486 case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break;
487 case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break;
488 case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break;
489 case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break;
490 default: textCtrl.WriteText( _T("Huh?\n") ); break;
491 }
492 textCtrl.WriteText( _T("\n") );
493
494 buf_input.Read( &ch, 1 );
495 textCtrl.WriteText( _T("Value read: ") );
496 textCtrl.WriteText( (wxChar)(ch + '0') );
497 textCtrl.WriteText( _T("; stream.GetLastError() returns: ") );
498 switch (buf_input.GetLastError())
499 {
500 case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break;
501 case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break;
502 case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break;
503 case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break;
504 default: textCtrl.WriteText( _T("Huh?\n") ); break;
505 }
506}
507
508void MyApp::DoStreamDemo4(wxCommandEvent& WXUNUSED(event))
509{
510 wxTextCtrl& textCtrl = * GetTextCtrl();
511
512 wxString msg;
513
514 textCtrl.Clear();
515 textCtrl << _T("\nTesting wxStreamBuffer:\n\n");
516
517 // bigger than buffer
518 textCtrl.WriteText( _T("Writing 2000x 1 to wxFileOutputStream.\n\n") );
519
520 wxFileOutputStream file_output( wxString(_T("test_wx.dat")) );
521 for (int i = 0; i < 2000; i++)
522 {
523 char ch = 1;
524 file_output.Write( &ch, 1 );
525 }
526
527 textCtrl.WriteText( _T("Opening with a buffered wxFileInputStream:\n\n") );
528
529 wxFileInputStream file_input( wxString(_T("test_wx.dat")) );
530 wxBufferedInputStream buf_input( file_input );
531
532 textCtrl.WriteText( _T("wxBufferedInputStream.GetLastError() returns: ") );
533 switch (buf_input.GetLastError())
534 {
535 case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break;
536 case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break;
537 case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break;
538 case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break;
539 default: textCtrl.WriteText( _T("Huh?\n") ); break;
540 }
541 msg.Printf( wxT("wxBufferedInputStream.LastRead() returns: %d\n"), (int)buf_input.LastRead() );
542 textCtrl.WriteText( msg );
543 msg.Printf( wxT("wxBufferedInputStream.TellI() returns: %d\n"), (int)buf_input.TellI() );
544 textCtrl.WriteText( msg );
545 textCtrl.WriteText( _T("\n\n") );
546
547
548 textCtrl.WriteText( _T("Seeking to position 300:\n\n") );
549
550 buf_input.SeekI( 300 );
551
552 textCtrl.WriteText( _T("wxBufferedInputStream.GetLastError() returns: ") );
553 switch (buf_input.GetLastError())
554 {
555 case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break;
556 case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break;
557 case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break;
558 case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break;
559 default: textCtrl.WriteText( _T("Huh?\n") ); break;
560 }
561 msg.Printf( wxT("wxBufferedInputStream.LastRead() returns: %d\n"), (int)buf_input.LastRead() );
562 textCtrl.WriteText( msg );
563 msg.Printf( wxT("wxBufferedInputStream.TellI() returns: %d\n"), (int)buf_input.TellI() );
564 textCtrl.WriteText( msg );
565 textCtrl.WriteText( _T("\n\n") );
566
567
568 char buf[2000];
569
570 textCtrl.WriteText( _T("Reading 500 bytes:\n\n") );
571
572 buf_input.Read( buf, 500 );
573
574 textCtrl.WriteText( _T("wxBufferedInputStream.GetLastError() returns: ") );
575 switch (buf_input.GetLastError())
576 {
577 case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break;
578 case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break;
579 case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break;
580 case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break;
581 default: textCtrl.WriteText( _T("Huh?\n") ); break;
582 }
583 msg.Printf( wxT("wxBufferedInputStream.LastRead() returns: %d\n"), (int)buf_input.LastRead() );
584 textCtrl.WriteText( msg );
585 msg.Printf( wxT("wxBufferedInputStream.TellI() returns: %d\n"), (int)buf_input.TellI() );
586 textCtrl.WriteText( msg );
587 textCtrl.WriteText( _T("\n\n") );
588
589 textCtrl.WriteText( _T("Reading another 500 bytes:\n\n") );
590
591 buf_input.Read( buf, 500 );
592
593 textCtrl.WriteText( _T("wxBufferedInputStream.GetLastError() returns: ") );
594 switch (buf_input.GetLastError())
595 {
596 case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break;
597 case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break;
598 case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break;
599 case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break;
600 default: textCtrl.WriteText( _T("Huh?\n") ); break;
601 }
602 msg.Printf( wxT("wxBufferedInputStream.LastRead() returns: %d\n"), (int)buf_input.LastRead() );
603 textCtrl.WriteText( msg );
604 msg.Printf( wxT("wxBufferedInputStream.TellI() returns: %d\n"), (int)buf_input.TellI() );
605 textCtrl.WriteText( msg );
606 textCtrl.WriteText( _T("\n\n") );
607
608 textCtrl.WriteText( _T("Reading another 500 bytes:\n\n") );
609
610 buf_input.Read( buf, 500 );
611
612 textCtrl.WriteText( _T("wxBufferedInputStream.GetLastError() returns: ") );
613 switch (buf_input.GetLastError())
614 {
615 case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break;
616 case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break;
617 case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break;
618 case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break;
619 default: textCtrl.WriteText( _T("Huh?\n") ); break;
620 }
621 msg.Printf( wxT("wxBufferedInputStream.LastRead() returns: %d\n"), (int)buf_input.LastRead() );
622 textCtrl.WriteText( msg );
623 msg.Printf( wxT("wxBufferedInputStream.TellI() returns: %d\n"), (int)buf_input.TellI() );
624 textCtrl.WriteText( msg );
625 textCtrl.WriteText( _T("\n\n") );
626
627 textCtrl.WriteText( _T("Reading another 500 bytes:\n\n") );
628
629 buf_input.Read( buf, 500 );
630
631 textCtrl.WriteText( _T("wxBufferedInputStream.GetLastError() returns: ") );
632 switch (buf_input.GetLastError())
633 {
634 case wxSTREAM_NO_ERROR: textCtrl.WriteText( _T("wxSTREAM_NO_ERROR\n") ); break;
635 case wxSTREAM_EOF: textCtrl.WriteText( _T("wxSTREAM_EOF\n") ); break;
636 case wxSTREAM_READ_ERROR: textCtrl.WriteText( _T("wxSTREAM_READ_ERROR\n") ); break;
637 case wxSTREAM_WRITE_ERROR: textCtrl.WriteText( _T("wxSTREAM_WRITE_ERROR\n") ); break;
638 default: textCtrl.WriteText( _T("Huh?\n") ); break;
639 }
640 msg.Printf( wxT("wxBufferedInputStream.LastRead() returns: %d\n"), (int)buf_input.LastRead() );
641 textCtrl.WriteText( msg );
642 msg.Printf( wxT("wxBufferedInputStream.TellI() returns: %d\n"), (int)buf_input.TellI() );
643 textCtrl.WriteText( msg );
644 textCtrl.WriteText( _T("\n\n") );
645}
646
647void MyApp::DoStreamDemo5(wxCommandEvent& WXUNUSED(event))
648{
649 wxTextCtrl& textCtrl = * GetTextCtrl();
650
651 textCtrl.Clear();
652 textCtrl << _T("\nTesting wxFileInputStream's Peek():\n\n");
653
654 char ch;
655 wxString str;
656
657 textCtrl.WriteText( _T("Writing number 0 to 9 to wxFileOutputStream:\n\n") );
658
659 wxFileOutputStream file_output( wxString(_T("test_wx.dat")) );
660 for (ch = 0; ch < 10; ch++)
661 file_output.Write( &ch, 1 );
662
663 file_output.Sync();
664
665 wxFileInputStream file_input( wxString(_T("test_wx.dat")) );
666
667 ch = file_input.Peek();
668 str.Printf( wxT("First char peeked: %d\n"), (int) ch );
669 textCtrl.WriteText( str );
670
671 ch = file_input.GetC();
672 str.Printf( wxT("First char read: %d\n"), (int) ch );
673 textCtrl.WriteText( str );
674
675 ch = file_input.Peek();
676 str.Printf( wxT("Second char peeked: %d\n"), (int) ch );
677 textCtrl.WriteText( str );
678
679 ch = file_input.GetC();
680 str.Printf( wxT("Second char read: %d\n"), (int) ch );
681 textCtrl.WriteText( str );
682
683 ch = file_input.Peek();
684 str.Printf( wxT("Third char peeked: %d\n"), (int) ch );
685 textCtrl.WriteText( str );
686
687 ch = file_input.GetC();
688 str.Printf( wxT("Third char read: %d\n"), (int) ch );
689 textCtrl.WriteText( str );
690
691
692 textCtrl << _T("\n\n\nTesting wxMemoryInputStream's Peek():\n\n");
693
694 char buf[] = { 0,1,2,3,4,5,6,7,8,9,10 };
695 wxMemoryInputStream input( buf, 10 );
696
697 ch = input.Peek();
698 str.Printf( wxT("First char peeked: %d\n"), (int) ch );
699 textCtrl.WriteText( str );
700
701 ch = input.GetC();
702 str.Printf( wxT("First char read: %d\n"), (int) ch );
703 textCtrl.WriteText( str );
704
705 ch = input.Peek();
706 str.Printf( wxT("Second char peeked: %d\n"), (int) ch );
707 textCtrl.WriteText( str );
708
709 ch = input.GetC();
710 str.Printf( wxT("Second char read: %d\n"), (int) ch );
711 textCtrl.WriteText( str );
712
713 ch = input.Peek();
714 str.Printf( wxT("Third char peeked: %d\n"), (int) ch );
715 textCtrl.WriteText( str );
716
717 ch = input.GetC();
718 str.Printf( wxT("Third char read: %d\n"), (int) ch );
719 textCtrl.WriteText( str );
720}
721
722void MyApp::DoStreamDemo6(wxCommandEvent& WXUNUSED(event))
723{
724 wxTextCtrl& textCtrl = * GetTextCtrl();
725
726 textCtrl.Clear();
727 textCtrl.WriteText( _T("\nTesting Ungetch():\n\n") );
728
729 char ch = 0;
730 size_t pos = 0;
731 wxString str;
732
733 textCtrl.WriteText( _T("Writing number 0 to 9 to wxFileOutputStream...\n\n") );
734
735 wxFileOutputStream file_output( wxString(_T("test_wx.dat")) );
736 for (ch = 0; ch < 10; ch++)
737 file_output.Write( &ch, 1 );
738
739 file_output.Sync();
740
741 textCtrl.WriteText( _T("Reading char from wxFileInputStream:\n\n") );
742
743 wxFileInputStream file_input( wxString(_T("test_wx.dat")) );
744
745 ch = file_input.GetC();
746 pos = file_input.TellI();
747 str.Printf( wxT("Read char: %d. Now at position %d\n\n"), (int) ch, (int) pos );
748 textCtrl.WriteText( str );
749
750 textCtrl.WriteText( _T("Reading another char from wxFileInputStream:\n\n") );
751
752 ch = file_input.GetC();
753 pos = file_input.TellI();
754 str.Printf( wxT("Read char: %d. Now at position %d\n\n"), (int) ch, (int) pos );
755 textCtrl.WriteText( str );
756
757 textCtrl.WriteText( _T("Reading yet another char from wxFileInputStream:\n\n") );
758
759 ch = file_input.GetC();
760 pos = file_input.TellI();
761 str.Printf( wxT("Read char: %d. Now at position %d\n\n"), (int) ch, (int) pos );
762 textCtrl.WriteText( str );
763
764 textCtrl.WriteText( _T("Now calling Ungetch( 5 ) from wxFileInputStream...\n\n") );
765
766 file_input.Ungetch( 5 );
767 pos = file_input.TellI();
768 str.Printf( wxT("Now at position %d\n\n"), (int) pos );
769 textCtrl.WriteText( str );
770
771 textCtrl.WriteText( _T("Reading char from wxFileInputStream:\n\n") );
772
773 ch = file_input.GetC();
774 pos = file_input.TellI();
775 str.Printf( wxT("Read char: %d. Now at position %d\n\n"), (int) ch, (int) pos );
776 textCtrl.WriteText( str );
777
778 textCtrl.WriteText( _T("Reading another char from wxFileInputStream:\n\n") );
779
780 ch = file_input.GetC();
781 pos = file_input.TellI();
782 str.Printf( wxT("Read char: %d. Now at position %d\n\n"), (int) ch, (int) pos );
783 textCtrl.WriteText( str );
784
785 textCtrl.WriteText( _T("Now calling Ungetch( 5 ) from wxFileInputStream again...\n\n") );
786
787 file_input.Ungetch( 5 );
788 pos = file_input.TellI();
789 str.Printf( wxT("Now at position %d\n\n"), (int) pos );
790 textCtrl.WriteText( str );
791
792 textCtrl.WriteText( _T("Seeking to pos 3 in wxFileInputStream. This invalidates the writeback buffer.\n\n") );
793
794 file_input.SeekI( 3 );
795
796 ch = file_input.GetC();
797 pos = file_input.TellI();
798 str.Printf( wxT("Read char: %d. Now at position %d\n\n"), (int) ch, (int) pos );
799 textCtrl.WriteText( str );
800}
801
802void MyApp::DoStreamDemo7(wxCommandEvent& WXUNUSED(event))
803{
804 wxTextCtrl& textCtrl = * GetTextCtrl();
805
806 textCtrl.Clear();
807 textCtrl.WriteText( _T("\nTesting Ungetch() in buffered input stream:\n\n") );
808
809 char ch = 0;
810 size_t pos = 0;
811 wxString str;
812
813 textCtrl.WriteText( _T("Writing number 0 to 9 to wxFileOutputStream...\n\n") );
814
815 wxFileOutputStream file_output( wxString(_T("test_wx.dat")) );
816 for (ch = 0; ch < 10; ch++)
817 file_output.Write( &ch, 1 );
818
819 file_output.Sync();
820
821 textCtrl.WriteText( _T("Reading char from wxBufferedInputStream via wxFileInputStream:\n\n") );
822
823 wxFileInputStream file_input( wxString(_T("test_wx.dat")) );
824 wxBufferedInputStream buf_input( file_input );
825
826 ch = buf_input.GetC();
827 pos = buf_input.TellI();
828 str.Printf( wxT("Read char: %d. Now at position %d\n\n"), (int) ch, (int) pos );
829 textCtrl.WriteText( str );
830
831 textCtrl.WriteText( _T("Reading another char from wxBufferedInputStream:\n\n") );
832
833 ch = buf_input.GetC();
834 pos = buf_input.TellI();
835 str.Printf( wxT("Read char: %d. Now at position %d\n\n"), (int) ch, (int) pos );
836 textCtrl.WriteText( str );
837
838 textCtrl.WriteText( _T("Reading yet another char from wxBufferedInputStream:\n\n") );
839
840 ch = buf_input.GetC();
841 pos = buf_input.TellI();
842 str.Printf( wxT("Read char: %d. Now at position %d\n\n"), (int) ch, (int) pos );
843 textCtrl.WriteText( str );
844
845 textCtrl.WriteText( _T("Now calling Ungetch( 5 ) from wxBufferedInputStream...\n\n") );
846
847 buf_input.Ungetch( 5 );
848 pos = buf_input.TellI();
849 str.Printf( wxT("Now at position %d\n\n"), (int) pos );
850 textCtrl.WriteText( str );
851
852 textCtrl.WriteText( _T("Reading char from wxBufferedInputStream:\n\n") );
853
854 ch = buf_input.GetC();
855 pos = buf_input.TellI();
856 str.Printf( wxT("Read char: %d. Now at position %d\n\n"), (int) ch, (int) pos );
857 textCtrl.WriteText( str );
858
859 textCtrl.WriteText( _T("Reading another char from wxBufferedInputStream:\n\n") );
860
861 ch = buf_input.GetC();
862 pos = buf_input.TellI();
863 str.Printf( wxT("Read char: %d. Now at position %d\n\n"), (int) ch, (int) pos );
864 textCtrl.WriteText( str );
865
866 textCtrl.WriteText( _T("Now calling Ungetch( 5 ) from wxBufferedInputStream again...\n\n") );
867
868 buf_input.Ungetch( 5 );
869 pos = buf_input.TellI();
870 str.Printf( wxT("Now at position %d\n\n"), (int) pos );
871 textCtrl.WriteText( str );
872
873 textCtrl.WriteText( _T("Seeking to pos 3 in wxBufferedInputStream. This invalidates the writeback buffer.\n\n") );
874
875 buf_input.SeekI( 3 );
876
877 ch = buf_input.GetC();
878 pos = buf_input.TellI();
879 str.Printf( wxT("Read char: %d. Now at position %d\n\n"), (int) ch, (int) pos );
880 textCtrl.WriteText( str );
881}
882
883#if wxUSE_UNICODE
884void MyApp::DoUnicodeDemo(wxCommandEvent& WXUNUSED(event))
885{
886 wxTextCtrl& textCtrl = * GetTextCtrl();
887
888 textCtrl.Clear();
889 textCtrl << _T("\nTest wchar_t to char (Unicode to ANSI/Multibyte) converions:");
890
891 wxString str;
892