// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-// ============================================================================
-// declarations
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// headers
-// ----------------------------------------------------------------------------
-#ifdef __GNUG__
- #pragma implementation "caret.cpp"
- #pragma interface "caret.cpp"
-#endif
-
// For compilers that support precompilation, includes "wx/wx.h".
#include <wx/wxprec.h>
MyCanvas( wxWindow *parent );
~MyCanvas();
- char& CharAt(int x, int y) { return *(m_text + x + m_xChars * y); }
+ wxChar& CharAt(int x, int y) { return *(m_text + x + m_xChars * y); }
// caret movement
void Home() { m_xCaret = 0; }
void OnChar( wxKeyEvent &event );
private:
- wxCaret m_caret;
wxFont m_font;
// the margin around the text (looks nicer)
int m_xChars, m_yChars;
// the text
- char *m_text;
+ wxChar *m_text;
DECLARE_DYNAMIC_CLASS(MyCanvas)
DECLARE_EVENT_TABLE()
wxDefaultPosition, wxDefaultSize,
wxSUNKEN_BORDER )
{
+ m_text = (wxChar *)NULL;
+
SetBackgroundColour(* wxWHITE);
m_font = *wxNORMAL_FONT;
m_heightChar = dc.GetCharHeight();
m_widthChar = dc.GetCharWidth();
- m_caret.Create( this, m_widthChar, m_heightChar );
+ wxCaret *caret = new wxCaret(this, m_widthChar, m_heightChar);
+ SetCaret(caret);
m_xCaret = m_yCaret =
m_xChars = m_yChars = 0;
m_xMargin = m_yMargin = 5;
- m_caret.Move(m_xMargin, m_yMargin);
- m_caret.Show();
-
- m_text = (char *)NULL;
+ caret->Move(m_xMargin, m_yMargin);
+ caret->Show();
}
MyCanvas::~MyCanvas()
m_yChars = 1;
free(m_text);
- m_text = (char *)calloc(m_xChars * m_yChars, sizeof(char));
+ m_text = (wxChar *)calloc(m_xChars * m_yChars, sizeof(wxChar));
- wxString msg;
- msg.Printf("Panel size is (%d, %d)", m_xChars, m_yChars);
+ wxFrame *frame = wxDynamicCast(GetParent(), wxFrame);
- ((wxFrame *)GetParent())->SetStatusText(msg, 1);
+ if ( frame && frame->GetStatusBar() )
+ {
+ wxString msg;
+ msg.Printf(_T("Panel size is (%d, %d)"), m_xChars, m_yChars);
+
+ frame->SetStatusText(msg, 1);
+ }
event.Skip();
}
for ( int x = 0; x < m_xChars; x++ )
{
- char ch = CharAt(x, y);
+ wxChar ch = CharAt(x, y);
if ( !ch )
- ch = ' ';
+ ch = _T(' ');
line += ch;
}
break;
default:
- if ( isprint(event.KeyCode()) )
+ if ( wxIsprint(event.KeyCode()) )
{
- CharAt(m_xCaret, m_yCaret) = (char)event.KeyCode();
+ CharAt(m_xCaret, m_yCaret) = (wxChar)event.KeyCode();
NextChar();
}
else
}
}
- wxLogStatus("Caret is at (%d, %d)", m_xCaret, m_yCaret);
+ wxLogStatus(_T("Caret is at (%d, %d)"), m_xCaret, m_yCaret);
- m_caret.Move(m_xMargin + m_xCaret * m_widthChar,
- m_yMargin + m_yCaret * m_heightChar);
+ GetCaret()->Move(m_xMargin + m_xCaret * m_widthChar,
+ m_yMargin + m_yCaret * m_heightChar);
Refresh();
}