kicad/include/widgets/unit_binder.h

98 lines
2.8 KiB
C
Raw Normal View History

/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2014-2015 CERN
* Author: Maciej Suminski <maciej.suminski@cern.ch>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef __UNIT_BINDER_H_
#define __UNIT_BINDER_H_
#include <common.h>
#include <wx/spinbutt.h>
2017-08-25 14:46:49 +00:00
class wxTextEntry;
class wxSpinButton;
class wxStaticText;
class UNIT_BINDER
{
public:
/**
* Constructor.
* @param aParent is the parent window.
2017-08-25 14:46:49 +00:00
* @param aTextInput is the text input widget used to edit the given value (wxTextCtrl, wxComboBox, ...).
* @param aUnitLabel is the units label displayed next to the text field.
* @param aSpinButton is an optional spin button (for adjusting the input value)
*/
UNIT_BINDER( wxWindow* aParent, wxTextEntry* aTextInput, wxStaticText* aUnitLabel, wxSpinButton* aSpinButton = NULL );
virtual ~UNIT_BINDER();
/**
* Function SetValue
* Sets new value (in Internal Units) for the text field, taking care of units conversion.
* @param aValue is the new value.
*/
virtual void SetValue( int aValue );
/**
* Function GetValue
* Returns the current value in Internal Units.
*/
virtual int GetValue() const;
/**
* Function Valid
* Returns true if the text control contains a real number.
*/
bool Valid() const;
/**
* Function Enable
* Enables/diasables the binded widgets
*/
2015-02-18 16:53:46 +00:00
void Enable( bool aEnable );
protected:
2015-02-18 16:53:46 +00:00
void onTextChanged( wxEvent& aEvent );
///> Text input control.
2017-08-25 14:46:49 +00:00
wxTextEntry* m_textEntry;
///> Label showing currently used units.
2015-02-18 16:53:46 +00:00
wxStaticText* m_unitLabel;
///> Currently used units.
2015-02-18 16:53:46 +00:00
EDA_UNITS_T m_units;
///> Step size (added/subtracted difference if spin buttons are used).
int m_step;
int m_min;
int m_max;
///> Default value (or non-specified)
static const wxString DEFAULT_VALUE;
};
#endif /* __UNIT_BINDER_H_ */