mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-04-20 20:51:42 +00:00
Sch->PCB: propagate DNP from symbols to footprints attributes
Also add a 3D viewer toggle.
This commit is contained in:
parent
a914f6e992
commit
32eb1ef77e
3d-viewer
3d_canvas
3d_viewer
common
include/bitmaps
pcbnew
dialogs
dialog_footprint_properties.cppdialog_footprint_properties_base.cppdialog_footprint_properties_base.fbpdialog_footprint_properties_base.hdialog_footprint_properties_fp_editor.cppdialog_footprint_properties_fp_editor_base.cppdialog_footprint_properties_fp_editor_base.fbpdialog_footprint_properties_fp_editor_base.h
footprint.cppfootprint.hnetlist_reader
plugins/kicad
resources/bitmaps_png
@ -272,6 +272,12 @@ bool BOARD_ADAPTER::IsFootprintShown( FOOTPRINT_ATTR_T aFPAttributes ) const
|
||||
return false;
|
||||
}
|
||||
|
||||
if( aFPAttributes & FP_DNP )
|
||||
{
|
||||
if( !m_Cfg->m_Render.show_footprints_dnp )
|
||||
return false;
|
||||
}
|
||||
|
||||
if( aFPAttributes & FP_SMD )
|
||||
return m_Cfg->m_Render.show_footprints_insert;
|
||||
|
||||
|
@ -122,6 +122,7 @@ void EDA_3D_VIEWER_FRAME::CreateMenuBar()
|
||||
prefsMenu->Add( EDA_3D_ACTIONS::showSMD, ACTION_MENU::CHECK );
|
||||
prefsMenu->Add( EDA_3D_ACTIONS::showVirtual, ACTION_MENU::CHECK );
|
||||
prefsMenu->Add( EDA_3D_ACTIONS::showNotInPosFile, ACTION_MENU::CHECK );
|
||||
prefsMenu->Add( EDA_3D_ACTIONS::showDNP, ACTION_MENU::CHECK );
|
||||
|
||||
prefsMenu->AppendSeparator();
|
||||
|
||||
|
@ -127,6 +127,7 @@ void EDA_3D_VIEWER_FRAME::ReCreateMainToolbar()
|
||||
m_mainToolBar->Add( EDA_3D_ACTIONS::showSMD, ACTION_TOOLBAR::TOGGLE );
|
||||
m_mainToolBar->Add( EDA_3D_ACTIONS::showVirtual, ACTION_TOOLBAR::TOGGLE );
|
||||
m_mainToolBar->Add( EDA_3D_ACTIONS::showNotInPosFile, ACTION_TOOLBAR::TOGGLE );
|
||||
m_mainToolBar->Add( EDA_3D_ACTIONS::showDNP, ACTION_TOOLBAR::TOGGLE );
|
||||
|
||||
m_mainToolBar->AddScaledSeparator( this );
|
||||
m_mainToolBar->AddControl( m_viewportsLabel );
|
||||
|
@ -246,6 +246,11 @@ void EDA_3D_VIEWER_FRAME::setupUIConditions()
|
||||
{
|
||||
return m_boardAdapter.m_Cfg->m_Render.show_footprints_not_in_posfile;
|
||||
};
|
||||
auto show_DNP =
|
||||
[this]( const SELECTION& aSel )
|
||||
{
|
||||
return m_boardAdapter.m_Cfg->m_Render.show_footprints_dnp;
|
||||
};
|
||||
auto showBBoxes =
|
||||
[this]( const SELECTION& aSel )
|
||||
{
|
||||
@ -268,6 +273,7 @@ void EDA_3D_VIEWER_FRAME::setupUIConditions()
|
||||
mgr->SetConditions( EDA_3D_ACTIONS::showSMD, ACTION_CONDITIONS().Check( showSMD ) );
|
||||
mgr->SetConditions( EDA_3D_ACTIONS::showVirtual, ACTION_CONDITIONS().Check( showVirtual ) );
|
||||
mgr->SetConditions( EDA_3D_ACTIONS::showNotInPosFile, ACTION_CONDITIONS().Check( show_NotInPosfile ) );
|
||||
mgr->SetConditions( EDA_3D_ACTIONS::showDNP, ACTION_CONDITIONS().Check( show_DNP ) );
|
||||
|
||||
|
||||
mgr->SetConditions( EDA_3D_ACTIONS::showBBoxes, ACTION_CONDITIONS().Check( showBBoxes ) );
|
||||
|
@ -182,6 +182,8 @@ EDA_3D_VIEWER_SETTINGS::EDA_3D_VIEWER_SETTINGS()
|
||||
&m_Render.show_footprints_virtual, true ) );
|
||||
m_params.emplace_back( new PARAM<bool>( "render.show_footprints_not_in_posfile",
|
||||
&m_Render.show_footprints_not_in_posfile, true ) );
|
||||
m_params.emplace_back( new PARAM<bool>( "render.show_footprints_dnp",
|
||||
&m_Render.show_footprints_dnp, true ) );
|
||||
m_params.emplace_back( new PARAM<bool>( "render.show_silkscreen",
|
||||
&m_Render.show_silkscreen, true ) );
|
||||
m_params.emplace_back( new PARAM<bool>( "render.show_soldermask",
|
||||
|
@ -84,6 +84,7 @@ public:
|
||||
bool show_footprints_normal;
|
||||
bool show_footprints_virtual;
|
||||
bool show_footprints_not_in_posfile;
|
||||
bool show_footprints_dnp;
|
||||
bool show_silkscreen;
|
||||
bool show_soldermask;
|
||||
bool show_solderpaste;
|
||||
|
@ -228,6 +228,12 @@ TOOL_ACTION EDA_3D_ACTIONS::showNotInPosFile( "3DViewer.Control.attribute_not_in
|
||||
_( "Toggle 3D models not in pos file" ), _( "Toggle 3D models not in pos file" ),
|
||||
BITMAPS::show_not_in_posfile, AF_NONE );
|
||||
|
||||
TOOL_ACTION EDA_3D_ACTIONS::showDNP( "3DViewer.Control.attribute_dnp",
|
||||
AS_ACTIVE,
|
||||
'D', "",
|
||||
_( "Toggle 3D models marked DNP" ), _( "Toggle 3D models for components marked 'Do Not Place'" ),
|
||||
BITMAPS::show_dnp, AF_NONE );
|
||||
|
||||
TOOL_ACTION EDA_3D_ACTIONS::showBBoxes( "3DViewer.Control.showBoundingBoxes",
|
||||
AS_GLOBAL, 0, "",
|
||||
_( "Show Model Bounding Boxes" ), _( "Show Model Bounding Boxes" ),
|
||||
|
@ -79,6 +79,7 @@ public:
|
||||
static TOOL_ACTION showSMD;
|
||||
static TOOL_ACTION showVirtual;
|
||||
static TOOL_ACTION showNotInPosFile;
|
||||
static TOOL_ACTION showDNP;
|
||||
static TOOL_ACTION showBBoxes;
|
||||
static TOOL_ACTION toggleRealisticMode;
|
||||
static TOOL_ACTION toggleBoardBody;
|
||||
|
@ -249,6 +249,11 @@ int EDA_3D_CONTROLLER::ToggleVisibility( const TOOL_EVENT& aEvent )
|
||||
FLIP( m_boardAdapter->m_Cfg->m_Render.show_footprints_not_in_posfile );
|
||||
reload = true;
|
||||
}
|
||||
else if( aEvent.IsAction( &EDA_3D_ACTIONS::showDNP ) )
|
||||
{
|
||||
FLIP( m_boardAdapter->m_Cfg->m_Render.show_footprints_dnp );
|
||||
reload = true;
|
||||
}
|
||||
else if( aEvent.IsAction( &EDA_3D_ACTIONS::showBBoxes ) )
|
||||
{
|
||||
FLIP( m_boardAdapter->m_Cfg->m_Render.opengl_show_model_bbox );
|
||||
@ -437,6 +442,7 @@ void EDA_3D_CONTROLLER::setTransitions()
|
||||
Go( &EDA_3D_CONTROLLER::ToggleVisibility, EDA_3D_ACTIONS::showSMD.MakeEvent() );
|
||||
Go( &EDA_3D_CONTROLLER::ToggleVisibility, EDA_3D_ACTIONS::showVirtual.MakeEvent() );
|
||||
Go( &EDA_3D_CONTROLLER::ToggleVisibility, EDA_3D_ACTIONS::showNotInPosFile.MakeEvent() );
|
||||
Go( &EDA_3D_CONTROLLER::ToggleVisibility, EDA_3D_ACTIONS::showDNP.MakeEvent() );
|
||||
Go( &EDA_3D_CONTROLLER::ToggleVisibility, EDA_3D_ACTIONS::showVirtual.MakeEvent() );
|
||||
Go( &EDA_3D_CONTROLLER::ToggleVisibility, EDA_3D_ACTIONS::showBBoxes.MakeEvent() );
|
||||
Go( &EDA_3D_CONTROLLER::ToggleVisibility, EDA_3D_ACTIONS::toggleRealisticMode.MakeEvent() );
|
||||
|
@ -491,6 +491,7 @@ void BuildBitmapInfo( std::unordered_map<BITMAPS, std::vector<BITMAP_INFO>>& aBi
|
||||
aBitmapInfoCache[BITMAPS::search_tree].emplace_back( BITMAPS::search_tree, wxT( "search_tree_24.png" ), 24, wxT( "light" ) );
|
||||
aBitmapInfoCache[BITMAPS::set_origin].emplace_back( BITMAPS::set_origin, wxT( "set_origin_24.png" ), 24, wxT( "light" ) );
|
||||
aBitmapInfoCache[BITMAPS::show_dcodenumber].emplace_back( BITMAPS::show_dcodenumber, wxT( "show_dcodenumber_24.png" ), 24, wxT( "light" ) );
|
||||
aBitmapInfoCache[BITMAPS::show_dnp].emplace_back( BITMAPS::show_dnp, wxT( "show_dnp_24.png" ), 24, wxT( "light" ) );
|
||||
aBitmapInfoCache[BITMAPS::show_footprint].emplace_back( BITMAPS::show_footprint, wxT( "show_footprint_24.png" ), 24, wxT( "light" ) );
|
||||
aBitmapInfoCache[BITMAPS::show_mod_edge].emplace_back( BITMAPS::show_mod_edge, wxT( "show_mod_edge_24.png" ), 24, wxT( "light" ) );
|
||||
aBitmapInfoCache[BITMAPS::show_ratsnest].emplace_back( BITMAPS::show_ratsnest, wxT( "show_ratsnest_24.png" ), 24, wxT( "light" ) );
|
||||
@ -874,6 +875,7 @@ void BuildBitmapInfo( std::unordered_map<BITMAPS, std::vector<BITMAP_INFO>>& aBi
|
||||
aBitmapInfoCache[BITMAPS::search_tree].emplace_back( BITMAPS::search_tree, wxT( "search_tree_dark_24.png" ), 24, wxT( "dark" ) );
|
||||
aBitmapInfoCache[BITMAPS::set_origin].emplace_back( BITMAPS::set_origin, wxT( "set_origin_dark_24.png" ), 24, wxT( "dark" ) );
|
||||
aBitmapInfoCache[BITMAPS::show_dcodenumber].emplace_back( BITMAPS::show_dcodenumber, wxT( "show_dcodenumber_dark_24.png" ), 24, wxT( "dark" ) );
|
||||
aBitmapInfoCache[BITMAPS::show_dnp].emplace_back( BITMAPS::show_dnp, wxT( "show_dnp_dark_24.png" ), 24, wxT( "dark" ) );
|
||||
aBitmapInfoCache[BITMAPS::show_footprint].emplace_back( BITMAPS::show_footprint, wxT( "show_footprint_dark_24.png" ), 24, wxT( "dark" ) );
|
||||
aBitmapInfoCache[BITMAPS::show_mod_edge].emplace_back( BITMAPS::show_mod_edge, wxT( "show_mod_edge_dark_24.png" ), 24, wxT( "dark" ) );
|
||||
aBitmapInfoCache[BITMAPS::show_ratsnest].emplace_back( BITMAPS::show_ratsnest, wxT( "show_ratsnest_dark_24.png" ), 24, wxT( "dark" ) );
|
||||
|
@ -86,6 +86,7 @@ diff_pair_width
|
||||
diff_pair_gap
|
||||
dimension_precision
|
||||
dimension_units
|
||||
dnp
|
||||
drawings
|
||||
drill
|
||||
edge
|
||||
|
@ -507,6 +507,7 @@ enum class BITMAPS : unsigned int
|
||||
show_all_layers,
|
||||
show_back_assembly_layers,
|
||||
show_dcodenumber,
|
||||
show_dnp,
|
||||
show_footprint,
|
||||
show_front_assembly_layers,
|
||||
show_graphics_mode,
|
||||
|
@ -157,6 +157,7 @@ DIALOG_FOOTPRINT_PROPERTIES::DIALOG_FOOTPRINT_PROPERTIES( PCB_EDIT_FRAME* aParen
|
||||
m_excludeFromPosFiles,
|
||||
m_excludeFromBOM,
|
||||
m_noCourtyards,
|
||||
m_cbDNP,
|
||||
m_NetClearanceCtrl,
|
||||
m_SolderMaskMarginCtrl,
|
||||
m_allowSolderMaskBridges,
|
||||
@ -284,6 +285,7 @@ bool DIALOG_FOOTPRINT_PROPERTIES::TransferDataToWindow()
|
||||
m_excludeFromPosFiles->SetValue( m_footprint->GetAttributes() & FP_EXCLUDE_FROM_POS_FILES );
|
||||
m_excludeFromBOM->SetValue( m_footprint->GetAttributes() & FP_EXCLUDE_FROM_BOM );
|
||||
m_noCourtyards->SetValue( m_footprint->GetAttributes() & FP_ALLOW_MISSING_COURTYARD );
|
||||
m_cbDNP->SetValue( m_footprint->GetAttributes() & FP_DNP );
|
||||
|
||||
// Local Clearances
|
||||
|
||||
@ -532,6 +534,9 @@ bool DIALOG_FOOTPRINT_PROPERTIES::TransferDataFromWindow()
|
||||
if( m_excludeFromBOM->GetValue() )
|
||||
attributes |= FP_EXCLUDE_FROM_BOM;
|
||||
|
||||
if( m_cbDNP->GetValue() )
|
||||
attributes |= FP_DNP;
|
||||
|
||||
if( m_noCourtyards->GetValue() )
|
||||
attributes |= FP_ALLOW_MISSING_COURTYARD;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b)
|
||||
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b3)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
@ -209,6 +209,9 @@ DIALOG_FOOTPRINT_PROPERTIES_BASE::DIALOG_FOOTPRINT_PROPERTIES_BASE( wxWindow* pa
|
||||
|
||||
sbFabSizer->Add( m_noCourtyards, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_cbDNP = new wxCheckBox( sbFabSizer->GetStaticBox(), wxID_ANY, _("Do not populate"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
sbFabSizer->Add( m_cbDNP, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 );
|
||||
|
||||
|
||||
bSizerMiddle->Add( sbFabSizer, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
@ -1625,6 +1625,70 @@
|
||||
<property name="window_style"></property>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxBOTTOM|wxLEFT|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">Do not populate</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_cbDNP</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>
|
||||
|
@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b)
|
||||
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b3)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
@ -74,6 +74,7 @@ class DIALOG_FOOTPRINT_PROPERTIES_BASE : public DIALOG_SHIM
|
||||
wxCheckBox* m_excludeFromPosFiles;
|
||||
wxCheckBox* m_excludeFromBOM;
|
||||
wxCheckBox* m_noCourtyards;
|
||||
wxCheckBox* m_cbDNP;
|
||||
wxButton* m_buttonUpdate;
|
||||
wxButton* m_buttonExchange;
|
||||
wxButton* m_buttonModuleEditor;
|
||||
|
@ -302,6 +302,7 @@ bool DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::TransferDataToWindow()
|
||||
m_excludeFromPosFiles->SetValue( m_footprint->GetAttributes() & FP_EXCLUDE_FROM_POS_FILES );
|
||||
m_excludeFromBOM->SetValue( m_footprint->GetAttributes() & FP_EXCLUDE_FROM_BOM );
|
||||
m_noCourtyards->SetValue( m_footprint->GetAttributes() & FP_ALLOW_MISSING_COURTYARD );
|
||||
m_cbDNP->SetValue( m_footprint->GetAttributes() & FP_DNP );
|
||||
|
||||
// Local Clearances
|
||||
|
||||
@ -567,6 +568,9 @@ bool DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::TransferDataFromWindow()
|
||||
if( m_noCourtyards->GetValue() )
|
||||
attributes |= FP_ALLOW_MISSING_COURTYARD;
|
||||
|
||||
if( m_cbDNP->GetValue() )
|
||||
attributes |= FP_DNP;
|
||||
|
||||
if( m_allowBridges->GetValue() )
|
||||
attributes |= FP_ALLOW_SOLDERMASK_BRIDGES;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b)
|
||||
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b3)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
@ -213,6 +213,9 @@ DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::DIALOG_FOOTPRINT_PROPERTIES_FP_EDITO
|
||||
|
||||
sbFabSizer->Add( m_noCourtyards, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_cbDNP = new wxCheckBox( sbFabSizer->GetStaticBox(), wxID_ANY, _("Do not populate"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
sbFabSizer->Add( m_cbDNP, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 );
|
||||
|
||||
|
||||
bSizerProperties->Add( sbFabSizer, 1, wxEXPAND|wxRIGHT, 5 );
|
||||
|
||||
|
@ -1531,6 +1531,70 @@
|
||||
<property name="window_style"></property>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxBOTTOM|wxLEFT|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">Do not populate</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_cbDNP</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>
|
||||
|
@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b)
|
||||
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b3)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
@ -68,6 +68,7 @@ class DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE : public DIALOG_SHIM
|
||||
wxCheckBox* m_excludeFromPosFiles;
|
||||
wxCheckBox* m_excludeFromBOM;
|
||||
wxCheckBox* m_noCourtyards;
|
||||
wxCheckBox* m_cbDNP;
|
||||
wxPanel* m_PanelClearances;
|
||||
wxStaticText* m_staticTextInfo;
|
||||
wxStaticText* m_NetClearanceLabel;
|
||||
|
@ -1073,6 +1073,9 @@ void FOOTPRINT::GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_I
|
||||
if( m_attributes & FP_EXCLUDE_FROM_BOM )
|
||||
addToken( &attrs, _( "exclude from BOM" ) );
|
||||
|
||||
if( m_attributes & FP_DNP )
|
||||
addToken( &attrs, _( "DNP" ) );
|
||||
|
||||
aList.emplace_back( _( "Status: " ) + status, _( "Attributes:" ) + wxS( " " ) + attrs );
|
||||
|
||||
aList.emplace_back( _( "Rotation" ), wxString::Format( wxT( "%.4g" ),
|
||||
@ -2821,6 +2824,9 @@ static struct FOOTPRINT_DESC
|
||||
propMgr.AddProperty( new PROPERTY<FOOTPRINT, bool>( _HKI( "Exclude from bill of materials" ),
|
||||
&FOOTPRINT::SetExcludedFromBOM, &FOOTPRINT::IsExcludedFromBOM ),
|
||||
groupAttributes );
|
||||
propMgr.AddProperty( new PROPERTY<FOOTPRINT, bool>( _HKI( "Do not populate" ),
|
||||
&FOOTPRINT::SetDNP, &FOOTPRINT::IsDNP ),
|
||||
groupAttributes );
|
||||
|
||||
const wxString groupOverrides = _HKI( "Overrides" );
|
||||
|
||||
|
@ -73,7 +73,8 @@ enum FOOTPRINT_ATTR_T
|
||||
FP_BOARD_ONLY = 0x0010, // Footprint has no corresponding symbol
|
||||
FP_JUST_ADDED = 0x0020, // Footprint just added by netlist update
|
||||
FP_ALLOW_SOLDERMASK_BRIDGES = 0x0040,
|
||||
FP_ALLOW_MISSING_COURTYARD = 0x0080
|
||||
FP_ALLOW_MISSING_COURTYARD = 0x0080,
|
||||
FP_DNP = 0x0100
|
||||
};
|
||||
|
||||
class FP_3DMODEL
|
||||
@ -617,6 +618,15 @@ public:
|
||||
m_attributes &= ~FP_ALLOW_MISSING_COURTYARD;
|
||||
}
|
||||
|
||||
bool IsDNP() const { return m_attributes & FP_DNP; }
|
||||
void SetDNP( bool aDNP = true )
|
||||
{
|
||||
if( aDNP )
|
||||
m_attributes |= FP_DNP;
|
||||
else
|
||||
m_attributes &= ~FP_DNP;
|
||||
}
|
||||
|
||||
void SetFileFormatVersionAtLoad( int aVersion ) { m_fileFormatVersionAtLoad = aVersion; }
|
||||
int GetFileFormatVersionAtLoad() const { return m_fileFormatVersionAtLoad; }
|
||||
|
||||
|
@ -402,6 +402,46 @@ bool BOARD_NETLIST_UPDATER::updateFootprintParameters( FOOTPRINT* aPcbFootprint,
|
||||
m_reporter->Report( msg, RPT_SEVERITY_ACTION );
|
||||
}
|
||||
|
||||
if( ( aNetlistComponent->GetProperties().count( wxT( "dnp" ) ) > 0 )
|
||||
!= ( ( aPcbFootprint->GetAttributes() & FP_DNP ) > 0 ) )
|
||||
{
|
||||
if( m_isDryRun )
|
||||
{
|
||||
if( aNetlistComponent->GetProperties().count( wxT( "dnp" ) ) )
|
||||
{
|
||||
msg.Printf( _( "Add %s 'Do not place' fabrication attribute." ),
|
||||
aPcbFootprint->GetReference() );
|
||||
}
|
||||
else
|
||||
{
|
||||
msg.Printf( _( "Remove %s 'Do not place' fabrication attribute." ),
|
||||
aPcbFootprint->GetReference() );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int attributes = aPcbFootprint->GetAttributes();
|
||||
|
||||
if( aNetlistComponent->GetProperties().count( wxT( "dnp" ) ) )
|
||||
{
|
||||
attributes |= FP_DNP;
|
||||
msg.Printf( _( "Added %s 'Do not place' fabrication attribute." ),
|
||||
aPcbFootprint->GetReference() );
|
||||
}
|
||||
else
|
||||
{
|
||||
attributes &= ~FP_DNP;
|
||||
msg.Printf( _( "Removed %s 'Do not place' fabrication attribute." ),
|
||||
aPcbFootprint->GetReference() );
|
||||
}
|
||||
|
||||
changed = true;
|
||||
aPcbFootprint->SetAttributes( attributes );
|
||||
}
|
||||
|
||||
m_reporter->Report( msg, RPT_SEVERITY_ACTION );
|
||||
}
|
||||
|
||||
if( changed && copy )
|
||||
m_commit.Modified( aPcbFootprint, copy );
|
||||
else if( copy )
|
||||
|
@ -3858,6 +3858,10 @@ FOOTPRINT* PCB_PARSER::parseFOOTPRINT_unchecked( wxArrayString* aInitialComments
|
||||
attributes |= FP_ALLOW_MISSING_COURTYARD;
|
||||
break;
|
||||
|
||||
case T_dnp:
|
||||
attributes |= FP_DNP;
|
||||
break;
|
||||
|
||||
case T_allow_soldermask_bridges:
|
||||
attributes |= FP_ALLOW_SOLDERMASK_BRIDGES;
|
||||
break;
|
||||
|
@ -1153,6 +1153,9 @@ void PCB_PLUGIN::format( const FOOTPRINT* aFootprint, int aNestLevel ) const
|
||||
if( aFootprint->GetAttributes() & FP_ALLOW_MISSING_COURTYARD )
|
||||
m_out->Print( 0, " allow_missing_courtyard" );
|
||||
|
||||
if( aFootprint->GetAttributes() & FP_DNP )
|
||||
m_out->Print( 0, " dnp" );
|
||||
|
||||
if( aFootprint->GetAttributes() & FP_ALLOW_SOLDERMASK_BRIDGES )
|
||||
m_out->Print( 0, " allow_soldermask_bridges" );
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user