Added some missing wxTextCtrl functions: Undo, Redo, CanUndo, CanRedo,

CanCopy, CanCut, CanPaste, GetSelection, IsEditable.
Also added wxNotebook::SetTabSize (only implemented on wxMSW but necessary
when using just an icon).


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2054 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
1999-04-06 16:32:33 +00:00
parent 49d5d881d4
commit ca8b28f2ef
19 changed files with 522 additions and 27 deletions

View File

@@ -729,9 +729,87 @@ wxString wxTextCtrl::GetLineText(long lineNo) const
return wxString(wxBuffer);
}
/*
* Text item
*/
bool wxTextCtrl::CanCopy() const
{
// Can copy if there's a selection
long from, to;
GetSelection(& from, & to);
return (from != to) ;
}
bool wxTextCtrl::CanCut() const
{
// Can cut if there's a selection
long from, to;
GetSelection(& from, & to);
return (from != to) ;
}
bool wxTextCtrl::CanPaste() const
{
int dataFormat = 0; // 0 == any format
return (::SendMessage( (HWND) GetHWND(), EM_CANPASTE, (WPARAM) (UINT) dataFormat, 0) != 0);
}
// Undo/redo
void wxTextCtrl::Undo()
{
if (CanUndo())
{
::SendMessage((HWND) GetHWND(), EM_UNDO, 0, 0);
}
}
void wxTextCtrl::Redo()
{
if (CanRedo())
{
// Same as Undo, since Undo undoes the undo, i.e. a redo.
::SendMessage((HWND) GetHWND(), EM_UNDO, 0, 0);
}
}
bool wxTextCtrl::CanUndo() const
{
return (::SendMessage((HWND) GetHWND(), EM_CANUNDO, 0, 0) != 0);
}
bool wxTextCtrl::CanRedo() const
{
return (::SendMessage((HWND) GetHWND(), EM_CANUNDO, 0, 0) != 0);
}
// If the return values from and to are the same, there is no
// selection.
void wxTextCtrl::GetSelection(long* from, long* to) const
{
#if wxUSE_RICHEDIT
if (m_isRich)
{
CHARRANGE charRange;
::SendMessage((HWND) GetHWND(), EM_EXGETSEL, 0, (LPARAM) (CHARRANGE*) & charRange);
*from = charRange.cpMin;
*to = charRange.cpMax;
return;
}
#endif
DWORD dwStart, dwEnd;
WPARAM wParam = (WPARAM) (DWORD*) dwStart; // receives starting position
LPARAM lParam = (LPARAM) (DWORD*) dwEnd; // receives ending position
::SendMessage((HWND) GetHWND(), EM_GETSEL, wParam, lParam);
*from = dwStart;
*to = dwEnd;
}
bool wxTextCtrl::IsEditable() const
{
long style = ::GetWindowLong((HWND) GetHWND(), GWL_STYLE);
return ((style & ES_READONLY) == 0);
}
void wxTextCtrl::Command(wxCommandEvent & event)
{