2008-03-08 08:52:38 -05:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Name: control.h
|
2008-03-10 11:24:38 -04:00
|
|
|
// Purpose: interface of wxControl
|
2008-03-08 08:52:38 -05:00
|
|
|
// Author: wxWidgets team
|
|
|
|
// RCS-ID: $Id$
|
2010-07-13 09:29:13 -04:00
|
|
|
// Licence: wxWindows licence
|
2008-03-08 08:52:38 -05:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
2009-02-08 07:56:14 -05:00
|
|
|
/**
|
|
|
|
Flags used by wxControl::Ellipsize function.
|
|
|
|
*/
|
|
|
|
enum wxEllipsizeFlags
|
|
|
|
{
|
2009-10-16 17:32:51 -04:00
|
|
|
/// No special flags.
|
|
|
|
wxELLIPSIZE_FLAGS_NONE = 0,
|
|
|
|
|
|
|
|
/**
|
|
|
|
Take mnemonics into account when calculating the text width.
|
|
|
|
|
|
|
|
With this flag when calculating the size of the passed string,
|
|
|
|
mnemonics characters (see wxControl::SetLabel) will be automatically
|
|
|
|
reduced to a single character. This leads to correct calculations only
|
|
|
|
if the string passed to Ellipsize() will be used with
|
|
|
|
wxControl::SetLabel. If you don't want ampersand to be interpreted as
|
|
|
|
mnemonics (e.g. because you use wxControl::SetLabelText) then don't use
|
|
|
|
this flag.
|
|
|
|
*/
|
|
|
|
wxELLIPSIZE_FLAGS_PROCESS_MNEMONICS = 1,
|
|
|
|
|
|
|
|
/**
|
|
|
|
Expand tabs in spaces when calculating the text width.
|
|
|
|
|
|
|
|
This flag tells wxControl::Ellipsize() to calculate the width of tab
|
|
|
|
characters @c '\\t' as 6 spaces.
|
|
|
|
*/
|
|
|
|
wxELLIPSIZE_FLAGS_EXPAND_TABS = 2,
|
2009-02-08 07:56:14 -05:00
|
|
|
|
|
|
|
/// The default flags for wxControl::Ellipsize.
|
2009-10-16 17:32:51 -04:00
|
|
|
wxELLIPSIZE_FLAGS_DEFAULT = wxELLIPSIZE_FLAGS_PROCESS_MNEMONICS|
|
|
|
|
wxELLIPSIZE_FLAGS_EXPAND_TABS
|
2009-02-08 07:56:14 -05:00
|
|
|
};
|
|
|
|
|
|
|
|
|
2008-12-28 16:16:00 -05:00
|
|
|
/**
|
|
|
|
The different ellipsization modes supported by the
|
|
|
|
wxControl::Ellipsize function.
|
|
|
|
*/
|
|
|
|
enum wxEllipsizeMode
|
|
|
|
{
|
2009-10-16 17:35:26 -04:00
|
|
|
/// Don't ellipsize the text at all. @since 2.9.1
|
|
|
|
wxELLIPSIZE_NONE,
|
|
|
|
|
2009-02-08 07:56:14 -05:00
|
|
|
/// Put the ellipsis at the start of the string, if the string needs ellipsization.
|
2008-12-28 16:16:00 -05:00
|
|
|
wxELLIPSIZE_START,
|
2009-02-08 07:56:14 -05:00
|
|
|
|
|
|
|
/// Put the ellipsis in the middle of the string, if the string needs ellipsization.
|
2008-12-28 16:16:00 -05:00
|
|
|
wxELLIPSIZE_MIDDLE,
|
2009-02-08 07:56:14 -05:00
|
|
|
|
|
|
|
/// Put the ellipsis at the end of the string, if the string needs ellipsization.
|
2008-12-28 16:16:00 -05:00
|
|
|
wxELLIPSIZE_END
|
|
|
|
};
|
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
/**
|
|
|
|
@class wxControl
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-04-01 09:59:28 -04:00
|
|
|
This is the base class for a control or "widget".
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
A control is generally a small window which processes user input and/or
|
|
|
|
displays one or more item of data.
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2009-02-18 12:58:51 -05:00
|
|
|
@beginEventEmissionTable{wxClipboardTextEvent}
|
|
|
|
@event{EVT_TEXT_COPY(id, func)}
|
|
|
|
Some or all of the controls content was copied to the clipboard.
|
|
|
|
@event{EVT_TEXT_CUT(id, func)}
|
|
|
|
Some or all of the controls content was cut (i.e. copied and
|
|
|
|
deleted).
|
|
|
|
@event{EVT_TEXT_PASTE(id, func)}
|
|
|
|
Clipboard content was pasted into the control.
|
|
|
|
@endEventTable
|
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
@library{wxcore}
|
|
|
|
@category{ctrl}
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-10 11:24:38 -04:00
|
|
|
@see wxValidator
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
class wxControl : public wxWindow
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
/**
|
2008-04-12 19:27:36 -04:00
|
|
|
Simulates the effect of the user issuing a command to the item.
|
|
|
|
|
|
|
|
@see wxCommandEvent
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-09-22 15:01:17 -04:00
|
|
|
virtual void Command(wxCommandEvent& event);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
2008-12-28 16:16:00 -05:00
|
|
|
/**
|
2010-03-21 17:39:15 -04:00
|
|
|
Returns the control's label, as it was passed to SetLabel().
|
2008-12-28 16:16:00 -05:00
|
|
|
|
2010-03-21 17:39:15 -04:00
|
|
|
Note that the returned string may contains mnemonics ("&" characters) if they were
|
|
|
|
passed to the SetLabel() function; use GetLabelText() if they are undesired.
|
2008-04-12 19:27:36 -04:00
|
|
|
|
2010-03-21 17:39:15 -04:00
|
|
|
Also note that the returned string is always the string which was passed to
|
|
|
|
SetLabel() but may be different from the string passed to SetLabelText()
|
|
|
|
(since this last one escapes mnemonic characters).
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-09 12:24:26 -04:00
|
|
|
wxString GetLabel() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
2008-04-12 19:27:36 -04:00
|
|
|
Returns the control's label without mnemonics.
|
2010-03-21 17:39:15 -04:00
|
|
|
|
|
|
|
Note that because of the stripping of the mnemonics the returned string may differ
|
2010-03-29 17:31:27 -04:00
|
|
|
from the string which was passed to SetLabel() but should always be the same which
|
|
|
|
was passed to SetLabelText().
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-09-24 19:29:43 -04:00
|
|
|
wxString GetLabelText() const;
|
2008-04-12 19:27:36 -04:00
|
|
|
|
2010-03-21 17:39:15 -04:00
|
|
|
/**
|
|
|
|
Sets the control's label.
|
|
|
|
|
|
|
|
All "&" characters in the @a label are special and indicate that the
|
|
|
|
following character is a @e mnemonic for this control and can be used to
|
|
|
|
activate it from the keyboard (typically by using @e Alt key in
|
|
|
|
combination with it). To insert a literal ampersand character, you need
|
|
|
|
to double it, i.e. use use "&&". If this behaviour is undesirable, use
|
|
|
|
SetLabelText() instead.
|
|
|
|
*/
|
|
|
|
void SetLabel(const wxString& label);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Sets the control's label to exactly the given string.
|
|
|
|
|
|
|
|
Unlike SetLabel(), this function shows exactly the @a text passed to it
|
|
|
|
in the control, without interpreting ampersands in it in any way.
|
|
|
|
Notice that it means that the control can't have any mnemonic defined
|
|
|
|
for it using this function.
|
|
|
|
|
|
|
|
@see EscapeMnemonics()
|
|
|
|
*/
|
|
|
|
void SetLabelText(const wxString& text);
|
|
|
|
|
|
|
|
|
|
|
|
public: // static functions
|
|
|
|
|
2008-04-12 19:27:36 -04:00
|
|
|
/**
|
2008-12-28 14:24:13 -05:00
|
|
|
Returns the given @a label string without mnemonics ("&" characters).
|
2008-04-12 19:27:36 -04:00
|
|
|
*/
|
|
|
|
static wxString GetLabelText(const wxString& label);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
2008-12-28 14:24:13 -05:00
|
|
|
/**
|
2010-03-21 17:39:15 -04:00
|
|
|
Returns the given @a str string without mnemonics ("&" characters).
|
|
|
|
|
|
|
|
@note This function is identic to GetLabelText() and is provided both for symmetry
|
|
|
|
with the wxStaticText::RemoveMarkup() function and to allow to write more
|
|
|
|
readable code (since this function has a more descriptive name respect GetLabelText()).
|
2008-12-28 14:24:13 -05:00
|
|
|
*/
|
|
|
|
static wxString RemoveMnemonics(const wxString& str);
|
|
|
|
|
2008-12-31 09:14:07 -05:00
|
|
|
/**
|
2010-03-21 17:39:15 -04:00
|
|
|
Escapes the special mnemonics characters ("&") in the given string.
|
2008-12-31 09:14:07 -05:00
|
|
|
|
|
|
|
This function can be helpful if you need to set the controls label to a
|
|
|
|
user-provided string. If the string contains ampersands, they wouldn't
|
|
|
|
appear on the display but be used instead to indicate that the
|
|
|
|
character following the first of them can be used as a control mnemonic.
|
|
|
|
While this can sometimes be desirable (e.g. to allow the user to
|
|
|
|
configure mnemonics of the controls), more often you will want to use
|
|
|
|
this function before passing a user-defined string to SetLabel().
|
|
|
|
Alternatively, if the label is entirely user-defined, you can just call
|
|
|
|
SetLabelText() directly -- but this function must be used if the label
|
|
|
|
is a combination of a part defined by program containing the control
|
|
|
|
mnemonics and a user-defined part.
|
|
|
|
|
|
|
|
@param text
|
|
|
|
The string such as it should appear on the display.
|
|
|
|
@return
|
|
|
|
The same string with the ampersands in it doubled.
|
|
|
|
*/
|
|
|
|
static wxString EscapeMnemonics(const wxString& text);
|
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
/**
|
2010-03-21 17:39:15 -04:00
|
|
|
Replaces parts of the @a label string with ellipsis, if needed, so
|
|
|
|
that it doesn't exceed @a maxWidth.
|
|
|
|
|
|
|
|
Note that this functions is guaranteed to always returns a string
|
|
|
|
whose rendering on the given DC takes less than @a maxWidth pixels
|
|
|
|
in horizontal.
|
2008-04-12 19:27:36 -04:00
|
|
|
|
2010-03-21 17:39:15 -04:00
|
|
|
@param label
|
|
|
|
The string to ellipsize
|
|
|
|
@param dc
|
|
|
|
The DC used to retrieve the character widths through the
|
|
|
|
wxDC::GetPartialTextExtents() function.
|
|
|
|
@param mode
|
|
|
|
The ellipsization mode. This is the setting which determines
|
|
|
|
which part of the string should be replaced by the ellipsis.
|
|
|
|
See ::wxEllipsizeMode enumeration values for more info.
|
|
|
|
@param maxWidth
|
|
|
|
The maximum width of the returned string in pixels.
|
|
|
|
This argument determines how much characters of the string need to
|
|
|
|
be removed (and replaced by ellipsis).
|
|
|
|
@param flags
|
|
|
|
One or more of the ::wxEllipsizeFlags enumeration values combined.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2010-03-21 17:39:15 -04:00
|
|
|
static wxString Ellipsize(const wxString& label, const wxDC& dc,
|
|
|
|
wxEllipsizeMode mode, int maxWidth,
|
|
|
|
int flags = wxELLIPSIZE_FLAGS_DEFAULT);
|
2008-03-08 08:52:38 -05:00
|
|
|
};
|
2008-03-10 11:24:38 -04:00
|
|
|
|