From 8325d6fdf0b517a3bd4f16aad222a1fd0e239a14 Mon Sep 17 00:00:00 2001 From: Chris Pavlina Date: Sun, 10 Apr 2016 18:14:28 -0400 Subject: [PATCH] Eliminate 0.1deg units in DIALOG_PAD_PROPERTIES --- pcbnew/dialogs/dialog_pad_properties.cpp | 53 +++++++++++++++---- pcbnew/dialogs/dialog_pad_properties.h | 5 ++ pcbnew/dialogs/dialog_pad_properties_base.cpp | 4 +- pcbnew/dialogs/dialog_pad_properties_base.fbp | 2 +- pcbnew/dialogs/dialog_pad_properties_base.h | 2 +- 5 files changed, 51 insertions(+), 15 deletions(-) diff --git a/pcbnew/dialogs/dialog_pad_properties.cpp b/pcbnew/dialogs/dialog_pad_properties.cpp index e99f13d1c2..a3b5e897a5 100644 --- a/pcbnew/dialogs/dialog_pad_properties.cpp +++ b/pcbnew/dialogs/dialog_pad_properties.cpp @@ -99,7 +99,8 @@ void PCB_BASE_FRAME::InstallPadOptionsFrame( D_PAD* aPad ) DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES( PCB_BASE_FRAME* aParent, D_PAD* aPad ) : - DIALOG_PAD_PROPERTIES_BASE( aParent ) + DIALOG_PAD_PROPERTIES_BASE( aParent ), + m_OrientValidator( 1, &m_OrientValue ) { m_canUpdate = false; m_parent = aParent; @@ -108,6 +109,9 @@ DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES( PCB_BASE_FRAME* aParent, D_PAD* aP m_board = m_parent->GetBoard(); + m_OrientValidator.SetRange( -360.0, 360.0 ); + m_PadOrientCtrl->SetValidator( m_OrientValidator ); + m_padMaster = &m_parent->GetDesignSettings().m_Pad_Master; m_dummyPad = new D_PAD( (MODULE*) NULL ); @@ -143,6 +147,7 @@ DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES( PCB_BASE_FRAME* aParent, D_PAD* aP } initValues(); + TransferDataToWindow(); m_sdbSizerOK->SetDefault(); GetSizer()->SetSizeHints( this ); @@ -514,8 +519,7 @@ void DIALOG_PAD_PROPERTIES::initValues() break; } - msg.Printf( wxT( "%g" ), angle ); - m_PadOrientCtrl->SetValue( msg ); + m_OrientValue = angle / 10.0; // Type of pad selection m_PadType->SetSelection( 0 ); @@ -669,9 +673,9 @@ void DIALOG_PAD_PROPERTIES::PadOrientEvent( wxCommandEvent& event ) break; } - wxString msg; - msg.Printf( wxT( "%g" ), m_dummyPad->GetOrientation() ); - m_PadOrientCtrl->SetValue( msg ); + m_OrientValue = m_dummyPad->GetOrientation() / 10.0; + m_OrientValidator.SetWindow( m_PadOrientCtrl ); + m_OrientValidator.TransferToWindow(); transferDataToPad( m_dummyPad ); redraw(); @@ -892,11 +896,32 @@ void DIALOG_PAD_PROPERTIES::redraw() } +bool DIALOG_PAD_PROPERTIES::TransferDataToWindow() +{ + if( !wxDialog::TransferDataToWindow() ) + return false; + + if( !m_panelGeneral->TransferDataToWindow() ) + return false; + + if( !m_localSettingsPanel->TransferDataToWindow() ) + return false; + + return true; +} + + bool DIALOG_PAD_PROPERTIES::TransferDataFromWindow() { if( !wxDialog::TransferDataFromWindow() ) return false; + if( !m_panelGeneral->TransferDataFromWindow() ) + return false; + + if( !m_localSettingsPanel->TransferDataFromWindow() ) + return false; + if( !padValuesOK() ) return false; @@ -1027,6 +1052,16 @@ bool DIALOG_PAD_PROPERTIES::transferDataToPad( D_PAD* aPad ) wxString msg; int x, y; + if( !Validate() ) + return true; + if( !m_panelGeneral->Validate() ) + return true; + if( !m_localSettingsPanel->Validate() ) + return true; + + m_OrientValidator.SetWindow( m_PadOrientCtrl ); + m_OrientValidator.TransferFromWindow(); + aPad->SetAttribute( code_type[m_PadType->GetSelection()] ); aPad->SetShape( code_shape[m_PadShape->GetSelection()] ); @@ -1151,11 +1186,7 @@ bool DIALOG_PAD_PROPERTIES::transferDataToPad( D_PAD* aPad ) y = ValueFromTextCtrl( *m_ShapeOffset_Y_Ctrl ); aPad->SetOffset( wxPoint( x, y ) ); - double orient_value = 0; - msg = m_PadOrientCtrl->GetValue(); - msg.ToDouble( &orient_value ); - - aPad->SetOrientation( orient_value ); + aPad->SetOrientation( m_OrientValue * 10.0 ); msg = m_PadNumCtrl->GetValue().Left( 4 ); aPad->SetPadName( msg ); diff --git a/pcbnew/dialogs/dialog_pad_properties.h b/pcbnew/dialogs/dialog_pad_properties.h index f14c4e28e4..728d5e2d94 100644 --- a/pcbnew/dialogs/dialog_pad_properties.h +++ b/pcbnew/dialogs/dialog_pad_properties.h @@ -39,6 +39,7 @@ #include #include #include +#include #include #include @@ -80,6 +81,9 @@ private: bool m_canUpdate; bool m_canEditNetName; // true only if the caller is the board editor + wxFloatingPointValidator m_OrientValidator; + double m_OrientValue; + private: void initValues(); bool padValuesOK(); ///< test if all values are acceptable for the pad @@ -118,6 +122,7 @@ private: /// Updates the different parameters for the component being edited. /// Automatically fired from the OK button click. bool TransferDataFromWindow(); + bool TransferDataToWindow(); }; #endif // #ifndef _DIALOG_PAD_PROPERTIES_H_ diff --git a/pcbnew/dialogs/dialog_pad_properties_base.cpp b/pcbnew/dialogs/dialog_pad_properties_base.cpp index bf3c590114..7f66d7eeed 100644 --- a/pcbnew/dialogs/dialog_pad_properties_base.cpp +++ b/pcbnew/dialogs/dialog_pad_properties_base.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Mar 28 2016) +// C++ code generated with wxFormBuilder (version Apr 9 2016) // http://www.wxformbuilder.org/ // // PLEASE DO "NOT" EDIT THIS FILE! @@ -142,7 +142,7 @@ DIALOG_PAD_PROPERTIES_BASE::DIALOG_PAD_PROPERTIES_BASE( wxWindow* parent, wxWind m_PadOrientCtrl = new wxTextCtrl( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); fgSizerShapeType->Add( m_PadOrientCtrl, 0, wxEXPAND|wxLEFT|wxTOP, 5 ); - m_customOrientUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("0.1 deg"), wxDefaultPosition, wxDefaultSize, 0 ); + m_customOrientUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("deg"), wxDefaultPosition, wxDefaultSize, 0 ); m_customOrientUnits->Wrap( -1 ); fgSizerShapeType->Add( m_customOrientUnits, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP, 5 ); diff --git a/pcbnew/dialogs/dialog_pad_properties_base.fbp b/pcbnew/dialogs/dialog_pad_properties_base.fbp index 5a2b40a6b0..71a69992dc 100644 --- a/pcbnew/dialogs/dialog_pad_properties_base.fbp +++ b/pcbnew/dialogs/dialog_pad_properties_base.fbp @@ -2415,7 +2415,7 @@ 0 0 wxID_ANY - 0.1 deg + deg 0 diff --git a/pcbnew/dialogs/dialog_pad_properties_base.h b/pcbnew/dialogs/dialog_pad_properties_base.h index 8ac149ea4a..cb3962621f 100644 --- a/pcbnew/dialogs/dialog_pad_properties_base.h +++ b/pcbnew/dialogs/dialog_pad_properties_base.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Mar 28 2016) +// C++ code generated with wxFormBuilder (version Apr 9 2016) // http://www.wxformbuilder.org/ // // PLEASE DO "NOT" EDIT THIS FILE!