common: added WX_STATUS_POPUP and WX_UNIT_BINDER widget classes
This commit is contained in:
parent
1112681a77
commit
f0c913c65e
|
@ -204,8 +204,8 @@ set( COMMON_SRCS
|
||||||
wildcards_and_files_ext.cpp
|
wildcards_and_files_ext.cpp
|
||||||
worksheet.cpp
|
worksheet.cpp
|
||||||
wxwineda.cpp
|
wxwineda.cpp
|
||||||
wxunittext.cpp
|
wx_unit_binder.cpp
|
||||||
wx_unit_input.cpp
|
wx_status_popup.cpp
|
||||||
xnode.cpp
|
xnode.cpp
|
||||||
zoom.cpp
|
zoom.cpp
|
||||||
)
|
)
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
/*
|
||||||
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2014-2015 CERN
|
||||||
|
* Author: Tomasz Wlostowski <tomasz.wlostowski@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
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Transient mouse following popup window implementation.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <wx_status_popup.h>
|
||||||
|
#include <wxPcbStruct.h>
|
||||||
|
|
||||||
|
WX_STATUS_POPUP::WX_STATUS_POPUP ( PCB_EDIT_FRAME *parent ) :
|
||||||
|
wxPopupWindow ( parent )
|
||||||
|
{
|
||||||
|
m_panel = new wxPanel( this, wxID_ANY );
|
||||||
|
m_panel->SetBackgroundColour( *wxLIGHT_GREY );
|
||||||
|
|
||||||
|
m_topSizer = new wxBoxSizer( wxVERTICAL );
|
||||||
|
m_panel->SetSizer( m_topSizer );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void WX_STATUS_POPUP::updateSize()
|
||||||
|
{
|
||||||
|
m_topSizer->Fit( m_panel );
|
||||||
|
SetClientSize( m_panel->GetSize( ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
WX_STATUS_POPUP::~WX_STATUS_POPUP()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void WX_STATUS_POPUP::Popup(wxWindow *focus)
|
||||||
|
{
|
||||||
|
Show(true);
|
||||||
|
Raise();
|
||||||
|
}
|
||||||
|
|
||||||
|
void WX_STATUS_POPUP::Move( const wxPoint& aWhere )
|
||||||
|
{
|
||||||
|
SetPosition ( aWhere );
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,73 @@
|
||||||
|
/*
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <wx/stattext.h>
|
||||||
|
#include <wx/sizer.h>
|
||||||
|
#include <wx/textctrl.h>
|
||||||
|
#include <limits>
|
||||||
|
#include <base_units.h>
|
||||||
|
#if wxCHECK_VERSION( 2, 9, 0 )
|
||||||
|
#include <wx/valnum.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <boost/optional.hpp>
|
||||||
|
|
||||||
|
#include "wx_unit_binder.h"
|
||||||
|
|
||||||
|
WX_UNIT_BINDER::WX_UNIT_BINDER( wxWindow* aParent, wxTextCtrl *aTextInput, wxStaticText *aUnitLabel, wxSpinButton *aSpinButton )
|
||||||
|
{
|
||||||
|
// Use the currently selected units
|
||||||
|
m_units = g_UserUnit;
|
||||||
|
m_textCtrl = aTextInput;
|
||||||
|
m_textCtrl->SetValue ( wxT("0") );
|
||||||
|
m_unitLabel = aUnitLabel;
|
||||||
|
m_unitLabel->SetLabel ( GetAbbreviatedUnitsLabel (m_units));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
WX_UNIT_BINDER::~WX_UNIT_BINDER()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void WX_UNIT_BINDER::SetValue( int aValue )
|
||||||
|
{
|
||||||
|
wxString s = StringFromValue( m_units, aValue, false );
|
||||||
|
|
||||||
|
m_textCtrl->SetValue ( s );
|
||||||
|
|
||||||
|
m_unitLabel->SetLabel ( GetAbbreviatedUnitsLabel (m_units));
|
||||||
|
}
|
||||||
|
|
||||||
|
int WX_UNIT_BINDER::GetValue() const
|
||||||
|
{
|
||||||
|
wxString s = m_textCtrl->GetValue();
|
||||||
|
|
||||||
|
return ValueFromString( m_units, s );
|
||||||
|
}
|
||||||
|
|
||||||
|
void WX_UNIT_BINDER::Enable ( bool aEnable )
|
||||||
|
{
|
||||||
|
m_textCtrl->Enable ( aEnable );
|
||||||
|
m_unitLabel->Enable ( aEnable );
|
||||||
|
}
|
|
@ -0,0 +1,58 @@
|
||||||
|
/*
|
||||||
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2014-2015 CERN
|
||||||
|
* Author: Tomasz Wlostowski <tomasz.wlostowski@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 __WX_STATUS_POPUP_H_
|
||||||
|
#define __WX_STATUS_POPUP_H_
|
||||||
|
|
||||||
|
|
||||||
|
#include <common.h>
|
||||||
|
#include <wx/popupwin.h>
|
||||||
|
|
||||||
|
class PCB_EDIT_FRAME;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class WX_STATUS_POPUP
|
||||||
|
*
|
||||||
|
* A tiny, headerless popup window used to display useful status (e.g. line length
|
||||||
|
* tuning info) next to the mouse cursor.
|
||||||
|
*/
|
||||||
|
|
||||||
|
class WX_STATUS_POPUP: public wxPopupWindow
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
WX_STATUS_POPUP ( PCB_EDIT_FRAME *parent );
|
||||||
|
virtual ~WX_STATUS_POPUP();
|
||||||
|
|
||||||
|
virtual void Popup(wxWindow *focus = NULL);
|
||||||
|
virtual void Move( const wxPoint &aWhere );
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
void updateSize();
|
||||||
|
|
||||||
|
wxPanel *m_panel;
|
||||||
|
wxBoxSizer *m_topSizer;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* __WX_STATUS_POPUP_H_*/
|
|
@ -0,0 +1,91 @@
|
||||||
|
/*
|
||||||
|
* 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 __WX_UNIT_BINDER_H_
|
||||||
|
#define __WX_UNIT_BINDER_H_
|
||||||
|
|
||||||
|
#include <common.h>
|
||||||
|
#include <wx/spinbutt.h>
|
||||||
|
|
||||||
|
class wxTextCtrl;
|
||||||
|
class wxSpinButton;
|
||||||
|
class wxStaticText;
|
||||||
|
|
||||||
|
class WX_UNIT_BINDER
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor.
|
||||||
|
* @param aParent is the parent window.
|
||||||
|
* @param aTextInput is the text input widget used to edit the given value.
|
||||||
|
* @param aUnitLabel is the units label displayed next to the text field.
|
||||||
|
* @param aSpinButton is an optional spin button (for adjusting the input value)
|
||||||
|
*/
|
||||||
|
WX_UNIT_BINDER( wxWindow* aParent, wxTextCtrl *aTextInput, wxStaticText *aUnitLabel, wxSpinButton *aSpinButton = NULL );
|
||||||
|
|
||||||
|
virtual ~WX_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 Enable
|
||||||
|
* Enables/diasables the binded widgets
|
||||||
|
*/
|
||||||
|
void Enable ( bool aEnable );
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
void onTextChanged ( wxEvent& aEvent );
|
||||||
|
|
||||||
|
///> Text input control.
|
||||||
|
wxTextCtrl* m_textCtrl;
|
||||||
|
|
||||||
|
///> Label showing currently used units.
|
||||||
|
wxStaticText* m_unitLabel;
|
||||||
|
|
||||||
|
///> Currently used units.
|
||||||
|
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 /* __WX_UNIT_BINDER_H_ */
|
Loading…
Reference in New Issue