]>
git.saurik.com Git - wxWidgets.git/blob - samples/text/text.cpp
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: TextCtrl wxWindows sample
4 // Author: Robert Roebling
7 // Copyright: (c) Robert Roebling, Julian Smart
8 // Licence: wxWindows license
9 /////////////////////////////////////////////////////////////////////////////
12 #pragma implementation "controls.h"
15 // For compilers that support precompilation, includes "wx/wx.h".
16 #include "wx/wxprec.h"
27 #include "wx/dataobj.h"
28 #include "wx/clipbrd.h"
36 #include "wx/tooltip.h"
39 // We test for wxUSE_DRAG_AND_DROP also, because data objects may not be
40 // implemented for compilers that can't cope with the OLE parts in
41 // wxUSE_DRAG_AND_DROP.
42 #if !wxUSE_DRAG_AND_DROP
43 #undef wxUSE_CLIPBOARD
44 #define wxUSE_CLIPBOARD 0
47 //----------------------------------------------------------------------
49 //----------------------------------------------------------------------
51 class MyApp
: public wxApp
57 // a text ctrl which allows to call different wxTextCtrl functions
58 // interactively by pressing function keys in it
59 class MyTextCtrl
: public wxTextCtrl
62 MyTextCtrl(wxWindow
*parent
, wxWindowID id
, const wxString
&value
,
63 const wxPoint
&pos
, const wxSize
&size
, int style
= 0)
64 : wxTextCtrl(parent
, id
, value
, pos
, size
, style
) { m_hasCapture
= FALSE
; }
66 void OnKeyDown(wxKeyEvent
& event
);
67 void OnKeyUp(wxKeyEvent
& event
);
68 void OnChar(wxKeyEvent
& event
);
73 static inline wxChar
GetChar(bool on
, wxChar c
) { return on
? c
: _T('-'); }
74 void LogEvent(const wxChar
*name
, wxKeyEvent
& event
) const;
79 class MyPanel
: public wxPanel
82 MyPanel(wxFrame
*frame
, int x
, int y
, int w
, int h
);
85 void DoPasteFromClipboard();
86 void DoCopyToClipboard();
87 #endif // wxUSE_CLIPBOARD
89 void DoMoveToEndOfText();
90 void DoMoveToEndOfEntry();
92 void OnSize( wxSizeEvent
&event
);
95 MyTextCtrl
*m_password
;
98 MyTextCtrl
*m_readonly
;
100 MyTextCtrl
*m_multitext
;
101 MyTextCtrl
*m_horizontal
;
103 MyTextCtrl
*m_textrich
;
108 DECLARE_EVENT_TABLE()
111 class MyFrame
: public wxFrame
114 MyFrame(wxFrame
*frame
, const char *title
, int x
, int y
, int w
, int h
);
116 void OnQuit(wxCommandEvent
& event
);
117 void OnAbout(wxCommandEvent
& event
);
119 void OnSetTooltipDelay(wxCommandEvent
& event
);
120 void OnToggleTooltips(wxCommandEvent
& event
);
121 #endif // wxUSE_TOOLTIPS
124 void OnPasteFromClipboard( wxCommandEvent
&event
)
125 { m_panel
->DoPasteFromClipboard(); }
126 void OnCopyToClipboard( wxCommandEvent
&event
)
127 { m_panel
->DoCopyToClipboard(); }
128 #endif // wxUSE_CLIPBOARD
130 void OnMoveToEndOfText( wxCommandEvent
&event
)
131 { m_panel
->DoMoveToEndOfText(); }
132 void OnMoveToEndOfEntry( wxCommandEvent
&event
)
133 { m_panel
->DoMoveToEndOfEntry(); }
135 void OnLogClear(wxCommandEvent
& event
);
136 void OnFileSave(wxCommandEvent
& event
);
137 void OnFileLoad(wxCommandEvent
& event
);
139 void OnIdle( wxIdleEvent
& event
);
144 DECLARE_EVENT_TABLE()
147 //----------------------------------------------------------------------
149 //----------------------------------------------------------------------
153 //----------------------------------------------------------------------
155 //----------------------------------------------------------------------
166 TEXT_CLIPBOARD_COPY
= 200,
167 TEXT_CLIPBOARD_PASTE
,
170 TEXT_TOOLTIPS_SETDELAY
= 300,
171 TEXT_TOOLTIPS_ENABLE
,
174 TEXT_MOVE_ENDTEXT
= 400,
180 // Create the main frame window
181 MyFrame
*frame
= new MyFrame((wxFrame
*) NULL
,
182 "Text wxWindows sample", 50, 50, 660, 420);
183 frame
->SetSizeHints( 500, 400 );
185 wxMenu
*file_menu
= new wxMenu
;
186 file_menu
->Append(TEXT_CLEAR
, "&Clear the log\tCtrl-C",
187 "Clear the log window contents");
188 file_menu
->Append(TEXT_SAVE
, "&Save file\tCtrl-S",
189 "Save the text control contents to file");
190 file_menu
->Append(TEXT_LOAD
, "&Load file\tCtrl-O",
191 "Load the sample file into text control");
192 file_menu
->AppendSeparator();
193 file_menu
->Append(TEXT_ABOUT
, "&About\tAlt-A");
194 file_menu
->AppendSeparator();
195 file_menu
->Append(TEXT_QUIT
, "E&xit\tAlt-X", "Quit controls sample");
197 wxMenuBar
*menu_bar
= new wxMenuBar( wxMB_DOCKABLE
);
198 menu_bar
->Append(file_menu
, "&File");
201 wxMenu
*tooltip_menu
= new wxMenu
;
202 tooltip_menu
->Append(TEXT_TOOLTIPS_SETDELAY
, "Set &delay\tCtrl-D");
203 tooltip_menu
->AppendSeparator();
204 tooltip_menu
->Append(TEXT_TOOLTIPS_ENABLE
, "&Toggle tooltips\tCtrl-T",
205 "enable/disable tooltips", TRUE
);
206 tooltip_menu
->Check(TEXT_TOOLTIPS_ENABLE
, TRUE
);
207 menu_bar
->Append(tooltip_menu
, "&Tooltips");
208 #endif // wxUSE_TOOLTIPS
211 wxMenu
*menuClipboard
= new wxMenu
;
212 menuClipboard
->Append(TEXT_CLIPBOARD_COPY
, "&Copy\tCtrl-C",
213 "Copy the first line to the clipboard");
214 menuClipboard
->Append(TEXT_CLIPBOARD_PASTE
, "&Paste\tCtrl-V",
215 "Paste from clipboard to the text control");
216 menu_bar
->Append(menuClipboard
, "&Clipboard");
217 #endif // wxUSE_CLIPBOARD
219 wxMenu
*menuMove
= new wxMenu
;
220 menuMove
->Append(TEXT_MOVE_ENDTEXT
, "To the end of &text");
221 menuMove
->Append(TEXT_MOVE_ENDENTRY
, "To the end of &entry");
222 menu_bar
->Append(menuMove
, "&Move");
224 frame
->SetMenuBar(menu_bar
);
234 //----------------------------------------------------------------------
236 //----------------------------------------------------------------------
238 BEGIN_EVENT_TABLE(MyTextCtrl
, wxTextCtrl
)
239 EVT_KEY_DOWN(MyTextCtrl::OnKeyDown
)
240 EVT_KEY_UP(MyTextCtrl::OnKeyUp
)
241 EVT_CHAR(MyTextCtrl::OnChar
)
244 void MyTextCtrl::LogEvent(const wxChar
*name
, wxKeyEvent
& event
) const
247 long keycode
= event
.KeyCode();
251 case WXK_BACK
: key
= "BACK"; break;
252 case WXK_TAB
: key
= "TAB"; break;
253 case WXK_RETURN
: key
= "RETURN"; break;
254 case WXK_ESCAPE
: key
= "ESCAPE"; break;
255 case WXK_SPACE
: key
= "SPACE"; break;
256 case WXK_DELETE
: key
= "DELETE"; break;
257 case WXK_START
: key
= "START"; break;
258 case WXK_LBUTTON
: key
= "LBUTTON"; break;
259 case WXK_RBUTTON
: key
= "RBUTTON"; break;
260 case WXK_CANCEL
: key
= "CANCEL"; break;
261 case WXK_MBUTTON
: key
= "MBUTTON"; break;
262 case WXK_CLEAR
: key
= "CLEAR"; break;
263 case WXK_SHIFT
: key
= "SHIFT"; break;
264 case WXK_ALT
: key
= "ALT"; break;
265 case WXK_CONTROL
: key
= "CONTROL"; break;
266 case WXK_MENU
: key
= "MENU"; break;
267 case WXK_PAUSE
: key
= "PAUSE"; break;
268 case WXK_CAPITAL
: key
= "CAPITAL"; break;
269 case WXK_PRIOR
: key
= "PRIOR"; break;
270 case WXK_NEXT
: key
= "NEXT"; break;
271 case WXK_END
: key
= "END"; break;
272 case WXK_HOME
: key
= "HOME"; break;
273 case WXK_LEFT
: key
= "LEFT"; break;
274 case WXK_UP
: key
= "UP"; break;
275 case WXK_RIGHT
: key
= "RIGHT"; break;
276 case WXK_DOWN
: key
= "DOWN"; break;
277 case WXK_SELECT
: key
= "SELECT"; break;
278 case WXK_PRINT
: key
= "PRINT"; break;
279 case WXK_EXECUTE
: key
= "EXECUTE"; break;
280 case WXK_SNAPSHOT
: key
= "SNAPSHOT"; break;
281 case WXK_INSERT
: key
= "INSERT"; break;
282 case WXK_HELP
: key
= "HELP"; break;
283 case WXK_NUMPAD0
: key
= "NUMPAD0"; break;
284 case WXK_NUMPAD1
: key
= "NUMPAD1"; break;
285 case WXK_NUMPAD2
: key
= "NUMPAD2"; break;
286 case WXK_NUMPAD3
: key
= "NUMPAD3"; break;
287 case WXK_NUMPAD4
: key
= "NUMPAD4"; break;
288 case WXK_NUMPAD5
: key
= "NUMPAD5"; break;
289 case WXK_NUMPAD6
: key
= "NUMPAD6"; break;
290 case WXK_NUMPAD7
: key
= "NUMPAD7"; break;
291 case WXK_NUMPAD8
: key
= "NUMPAD8"; break;
292 case WXK_NUMPAD9
: key
= "NUMPAD9"; break;
293 case WXK_MULTIPLY
: key
= "MULTIPLY"; break;
294 case WXK_ADD
: key
= "ADD"; break;
295 case WXK_SEPARATOR
: key
= "SEPARATOR"; break;
296 case WXK_SUBTRACT
: key
= "SUBTRACT"; break;
297 case WXK_DECIMAL
: key
= "DECIMAL"; break;
298 case WXK_DIVIDE
: key
= "DIVIDE"; break;
299 case WXK_F1
: key
= "F1"; break;
300 case WXK_F2
: key
= "F2"; break;
301 case WXK_F3
: key
= "F3"; break;
302 case WXK_F4
: key
= "F4"; break;
303 case WXK_F5
: key
= "F5"; break;
304 case WXK_F6
: key
= "F6"; break;
305 case WXK_F7
: key
= "F7"; break;
306 case WXK_F8
: key
= "F8"; break;
307 case WXK_F9
: key
= "F9"; break;
308 case WXK_F10
: key
= "F10"; break;
309 case WXK_F11
: key
= "F11"; break;
310 case WXK_F12
: key
= "F12"; break;
311 case WXK_F13
: key
= "F13"; break;
312 case WXK_F14
: key
= "F14"; break;
313 case WXK_F15
: key
= "F15"; break;
314 case WXK_F16
: key
= "F16"; break;
315 case WXK_F17
: key
= "F17"; break;
316 case WXK_F18
: key
= "F18"; break;
317 case WXK_F19
: key
= "F19"; break;
318 case WXK_F20
: key
= "F20"; break;
319 case WXK_F21
: key
= "F21"; break;
320 case WXK_F22
: key
= "F22"; break;
321 case WXK_F23
: key
= "F23"; break;
322 case WXK_F24
: key
= "F24"; break;
323 case WXK_NUMLOCK
: key
= "NUMLOCK"; break;
324 case WXK_SCROLL
: key
= "SCROLL"; break;
325 case WXK_PAGEUP
: key
= "PAGEUP"; break;
326 case WXK_PAGEDOWN
: key
= "PAGEDOWN"; break;
327 case WXK_NUMPAD_SPACE
: key
= "NUMPAD_SPACE"; break;
328 case WXK_NUMPAD_TAB
: key
= "NUMPAD_TAB"; break;
329 case WXK_NUMPAD_ENTER
: key
= "NUMPAD_ENTER"; break;
330 case WXK_NUMPAD_F1
: key
= "NUMPAD_F1"; break;
331 case WXK_NUMPAD_F2
: key
= "NUMPAD_F2"; break;
332 case WXK_NUMPAD_F3
: key
= "NUMPAD_F3"; break;
333 case WXK_NUMPAD_F4
: key
= "NUMPAD_F4"; break;
334 case WXK_NUMPAD_HOME
: key
= "NUMPAD_HOME"; break;
335 case WXK_NUMPAD_LEFT
: key
= "NUMPAD_LEFT"; break;
336 case WXK_NUMPAD_UP
: key
= "NUMPAD_UP"; break;
337 case WXK_NUMPAD_RIGHT
: key
= "NUMPAD_RIGHT"; break;
338 case WXK_NUMPAD_DOWN
: key
= "NUMPAD_DOWN"; break;
339 case WXK_NUMPAD_PRIOR
: key
= "NUMPAD_PRIOR"; break;
340 case WXK_NUMPAD_PAGEUP
: key
= "NUMPAD_PAGEUP"; break;
341 case WXK_NUMPAD_PAGEDOWN
: key
= "NUMPAD_PAGEDOWN"; break;
342 case WXK_NUMPAD_END
: key
= "NUMPAD_END"; break;
343 case WXK_NUMPAD_BEGIN
: key
= "NUMPAD_BEGIN"; break;
344 case WXK_NUMPAD_INSERT
: key
= "NUMPAD_INSERT"; break;
345 case WXK_NUMPAD_DELETE
: key
= "NUMPAD_DELETE"; break;
346 case WXK_NUMPAD_EQUAL
: key
= "NUMPAD_EQUAL"; break;
347 case WXK_NUMPAD_MULTIPLY
: key
= "NUMPAD_MULTIPLY"; break;
348 case WXK_NUMPAD_ADD
: key
= "NUMPAD_ADD"; break;
349 case WXK_NUMPAD_SEPARATOR
: key
= "NUMPAD_SEPARATOR"; break;
350 case WXK_NUMPAD_SUBTRACT
: key
= "NUMPAD_SUBTRACT"; break;
351 case WXK_NUMPAD_DECIMAL
: key
= "NUMPAD_DECIMAL"; break;
355 if ( wxIsprint((int)keycode
) )
356 key
.Printf( _T("'%c'") , (char)keycode
);
358 key
.Printf( _T("unknown (%ld)"), keycode
);
363 wxLogMessage( _T("%s event: %s (flags = %c%c%c%c)"),
366 GetChar( event
.ControlDown(), _T('C') ),
367 GetChar( event
.AltDown(), _T('A') ),
368 GetChar( event
.ShiftDown(), _T('S') ),
369 GetChar( event
.MetaDown(), _T('M') ) );
373 void MyTextCtrl::OnChar(wxKeyEvent
& event
)
375 LogEvent( _T("Char"), event
);
377 /* How are we supposed to test wxTE_PROCESS_TAB with this code?
379 if ( event.KeyCode() == WXK_TAB )
391 void MyTextCtrl::OnKeyUp(wxKeyEvent
& event
)
393 LogEvent( _("Key up"), event
);
398 void MyTextCtrl::OnKeyDown(wxKeyEvent
& event
)
400 switch ( event
.KeyCode() )
403 // show current position and text length
405 long line
, column
, pos
= GetInsertionPoint();
406 PositionToXY(pos
, &column
, &line
);
408 wxLogMessage( _T("Current position: %ld\n"
409 "Current line, column: (%ld, %ld)\n"
410 "Number of lines: %ld\n"
411 "Current line length: %ld\n"
412 "Total text length: %ld"),
423 SetInsertionPointEnd();
428 SetInsertionPoint(10);
434 wxLogDebug( wxT("Now capturing mouse and events.") );
440 wxLogDebug( wxT("Stopped capturing mouse and events.") );
447 // insert a blank line
452 LogEvent( _("Key down"), event
);
458 //----------------------------------------------------------------------
460 //----------------------------------------------------------------------
462 BEGIN_EVENT_TABLE(MyPanel
, wxPanel
)
463 EVT_SIZE(MyPanel::OnSize
)
466 MyPanel::MyPanel( wxFrame
*frame
, int x
, int y
, int w
, int h
)
467 : wxPanel( frame
, -1, wxPoint(x
, y
), wxSize(w
, h
) )
469 m_log
= new wxTextCtrl( this, -1, "This is the log window.\n", wxPoint(5,260), wxSize(630,100), wxTE_MULTILINE
);
471 wxLog
*old_log
= wxLog::SetActiveTarget( new wxLogTextCtrl( m_log
) );
475 // single line text controls
477 m_text
= new MyTextCtrl( this, -1, "Single line.",
478 wxPoint(10,10), wxSize(140,-1), 0);
479 (*m_text
) << " Appended.";
480 m_text
->SetInsertionPoint(0);
481 m_text
->WriteText( "Prepended. " );
483 m_password
= new MyTextCtrl( this, -1, "",
484 wxPoint(10,50), wxSize(140,-1), wxTE_PASSWORD
);
486 m_readonly
= new MyTextCtrl( this, -1, "Read only",
487 wxPoint(10,90), wxSize(140,-1), wxTE_READONLY
);
489 // multi line text controls
491 m_horizontal
= new MyTextCtrl( this, -1, "Multiline text control with a horizontal scrollbar.",
492 wxPoint(10,170), wxSize(140,70), wxTE_MULTILINE
| wxHSCROLL
);
493 m_horizontal
->SetFont(wxFont(18, wxSWISS
, wxNORMAL
, wxNORMAL
,
494 FALSE
, "", wxFONTENCODING_KOI8
));
496 m_multitext
= new MyTextCtrl( this, -1, "Multi line.",
497 wxPoint(180,10), wxSize(240,70), wxTE_MULTILINE
);
498 (*m_multitext
) << " Appended.";
499 m_multitext
->SetInsertionPoint(0);
500 m_multitext
->WriteText( "Prepended. " );
503 m_multitext
->SetToolTip("Press F1 here for statitics, F4 for capture and uncapture mouse.");
506 m_tab
= new MyTextCtrl( this, -1, "Multiline, allow <TAB> processing.",
507 wxPoint(180,90), wxSize(240,70), wxTE_MULTILINE
| wxTE_PROCESS_TAB
);
509 m_enter
= new MyTextCtrl( this, -1, "Multiline, allow <ENTER> processing.",
510 wxPoint(180,170), wxSize(240,70), wxTE_MULTILINE
);
512 m_textrich
= new MyTextCtrl(this, -1, "Allows more than 30Kb of text\n"
513 "(even under broken Win9x)",
514 wxPoint(450, 10), wxSize(200, 230),
515 wxTE_RICH
| wxTE_MULTILINE
);
518 void MyPanel::OnSize( wxSizeEvent
&event
)
520 wxSize
client_area( GetClientSize() );
521 m_log
->SetSize( 0, 260, client_area
.x
, client_area
.y
- 260 );
526 void MyPanel::DoPasteFromClipboard()
528 // On X11, we want to get the data from the primary selection instead
529 // of the normal clipboard (which isn't normal under X11 at all). This
530 // call has no effect under MSW.
531 wxTheClipboard
->UsePrimarySelection();
533 if (!wxTheClipboard
->Open())
535 *m_log
<< "Error opening the clipboard.\n";
540 *m_log
<< "Successfully opened the clipboard.\n";
543 wxTextDataObject data
;
545 if (wxTheClipboard
->IsSupported( data
.GetFormat() ))
547 *m_log
<< "Clipboard supports requested format.\n";
549 if (wxTheClipboard
->GetData( data
))
551 *m_log
<< "Successfully retrieved data from the clipboard.\n";
552 *m_multitext
<< data
.GetText() << "\n";
556 *m_log
<< "Error getting data from the clipboard.\n";
561 *m_log
<< "Clipboard doesn't support requested format.\n";
564 wxTheClipboard
->Close();
566 *m_log
<< "Closed the clipboard.\n";
569 void MyPanel::DoCopyToClipboard()
571 // On X11, we want to get the data from the primary selection instead
572 // of the normal clipboard (which isn't normal under X11 at all). This
573 // call has no effect under MSW.
574 wxTheClipboard
->UsePrimarySelection();
576 wxString
text( m_multitext
->GetLineText(0) );
580 *m_log
<< "No text to copy.\n";
585 if (!wxTheClipboard
->Open())
587 *m_log
<< "Error opening the clipboard.\n";
593 *m_log
<< "Successfully opened the clipboard.\n";
596 wxTextDataObject
*data
= new wxTextDataObject( text
);
598 if (!wxTheClipboard
->SetData( data
))
600 *m_log
<< "Error while copying to the clipboard.\n";
604 *m_log
<< "Successfully copied data to the clipboard.\n";
607 wxTheClipboard
->Close();
609 *m_log
<< "Closed the clipboard.\n";
612 #endif // wxUSE_CLIPBOARD
614 void MyPanel::DoMoveToEndOfText()
616 m_multitext
->SetInsertionPointEnd();
617 m_multitext
->SetFocus();
620 void MyPanel::DoMoveToEndOfEntry()
622 m_text
->SetInsertionPointEnd();
626 //----------------------------------------------------------------------
628 //----------------------------------------------------------------------
630 BEGIN_EVENT_TABLE(MyFrame
, wxFrame
)
631 EVT_MENU(TEXT_QUIT
, MyFrame::OnQuit
)
632 EVT_MENU(TEXT_ABOUT
, MyFrame::OnAbout
)
633 EVT_MENU(TEXT_SAVE
, MyFrame::OnFileSave
)
634 EVT_MENU(TEXT_LOAD
, MyFrame::OnFileLoad
)
635 EVT_MENU(TEXT_CLEAR
, MyFrame::OnLogClear
)
638 EVT_MENU(TEXT_TOOLTIPS_SETDELAY
, MyFrame::OnSetTooltipDelay
)
639 EVT_MENU(TEXT_TOOLTIPS_ENABLE
, MyFrame::OnToggleTooltips
)
640 #endif // wxUSE_TOOLTIPS
643 EVT_MENU(TEXT_CLIPBOARD_PASTE
, MyFrame::OnPasteFromClipboard
)
644 EVT_MENU(TEXT_CLIPBOARD_COPY
, MyFrame::OnCopyToClipboard
)
645 #endif // wxUSE_CLIPBOARD
647 EVT_MENU(TEXT_MOVE_ENDTEXT
, MyFrame::OnMoveToEndOfText
)
648 EVT_MENU(TEXT_MOVE_ENDENTRY
, MyFrame::OnMoveToEndOfEntry
)
650 EVT_IDLE(MyFrame::OnIdle
)
653 MyFrame::MyFrame(wxFrame
*frame
, const char *title
, int x
, int y
, int w
, int h
)
654 : wxFrame(frame
, -1, title
, wxPoint(x
, y
), wxSize(w
, h
) )
658 m_panel
= new MyPanel( this, 10, 10, 300, 100 );
661 void MyFrame::OnQuit (wxCommandEvent
& WXUNUSED(event
) )
666 void MyFrame::OnAbout( wxCommandEvent
& WXUNUSED(event
) )
670 wxMessageDialog
dialog(this,
671 "This is a text control sample. It demonstrates the many different\n"
672 "text control styles, the use of the clipboard, setting and handling\n"
673 "tooltips and intercepting key and char events.\n"
675 "Copyright (c) 1999, Robert Roebling, Julian Smart, Vadim Zeitlin",
676 "About Text Controls",
677 wxOK
| wxICON_INFORMATION
);
685 void MyFrame::OnSetTooltipDelay(wxCommandEvent
& event
)
687 static long s_delay
= 5000;
690 delay
.Printf( _T("%ld"), s_delay
);
692 delay
= wxGetTextFromUser("Enter delay (in milliseconds)",
699 wxSscanf(delay
, _T("%ld"), &s_delay
);
701 wxToolTip::SetDelay(s_delay
);
703 wxLogStatus(this, _T("Tooltip delay set to %ld milliseconds"), s_delay
);
706 void MyFrame::OnToggleTooltips(wxCommandEvent
& event
)
708 static bool s_enabled
= TRUE
;
710 s_enabled
= !s_enabled
;
712 wxToolTip::Enable(s_enabled
);
714 wxLogStatus(this, _T("Tooltips %sabled"), s_enabled
? _T("en") : _T("dis") );
718 void MyFrame::OnLogClear(wxCommandEvent
& WXUNUSED(event
))
720 m_panel
->m_log
->Clear();
723 void MyFrame::OnFileSave(wxCommandEvent
& event
)
725 if ( m_panel
->m_textrich
->SaveFile("dummy.txt") )
728 // verify that the fil length is correct (it wasn't under Win95)
729 wxFile
file("dummy.txt");
730 wxLogStatus(this, _T("Successfully saved file "
731 "(text len = %ld, file size = %ld)"),
732 m_panel
->m_textrich
->GetValue().length(),
737 wxLogStatus(this, _T("Couldn't save the file"));
740 void MyFrame::OnFileLoad(wxCommandEvent
& event
)
742 if ( m_panel
->m_textrich
->LoadFile("dummy.txt") )
743 wxLogStatus(this, _T("Successfully loaded file"));
745 wxLogStatus(this, _T("Couldn't load the file"));
748 void MyFrame::OnIdle( wxIdleEvent
& event
)
750 // track the window which has the focus in the status bar
751 static wxWindow
*s_windowFocus
= (wxWindow
*)NULL
;
752 wxWindow
*focus
= wxWindow::FindFocus();
753 if ( focus
&& (focus
!= s_windowFocus
) )
755 s_windowFocus
= focus
;
760 _T("Focus: wxWindow = %p, HWND = %08x"),
762 _T("Focus: wxWindow = %p"),
766 , s_windowFocus
->GetHWND()