X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b87c90c18c92848ad8eddd9eadc30c2e80a7ea11..c663fbea6851207b4e0ac3e362868c23b1494a46:/samples/caret/caret.cpp diff --git a/samples/caret/caret.cpp b/samples/caret/caret.cpp index f023d9e6f8..9180908c65 100644 --- a/samples/caret/caret.cpp +++ b/samples/caret/caret.cpp @@ -20,17 +20,17 @@ // need because it includes almost all Show(TRUE); @@ -201,16 +208,17 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) // create a menu bar wxMenu *menuFile = new wxMenu; - menuFile->Append(Caret_SetBlinkTime, "&Blink time...\tCtrl-B"); - menuFile->Append(Caret_Move, "&Move caret\tCtrl-C"); + menuFile->Append(Caret_SetBlinkTime, _T("&Blink time...\tCtrl-B")); + menuFile->Append(Caret_SetFontSize, _T("&Font size...\tCtrl-S")); + menuFile->Append(Caret_Move, _T("&Move caret\tCtrl-C")); menuFile->AppendSeparator(); - menuFile->Append(Caret_About, "&About...\tCtrl-A", "Show about dialog"); + menuFile->Append(Caret_About, _T("&About...\tCtrl-A"), _T("Show about dialog")); menuFile->AppendSeparator(); - menuFile->Append(Caret_Quit, "E&xit\tAlt-X", "Quit this program"); + menuFile->Append(Caret_Quit, _T("E&xit\tAlt-X"), _T("Quit this program")); // now append the freshly created menu to the menu bar... wxMenuBar *menuBar = new wxMenuBar; - menuBar->Append(menuFile, "&File"); + menuBar->Append(menuFile, _T("&File")); // ... and attach this menu bar to the frame SetMenuBar(menuBar); @@ -219,7 +227,7 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) // create a status bar just for fun (by default with 1 pane only) CreateStatusBar(2); - SetStatusText("Welcome to wxWindows!"); + SetStatusText(_T("Welcome to wxWindows!")); } @@ -260,6 +268,23 @@ void MyFrame::OnSetBlinkTime(wxCommandEvent& WXUNUSED(event)) } } +void MyFrame::OnSetFontSize(wxCommandEvent& WXUNUSED(event)) +{ + long fontSize = wxGetNumberFromUser + ( + _T("The font size also determines the caret size so\nthis demonstrates resizing the caret."), + _T("Font size (in points):"), + _T("wxCaret sample"), + 12, 1, 100, + this + ); + + if ( fontSize != -1 ) + { + m_canvas->SetFontSize((int)fontSize); + } +} + // ---------------------------------------------------------------------------- // MyCanvas // ---------------------------------------------------------------------------- @@ -281,8 +306,7 @@ MyCanvas::MyCanvas( wxWindow *parent ) SetBackgroundColour(*wxWHITE); - m_font = wxFont(12, wxFONTFAMILY_TELETYPE, - wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL); + SetFontSize(12); m_xCaret = m_yCaret = m_xChars = m_yChars = 0; @@ -299,16 +323,30 @@ MyCanvas::~MyCanvas() void MyCanvas::CreateCaret() { + wxCaret *caret = new wxCaret(this, m_widthChar, m_heightChar); + SetCaret(caret); + + caret->Move(m_xMargin, m_yMargin); + caret->Show(); +} + +void MyCanvas::SetFontSize(int fontSize) +{ + m_font = wxFont(fontSize, wxFONTFAMILY_TELETYPE, + wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL); + wxClientDC dc(this); dc.SetFont(m_font); m_heightChar = dc.GetCharHeight(); m_widthChar = dc.GetCharWidth(); - wxCaret *caret = new wxCaret(this, m_widthChar, m_heightChar); - SetCaret(caret); + wxCaret *caret = GetCaret(); + if ( caret ) + { + caret->SetSize(m_widthChar, m_heightChar); - caret->Move(m_xMargin, m_yMargin); - caret->Show(); + ChangeSize(); + } } void MyCanvas::MoveCaret(int x, int y) @@ -327,10 +365,18 @@ void MyCanvas::DoMoveCaret() m_yMargin + m_yCaret * m_heightChar); } -void MyCanvas::OnSize( wxSizeEvent &event ) +void MyCanvas::OnSize(wxSizeEvent& event) { - m_xChars = (event.GetSize().x - 2*m_xMargin) / m_widthChar; - m_yChars = (event.GetSize().y - 2*m_yMargin) / m_heightChar; + ChangeSize(); + + event.Skip(); +} + +void MyCanvas::ChangeSize() +{ + wxSize size = GetClientSize(); + m_xChars = (size.x - 2*m_xMargin) / m_widthChar; + m_yChars = (size.y - 2*m_yMargin) / m_heightChar; if ( !m_xChars ) m_xChars = 1; if ( !m_yChars ) @@ -348,8 +394,6 @@ void MyCanvas::OnSize( wxSizeEvent &event ) frame->SetStatusText(msg, 1); } - - event.Skip(); } // NB: this method is horrible inefficient especially because the caret @@ -383,7 +427,7 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) ) void MyCanvas::OnChar( wxKeyEvent &event ) { - switch ( event.KeyCode() ) + switch ( event.GetKeyCode() ) { case WXK_LEFT: PrevChar(); @@ -415,9 +459,9 @@ void MyCanvas::OnChar( wxKeyEvent &event ) break; default: - if ( !event.AltDown() && wxIsprint(event.KeyCode()) ) + if ( !event.AltDown() && wxIsprint(event.GetKeyCode()) ) { - wxChar ch = (wxChar)event.KeyCode(); + wxChar ch = (wxChar)event.GetKeyCode(); CharAt(m_xCaret, m_yCaret) = ch; wxCaretSuspend cs(this);