added wxSpinCtrlDouble (slightly modified patch 1835864)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52612 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -19,64 +19,119 @@
|
||||
#include "wx/spinbutt.h" // should make wxSpinEvent visible to the app
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// a spin ctrl is a text control with a spin button which is usually used to
|
||||
// prompt the user for a numeric input
|
||||
// A spin ctrl is a text control with a spin button which is usually used to
|
||||
// prompt the user for a numeric input.
|
||||
// There are two kinds for number types T=integer or T=double.
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
/* there is no generic base class for this control because it's imlpemented
|
||||
very differently under MSW and other platforms
|
||||
|
||||
class WXDLLEXPORT wxSpinCtrlBase : public wxControl
|
||||
{
|
||||
public:
|
||||
wxSpinCtrlBase() { Init(); }
|
||||
wxSpinCtrlBase() {}
|
||||
|
||||
// accessors
|
||||
virtual int GetValue() const = 0;
|
||||
virtual int GetMin() const { return m_min; }
|
||||
virtual int GetMax() const { return m_max; }
|
||||
// accessor functions that derived classes are expected to have
|
||||
// T GetValue() const
|
||||
// T GetMin() const
|
||||
// T GetMax() const
|
||||
// T GetIncrement() const
|
||||
virtual bool GetSnapToTicks() const = 0;
|
||||
// unsigned GetDigits() const - wxSpinCtrlDouble only
|
||||
|
||||
// operations
|
||||
// operation functions that derived classes are expected to have
|
||||
virtual void SetValue(const wxString& value) = 0;
|
||||
virtual void SetValue(int val) = 0;
|
||||
virtual void SetRange(int minVal, int maxVal) = 0;
|
||||
// void SetValue(T val)
|
||||
// void SetRange(T minVal, T maxVal)
|
||||
// void SetIncrement(T inc)
|
||||
virtual void SetSnapToTicks(bool snap_to_ticks) = 0;
|
||||
// void SetDigits(unsigned digits) - wxSpinCtrlDouble only
|
||||
|
||||
// as the wxTextCtrl method
|
||||
// Select text in the textctrl
|
||||
virtual void SetSelection(long from, long to) = 0;
|
||||
|
||||
protected:
|
||||
// initialize m_min/max with the default values
|
||||
void Init() { m_min = 0; m_max = 100; }
|
||||
|
||||
int m_min;
|
||||
int m_max;
|
||||
private:
|
||||
DECLARE_NO_COPY_CLASS(wxSpinCtrlBase)
|
||||
};
|
||||
*/
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxSpinDoubleEvent - a wxSpinEvent for double valued controls
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLEXPORT wxSpinDoubleEvent : public wxNotifyEvent
|
||||
{
|
||||
public:
|
||||
wxSpinDoubleEvent(wxEventType commandType = wxEVT_NULL, int winid = 0,
|
||||
double value = 0)
|
||||
: wxNotifyEvent(commandType, winid), m_value(value)
|
||||
{
|
||||
}
|
||||
|
||||
wxSpinDoubleEvent(const wxSpinDoubleEvent& event)
|
||||
: wxNotifyEvent(event), m_value(event.GetValue())
|
||||
{
|
||||
}
|
||||
|
||||
double GetValue() const { return m_value; }
|
||||
void SetValue(double value) { m_value = value; }
|
||||
|
||||
virtual wxEvent *Clone() const { return new wxSpinDoubleEvent(*this); }
|
||||
|
||||
protected:
|
||||
double m_value;
|
||||
|
||||
private:
|
||||
DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxSpinDoubleEvent)
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxSpinDoubleEvent event type, see also wxSpinEvent in wx/spinbutt.h
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
typedef void (wxEvtHandler::*wxSpinDoubleEventFunction)(wxSpinDoubleEvent&);
|
||||
|
||||
#define wxSpinDoubleEventHandler(func) \
|
||||
(wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxSpinDoubleEventFunction, &func)
|
||||
|
||||
// macros for handling spinctrl events
|
||||
|
||||
#define EVT_SPINCTRL(id, fn) \
|
||||
wx__DECLARE_EVT1(wxEVT_COMMAND_SPINCTRL_UPDATED, id, wxSpinEventHandler(fn))
|
||||
|
||||
#define EVT_SPINCTRLDOUBLE(id, fn) \
|
||||
wx__DECLARE_EVT1(wxEVT_COMMAND_SPINCTRLDOUBLE_UPDATED, id, wxSpinDoubleEventHandler(fn))
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// include the platform-dependent class implementation
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#if defined(__WXUNIVERSAL__)
|
||||
#include "wx/generic/spinctlg.h"
|
||||
// we may have a native wxSpinCtrl implementation, native wxSpinCtrl and
|
||||
// wxSpinCtrlDouble implementations or neither, define the appropriate symbols
|
||||
// and include the generic version if necessary to provide the missing class(es)
|
||||
|
||||
#if defined(__WXUNIVERSAL__) || \
|
||||
defined(__WXMOTIF__) || \
|
||||
defined(__WXCOCOA__)
|
||||
// nothing, use generic controls
|
||||
#elif defined(__WXMSW__)
|
||||
#define wxHAS_NATIVE_SPINCTRL
|
||||
#include "wx/msw/spinctrl.h"
|
||||
#elif defined(__WXPM__)
|
||||
#define wxHAS_NATIVE_SPINCTRL
|
||||
#include "wx/os2/spinctrl.h"
|
||||
#elif defined(__WXGTK20__)
|
||||
#define wxHAS_NATIVE_SPINCTRL
|
||||
#define wxHAS_NATIVE_SPINCTRLDOUBLE
|
||||
#include "wx/gtk/spinctrl.h"
|
||||
#elif defined(__WXGTK__)
|
||||
#define wxHAS_NATIVE_SPINCTRL
|
||||
#include "wx/gtk1/spinctrl.h"
|
||||
#elif defined(__WXMOTIF__)
|
||||
#include "wx/generic/spinctlg.h"
|
||||
#elif defined(__WXMAC__)
|
||||
#define wxHAS_NATIVE_SPINCTRL
|
||||
#include "wx/mac/spinctrl.h"
|
||||
#elif defined(__WXCOCOA__)
|
||||
#include "wx/generic/spinctlg.h"
|
||||
#endif // platform
|
||||
|
||||
#define EVT_SPINCTRL(id, fn) \
|
||||
wx__DECLARE_EVT1(wxEVT_COMMAND_SPINCTRL_UPDATED, id, wxSpinEventHandler(fn))
|
||||
#if !defined(wxHAS_NATIVE_SPINCTRL) || !defined(wxHAS_NATIVE_SPINCTRLDOUBLE)
|
||||
#include "wx/generic/spinctlg.h"
|
||||
#endif
|
||||
|
||||
#endif // wxUSE_SPINCTRL
|
||||
|
||||
|
Reference in New Issue
Block a user