9 changed files with 271 additions and 186 deletions
-
3pcb_calculator/CMakeLists.txt
-
17pcb_calculator/class_regulator_data.h
-
4pcb_calculator/colorcode.cpp
-
96pcb_calculator/dialogs/dialog_regulator_form.cpp
-
93pcb_calculator/dialogs/dialog_regulator_form.h
-
16pcb_calculator/dialogs/dialog_regulator_form_base.cpp
-
72pcb_calculator/dialogs/dialog_regulator_form_base.fbp
-
10pcb_calculator/dialogs/dialog_regulator_form_base.h
-
146pcb_calculator/regulators_funct.cpp
@ -0,0 +1,96 @@ |
|||
/*
|
|||
* This program source code file is part of KICAD, a free EDA CAD application. |
|||
* |
|||
* Copyright (C) 1992-2011 jean-pierre.charras |
|||
* Copyright (C) 1992-2020 Kicad Developers, see AUTHORS.txt for contributors. |
|||
* |
|||
* 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 3 |
|||
* 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, see <http://www.gnu.org/licenses/>.
|
|||
*/ |
|||
|
|||
#include "class_regulator_data.h"
|
|||
#include "pcb_calculator_frame.h"
|
|||
#include "dialog_regulator_form.h"
|
|||
|
|||
|
|||
extern double DoubleFromString( const wxString& TextValue ); |
|||
|
|||
|
|||
void DIALOG_REGULATOR_FORM::OnOKClick( wxCommandEvent& event ) |
|||
{ |
|||
if( !IsOK() ) |
|||
{ |
|||
wxMessageBox( _( "Bad or missing parameters!" ) ); |
|||
return; |
|||
} |
|||
|
|||
EndModal( wxID_OK ); |
|||
} |
|||
|
|||
|
|||
bool DIALOG_REGULATOR_FORM::IsOK() |
|||
{ |
|||
bool success = true; |
|||
|
|||
if( m_textCtrlName->GetValue().IsEmpty() ) |
|||
success = false; |
|||
if( m_textCtrlVref->GetValue().IsEmpty() ) |
|||
success = false; |
|||
else |
|||
{ |
|||
double vref = DoubleFromString( m_textCtrlVref->GetValue() ); |
|||
if( fabs( vref ) < 0.01 ) |
|||
success = false; |
|||
} |
|||
if( m_choiceRegType->GetSelection() == 1 ) |
|||
{ |
|||
if( m_RegulIadjValue->GetValue().IsEmpty() ) |
|||
success = false; |
|||
} |
|||
|
|||
return success; |
|||
} |
|||
|
|||
|
|||
void DIALOG_REGULATOR_FORM::UpdateDialog() |
|||
{ |
|||
bool enbl = m_choiceRegType->GetSelection() == 1; |
|||
m_RegulIadjValue->Enable( enbl ); |
|||
} |
|||
|
|||
|
|||
void DIALOG_REGULATOR_FORM::CopyRegulatorDataToDialog( REGULATOR_DATA* aItem ) |
|||
{ |
|||
m_textCtrlName->SetValue( aItem->m_Name ); |
|||
wxString value; |
|||
value.Printf( wxT( "%g" ), aItem->m_Vref ); |
|||
m_textCtrlVref->SetValue( value ); |
|||
value.Printf( wxT( "%g" ), aItem->m_Iadj ); |
|||
m_RegulIadjValue->SetValue( value ); |
|||
m_choiceRegType->SetSelection( aItem->m_Type ); |
|||
UpdateDialog(); |
|||
} |
|||
|
|||
|
|||
REGULATOR_DATA* DIALOG_REGULATOR_FORM::BuildRegulatorFromData() |
|||
{ |
|||
double vref = DoubleFromString( m_textCtrlVref->GetValue() ); |
|||
double iadj = DoubleFromString( m_RegulIadjValue->GetValue() ); |
|||
int type = m_choiceRegType->GetSelection(); |
|||
|
|||
if( type != 1 ) |
|||
iadj = 0.0; |
|||
|
|||
REGULATOR_DATA* item = new REGULATOR_DATA( m_textCtrlName->GetValue(), vref, type, iadj ); |
|||
return item; |
|||
} |
@ -0,0 +1,93 @@ |
|||
/* |
|||
* This program source code file is part of KICAD, a free EDA CAD application. |
|||
* |
|||
* Copyright (C) 1992-2011 jean-pierre.charras |
|||
* Copyright (C) 1992-2020 Kicad Developers, see AUTHORS.txt for contributors. |
|||
* |
|||
* 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 3 |
|||
* 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, see <http://www.gnu.org/licenses/>. |
|||
*/ |
|||
|
|||
/** |
|||
* @file dialog_regulator_form.h |
|||
* Subclass of DIALOG_REGULATOR_FORM_BASE, which is generated by wxFormBuilder. |
|||
* |
|||
* This dialog is used to add / edit regulators to the list on the |
|||
* regulator tab of the pcb calculator |
|||
*/ |
|||
|
|||
#ifndef DIALOG_REGULATOR_FORM_H |
|||
#define DIALOG_REGULATOR_FORM_H |
|||
|
|||
#include "dialog_regulator_form_base.h" |
|||
|
|||
class PCB_CALCULATOR_FRAME; |
|||
class REGULATOR_DATA; |
|||
|
|||
class DIALOG_REGULATOR_FORM : public DIALOG_REGULATOR_FORM_BASE |
|||
{ |
|||
public: |
|||
DIALOG_REGULATOR_FORM( PCB_CALCULATOR_FRAME* parent, const wxString& aRegName ) |
|||
: DIALOG_REGULATOR_FORM_BASE( parent ) |
|||
{ |
|||
m_textCtrlName->SetValue( aRegName ); |
|||
m_textCtrlName->Enable( aRegName.IsEmpty() ); |
|||
UpdateDialog(); |
|||
|
|||
m_sdbSizerOK->SetDefault(); |
|||
|
|||
// Now all widgets have the size fixed, call FinishDialogSettings |
|||
FinishDialogSettings(); |
|||
} |
|||
|
|||
~DIALOG_REGULATOR_FORM(){}; |
|||
|
|||
// Event called functions: |
|||
void OnOKClick( wxCommandEvent& event ) override; |
|||
|
|||
/** |
|||
* Function IsOK() |
|||
* @return true if regulator parameters are acceptable |
|||
*/ |
|||
bool IsOK(); |
|||
|
|||
/** |
|||
* Function CopyRegulatorDataToDialog |
|||
* Transfert data from dialog to aItem |
|||
* @param aItem = a pointer to the REGULATOR_DATA |
|||
*/ |
|||
void CopyRegulatorDataToDialog( REGULATOR_DATA* aItem ); |
|||
|
|||
/** |
|||
* Function BuildRegulatorFromData |
|||
* Creates a new REGULATOR_DATA from dialog |
|||
* @return a pointer to the new REGULATOR_DATA |
|||
*/ |
|||
REGULATOR_DATA* BuildRegulatorFromData(); |
|||
|
|||
/** |
|||
* Enable/disable Iadj realted widgets, according to |
|||
* the regulator type |
|||
*/ |
|||
void UpdateDialog(); |
|||
|
|||
/** |
|||
* called when the current regulator type is changed |
|||
*/ |
|||
void OnRegTypeSelection( wxCommandEvent& event ) override |
|||
{ |
|||
UpdateDialog(); |
|||
} |
|||
}; |
|||
|
|||
#endif // DIALOG_REGULATOR_FORM_H |
Write
Preview
Loading…
Cancel
Save
Reference in new issue