#include "wx/numdlg.h"
#include "wx/tokenzr.h"
-#ifndef __WXMSW__
+#ifndef wxHAS_IMAGES_IN_RESOURCES
#include "../sample.xpm"
#endif
void DoSelectText();
void DoMoveToEndOfText();
void DoMoveToEndOfEntry();
+ void DoGetWindowCoordinates();
// return true if currently text control has any selection
bool HasSelection() const
void OnMoveToEndOfText( wxCommandEvent& WXUNUSED(event) )
{ m_panel->DoMoveToEndOfText(); }
+
+ void OnGetWindowCoordinates( wxCommandEvent& WXUNUSED(event) )
+ { m_panel->DoGetWindowCoordinates(); }
+
void OnMoveToEndOfEntry( wxCommandEvent& WXUNUSED(event) )
{ m_panel->DoMoveToEndOfEntry(); }
TEXT_ADD_FREEZE,
TEXT_ADD_LINE,
TEXT_MOVE_ENDTEXT,
+ TEXT_GET_WINDOW_COORD,
TEXT_MOVE_ENDENTRY,
TEXT_SET_EDITABLE,
TEXT_SET_ENABLED,
menuText->Append(TEXT_LINE_UP, wxT("Scroll text one line up"));
menuText->Append(TEXT_PAGE_DOWN, wxT("Scroll text one page down"));
menuText->Append(TEXT_PAGE_UP, wxT("Scroll text one page up"));
+ menuText->Append(TEXT_GET_WINDOW_COORD, wxT("Get window coordinates"));
menuText->AppendSeparator();
menuText->Append(TEXT_GET_LINE, wxT("Get the text of a line of the tabbed multiline"));
menuText->Append(TEXT_GET_LINELENGTH, wxT("Get the length of a line of the tabbed multiline"));
m_password = new MyTextCtrl( this, wxID_ANY, wxT(""),
wxPoint(10,50), wxSize(140,wxDefaultCoord), wxTE_PASSWORD );
- m_readonly = new MyTextCtrl( this, wxID_ANY, wxT("Read only"),
- wxPoint(10,90), wxSize(140,wxDefaultCoord), wxTE_READONLY );
-
- m_limited = new MyTextCtrl(this, wxID_ANY, wxT("Max 8 ch"),
- wxPoint(10, 130), wxSize(140, wxDefaultCoord));
+ m_limited = new MyTextCtrl(this, wxID_ANY, "",
+ wxPoint(10, 90), wxDefaultSize);
+ m_limited->SetHint("Max 8 ch");
m_limited->SetMaxLength(8);
+ wxSize size2 = m_limited->GetSizeFromTextSize(m_limited->GetTextExtent("WWWWWWWW"));
+ m_limited->SetSizeHints(size2, size2);
// multi line text controls
+ wxString string3L("Read only\nMultiline\nFitted size");
+ m_readonly = new MyTextCtrl( this, wxID_ANY, string3L,
+ wxPoint(10, 120), wxDefaultSize, wxTE_MULTILINE | wxTE_READONLY );
+ wxWindowDC dc(m_readonly);
+ size2 = m_readonly->GetSizeFromTextSize(dc.GetMultiLineTextExtent(string3L));
+ m_readonly->SetMinSize(size2);
+
m_horizontal = new MyTextCtrl( this, wxID_ANY, wxT("Multiline text control with a horizontal scrollbar.\n"),
wxPoint(10,170), wxSize(140,70), wxTE_MULTILINE | wxHSCROLL);
#endif
m_tab = new MyTextCtrl( this, 100, wxT("Multiline, allow <TAB> processing."),
- wxPoint(180,90), wxSize(200,70), wxTE_MULTILINE | wxTE_PROCESS_TAB );
+ wxPoint(180,90), wxDefaultSize, wxTE_MULTILINE | wxTE_PROCESS_TAB );
m_tab->SetClientData((void *)wxT("tab"));
m_enter = new MyTextCtrl( this, 100, wxT("Multiline, allow <ENTER> processing."),
wxBoxSizer *column1 = new wxBoxSizer(wxVERTICAL);
column1->Add( m_text, 0, wxALL | wxEXPAND, 10 );
column1->Add( m_password, 0, wxALL | wxEXPAND, 10 );
- column1->Add( m_readonly, 0, wxALL | wxEXPAND, 10 );
- column1->Add( m_limited, 0, wxALL | wxEXPAND, 10 );
+ column1->Add( m_readonly, 0, wxALL, 10 );
+ column1->Add( m_limited, 0, wxALL, 10 );
column1->Add( m_horizontal, 1, wxALL | wxEXPAND, 10 );
wxBoxSizer *column2 = new wxBoxSizer(wxVERTICAL);
column2->Add( m_multitext, 1, wxALL | wxEXPAND, 10 );
- column2->Add( m_tab, 1, wxALL | wxEXPAND, 10 );
+ column2->Add( m_tab, 0, wxALL | wxEXPAND, 10 );
column2->Add( m_enter, 1, wxALL | wxEXPAND, 10 );
wxBoxSizer *row1 = new wxBoxSizer(wxHORIZONTAL);
m_multitext->SetFocus();
}
+void MyPanel::DoGetWindowCoordinates()
+{
+ wxTextCtrl * const text = GetFocusedText();
+
+ const wxPoint pt0 = text->PositionToCoords(0);
+ const wxPoint ptCur = text->PositionToCoords(text->GetInsertionPoint());
+ *m_log << "Current position coordinates: "
+ "(" << ptCur.x << ", " << ptCur.y << "), "
+ "first position coordinates: "
+ "(" << pt0.x << ", " << pt0.y << ")\n";
+}
+
void MyPanel::DoMoveToEndOfEntry()
{
m_text->SetInsertionPointEnd();
EVT_MENU(TEXT_ADD_FREEZE, MyFrame::OnAddTextFreeze)
EVT_MENU(TEXT_ADD_LINE, MyFrame::OnAddTextLine)
EVT_MENU(TEXT_MOVE_ENDTEXT, MyFrame::OnMoveToEndOfText)
+ EVT_MENU(TEXT_GET_WINDOW_COORD, MyFrame::OnGetWindowCoordinates)
EVT_MENU(TEXT_MOVE_ENDENTRY, MyFrame::OnMoveToEndOfEntry)
EVT_MENU(TEXT_SET_EDITABLE, MyFrame::OnSetEditable)