X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ee31c392ac73dcd67fb25ac368e2ffb7d4c9c0e7..aa9a4ae1a54ab701d1e12d8a9bddf1ddd81a9a1a:/samples/text/text.cpp?ds=sidebyside diff --git a/samples/text/text.cpp b/samples/text/text.cpp index f19bd1159c..26e87442e6 100644 --- a/samples/text/text.cpp +++ b/samples/text/text.cpp @@ -32,10 +32,6 @@ #include "wx/tooltip.h" #endif -#if defined(__WXGTK__) || defined(__WXMOTIF__) - #include "mondrian.xpm" -#endif - // We test for wxUSE_DRAG_AND_DROP also, because data objects may not be // implemented for compilers that can't cope with the OLE parts in // wxUSE_DRAG_AND_DROP. @@ -61,12 +57,14 @@ class MyTextCtrl : public wxTextCtrl public: MyTextCtrl(wxWindow *parent, wxWindowID id, const wxString &value, const wxPoint &pos, const wxSize &size, int style = 0) - : wxTextCtrl(parent, id, value, pos, size, style) { } + : wxTextCtrl(parent, id, value, pos, size, style) { m_hasCapture = FALSE; } void OnKeyDown(wxKeyEvent& event); void OnKeyUp(wxKeyEvent& event); void OnChar(wxKeyEvent& event); + bool m_hasCapture; + private: static inline wxChar GetChar(bool on, wxChar c) { return on ? c : _T('-'); } void LogEvent(const wxChar *name, wxKeyEvent& event) const; @@ -87,6 +85,8 @@ public: void DoMoveToEndOfText(); void DoMoveToEndOfEntry(); + void OnSize( wxSizeEvent &event ); + MyTextCtrl *m_text; MyTextCtrl *m_password; MyTextCtrl *m_enter; @@ -97,6 +97,9 @@ public: MyTextCtrl *m_horizontal; wxTextCtrl *m_log; + +private: + DECLARE_EVENT_TABLE() }; class MyFrame: public wxFrame @@ -123,6 +126,7 @@ public: void OnMoveToEndOfEntry( wxCommandEvent &event ) { m_panel->DoMoveToEndOfEntry(); } + void OnLogClear(wxCommandEvent& event); void OnFileLoad(wxCommandEvent& event); void OnIdle( wxIdleEvent& event ); @@ -148,6 +152,7 @@ enum TEXT_QUIT = 100, TEXT_ABOUT, TEXT_LOAD, + TEXT_CLEAR, // clipboard menu TEXT_CLIPBOARD_COPY = 200, @@ -166,10 +171,12 @@ bool MyApp::OnInit() { // Create the main frame window MyFrame *frame = new MyFrame((wxFrame *) NULL, - "Text wxWindows App", - 50, 50, 640, 420); + "Text wxWindows sample", 50, 50, 640, 420); + frame->SetSizeHints( 500, 400 ); wxMenu *file_menu = new wxMenu; + file_menu->Append(TEXT_CLEAR, "&Clear the log\tCtrl-C", + "Clear the log window contents"); file_menu->Append(TEXT_LOAD, "&Load file\tCtrl-O", "Load the sample file into text control"); file_menu->AppendSeparator(); @@ -228,9 +235,6 @@ void MyTextCtrl::LogEvent(const wxChar *name, wxKeyEvent& event) const { wxString key; long keycode = event.KeyCode(); - if ( wxIsprint((int)keycode) ) - key.Printf( _T("'%c'") , (char)keycode); - else { switch ( keycode ) { @@ -336,8 +340,13 @@ void MyTextCtrl::LogEvent(const wxChar *name, wxKeyEvent& event) const case WXK_NUMPAD_SUBTRACT: key = "NUMPAD_SUBTRACT"; break; case WXK_NUMPAD_DECIMAL: key = "NUMPAD_DECIMAL"; break; - default: - key.Printf( _T("unknown (%ld)"), keycode); + default: + { + if ( wxIsprint((int)keycode) ) + key.Printf( _T("'%c'") , (char)keycode); + else + key.Printf( _T("unknown (%ld)"), keycode); + } } } @@ -355,6 +364,8 @@ void MyTextCtrl::OnChar(wxKeyEvent& event) { LogEvent( _T("Char"), event); +/* How are we supposed to test wxTE_PROCESS_TAB with this code? + if ( event.KeyCode() == WXK_TAB ) { WriteText("\t"); @@ -363,6 +374,8 @@ void MyTextCtrl::OnChar(wxKeyEvent& event) { event.Skip(); } +*/ + event.Skip(); } void MyTextCtrl::OnKeyUp(wxKeyEvent& event) @@ -404,6 +417,21 @@ void MyTextCtrl::OnKeyDown(wxKeyEvent& event) // go to position 10 SetInsertionPoint(10); break; + + case WXK_F4: + if (!m_hasCapture) + { + wxLogDebug( wxT("Now capturing mouse and events.") ); + m_hasCapture = TRUE; + CaptureMouse(); + } + else + { + wxLogDebug( wxT("Stopped capturing mouse and events.") ); + m_hasCapture = TRUE; + ReleaseMouse(); + } + break; } LogEvent( _("Key down"), event); @@ -415,12 +443,18 @@ void MyTextCtrl::OnKeyDown(wxKeyEvent& event) // MyPanel //---------------------------------------------------------------------- +BEGIN_EVENT_TABLE(MyPanel, wxPanel) + EVT_SIZE(MyPanel::OnSize) +END_EVENT_TABLE() + MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) : wxPanel( frame, -1, wxPoint(x, y), wxSize(w, h) ) { m_log = new wxTextCtrl( this, -1, "This is the log window.\n", wxPoint(5,260), wxSize(630,100), wxTE_MULTILINE ); - delete wxLog::SetActiveTarget(new wxLogStderr); + wxLog *old_log = wxLog::SetActiveTarget( new wxLogTextCtrl( m_log ) ); + + delete old_log; // single line text controls @@ -440,7 +474,8 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) m_horizontal = new MyTextCtrl( this, -1, "Multiline text control with a horizontal scrollbar.", wxPoint(10,170), wxSize(140,70), wxTE_MULTILINE | wxHSCROLL ); - m_horizontal->SetFont(wxFont(18, wxSWISS, wxNORMAL, wxBOLD)); + m_horizontal->SetFont(wxFont(18, wxSWISS, wxNORMAL, wxNORMAL, + FALSE, "", wxFONTENCODING_KOI8)); m_multitext = new MyTextCtrl( this, -1, "Multi line.", wxPoint(180,10), wxSize(240,70), wxTE_MULTILINE ); @@ -449,7 +484,7 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) m_multitext->WriteText( "Prepended. " ); #if wxUSE_TOOLTIPS - m_multitext->SetToolTip("Press F1 here."); + m_multitext->SetToolTip("Press F1 here for statitics, F4 for capture and uncapture mouse."); #endif m_tab = new MyTextCtrl( this, -1, "Multiline, allow processing.", @@ -459,6 +494,13 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) wxPoint(180,170), wxSize(240,70), wxTE_MULTILINE); } +void MyPanel::OnSize( wxSizeEvent &event ) +{ + wxSize client_area( GetClientSize() ); + m_log->SetSize( 0, 260, client_area.x, client_area.y - 260 ); + event.Skip(); +} + #if wxUSE_CLIPBOARD void MyPanel::DoPasteFromClipboard() { @@ -483,7 +525,7 @@ void MyPanel::DoPasteFromClipboard() { *m_log << "Clipboard supports requested format.\n"; - if (wxTheClipboard->GetData( &data )) + if (wxTheClipboard->GetData( data )) { *m_log << "Successfully retrieved data from the clipboard.\n"; *m_multitext << data.GetText() << "\n"; @@ -505,6 +547,11 @@ void MyPanel::DoPasteFromClipboard() void MyPanel::DoCopyToClipboard() { + // On X11, we want to get the data from the primary selection instead + // of the normal clipboard (which isn't normal under X11 at all). This + // call has no effect under MSW. + wxTheClipboard->UsePrimarySelection(); + wxString text( m_multitext->GetLineText(0) ); if (text.IsEmpty()) @@ -563,6 +610,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(TEXT_QUIT, MyFrame::OnQuit) EVT_MENU(TEXT_ABOUT, MyFrame::OnAbout) EVT_MENU(TEXT_LOAD, MyFrame::OnFileLoad) + EVT_MENU(TEXT_CLEAR, MyFrame::OnLogClear) #if wxUSE_TOOLTIPS EVT_MENU(TEXT_TOOLTIPS_SETDELAY, MyFrame::OnSetTooltipDelay) @@ -595,6 +643,9 @@ void MyFrame::OnQuit (wxCommandEvent& WXUNUSED(event) ) void MyFrame::OnAbout( wxCommandEvent& WXUNUSED(event) ) { + SetSize(40, 40, 200, 200); + return; + wxBeginBusyCursor(); wxMessageDialog dialog(this, @@ -645,9 +696,14 @@ void MyFrame::OnToggleTooltips(wxCommandEvent& event) } #endif // tooltips +void MyFrame::OnLogClear(wxCommandEvent& WXUNUSED(event)) +{ + m_panel->m_log->Clear(); +} + void MyFrame::OnFileLoad(wxCommandEvent& event) { - if ( m_panel->m_multitext->LoadFile("controls.cpp") ) + if ( m_panel->m_multitext->LoadFile("text.rc") ) wxLogStatus(this, _T("Successfully loaded file")); else wxLogStatus(this, _T("Couldn't load the file"));