SetIncrement() was already available in wxSpinCtrlDouble and GTK version of wxSpinCtrl, now implement support for it in wxMSW and wxOSX as well. In fact, in wxMSW, implement it at wxSpinButton level, so that both this class and wxSpinCtrl inheriting from it (in wxMSW only) support setting custom increment now. Also add support for it to XRC, show it in the sample and add a unit test verifying that it works. Closes #2597.
77 lines
2.4 KiB
C++
77 lines
2.4 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/msw/spinbutt.h
|
|
// Purpose: wxSpinButton class
|
|
// Author: Julian Smart
|
|
// Modified by:
|
|
// Created: 01/02/97
|
|
// Copyright: (c) Julian Smart
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_SPINBUTT_H_
|
|
#define _WX_SPINBUTT_H_
|
|
|
|
#include "wx/control.h"
|
|
#include "wx/event.h"
|
|
|
|
#if wxUSE_SPINBTN
|
|
|
|
class WXDLLIMPEXP_CORE wxSpinButton : public wxSpinButtonBase
|
|
{
|
|
public:
|
|
// construction
|
|
wxSpinButton() { }
|
|
|
|
wxSpinButton(wxWindow *parent,
|
|
wxWindowID id = wxID_ANY,
|
|
const wxPoint& pos = wxDefaultPosition,
|
|
const wxSize& size = wxDefaultSize,
|
|
long style = wxSP_VERTICAL | wxSP_ARROW_KEYS,
|
|
const wxString& name = wxSPIN_BUTTON_NAME)
|
|
{
|
|
Create(parent, id, pos, size, style, name);
|
|
}
|
|
|
|
virtual ~wxSpinButton();
|
|
|
|
bool Create(wxWindow *parent,
|
|
wxWindowID id = wxID_ANY,
|
|
const wxPoint& pos = wxDefaultPosition,
|
|
const wxSize& size = wxDefaultSize,
|
|
long style = wxSP_VERTICAL | wxSP_ARROW_KEYS,
|
|
const wxString& name = wxSPIN_BUTTON_NAME);
|
|
|
|
|
|
// accessors
|
|
virtual int GetValue() const wxOVERRIDE;
|
|
virtual void SetValue(int val) wxOVERRIDE;
|
|
virtual void SetRange(int minVal, int maxVal) wxOVERRIDE;
|
|
|
|
// implementation
|
|
virtual bool MSWCommand(WXUINT param, WXWORD id) wxOVERRIDE;
|
|
virtual bool MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) wxOVERRIDE;
|
|
virtual bool MSWOnScroll(int orientation, WXWORD wParam,
|
|
WXWORD pos, WXHWND control) wxOVERRIDE;
|
|
|
|
// a wxSpinButton can't do anything useful with focus, only wxSpinCtrl can
|
|
virtual bool AcceptsFocus() const wxOVERRIDE { return false; }
|
|
|
|
// returns true if the platform should explicitly apply a theme border
|
|
virtual bool CanApplyThemeBorder() const wxOVERRIDE { return false; }
|
|
virtual void SetIncrement(int value) wxOVERRIDE;
|
|
virtual int GetIncrement() const wxOVERRIDE;
|
|
|
|
protected:
|
|
virtual wxSize DoGetBestSize() const wxOVERRIDE;
|
|
|
|
// ensure that the control displays a value in the current range
|
|
virtual void NormalizeValue();
|
|
|
|
private:
|
|
wxDECLARE_DYNAMIC_CLASS_NO_COPY(wxSpinButton);
|
|
};
|
|
|
|
#endif // wxUSE_SPINBTN
|
|
|
|
#endif // _WX_SPINBUTT_H_
|