X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e66ad5c68db10fd4f7d8dd043dcbeba98f2f17f3..f3314fbcb44e8840cd3353a7f8e22207bf26c03d:/samples/text/text.cpp diff --git a/samples/text/text.cpp b/samples/text/text.cpp index 19c5af35a5..09e8e6013d 100644 --- a/samples/text/text.cpp +++ b/samples/text/text.cpp @@ -28,6 +28,10 @@ #include "wx/clipbrd.h" #endif +#if wxUSE_FILE + #include "wx/file.h" +#endif + #if wxUSE_TOOLTIPS #include "wx/tooltip.h" #endif @@ -96,6 +100,8 @@ public: MyTextCtrl *m_multitext; MyTextCtrl *m_horizontal; + MyTextCtrl *m_textrich; + wxTextCtrl *m_log; private: @@ -127,6 +133,7 @@ public: { m_panel->DoMoveToEndOfEntry(); } void OnLogClear(wxCommandEvent& event); + void OnFileSave(wxCommandEvent& event); void OnFileLoad(wxCommandEvent& event); void OnIdle( wxIdleEvent& event ); @@ -152,6 +159,7 @@ enum TEXT_QUIT = 100, TEXT_ABOUT, TEXT_LOAD, + TEXT_SAVE, TEXT_CLEAR, // clipboard menu @@ -171,12 +179,14 @@ bool MyApp::OnInit() { // Create the main frame window MyFrame *frame = new MyFrame((wxFrame *) NULL, - "Text wxWindows sample", 50, 50, 640, 420); + "Text wxWindows sample", 50, 50, 660, 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_SAVE, "&Save file\tCtrl-S", + "Save the text control contents to file"); file_menu->Append(TEXT_LOAD, "&Load file\tCtrl-O", "Load the sample file into text control"); file_menu->AppendSeparator(); @@ -340,13 +350,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: + default: { if ( wxIsprint((int)keycode) ) key.Printf( _T("'%c'") , (char)keycode); else - key.Printf( _T("unknown (%ld)"), keycode); - } + key.Printf( _T("unknown (%ld)"), keycode); + } } } @@ -417,24 +427,30 @@ void MyTextCtrl::OnKeyDown(wxKeyEvent& event) // go to position 10 SetInsertionPoint(10); break; - + case WXK_F4: - if (!m_hasCapture) - { + if (!m_hasCapture) + { wxLogDebug( wxT("Now capturing mouse and events.") ); - m_hasCapture = TRUE; - CaptureMouse(); - } - else - { + m_hasCapture = TRUE; + CaptureMouse(); + } + else + { wxLogDebug( wxT("Stopped capturing mouse and events.") ); - m_hasCapture = TRUE; - ReleaseMouse(); - } + m_hasCapture = TRUE; + ReleaseMouse(); + } break; - } - LogEvent( _("Key down"), event); + case WXK_F5: + // insert a blank line + WriteText("\n"); + break; + + default: + LogEvent( _("Key down"), event); + } event.Skip(); } @@ -492,6 +508,11 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) m_enter = new MyTextCtrl( this, -1, "Multiline, allow processing.", wxPoint(180,170), wxSize(240,70), wxTE_MULTILINE); + + m_textrich = new MyTextCtrl(this, -1, "Allows more than 30Kb of text\n" + "(even under broken Win9x)", + wxPoint(450, 10), wxSize(200, 230), + wxTE_RICH | wxTE_MULTILINE); } void MyPanel::OnSize( wxSizeEvent &event ) @@ -547,6 +568,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()) @@ -604,6 +630,7 @@ void MyPanel::DoMoveToEndOfEntry() BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(TEXT_QUIT, MyFrame::OnQuit) EVT_MENU(TEXT_ABOUT, MyFrame::OnAbout) + EVT_MENU(TEXT_SAVE, MyFrame::OnFileSave) EVT_MENU(TEXT_LOAD, MyFrame::OnFileLoad) EVT_MENU(TEXT_CLEAR, MyFrame::OnLogClear) @@ -638,9 +665,6 @@ void MyFrame::OnQuit (wxCommandEvent& WXUNUSED(event) ) void MyFrame::OnAbout( wxCommandEvent& WXUNUSED(event) ) { - SetSize(40, 40, 200, 200); - return; - wxBeginBusyCursor(); wxMessageDialog dialog(this, @@ -696,9 +720,26 @@ void MyFrame::OnLogClear(wxCommandEvent& WXUNUSED(event)) m_panel->m_log->Clear(); } +void MyFrame::OnFileSave(wxCommandEvent& event) +{ + if ( m_panel->m_textrich->SaveFile("dummy.txt") ) + { +#if wxUSE_FILE + // verify that the fil length is correct (it wasn't under Win95) + wxFile file("dummy.txt"); + wxLogStatus(this, _T("Successfully saved file " + "(text len = %ld, file size = %ld)"), + m_panel->m_textrich->GetValue().length(), + file.Length()); +#endif + } + else + wxLogStatus(this, _T("Couldn't save the file")); +} + void MyFrame::OnFileLoad(wxCommandEvent& event) { - if ( m_panel->m_multitext->LoadFile("text.rc") ) + if ( m_panel->m_textrich->LoadFile("dummy.txt") ) wxLogStatus(this, _T("Successfully loaded file")); else wxLogStatus(this, _T("Couldn't load the file"));