exercise wxTextCtrl::GetRange
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@13473 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
3e482a6486
commit
64b54de8dd
@ -70,6 +70,18 @@ enum TextLines
|
|||||||
TextLines_Multi
|
TextLines_Multi
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef __WXMSW__
|
||||||
|
|
||||||
|
// textctrl kind values
|
||||||
|
enum TextKind
|
||||||
|
{
|
||||||
|
TextKind_Plain,
|
||||||
|
TextKind_Rich,
|
||||||
|
TextKind_Rich2
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // __WXMSW__
|
||||||
|
|
||||||
// default values for the controls
|
// default values for the controls
|
||||||
static const struct ControlValues
|
static const struct ControlValues
|
||||||
{
|
{
|
||||||
@ -77,12 +89,18 @@ static const struct ControlValues
|
|||||||
bool password;
|
bool password;
|
||||||
bool wraplines;
|
bool wraplines;
|
||||||
bool readonly;
|
bool readonly;
|
||||||
|
#ifdef __WXMSW__
|
||||||
|
TextKind textKind;
|
||||||
|
#endif // __WXMSW__
|
||||||
} DEFAULTS =
|
} DEFAULTS =
|
||||||
{
|
{
|
||||||
TextLines_Multi, // multiline
|
TextLines_Multi, // multiline
|
||||||
FALSE, // not password
|
FALSE, // not password
|
||||||
TRUE, // do wrap lines
|
TRUE, // do wrap lines
|
||||||
FALSE // not readonly
|
FALSE, // not readonly
|
||||||
|
#ifdef __WXMSW__
|
||||||
|
TextKind_Plain // plain EDIT control
|
||||||
|
#endif // __WXMSW__
|
||||||
};
|
};
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@ -156,6 +174,11 @@ protected:
|
|||||||
*m_chkWrapLines,
|
*m_chkWrapLines,
|
||||||
*m_chkReadonly;
|
*m_chkReadonly;
|
||||||
|
|
||||||
|
// under MSW we test rich edit controls as well here
|
||||||
|
#ifdef __WXMSW__
|
||||||
|
wxRadioBox *m_radioKind;
|
||||||
|
#endif // __WXMSW__
|
||||||
|
|
||||||
// the textctrl itself and the sizer it is in
|
// the textctrl itself and the sizer it is in
|
||||||
wxTextCtrl *m_text;
|
wxTextCtrl *m_text;
|
||||||
wxSizer *m_sizerText;
|
wxSizer *m_sizerText;
|
||||||
@ -167,7 +190,8 @@ protected:
|
|||||||
*m_textPosLast,
|
*m_textPosLast,
|
||||||
*m_textLineLast,
|
*m_textLineLast,
|
||||||
*m_textSelFrom,
|
*m_textSelFrom,
|
||||||
*m_textSelTo;
|
*m_textSelTo,
|
||||||
|
*m_textRange;
|
||||||
|
|
||||||
// and the data to show in them
|
// and the data to show in them
|
||||||
long m_posCur,
|
long m_posCur,
|
||||||
@ -226,6 +250,9 @@ TextWidgetsPage::TextWidgetsPage(wxNotebook *notebook, wxImageList *imaglist)
|
|||||||
imaglist->Add(wxBitmap(text_xpm));
|
imaglist->Add(wxBitmap(text_xpm));
|
||||||
|
|
||||||
// init everything
|
// init everything
|
||||||
|
#ifdef __WXMSW__
|
||||||
|
m_radioKind =
|
||||||
|
#endif // __WXMSW__
|
||||||
m_radioTextLines = (wxRadioBox *)NULL;
|
m_radioTextLines = (wxRadioBox *)NULL;
|
||||||
|
|
||||||
m_chkPassword =
|
m_chkPassword =
|
||||||
@ -239,7 +266,9 @@ TextWidgetsPage::TextWidgetsPage(wxNotebook *notebook, wxImageList *imaglist)
|
|||||||
m_textPosLast =
|
m_textPosLast =
|
||||||
m_textLineLast =
|
m_textLineLast =
|
||||||
m_textSelFrom =
|
m_textSelFrom =
|
||||||
m_textSelTo = (wxTextCtrl *)NULL;
|
m_textSelTo =
|
||||||
|
m_textRange = (wxTextCtrl *)NULL;
|
||||||
|
|
||||||
m_sizerText = (wxSizer *)NULL;
|
m_sizerText = (wxSizer *)NULL;
|
||||||
|
|
||||||
m_posCur =
|
m_posCur =
|
||||||
@ -275,7 +304,25 @@ TextWidgetsPage::TextWidgetsPage(wxNotebook *notebook, wxImageList *imaglist)
|
|||||||
sizerLeft, _T("&Read-only mode")
|
sizerLeft, _T("&Read-only mode")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
#ifdef __WXMSW__
|
||||||
|
static const wxString kinds[] =
|
||||||
|
{
|
||||||
|
_T("plain edit"),
|
||||||
|
_T("rich edit"),
|
||||||
|
_T("rich edit 2.0"),
|
||||||
|
};
|
||||||
|
|
||||||
|
m_radioKind = new wxRadioBox(this, -1, _T("Control &kind"),
|
||||||
|
wxDefaultPosition, wxDefaultSize,
|
||||||
|
WXSIZEOF(kinds), kinds,
|
||||||
|
1, wxRA_SPECIFY_COLS);
|
||||||
|
|
||||||
|
sizerLeft->Add(5, 5, 0, wxGROW | wxALL, 5); // spacer
|
||||||
|
sizerLeft->Add(m_radioKind, 0, wxGROW | wxALL, 5);
|
||||||
|
#endif // __WXMSW__
|
||||||
|
|
||||||
wxButton *btn = new wxButton(this, TextPage_Reset, _T("&Reset"));
|
wxButton *btn = new wxButton(this, TextPage_Reset, _T("&Reset"));
|
||||||
|
sizerLeft->Add(5, 5, 0, wxGROW | wxALL, 5); // spacer
|
||||||
sizerLeft->Add(btn, 0, wxALIGN_CENTRE_HORIZONTAL | wxALL, 15);
|
sizerLeft->Add(btn, 0, wxALIGN_CENTRE_HORIZONTAL | wxALL, 15);
|
||||||
|
|
||||||
// middle pane
|
// middle pane
|
||||||
@ -352,6 +399,20 @@ TextWidgetsPage::TextWidgetsPage(wxNotebook *notebook, wxImageList *imaglist)
|
|||||||
),
|
),
|
||||||
0, wxALL, 5
|
0, wxALL, 5
|
||||||
);
|
);
|
||||||
|
|
||||||
|
m_textRange = new wxTextCtrl(this, -1, _T(""),
|
||||||
|
wxDefaultPosition, wxDefaultSize,
|
||||||
|
wxTE_READONLY);
|
||||||
|
sizerMiddleDown->Add
|
||||||
|
(
|
||||||
|
CreateTextWithLabelSizer
|
||||||
|
(
|
||||||
|
_T("Range 10..20:"),
|
||||||
|
m_textRange
|
||||||
|
),
|
||||||
|
0, wxALL, 5
|
||||||
|
);
|
||||||
|
|
||||||
wxSizer *sizerMiddle = new wxBoxSizer(wxVERTICAL);
|
wxSizer *sizerMiddle = new wxBoxSizer(wxVERTICAL);
|
||||||
sizerMiddle->Add(sizerMiddleUp, 0, wxGROW);
|
sizerMiddle->Add(sizerMiddleUp, 0, wxGROW);
|
||||||
sizerMiddle->Add(sizerMiddleDown, 1, wxGROW | wxTOP, 5);
|
sizerMiddle->Add(sizerMiddleDown, 1, wxGROW | wxTOP, 5);
|
||||||
@ -428,6 +489,9 @@ void TextWidgetsPage::Reset()
|
|||||||
m_chkPassword->SetValue(DEFAULTS.password);
|
m_chkPassword->SetValue(DEFAULTS.password);
|
||||||
m_chkWrapLines->SetValue(DEFAULTS.wraplines);
|
m_chkWrapLines->SetValue(DEFAULTS.wraplines);
|
||||||
m_chkReadonly->SetValue(DEFAULTS.readonly);
|
m_chkReadonly->SetValue(DEFAULTS.readonly);
|
||||||
|
#ifdef __WXMSW__
|
||||||
|
m_radioKind->SetSelection(DEFAULTS.textKind);
|
||||||
|
#endif // __WXMSW__
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextWidgetsPage::CreateText()
|
void TextWidgetsPage::CreateText()
|
||||||
@ -436,7 +500,7 @@ void TextWidgetsPage::CreateText()
|
|||||||
switch ( m_radioTextLines->GetSelection() )
|
switch ( m_radioTextLines->GetSelection() )
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
wxFAIL_MSG( _T("unexpected radio box selection") );
|
wxFAIL_MSG( _T("unexpected lines radio box selection") );
|
||||||
|
|
||||||
case TextLines_Single:
|
case TextLines_Single:
|
||||||
break;
|
break;
|
||||||
@ -454,6 +518,25 @@ void TextWidgetsPage::CreateText()
|
|||||||
if ( !m_chkWrapLines->GetValue() )
|
if ( !m_chkWrapLines->GetValue() )
|
||||||
flags |= wxHSCROLL;
|
flags |= wxHSCROLL;
|
||||||
|
|
||||||
|
#ifdef __WXMSW__
|
||||||
|
switch ( m_radioKind->GetSelection() )
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
wxFAIL_MSG( _T("unexpected kind radio box selection") );
|
||||||
|
|
||||||
|
case TextKind_Plain:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TextKind_Rich:
|
||||||
|
flags |= wxTE_RICH;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TextKind_Rich2:
|
||||||
|
flags |= wxTE_RICH2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif // __WXMSW__
|
||||||
|
|
||||||
wxString valueOld;
|
wxString valueOld;
|
||||||
if ( m_text )
|
if ( m_text )
|
||||||
{
|
{
|
||||||
@ -543,6 +626,11 @@ void TextWidgetsPage::OnIdle(wxIdleEvent& WXUNUSED(event))
|
|||||||
m_selTo = selTo;
|
m_selTo = selTo;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( m_textRange )
|
||||||
|
{
|
||||||
|
m_textRange->SetValue(m_text->GetRange(10, 20));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextWidgetsPage::OnButtonReset(wxCommandEvent& WXUNUSED(event))
|
void TextWidgetsPage::OnButtonReset(wxCommandEvent& WXUNUSED(event))
|
||||||
@ -554,20 +642,30 @@ void TextWidgetsPage::OnButtonReset(wxCommandEvent& WXUNUSED(event))
|
|||||||
|
|
||||||
void TextWidgetsPage::OnButtonSet(wxCommandEvent& WXUNUSED(event))
|
void TextWidgetsPage::OnButtonSet(wxCommandEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
m_text->SetValue(_T("Yellow submarine"));
|
m_text->SetValue(m_text->GetWindowStyle() & wxTE_MULTILINE
|
||||||
|
? _T("Here,\nthere and\neverywhere")
|
||||||
|
: _T("Yellow submarine"));
|
||||||
|
|
||||||
m_text->SetFocus();
|
m_text->SetFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextWidgetsPage::OnButtonAdd(wxCommandEvent& WXUNUSED(event))
|
void TextWidgetsPage::OnButtonAdd(wxCommandEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
m_text->AppendText(_T("here, there and everywhere"));
|
if ( m_text->GetWindowStyle() & wxTE_MULTILINE )
|
||||||
m_text->SetFocus();
|
{
|
||||||
|
m_text->AppendText(_T("We all live in a\n"));
|
||||||
|
}
|
||||||
|
|
||||||
|
m_text->AppendText(_T("Yellow submarine"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextWidgetsPage::OnButtonInsert(wxCommandEvent& WXUNUSED(event))
|
void TextWidgetsPage::OnButtonInsert(wxCommandEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
m_text->WriteText(_T("is there anybody going to listen to my story"));
|
m_text->WriteText(_T("Is there anybody going to listen to my story"));
|
||||||
m_text->SetFocus();
|
if ( m_text->GetWindowStyle() & wxTE_MULTILINE )
|
||||||
|
{
|
||||||
|
m_text->WriteText(_T("\nall about the girl who came to stay"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextWidgetsPage::OnButtonClear(wxCommandEvent& WXUNUSED(event))
|
void TextWidgetsPage::OnButtonClear(wxCommandEvent& WXUNUSED(event))
|
||||||
@ -625,6 +723,9 @@ void TextWidgetsPage::OnUpdateUIPasswordCheckbox(wxUpdateUIEvent& event)
|
|||||||
void TextWidgetsPage::OnUpdateUIResetButton(wxUpdateUIEvent& event)
|
void TextWidgetsPage::OnUpdateUIResetButton(wxUpdateUIEvent& event)
|
||||||
{
|
{
|
||||||
event.Enable( (m_radioTextLines->GetSelection() != DEFAULTS.textLines) ||
|
event.Enable( (m_radioTextLines->GetSelection() != DEFAULTS.textLines) ||
|
||||||
|
#ifdef __WXMSW__
|
||||||
|
(m_radioKind->GetSelection() != DEFAULTS.textKind) ||
|
||||||
|
#endif // __WXMSW__
|
||||||
(m_chkReadonly->GetValue() != DEFAULTS.readonly) ||
|
(m_chkReadonly->GetValue() != DEFAULTS.readonly) ||
|
||||||
(m_chkPassword->GetValue() != DEFAULTS.password) ||
|
(m_chkPassword->GetValue() != DEFAULTS.password) ||
|
||||||
(m_chkWrapLines->GetValue() != DEFAULTS.wraplines) );
|
(m_chkWrapLines->GetValue() != DEFAULTS.wraplines) );
|
||||||
|
Loading…
Reference in New Issue
Block a user