| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        control.h
 
- // Purpose:     interface of wxControl
 
- // Author:      wxWidgets team
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- /**
 
-     Flags used by wxControl::Ellipsize function.
 
- */
 
- enum wxEllipsizeFlags
 
- {
 
-     /// 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,
 
-     /// The default flags for wxControl::Ellipsize.
 
-     wxELLIPSIZE_FLAGS_DEFAULT = wxELLIPSIZE_FLAGS_PROCESS_MNEMONICS|
 
-                                 wxELLIPSIZE_FLAGS_EXPAND_TABS
 
- };
 
- /**
 
-     The different ellipsization modes supported by the
 
-     wxControl::Ellipsize function.
 
- */
 
- enum wxEllipsizeMode
 
- {
 
-     /// Don't ellipsize the text at all. @since 2.9.1
 
-     wxELLIPSIZE_NONE,
 
-     /// Put the ellipsis at the start of the string, if the string needs ellipsization.
 
-     wxELLIPSIZE_START,
 
-     /// Put the ellipsis in the middle of the string, if the string needs ellipsization.
 
-     wxELLIPSIZE_MIDDLE,
 
-     /// Put the ellipsis at the end of the string, if the string needs ellipsization.
 
-     wxELLIPSIZE_END
 
- };
 
- /**
 
-     @class wxControl
 
-     This is the base class for a control or "widget".
 
-     A control is generally a small window which processes user input and/or
 
-     displays one or more item of data.
 
-     @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
 
-     @library{wxcore}
 
-     @category{ctrl}
 
-     @see wxValidator
 
- */
 
- class wxControl : public wxWindow
 
- {
 
- public:
 
-     /**
 
-         Constructs a control.
 
-         @param parent
 
-             Pointer to a parent window.
 
-         @param id
 
-             Control identifier. If wxID_ANY, will automatically create an identifier.
 
-         @param pos
 
-             Control position. wxDefaultPosition indicates that wxWidgets
 
-             should generate a default position for the control.
 
-         @param size
 
-             Control size. wxDefaultSize indicates that wxWidgets should generate
 
-             a default size for the window. If no suitable size can  be found, the
 
-             window will be sized to 20x20 pixels so that the window is visible but
 
-             obviously not correctly sized.
 
-         @param style
 
-             Control style. For generic window styles, please see wxWindow.
 
-         @param validator
 
-             Control validator. 
 
-         @param name
 
-             Control name.
 
-     */
 
-    wxControl(wxWindow *parent, wxWindowID id,
 
-              const wxPoint& pos = wxDefaultPosition,
 
-              const wxSize& size = wxDefaultSize, long style = 0,
 
-              const wxValidator& validator = wxDefaultValidator,
 
-              const wxString& name = wxControlNameStr);
 
-     /**
 
-        Default constructor to allow 2-phase creation.
 
-     */
 
-     wxControl();
 
-     
 
-     bool Create(wxWindow *parent, wxWindowID id,
 
-             const wxPoint& pos = wxDefaultPosition,
 
-             const wxSize& size = wxDefaultSize, long style = 0,
 
-             const wxValidator& validator = wxDefaultValidator,
 
-             const wxString& name = wxControlNameStr);
 
-     /**
 
-         Simulates the effect of the user issuing a command to the item.
 
-         @see wxCommandEvent
 
-     */
 
-     virtual void Command(wxCommandEvent& event);
 
-     /**
 
-         Returns the control's label, as it was passed to SetLabel().
 
-         Note that the returned string may contains mnemonics ("&" characters) if they were
 
-         passed to the SetLabel() function; use GetLabelText() if they are undesired.
 
-         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).
 
-     */
 
-     wxString GetLabel() const;
 
-     /**
 
-         Returns the control's label without mnemonics.
 
-         Note that because of the stripping of the mnemonics the returned string may differ
 
-         from the string which was passed to SetLabel() but should always be the same which
 
-         was passed to SetLabelText().
 
-     */
 
-     wxString GetLabelText() const;
 
-     /**
 
-         Determine the size needed by the control to leave the given area for
 
-         its text.
 
-         This function is mostly useful with control displaying short amounts of
 
-         text that can be edited by the user, e.g. wxTextCtrl, wxComboBox,
 
-         wxSearchCtrl etc. Typically it is used to size these controls for the
 
-         maximal amount of input they are supposed to contain, for example:
 
-         @code
 
-             // Create a control for post code entry.
 
-             wxTextCtrl* postcode = new wxTextCtrl(this, ...);
 
-             // And set its initial and minimal size to be big enough for
 
-             // entering 5 digits.
 
-             postcode->SetInitialSize(
 
-                 postcode->GetSizeFromTextSize(
 
-                     postcode->GetTextExtent("99999")));
 
-         @endcode
 
-         Currently this method is only implemented for wxTextCtrl, wxComboBox
 
-         and wxChoice in wxMSW and wxGTK.
 
-         @param xlen The horizontal extent of the area to leave for text, in
 
-             pixels.
 
-         @param ylen The vertical extent of the area to leave for text, in
 
-             pixels. By default -1 meaning that the vertical component of the
 
-             returned size should be the default height of this control.
 
-         @return The size that the control should have to leave the area of the
 
-             specified size for its text. May return wxDefaultSize if this
 
-             method is not implemented for this particular control under the
 
-             current platform.
 
-         @since 2.9.5
 
-      */
 
-     wxSize GetSizeFromTextSize(int xlen, int ylen = -1) const;
 
-     /**
 
-         @overload
 
-     */
 
-     wxSize GetSizeFromTextSize(const wxSize& tsize) const;
 
-     /**
 
-         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 "&&". 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);
 
-     // NB: when writing docs for the following function remember that Doxygen
 
-     //     will always expand HTML entities (e.g. ") and thus we need to
 
-     //     write e.g. "&lt;" to have in the output the "<" string.
 
-     /**
 
-         Sets the controls label to a string using markup.
 
-         Simple markup supported by this function can be used to apply different
 
-         fonts or colours to different parts of the control label when supported.
 
-         If markup is not supported by the control or platform, it is simply
 
-         stripped and SetLabel() is used with the resulting string.
 
-         For example,
 
-         @code
 
-             wxStaticText *text;
 
-             ...
 
-             text->SetLabelMarkup("<b>&Bed</b> &mp; "
 
-                                  "<span foreground='red'>breakfast</span> "
 
-                                  "available <big>HERE</big>");
 
-         @endcode
 
-         would show the string using bold, red and big for the corresponding
 
-         words under wxGTK but will simply show the string "Bed & breakfast
 
-         available HERE" on the other platforms. In any case, the "B" of "Bed"
 
-         will be underlined to indicate that it can be used as a mnemonic for
 
-         this control.
 
-         The supported tags are:
 
-         <TABLE>
 
-             <TR>
 
-                 <TD><b>Tag</b></TD>
 
-                 <TD><b>Description</b></TD>
 
-             </TR>
 
-             <TR>
 
-                 <TD><b></TD>
 
-                 <TD>bold text</TD>
 
-             </TR>
 
-             <TR>
 
-                 <TD><big></TD>
 
-                 <TD>bigger text</TD>
 
-             </TR>
 
-             <TR>
 
-                 <TD><i></TD>
 
-                 <TD>italic text</TD>
 
-             </TR>
 
-             <TR>
 
-                 <TD><s></TD>
 
-                 <TD>strike-through text</TD>
 
-             </TR>
 
-             <TR>
 
-                 <TD><small></TD>
 
-                 <TD>smaller text</TD>
 
-             </TR>
 
-             <TR>
 
-                 <TD><tt></TD>
 
-                 <TD>monospaced text</TD>
 
-             </TR>
 
-             <TR>
 
-                 <TD><u></TD>
 
-                 <TD>underlined text</TD>
 
-             </TR>
 
-             <TR>
 
-                 <TD><span></TD>
 
-                 <TD>generic formatter tag, see the table below for supported
 
-                 attributes.
 
-                 </TD>
 
-             </TR>
 
-         </TABLE>
 
-         Supported @c <span> attributes:
 
-         <TABLE>
 
-             <TR>
 
-                 <TD><b>Name</b></TD>
 
-                 <TD><b>Description</b></TD>
 
-             </TR>
 
-             <TR>
 
-                 <TD>foreground, fgcolor, color</TD>
 
-                 <TD>Foreground text colour, can be a name or RGB value.</TD>
 
-             </TR>
 
-             <TR>
 
-                 <TD>background, bgcolor</TD>
 
-                 <TD>Background text colour, can be a name or RGB value.</TD>
 
-             </TR>
 
-             <TR>
 
-                 <TD>font_family, face</TD>
 
-                 <TD>Font face name.</TD>
 
-             </TR>
 
-             <TR>
 
-                 <TD>font_weight, weight</TD>
 
-                 <TD>Numeric value in 0..900 range or one of "ultralight",
 
-                 "light", "normal" (all meaning non-bold), "bold", "ultrabold"
 
-                 and "heavy" (all meaning bold).</TD>
 
-             </TR>
 
-             <TR>
 
-                 <TD>font_style, style</TD>
 
-                 <TD>Either "oblique" or "italic" (both with the same meaning)
 
-                 or "normal".</TD>
 
-             </TR>
 
-             <TR>
 
-                 <TD>size</TD>
 
-                 <TD>The font size can be specified either as "smaller" or
 
-                 "larger" relatively to the current font, as a CSS font size
 
-                 name ("xx-small", "x-small", "small", "medium", "large",
 
-                 "x-large" or "xx-large") or as a number giving font size in
 
-                 1024th parts of a point, i.e. 10240 for a 10pt font.</TD>
 
-             </TR>
 
-         </TABLE>
 
-         This markup language is a strict subset of Pango markup (described at
 
-         http://library.gnome.org/devel/pango/unstable/PangoMarkupFormat.html)
 
-         and any tags and span attributes not documented above can't be used
 
-         under non-GTK platforms.
 
-         Also note that you need to escape the following special characters:
 
-         <TABLE>
 
-             <TR>
 
-                 <TD><b>Special character</b></TD>
 
-                 <TD><b>Escape as</b></TD>
 
-             </TR>
 
-             <TR>
 
-                 <TD>@c &</TD>
 
-                 <TD>@c &amp; or as @c &&</TD>
 
-             </TR>
 
-             <TR>
 
-                 <TD>@c '</TD>
 
-                 <TD>@c &apos;</TD>
 
-             </TR>
 
-             <TR>
 
-                 <TD>@c "</TD>
 
-                 <TD>@c &quot;</TD>
 
-             </TR>
 
-             <TR>
 
-                 <TD>@c <</TD>
 
-                 <TD>@c &lt;</TD>
 
-             </TR>
 
-             <TR>
 
-                 <TD>@c ></TD>
 
-                 <TD>@c &gt;</TD>
 
-             </TR>
 
-         </TABLE>
 
-         The non-escaped ampersand @c & characters are interpreted as
 
-         mnemonics as with wxControl::SetLabel.
 
-         @param markup
 
-             String containing markup for the label. It may contain markup tags
 
-             described above and newline characters but currently only wxGTK and
 
-             wxOSX support multiline labels with markup, the generic
 
-             implementation (also used in wxMSW) only handles single line markup
 
-             labels. Notice that the string must be well-formed (e.g. all tags
 
-             must be correctly closed) and won't be shown at all otherwise.
 
-         @return
 
-             @true if the new label was set (even if markup in it was ignored)
 
-             or @false if we failed to parse the markup. In this case the label
 
-             remains unchanged.
 
-         Currently wxButton supports markup in all major ports (wxMSW, wxGTK and
 
-         wxOSX/Cocoa) while wxStaticText supports it in wxGTK and wxOSX and its
 
-         generic version (which can be used under MSW if markup support is
 
-         required). Extending support to more controls is planned in the future.
 
-         @since 2.9.2
 
-     */
 
-     bool SetLabelMarkup(const wxString& markup);
 
- public:     // static functions
 
-     
 
-     /**
 
-         Returns the given @a label string without mnemonics ("&" characters).
 
-     */
 
-     static wxString GetLabelText(const wxString& label);
 
-     /**
 
-         Returns the given @a str string without mnemonics ("&" characters).
 
-         
 
-         @note This function is identical to GetLabelText() and is provided
 
-               mostly for symmetry with EscapeMnemonics().
 
-     */
 
-     static wxString RemoveMnemonics(const wxString& str);
 
-     /**
 
-         Escapes the special mnemonics characters ("&") in the given string.
 
-         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);
 
-     /**
 
-         Replaces parts of the @a label string with ellipsis, if needed, so
 
-         that it fits into @a maxWidth pixels if possible.
 
-         Note that this function does @em not guarantee that the returned string
 
-         will always be shorter than @a maxWidth; if @a maxWidth is extremely
 
-         small, ellipsized text may be larger.
 
-         @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.
 
-     */
 
-     static wxString Ellipsize(const wxString& label, const wxDC& dc,
 
-                               wxEllipsizeMode mode, int maxWidth,
 
-                               int flags = wxELLIPSIZE_FLAGS_DEFAULT);
 
- };
 
 
  |