KiCad PCB EDA Suite
Loading...
Searching...
No Matches
template_fieldnames.h File Reference
#include <initializer_list>
#include <kicommon.h>
#include <wx/string.h>

Go to the source code of this file.

Classes

struct  TEMPLATE_FIELDNAME
 Hold a name of a symbol's field, field value, and default visibility. More...
 
class  TEMPLATES
 

Macros

#define MANDATORY_FIELDS
 
#define GLOBALLABEL_MANDATORY_FIELDS   { FIELD_T::INTERSHEET_REFS }
 
#define SHEET_MANDATORY_FIELDS
 

Enumerations

enum class  FIELD_T : int {
  USER , REFERENCE , VALUE , FOOTPRINT ,
  DATASHEET , DESCRIPTION , INTERSHEET_REFS , SHEET_NAME ,
  SHEET_FILENAME , SHEET_USER
}
 The set of all field indices assuming an array like sequence that a SCH_COMPONENT or LIB_PART can hold. More...
 
enum  TRANSLATION { UNTRANSLATED , TRANSLATED }
 

Functions

KICOMMON_API wxString GetDefaultFieldName (FIELD_T aFieldId, TRANSLATION aTranslation)
 Return a default symbol field name for a mandatory field type.
 
KICOMMON_API wxString GetUserFieldName (int aFieldNdx, TRANSLATION aTranslation)
 
KICOMMON_API bool FieldNamesAreDuplicates (const wxString &aLhs, const wxString &aRhs, std::initializer_list< FIELD_T > aMandatoryFields)
 Test whether two field names should be treated as duplicates for the purposes of field name uniqueness within a given parent (symbol, sheet, or global label).
 
KICOMMON_API bool FieldNamesAreDuplicates (const wxString &aLhs, const wxString &aRhs)
 Convenience overload defaulting to symbol mandatory fields.
 

Macro Definition Documentation

◆ GLOBALLABEL_MANDATORY_FIELDS

◆ MANDATORY_FIELDS

#define MANDATORY_FIELDS
Value:
@ 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".

Definition at line 56 of file template_fieldnames.h.

Referenced by TEMPLATES::AddTemplateFieldName(), FIELDS_TABLE_DATA_MODEL_BASE::CanClearCell(), LIB_SYMBOL_LIBRARY_MANAGER::CreateSymbol(), DIALOG_CHANGE_SYMBOLS::DIALOG_CHANGE_SYMBOLS(), DIALOG_UPDATE_SYMBOL_FIELDS::DIALOG_UPDATE_SYMBOL_FIELDS(), FieldNamesAreDuplicates(), LIB_SYMBOL::Flatten(), VIEW_CONTROLS_GRID_DATA_MODEL::GetValue(), EESCHEMA_JOBS_HANDLER::JobExportBom(), PCBNEW_JOBS_HANDLER::JobExportBom(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadAliases(), SCH_IO_DATABASE::loadSymbolFromRow(), DIALOG_CHANGE_SYMBOLS::onOkButtonClicked(), DIALOG_UPDATE_SYMBOL_FIELDS::onOkButtonClicked(), DIALOG_FIELDS_TABLE::OnRemoveField(), DIALOG_FIELDS_TABLE::OnRenameField(), SCH_IO_KICAD_SEXPR_PARSER::parseProperty(), SCH_IO_KICAD_SEXPR_PARSER::parseSchField(), DIALOG_CHANGE_SYMBOLS::updateFieldsList(), and DIALOG_UPDATE_SYMBOL_FIELDS::updateFieldsList().

◆ SHEET_MANDATORY_FIELDS

Enumeration Type Documentation

◆ FIELD_T

enum class FIELD_T : int
strong

The set of all field indices assuming an array like sequence that a SCH_COMPONENT or LIB_PART can hold.

The first fields are fixed fields and are defined by MANDATORY_FIELDS. After that come an unlimited number of user defined fields, only some of which have indices defined here.

NOTE: this must stay a enum class to prevent developers from trying to use it as an array index.

Enumerator
USER 

The field ID hasn't been set yet; field is invalid.

REFERENCE 

Field Reference of part, i.e. "IC21".

VALUE 

Field Value of part, i.e. "3.3K".

FOOTPRINT 

Field Name Module PCB, i.e. "16DIP300".

DATASHEET 

name of datasheet

DESCRIPTION 

Field Description of part, i.e. "1/4W 1% Metal Film Resistor".

INTERSHEET_REFS 

Global label cross-reference page numbers.

SHEET_NAME 
SHEET_FILENAME 
SHEET_USER 

Definition at line 42 of file template_fieldnames.h.

◆ TRANSLATION

Enumerator
UNTRANSLATED 
TRANSLATED 

Definition at line 68 of file template_fieldnames.h.

Function Documentation

◆ FieldNamesAreDuplicates() [1/2]

KICOMMON_API bool FieldNamesAreDuplicates ( const wxString & aLhs,
const wxString & aRhs )

Convenience overload defaulting to symbol mandatory fields.

Definition at line 118 of file template_fieldnames.cpp.

References FieldNamesAreDuplicates(), and MANDATORY_FIELDS.

◆ FieldNamesAreDuplicates() [2/2]

KICOMMON_API bool FieldNamesAreDuplicates ( const wxString & aLhs,
const wxString & aRhs,
std::initializer_list< FIELD_T > aMandatoryFields )

Test whether two field names should be treated as duplicates for the purposes of field name uniqueness within a given parent (symbol, sheet, or global label).

Mandatory field names in the supplied set are matched case-insensitively because the s-expression parser folds case variants onto the mandatory field with the matching untranslated name on load. User-defined field names retain their original case in storage, so two user fields that differ only in case (e.g. "Manufacturer" vs "MANUFACTURER") are considered distinct.

Pass MANDATORY_FIELDS for symbol contexts, SHEET_MANDATORY_FIELDS for sheets, or GLOBALLABEL_MANDATORY_FIELDS for global labels. Each parent has its own set of untranslated mandatory field names used for case-insensitive matching in the parser.

Definition at line 95 of file template_fieldnames.cpp.

References GetDefaultFieldName(), and UNTRANSLATED.

Referenced by DIALOG_FIELDS_TABLE::AddField(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), FieldNamesAreDuplicates(), FIELDS_TABLE_DATA_MODEL_BASE::GetFieldNameCol(), DIALOG_FIELDS_TABLE::OnAddField(), DIALOG_LABEL_PROPERTIES::OnGridCellChanging(), DIALOG_LIB_SYMBOL_PROPERTIES::OnGridCellChanging(), DIALOG_SHEET_PROPERTIES::OnGridCellChanging(), and DIALOG_SYMBOL_PROPERTIES::OnGridCellChanging().

◆ GetDefaultFieldName()

KICOMMON_API wxString GetDefaultFieldName ( FIELD_T aFieldId,
TRANSLATION aTranslation )

Return a default symbol field name for a mandatory field type.

These field names are not modifiable but template field names are.

Parameters
aTranslationdetermines whether the field name is translated for display in dialogs.

Definition at line 51 of file template_fieldnames.cpp.

References _, DATASHEET, DATASHEET_UNTRANSLATED, DESCRIPTION, DESCRIPTION_UNTRANSLATED, FOOTPRINT, FOOTPRINT_UNTRANSLATED, GetUserFieldName(), INTERSHEET_REFS, INTERSHEET_REFS_UNTRANSLATED, REFERENCE, REFERENCE_UNTRANSLATED, s_UntranslatedDatasheet(), s_UntranslatedDescription(), s_UntranslatedFootprint(), s_UntranslatedIntersheetRefs(), s_UntranslatedReference(), s_UntranslatedSheetFile(), s_UntranslatedSheetName(), s_UntranslatedValue(), SHEET_FILE_UNTRANSLATED, SHEET_FILENAME, SHEET_NAME, SHEET_NAME_UNTRANSLATED, UNTRANSLATED, VALUE, and VALUE_UNTRANSLATED.

Referenced by NETLIST_EXPORTER_XML::addSymbolFields(), TEMPLATES::AddTemplateFieldName(), BACK_ANNOTATE::applyChangelist(), BOARD_NETLIST_UPDATER::applyComponentVariants(), FOOTPRINT_FIELDS_EDITOR_GRID_DATA_MODEL::applyDataToFootprint(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), FIELDS_TABLE_DATA_MODEL_BASE::CanClearCell(), FIELDS_TABLE_DATA_MODEL_BASE::ColIsFootprint(), FIELDS_TABLE_DATA_MODEL_BASE::ColIsReference(), FIELDS_TABLE_DATA_MODEL_BASE::ColIsValue(), PCB_PROPERTIES_PANEL::createPGProperty(), SCH_PROPERTIES_PANEL::createPGProperty(), PLACEFILE_GERBER_WRITER::CreatePlaceFile(), SCH_SHEET::Deserialize(), DIALOG_CHANGE_SYMBOLS::DIALOG_CHANGE_SYMBOLS(), DIALOG_UPDATE_SYMBOL_FIELDS::DIALOG_UPDATE_SYMBOL_FIELDS(), SCH_EDIT_TOOL::editFieldText(), FieldNamesAreDuplicates(), FOOTPRINT_FIELDS_TABLE_PRESENCE_FIXTURE::FOOTPRINT_FIELDS_TABLE_PRESENCE_FIXTURE(), PLACE_FILE_EXPORTER::GenPositionData(), PLACE_FILE_EXPORTER::GenReportData(), DIALOG_LIB_FIELDS_TABLE::getBuiltInBomPresets(), DIALOG_LIB_FOOTPRINT_FIELDS_TABLE::getBuiltInBomPresets(), FOOTPRINT_FIELDS_EDITOR_GRID_DATA_MODEL::getLiveFieldValueForVariant(), FOOTPRINT::GetMsgPanelInfo(), PCB_FIELD::GetName(), SCH_FIELD::GetName(), PCB_FIELD::GetTextTypeDescription(), SCH_FIELD::GetUntranslatedName(), FIELDS_GRID_TABLE::GetValue(), VIEW_CONTROLS_GRID_DATA_MODEL::GetValue(), SCH_SYMBOL::Init(), LIB_FIELDS_EDITOR_GRID_DATA_MODEL::isPowerSymbolControlledField(), EESCHEMA_JOBS_HANDLER::JobExportBom(), PCBNEW_JOBS_HANDLER::JobExportBom(), SYMBOL_TREE_MODEL_ADAPTER::loadColumnConfig(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadField(), DIALOG_FOOTPRINT_FIELDS_TABLE::LoadFieldNames(), DIALOG_LIB_FIELDS_TABLE::LoadFieldNames(), DIALOG_LIB_FOOTPRINT_FIELDS_TABLE::LoadFieldNames(), DIALOG_SYMBOL_FIELDS_TABLE::LoadFieldNames(), SCH_IO_EAGLE::loadInstance(), SCH_IO_KICAD_LEGACY::loadSymbol(), ISSUE25112_FIXTURE::MakeScopedModel(), DIALOG_CHANGE_SYMBOLS::onOkButtonClicked(), DIALOG_UPDATE_SYMBOL_FIELDS::onOkButtonClicked(), SCH_IO_KICAD_SEXPR_PARSER::parseProperty(), SCH_IO_KICAD_SEXPR_PARSER::parseSchField(), SCH_IO_KICAD_SEXPR_LIB_CACHE::saveField(), SCH_FIELD::SCH_FIELD(), SCH_SHEET::SCH_SHEET(), LIB_FIELDS_EDITOR_GRID_DATA_MODEL::setPowerSymbolDefaults(), DIALOG_FIELDS_TABLE::SetupColumnProperties(), LIB_FIELDS_EDITOR_GRID_DATA_MODEL::SetValue(), FOOTPRINT_FIELDS_EDITOR_GRID_TRICKS::showFieldsTablePopupMenu(), LIB_FIELDS_EDITOR_GRID_TRICKS::showFieldsTablePopupMenu(), LIB_FOOTPRINT_FIELDS_EDITOR_GRID_TRICKS::showFieldsTablePopupMenu(), SYMBOL_FIELDS_EDITOR_GRID_TRICKS::showFieldsTablePopupMenu(), SYMBOL_TREE_MODEL_ADAPTER::SYMBOL_TREE_MODEL_ADAPTER(), DRC_TEST_PROVIDER_SCHEMATIC_PARITY::testNetlist(), BOARD_NETLIST_UPDATER::updateFootprintParameters(), BOARD_NETLIST_UPDATER::UpdateNetlist(), and LIB_FIELDS_EDITOR_GRID_DATA_MODEL::ValidateReferences().

◆ GetUserFieldName()