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
|
||||
worksheet.cpp
|
||||
wxwineda.cpp
|
||||
wxunittext.cpp
|
||||
wx_unit_input.cpp
|
||||
wx_unit_binder.cpp
|
||||
wx_status_popup.cpp
|
||||
xnode.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