X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3051a44a73502c2b03d1618d0a8e94274ee67e16..9e9574fe45b176ee74bba8fad7574cf9906145d1:/interface/wx/spinctrl.h?ds=sidebyside diff --git a/interface/wx/spinctrl.h b/interface/wx/spinctrl.h index 80701178c3..404451ab11 100644 --- a/interface/wx/spinctrl.h +++ b/interface/wx/spinctrl.h @@ -2,8 +2,7 @@ // Name: spinctrl.h // Purpose: interface of wxSpinCtrl // Author: wxWidgets team -// RCS-ID: $Id$ -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// /** @@ -17,16 +16,24 @@ @style{wxSP_WRAP} The value wraps at the minimum and maximum. @style{wxTE_PROCESS_ENTER} - Indicates that the control should generate wxEVT_COMMAND_TEXT_ENTER + Indicates that the control should generate @c wxEVT_TEXT_ENTER events. Using this style will prevent the user from using the Enter key for dialog navigation (e.g. activating the default button in the dialog) under MSW. + @style{wxALIGN_LEFT} + Same as wxTE_LEFT for wxTextCtrl: the text is left aligned. + @style{wxALIGN_CENTRE_HORIZONTAL} + Same as wxTE_CENTRE for wxTextCtrl: the text is centered. + @style{wxALIGN_RIGHT} + Same as wxTE_RIGHT for wxTextCtrl: the text is right aligned (this is + the default). @endStyleTable @beginEventEmissionTable{wxSpinEvent} @event{EVT_SPINCTRL(id, func)} - Generated whenever the numeric value of the spinctrl is updated + Process a wxEVT_SPINCTRL event, which is generated + whenever the numeric value of the spin control is updated. @endEventTable You may also use the wxSpinButton event macros, however the corresponding events @@ -39,7 +46,7 @@ @library{wxcore} @category{ctrl} - @appearance{spinctrl.png} + @appearance{spinctrl} @see wxSpinButton, wxSpinCtrlDouble, wxControl */ @@ -54,6 +61,14 @@ public: /** Constructor, creating and showing a spin control. + If @a value is non-empty, it will be shown in the text entry part of + the control and if it has numeric value, the initial numeric value of + the control, as returned by GetValue() will also be determined by it + instead of by @a initial. Hence, it only makes sense to specify @a + initial if @a value is an empty string or is not convertible to a + number, otherwise @a initial is simply ignored and the number specified + by @a value is used. + @param parent Parent window. Must not be @NULL. @param value @@ -62,10 +77,10 @@ public: Window identifier. The value wxID_ANY indicates a default value. @param pos Window position. - If wxDefaultPosition is specified then a default position is chosen. + If ::wxDefaultPosition is specified then a default position is chosen. @param size Window size. - If wxDefaultSize is specified then a default size is chosen. + If ::wxDefaultSize is specified then a default size is chosen. @param style Window style. See wxSpinButton. @param min @@ -98,6 +113,15 @@ public: long style = wxSP_ARROW_KEYS, int min = 0, int max = 100, int initial = 0, const wxString& name = "wxSpinCtrl"); + /** + Returns the numerical base being currently used, 10 by default. + + @see SetBase() + + @since 2.9.5 + */ + int GetBase() const; + /** Gets maximal allowable value. */ @@ -113,8 +137,34 @@ public: */ int GetValue() const; + /** + Sets the base to use for the numbers in this control. + + Currently the only supported values are 10 (which is the default) and + 16. + + Changing the base allows the user to enter the numbers in the specified + base, e.g. with "0x" prefix for hexadecimal numbers, and also displays + the numbers in the specified base when they are changed using the spin + control arrows. + + @param base + Numeric base, currently only 10 and 16 are supported. + @return + @true if the base was successfully changed or @false if it failed, + usually meaning that either the base is not 10 or 16. + + @since 2.9.5 + */ + bool SetBase(int base); + /** Sets range of allowable values. + + Notice that calling this method may change the value of the control if + it's not inside the new valid range, e.g. it will become @a minVal if + it is less than it now. However no @c wxEVT_SPINCTRL + event is generated, even if it the value does change. */ void SetRange(int minVal, int maxVal); @@ -129,13 +179,214 @@ public: virtual void SetSelection(long from, long to); /** - Sets the value of the spin control. Use the variant using int instead. + Sets the value of the spin control. + + It is recommended to use the overload taking an integer value instead. + + Notice that, unlike wxTextCtrl::SetValue(), but like most of the other + setter methods in wxWidgets, calling this method does not generate any + events as events are only generated for the user actions. */ virtual void SetValue(const wxString& text); /** Sets the value of the spin control. + + Calling this method doesn't generate any @c wxEVT_SPINCTRL events. */ void SetValue(int value); }; +/** + @class wxSpinCtrlDouble + + wxSpinCtrlDouble combines wxTextCtrl and wxSpinButton in one control and + displays a real number. (wxSpinCtrl displays an integer.) + + @beginStyleTable + @style{wxSP_ARROW_KEYS} + The user can use arrow keys to change the value. + @style{wxSP_WRAP} + The value wraps at the minimum and maximum. + @endStyleTable + + @beginEventEmissionTable{wxSpinDoubleEvent} + @event{EVT_SPINCTRLDOUBLE(id, func)} + Generated whenever the numeric value of the spin control is changed, + that is, when the up/down spin button is clicked, when ENTER is pressed, + or the control loses focus and the new value is different from the last. + See wxSpinDoubleEvent. + @endEventTable + + @library{wxcore} + @category{ctrl} + @appearance{spinctrldouble} + + @see wxSpinButton, wxSpinCtrl, wxControl +*/ +class wxSpinCtrlDouble : public wxControl +{ +public: + /** + Default constructor. + */ + wxSpinCtrlDouble(); + + /** + Constructor, creating and showing a spin control. + + @param parent + Parent window. Must not be @NULL. + @param value + Default value (as text). + @param id + Window identifier. The value wxID_ANY indicates a default value. + @param pos + Window position. + If ::wxDefaultPosition is specified then a default position is chosen. + @param size + Window size. + If ::wxDefaultSize is specified then a default size is chosen. + @param style + Window style. See wxSpinButton. + @param min + Minimal value. + @param max + Maximal value. + @param initial + Initial value. + @param inc + Increment value. + @param name + Window name. + + @see Create() + */ + wxSpinCtrlDouble(wxWindow* parent, wxWindowID id = -1, + const wxString& value = wxEmptyString, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxSP_ARROW_KEYS, + double min = 0, double max = 100, + double initial = 0, double inc = 1, + const wxString& name = wxT("wxSpinCtrlDouble")); + + /** + Creation function called by the spin control constructor. + See wxSpinCtrlDouble() for details. + */ + bool Create(wxWindow* parent, wxWindowID id = wxID_ANY, + const wxString& value = wxEmptyString, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxSP_ARROW_KEYS, double min = 0, double max = 100, + double initial = 0, double inc = 1, + const wxString& name = "wxSpinCtrlDouble"); + + /** + Gets the number of digits in the display. + */ + unsigned int GetDigits() const; + + /** + Gets the increment value. + */ + double GetIncrement() const; + + /** + Gets maximal allowable value. + */ + double GetMax() const; + + /** + Gets minimal allowable value. + */ + double GetMin() const; + + /** + Gets the value of the spin control. + */ + double GetValue() const; + + /** + Sets the number of digits in the display. + */ + void SetDigits(unsigned int digits); + + /** + Sets the increment value. + @note You may also need to increase the number of visible digits + using SetDigits + */ + void SetIncrement(double inc); + + /** + Sets range of allowable values. + */ + void SetRange(double minVal, double maxVal); + + /** + Sets the value of the spin control. + + It is recommended to use the overload taking a double value instead. + + Notice that, unlike wxTextCtrl::SetValue(), but like most of the other + setter methods in wxWidgets, calling this method does not generate any + events as events are only generated for the user actions. + */ + virtual void SetValue(const wxString& text); + + /** + Sets the value of the spin control. + + Calling this method doesn't generate any @c wxEVT_SPINCTRLDOUBLE events. + */ + void SetValue(double value); +}; + +/** + @class wxSpinDoubleEvent + + This event class is used for the events generated by wxSpinCtrlDouble. + + @beginEventTable{wxSpinDoubleEvent} + @event{EVT_SPINCTRLDOUBLE(id, func)} + Generated whenever the numeric value of the spin control is changed, + that is, when the up/down spin button is clicked, when ENTER is pressed, + or the control loses focus and the new value is different from the last. + See wxSpinDoubleEvent. + @endEventTable + + @library{wxcore} + @category{events} + + @see wxSpinCtrlDouble +*/ +class wxSpinDoubleEvent : public wxNotifyEvent +{ +public: + /** + The constructor. Not normally used by the user code. + */ + wxSpinDoubleEvent(wxEventType commandType = wxEVT_NULL, int winid = 0, + double value = 0); + + /** + The copy constructor. + */ + wxSpinDoubleEvent(const wxSpinDoubleEvent& event); + + /** + Returns the value associated with this spin control event. + */ + double GetValue() const; + + /** + Set the value associated with the event. + (Not normally used by user code.) + */ + void SetValue(double value); +}; + +wxEventType wxEVT_SPINCTRL; +wxEventType wxEVT_SPINCTRLDOUBLE;