libedit: Allow SPICE parameter editing
This fixes a regression to allow SPICE parameters to be added to the symbol in libedit. Fixes: lp:1793062 * https://bugs.launchpad.net/kicad/+bug/1793062
This commit is contained in:
parent
da295a355f
commit
170ff66cbb
|
@ -39,10 +39,16 @@
|
|||
#include <lib_edit_frame.h>
|
||||
#include <class_library.h>
|
||||
#include <symbol_lib_table.h>
|
||||
#include <sch_item_struct.h>
|
||||
#include <sch_component.h>
|
||||
#include <dialog_helpers.h>
|
||||
#include <bitmaps.h>
|
||||
|
||||
#ifdef KICAD_SPICE
|
||||
#include <dialog_spice_model.h>
|
||||
#include <netlist_exporter_pspice.h>
|
||||
#endif /* KICAD_SPICE */
|
||||
|
||||
#include <dialog_edit_component_in_lib.h>
|
||||
|
||||
|
||||
|
@ -556,6 +562,35 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::transferAliasDataToBuffer()
|
|||
}
|
||||
|
||||
|
||||
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::OnEditSpiceModel( wxCommandEvent& event )
|
||||
{
|
||||
#ifdef KICAD_SPICE
|
||||
int diff = m_fields->size();
|
||||
auto cmp = SCH_COMPONENT( *m_libEntry, m_libEntry->GetLibId(), nullptr );
|
||||
|
||||
DIALOG_SPICE_MODEL dialog( this, cmp, m_fields );
|
||||
|
||||
if( dialog.ShowModal() != wxID_OK )
|
||||
return;
|
||||
|
||||
diff = m_fields->size() - diff;
|
||||
|
||||
if( diff > 0 )
|
||||
{
|
||||
wxGridTableMessage msg( m_fields, wxGRIDTABLE_NOTIFY_ROWS_APPENDED, diff );
|
||||
m_grid->ProcessTableMessage( msg );
|
||||
}
|
||||
else if( diff < 0 )
|
||||
{
|
||||
wxGridTableMessage msg( m_fields, wxGRIDTABLE_NOTIFY_ROWS_DELETED, 0, diff );
|
||||
m_grid->ProcessTableMessage( msg );
|
||||
}
|
||||
|
||||
m_grid->ForceRefresh();
|
||||
#endif /* KICAD_SPICE */
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::OnSelectAlias( wxCommandEvent& event )
|
||||
{
|
||||
if( m_delayedFocusCtrl || !m_aliasGrid->CommitPendingChanges() )
|
||||
|
|
|
@ -96,6 +96,7 @@ private:
|
|||
void OnAliasGridCellChanging( wxGridEvent& event );
|
||||
void OnAliasNameKillFocus( wxFocusEvent& event ) override;
|
||||
void OnAliasNameText( wxCommandEvent& event ) override;
|
||||
void OnEditSpiceModel( wxCommandEvent& event ) override;
|
||||
void OnUpdateUI( wxUpdateUIEvent& event ) override;
|
||||
|
||||
void updateAliasName( bool aFromGrid, const wxString& aName );
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Dec 30 2017)
|
||||
// C++ code generated with wxFormBuilder (version Nov 23 2018)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
|
@ -14,30 +14,30 @@
|
|||
DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style )
|
||||
{
|
||||
this->SetSizeHints( wxDefaultSize, wxDefaultSize );
|
||||
|
||||
|
||||
wxBoxSizer* bMainSizer;
|
||||
bMainSizer = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
|
||||
wxBoxSizer* bUpperSizer;
|
||||
bUpperSizer = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
|
||||
m_NoteBook = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0|wxTAB_TRAVERSAL );
|
||||
m_PanelBasic = new wxPanel( m_NoteBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
wxBoxSizer* bSizerBasicPanel;
|
||||
bSizerBasicPanel = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
|
||||
wxStaticBoxSizer* sbSizer4;
|
||||
sbSizer4 = new wxStaticBoxSizer( new wxStaticBox( m_PanelBasic, wxID_ANY, _("Fields") ), wxVERTICAL );
|
||||
|
||||
|
||||
m_grid = new WX_GRID( sbSizer4->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
|
||||
|
||||
// Grid
|
||||
m_grid->CreateGrid( 4, 11 );
|
||||
m_grid->EnableEditing( true );
|
||||
m_grid->EnableGridLines( true );
|
||||
m_grid->EnableDragGridSize( false );
|
||||
m_grid->SetMargins( 0, 0 );
|
||||
|
||||
|
||||
// Columns
|
||||
m_grid->SetColSize( 0, 72 );
|
||||
m_grid->SetColSize( 1, 120 );
|
||||
|
@ -64,199 +64,199 @@ DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE( wx
|
|||
m_grid->SetColLabelValue( 8, _("Orientation") );
|
||||
m_grid->SetColLabelValue( 9, _("X Position") );
|
||||
m_grid->SetColLabelValue( 10, _("Y Position") );
|
||||
m_grid->SetColLabelAlignment( wxALIGN_CENTRE, wxALIGN_CENTRE );
|
||||
|
||||
m_grid->SetColLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
|
||||
|
||||
// Rows
|
||||
m_grid->EnableDragRowSize( true );
|
||||
m_grid->SetRowLabelSize( 0 );
|
||||
m_grid->SetRowLabelAlignment( wxALIGN_CENTRE, wxALIGN_CENTRE );
|
||||
|
||||
m_grid->SetRowLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
|
||||
|
||||
// Label Appearance
|
||||
|
||||
|
||||
// Cell Defaults
|
||||
m_grid->SetDefaultCellAlignment( wxALIGN_LEFT, wxALIGN_TOP );
|
||||
m_grid->SetMinSize( wxSize( -1,180 ) );
|
||||
|
||||
|
||||
sbSizer4->Add( m_grid, 0, wxTOP|wxBOTTOM|wxEXPAND, 5 );
|
||||
|
||||
|
||||
wxBoxSizer* bButtonSize;
|
||||
bButtonSize = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
m_bpAdd = new wxBitmapButton( sbSizer4->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
|
||||
m_bpAdd = new wxBitmapButton( sbSizer4->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
|
||||
m_bpAdd->SetToolTip( _("Add field") );
|
||||
m_bpAdd->SetMinSize( wxSize( 30,29 ) );
|
||||
|
||||
|
||||
bButtonSize->Add( m_bpAdd, 0, wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_bpMoveUp = new wxBitmapButton( sbSizer4->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
|
||||
m_bpMoveUp = new wxBitmapButton( sbSizer4->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
|
||||
m_bpMoveUp->SetToolTip( _("Move up") );
|
||||
m_bpMoveUp->SetMinSize( wxSize( 30,29 ) );
|
||||
|
||||
|
||||
bButtonSize->Add( m_bpMoveUp, 0, wxRIGHT, 5 );
|
||||
|
||||
m_bpMoveDown = new wxBitmapButton( sbSizer4->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
|
||||
m_bpMoveDown = new wxBitmapButton( sbSizer4->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
|
||||
m_bpMoveDown->SetToolTip( _("Move down") );
|
||||
m_bpMoveDown->SetMinSize( wxSize( 30,29 ) );
|
||||
|
||||
|
||||
bButtonSize->Add( m_bpMoveDown, 0, wxRIGHT, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
bButtonSize->Add( 0, 0, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_bpDelete = new wxBitmapButton( sbSizer4->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
|
||||
m_bpDelete = new wxBitmapButton( sbSizer4->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
|
||||
m_bpDelete->SetToolTip( _("Delete field") );
|
||||
m_bpDelete->SetMinSize( wxSize( 30,29 ) );
|
||||
|
||||
|
||||
bButtonSize->Add( m_bpDelete, 0, wxRIGHT|wxLEFT, 10 );
|
||||
|
||||
|
||||
|
||||
|
||||
sbSizer4->Add( bButtonSize, 1, wxEXPAND|wxBOTTOM, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
bSizerBasicPanel->Add( sbSizer4, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
wxBoxSizer* bSizerMidBasicPanel;
|
||||
bSizerMidBasicPanel = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
|
||||
wxFlexGridSizer* fgSizerFPID;
|
||||
fgSizerFPID = new wxFlexGridSizer( 4, 2, 3, 0 );
|
||||
fgSizerFPID->AddGrowableCol( 1 );
|
||||
fgSizerFPID->SetFlexibleDirection( wxBOTH );
|
||||
fgSizerFPID->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
|
||||
|
||||
wxStaticText* staticNameLabel;
|
||||
staticNameLabel = new wxStaticText( m_PanelBasic, wxID_ANY, _("Symbol name:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
staticNameLabel->Wrap( -1 );
|
||||
fgSizerFPID->Add( staticNameLabel, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
m_SymbolNameCtrl = new wxTextCtrl( m_PanelBasic, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgSizerFPID->Add( m_SymbolNameCtrl, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
wxStaticText* staticDescriptionLabel;
|
||||
staticDescriptionLabel = new wxStaticText( m_PanelBasic, wxID_ANY, _("Description:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
staticDescriptionLabel->Wrap( -1 );
|
||||
fgSizerFPID->Add( staticDescriptionLabel, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
m_DescCtrl = new wxTextCtrl( m_PanelBasic, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgSizerFPID->Add( m_DescCtrl, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
staticKeywordsLabel = new wxStaticText( m_PanelBasic, wxID_ANY, _("Keywords:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
staticKeywordsLabel->Wrap( -1 );
|
||||
fgSizerFPID->Add( staticKeywordsLabel, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
m_KeywordCtrl = new wxTextCtrl( m_PanelBasic, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgSizerFPID->Add( m_KeywordCtrl, 0, wxRIGHT|wxLEFT|wxEXPAND, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
bSizerMidBasicPanel->Add( fgSizerFPID, 1, wxEXPAND|wxTOP|wxBOTTOM, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
bSizerBasicPanel->Add( bSizerMidBasicPanel, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
wxBoxSizer* bSizerLowerBasicPanel;
|
||||
bSizerLowerBasicPanel = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
|
||||
wxBoxSizer* bSizerLeftCol;
|
||||
bSizerLeftCol = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
|
||||
wxStaticBoxSizer* sbSizerSymbol;
|
||||
sbSizerSymbol = new wxStaticBoxSizer( new wxStaticBox( m_PanelBasic, wxID_ANY, _("Symbol") ), wxVERTICAL );
|
||||
|
||||
|
||||
m_AsConvertButt = new wxCheckBox( sbSizerSymbol->GetStaticBox(), wxID_ANY, _("Has alternate symbol (DeMorgan)"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_AsConvertButt->SetToolTip( _("Check this option if the symbol has an alternate body style (De Morgan)") );
|
||||
|
||||
|
||||
sbSizerSymbol->Add( m_AsConvertButt, 0, wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
m_OptionPower = new wxCheckBox( sbSizerSymbol->GetStaticBox(), wxID_ANY, _("Define as power symbol"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_OptionPower->SetToolTip( _("Check this option when the symbol is a power symbol") );
|
||||
|
||||
|
||||
sbSizerSymbol->Add( m_OptionPower, 0, wxALL, 5 );
|
||||
|
||||
|
||||
wxBoxSizer* bSizerUnitCount;
|
||||
bSizerUnitCount = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
|
||||
m_staticTextNbUnits = new wxStaticText( sbSizerSymbol->GetStaticBox(), wxID_ANY, _("Number of Units:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextNbUnits->Wrap( -1 );
|
||||
m_staticTextNbUnits->SetToolTip( _("Enter the number of units for a symbol that contains more than one unit") );
|
||||
|
||||
|
||||
bSizerUnitCount->Add( m_staticTextNbUnits, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
|
||||
m_SelNumberOfUnits = new wxSpinCtrl( sbSizerSymbol->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 1, 26, 1 );
|
||||
bSizerUnitCount->Add( m_SelNumberOfUnits, 0, wxBOTTOM|wxLEFT|wxRIGHT|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
sbSizerSymbol->Add( bSizerUnitCount, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
m_OptionPartsLocked = new wxCheckBox( sbSizerSymbol->GetStaticBox(), wxID_ANY, _("All units are not interchangeable"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_OptionPartsLocked->SetToolTip( _("Check this option when creating multiple unit symbols and all units are not interchangeable") );
|
||||
|
||||
|
||||
sbSizerSymbol->Add( m_OptionPartsLocked, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
bSizerLeftCol->Add( sbSizerSymbol, 0, wxEXPAND|wxALL, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
bSizerLowerBasicPanel->Add( bSizerLeftCol, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
wxBoxSizer* bSizerRightCol;
|
||||
bSizerRightCol = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
|
||||
wxStaticBoxSizer* sbSizerAnnotations;
|
||||
sbSizerAnnotations = new wxStaticBoxSizer( new wxStaticBox( m_PanelBasic, wxID_ANY, _("Annotations") ), wxVERTICAL );
|
||||
|
||||
|
||||
m_ShowPinNumButt = new wxCheckBox( sbSizerAnnotations->GetStaticBox(), wxID_ANY, _("Show pin number"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_ShowPinNumButt->SetValue(true);
|
||||
m_ShowPinNumButt->SetValue(true);
|
||||
m_ShowPinNumButt->SetToolTip( _("Show or hide pin numbers") );
|
||||
|
||||
|
||||
sbSizerAnnotations->Add( m_ShowPinNumButt, 0, wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
m_ShowPinNameButt = new wxCheckBox( sbSizerAnnotations->GetStaticBox(), wxID_ANY, _("Show pin name"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_ShowPinNameButt->SetValue(true);
|
||||
m_ShowPinNameButt->SetValue(true);
|
||||
m_ShowPinNameButt->SetToolTip( _("Show or hide pin names") );
|
||||
|
||||
|
||||
sbSizerAnnotations->Add( m_ShowPinNameButt, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
sbSizerAnnotations->Add( 0, 0, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
m_PinsNameInsideButt = new wxCheckBox( sbSizerAnnotations->GetStaticBox(), wxID_ANY, _("Place pin names inside"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_PinsNameInsideButt->SetValue(true);
|
||||
m_PinsNameInsideButt->SetValue(true);
|
||||
m_PinsNameInsideButt->SetToolTip( _("Check this option to have pin names inside the body and pin number outside.\nIf not checked pins names and pins numbers are outside.") );
|
||||
|
||||
|
||||
sbSizerAnnotations->Add( m_PinsNameInsideButt, 0, wxALL, 5 );
|
||||
|
||||
|
||||
wxBoxSizer* bSizerNameOffset;
|
||||
bSizerNameOffset = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
|
||||
m_nameOffsetLabel = new wxStaticText( sbSizerAnnotations->GetStaticBox(), wxID_ANY, _("Position offset:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_nameOffsetLabel->Wrap( -1 );
|
||||
m_nameOffsetLabel->SetToolTip( _("Margin (in 0.001 inches) between a pin name position and the component body.\nA value from 10 to 40 is usually good.") );
|
||||
|
||||
|
||||
bSizerNameOffset->Add( m_nameOffsetLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 30 );
|
||||
|
||||
|
||||
m_nameOffsetCtrl = new wxTextCtrl( sbSizerAnnotations->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizerNameOffset->Add( m_nameOffsetCtrl, 1, wxLEFT|wxRIGHT, 5 );
|
||||
|
||||
|
||||
m_nameOffsetUnits = new wxStaticText( sbSizerAnnotations->GetStaticBox(), wxID_ANY, _("units"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_nameOffsetUnits->Wrap( -1 );
|
||||
bSizerNameOffset->Add( m_nameOffsetUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
sbSizerAnnotations->Add( bSizerNameOffset, 0, wxEXPAND, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
sbSizerAnnotations->Add( 0, 0, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
bSizerRightCol->Add( sbSizerAnnotations, 1, wxEXPAND|wxALL, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
bSizerLowerBasicPanel->Add( bSizerRightCol, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
bSizerBasicPanel->Add( bSizerLowerBasicPanel, 0, wxEXPAND, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
m_PanelBasic->SetSizer( bSizerBasicPanel );
|
||||
m_PanelBasic->Layout();
|
||||
bSizerBasicPanel->Fit( m_PanelBasic );
|
||||
|
@ -264,58 +264,58 @@ DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE( wx
|
|||
m_PanelAlias = new wxPanel( m_NoteBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
wxBoxSizer* bSizerMainPanelAlias;
|
||||
bSizerMainPanelAlias = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
|
||||
wxBoxSizer* bLeftBoxSizerPanelAlias;
|
||||
bLeftBoxSizerPanelAlias = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
|
||||
wxStaticText* staticAliasesLabel;
|
||||
staticAliasesLabel = new wxStaticText( m_PanelAlias, wxID_ANY, _("Aliases:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
staticAliasesLabel->Wrap( -1 );
|
||||
bLeftBoxSizerPanelAlias->Add( staticAliasesLabel, 0, wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_aliasListBox = new wxListBox( m_PanelAlias, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
|
||||
|
||||
m_aliasListBox = new wxListBox( m_PanelAlias, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
|
||||
bLeftBoxSizerPanelAlias->Add( m_aliasListBox, 1, wxEXPAND|wxLEFT, 5 );
|
||||
|
||||
|
||||
wxBoxSizer* bSizerButtons;
|
||||
bSizerButtons = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
m_addAliasButton = new wxBitmapButton( m_PanelAlias, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
|
||||
m_addAliasButton = new wxBitmapButton( m_PanelAlias, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
|
||||
m_addAliasButton->SetToolTip( _("Add alias") );
|
||||
m_addAliasButton->SetMinSize( wxSize( 30,29 ) );
|
||||
|
||||
|
||||
bSizerButtons->Add( m_addAliasButton, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
bSizerButtons->Add( 0, 0, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_deleteAliasButton = new wxBitmapButton( m_PanelAlias, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
|
||||
m_deleteAliasButton = new wxBitmapButton( m_PanelAlias, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
|
||||
m_deleteAliasButton->SetToolTip( _("Delete alias") );
|
||||
m_deleteAliasButton->SetMinSize( wxSize( 30,29 ) );
|
||||
|
||||
|
||||
bSizerButtons->Add( m_deleteAliasButton, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
bLeftBoxSizerPanelAlias->Add( bSizerButtons, 0, wxEXPAND, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
bSizerMainPanelAlias->Add( bLeftBoxSizerPanelAlias, 2, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
wxBoxSizer* bRightBoxSizerPanelAlias;
|
||||
bRightBoxSizerPanelAlias = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
|
||||
m_staticText12 = new wxStaticText( m_PanelAlias, wxID_ANY, _("Alias field substitutions:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText12->Wrap( -1 );
|
||||
bRightBoxSizerPanelAlias->Add( m_staticText12, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
m_aliasGrid = new WX_GRID( m_PanelAlias, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
|
||||
|
||||
// Grid
|
||||
m_aliasGrid->CreateGrid( 4, 2 );
|
||||
m_aliasGrid->EnableEditing( true );
|
||||
m_aliasGrid->EnableGridLines( true );
|
||||
m_aliasGrid->EnableDragGridSize( false );
|
||||
m_aliasGrid->SetMargins( 0, 0 );
|
||||
|
||||
|
||||
// Columns
|
||||
m_aliasGrid->SetColSize( 0, 72 );
|
||||
m_aliasGrid->SetColSize( 1, 420 );
|
||||
|
@ -333,58 +333,58 @@ DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE( wx
|
|||
m_aliasGrid->SetColLabelValue( 8, _("Orientation") );
|
||||
m_aliasGrid->SetColLabelValue( 9, _("X Position") );
|
||||
m_aliasGrid->SetColLabelValue( 10, _("Y Position") );
|
||||
m_aliasGrid->SetColLabelAlignment( wxALIGN_CENTRE, wxALIGN_CENTRE );
|
||||
|
||||
m_aliasGrid->SetColLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
|
||||
|
||||
// Rows
|
||||
m_aliasGrid->EnableDragRowSize( true );
|
||||
m_aliasGrid->SetRowLabelSize( 0 );
|
||||
m_aliasGrid->SetRowLabelAlignment( wxALIGN_CENTRE, wxALIGN_CENTRE );
|
||||
|
||||
m_aliasGrid->SetRowLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
|
||||
|
||||
// Label Appearance
|
||||
|
||||
|
||||
// Cell Defaults
|
||||
m_aliasGrid->SetDefaultCellAlignment( wxALIGN_LEFT, wxALIGN_TOP );
|
||||
bRightBoxSizerPanelAlias->Add( m_aliasGrid, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
bRightBoxSizerPanelAlias->Add( 0, 0, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 );
|
||||
|
||||
|
||||
wxFlexGridSizer* fgSizerFPID1;
|
||||
fgSizerFPID1 = new wxFlexGridSizer( 6, 1, 0, 0 );
|
||||
fgSizerFPID1->AddGrowableCol( 0 );
|
||||
fgSizerFPID1->SetFlexibleDirection( wxBOTH );
|
||||
fgSizerFPID1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
|
||||
|
||||
wxStaticText* staticAliasNameLabel;
|
||||
staticAliasNameLabel = new wxStaticText( m_PanelAlias, wxID_ANY, _("Alias name:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
staticAliasNameLabel->Wrap( -1 );
|
||||
fgSizerFPID1->Add( staticAliasNameLabel, 0, wxLEFT|wxRIGHT, 5 );
|
||||
|
||||
|
||||
m_AliasNameCtrl = new wxTextCtrl( m_PanelAlias, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgSizerFPID1->Add( m_AliasNameCtrl, 0, wxBOTTOM|wxLEFT|wxRIGHT|wxEXPAND, 5 );
|
||||
|
||||
|
||||
wxStaticText* staticAliasDescLabel;
|
||||
staticAliasDescLabel = new wxStaticText( m_PanelAlias, wxID_ANY, _("Alias description:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
staticAliasDescLabel->Wrap( -1 );
|
||||
fgSizerFPID1->Add( staticAliasDescLabel, 0, wxLEFT|wxRIGHT, 5 );
|
||||
|
||||
|
||||
m_AliasDescCtrl = new wxTextCtrl( m_PanelAlias, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgSizerFPID1->Add( m_AliasDescCtrl, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
|
||||
|
||||
|
||||
staticAliasKeywordsLabel = new wxStaticText( m_PanelAlias, wxID_ANY, _("Alias keywords:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
staticAliasKeywordsLabel->Wrap( -1 );
|
||||
fgSizerFPID1->Add( staticAliasKeywordsLabel, 0, wxLEFT|wxRIGHT, 5 );
|
||||
|
||||
|
||||
m_AliasKeywordsCtrl = new wxTextCtrl( m_PanelAlias, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgSizerFPID1->Add( m_AliasKeywordsCtrl, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
bRightBoxSizerPanelAlias->Add( fgSizerFPID1, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
bSizerMainPanelAlias->Add( bRightBoxSizerPanelAlias, 7, wxEXPAND|wxRIGHT|wxTOP, 20 );
|
||||
|
||||
|
||||
|
||||
|
||||
m_PanelAlias->SetSizer( bSizerMainPanelAlias );
|
||||
m_PanelAlias->Layout();
|
||||
bSizerMainPanelAlias->Fit( m_PanelAlias );
|
||||
|
@ -392,71 +392,86 @@ DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE( wx
|
|||
m_PanelFootprintFilter = new wxPanel( m_NoteBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
wxBoxSizer* bPanelFpFilterBoxSizer;
|
||||
bPanelFpFilterBoxSizer = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
|
||||
wxBoxSizer* bFpFilterLeftBoxSizer;
|
||||
bFpFilterLeftBoxSizer = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
|
||||
m_staticTextFootprints = new wxStaticText( m_PanelFootprintFilter, wxID_ANY, _("Footprint filters:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextFootprints->Wrap( -1 );
|
||||
m_staticTextFootprints->SetToolTip( _("A list of footprints names that can be used for this symbol.\nFootprints names can used wildcards like sm* to allow all footprints names starting by sm.") );
|
||||
|
||||
|
||||
bFpFilterLeftBoxSizer->Add( m_staticTextFootprints, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_FootprintFilterListBox = new wxListBox( m_PanelFootprintFilter, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
|
||||
|
||||
m_FootprintFilterListBox = new wxListBox( m_PanelFootprintFilter, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
|
||||
bFpFilterLeftBoxSizer->Add( m_FootprintFilterListBox, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
wxBoxSizer* bFpFilterRightBoxSizer;
|
||||
bFpFilterRightBoxSizer = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
m_addFilterButton = new wxBitmapButton( m_PanelFootprintFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 30,30 ), 0 );
|
||||
|
||||
m_addFilterButton = new wxBitmapButton( m_PanelFootprintFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 30,30 ), wxBU_AUTODRAW|0 );
|
||||
m_addFilterButton->SetToolTip( _("Add footprint filter") );
|
||||
|
||||
|
||||
bFpFilterRightBoxSizer->Add( m_addFilterButton, 0, wxTOP|wxBOTTOM|wxLEFT, 5 );
|
||||
|
||||
m_editFilterButton = new wxBitmapButton( m_PanelFootprintFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 30,30 ), 0 );
|
||||
|
||||
m_editFilterButton = new wxBitmapButton( m_PanelFootprintFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 30,30 ), wxBU_AUTODRAW|0 );
|
||||
m_editFilterButton->SetToolTip( _("Edit footprint filter") );
|
||||
|
||||
|
||||
bFpFilterRightBoxSizer->Add( m_editFilterButton, 0, wxALL, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
bFpFilterRightBoxSizer->Add( 0, 0, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_deleteFilterButton = new wxBitmapButton( m_PanelFootprintFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 30,30 ), 0 );
|
||||
|
||||
m_deleteFilterButton = new wxBitmapButton( m_PanelFootprintFilter, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 30,30 ), wxBU_AUTODRAW|0 );
|
||||
m_deleteFilterButton->SetToolTip( _("Delete footprint filter") );
|
||||
|
||||
|
||||
bFpFilterRightBoxSizer->Add( m_deleteFilterButton, 0, wxALL, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
bFpFilterLeftBoxSizer->Add( bFpFilterRightBoxSizer, 0, 0, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
bPanelFpFilterBoxSizer->Add( bFpFilterLeftBoxSizer, 1, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
m_PanelFootprintFilter->SetSizer( bPanelFpFilterBoxSizer );
|
||||
m_PanelFootprintFilter->Layout();
|
||||
bPanelFpFilterBoxSizer->Fit( m_PanelFootprintFilter );
|
||||
m_NoteBook->AddPage( m_PanelFootprintFilter, _("Footprint Filters"), false );
|
||||
|
||||
|
||||
bUpperSizer->Add( m_NoteBook, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
bMainSizer->Add( bUpperSizer, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
wxBoxSizer* bSizer101;
|
||||
bSizer101 = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
|
||||
bSizer101->Add( 0, 0, 1, wxEXPAND, 5 );
|
||||
|
||||
m_spiceFieldsButton = new wxButton( this, wxID_ANY, _("Edit Spice Model..."), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizer101->Add( m_spiceFieldsButton, 0, wxEXPAND|wxALL, 5 );
|
||||
|
||||
|
||||
bSizer101->Add( 0, 0, 0, wxEXPAND|wxRIGHT|wxLEFT, 15 );
|
||||
|
||||
m_stdSizerButton = new wxStdDialogButtonSizer();
|
||||
m_stdSizerButtonOK = new wxButton( this, wxID_OK );
|
||||
m_stdSizerButton->AddButton( m_stdSizerButtonOK );
|
||||
m_stdSizerButtonCancel = new wxButton( this, wxID_CANCEL );
|
||||
m_stdSizerButton->AddButton( m_stdSizerButtonCancel );
|
||||
m_stdSizerButton->Realize();
|
||||
|
||||
bMainSizer->Add( m_stdSizerButton, 0, wxEXPAND|wxALL, 5 );
|
||||
|
||||
|
||||
|
||||
bSizer101->Add( m_stdSizerButton, 0, wxEXPAND|wxALL, 5 );
|
||||
|
||||
|
||||
bMainSizer->Add( bSizer101, 0, wxEXPAND, 5 );
|
||||
|
||||
|
||||
this->SetSizer( bMainSizer );
|
||||
this->Layout();
|
||||
bMainSizer->Fit( this );
|
||||
|
||||
|
||||
// Connect Events
|
||||
this->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::OnUpdateUI ) );
|
||||
m_grid->Connect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::OnSizeGrid ), NULL, this );
|
||||
|
@ -475,6 +490,7 @@ DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE( wx
|
|||
m_addFilterButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::OnAddFootprintFilter ), NULL, this );
|
||||
m_editFilterButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::OnEditFootprintFilter ), NULL, this );
|
||||
m_deleteFilterButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::OnDeleteFootprintFilter ), NULL, this );
|
||||
m_spiceFieldsButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::OnEditSpiceModel ), NULL, this );
|
||||
}
|
||||
|
||||
DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::~DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE()
|
||||
|
@ -497,5 +513,6 @@ DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::~DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE()
|
|||
m_addFilterButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::OnAddFootprintFilter ), NULL, this );
|
||||
m_editFilterButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::OnEditFootprintFilter ), NULL, this );
|
||||
m_deleteFilterButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::OnDeleteFootprintFilter ), NULL, this );
|
||||
|
||||
m_spiceFieldsButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::OnEditSpiceModel ), NULL, this );
|
||||
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,12 +1,11 @@
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Dec 30 2017)
|
||||
// C++ code generated with wxFormBuilder (version Nov 23 2018)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef __DIALOG_EDIT_COMPONENT_IN_LIB_BASE_H__
|
||||
#define __DIALOG_EDIT_COMPONENT_IN_LIB_BASE_H__
|
||||
#pragma once
|
||||
|
||||
#include <wx/artprov.h>
|
||||
#include <wx/xrc/xmlres.h>
|
||||
|
@ -20,10 +19,10 @@ class WX_GRID;
|
|||
#include <wx/font.h>
|
||||
#include <wx/grid.h>
|
||||
#include <wx/gdicmn.h>
|
||||
#include <wx/bmpbuttn.h>
|
||||
#include <wx/bitmap.h>
|
||||
#include <wx/image.h>
|
||||
#include <wx/icon.h>
|
||||
#include <wx/bmpbuttn.h>
|
||||
#include <wx/button.h>
|
||||
#include <wx/sizer.h>
|
||||
#include <wx/statbox.h>
|
||||
|
@ -46,7 +45,7 @@ class WX_GRID;
|
|||
class DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE : public DIALOG_SHIM
|
||||
{
|
||||
private:
|
||||
|
||||
|
||||
protected:
|
||||
wxNotebook* m_NoteBook;
|
||||
wxPanel* m_PanelBasic;
|
||||
|
@ -86,10 +85,11 @@ class DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE : public DIALOG_SHIM
|
|||
wxBitmapButton* m_addFilterButton;
|
||||
wxBitmapButton* m_editFilterButton;
|
||||
wxBitmapButton* m_deleteFilterButton;
|
||||
wxButton* m_spiceFieldsButton;
|
||||
wxStdDialogButtonSizer* m_stdSizerButton;
|
||||
wxButton* m_stdSizerButtonOK;
|
||||
wxButton* m_stdSizerButtonCancel;
|
||||
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
virtual void OnUpdateUI( wxUpdateUIEvent& event ) { event.Skip(); }
|
||||
virtual void OnSizeGrid( wxSizeEvent& event ) { event.Skip(); }
|
||||
|
@ -108,13 +108,13 @@ class DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE : public DIALOG_SHIM
|
|||
virtual void OnAddFootprintFilter( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnEditFootprintFilter( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnDeleteFootprintFilter( wxCommandEvent& event ) { event.Skip(); }
|
||||
|
||||
|
||||
virtual void OnEditSpiceModel( wxCommandEvent& event ) { event.Skip(); }
|
||||
|
||||
|
||||
public:
|
||||
|
||||
DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE( wxWindow* parent, wxWindowID id = ID_LIBEDIT_NOTEBOOK, const wxString& title = _("Library Symbol Properties"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
||||
|
||||
DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE( wxWindow* parent, wxWindowID id = ID_LIBEDIT_NOTEBOOK, const wxString& title = _("Library Symbol Properties"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
||||
~DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE();
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif //__DIALOG_EDIT_COMPONENT_IN_LIB_BASE_H__
|
||||
|
|
|
@ -323,7 +323,7 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnEditSpiceModel( wxCommandEvent& event
|
|||
#ifdef KICAD_SPICE
|
||||
int diff = m_fields->size();
|
||||
|
||||
DIALOG_SPICE_MODEL dialog( this, *m_cmp, *m_fields );
|
||||
DIALOG_SPICE_MODEL dialog( this, *m_cmp, m_fields );
|
||||
|
||||
if( dialog.ShowModal() != wxID_OK )
|
||||
return;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -92,9 +92,25 @@ static int getModelTypeIdx( char aPrimitive )
|
|||
}
|
||||
|
||||
|
||||
DIALOG_SPICE_MODEL::DIALOG_SPICE_MODEL( wxWindow* aParent, SCH_COMPONENT& aComponent, SCH_FIELDS& aFields )
|
||||
: DIALOG_SPICE_MODEL_BASE( aParent ), m_component( aComponent ), m_fields( aFields ),
|
||||
m_spiceEmptyValidator( true ), m_notEmptyValidator( wxFILTER_EMPTY )
|
||||
DIALOG_SPICE_MODEL::DIALOG_SPICE_MODEL( wxWindow* aParent, SCH_COMPONENT& aComponent, SCH_FIELDS* aFields )
|
||||
: DIALOG_SPICE_MODEL_BASE( aParent ), m_component( aComponent ), m_schfields( aFields ),
|
||||
m_useSchFields( true ),
|
||||
m_spiceEmptyValidator( true ), m_notEmptyValidator( wxFILTER_EMPTY )
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
|
||||
DIALOG_SPICE_MODEL::DIALOG_SPICE_MODEL( wxWindow* aParent, SCH_COMPONENT& aComponent, LIB_FIELDS* aFields )
|
||||
: DIALOG_SPICE_MODEL_BASE( aParent ), m_component( aComponent ),
|
||||
m_libfields( aFields ), m_useSchFields( false ),
|
||||
m_spiceEmptyValidator( true ), m_notEmptyValidator( wxFILTER_EMPTY )
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_SPICE_MODEL::Init()
|
||||
{
|
||||
m_pasValue->SetValidator( m_spiceValidator );
|
||||
|
||||
|
@ -136,7 +152,6 @@ DIALOG_SPICE_MODEL::DIALOG_SPICE_MODEL( wxWindow* aParent, SCH_COMPONENT& aCompo
|
|||
m_pwlValueCol = m_pwlValList->AppendColumn( "Value [V/A]", wxLIST_FORMAT_LEFT, 100 );
|
||||
|
||||
m_sdbSizerOK->SetDefault();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -213,19 +228,22 @@ bool DIALOG_SPICE_MODEL::TransferDataFromWindow()
|
|||
{
|
||||
if( m_fieldsTmp.count( (SPICE_FIELD) i ) > 0 && !m_fieldsTmp.at( i ).IsEmpty() )
|
||||
{
|
||||
getField( i ).SetText( m_fieldsTmp[i] );
|
||||
if( m_useSchFields )
|
||||
getSchField( i ).SetText( m_fieldsTmp[i] );
|
||||
else
|
||||
getLibField( i ).SetText( m_fieldsTmp[i] );
|
||||
}
|
||||
else
|
||||
{
|
||||
// Erase empty fields (having empty fields causes a warning in the properties dialog)
|
||||
const wxString& spiceField = NETLIST_EXPORTER_PSPICE::GetSpiceFieldName( (SPICE_FIELD) i );
|
||||
|
||||
auto fieldIt = std::find_if( m_fields.begin(), m_fields.end(), [&]( const SCH_FIELD& f ) {
|
||||
return f.GetName() == spiceField;
|
||||
} );
|
||||
|
||||
if( fieldIt != m_fields.end() )
|
||||
m_fields.erase( fieldIt );
|
||||
if( m_useSchFields )
|
||||
m_schfields->erase( std::remove_if( m_schfields->begin(), m_schfields->end(),
|
||||
[&]( const SCH_FIELD& f ) { return f.GetName() == spiceField; } ), m_schfields->end() );
|
||||
else
|
||||
m_libfields->erase( std::remove_if( m_libfields->begin(), m_libfields->end(),
|
||||
[&]( const LIB_FIELD& f ) { return f.GetName() == spiceField; } ), m_libfields->end() );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -242,16 +260,33 @@ bool DIALOG_SPICE_MODEL::TransferDataToWindow()
|
|||
{
|
||||
const wxString& spiceField = spiceFields[idx];
|
||||
|
||||
auto fieldIt = std::find_if( m_fields.begin(), m_fields.end(), [&]( const SCH_FIELD& f ) {
|
||||
return f.GetName() == spiceField;
|
||||
} );
|
||||
m_fieldsTmp[idx] = NETLIST_EXPORTER_PSPICE::GetSpiceFieldDefVal( (SPICE_FIELD) idx, &m_component,
|
||||
NET_ADJUST_INCLUDE_PATHS | NET_ADJUST_PASSIVE_VALS );
|
||||
|
||||
// Do not modify the existing value, just add missing fields with default values
|
||||
if( fieldIt != m_fields.end() && !fieldIt->GetText().IsEmpty() )
|
||||
m_fieldsTmp[idx] = fieldIt->GetText();
|
||||
else
|
||||
m_fieldsTmp[idx] = NETLIST_EXPORTER_PSPICE::GetSpiceFieldDefVal( (SPICE_FIELD) idx, &m_component,
|
||||
NET_ADJUST_INCLUDE_PATHS | NET_ADJUST_PASSIVE_VALS );
|
||||
if( m_schfields )
|
||||
{
|
||||
for( auto field : *m_schfields )
|
||||
{
|
||||
if( field.GetName() == spiceField && !field.GetText().IsEmpty() )
|
||||
{
|
||||
m_fieldsTmp[idx] = field.GetText();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if( m_libfields)
|
||||
{
|
||||
// TODO: There must be a good way to template out these repetitive calls
|
||||
for( auto field : *m_libfields )
|
||||
{
|
||||
if( field.GetName() == spiceField && !field.GetText().IsEmpty() )
|
||||
{
|
||||
m_fieldsTmp[idx] = field.GetText();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Analyze the component fields to fill out the dialog
|
||||
|
@ -714,21 +749,43 @@ void DIALOG_SPICE_MODEL::loadLibrary( const wxString& aFilePath )
|
|||
}
|
||||
|
||||
|
||||
SCH_FIELD& DIALOG_SPICE_MODEL::getField( int aFieldType )
|
||||
SCH_FIELD& DIALOG_SPICE_MODEL::getSchField( int aFieldType )
|
||||
{
|
||||
const wxString& spiceField = NETLIST_EXPORTER_PSPICE::GetSpiceFieldName( (SPICE_FIELD) aFieldType );
|
||||
|
||||
auto fieldIt = std::find_if( m_fields.begin(), m_fields.end(), [&]( const SCH_FIELD& f ) {
|
||||
auto fieldIt = std::find_if( m_schfields->begin(), m_schfields->end(), [&]( const SCH_FIELD& f ) {
|
||||
return f.GetName() == spiceField;
|
||||
} );
|
||||
|
||||
// Found one, so return it
|
||||
if( fieldIt != m_fields.end() )
|
||||
if( fieldIt != m_schfields->end() )
|
||||
return *fieldIt;
|
||||
|
||||
// Create a new field with requested name
|
||||
m_fields.emplace_back( wxPoint(), m_fields.size(), &m_component, spiceField );
|
||||
return m_fields.back();
|
||||
m_schfields->emplace_back( wxPoint(), m_schfields->size(), &m_component, spiceField );
|
||||
return m_schfields->back();
|
||||
}
|
||||
|
||||
|
||||
LIB_FIELD& DIALOG_SPICE_MODEL::getLibField( int aFieldType )
|
||||
{
|
||||
const wxString& spiceField = NETLIST_EXPORTER_PSPICE::GetSpiceFieldName( (SPICE_FIELD) aFieldType );
|
||||
|
||||
auto fieldIt = std::find_if( m_libfields->begin(), m_libfields->end(), [&]( const LIB_FIELD& f ) {
|
||||
return f.GetName() == spiceField;
|
||||
} );
|
||||
|
||||
// Found one, so return it
|
||||
if( fieldIt != m_libfields->end() )
|
||||
return *fieldIt;
|
||||
|
||||
// Create a new field with requested name
|
||||
LIB_FIELD new_field( m_libfields->size() );
|
||||
m_libfields->front().Copy( &new_field );
|
||||
new_field.SetName( spiceField );
|
||||
|
||||
m_libfields->push_back( new_field );
|
||||
return m_libfields->back();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -30,13 +30,16 @@
|
|||
|
||||
#include <sim/spice_value.h>
|
||||
#include <sch_component.h>
|
||||
#include <sch_field.h>
|
||||
#include <lib_field.h>
|
||||
|
||||
#include <wx/valnum.h>
|
||||
|
||||
class DIALOG_SPICE_MODEL : public DIALOG_SPICE_MODEL_BASE
|
||||
{
|
||||
public:
|
||||
DIALOG_SPICE_MODEL( wxWindow* aParent, SCH_COMPONENT& aComponent, SCH_FIELDS& aSchFields );
|
||||
DIALOG_SPICE_MODEL( wxWindow* aParent, SCH_COMPONENT& aComponent, SCH_FIELDS* aSchFields );
|
||||
DIALOG_SPICE_MODEL( wxWindow* aParent, SCH_COMPONENT& aComponent, LIB_FIELDS* aLibFields );
|
||||
|
||||
private:
|
||||
/**
|
||||
|
@ -67,7 +70,8 @@ private:
|
|||
* @param aFieldType is an SPICE_FIELD enum value.
|
||||
* @return Requested field.
|
||||
*/
|
||||
SCH_FIELD& getField( int aFieldType );
|
||||
SCH_FIELD& getSchField( int aFieldType );
|
||||
LIB_FIELD& getLibField( int aFieldType );
|
||||
|
||||
/**
|
||||
* Adds a value to the PWL values list.
|
||||
|
@ -98,6 +102,11 @@ private:
|
|||
FinishDialogSettings();
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the internal settings
|
||||
*/
|
||||
void Init();
|
||||
|
||||
// Event handlers
|
||||
void onSelectLibrary( wxCommandEvent& event ) override;
|
||||
void onModelSelected( wxCommandEvent& event ) override;
|
||||
|
@ -108,7 +117,9 @@ private:
|
|||
SCH_COMPONENT& m_component;
|
||||
|
||||
///> Fields from the component properties dialog
|
||||
SCH_FIELDS& m_fields;
|
||||
SCH_FIELDS* m_schfields;
|
||||
LIB_FIELDS* m_libfields;
|
||||
bool m_useSchFields;
|
||||
|
||||
///> Temporary field values
|
||||
std::map<int, wxString> m_fieldsTmp;
|
||||
|
|
|
@ -61,6 +61,14 @@ LIB_FIELD::LIB_FIELD( int idfield ) :
|
|||
}
|
||||
|
||||
|
||||
LIB_FIELD::LIB_FIELD( int aID, wxString& aName ) :
|
||||
LIB_ITEM( LIB_FIELD_T, NULL )
|
||||
{
|
||||
Init( aID );
|
||||
m_name = aName;
|
||||
}
|
||||
|
||||
|
||||
LIB_FIELD::~LIB_FIELD()
|
||||
{
|
||||
}
|
||||
|
|
|
@ -89,6 +89,8 @@ public:
|
|||
|
||||
LIB_FIELD( int idfield = 2 );
|
||||
|
||||
LIB_FIELD( int aID, wxString& aName );
|
||||
|
||||
LIB_FIELD( LIB_PART * aParent, int idfield = 2 );
|
||||
|
||||
// Do not create a copy constructor. The one generated by the compiler is adequate.
|
||||
|
|
|
@ -153,7 +153,10 @@ SCH_COMPONENT::SCH_COMPONENT( LIB_PART& aPart, LIB_ID aLibId, SCH_SHEET_PATH* sh
|
|||
UpdatePinCache();
|
||||
|
||||
// Update the reference -- just the prefix for now.
|
||||
SetRef( sheet, aPart.GetReferenceField().GetText() + wxT( "?" ) );
|
||||
if( sheet )
|
||||
SetRef( sheet, aPart.GetReferenceField().GetText() + wxT( "?" ) );
|
||||
else
|
||||
m_prefix = aPart.GetReferenceField().GetText() + wxT( "?" );
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue