From 0000fcbe50d562d68cea23d852eb6c836b297cb6 Mon Sep 17 00:00:00 2001 From: Mike Williams Date: Wed, 27 Sep 2023 09:13:55 -0400 Subject: [PATCH] Schematic Setup: add BOM Preset importing --- eeschema/CMakeLists.txt | 2 + .../dialogs/dialog_sch_import_settings.cpp | 2 + .../dialog_sch_import_settings_base.cpp | 12 +- .../dialog_sch_import_settings_base.fbp | 132 ++++- .../dialogs/dialog_sch_import_settings_base.h | 4 +- eeschema/dialogs/dialog_schematic_setup.cpp | 22 + eeschema/dialogs/dialog_schematic_setup.h | 1 + .../dialogs/dialog_symbol_fields_table.cpp | 19 +- eeschema/dialogs/dialog_symbol_fields_table.h | 1 + .../dialog_symbol_fields_table_base.cpp | 2 + .../dialog_symbol_fields_table_base.fbp | 1 + .../dialogs/dialog_symbol_fields_table_base.h | 1 + eeschema/dialogs/panel_bom_presets.cpp | 116 ++++ eeschema/dialogs/panel_bom_presets.fbp | 531 ++++++++++++++++++ eeschema/dialogs/panel_bom_presets.h | 54 ++ eeschema/dialogs/panel_bom_presets_base.cpp | 120 ++++ eeschema/dialogs/panel_bom_presets_base.h | 61 ++ 17 files changed, 1072 insertions(+), 9 deletions(-) create mode 100644 eeschema/dialogs/panel_bom_presets.cpp create mode 100644 eeschema/dialogs/panel_bom_presets.fbp create mode 100644 eeschema/dialogs/panel_bom_presets.h create mode 100644 eeschema/dialogs/panel_bom_presets_base.cpp create mode 100644 eeschema/dialogs/panel_bom_presets_base.h diff --git a/eeschema/CMakeLists.txt b/eeschema/CMakeLists.txt index 693d080635..30891f8835 100644 --- a/eeschema/CMakeLists.txt +++ b/eeschema/CMakeLists.txt @@ -149,6 +149,8 @@ set( EESCHEMA_DLGS dialogs/dialog_update_symbol_fields_base.cpp dialogs/dialog_wire_bus_properties.cpp dialogs/dialog_wire_bus_properties_base.cpp + dialogs/panel_bom_presets.cpp + dialogs/panel_bom_presets_base.cpp dialogs/panel_eeschema_color_settings.cpp dialogs/panel_eeschema_display_options.cpp dialogs/panel_eeschema_display_options_base.cpp diff --git a/eeschema/dialogs/dialog_sch_import_settings.cpp b/eeschema/dialogs/dialog_sch_import_settings.cpp index 952eb24433..1fb74f4237 100644 --- a/eeschema/dialogs/dialog_sch_import_settings.cpp +++ b/eeschema/dialogs/dialog_sch_import_settings.cpp @@ -86,4 +86,6 @@ void DIALOG_SCH_IMPORT_SETTINGS::OnSelectAll( wxCommandEvent& event ) m_PinMapOpt->SetValue( true ); m_SeveritiesOpt->SetValue( true ); m_NetClassesOpt->SetValue( true ); + m_BomPresetsOpt->SetValue( true ); + m_BomFmtPresetsOpt->SetValue( true ); } diff --git a/eeschema/dialogs/dialog_sch_import_settings_base.cpp b/eeschema/dialogs/dialog_sch_import_settings_base.cpp index 2fe70399d0..c6d7c6e5a3 100644 --- a/eeschema/dialogs/dialog_sch_import_settings_base.cpp +++ b/eeschema/dialogs/dialog_sch_import_settings_base.cpp @@ -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! @@ -55,10 +55,16 @@ DIALOG_SCH_IMPORT_SETTINGS_BASE::DIALOG_SCH_IMPORT_SETTINGS_BASE( wxWindow* pare bmiddleSizer->Add( m_PinMapOpt, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 ); m_SeveritiesOpt = new wxCheckBox( this, wxID_ANY, _("Violation severities"), wxDefaultPosition, wxDefaultSize, 0 ); - bmiddleSizer->Add( m_SeveritiesOpt, 0, wxRIGHT|wxLEFT, 5 ); + bmiddleSizer->Add( m_SeveritiesOpt, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 ); m_NetClassesOpt = new wxCheckBox( this, wxID_ANY, _("Net classes"), wxDefaultPosition, wxDefaultSize, 0 ); - bmiddleSizer->Add( m_NetClassesOpt, 0, wxALL, 5 ); + bmiddleSizer->Add( m_NetClassesOpt, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 ); + + m_BomPresetsOpt = new wxCheckBox( this, wxID_ANY, _("BOM Presets"), wxDefaultPosition, wxDefaultSize, 0 ); + bmiddleSizer->Add( m_BomPresetsOpt, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 ); + + m_BomFmtPresetsOpt = new wxCheckBox( this, wxID_ANY, _("BOM Format Presets"), wxDefaultPosition, wxDefaultSize, 0 ); + bmiddleSizer->Add( m_BomFmtPresetsOpt, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 ); m_MainSizer->Add( bmiddleSizer, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 10 ); diff --git a/eeschema/dialogs/dialog_sch_import_settings_base.fbp b/eeschema/dialogs/dialog_sch_import_settings_base.fbp index 6f9c12ab51..eea55eec01 100644 --- a/eeschema/dialogs/dialog_sch_import_settings_base.fbp +++ b/eeschema/dialogs/dialog_sch_import_settings_base.fbp @@ -535,7 +535,7 @@ 5 - wxRIGHT|wxLEFT + wxBOTTOM|wxLEFT|wxRIGHT 0 1 @@ -599,7 +599,7 @@ 5 - wxALL + wxBOTTOM|wxLEFT|wxRIGHT 0 1 @@ -661,6 +661,134 @@ + + 5 + wxBOTTOM|wxLEFT|wxRIGHT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + BOM Presets + + 0 + + + 0 + + 1 + m_BomPresetsOpt + 1 + + + public + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + 5 + wxBOTTOM|wxLEFT|wxRIGHT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + BOM Format Presets + + 0 + + + 0 + + 1 + m_BomFmtPresetsOpt + 1 + + + public + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + diff --git a/eeschema/dialogs/dialog_sch_import_settings_base.h b/eeschema/dialogs/dialog_sch_import_settings_base.h index 852bf4553a..6daee93ee2 100644 --- a/eeschema/dialogs/dialog_sch_import_settings_base.h +++ b/eeschema/dialogs/dialog_sch_import_settings_base.h @@ -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! @@ -59,6 +59,8 @@ class DIALOG_SCH_IMPORT_SETTINGS_BASE : public DIALOG_SHIM wxCheckBox* m_PinMapOpt; wxCheckBox* m_SeveritiesOpt; wxCheckBox* m_NetClassesOpt; + wxCheckBox* m_BomPresetsOpt; + wxCheckBox* m_BomFmtPresetsOpt; DIALOG_SCH_IMPORT_SETTINGS_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Import Settings"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); diff --git a/eeschema/dialogs/dialog_schematic_setup.cpp b/eeschema/dialogs/dialog_schematic_setup.cpp index 84e6303c29..e5a8bb676f 100644 --- a/eeschema/dialogs/dialog_schematic_setup.cpp +++ b/eeschema/dialogs/dialog_schematic_setup.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -66,6 +67,15 @@ DIALOG_SCHEMATIC_SETUP::DIALOG_SCHEMATIC_SETUP( SCH_EDIT_FRAME* aFrame ) : return new PANEL_TEMPLATE_FIELDNAMES( aParent, &settings.m_TemplateFieldNames ); }, _( "Field Name Templates" ) ); + m_bomPresetsPage = m_treebook->GetPageCount(); + m_treebook->AddLazySubPage( + [this]( wxWindow* aParent ) -> wxWindow* + { + SCHEMATIC_SETTINGS& settings = m_frame->Schematic().Settings(); + return new PANEL_BOM_PRESETS( aParent, settings ); + }, _( "BOM Presets" ) ); + + m_treebook->AddPage( new wxPanel( GetTreebook() ), _( "Electrical Rules" ) ); m_severitiesPage = m_treebook->GetPageCount(); @@ -208,6 +218,18 @@ void DIALOG_SCHEMATIC_SETUP::onAuxiliaryAction( wxCommandEvent& event ) ->ImportSettingsFrom( file.m_NetSettings ); } + if( importDlg.m_BomPresetsOpt->GetValue() ) + { + static_cast( m_treebook->ResolvePage( m_bomPresetsPage ) ) + ->ImportBomPresetsFrom( *file.m_SchematicSettings ); + } + + if( importDlg.m_BomFmtPresetsOpt->GetValue() ) + { + static_cast( m_treebook->ResolvePage( m_bomPresetsPage ) ) + ->ImportBomFmtPresetsFrom( *file.m_SchematicSettings ); + } + if( !alreadyLoaded ) m_frame->GetSettingsManager()->UnloadProject( otherPrj, false ); } diff --git a/eeschema/dialogs/dialog_schematic_setup.h b/eeschema/dialogs/dialog_schematic_setup.h index 47b7a4154a..7e2fe413e0 100644 --- a/eeschema/dialogs/dialog_schematic_setup.h +++ b/eeschema/dialogs/dialog_schematic_setup.h @@ -51,6 +51,7 @@ protected: size_t m_formattingPage; size_t m_fieldNameTemplatesPage; + size_t m_bomPresetsPage; size_t m_pinMapPage; size_t m_busesPage; size_t m_severitiesPage; diff --git a/eeschema/dialogs/dialog_symbol_fields_table.cpp b/eeschema/dialogs/dialog_symbol_fields_table.cpp index cc2960750c..5e6b8f3985 100644 --- a/eeschema/dialogs/dialog_symbol_fields_table.cpp +++ b/eeschema/dialogs/dialog_symbol_fields_table.cpp @@ -1153,6 +1153,12 @@ BOM_FMT_PRESET DIALOG_SYMBOL_FIELDS_TABLE::GetCurrentBomFmtSettings() } +void DIALOG_SYMBOL_FIELDS_TABLE::ShowEditTab() +{ + m_nbPages->SetSelection( 0 ); +} + + void DIALOG_SYMBOL_FIELDS_TABLE::ShowExportTab() { m_nbPages->SetSelection( 1 ); @@ -1260,13 +1266,20 @@ void DIALOG_SYMBOL_FIELDS_TABLE::OnExport( wxCommandEvent& aEvent ) } -void DIALOG_SYMBOL_FIELDS_TABLE::OnCancel( wxCommandEvent& event ) +void DIALOG_SYMBOL_FIELDS_TABLE::OnCancel( wxCommandEvent& aEvent ) +{ + Close(); +} + + +void DIALOG_SYMBOL_FIELDS_TABLE::OnOk( wxCommandEvent& aEvent ) { + TransferDataFromWindow(); Close(); } -void DIALOG_SYMBOL_FIELDS_TABLE::OnClose( wxCloseEvent& event ) +void DIALOG_SYMBOL_FIELDS_TABLE::OnClose( wxCloseEvent& aEvent ) { // This is a cancel, so commit quietly as we're going to throw the results away anyway. m_grid->CommitPendingChanges( true ); @@ -1279,7 +1292,7 @@ void DIALOG_SYMBOL_FIELDS_TABLE::OnClose( wxCloseEvent& event ) return TransferDataFromWindow(); } ) ) { - event.Veto(); + aEvent.Veto(); return; } } diff --git a/eeschema/dialogs/dialog_symbol_fields_table.h b/eeschema/dialogs/dialog_symbol_fields_table.h index a5eb621985..8288902d65 100644 --- a/eeschema/dialogs/dialog_symbol_fields_table.h +++ b/eeschema/dialogs/dialog_symbol_fields_table.h @@ -86,6 +86,7 @@ private: void OnSaveAndContinue( wxCommandEvent& aEvent ) override; void OnCancel( wxCommandEvent& aEvent ) override; void OnClose( wxCloseEvent& aEvent ) override; + void OnOk( wxCommandEvent& aEvent ) override; void OnFilterText( wxCommandEvent& aEvent ) override; void OnFilterMouseMoved( wxMouseEvent& event ) override; void OnFieldsCtrlSelectionChanged( wxDataViewEvent& event ) override; diff --git a/eeschema/dialogs/dialog_symbol_fields_table_base.cpp b/eeschema/dialogs/dialog_symbol_fields_table_base.cpp index fde1c770a8..1ff52ac793 100644 --- a/eeschema/dialogs/dialog_symbol_fields_table_base.cpp +++ b/eeschema/dialogs/dialog_symbol_fields_table_base.cpp @@ -392,6 +392,7 @@ DIALOG_SYMBOL_FIELDS_TABLE_BASE::DIALOG_SYMBOL_FIELDS_TABLE_BASE( wxWindow* pare m_buttonExport->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnExport ), NULL, this ); m_buttonApply->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnSaveAndContinue ), NULL, this ); m_sdbSizerCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnCancel ), NULL, this ); + m_sdbSizerOK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnOk ), NULL, this ); } DIALOG_SYMBOL_FIELDS_TABLE_BASE::~DIALOG_SYMBOL_FIELDS_TABLE_BASE() @@ -429,5 +430,6 @@ DIALOG_SYMBOL_FIELDS_TABLE_BASE::~DIALOG_SYMBOL_FIELDS_TABLE_BASE() m_buttonExport->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnExport ), NULL, this ); m_buttonApply->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnSaveAndContinue ), NULL, this ); m_sdbSizerCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnCancel ), NULL, this ); + m_sdbSizerOK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_SYMBOL_FIELDS_TABLE_BASE::OnOk ), NULL, this ); } diff --git a/eeschema/dialogs/dialog_symbol_fields_table_base.fbp b/eeschema/dialogs/dialog_symbol_fields_table_base.fbp index bd2cbe050e..bcb895fdd3 100644 --- a/eeschema/dialogs/dialog_symbol_fields_table_base.fbp +++ b/eeschema/dialogs/dialog_symbol_fields_table_base.fbp @@ -3600,6 +3600,7 @@ m_sdbSizer protected OnCancel + OnOk diff --git a/eeschema/dialogs/dialog_symbol_fields_table_base.h b/eeschema/dialogs/dialog_symbol_fields_table_base.h index 3e19873eaa..d1897397cd 100644 --- a/eeschema/dialogs/dialog_symbol_fields_table_base.h +++ b/eeschema/dialogs/dialog_symbol_fields_table_base.h @@ -132,6 +132,7 @@ class DIALOG_SYMBOL_FIELDS_TABLE_BASE : public DIALOG_SHIM virtual void OnExport( wxCommandEvent& event ) { event.Skip(); } virtual void OnSaveAndContinue( wxCommandEvent& event ) { event.Skip(); } virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); } + virtual void OnOk( wxCommandEvent& event ) { event.Skip(); } public: diff --git a/eeschema/dialogs/panel_bom_presets.cpp b/eeschema/dialogs/panel_bom_presets.cpp new file mode 100644 index 0000000000..f6ca109650 --- /dev/null +++ b/eeschema/dialogs/panel_bom_presets.cpp @@ -0,0 +1,116 @@ +/* + * This program source code file is part of KICAD, a free EDA CAD application. + * + * Copyright (C) 2023 Mike Williams + * Copyright (C) 2023 KiCad Developers, see AUTHORS.txt for contributors. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, you may find one here: + * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html + * or you may search the http://www.gnu.org website for the version 2 license, + * or you may write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include + +#include +#include +#include +#include + + +PANEL_BOM_PRESETS::PANEL_BOM_PRESETS( wxWindow* aWindow, SCHEMATIC_SETTINGS& aSettings ) : + PANEL_BOM_PRESETS_BASE( aWindow ), m_settings( aSettings ) +{ + m_btnDeleteBomPreset->SetBitmap( KiBitmap( BITMAPS::small_trash ) ); + m_btnDeleteBomFmtPreset->SetBitmap( KiBitmap( BITMAPS::small_trash ) ); +} + + +bool PANEL_BOM_PRESETS::TransferDataToWindow() +{ + m_bomPresets = m_settings.m_BomPresets; + m_bomFmtPresets = m_settings.m_BomFmtPresets; + + BuildGrid(); + + return true; +} + + +bool PANEL_BOM_PRESETS::TransferDataFromWindow() +{ + m_settings.m_BomPresets = m_bomPresets; + m_settings.m_BomFmtPresets = m_bomFmtPresets; + + return true; +} + + +void PANEL_BOM_PRESETS::BuildGrid() +{ + m_bomPresetsGrid->ClearRows(); + m_bomFmtPresetsGrid->ClearRows(); + + for( const BOM_PRESET& p : m_bomPresets ) + { + m_bomPresetsGrid->AppendRows( 1 ); + m_bomPresetsGrid->SetCellValue( m_bomPresetsGrid->GetNumberRows() - 1, 0, p.name ); + } + + for( const BOM_FMT_PRESET& p : m_bomFmtPresets ) + { + m_bomFmtPresetsGrid->AppendRows( 1 ); + m_bomFmtPresetsGrid->SetCellValue( m_bomFmtPresetsGrid->GetNumberRows() - 1, 0, p.name ); + } +} + + +void PANEL_BOM_PRESETS::OnDeleteBomPreset( wxCommandEvent& event ) +{ + int curRow = m_bomPresetsGrid->GetGridCursorRow(); + + if( curRow < 0 || m_bomPresetsGrid->GetNumberRows() <= curRow ) + return; + + m_bomPresetsGrid->DeleteRows( curRow, 1 ); + m_bomPresets.erase( m_bomPresets.begin() + curRow ); +} + + +void PANEL_BOM_PRESETS::OnDeleteBomFmtPreset( wxCommandEvent& event ) +{ + int curRow = m_bomFmtPresetsGrid->GetGridCursorRow(); + + if( curRow < 0 || m_bomFmtPresetsGrid->GetNumberRows() <= curRow ) + return; + + m_bomFmtPresetsGrid->DeleteRows( curRow, 1 ); + // Erase the bom preset from the bom presets list. + m_bomFmtPresets.erase( m_bomFmtPresets.begin() + curRow ); +} + + +void PANEL_BOM_PRESETS::ImportBomPresetsFrom( SCHEMATIC_SETTINGS& aSettings ) +{ + m_bomPresets = aSettings.m_BomPresets; + BuildGrid(); +} + + +void PANEL_BOM_PRESETS::ImportBomFmtPresetsFrom( SCHEMATIC_SETTINGS& aSettings ) +{ + m_bomFmtPresets = aSettings.m_BomFmtPresets; + BuildGrid(); +} diff --git a/eeschema/dialogs/panel_bom_presets.fbp b/eeschema/dialogs/panel_bom_presets.fbp new file mode 100644 index 0000000000..c855288e01 --- /dev/null +++ b/eeschema/dialogs/panel_bom_presets.fbp @@ -0,0 +1,531 @@ + + + + + + C++ + 1 + source_name + 0 + 0 + res + UTF-8 + connect + panel_bom_presets_base + 1000 + none + + + 1 + PanelBomPresets + + . + + 1 + 1 + 1 + 1 + UI + 0 + 1 + 0 + + 0 + wxAUI_MGR_DEFAULT + + + 1 + 1 + impl_virtual + + + 0 + wxID_ANY + + + PANEL_BOM_PRESETS_BASE + + -1,-1 + ; forward_declare + + 0 + + + wxTAB_TRAVERSAL + + + bPanelSizer + wxVERTICAL + none + + 8 + wxTOP|wxLEFT|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Bill of Materials Presets: + 0 + + 0 + + + 0 + + 1 + m_bomTitle + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxEXPAND + 0 + + 3 + protected + 0 + + + + 10 + wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + 0 + 0 + + + + 1 + + + wxALIGN_LEFT + + wxALIGN_CENTER + 0 + 1 + wxALIGN_CENTER + wxGRID_AUTOSIZE + "Name" + wxALIGN_CENTER + 1 + 420 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + 0 + 1 + 0 + 1 + + 1 + + + 1 + 0 + 0 + wxID_ANY + + + + 0 + 0 + + 0 + + -1,-1 + 0 + -1,180 + 1 + m_bomPresetsGrid + 1 + + + protected + 1 + + Resizable + wxALIGN_CENTER + 0 + + wxALIGN_CENTER + + 0 + 1 + + WX_GRID; widgets/wx_grid.h; forward_declare + 0 + + + + + OnSizeGrid + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + 0 + + + + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 1 + + 1 + + + 0 + 0 + wxID_ANY + Delete Field + + 0 + + 0 + + + 0 + -1,-1 + 1 + m_btnDeleteBomPreset + 1 + + + protected + 1 + + + + Resizable + 1 + + + STD_BITMAP_BUTTON; widgets/std_bitmap_button.h; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnDeleteBomPreset + + + + 8 + wxEXPAND|wxLEFT|wxTOP + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Bill of Materials Formatting Presets: + 0 + + 0 + + + 0 + + 1 + m_bomFmtTitle + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxEXPAND + 0 + + 3 + protected + 0 + + + + 10 + wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + 0 + 0 + + + + 1 + + + wxALIGN_LEFT + + wxALIGN_CENTER + 0 + 1 + wxALIGN_CENTER + wxGRID_AUTOSIZE + "Name" + wxALIGN_CENTER + 1 + 420 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + 0 + 1 + 0 + 1 + + 1 + + + 1 + 0 + 0 + wxID_ANY + + + + 0 + 0 + + 0 + + -1,-1 + 0 + -1,180 + 1 + m_bomFmtPresetsGrid + 1 + + + protected + 1 + + Resizable + wxALIGN_CENTER + 0 + + wxALIGN_CENTER + + 0 + 1 + + WX_GRID; widgets/wx_grid.h; forward_declare + 0 + + + + + OnSizeGrid + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + 0 + + + + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 1 + + 1 + + + 0 + 0 + wxID_ANY + Delete Field + + 0 + + 0 + + + 0 + -1,-1 + 1 + m_btnDeleteBomFmtPreset + 1 + + + protected + 1 + + + + Resizable + 1 + + + STD_BITMAP_BUTTON; widgets/std_bitmap_button.h; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnDeleteBomFmtPreset + + + + + + diff --git a/eeschema/dialogs/panel_bom_presets.h b/eeschema/dialogs/panel_bom_presets.h new file mode 100644 index 0000000000..218333eebe --- /dev/null +++ b/eeschema/dialogs/panel_bom_presets.h @@ -0,0 +1,54 @@ +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2023 Mike Williams + * Copyright (C) 2023 KiCad Developers, see AUTHORS.txt for contributors. + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#ifndef PANEL_EESCHEMA_BOM_PRESETS_H +#define PANEL_EESCHEMA_BOM_PRESETS_H + +#include +#include + +class SCH_EDIT_FRAME; + + +class PANEL_BOM_PRESETS : public PANEL_BOM_PRESETS_BASE +{ +public: + PANEL_BOM_PRESETS( wxWindow* aWindow, SCHEMATIC_SETTINGS& aSettings ); + + void ImportBomPresetsFrom( SCHEMATIC_SETTINGS& aSettings ); + void ImportBomFmtPresetsFrom( SCHEMATIC_SETTINGS& aSettings ); + +protected: + void OnDeleteBomPreset( wxCommandEvent& event ) override; + void OnDeleteBomFmtPreset( wxCommandEvent& event ) override; + +private: + bool TransferDataToWindow() override; + bool TransferDataFromWindow() override; + void BuildGrid(); + +protected: + SCHEMATIC_SETTINGS& m_settings; + std::vector m_bomPresets; + std::vector m_bomFmtPresets; +}; + + +#endif //PANEL_EESCHEMA_DEFUALT_FIELDS_H diff --git a/eeschema/dialogs/panel_bom_presets_base.cpp b/eeschema/dialogs/panel_bom_presets_base.cpp new file mode 100644 index 0000000000..96b21280b3 --- /dev/null +++ b/eeschema/dialogs/panel_bom_presets_base.cpp @@ -0,0 +1,120 @@ +/////////////////////////////////////////////////////////////////////////// +// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b3) +// http://www.wxformbuilder.org/ +// +// PLEASE DO *NOT* EDIT THIS FILE! +/////////////////////////////////////////////////////////////////////////// + +#include "widgets/std_bitmap_button.h" +#include "widgets/wx_grid.h" + +#include "panel_bom_presets_base.h" + +/////////////////////////////////////////////////////////////////////////// + +PANEL_BOM_PRESETS_BASE::PANEL_BOM_PRESETS_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : wxPanel( parent, id, pos, size, style, name ) +{ + wxBoxSizer* bPanelSizer; + bPanelSizer = new wxBoxSizer( wxVERTICAL ); + + m_bomTitle = new wxStaticText( this, wxID_ANY, _("Bill of Materials Presets:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_bomTitle->Wrap( -1 ); + bPanelSizer->Add( m_bomTitle, 0, wxTOP|wxLEFT|wxEXPAND, 8 ); + + + bPanelSizer->Add( 0, 3, 0, wxEXPAND, 5 ); + + m_bomPresetsGrid = new WX_GRID( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + + // Grid + m_bomPresetsGrid->CreateGrid( 0, 1 ); + m_bomPresetsGrid->EnableEditing( false ); + m_bomPresetsGrid->EnableGridLines( true ); + m_bomPresetsGrid->EnableDragGridSize( false ); + m_bomPresetsGrid->SetMargins( 0, 0 ); + + // Columns + m_bomPresetsGrid->SetColSize( 0, 420 ); + m_bomPresetsGrid->EnableDragColMove( false ); + m_bomPresetsGrid->EnableDragColSize( true ); + m_bomPresetsGrid->SetColLabelValue( 0, _("Name") ); + m_bomPresetsGrid->SetColLabelSize( wxGRID_AUTOSIZE ); + m_bomPresetsGrid->SetColLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER ); + + // Rows + m_bomPresetsGrid->EnableDragRowSize( true ); + m_bomPresetsGrid->SetRowLabelSize( 0 ); + m_bomPresetsGrid->SetRowLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER ); + + // Label Appearance + + // Cell Defaults + m_bomPresetsGrid->SetDefaultCellAlignment( wxALIGN_LEFT, wxALIGN_CENTER ); + m_bomPresetsGrid->SetMinSize( wxSize( -1,180 ) ); + + bPanelSizer->Add( m_bomPresetsGrid, 1, wxEXPAND, 10 ); + + m_btnDeleteBomPreset = new STD_BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 ); + bPanelSizer->Add( m_btnDeleteBomPreset, 0, wxALL, 5 ); + + m_bomFmtTitle = new wxStaticText( this, wxID_ANY, _("Bill of Materials Formatting Presets:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_bomFmtTitle->Wrap( -1 ); + bPanelSizer->Add( m_bomFmtTitle, 0, wxEXPAND|wxLEFT|wxTOP, 8 ); + + + bPanelSizer->Add( 0, 3, 0, wxEXPAND, 5 ); + + m_bomFmtPresetsGrid = new WX_GRID( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + + // Grid + m_bomFmtPresetsGrid->CreateGrid( 0, 1 ); + m_bomFmtPresetsGrid->EnableEditing( false ); + m_bomFmtPresetsGrid->EnableGridLines( true ); + m_bomFmtPresetsGrid->EnableDragGridSize( false ); + m_bomFmtPresetsGrid->SetMargins( 0, 0 ); + + // Columns + m_bomFmtPresetsGrid->SetColSize( 0, 420 ); + m_bomFmtPresetsGrid->EnableDragColMove( false ); + m_bomFmtPresetsGrid->EnableDragColSize( true ); + m_bomFmtPresetsGrid->SetColLabelValue( 0, _("Name") ); + m_bomFmtPresetsGrid->SetColLabelSize( wxGRID_AUTOSIZE ); + m_bomFmtPresetsGrid->SetColLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER ); + + // Rows + m_bomFmtPresetsGrid->EnableDragRowSize( true ); + m_bomFmtPresetsGrid->SetRowLabelSize( 0 ); + m_bomFmtPresetsGrid->SetRowLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER ); + + // Label Appearance + + // Cell Defaults + m_bomFmtPresetsGrid->SetDefaultCellAlignment( wxALIGN_LEFT, wxALIGN_CENTER ); + m_bomFmtPresetsGrid->SetMinSize( wxSize( -1,180 ) ); + + bPanelSizer->Add( m_bomFmtPresetsGrid, 1, wxEXPAND, 10 ); + + m_btnDeleteBomFmtPreset = new STD_BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 ); + bPanelSizer->Add( m_btnDeleteBomFmtPreset, 0, wxALL, 5 ); + + + this->SetSizer( bPanelSizer ); + this->Layout(); + bPanelSizer->Fit( this ); + + // Connect Events + m_bomPresetsGrid->Connect( wxEVT_SIZE, wxSizeEventHandler( PANEL_BOM_PRESETS_BASE::OnSizeGrid ), NULL, this ); + m_btnDeleteBomPreset->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_BOM_PRESETS_BASE::OnDeleteBomPreset ), NULL, this ); + m_bomFmtPresetsGrid->Connect( wxEVT_SIZE, wxSizeEventHandler( PANEL_BOM_PRESETS_BASE::OnSizeGrid ), NULL, this ); + m_btnDeleteBomFmtPreset->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_BOM_PRESETS_BASE::OnDeleteBomFmtPreset ), NULL, this ); +} + +PANEL_BOM_PRESETS_BASE::~PANEL_BOM_PRESETS_BASE() +{ + // Disconnect Events + m_bomPresetsGrid->Disconnect( wxEVT_SIZE, wxSizeEventHandler( PANEL_BOM_PRESETS_BASE::OnSizeGrid ), NULL, this ); + m_btnDeleteBomPreset->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_BOM_PRESETS_BASE::OnDeleteBomPreset ), NULL, this ); + m_bomFmtPresetsGrid->Disconnect( wxEVT_SIZE, wxSizeEventHandler( PANEL_BOM_PRESETS_BASE::OnSizeGrid ), NULL, this ); + m_btnDeleteBomFmtPreset->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_BOM_PRESETS_BASE::OnDeleteBomFmtPreset ), NULL, this ); + +} diff --git a/eeschema/dialogs/panel_bom_presets_base.h b/eeschema/dialogs/panel_bom_presets_base.h new file mode 100644 index 0000000000..cf13ef373f --- /dev/null +++ b/eeschema/dialogs/panel_bom_presets_base.h @@ -0,0 +1,61 @@ +/////////////////////////////////////////////////////////////////////////// +// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b3) +// http://www.wxformbuilder.org/ +// +// PLEASE DO *NOT* EDIT THIS FILE! +/////////////////////////////////////////////////////////////////////////// + +#pragma once + +#include +#include +#include +class STD_BITMAP_BUTTON; +class WX_GRID; + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/////////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////////////// +/// Class PANEL_BOM_PRESETS_BASE +/////////////////////////////////////////////////////////////////////////////// +class PANEL_BOM_PRESETS_BASE : public wxPanel +{ + private: + + protected: + wxStaticText* m_bomTitle; + WX_GRID* m_bomPresetsGrid; + STD_BITMAP_BUTTON* m_btnDeleteBomPreset; + wxStaticText* m_bomFmtTitle; + WX_GRID* m_bomFmtPresetsGrid; + STD_BITMAP_BUTTON* m_btnDeleteBomFmtPreset; + + // Virtual event handlers, override them in your derived class + virtual void OnSizeGrid( wxSizeEvent& event ) { event.Skip(); } + virtual void OnDeleteBomPreset( wxCommandEvent& event ) { event.Skip(); } + virtual void OnDeleteBomFmtPreset( wxCommandEvent& event ) { event.Skip(); } + + + public: + + PANEL_BOM_PRESETS_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString ); + + ~PANEL_BOM_PRESETS_BASE(); + +}; +