Symbol Fields Table: configurable excluded from BOM filtering

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/17747
This commit is contained in:
Mike Williams 2024-04-15 10:06:08 -04:00
parent b7f035964f
commit ea904c9fb1
14 changed files with 3661 additions and 3495 deletions

View File

@ -39,6 +39,7 @@ JOB_EXPORT_SCH_BOM::JOB_EXPORT_SCH_BOM( bool aIsCli ) :
m_sortField(), m_sortField(),
m_sortAsc( true ), m_sortAsc( true ),
m_filterString(), m_filterString(),
m_excludeDNP( false ) m_excludeDNP( false ),
m_includeExcludedFromBOM( false )
{ {
} }

View File

@ -55,6 +55,7 @@ public:
bool m_sortAsc; bool m_sortAsc;
wxString m_filterString; wxString m_filterString;
bool m_excludeDNP; bool m_excludeDNP;
bool m_includeExcludedFromBOM;
}; };
#endif #endif

View File

@ -82,6 +82,7 @@ void to_json( nlohmann::json& j, const BOM_PRESET& p )
{ "filter_string", p.filterString }, { "filter_string", p.filterString },
{ "group_symbols", p.groupSymbols }, { "group_symbols", p.groupSymbols },
{ "exclude_dnp", p.excludeDNP }, { "exclude_dnp", p.excludeDNP },
{ "include_excluded_from_bom", p.includeExcludedFromBOM },
}; };
if( p.fieldsOrdered.size() > 0 ) if( p.fieldsOrdered.size() > 0 )
@ -98,6 +99,8 @@ void from_json( const nlohmann::json& j, BOM_PRESET& f )
j.at( "filter_string" ).get_to( f.filterString ); j.at( "filter_string" ).get_to( f.filterString );
j.at( "group_symbols" ).get_to( f.groupSymbols ); j.at( "group_symbols" ).get_to( f.groupSymbols );
j.at( "exclude_dnp" ).get_to( f.excludeDNP ); j.at( "exclude_dnp" ).get_to( f.excludeDNP );
// Was not present in initial BOM settings in 8.0, so default to false if not found
f.includeExcludedFromBOM = j.value( "include_excluded_from_bom", false );
} }
@ -110,13 +113,37 @@ bool BOM_PRESET::operator==( const BOM_PRESET& rhs ) const
&& this->sortField == rhs.sortField && this->sortField == rhs.sortField
&& this->sortAsc == rhs.sortAsc && this->sortAsc == rhs.sortAsc
&& this->groupSymbols == rhs.groupSymbols && this->groupSymbols == rhs.groupSymbols
&& this->excludeDNP == rhs.excludeDNP; && this->excludeDNP == rhs.excludeDNP
&& this->includeExcludedFromBOM == rhs.includeExcludedFromBOM;
}
BOM_PRESET BOM_PRESET::DefaultEditing()
{
BOM_PRESET p{
_HKI( "Default Editing" ), true, {}, _( "Reference" ), true, "", true, false, true
};
p.fieldsOrdered = std::vector<BOM_FIELD>{
{ "Reference", "Reference", true, false },
{ "${QUANTITY}", "Qty", true, false },
{ "Value", "Value", true, true },
{ "${DNP}", "DNP", true, true },
{ "${EXCLUDE_FROM_BOM}", "Exclude from BOM", true, true },
{ "${EXCLUDE_FROM_BOARD}", "Exclude from Board", true, true },
{ "Footprint", "Footprint", true, true },
{ "Datasheet", "Datasheet", true, false },
};
return p;
} }
BOM_PRESET BOM_PRESET::GroupedByValue() BOM_PRESET BOM_PRESET::GroupedByValue()
{ {
BOM_PRESET p{ _HKI( "Grouped By Value" ), true, {}, _( "Reference" ), true, "", true, false }; BOM_PRESET p{
_HKI( "Grouped By Value" ), true, {}, _( "Reference" ), true, "", true, false, false
};
p.fieldsOrdered = std::vector<BOM_FIELD>{ p.fieldsOrdered = std::vector<BOM_FIELD>{
{ "Reference", "Reference", true, false }, { "Reference", "Reference", true, false },
@ -134,7 +161,7 @@ BOM_PRESET BOM_PRESET::GroupedByValue()
BOM_PRESET BOM_PRESET::GroupedByValueFootprint() BOM_PRESET BOM_PRESET::GroupedByValueFootprint()
{ {
BOM_PRESET p{ BOM_PRESET p{
_HKI( "Grouped By Value and Footprint" ), true, {}, _( "Reference" ), true, "", true, false _HKI( "Grouped By Value and Footprint" ), true, {}, _( "Reference" ), true, "", true, false, false
}; };
p.fieldsOrdered = std::vector<BOM_FIELD>{ p.fieldsOrdered = std::vector<BOM_FIELD>{
@ -153,7 +180,7 @@ BOM_PRESET BOM_PRESET::GroupedByValueFootprint()
BOM_PRESET BOM_PRESET::Attributes() BOM_PRESET BOM_PRESET::Attributes()
{ {
BOM_PRESET p{ BOM_PRESET p{
_HKI( "Attributes" ), true, {}, _( "Reference" ), true, "", true, false _HKI( "Attributes" ), true, {}, _( "Reference" ), true, "", true, false, true
}; };
p.fieldsOrdered = std::vector<BOM_FIELD>{ p.fieldsOrdered = std::vector<BOM_FIELD>{
@ -172,8 +199,8 @@ BOM_PRESET BOM_PRESET::Attributes()
std::vector<BOM_PRESET> BOM_PRESET::BuiltInPresets() std::vector<BOM_PRESET> BOM_PRESET::BuiltInPresets()
{ {
return { BOM_PRESET::GroupedByValue(), BOM_PRESET::GroupedByValueFootprint(), return { BOM_PRESET::DefaultEditing(), BOM_PRESET::GroupedByValue(),
BOM_PRESET::Attributes() }; BOM_PRESET::GroupedByValueFootprint(), BOM_PRESET::Attributes() };
} }
//Implementations for BOM_FMT_PRESET //Implementations for BOM_FMT_PRESET
@ -248,4 +275,4 @@ std::vector<BOM_FMT_PRESET> BOM_FMT_PRESET::BuiltInPresets()
#if !defined( __MINGW32__ ) #if !defined( __MINGW32__ )
template class KICOMMON_API PARAM_LIST<BOM_PRESET>; template class KICOMMON_API PARAM_LIST<BOM_PRESET>;
template class KICOMMON_API PARAM_LIST<BOM_FMT_PRESET>; template class KICOMMON_API PARAM_LIST<BOM_FMT_PRESET>;
#endif #endif

View File

@ -216,10 +216,6 @@ DIALOG_SYMBOL_FIELDS_TABLE::DIALOG_SYMBOL_FIELDS_TABLE( SCH_EDIT_FRAME* parent )
m_filter->SetDescriptiveText( _( "Filter" ) ); m_filter->SetDescriptiveText( _( "Filter" ) );
m_dataModel = new FIELDS_EDITOR_GRID_DATA_MODEL( m_symbolsList ); m_dataModel = new FIELDS_EDITOR_GRID_DATA_MODEL( m_symbolsList );
// We want to show excluded symbols because the Edit page needs to show all symbols,
// they will still be excluded from the export.
m_dataModel->SetIncludeExcludedFromBOM( true );
LoadFieldNames(); // loads rows into m_fieldsCtrl and columns into m_dataModel LoadFieldNames(); // loads rows into m_fieldsCtrl and columns into m_dataModel
// Now that the fields are loaded we can set the initial location of the splitter // Now that the fields are loaded we can set the initial location of the splitter
@ -896,6 +892,16 @@ void DIALOG_SYMBOL_FIELDS_TABLE::OnExcludeDNPToggled( wxCommandEvent& event )
} }
void DIALOG_SYMBOL_FIELDS_TABLE::OnShowExcludedToggled( wxCommandEvent& event )
{
m_dataModel->SetIncludeExcludedFromBOM( m_checkShowExcluded->GetValue() );
m_dataModel->RebuildRows();
m_grid->ForceRefresh();
syncBomPresetSelection();
}
void DIALOG_SYMBOL_FIELDS_TABLE::OnColSort( wxGridEvent& aEvent ) void DIALOG_SYMBOL_FIELDS_TABLE::OnColSort( wxGridEvent& aEvent )
{ {
int sortCol = aEvent.GetCol(); int sortCol = aEvent.GetCol();
@ -1156,13 +1162,8 @@ void DIALOG_SYMBOL_FIELDS_TABLE::OnPreviewRefresh( wxCommandEvent& event )
void DIALOG_SYMBOL_FIELDS_TABLE::PreviewRefresh() void DIALOG_SYMBOL_FIELDS_TABLE::PreviewRefresh()
{ {
m_dataModel->SetIncludeExcludedFromBOM( false );
m_dataModel->RebuildRows(); m_dataModel->RebuildRows();
m_textOutput->SetValue( m_dataModel->Export( GetCurrentBomFmtSettings() ) ); m_textOutput->SetValue( m_dataModel->Export( GetCurrentBomFmtSettings() ) );
m_dataModel->SetIncludeExcludedFromBOM( true );
m_dataModel->RebuildRows();
} }
@ -1468,7 +1469,7 @@ void DIALOG_SYMBOL_FIELDS_TABLE::rebuildBomPresetsWidget()
m_cbBomPresets->Append( wxGetTranslation( pair.first ), m_cbBomPresets->Append( wxGetTranslation( pair.first ),
static_cast<void*>( &pair.second ) ); static_cast<void*>( &pair.second ) );
if( pair.first == BOM_PRESET::GroupedByValue().name ) if( pair.first == BOM_PRESET::DefaultEditing().name )
default_idx = idx; default_idx = idx;
idx++; idx++;
@ -1790,6 +1791,7 @@ void DIALOG_SYMBOL_FIELDS_TABLE::doApplyBomPreset( const BOM_PRESET& aPreset )
m_groupSymbolsBox->SetValue( m_dataModel->GetGroupingEnabled() ); m_groupSymbolsBox->SetValue( m_dataModel->GetGroupingEnabled() );
m_filter->ChangeValue( m_dataModel->GetFilter() ); m_filter->ChangeValue( m_dataModel->GetFilter() );
m_checkExcludeDNP->SetValue( m_dataModel->GetExcludeDNP() ); m_checkExcludeDNP->SetValue( m_dataModel->GetExcludeDNP() );
m_checkShowExcluded->SetValue( m_dataModel->GetIncludeExcludedFromBOM() );
SetupAllColumnProperties(); SetupAllColumnProperties();

View File

@ -71,6 +71,7 @@ private:
void OnColumnItemToggled( wxDataViewEvent& event ) override; void OnColumnItemToggled( wxDataViewEvent& event ) override;
void OnGroupSymbolsToggled( wxCommandEvent& event ) override; void OnGroupSymbolsToggled( wxCommandEvent& event ) override;
void OnExcludeDNPToggled( wxCommandEvent& event ) override; void OnExcludeDNPToggled( wxCommandEvent& event ) override;
void OnShowExcludedToggled( wxCommandEvent& event ) override;
void OnRegroupSymbols( wxCommandEvent& aEvent ) override; void OnRegroupSymbols( wxCommandEvent& aEvent ) override;
void OnScopeChanged( wxCommandEvent& aEvent ) override; void OnScopeChanged( wxCommandEvent& aEvent ) override;
void UpdateScope(); void UpdateScope();

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b) // C++ code generated with wxFormBuilder (version 4.0.0-0-g0efcecf-dirty)
// http://www.wxformbuilder.org/ // http://www.wxformbuilder.org/
// //
// PLEASE DO *NOT* EDIT THIS FILE! // PLEASE DO *NOT* EDIT THIS FILE!
@ -100,6 +100,10 @@ DIALOG_SYMBOL_FIELDS_TABLE_BASE::DIALOG_SYMBOL_FIELDS_TABLE_BASE( wxWindow* pare
m_checkExcludeDNP = new wxCheckBox( m_rightPanel, wxID_ANY, _("Exclude DNP"), wxDefaultPosition, wxDefaultSize, 0 ); m_checkExcludeDNP = new wxCheckBox( m_rightPanel, wxID_ANY, _("Exclude DNP"), wxDefaultPosition, wxDefaultSize, 0 );
bControls->Add( m_checkExcludeDNP, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); bControls->Add( m_checkExcludeDNP, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
m_checkShowExcluded = new wxCheckBox( m_rightPanel, wxID_ANY, _("Show 'Exclude from BOM'"), wxDefaultPosition, wxDefaultSize, 0 );
m_checkShowExcluded->SetValue(true);
bControls->Add( m_checkShowExcluded, 0, wxALL, 5 );
m_staticline32 = new wxStaticLine( m_rightPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); m_staticline32 = new wxStaticLine( m_rightPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
bControls->Add( m_staticline32, 0, wxEXPAND | wxALL, 3 ); bControls->Add( m_staticline32, 0, wxEXPAND | wxALL, 3 );
@ -362,6 +366,7 @@ DIALOG_SYMBOL_FIELDS_TABLE_BASE::DIALOG_SYMBOL_FIELDS_TABLE_BASE( wxWindow* pare
m_filter->Connect( wxEVT_MOTION, wxMouseEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnFilterMouseMoved ), NULL, this ); m_filter->Connect( wxEVT_MOTION, wxMouseEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnFilterMouseMoved ), NULL, this );
m_filter->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnFilterText ), NULL, this ); m_filter->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnFilterText ), NULL, this );
m_checkExcludeDNP->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnExcludeDNPToggled ), NULL, this ); m_checkExcludeDNP->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnExcludeDNPToggled ), NULL, this );
m_checkShowExcluded->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnShowExcludedToggled ), NULL, this );
m_groupSymbolsBox->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnGroupSymbolsToggled ), NULL, this ); m_groupSymbolsBox->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnGroupSymbolsToggled ), NULL, this );
m_bRefresh->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnRegroupSymbols ), NULL, this ); m_bRefresh->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnRegroupSymbols ), NULL, this );
m_grid->Connect( wxEVT_GRID_CELL_CHANGED, wxGridEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnTableValueChanged ), NULL, this ); m_grid->Connect( wxEVT_GRID_CELL_CHANGED, wxGridEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnTableValueChanged ), NULL, this );
@ -400,6 +405,7 @@ DIALOG_SYMBOL_FIELDS_TABLE_BASE::~DIALOG_SYMBOL_FIELDS_TABLE_BASE()
m_filter->Disconnect( wxEVT_MOTION, wxMouseEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnFilterMouseMoved ), NULL, this ); m_filter->Disconnect( wxEVT_MOTION, wxMouseEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnFilterMouseMoved ), NULL, this );
m_filter->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnFilterText ), NULL, this ); m_filter->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnFilterText ), NULL, this );
m_checkExcludeDNP->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnExcludeDNPToggled ), NULL, this ); m_checkExcludeDNP->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnExcludeDNPToggled ), NULL, this );
m_checkShowExcluded->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnShowExcludedToggled ), NULL, this );
m_groupSymbolsBox->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnGroupSymbolsToggled ), NULL, this ); m_groupSymbolsBox->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnGroupSymbolsToggled ), NULL, this );
m_bRefresh->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnRegroupSymbols ), NULL, this ); m_bRefresh->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnRegroupSymbols ), NULL, this );
m_grid->Disconnect( wxEVT_GRID_CELL_CHANGED, wxGridEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnTableValueChanged ), NULL, this ); m_grid->Disconnect( wxEVT_GRID_CELL_CHANGED, wxGridEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnTableValueChanged ), NULL, this );

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b) // C++ code generated with wxFormBuilder (version 4.0.0-0-g0efcecf-dirty)
// http://www.wxformbuilder.org/ // http://www.wxformbuilder.org/
// //
// PLEASE DO *NOT* EDIT THIS FILE! // PLEASE DO *NOT* EDIT THIS FILE!
@ -67,6 +67,7 @@ class DIALOG_SYMBOL_FIELDS_TABLE_BASE : public DIALOG_SHIM
wxSearchCtrl* m_filter; wxSearchCtrl* m_filter;
wxStaticLine* m_staticline31; wxStaticLine* m_staticline31;
wxCheckBox* m_checkExcludeDNP; wxCheckBox* m_checkExcludeDNP;
wxCheckBox* m_checkShowExcluded;
wxStaticLine* m_staticline32; wxStaticLine* m_staticline32;
wxCheckBox* m_groupSymbolsBox; wxCheckBox* m_groupSymbolsBox;
wxStaticLine* m_staticline3; wxStaticLine* m_staticline3;
@ -119,6 +120,7 @@ class DIALOG_SYMBOL_FIELDS_TABLE_BASE : public DIALOG_SHIM
virtual void OnFilterMouseMoved( wxMouseEvent& event ) { event.Skip(); } virtual void OnFilterMouseMoved( wxMouseEvent& event ) { event.Skip(); }
virtual void OnFilterText( wxCommandEvent& event ) { event.Skip(); } virtual void OnFilterText( wxCommandEvent& event ) { event.Skip(); }
virtual void OnExcludeDNPToggled( wxCommandEvent& event ) { event.Skip(); } virtual void OnExcludeDNPToggled( wxCommandEvent& event ) { event.Skip(); }
virtual void OnShowExcludedToggled( wxCommandEvent& event ) { event.Skip(); }
virtual void OnGroupSymbolsToggled( wxCommandEvent& event ) { event.Skip(); } virtual void OnGroupSymbolsToggled( wxCommandEvent& event ) { event.Skip(); }
virtual void OnRegroupSymbols( wxCommandEvent& event ) { event.Skip(); } virtual void OnRegroupSymbols( wxCommandEvent& event ) { event.Skip(); }
virtual void OnTableValueChanged( wxGridEvent& event ) { event.Skip(); } virtual void OnTableValueChanged( wxGridEvent& event ) { event.Skip(); }

View File

@ -524,6 +524,7 @@ int EESCHEMA_JOBS_HANDLER::JobExportBom( JOB* aJob )
preset.filterString = aBomJob->m_filterString; preset.filterString = aBomJob->m_filterString;
preset.groupSymbols = ( aBomJob->m_fieldsGroupBy.size() > 0 ); preset.groupSymbols = ( aBomJob->m_fieldsGroupBy.size() > 0 );
preset.excludeDNP = aBomJob->m_excludeDNP; preset.excludeDNP = aBomJob->m_excludeDNP;
preset.includeExcludedFromBOM = aBomJob->m_includeExcludedFromBOM;
} }
dataModel.ApplyBomPreset( preset ); dataModel.ApplyBomPreset( preset );

View File

@ -856,6 +856,7 @@ void FIELDS_EDITOR_GRID_DATA_MODEL::ApplyBomPreset( const BOM_PRESET& aPreset )
SetFilter( aPreset.filterString ); SetFilter( aPreset.filterString );
SetExcludeDNP( aPreset.excludeDNP ); SetExcludeDNP( aPreset.excludeDNP );
SetIncludeExcludedFromBOM( aPreset.includeExcludedFromBOM );
RebuildRows(); RebuildRows();
} }

View File

@ -199,8 +199,8 @@ SCHEMATIC_SETTINGS::SCHEMATIC_SETTINGS( JSON_SETTINGS* aParent, const std::strin
m_params.emplace_back( new PARAM<wxString>( "bom_export_filename", m_params.emplace_back( new PARAM<wxString>( "bom_export_filename",
&m_BomExportFileName, "${PROJECTNAME}.csv" ) ); &m_BomExportFileName, "${PROJECTNAME}.csv" ) );
m_params.emplace_back( new PARAM<BOM_PRESET>( "bom_settings", m_params.emplace_back(
&m_BomSettings, BOM_PRESET::GroupedByValue() ) ); new PARAM<BOM_PRESET>( "bom_settings", &m_BomSettings, BOM_PRESET::DefaultEditing() ) );
m_params.emplace_back( new PARAM_LIST<BOM_PRESET>( "bom_presets", m_params.emplace_back( new PARAM_LIST<BOM_PRESET>( "bom_presets",
&m_BomPresets, {} ) ); &m_BomPresets, {} ) );

View File

@ -56,9 +56,11 @@ struct KICOMMON_API BOM_PRESET
wxString filterString; wxString filterString;
bool groupSymbols = false; bool groupSymbols = false;
bool excludeDNP = false; bool excludeDNP = false;
bool includeExcludedFromBOM = false;
bool operator==( const BOM_PRESET& rhs ) const; bool operator==( const BOM_PRESET& rhs ) const;
static BOM_PRESET DefaultEditing();
static BOM_PRESET GroupedByValue(); static BOM_PRESET GroupedByValue();
static BOM_PRESET GroupedByValueFootprint(); static BOM_PRESET GroupedByValueFootprint();
static BOM_PRESET Attributes(); static BOM_PRESET Attributes();

View File

@ -168,6 +168,7 @@ int CLI::SCH_EXPORT_BOM_COMMAND::doPerform( KIWAY& aKiway )
bomJob->m_sortAsc = m_argParser.get<bool>( ARG_SORT_ASC ); bomJob->m_sortAsc = m_argParser.get<bool>( ARG_SORT_ASC );
bomJob->m_filterString = From_UTF8( m_argParser.get<std::string>( ARG_FILTER ).c_str() ); bomJob->m_filterString = From_UTF8( m_argParser.get<std::string>( ARG_FILTER ).c_str() );
bomJob->m_excludeDNP = m_argParser.get<bool>( ARG_EXCLUDE_DNP ); bomJob->m_excludeDNP = m_argParser.get<bool>( ARG_EXCLUDE_DNP );
bomJob->m_includeExcludedFromBOM = m_argParser.get<bool>( ARG_INCLUDE_EXCLUDED_FROM_BOM );
if( !wxFile::Exists( bomJob->m_filename ) ) if( !wxFile::Exists( bomJob->m_filename ) )
{ {

View File

@ -77,6 +77,9 @@ namespace CLI
#define ARG_EXCLUDE_DNP "--exclude-dnp" #define ARG_EXCLUDE_DNP "--exclude-dnp"
#define ARG_EXCLUDE_DNP_DESC "Exclude symbols marked Do-Not-Populate." #define ARG_EXCLUDE_DNP_DESC "Exclude symbols marked Do-Not-Populate."
#define ARG_INCLUDE_EXCLUDED_FROM_BOM "--include-excluded-from-bom"
#define ARG_INCLUDE_EXCLUDED_FROM_BOM_DESC "Include symbols marked 'Exclude from BOM'."
class SCH_EXPORT_BOM_COMMAND : public COMMAND class SCH_EXPORT_BOM_COMMAND : public COMMAND
{ {
public: public: