X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7fb3f3c448b66f62ddfac4adcc2ac00c004ec331..160f78e09db9fff2f7c3a1484514835f1d83eb8e:/samples/text/text.cpp diff --git a/samples/text/text.cpp b/samples/text/text.cpp index 87c2a6d6b1..f8ed400e59 100644 --- a/samples/text/text.cpp +++ b/samples/text/text.cpp @@ -194,6 +194,12 @@ public: } #endif // wxUSE_CLIPBOARD + void OnAddTextLine(wxCommandEvent& WXUNUSED(event)) + { + static int s_n = 0; + m_panel->m_textrich->AppendText(wxString::Format("Line %d\n", ++s_n)); + } + void OnAddTextFreeze( wxCommandEvent& WXUNUSED(event) ) { DoAddText(true); } void OnAddText( wxCommandEvent& WXUNUSED(event) ) @@ -297,7 +303,12 @@ public: void OnSetText(wxCommandEvent& WXUNUSED(event)) { - m_panel->m_text->SetValue(_T("Hello, world (what else did you expect)?")); + m_panel->m_text->SetValue(_T("Hello, world! (what else did you expect?)")); + } + + void OnChangeText(wxCommandEvent& WXUNUSED(event)) + { + m_panel->m_text->ChangeValue(_T("Changed, not set: no event")); } void OnIdle( wxIdleEvent& event ); @@ -306,20 +317,21 @@ private: void DoAddText(bool freeze) { wxTextCtrl * const text = m_panel->m_textrich; - text->Clear(); if ( freeze ) text->Freeze(); + text->Clear(); + for ( int i = 0; i < 100; i++ ) { text->AppendText(wxString::Format(wxT("Line %i\n"), i)); } + text->SetInsertionPoint(0); + if ( freeze ) text->Thaw(); - - text->SetInsertionPoint(0); } MyPanel *m_panel; @@ -389,6 +401,7 @@ enum // text menu TEXT_ADD_SOME = 400, TEXT_ADD_FREEZE, + TEXT_ADD_LINE, TEXT_MOVE_ENDTEXT, TEXT_MOVE_ENDENTRY, TEXT_SET_EDITABLE, @@ -405,6 +418,7 @@ enum TEXT_REPLACE, TEXT_SELECT, TEXT_SET, + TEXT_CHANGE, // log menu TEXT_LOG_KEY, @@ -419,6 +433,9 @@ enum bool MyApp::OnInit() { + if ( !wxApp::OnInit() ) + return false; + // Create the main frame window MyFrame *frame = new MyFrame((wxFrame *) NULL, _T("Text wxWidgets sample"), 50, 50, 700, 550); @@ -466,10 +483,12 @@ bool MyApp::OnInit() wxMenu *menuText = new wxMenu; menuText->Append(TEXT_ADD_SOME, _T("&Append some text\tCtrl-A")); menuText->Append(TEXT_ADD_FREEZE, _T("&Append text with freeze/thaw\tShift-Ctrl-A")); + menuText->Append(TEXT_ADD_LINE, _T("Append a new &line\tAlt-Shift-A")); menuText->Append(TEXT_REMOVE, _T("&Remove first 10 characters\tCtrl-Y")); menuText->Append(TEXT_REPLACE, _T("&Replace characters 4 to 8 with ABC\tCtrl-R")); menuText->Append(TEXT_SELECT, _T("&Select characters 4 to 8\tCtrl-I")); menuText->Append(TEXT_SET, _T("&Set the first text zone value\tCtrl-E")); + menuText->Append(TEXT_CHANGE, _T("&Change the first text zone value\tShift-Ctrl-E")); menuText->AppendSeparator(); menuText->Append(TEXT_MOVE_ENDTEXT, _T("Move cursor to the end of &text")); menuText->Append(TEXT_MOVE_ENDENTRY, _T("Move cursor to the end of &entry")); @@ -911,6 +930,10 @@ void MyTextCtrl::OnKeyDown(wxKeyEvent& event) wxLogMessage(_T("Selection = '%s' (len = %u)"), sel.c_str(), (unsigned int) sel.length()); + + const wxString text = GetLineText(line); + wxLogMessage(_T("Current line: \"%s\"; length = %lu"), + text.c_str(), text.length()); } break; @@ -947,7 +970,7 @@ void MyTextCtrl::OnKeyDown(wxKeyEvent& event) case WXK_F6: wxLogMessage(_T("IsModified() before SetValue(): %d"), IsModified()); - SetValue(_T("SetValue() has been called")); + ChangeValue(_T("ChangeValue() has been called")); wxLogMessage(_T("IsModified() after SetValue(): %d"), IsModified()); break; @@ -1026,7 +1049,7 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) // a little hack to use the command line argument for encoding testing if ( wxTheApp->argc == 2 ) { - switch ( wxTheApp->argv[1][0] ) + switch ( (wxChar)wxTheApp->argv[1][0] ) { case '2': m_horizontal->SetFont(wxFont(18, wxSWISS, wxNORMAL, wxNORMAL, @@ -1058,8 +1081,9 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) m_horizontal->AppendText(_T("Text in default encoding")); } - m_multitext = new MyTextCtrl( this, wxID_ANY, _T("Multi line."), - wxPoint(180,10), wxSize(200,70), wxTE_MULTILINE ); + m_multitext = new MyTextCtrl( this, wxID_ANY, + _T("Multi line without vertical scrollbar."), + wxPoint(180,10), wxSize(200,70), wxTE_MULTILINE | wxTE_NO_VSCROLL ); m_multitext->SetFont(*wxITALIC_FONT); (*m_multitext) << _T(" Appended."); m_multitext->SetInsertionPoint(0); @@ -1129,7 +1153,6 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) topSizer->Add( m_log, 1, wxALL | wxEXPAND, 10 ); #endif - SetAutoLayout( true ); SetSizer(topSizer); } @@ -1322,6 +1345,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(TEXT_SELECT, MyFrame::OnSelectText) EVT_MENU(TEXT_ADD_SOME, MyFrame::OnAddText) EVT_MENU(TEXT_ADD_FREEZE, MyFrame::OnAddTextFreeze) + EVT_MENU(TEXT_ADD_LINE, MyFrame::OnAddTextLine) EVT_MENU(TEXT_MOVE_ENDTEXT, MyFrame::OnMoveToEndOfText) EVT_MENU(TEXT_MOVE_ENDENTRY, MyFrame::OnMoveToEndOfEntry) @@ -1333,10 +1357,11 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(TEXT_PAGE_DOWN, MyFrame::OnScrollPageDown) EVT_MENU(TEXT_PAGE_UP, MyFrame::OnScrollPageUp) - EVT_MENU(TEXT_GET_LINE, MyFrame::OnGetLine) - EVT_MENU(TEXT_GET_LINELENGTH, MyFrame::OnGetLineLength) + EVT_MENU(TEXT_GET_LINE, MyFrame::OnGetLine) + EVT_MENU(TEXT_GET_LINELENGTH, MyFrame::OnGetLineLength) EVT_MENU(TEXT_SET, MyFrame::OnSetText) + EVT_MENU(TEXT_CHANGE, MyFrame::OnChangeText) EVT_IDLE(MyFrame::OnIdle) END_EVENT_TABLE() @@ -1483,13 +1508,13 @@ void MyFrame::OnIdle( wxIdleEvent& event ) wxString msg; msg.Printf( #ifdef __WXMSW__ - _T("Focus: wxWindow = %p, HWND = %08x"), + _T("Focus: wxWindow = %p, HWND = %p"), #else _T("Focus: wxWindow = %p"), #endif s_windowFocus #ifdef __WXMSW__ - , (unsigned int) s_windowFocus->GetHWND() + , s_windowFocus->GetHWND() #endif ); @@ -1816,10 +1841,9 @@ void RichTextFrame::OnIdle(wxIdleEvent& WXUNUSED(event)) alignment = wxT("left-aligned"); else if (attr.GetAlignment() == wxTEXT_ALIGNMENT_JUSTIFIED) alignment = wxT("justified"); - msg.Printf(wxT("Facename: %s, wxColour(%d, %d, %d), %s"), - (const wxChar*) facename, + msg.Printf( "Facename: %s, wxColour(%d, %d, %d), %s", facename, attr.GetTextColour().Red(), attr.GetTextColour().Green(), attr.GetTextColour().Blue(), - (const wxChar*) alignment); + alignment ); if (attr.HasFont()) {