7
mirror of https://gitlab.com/kicad/code/kicad.git synced 2025-04-19 18:01:21 +00:00

ADDED new footprint fabrication attributes.

This commit also adds mapping of the new symbol properties
"exclude from BOM" and "exclude from board" to be correctly
handled in Update Board from Schematic.

Fixes https://gitlab.com/kicad/code/kicad/issues/2399

Fixes https://gitlab.com/kicad/code/kicad/issues/4643

Fixes https://gitlab.com/kicad/code/kicad/issues/2233
This commit is contained in:
Jeff Young 2020-08-26 22:43:38 +01:00
parent b8aee85b94
commit e7db43285f
42 changed files with 1222 additions and 537 deletions

View File

@ -227,17 +227,12 @@ void BOARD_ADAPTER::SetFlag( DISPLAY3D_FLG aFlag, bool aState )
bool BOARD_ADAPTER::ShouldModuleBeDisplayed( MODULE_ATTR_T aModuleAttributs ) const
{
if( ( ( aModuleAttributs == MOD_DEFAULT ) &&
GetFlag( FL_MODULE_ATTRIBUTES_NORMAL ) ) ||
( ( ( aModuleAttributs & MOD_CMS) == MOD_CMS ) &&
GetFlag( FL_MODULE_ATTRIBUTES_NORMAL_INSERT ) ) ||
( ( ( aModuleAttributs & MOD_VIRTUAL) == MOD_VIRTUAL ) &&
GetFlag( FL_MODULE_ATTRIBUTES_VIRTUAL ) ) )
{
return true;
}
return false;
if( aModuleAttributs & MOD_SMD )
return GetFlag( FL_MODULE_ATTRIBUTES_NORMAL_INSERT );
else if( aModuleAttributs & MOD_THROUGH_HOLE )
return GetFlag( FL_MODULE_ATTRIBUTES_NORMAL );
else
return GetFlag( FL_MODULE_ATTRIBUTES_VIRTUAL );
}

View File

@ -44,6 +44,7 @@ aux_axis_origin
bevelled
blind
blind_buried_vias_allowed
board_only
bold
bottom
bottom_left
@ -90,6 +91,8 @@ edge_width
effects
end
epsilon_r
exclude_from_pos_files
exclude_from_bom
fab_layers_line_width
fab_layers_text_dims
feature1
@ -239,6 +242,7 @@ thermal_width
thermal_gap
thermal_bridge_width
thickness
through_hole
through_hole_min
top
top_left

View File

@ -37,7 +37,7 @@
static bool sortPinsByNumber( LIB_PIN* aPin1, LIB_PIN* aPin2 );
bool NETLIST_EXPORTER_GENERIC::WriteNetlist( const wxString& aOutFileName,
unsigned aNetlistOptions )
unsigned aNetlistOptions )
{
// output the XML format netlist.
wxXmlDocument xdoc;
@ -87,7 +87,7 @@ struct COMP_FIELDS
void NETLIST_EXPORTER_GENERIC::addComponentFields( XNODE* xcomp, SCH_COMPONENT* comp,
SCH_SHEET_PATH* aSheet )
SCH_SHEET_PATH* aSheet )
{
COMP_FIELDS fields;
@ -123,15 +123,30 @@ void NETLIST_EXPORTER_GENERIC::addComponentFields( XNODE* xcomp, SCH_COMPONENT*
// field value)
if( !comp2->GetField( VALUE )->IsVoid()
&& ( unit < minUnit || fields.value.IsEmpty() ) )
fields.value = comp2->GetField( VALUE )->GetShownText();
{
if( m_resolveTextVars )
fields.value = comp2->GetField( VALUE )->GetShownText();
else
fields.value = comp2->GetField( VALUE )->GetText();
}
if( !comp2->GetField( FOOTPRINT )->IsVoid()
&& ( unit < minUnit || fields.footprint.IsEmpty() ) )
fields.footprint = comp2->GetField( FOOTPRINT )->GetShownText();
{
if( m_resolveTextVars )
fields.footprint = comp2->GetField( FOOTPRINT )->GetShownText();
else
fields.footprint = comp2->GetField( FOOTPRINT )->GetText();
}
if( !comp2->GetField( DATASHEET )->IsVoid()
&& ( unit < minUnit || fields.datasheet.IsEmpty() ) )
fields.datasheet = comp2->GetField( DATASHEET )->GetShownText();
{
if( m_resolveTextVars )
fields.datasheet = comp2->GetField( DATASHEET )->GetShownText();
else
fields.datasheet = comp2->GetField( DATASHEET )->GetText();
}
for( int fldNdx = MANDATORY_FIELDS; fldNdx < comp2->GetFieldCount(); ++fldNdx )
{
@ -140,7 +155,10 @@ void NETLIST_EXPORTER_GENERIC::addComponentFields( XNODE* xcomp, SCH_COMPONENT*
if( f->GetText().size()
&& ( unit < minUnit || fields.f.count( f->GetName() ) == 0 ) )
{
fields.f[ f->GetName() ] = f->GetShownText();
if( m_resolveTextVars )
fields.f[ f->GetName() ] = f->GetShownText();
else
fields.f[ f->GetName() ] = f->GetText();
}
}
@ -150,16 +168,32 @@ void NETLIST_EXPORTER_GENERIC::addComponentFields( XNODE* xcomp, SCH_COMPONENT*
}
else
{
fields.value = comp->GetField( VALUE )->GetShownText();
fields.footprint = comp->GetField( FOOTPRINT )->GetShownText();
fields.datasheet = comp->GetField( DATASHEET )->GetShownText();
if( m_resolveTextVars )
fields.value = comp->GetField( VALUE )->GetShownText();
else
fields.value = comp->GetField( VALUE )->GetText();
if( m_resolveTextVars )
fields.footprint = comp->GetField( FOOTPRINT )->GetShownText();
else
fields.footprint = comp->GetField( FOOTPRINT )->GetText();
if( m_resolveTextVars )
fields.datasheet = comp->GetField( DATASHEET )->GetShownText();
else
fields.datasheet = comp->GetField( DATASHEET )->GetText();
for( int fldNdx = MANDATORY_FIELDS; fldNdx < comp->GetFieldCount(); ++fldNdx )
{
SCH_FIELD* f = comp->GetField( fldNdx );
if( f->GetText().size() )
fields.f[ f->GetName() ] = f->GetShownText();
{
if( m_resolveTextVars )
fields.f[ f->GetName() ] = f->GetShownText();
else
fields.f[ f->GetName() ] = f->GetText();
}
}
}
@ -265,26 +299,36 @@ XNODE* NETLIST_EXPORTER_GENERIC::makeComponents( unsigned aCtl )
xlibsource->AddAttribute( "description", comp->GetDescription() );
XNODE* xproperty;
std::vector<SCH_FIELD>& fields = comp->GetFields();
for( size_t jj = MANDATORY_FIELDS; jj < fields.size(); ++jj )
{
XNODE* xproperty;
xcomp->AddChild( xproperty = node( "property" ) );
xproperty->AddAttribute( "name", fields[jj].GetName() );
xproperty->AddAttribute( "value", fields[jj].GetText() );
}
for( const SCH_FIELD& sheetField : sheet.Last()->GetFields() )
{
XNODE* xproperty;
xcomp->AddChild( xproperty = node( "property" ) );
xproperty->AddAttribute( "name", sheetField.GetName() );
xproperty->AddAttribute( "value", sheetField.GetText() );
}
if( !comp->GetIncludeInBom() )
{
xcomp->AddChild( xproperty = node( "property" ) );
xproperty->AddAttribute( "name", "exclude_from_bom" );
}
if( !comp->GetIncludeOnBoard() )
{
xcomp->AddChild( xproperty = node( "property" ) );
xproperty->AddAttribute( "name", "exclude_from_board" );
}
XNODE* xsheetpath;
xcomp->AddChild( xsheetpath = node( "sheetpath" ) );

View File

@ -62,11 +62,15 @@ enum GNL_T
class NETLIST_EXPORTER_GENERIC : public NETLIST_EXPORTER
{
private:
std::set< wxString > m_libraries; ///< Set of library nicknames.
std::set<wxString> m_libraries; // Set of library nicknames.
protected:
bool m_resolveTextVars; // Export textVar references resolved
public:
NETLIST_EXPORTER_GENERIC( SCHEMATIC* aSchematic ) :
NETLIST_EXPORTER( aSchematic )
NETLIST_EXPORTER( aSchematic ),
m_resolveTextVars( true )
{}
/**

View File

@ -39,7 +39,9 @@ class NETLIST_EXPORTER_KICAD : public NETLIST_EXPORTER_GENERIC
public:
NETLIST_EXPORTER_KICAD( SCHEMATIC* aSchematic ) :
NETLIST_EXPORTER_GENERIC( aSchematic )
{}
{
m_resolveTextVars = false;
}
/**
* Write netlist to \a aOutFileName.

View File

@ -40,7 +40,7 @@ MODULE::MODULE( BOARD* parent ) :
BOARD_ITEM_CONTAINER( (BOARD_ITEM*) parent, PCB_MODULE_T ),
m_initial_comments( 0 )
{
m_Attributs = MOD_DEFAULT;
m_Attributs = 0;
m_Layer = F_Cu;
m_Orient = 0;
m_ModuleStatus = MODULE_PADS_LOCKED;
@ -673,26 +673,33 @@ void MODULE::GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM
: _( "Front" ), RED );
}
msg = wxT( ". ." );
auto addToken = []( wxString* aStr, const wxString& aAttr )
{
if( !aStr->IsEmpty() )
*aStr += wxT( ", " );
*aStr += aAttr;
};
wxString status;
wxString attrs;
if( IsLocked() )
msg[0] = 'L';
addToken( &status, _( "locked" ) );
if( m_ModuleStatus & MODULE_is_PLACED )
msg[2] = 'P';
addToken( &status, _( "autoplaced" ) );
aList.emplace_back( _( "Status" ), msg, MAGENTA );
if( m_Attributs & MOD_BOARD_ONLY )
addToken( &attrs, _( "not in schematic" ) );
// Controls on right side of the dialog
switch( m_Attributs & 255 )
{
case 0: msg = _( "Normal" ); break;
case MOD_CMS: msg = _( "Insert" ); break;
case MOD_VIRTUAL: msg = _( "Virtual" ); break;
default: msg = wxT( "???" ); break;
}
if( m_Attributs & MOD_EXCLUDE_FROM_POS_FILES )
addToken( &attrs, _( "exclude from pos files" ) );
aList.emplace_back( _( "Attributes" ), msg, BROWN );
if( m_Attributs * MOD_EXCLUDE_FROM_BOM )
addToken( &attrs, _( "exclude from BOM" ) );
aList.emplace_back( _( "Status: " ) + status, _( "Attributes: " ) + attrs, BROWN );
msg.Printf( "%.2f", GetOrientationDegrees() );
aList.emplace_back( _( "Rotation" ), msg, BROWN );
@ -1634,11 +1641,9 @@ void MODULE::SwapData( BOARD_ITEM* aImage )
}
bool MODULE::HasNonSMDPins() const
bool MODULE::HasThroughHolePads() const
{
// returns true if the given module has at lesat one non smd pin, such as through hole
for( auto pad : Pads() )
for( D_PAD* pad : Pads() )
{
if( pad->GetAttribute() != PAD_ATTRIB_SMD )
return true;

View File

@ -64,37 +64,37 @@ enum INCLUDE_NPTH_T
*/
enum MODULE_ATTR_T
{
MOD_DEFAULT = 0, ///< default
MOD_CMS = 1, ///< Set for modules listed in the automatic insertion list
///< (usually SMD footprints)
MOD_VIRTUAL = 2 ///< Virtual component: when created by copper shapes on
///< board (Like edge card connectors, mounting hole...)
MOD_THROUGH_HOLE = 0x0001,
MOD_SMD = 0x0002,
MOD_EXCLUDE_FROM_POS_FILES = 0x0004,
MOD_EXCLUDE_FROM_BOM = 0x0008,
MOD_BOARD_ONLY = 0x0010 // Footprint has no corresponding symbol
};
class MODULE_3D_SETTINGS
{
public:
MODULE_3D_SETTINGS() :
// Initialize with sensible values
m_Scale { 1, 1, 1 },
m_Rotation { 0, 0, 0 },
m_Offset { 0, 0, 0 },
m_Opacity( 1.0 ),
m_Show( true )
{
}
public:
MODULE_3D_SETTINGS() :
// Initialize with sensible values
m_Scale { 1, 1, 1 },
m_Rotation { 0, 0, 0 },
m_Offset { 0, 0, 0 },
m_Opacity( 1.0 ),
m_Show( true )
{
}
struct VECTOR3D
{
double x, y, z;
};
struct VECTOR3D
{
double x, y, z;
};
VECTOR3D m_Scale; ///< 3D model scaling factor (dimensionless)
VECTOR3D m_Rotation; ///< 3D model rotation (degrees)
VECTOR3D m_Offset; ///< 3D model offset (mm)
double m_Opacity;
wxString m_Filename; ///< The 3D shape filename in 3D library
bool m_Show; ///< Include module in rendering
VECTOR3D m_Scale; ///< 3D model scaling factor (dimensionless)
VECTOR3D m_Rotation; ///< 3D model rotation (degrees)
VECTOR3D m_Offset; ///< 3D model offset (mm)
double m_Opacity;
wxString m_Filename; ///< The 3D shape filename in 3D library
bool m_Show; ///< Include module in rendering
};
DECL_DEQ_FOR_SWIG( PADS, D_PAD* )
@ -201,12 +201,7 @@ public:
return m_fp_zones;
}
/**
* @return true if the given module has any non smd pins, such as through hole
* and therefore cannot be placed automatically.
* Used in Pick and Place files writers
*/
bool HasNonSMDPins() const;
bool HasThroughHolePads() const;
std::list<MODULE_3D_SETTINGS>& Models() { return m_3D_Drawings; }
const std::list<MODULE_3D_SETTINGS>& Models() const { return m_3D_Drawings; }

View File

@ -132,9 +132,8 @@ void DIALOG_BOARD_STATISTICS::refreshItemsTypes()
// If you need some more types to be shown, simply add them to the
// corresponding list
m_componentsTypes.push_back( componentsType_t( MOD_DEFAULT, _( "THT:" ) ) );
m_componentsTypes.push_back( componentsType_t( MOD_CMS, _( "SMD:" ) ) );
m_componentsTypes.push_back( componentsType_t( MOD_VIRTUAL, _( "Virtual:" ) ) );
m_componentsTypes.push_back( componentsType_t( MOD_THROUGH_HOLE, _( "THT:" ) ) );
m_componentsTypes.push_back( componentsType_t( MOD_SMD, _( "SMD:" ) ) );
m_padsTypes.clear();
m_padsTypes.push_back( padsType_t( PAD_ATTRIB_STANDARD, _( "Through hole:" ) ) );
@ -177,21 +176,19 @@ bool DIALOG_BOARD_STATISTICS::TransferDataToWindow()
void DIALOG_BOARD_STATISTICS::getDataFromPCB()
{
auto board = m_parentFrame->GetBoard();
BOARD* board = m_parentFrame->GetBoard();
// Get modules and pads count
for( MODULE* module : board->Modules() )
{
auto& pads = module->Pads();
// Do not proceed modules with no pads if checkbox checked
if( m_checkBoxExcludeComponentsNoPins->GetValue() && !pads.size() )
if( m_checkBoxExcludeComponentsNoPins->GetValue() && ! module->Pads().size() )
continue;
// Go through components types list
for( auto& type : m_componentsTypes )
{
if( module->GetAttributes() == type.attribute )
if( ( module->GetAttributes() & type.attribute ) > 0 )
{
if( module->IsFlipped() )
type.backSideQty++;
@ -201,7 +198,7 @@ void DIALOG_BOARD_STATISTICS::getDataFromPCB()
}
}
for( auto& pad : pads )
for( D_PAD* pad : module->Pads() )
{
// Go through pads types list
for( auto& type : m_padsTypes )
@ -254,9 +251,9 @@ void DIALOG_BOARD_STATISTICS::getDataFromPCB()
}
// Get via counts
for( auto& track : board->Tracks() )
for( TRACK* track : board->Tracks() )
{
if( auto via = dyn_cast<VIA*>( track ) )
if( VIA* via = dyn_cast<VIA*>( track ) )
{
for( auto& type : m_viasTypes )
{
@ -300,7 +297,8 @@ void DIALOG_BOARD_STATISTICS::getDataFromPCB()
// If board has no Edge Cuts lines, board->GetBoardPolygonOutlines will
// return small rectangle, so we double check that
bool edgeCutsExists = false;
for( auto& drawing : board->Drawings() )
for( BOARD_ITEM* drawing : board->Drawings() )
{
if( drawing->GetLayer() == Edge_Cuts )
{

View File

@ -299,20 +299,16 @@ bool DIALOG_FOOTPRINT_BOARD_EDITOR::TransferDataToWindow()
m_CostRot90Ctrl->SetValue( m_footprint->GetPlacementCost90() );
m_CostRot180Ctrl->SetValue( m_footprint->GetPlacementCost180() );
m_AttributsCtrl->SetItemToolTip( 0, _( "Use this attribute for most non SMD footprints\n"
"Footprints with this option are not put in the footprint position list file" ) );
m_AttributsCtrl->SetItemToolTip( 1, _( "Use this attribute for SMD footprints.\n"
"Only footprints with this option are put in the footprint position list file" ) );
m_AttributsCtrl->SetItemToolTip( 2, _( "Use this attribute for \"virtual\" footprints drawn "
"on board\nsuch as an edge connector (old ISA PC bus for instance)" ) );
if( m_footprint->GetAttributes() & MOD_THROUGH_HOLE )
m_componentType->SetSelection( 0 );
else if( m_footprint->GetAttributes() & MOD_SMD )
m_componentType->SetSelection( 1 );
else
m_componentType->SetSelection( 2 );
switch( m_footprint->GetAttributes() & 255 )
{
case MOD_CMS: m_AttributsCtrl->SetSelection( 1 ); break;
case MOD_VIRTUAL: m_AttributsCtrl->SetSelection( 2 ); break;
case 0:
default: m_AttributsCtrl->SetSelection( 0 ); break;
}
m_boardOnly->SetValue( m_footprint->GetAttributes() & MOD_BOARD_ONLY );
m_excludeFromPosFiles->SetValue( m_footprint->GetAttributes() & MOD_EXCLUDE_FROM_POS_FILES );
m_excludeFromBOM->SetValue( m_footprint->GetAttributes() & MOD_EXCLUDE_FROM_BOM );
// Local Clearances
@ -677,18 +673,10 @@ bool DIALOG_FOOTPRINT_BOARD_EDITOR::TransferDataFromWindow()
switch( m_ZoneConnectionChoice->GetSelection() )
{
default:
case 0:
m_footprint->SetZoneConnection( ZONE_CONNECTION::INHERITED );
break;
case 1:
m_footprint->SetZoneConnection( ZONE_CONNECTION::FULL );
break;
case 2:
m_footprint->SetZoneConnection( ZONE_CONNECTION::THERMAL );
break;
case 3:
m_footprint->SetZoneConnection( ZONE_CONNECTION::NONE );
break;
case 0: m_footprint->SetZoneConnection( ZONE_CONNECTION::INHERITED ); break;
case 1: m_footprint->SetZoneConnection( ZONE_CONNECTION::FULL ); break;
case 2: m_footprint->SetZoneConnection( ZONE_CONNECTION::THERMAL ); break;
case 3: m_footprint->SetZoneConnection( ZONE_CONNECTION::NONE ); break;
}
// Set Module Position
@ -697,14 +685,26 @@ bool DIALOG_FOOTPRINT_BOARD_EDITOR::TransferDataFromWindow()
m_footprint->SetLocked( m_AutoPlaceCtrl->GetSelection() == 2 );
m_footprint->SetPadsLocked( m_AutoPlaceCtrl->GetSelection() == 1 );
switch( m_AttributsCtrl->GetSelection() )
int attributes = 0;
switch( m_componentType->GetSelection() )
{
case 0: m_footprint->SetAttributes( 0 ); break;
case 1: m_footprint->SetAttributes( MOD_CMS ); break;
case 2: m_footprint->SetAttributes( MOD_VIRTUAL ); break;
default: wxFAIL;
case 0: attributes |= MOD_THROUGH_HOLE; break;
case 1: attributes |= MOD_SMD; break;
default: break;
}
if( m_boardOnly->GetValue() )
attributes |= MOD_BOARD_ONLY;
if( m_excludeFromPosFiles->GetValue() )
attributes |= MOD_EXCLUDE_FROM_POS_FILES;
if( m_excludeFromBOM->GetValue() )
attributes |= MOD_EXCLUDE_FROM_BOM;
m_footprint->SetAttributes( attributes );
m_footprint->SetPlacementCost90( m_CostRot90Ctrl->GetValue() );
m_footprint->SetPlacementCost180( m_CostRot180Ctrl->GetValue() );

View File

@ -247,7 +247,7 @@ DIALOG_FOOTPRINT_BOARD_EDITOR_BASE::DIALOG_FOOTPRINT_BOARD_EDITOR_BASE( wxWindow
bButtonsSizer = new wxBoxSizer( wxVERTICAL );
m_buttonUpdate = new wxButton( m_PanelGeneral, wxID_ANY, _("Update Footprint from Library..."), wxDefaultPosition, wxDefaultSize, 0 );
bButtonsSizer->Add( m_buttonUpdate, 0, wxALL|wxEXPAND, 5 );
bButtonsSizer->Add( m_buttonUpdate, 0, wxEXPAND|wxALL, 5 );
m_buttonExchange = new wxButton( m_PanelGeneral, wxID_ANY, _("Change Footprint..."), wxDefaultPosition, wxDefaultSize, 0 );
bButtonsSizer->Add( m_buttonExchange, 0, wxEXPAND|wxALL, 5 );
@ -256,10 +256,10 @@ DIALOG_FOOTPRINT_BOARD_EDITOR_BASE::DIALOG_FOOTPRINT_BOARD_EDITOR_BASE( wxWindow
bButtonsSizer->Add( m_buttonModuleEditor, 0, wxEXPAND|wxALL, 5 );
bButtonsSizer->Add( 0, 15, 1, wxEXPAND, 5 );
bButtonsSizer->Add( 0, 10, 0, wxEXPAND, 5 );
m_button5 = new wxButton( m_PanelGeneral, wxID_ANY, _("Edit Library Footprint..."), wxDefaultPosition, wxDefaultSize, 0 );
bButtonsSizer->Add( m_button5, 0, wxALL|wxEXPAND, 5 );
bButtonsSizer->Add( m_button5, 0, wxEXPAND|wxALL, 5 );
bSizerRight->Add( bButtonsSizer, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
@ -267,11 +267,36 @@ DIALOG_FOOTPRINT_BOARD_EDITOR_BASE::DIALOG_FOOTPRINT_BOARD_EDITOR_BASE( wxWindow
bSizerRight->Add( 0, 0, 1, wxEXPAND, 5 );
wxString m_AttributsCtrlChoices[] = { _("Through hole"), _("Surface mount"), _("Virtual") };
int m_AttributsCtrlNChoices = sizeof( m_AttributsCtrlChoices ) / sizeof( wxString );
m_AttributsCtrl = new wxRadioBox( m_PanelGeneral, wxID_ANY, _("Fabrication Attributes"), wxDefaultPosition, wxDefaultSize, m_AttributsCtrlNChoices, m_AttributsCtrlChoices, 1, wxRA_SPECIFY_COLS );
m_AttributsCtrl->SetSelection( 0 );
bSizerRight->Add( m_AttributsCtrl, 0, wxALL|wxEXPAND, 5 );
wxStaticBoxSizer* sbFabSizer;
sbFabSizer = new wxStaticBoxSizer( new wxStaticBox( m_PanelGeneral, wxID_ANY, _("Fabrication Attributes") ), wxVERTICAL );
wxBoxSizer* bPartTypeSizer;
bPartTypeSizer = new wxBoxSizer( wxHORIZONTAL );
m_componentTypeLabel = new wxStaticText( sbFabSizer->GetStaticBox(), wxID_ANY, _("Component:"), wxDefaultPosition, wxDefaultSize, 0 );
m_componentTypeLabel->Wrap( -1 );
bPartTypeSizer->Add( m_componentTypeLabel, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
wxString m_componentTypeChoices[] = { _("Through hole"), _("SMD"), _("Other") };
int m_componentTypeNChoices = sizeof( m_componentTypeChoices ) / sizeof( wxString );
m_componentType = new wxChoice( sbFabSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_componentTypeNChoices, m_componentTypeChoices, 0 );
m_componentType->SetSelection( 0 );
bPartTypeSizer->Add( m_componentType, 1, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
sbFabSizer->Add( bPartTypeSizer, 1, wxEXPAND, 5 );
m_boardOnly = new wxCheckBox( sbFabSizer->GetStaticBox(), wxID_ANY, _("Not in schematic"), wxDefaultPosition, wxDefaultSize, 0 );
sbFabSizer->Add( m_boardOnly, 0, wxALL, 5 );
m_excludeFromPosFiles = new wxCheckBox( sbFabSizer->GetStaticBox(), wxID_ANY, _("Exclude from position files"), wxDefaultPosition, wxDefaultSize, 0 );
sbFabSizer->Add( m_excludeFromPosFiles, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_excludeFromBOM = new wxCheckBox( sbFabSizer->GetStaticBox(), wxID_ANY, _("Exclude from BOM"), wxDefaultPosition, wxDefaultSize, 0 );
sbFabSizer->Add( m_excludeFromBOM, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
bSizerRight->Add( sbFabSizer, 0, wxEXPAND|wxALL, 5 );
bSizerProperties->Add( bSizerRight, 1, wxEXPAND|wxTOP, 5 );

View File

@ -1831,27 +1831,27 @@
</object>
</object>
</object>
<object class="sizeritem" expanded="0">
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND|wxTOP</property>
<property name="proportion">1</property>
<object class="wxBoxSizer" expanded="0">
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">bSizerRight</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="0">
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="0">
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">bButtonsSizer</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="flag">wxEXPAND|wxALL</property>
<property name="proportion">0</property>
<object class="wxButton" expanded="0">
<property name="BottomDockable">1</property>
@ -2068,19 +2068,19 @@
<event name="OnButtonClick">EditFootprint</event>
</object>
</object>
<object class="sizeritem" expanded="0">
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="spacer" expanded="0">
<property name="height">15</property>
<property name="proportion">0</property>
<object class="spacer" expanded="1">
<property name="height">10</property>
<property name="permission">protected</property>
<property name="width">0</property>
</object>
</object>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="flag">wxEXPAND|wxALL</property>
<property name="proportion">0</property>
<object class="wxButton" expanded="0">
<property name="BottomDockable">1</property>
@ -2163,70 +2163,346 @@
<property name="width">0</property>
</object>
</object>
<object class="sizeritem" expanded="0">
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="flag">wxEXPAND|wxALL</property>
<property name="proportion">0</property>
<object class="wxRadioBox" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="choices">&quot;Through hole&quot; &quot;Surface mount&quot; &quot;Virtual&quot;</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<object class="wxStaticBoxSizer" expanded="1">
<property name="id">wxID_ANY</property>
<property name="label">Fabrication Attributes</property>
<property name="majorDimension">1</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_AttributsCtrl</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="selection">0</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style">wxRA_SPECIFY_COLS</property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="name">sbFabSizer</property>
<property name="orient">wxVERTICAL</property>
<property name="parent">1</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">bPartTypeSizer</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Component:</property>
<property name="markup">0</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_componentTypeLabel</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT</property>
<property name="proportion">1</property>
<object class="wxChoice" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="choices">&quot;Through hole&quot; &quot;SMD&quot; &quot;Other&quot;</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_componentType</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="selection">0</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
</object>
</object>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxCheckBox" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="checked">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Not in schematic</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_boardOnly</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxBOTTOM|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxCheckBox" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="checked">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Exclude from position files</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_excludeFromPosFiles</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxBOTTOM|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxCheckBox" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="checked">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Exclude from BOM</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_excludeFromBOM</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
</object>
</object>
</object>
</object>
</object>

View File

@ -34,6 +34,7 @@ class WX_GRID;
#include <wx/gbsizer.h>
#include <wx/radiobox.h>
#include <wx/slider.h>
#include <wx/checkbox.h>
#include <wx/panel.h>
#include <wx/notebook.h>
#include <wx/dialog.h>
@ -83,7 +84,11 @@ class DIALOG_FOOTPRINT_BOARD_EDITOR_BASE : public DIALOG_SHIM
wxButton* m_buttonExchange;
wxButton* m_buttonModuleEditor;
wxButton* m_button5;
wxRadioBox* m_AttributsCtrl;
wxStaticText* m_componentTypeLabel;
wxChoice* m_componentType;
wxCheckBox* m_boardOnly;
wxCheckBox* m_excludeFromPosFiles;
wxCheckBox* m_excludeFromBOM;
wxPanel* m_PanelClearances;
wxStaticText* m_staticTextInfo;
wxStaticText* m_staticTextInfoValPos;

View File

@ -225,20 +225,16 @@ bool DIALOG_FOOTPRINT_FP_EDITOR::TransferDataToWindow()
m_CostRot90Ctrl->SetValue( m_footprint->GetPlacementCost90() );
m_CostRot180Ctrl->SetValue( m_footprint->GetPlacementCost180() );
m_AttributsCtrl->SetItemToolTip( 0, _( "Use this attribute for most non SMD footprints\n"
"Footprints with this option are not put in the footprint position list file" ) );
m_AttributsCtrl->SetItemToolTip( 1, _( "Use this attribute for SMD footprints.\n"
"Only footprints with this option are put in the footprint position list file" ) );
m_AttributsCtrl->SetItemToolTip( 2, _( "Use this attribute for \"virtual\" footprints drawn on board\n"
"such as an edge connector (old ISA PC bus for instance)" ) );
if( m_footprint->GetAttributes() & MOD_THROUGH_HOLE )
m_componentType->SetSelection( 0 );
else if( m_footprint->GetAttributes() & MOD_SMD )
m_componentType->SetSelection( 1 );
else
m_componentType->SetSelection( 2 );
switch( m_footprint->GetAttributes() & 255 )
{
case MOD_CMS: m_AttributsCtrl->SetSelection( 1 ); break;
case MOD_VIRTUAL: m_AttributsCtrl->SetSelection( 2 ); break;
case 0:
default: m_AttributsCtrl->SetSelection( 0 ); break;
}
m_boardOnly->SetValue( m_footprint->GetAttributes() & MOD_BOARD_ONLY );
m_excludeFromPosFiles->SetValue( m_footprint->GetAttributes() & MOD_EXCLUDE_FROM_POS_FILES );
m_excludeFromBOM->SetValue( m_footprint->GetAttributes() & MOD_EXCLUDE_FROM_BOM );
// Local Clearances
@ -640,14 +636,26 @@ bool DIALOG_FOOTPRINT_FP_EDITOR::TransferDataFromWindow()
m_footprint->SetLocked( m_AutoPlaceCtrl->GetSelection() == 1 );
switch( m_AttributsCtrl->GetSelection() )
int attributes = 0;
switch( m_componentType->GetSelection() )
{
case 0: m_footprint->SetAttributes( 0 ); break;
case 1: m_footprint->SetAttributes( MOD_CMS ); break;
case 2: m_footprint->SetAttributes( MOD_VIRTUAL ); break;
default: wxFAIL;
case 0: attributes |= MOD_THROUGH_HOLE; break;
case 1: attributes |= MOD_SMD; break;
default: break;
}
if( m_boardOnly->GetValue() )
attributes |= MOD_BOARD_ONLY;
if( m_excludeFromPosFiles->GetValue() )
attributes |= MOD_EXCLUDE_FROM_POS_FILES;
if( m_excludeFromBOM->GetValue() )
attributes |= MOD_EXCLUDE_FROM_BOM;
m_footprint->SetAttributes( attributes );
m_footprint->SetPlacementCost90( m_CostRot90Ctrl->GetValue() );
m_footprint->SetPlacementCost180( m_CostRot180Ctrl->GetValue() );
@ -673,18 +681,10 @@ bool DIALOG_FOOTPRINT_FP_EDITOR::TransferDataFromWindow()
switch( m_ZoneConnectionChoice->GetSelection() )
{
default:
case 0:
m_footprint->SetZoneConnection( ZONE_CONNECTION::INHERITED );
break;
case 1:
m_footprint->SetZoneConnection( ZONE_CONNECTION::FULL );
break;
case 2:
m_footprint->SetZoneConnection( ZONE_CONNECTION::THERMAL );
break;
case 3:
m_footprint->SetZoneConnection( ZONE_CONNECTION::NONE );
break;
case 0: m_footprint->SetZoneConnection( ZONE_CONNECTION::INHERITED ); break;
case 1: m_footprint->SetZoneConnection( ZONE_CONNECTION::FULL ); break;
case 2: m_footprint->SetZoneConnection( ZONE_CONNECTION::THERMAL ); break;
case 3: m_footprint->SetZoneConnection( ZONE_CONNECTION::NONE ); break;
}
std::list<MODULE_3D_SETTINGS>* draw3D = &m_footprint->Models();

View File

@ -172,13 +172,38 @@ DIALOG_FOOTPRINT_FP_EDITOR_BASE::DIALOG_FOOTPRINT_FP_EDITOR_BASE( wxWindow* pare
m_sizerAP->Add( m_sizerAllow180, 0, wxEXPAND, 5 );
bSizerProperties->Add( m_sizerAP, 1, wxEXPAND|wxTOP, 5 );
bSizerProperties->Add( m_sizerAP, 1, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
wxString m_AttributsCtrlChoices[] = { _("Through hole"), _("Surface mount"), _("Virtual") };
int m_AttributsCtrlNChoices = sizeof( m_AttributsCtrlChoices ) / sizeof( wxString );
m_AttributsCtrl = new wxRadioBox( m_PanelGeneral, wxID_ANY, _("Fabrication Attributes"), wxDefaultPosition, wxDefaultSize, m_AttributsCtrlNChoices, m_AttributsCtrlChoices, 1, wxRA_SPECIFY_COLS );
m_AttributsCtrl->SetSelection( 1 );
bSizerProperties->Add( m_AttributsCtrl, 1, wxTOP|wxRIGHT|wxLEFT, 5 );
wxStaticBoxSizer* sbFabSizer;
sbFabSizer = new wxStaticBoxSizer( new wxStaticBox( m_PanelGeneral, wxID_ANY, _("Fabrication Attributes") ), wxVERTICAL );
wxBoxSizer* bPartTypeSizer;
bPartTypeSizer = new wxBoxSizer( wxHORIZONTAL );
m_componentTypeLabel = new wxStaticText( sbFabSizer->GetStaticBox(), wxID_ANY, _("Component:"), wxDefaultPosition, wxDefaultSize, 0 );
m_componentTypeLabel->Wrap( -1 );
bPartTypeSizer->Add( m_componentTypeLabel, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
wxString m_componentTypeChoices[] = { _("Through hole"), _("SMD"), _("Other") };
int m_componentTypeNChoices = sizeof( m_componentTypeChoices ) / sizeof( wxString );
m_componentType = new wxChoice( sbFabSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_componentTypeNChoices, m_componentTypeChoices, 0 );
m_componentType->SetSelection( 0 );
bPartTypeSizer->Add( m_componentType, 1, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
sbFabSizer->Add( bPartTypeSizer, 0, wxEXPAND, 5 );
m_boardOnly = new wxCheckBox( sbFabSizer->GetStaticBox(), wxID_ANY, _("Not in schematic"), wxDefaultPosition, wxDefaultSize, 0 );
sbFabSizer->Add( m_boardOnly, 0, wxALL, 5 );
m_excludeFromPosFiles = new wxCheckBox( sbFabSizer->GetStaticBox(), wxID_ANY, _("Exclude from position files"), wxDefaultPosition, wxDefaultSize, 0 );
sbFabSizer->Add( m_excludeFromPosFiles, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_excludeFromBOM = new wxCheckBox( sbFabSizer->GetStaticBox(), wxID_ANY, _("Exclude from BOM"), wxDefaultPosition, wxDefaultSize, 0 );
sbFabSizer->Add( m_excludeFromBOM, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
bSizerProperties->Add( sbFabSizer, 1, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
m_PanelPropertiesBoxSizer->Add( bSizerProperties, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 );

View File

@ -918,7 +918,7 @@
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND|wxTOP</property>
<property name="flag">wxEXPAND|wxTOP|wxRIGHT|wxLEFT</property>
<property name="proportion">1</property>
<object class="wxStaticBoxSizer" expanded="1">
<property name="id">wxID_ANY</property>
@ -1214,70 +1214,346 @@
</object>
</object>
</object>
<object class="sizeritem" expanded="0">
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
<property name="flag">wxEXPAND|wxTOP|wxRIGHT|wxLEFT</property>
<property name="proportion">1</property>
<object class="wxRadioBox" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="choices">&quot;Through hole&quot; &quot;Surface mount&quot; &quot;Virtual&quot;</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<object class="wxStaticBoxSizer" expanded="1">
<property name="id">wxID_ANY</property>
<property name="label">Fabrication Attributes</property>
<property name="majorDimension">1</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_AttributsCtrl</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="selection">1</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style">wxRA_SPECIFY_COLS</property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="name">sbFabSizer</property>
<property name="orient">wxVERTICAL</property>
<property name="parent">1</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">bPartTypeSizer</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Component:</property>
<property name="markup">0</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_componentTypeLabel</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT</property>
<property name="proportion">1</property>
<object class="wxChoice" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="choices">&quot;Through hole&quot; &quot;SMD&quot; &quot;Other&quot;</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_componentType</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="selection">0</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
</object>
</object>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxCheckBox" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="checked">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Not in schematic</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_boardOnly</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxBOTTOM|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxCheckBox" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="checked">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Exclude from position files</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_excludeFromPosFiles</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxBOTTOM|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxCheckBox" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="checked">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Exclude from BOM</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_excludeFromBOM</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
</object>
</object>
</object>
</object>
</object>

View File

@ -31,8 +31,9 @@ class WX_GRID;
#include <wx/textctrl.h>
#include <wx/radiobox.h>
#include <wx/slider.h>
#include <wx/panel.h>
#include <wx/choice.h>
#include <wx/checkbox.h>
#include <wx/panel.h>
#include <wx/notebook.h>
#include <wx/dialog.h>
@ -66,7 +67,11 @@ class DIALOG_FOOTPRINT_FP_EDITOR_BASE : public DIALOG_SHIM
wxBoxSizer* m_sizerAllow180;
wxStaticText* m_allow180Label;
wxSlider* m_CostRot180Ctrl;
wxRadioBox* m_AttributsCtrl;
wxStaticText* m_componentTypeLabel;
wxChoice* m_componentType;
wxCheckBox* m_boardOnly;
wxCheckBox* m_excludeFromPosFiles;
wxCheckBox* m_excludeFromBOM;
wxPanel* m_PanelClearances;
wxStaticText* m_staticTextInfo;
wxStaticText* m_staticTextInfoValPos;

View File

@ -51,10 +51,11 @@ int g_matchModeForUpdateSelected = ID_MATCH_FP_SELECTED;
int g_matchModeForExchange = ID_MATCH_FP_REF;
int g_matchModeForExchangeSelected = ID_MATCH_FP_SELECTED;
bool g_removeExtraTextItems = false;
bool g_resetTextItemLayers = false;
bool g_resetTextItemEffects = false;
bool g_reset3DModels = false;
bool g_removeExtraTextItems = false;
bool g_resetTextItemLayers = false;
bool g_resetTextItemEffects = false;
bool g_resetFabricationAttrs = false;
bool g_reset3DModels = false;
DIALOG_EXCHANGE_FOOTPRINTS::DIALOG_EXCHANGE_FOOTPRINTS( PCB_EDIT_FRAME* aParent, MODULE* aModule,
@ -139,6 +140,7 @@ DIALOG_EXCHANGE_FOOTPRINTS::DIALOG_EXCHANGE_FOOTPRINTS( PCB_EDIT_FRAME* aParent,
m_removeExtraBox->SetValue( g_removeExtraTextItems );
m_resetTextItemLayers->SetValue( g_resetTextItemLayers );
m_resetTextItemEffects->SetValue( g_resetTextItemEffects );
m_resetFabricationAttrs->SetValue( g_resetFabricationAttrs );
m_reset3DModels->SetValue( g_reset3DModels );
m_MessageWindow->SetLazyUpdate( true );
@ -163,6 +165,7 @@ DIALOG_EXCHANGE_FOOTPRINTS::~DIALOG_EXCHANGE_FOOTPRINTS()
g_removeExtraTextItems = m_removeExtraBox->GetValue();
g_resetTextItemLayers = m_resetTextItemLayers->GetValue();
g_resetTextItemEffects = m_resetTextItemEffects->GetValue();
g_resetFabricationAttrs = m_resetFabricationAttrs->GetValue();
g_reset3DModels = m_reset3DModels->GetValue();
}
@ -374,6 +377,7 @@ bool DIALOG_EXCHANGE_FOOTPRINTS::processModule( MODULE* aModule, const LIB_ID& a
m_removeExtraBox->GetValue(),
m_resetTextItemLayers->GetValue(),
m_resetTextItemEffects->GetValue(),
m_resetFabricationAttrs->GetValue(),
m_reset3DModels->GetValue() );
if( aModule == m_currentModule )
@ -458,7 +462,8 @@ TEXTE_MODULE* getMatchingTextItem( TEXTE_MODULE* aRefItem, MODULE* aModule )
void PCB_EDIT_FRAME::Exchange_Module( MODULE* aSrc, MODULE* aDest, BOARD_COMMIT& aCommit,
bool deleteExtraTexts, bool resetTextLayers,
bool resetTextEffects, bool reset3DModels )
bool resetTextEffects, bool resetFabricationAttrs,
bool reset3DModels )
{
aDest->SetParent( GetBoard() );
@ -517,6 +522,9 @@ void PCB_EDIT_FRAME::Exchange_Module( MODULE* aSrc, MODULE* aDest, BOARD_COMMIT&
}
}
if( !resetFabricationAttrs )
aDest->SetAttributes( aSrc->GetAttributes() );
// Copy 3D model settings in accordance with the reset* flag
if( !reset3DModels )
aDest->Models() = aSrc->Models(); // Linked list of 3D models.

View File

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.9.0 Jun 3 2020)
// C++ code generated with wxFormBuilder (version Oct 26 2018)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@ -104,6 +104,9 @@ DIALOG_EXCHANGE_FOOTPRINTS_BASE::DIALOG_EXCHANGE_FOOTPRINTS_BASE( wxWindow* pare
m_resetTextItemEffects = new wxCheckBox( m_updateOptionsSizer->GetStaticBox(), wxID_ANY, _("Reset text sizes, styles and positions"), wxDefaultPosition, wxDefaultSize, 0 );
m_updateOptionsSizer->Add( m_resetTextItemEffects, 0, wxBOTTOM|wxRIGHT, 5 );
m_resetFabricationAttrs = new wxCheckBox( m_updateOptionsSizer->GetStaticBox(), wxID_ANY, _("Reset fabrication attributes"), wxDefaultPosition, wxDefaultSize, 0 );
m_updateOptionsSizer->Add( m_resetFabricationAttrs, 0, wxBOTTOM|wxRIGHT, 5 );
m_reset3DModels = new wxCheckBox( m_updateOptionsSizer->GetStaticBox(), wxID_ANY, _("Reset 3D models"), wxDefaultPosition, wxDefaultSize, 0 );
m_updateOptionsSizer->Add( m_reset3DModels, 0, wxBOTTOM|wxRIGHT, 5 );

View File

@ -14,7 +14,6 @@
<property name="file">dialog_exchange_footprints_base</property>
<property name="first_id">4200</property>
<property name="help_provider">none</property>
<property name="image_path_wrapper_function_name"></property>
<property name="indent_with_spaces"></property>
<property name="internationalize">1</property>
<property name="name">dialog_exchange_footprints_base</property>
@ -26,7 +25,6 @@
<property name="skip_php_events">1</property>
<property name="skip_python_events">1</property>
<property name="ui_table">UI</property>
<property name="use_array_enum">0</property>
<property name="use_enum">0</property>
<property name="use_microsoft_bom">0</property>
<object class="Dialog" expanded="1">
@ -644,7 +642,6 @@
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="auth_needed">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="bitmap"></property>
@ -921,7 +918,6 @@
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="auth_needed">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="bitmap"></property>
@ -1190,6 +1186,70 @@
<property name="window_style"></property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxBOTTOM|wxRIGHT</property>
<property name="proportion">0</property>
<object class="wxCheckBox" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="checked">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Reset fabrication attributes</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_resetFabricationAttrs</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxBOTTOM|wxRIGHT</property>

View File

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.9.0 Jun 3 2020)
// C++ code generated with wxFormBuilder (version Oct 26 2018)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@ -63,6 +63,7 @@ class DIALOG_EXCHANGE_FOOTPRINTS_BASE : public DIALOG_SHIM
wxCheckBox* m_removeExtraBox;
wxCheckBox* m_resetTextItemLayers;
wxCheckBox* m_resetTextItemEffects;
wxCheckBox* m_resetFabricationAttrs;
wxCheckBox* m_reset3DModels;
WX_HTML_REPORT_PANEL* m_MessageWindow;
wxStdDialogButtonSizer* m_sdbSizer;

View File

@ -73,8 +73,8 @@ DIALOG_GEN_FOOTPRINT_POSITION_BASE::DIALOG_GEN_FOOTPRINT_POSITION_BASE( wxWindow
wxBoxSizer* bSizerLower;
bSizerLower = new wxBoxSizer( wxVERTICAL );
m_forceSMDOpt = new wxCheckBox( this, wxID_ANY, _("Include footprints with SMD pads even if not marked Surface Mount"), wxDefaultPosition, wxDefaultSize, 0 );
bSizerLower->Add( m_forceSMDOpt, 0, wxALL, 5 );
m_excludeTH = new wxCheckBox( this, wxID_ANY, _("Exclude all footprints with through hole pads"), wxDefaultPosition, wxDefaultSize, 0 );
bSizerLower->Add( m_excludeTH, 0, wxALL, 5 );
m_cbIncludeBoardEdge = new wxCheckBox( this, wxID_ANY, _("Include board edge layer"), wxDefaultPosition, wxDefaultSize, 0 );
bSizerLower->Add( m_cbIncludeBoardEdge, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
@ -110,7 +110,7 @@ DIALOG_GEN_FOOTPRINT_POSITION_BASE::DIALOG_GEN_FOOTPRINT_POSITION_BASE( wxWindow
m_rbFormat->Connect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( DIALOG_GEN_FOOTPRINT_POSITION_BASE::onSelectFormat ), NULL, this );
m_radioBoxUnits->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_GEN_FOOTPRINT_POSITION_BASE::onUpdateUIUnits ), NULL, this );
m_radioBoxFilesCount->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_GEN_FOOTPRINT_POSITION_BASE::onUpdateUIFileOpt ), NULL, this );
m_forceSMDOpt->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_GEN_FOOTPRINT_POSITION_BASE::onUpdateUIforceSMDOpt ), NULL, this );
m_excludeTH->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_GEN_FOOTPRINT_POSITION_BASE::onUpdateUIExcludeTH ), NULL, this );
m_cbIncludeBoardEdge->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_GEN_FOOTPRINT_POSITION_BASE::onUpdateUIincludeBoardEdge ), NULL, this );
m_sdbSizerOK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_GEN_FOOTPRINT_POSITION_BASE::OnGenerate ), NULL, this );
}
@ -122,7 +122,7 @@ DIALOG_GEN_FOOTPRINT_POSITION_BASE::~DIALOG_GEN_FOOTPRINT_POSITION_BASE()
m_rbFormat->Disconnect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( DIALOG_GEN_FOOTPRINT_POSITION_BASE::onSelectFormat ), NULL, this );
m_radioBoxUnits->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_GEN_FOOTPRINT_POSITION_BASE::onUpdateUIUnits ), NULL, this );
m_radioBoxFilesCount->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_GEN_FOOTPRINT_POSITION_BASE::onUpdateUIFileOpt ), NULL, this );
m_forceSMDOpt->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_GEN_FOOTPRINT_POSITION_BASE::onUpdateUIforceSMDOpt ), NULL, this );
m_excludeTH->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_GEN_FOOTPRINT_POSITION_BASE::onUpdateUIExcludeTH ), NULL, this );
m_cbIncludeBoardEdge->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_GEN_FOOTPRINT_POSITION_BASE::onUpdateUIincludeBoardEdge ), NULL, this );
m_sdbSizerOK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_GEN_FOOTPRINT_POSITION_BASE::OnGenerate ), NULL, this );

View File

@ -532,7 +532,7 @@
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Include footprints with SMD pads even if not marked Surface Mount</property>
<property name="label">Exclude all footprints with through hole pads</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
@ -540,7 +540,7 @@
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_forceSMDOpt</property>
<property name="name">m_excludeTH</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
@ -561,7 +561,7 @@
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnUpdateUI">onUpdateUIforceSMDOpt</event>
<event name="OnUpdateUI">onUpdateUIExcludeTH</event>
</object>
</object>
<object class="sizeritem" expanded="1">

View File

@ -49,7 +49,7 @@ class DIALOG_GEN_FOOTPRINT_POSITION_BASE : public DIALOG_SHIM
wxRadioBox* m_rbFormat;
wxRadioBox* m_radioBoxUnits;
wxRadioBox* m_radioBoxFilesCount;
wxCheckBox* m_forceSMDOpt;
wxCheckBox* m_excludeTH;
wxCheckBox* m_cbIncludeBoardEdge;
WX_HTML_REPORT_PANEL* m_messagesPanel;
wxStaticLine* m_staticline;
@ -62,7 +62,7 @@ class DIALOG_GEN_FOOTPRINT_POSITION_BASE : public DIALOG_SHIM
virtual void onSelectFormat( wxCommandEvent& event ) { event.Skip(); }
virtual void onUpdateUIUnits( wxUpdateUIEvent& event ) { event.Skip(); }
virtual void onUpdateUIFileOpt( wxUpdateUIEvent& event ) { event.Skip(); }
virtual void onUpdateUIforceSMDOpt( wxUpdateUIEvent& event ) { event.Skip(); }
virtual void onUpdateUIExcludeTH( wxUpdateUIEvent& event ) { event.Skip(); }
virtual void onUpdateUIincludeBoardEdge( wxUpdateUIEvent& event ) { event.Skip(); }
virtual void OnGenerate( wxCommandEvent& event ) { event.Skip(); }

View File

@ -289,7 +289,6 @@ void DIALOG_NETLIST::loadNetlist( bool aDryRun )
NETLIST netlist;
netlist.SetDeleteExtraFootprints( m_cbDeleteExtraFootprints->GetValue() );
netlist.SetFindByTimeStamp( m_matchByUUID );
netlist.SetReplaceFootprints( m_cbUpdateFootprints->GetValue() );

View File

@ -35,7 +35,7 @@ DIALOG_NETLIST_BASE::DIALOG_NETLIST_BASE( wxWindow* parent, wxWindowID id, const
bSizerNetlistFilename->Add( m_browseButton, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 2 );
bMainSizer->Add( bSizerNetlistFilename, 0, wxALL|wxEXPAND, 5 );
bMainSizer->Add( bSizerNetlistFilename, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 10 );
wxBoxSizer* bUpperSizer;
bUpperSizer = new wxBoxSizer( wxHORIZONTAL );
@ -72,7 +72,7 @@ DIALOG_NETLIST_BASE::DIALOG_NETLIST_BASE( wxWindow* parent, wxWindowID id, const
bUpperSizer->Add( sbSizer1, 1, wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 );
bMainSizer->Add( bUpperSizer, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
bMainSizer->Add( bUpperSizer, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
wxBoxSizer* bLowerSizer;
bLowerSizer = new wxBoxSizer( wxVERTICAL );
@ -89,7 +89,7 @@ DIALOG_NETLIST_BASE::DIALOG_NETLIST_BASE( wxWindow* parent, wxWindowID id, const
m_buttonFPTest = new wxButton( this, ID_TEST_NETLIST, _("Test Footprints"), wxDefaultPosition, wxDefaultSize, 0 );
m_buttonFPTest->SetToolTip( _("Read the current netlist file and list missing and extra footprints") );
m_buttonsSizer->Add( m_buttonFPTest, 0, wxEXPAND|wxLEFT|wxRIGHT, 5 );
m_buttonsSizer->Add( m_buttonFPTest, 0, wxEXPAND|wxLEFT|wxRIGHT, 10 );
m_sdbSizer1 = new wxStdDialogButtonSizer();
m_sdbSizer1OK = new wxButton( this, wxID_OK );
@ -103,7 +103,7 @@ DIALOG_NETLIST_BASE::DIALOG_NETLIST_BASE( wxWindow* parent, wxWindowID id, const
m_buttonsSizer->Add( m_sdbSizer1, 1, wxEXPAND, 5 );
bMainSizer->Add( m_buttonsSizer, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxTOP, 5 );
bMainSizer->Add( m_buttonsSizer, 0, wxEXPAND|wxALL, 5 );
this->SetSizer( bMainSizer );

Some files were not shown because too many files have changed in this diff Show More