44#include <wx/textdlg.h>
65 const wxString& aVariantName )
67 std::vector<LIB_SYMBOL*> symbols;
81 libSymbol = variantSymbol;
84 symbols.push_back( libSymbol );
117 bool toggleCell(
int aRow,
int aCol,
bool aPreserveSelection =
false )
override
127 int row =
m_grid->GetGridCursorRow();
128 int col =
m_grid->GetGridCursorCol();
130 if( row >= 0 && col >= 0 )
135 aMenu.AppendSeparator();
140 aMenu.AppendSeparator();
147 std::vector<SCH_REFERENCE> refs =
m_dataModel->GetRowReferences( row );
149 if( refs.size() == 1 && refs[0].GetSymbol() )
151 aMenu.AppendSeparator();
154 const SCH_SYMBOL* symbol = refs[0].GetSymbol();
156 auto variant = symbol->
GetVariant( refs[0].GetSheetPath(), variantName );
158 if( variant && variant->m_SymbolOverride )
169 int row =
m_grid->GetGridCursorRow();
170 int col =
m_grid->GetGridCursorCol();
175 wxString fpid =
m_grid->GetCellValue( row, col );
181 m_grid->SetCellValue( row, col, fpid );
185 wxString datasheetUri =
m_grid->GetCellValue( row, col );
197 std::vector<SCH_REFERENCE> refs =
m_dataModel->GetRowReferences( row );
199 if( refs.size() != 1 || !refs[0].GetSymbol() )
203 std::vector<SCH_ITEM*> items = { refs[0].GetSymbol() };
204 selectionTool->
SyncSelection( refs[0].GetSheetPath(),
nullptr, items );
213 if( !
m_grid->CommitPendingChanges(
false ) )
221 m_dlg->ShowHideColumn( col, show );
223 wxString fieldName =
m_dataModel->GetColFieldName( col );
250 aParent->Schematic().Settings(), aJob ),
273 m_grid->UseNativeColHeader(
true );
281 m_grid->SetSelectionMode( wxGrid::wxGridSelectCells );
290 wxString variantToSelect;
293 variantToSelect =
m_job->GetSelectedVariant();
295 variantToSelect =
m_parent->Schematic().GetCurrentVariant();
297 if( !variantToSelect.IsEmpty() )
301 if( toSelect == wxNOT_FOUND )
314 SetTitle(
m_job->GetSettingsDialogTitle() );
316 SetTitle(
_(
"Symbol Fields Table" ) );
355 m_parent->Schematic().AddListener(
this );
360 m_grid->EnableEditing(
false );
373 m_parent->Schematic().RemoveListener(
this );
386 m_grid->PopEventHandler(
true );
412 if( !wxDialog::TransferDataToWindow() )
450 if( selection.GetSize() == 1 )
462 for(
int row = 0; row <
m_dataModel->GetNumberRows(); ++row )
464 std::vector<SCH_REFERENCE> references =
m_dataModel->GetRowReferences( row );
469 if( ref.GetSymbol() == symbol )
483 for(
int col = 0; col <
m_dataModel->GetNumberCols(); col++ )
489 else if( anyCol == -1 &&
m_dataModel->GetShowColumn( col ) )
493 if( valueCol != -1 &&
m_dataModel->GetShowColumn( valueCol ) )
494 m_grid->GoToCell( row, valueCol );
495 else if( refCol != -1 &&
m_dataModel->GetShowColumn( refCol ) )
496 m_grid->GoToCell( row, refCol );
497 else if( anyCol != -1 )
498 m_grid->GoToCell( row, anyCol );
516 if( !
m_grid->CommitPendingChanges() )
519 if( !wxDialog::TransferDataFromWindow() )
533 if( !commit.
Empty() )
535 commit.
Push( wxS(
"Symbol Fields Table Edit" ) );
540 m_parent->SetCurrentSheet( currentSheet );
550 auto addMandatoryField =
551 [&](
FIELD_T aFieldId,
bool aShow,
bool aGroupBy )
572 std::set<wxString> userFieldNames;
580 if( !field.IsMandatory() && !field.IsPrivate() )
581 userFieldNames.insert( field.GetName() );
585 for(
const wxString& fieldName : userFieldNames )
591 if( userFieldNames.count( templateField.m_Name ) == 0 )
602 if( aScope == SCOPE::SCOPE_SELECTION )
611 std::unordered_set<KIID_PATH> selectionItems;
616 auto addSelectionItem = [&](
EDA_ITEM* aItem )
622 else if( aItem->GetParent() && aItem->GetParent()->Type() ==
SCH_SYMBOL_T )
623 symbol =
static_cast<SCH_SYMBOL*
>( aItem->GetParent() );
629 selectionItems.insert(
path );
646 if( ref.GetSymbol() )
649 path.push_back( ref.GetSymbol()->m_Uuid );
650 selectionItems.insert(
path );
661 addSelectionItem( item );
670 switch( aEvent.GetSelection() )
672 case 0:
setScope( SCOPE::SCOPE_ALL );
break;
673 case 1:
setScope( SCOPE::SCOPE_SHEET );
break;
674 case 2:
setScope( SCOPE::SCOPE_SHEET_RECURSIVE );
break;
675 case 3:
setScope( SCOPE::SCOPE_SELECTION );
break;
686 _(
"Show symbols marked 'DNP' in the table. This setting also controls whether or not 'DNP' "
687 "symbols are included on export." ),
692 _(
"Show symbols marked 'Exclude from BOM' in the table. Symbols marked 'Exclude from BOM' "
693 "are never included on export." ),
697 menu.AppendSeparator();
700 _(
"Highlight corresponding item on canvas when it is selected in the table" ),
705 _(
"Select corresponding item on canvas when it is selected in the table" ),
710 int menuId =
m_bMenu->GetPopupMenuSelectionFromUser( menu );
753 if(
m_dataModel->GetScope() == SCOPE::SCOPE_SELECTION )
758 std::set<SCH_REFERENCE> refs;
759 std::set<SCH_ITEM*> symbols;
761 for(
int row : aRows )
768 symbols.insert( ref.GetSymbol() );
774 if( refs.size() > 0 )
778 wxString symbolPath = refs.begin()->GetFullPath();
791 std::vector<SCH_ITEM*> items( symbols.begin(), symbols.end() );
793 if( refs.size() > 0 )
794 selectionTool->
SyncSelection( refs.begin()->GetSheetPath(),
nullptr, items );
816 EndModal( wxID_CANCEL );
858 m_grid->CommitPendingChanges(
true );
877 m_parent->Schematic().RemoveListener(
this );
880 wxCommandEvent*
event =
new wxCommandEvent( EDA_EVT_CLOSE_DIALOG_SYMBOL_FIELDS_TABLE, wxID_ANY );
882 if( wxWindow* parentWindow = GetParent() )
883 wxQueueEvent( parentWindow, event );
907 if( !field.IsMandatory() && !field.IsPrivate() )
908 AddField( field.GetUntranslatedName(), field.GetName(),
true,
false,
false );
915 std::set<SCH_SYMBOL*> symbols;
919 symbols.insert( ref.GetSymbol() );
924 for(
SCH_FIELD& field : symbol->GetFields() )
926 if( !field.IsMandatory() && !field.IsPrivate() )
927 AddField( field.GetUntranslatedName(), field.GetName(),
true,
false,
false );
975 if( !field.IsMandatory() && !field.IsPrivate() )
976 AddField( field.GetUntranslatedName(), field.GetName(),
true,
false,
false );
983 std::set<SCH_SYMBOL*> symbols;
987 symbols.insert( ref.GetSymbol() );
992 for(
SCH_FIELD& field : symbol->GetFields() )
994 if( !field.IsMandatory() && !field.IsPrivate() )
995 AddField( field.GetUntranslatedName(), field.GetName(),
true,
false,
false );
1018 if(
m_dataModel->GetScope() == SCOPE::SCOPE_SELECTION )
1033 if(
m_dataModel->GetScope() == SCOPE::SCOPE_SELECTION )
1048 for(
size_t i = 0; i < aCachedRefs.
GetCount(); i++ )
1075 if( basePath.Path() == instance.m_Path )
1083 subSheets.push_back( sheetPath );
1101 if( !
m_grid->CommitPendingChanges() )
1104 if( !
m_parent->ShowAddVariantDialog(
this ) )
1107 wxArrayString ctrlContents;
1110 for(
const wxString& variant :
m_parent->Schematic().GetVariantNames() )
1111 ctrlContents.Add( variant );
1116 wxString currentVariant =
m_parent->Schematic().GetCurrentVariant();
1127 if( !
m_grid->CommitPendingChanges() )
1133 if( ( selection == wxNOT_FOUND ) || ( selection == 0 ) )
1135 m_parent->GetInfoBar()->ShowMessageFor(
_(
"Cannot delete the default variant." ), 10000, wxICON_ERROR );
1147 m_parent->Schematic().DeleteVariant( variantName, &commit );
1149 if( !commit.
Empty() )
1152 undoCmd =
m_parent->PopCommandFromUndoList();
1161 m_parent->PushCommandToUndoList( undoCmd );
1165 int newSelection = std::max( 0, selection - 1 );
1169 m_parent->SetCurrentVariant( selectedVariant );
1171 if(
m_grid->CommitPendingChanges(
true ) )
1173 m_dataModel->SetCurrentVariant( selectedVariant );
1184 m_parent->UpdateVariantSelectionCtrl(
m_parent->Schematic().GetVariantNamesForUI() );
1193 if( ( selection == wxNOT_FOUND ) || ( selection == 0 ) )
1195 m_parent->GetInfoBar()->ShowMessageFor(
_(
"Cannot rename the default variant." ), 10000, wxICON_ERROR );
1201 wxTextEntryDialog dlg(
this,
_(
"Enter new variant name:" ),
_(
"Rename Design Variant" ), oldVariantName,
1202 wxOK | wxCANCEL | wxCENTER );
1204 if( dlg.ShowModal() == wxID_CANCEL )
1207 wxString newVariantName = dlg.GetValue().Trim().Trim(
false );
1210 if( newVariantName == oldVariantName )
1213 if( !
m_parent->ValidateNewVariantName( newVariantName, oldVariantName ) )
1216 if( !
m_grid->CommitPendingChanges() )
1219 bool wasCurrent =
m_parent->Schematic().GetCurrentVariant() == oldVariantName;
1221 m_dataModel->RenameStoredVariant( oldVariantName, newVariantName );
1227 m_parent->Schematic().RenameVariant( oldVariantName, newVariantName, &commit );
1229 if( !commit.
Empty() )
1232 undoCmd =
m_parent->PopCommandFromUndoList();
1241 m_parent->PushCommandToUndoList( undoCmd );
1246 ctrlContents.Remove( oldVariantName );
1247 ctrlContents.Add( newVariantName );
1254 m_parent->UpdateVariantSelectionCtrl(
m_parent->Schematic().GetVariantNamesForUI() );
1257 m_parent->SetCurrentVariant( newVariantName );
1266 if( ( selection == wxNOT_FOUND ) || ( selection == 0 ) )
1268 m_parent->GetInfoBar()->ShowMessageFor(
_(
"Cannot copy the default variant." ),
1269 10000, wxICON_ERROR );
1275 wxTextEntryDialog dlg(
this,
_(
"Enter name for the copied variant:" ),
_(
"Copy Design Variant" ),
1276 sourceVariantName + wxS(
"_copy" ), wxOK | wxCANCEL | wxCENTER );
1278 if( dlg.ShowModal() == wxID_CANCEL )
1281 wxString newVariantName = dlg.GetValue().Trim().Trim(
false );
1284 if( newVariantName.IsEmpty() )
1286 m_parent->GetInfoBar()->ShowMessageFor(
_(
"Variant name cannot be empty." ), 10000, wxICON_ERROR );
1293 m_parent->GetInfoBar()->ShowMessageFor( wxString::Format(
_(
"Variant '%s' already exists." ),
1295 10000, wxICON_ERROR );
1299 if( !
m_grid->CommitPendingChanges() )
1302 m_parent->Schematic().CopyVariant( sourceVariantName, newVariantName );
1306 ctrlContents.Add( newVariantName );
1313 m_parent->UpdateVariantSelectionCtrl(
m_parent->Schematic().GetVariantNamesForUI() );
1321 if( ( selection == wxNOT_FOUND ) || ( selection == 0 ) )
1323 m_parent->GetInfoBar()->ShowMessageFor(
_(
"Cannot edit the default variant description." ), 10000,
1329 wxString currentDesc =
m_parent->Schematic().GetVariantDescription( variantName );
1331 wxDialog dlg(
this, wxID_ANY, wxString::Format(
_(
"Edit Description for '%s'" ), variantName ), wxDefaultPosition,
1332 wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER );
1334 wxBoxSizer* mainSizer =
new wxBoxSizer( wxVERTICAL );
1336 wxStaticText* label =
new wxStaticText( &dlg, wxID_ANY,
_(
"Description:" ) );
1337 mainSizer->Add( label, 0, wxLEFT | wxRIGHT | wxTOP | wxEXPAND, 10 );
1339 mainSizer->AddSpacer( 3 );
1341 wxTextCtrl* descCtrl =
1342 new wxTextCtrl( &dlg, wxID_ANY, currentDesc, wxDefaultPosition, wxSize( 300, 60 ), wxTE_MULTILINE );
1343 mainSizer->Add( descCtrl, 1, wxLEFT | wxRIGHT | wxBOTTOM | wxEXPAND, 10 );
1345 wxStdDialogButtonSizer* btnSizer =
new wxStdDialogButtonSizer();
1346 btnSizer->AddButton(
new wxButton( &dlg, wxID_OK ) );
1347 btnSizer->AddButton(
new wxButton( &dlg, wxID_CANCEL ) );
1348 btnSizer->Realize();
1349 mainSizer->Add( btnSizer, 0, wxALL | wxALIGN_RIGHT, 5 );
1351 dlg.SetSizer( mainSizer );
1355 if( dlg.ShowModal() == wxID_CANCEL )
1358 wxString newDesc = descCtrl->GetValue().Trim().Trim(
false );
1360 m_parent->Schematic().SetVariantDescription( variantName, newDesc );
1367 if( !
m_grid->CommitPendingChanges() )
1373 m_dataModel->SetCurrentVariant( selectedVariant );
1376 m_parent->SetCurrentVariant( selectedVariant );
1395 bool canModify = ( selection != wxNOT_FOUND ) && ( selection != 0 );
1410 return m_parent->Schematic().GetCurrentVariant();
STD_BITMAP_BUTTON * m_renameVariantButton
wxTextCtrl * m_outputFileName
wxChoice * m_cbBomFmtPresets
wxButton * m_buttonExport
STD_BITMAP_BUTTON * m_copyVariantButton
STD_BITMAP_BUTTON * m_bMenu
STD_BITMAP_BUTTON * m_deleteVariantButton
STD_BITMAP_BUTTON * m_editVariantDescButton
WX_GRID * m_viewControlsGrid
wxListBox * m_variantListBox
wxChoice * m_cbBomPresets
wxCheckBox * m_groupSymbolsBox
void saveJobSettings(JOB_EXPORT_BOM &aJob)
void SetUserBomFmtPresets(std::vector< BOM_FMT_PRESET > &aPresetList)
wxSize GetDefaultDialogSize() const
void syncBomFmtPresetSelection()
void OnColMove(wxGridEvent &aEvent)
void EnableSelectionEvents()
void DisableSelectionEvents()
void OnColSort(wxGridEvent &aEvent)
void OnGridMouseMove(wxMouseEvent &aEvent)
bool savePresets(bool aSaveCurrentSettings)
wxString getSelectedVariant() const
void RestorePanelLayout()
void RestoreGridSelection(const std::set< KIID_PATH > &aItemKeys)
Restore a selection previously returned by SaveGridSelection().
std::map< FIELD_T, int > m_mandatoryFieldListIndexes
void onBomFmtPresetChanged(wxCommandEvent &aEvent)
void SetUserBomPresets(std::vector< BOM_PRESET > &aPresetList)
void ApplyBomFmtPreset(const wxString &aPresetName)
DIALOG_FIELDS_TABLE(wxWindow *aParent, FIELDS_TABLE_SETTINGS &aPanelSettings, FIELDS_TABLE_BOM_SETTINGS &aBomSettings, JOB_EXPORT_BOM *aJob)
FIELDS_TABLE_BOM_SETTINGS & m_cfgBomSettings
static void loadJobBomFmtPreset(const JOB_EXPORT_BOM &aJob, BOM_FMT_PRESET &aPreset)
FIELDS_TABLE_SETTINGS & m_cfgDialogSettings
static void loadJobBomPreset(const JOB_EXPORT_BOM &aJob, BOM_PRESET &aPreset)
void onBomPresetChanged(wxCommandEvent &aEvent)
std::set< KIID_PATH > SaveGridSelection()
Save the grid selection by stable item identity so it can survive a row rebuild.
void ApplyBomPreset(const wxString &aPresetName)
void syncBomPresetSelection()
VIEW_CONTROLS_GRID_DATA_MODEL * m_viewControlsDataModel
void AddField(const wxString &aFieldName, const wxString &aLabelValue, bool aShow, bool aGroupBy, bool aAddedByUser=false)
void ExcludeFromControlUndoRedo(wxWindow *aWindow)
Opt a control out of the dialog's generic Ctrl+Z/Ctrl+Y undo/redo.
void OptOut(wxWindow *aWindow)
Opt out of control state saving.
void SetInitialFocus(wxWindow *aWindow)
Sets the window (usually a wxTextCtrl) that should be focused when the dialog is shown.
void SetupStandardButtons(std::map< int, wxString > aLabels={})
void finishDialogSettings()
In all dialogs, we must call the same functions to fix minimal dlg size, the default position and per...
void OnSaveAndContinue(wxCommandEvent &aEvent) override
void OnSchItemsRemoved(SCHEMATIC &aSch, std::vector< SCH_ITEM * > &aSchItem) override
void onAddVariant(wxCommandEvent &aEvent) override
SCH_REFERENCE_LIST getSheetSymbolReferences(SCH_SHEET &aSheet)
wxGridCellEditor * createDatasheetEditor() override
void OnOk(wxCommandEvent &aEvent) override
~DIALOG_SYMBOL_FIELDS_TABLE() override
void OnSchSelectionChanged(SCHEMATIC &aSch) override
void OnSchItemsAdded(SCHEMATIC &aSch, std::vector< SCH_ITEM * > &aSchItem) override
void OnSchItemsChanged(SCHEMATIC &aSch, std::vector< SCH_ITEM * > &aSchItem) override
SCH_EDIT_FRAME * m_parent
bool TransferDataFromWindow() override
void OnTableSelectionChanged(const std::set< int > &aRows) override
SCH_REFERENCE_LIST m_symbolsList
void updateSelectionItems()
SYMBOL_FIELDS_EDITOR_GRID_DATA_MODEL * m_dataModel
void onVariantSelectionChange(wxCommandEvent &aEvent) override
void OnClose(wxCloseEvent &aEvent) override
void OnSchSheetChanged(SCHEMATIC &aSch) override
void onCopyVariant(wxCommandEvent &aEvent) override
void setScope(SYMBOL_FIELDS_EDITOR_GRID_DATA_MODEL::SCOPE aScope)
void onDeleteVariant(wxCommandEvent &aEvent) override
bool TransferDataToWindow() override
DIALOG_SYMBOL_FIELDS_TABLE(SCH_EDIT_FRAME *aParent, JOB_EXPORT_BOM *aJob=nullptr)
wxString resolveVariant() const override
void updateVariantButtonStates()
void OnCancel(wxCommandEvent &aEvent) override
TEMPLATES & m_templateFieldNames
void OnMenu(wxCommandEvent &aEvent) override
SCH_REFERENCE_LIST getSymbolReferences(SCH_SYMBOL *aSymbol, SCH_REFERENCE_LIST &aCachedRefs)
void rebuildRowsPreservingSelection()
bool resolveTextVar(wxString *aToken) const override
void onRenameVariant(wxCommandEvent &aEvent) override
void LoadFieldNames()
Construct the rows of m_fieldsCtrl and the columns of m_dataModel from a union of all field names in ...
void OnScope(wxCommandEvent &aEvent) override
wxGridCellEditor * createFootprintEditor() override
void onEditVariantDescription(wxCommandEvent &aEvent) override
A base class for most all the KiCad significant classes used in schematics and boards.
KICAD_T Type() const
Returns the type of object.
EDA_ITEM * GetParent() const
static const wxString QUANTITY_VARIABLE
static const wxString ITEM_NUMBER_VARIABLE
FIELDS_TABLE_GRID_TRICKS(DIALOG_FIELDS_TABLE *aDialog, WX_GRID *aGrid, FIELDS_TABLE_DATA_MODEL_BASE *aDataModel)
static constexpr int FIRST_CLIENT_ID
virtual void doPopupSelection(wxCommandEvent &event)
virtual void showPopupMenu(wxMenu &menu, wxGridEvent &aEvent)
WX_GRID * m_grid
I don't own the grid, but he owns me.
virtual bool toggleCell(int aRow, int aCol, bool aPreserveSelection=false)
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
Define a library symbol object.
A holder to handle information on schematic or board items.
void PushItem(const ITEM_PICKER &aItem)
Push aItem to the top of the list.
void SetDescription(const wxString &aDescription)
static SEARCH_STACK * SchSearchS(PROJECT *aProject)
Accessor for Eeschema search stack.
Holds all the data relating to one schematic.
wxString GetCurrentVariant() const
Return the current variant being edited.
bool ResolveTextVar(const SCH_SHEET_PATH *aSheetPath, wxString *token, int aDepth) const
SCH_SHEET_PATH & CurrentSheet() const
static TOOL_ACTION clearVariantSymbol
static TOOL_ACTION setVariantSymbol
Commit for the schematic and symbol editors.
void Push(const wxString &aMessage=wxEmptyString, int aCommitFlags=0) override
Execute the changes.
Handle actions specific to the schematic editor.
Schematic editor (Eeschema) main window.
SCHEMATIC & Schematic() const
A set of SCH_ITEMs (i.e., without duplicates).
Base class for any item which can be embedded within the SCHEMATIC container class,...
Container to create a flattened list of symbols because in a complex hierarchy, a symbol can be used ...
void AddItem(const SCH_REFERENCE &aItem)
A helper to define a symbol's reference designator in a schematic.
void Split()
Attempt to split the reference designator into a name (U) and number (1).
SCH_SYMBOL * GetSymbol() const
A container for handling SCH_SHEET_PATH objects in a flattened hierarchy.
void GetSymbolsWithinPath(SCH_REFERENCE_LIST &aReferences, const SCH_SHEET_PATH &aSheetPath, SYMBOL_FILTER aSymbolFilter, bool aForceIncludeOrphanSymbols=false) const
Add a SCH_REFERENCE object to aReferences for each symbol in the list of sheets that are contained wi...
void GetSheetsWithinPath(std::vector< SCH_SHEET_PATH > &aSheets, const SCH_SHEET_PATH &aSheetPath) const
Add a SCH_SHEET_PATH object to aSheets for each sheet in the list that are contained within aSheetPat...
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
void push_back(SCH_SHEET *aSheet)
Forwarded method from std::vector.
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
const std::vector< SCH_SHEET_INSTANCE > & GetInstances() const
std::optional< SCH_SYMBOL_VARIANT > GetVariant(const SCH_SHEET_PATH &aInstance, const wxString &aVariantName) const
void GetFields(std::vector< SCH_FIELD * > &aVector, bool aVisibleOnly) const override
Populate a std::vector with SCH_FIELDs, sorted in ordinal order.
bool IsMissingLibSymbol() const
Check to see if the library symbol is set to the dummy library symbol.
LIB_SYMBOL * GetVariantLibSymbol(const wxString &aVariantName, const SCH_SHEET_PATH &aPath) const
Resolve the alternate library symbol for a given variant.
std::unique_ptr< LIB_SYMBOL > & GetLibSymbolRef()
bool IsPower() const override
void showFieldsTablePopupMenu(wxMenu &aMenu, wxGridEvent &aEvent) override
SYMBOL_FIELDS_EDITOR_GRID_TRICKS(DIALOG_SYMBOL_FIELDS_TABLE *aParent, WX_GRID *aGrid, VIEW_CONTROLS_GRID_DATA_MODEL *aViewFieldsData, SYMBOL_FIELDS_EDITOR_GRID_DATA_MODEL *aDataModel, EMBEDDED_FILES *aFiles)
DIALOG_SYMBOL_FIELDS_TABLE * m_dlg
SYMBOL_FIELDS_EDITOR_GRID_DATA_MODEL * m_dataModel
void doFieldsTablePopupSelection(wxCommandEvent &aEvent) override
bool toggleCell(int aRow, int aCol, bool aPreserveSelection=false) override
VIEW_CONTROLS_GRID_DATA_MODEL * m_viewControlsDataModel
wxString GetGeneratedFieldDisplayName(const wxString &aSource)
Returns any variables unexpanded, e.g.
bool HandleUnsavedChanges(wxWindow *aParent, const wxString &aMessage, const std::function< bool()> &aSaveFunction)
Display a dialog with Save, Cancel and Discard Changes buttons.
This file is part of the common library.
LIB_FIELDS_EDITOR_GRID_DATA_MODEL::SCOPE SCOPE
@ MYID_INCLUDE_EXCLUDED_FROM_BOM
wxDEFINE_EVENT(EDA_EVT_CLOSE_DIALOG_SYMBOL_FIELDS_TABLE, wxCommandEvent)
static wxString getFootprintChooserSymbolNetlist(const std::vector< SCH_REFERENCE > &aReferences, const wxString &aVariantName)
@ MYID_SET_VARIANT_SYMBOL
@ MYID_HIGHLIGHT_ON_CROSS_PROBE
@ MYID_SELECT_ON_CROSS_PROBE
@ MYID_CLEAR_VARIANT_SYMBOL
bool GetAssociatedDocument(wxWindow *aParent, const wxString &aDocName, PROJECT *aProject, SEARCH_STACK *aPaths, std::vector< EMBEDDED_FILES * > aFilesStack)
Open a document (file) with the suitable browser.
This file is part of the common library.
wxString BuildFootprintChooserSymbolNetlist(const LIB_SYMBOL *aSymbol)
#define SHOW_FIELD_COLUMN
bool SelectFootprintFromChooser(DIALOG_SHIM *aDialog, wxString &aFootprint, const wxString &aSymbolNetlist)
@ GRIDTRICKS_FIRST_SHOWHIDE
#define TO_UTF8(wxstring)
Convert a wxString to a UTF8 encoded C string for all wxWidgets build modes.
Class to handle a set of SCH_ITEMs.
Definition of the SCH_SHEET_PATH and SCH_SHEET_LIST classes for Eeschema.
@ SYMBOL_FILTER_NON_POWER
wxString GetDefaultVariantName()
int SortVariantNames(const wxString &aLhs, const wxString &aRhs)
A simple container for sheet instance information.
Hold a name of a symbol's field, field value, and default visibility.
std::vector< FIELD_CASE_CONFLICT > DetectFieldCaseConflicts(const SCH_REFERENCE_LIST &aSymbols)
wxString GetDefaultFieldName(FIELD_T aFieldId, TRANSLATION aTranslation)
Return a default symbol field name for a mandatory field type.
FIELD_T
The set of all field indices assuming an array like sequence that a SCH_COMPONENT or LIB_PART can hol...
@ DESCRIPTION
Field Description of part, i.e. "1/4W 1% Metal Film Resistor".
@ FOOTPRINT
Field Name Module PCB, i.e. "16DIP300".
@ DATASHEET
name of datasheet
@ REFERENCE
Field Reference of part, i.e. "IC21".
@ VALUE
Field Value of part, i.e. "3.3K".