diff --git a/migrations/Version20260713120000.php b/migrations/Version20260713120000.php new file mode 100644 index 00000000..d25ed18d --- /dev/null +++ b/migrations/Version20260713120000.php @@ -0,0 +1,46 @@ +addSql('ALTER TABLE parameters ADD eda_symbol_visibility TINYINT(1) DEFAULT NULL'); + } + + public function mySQLDown(Schema $schema): void + { + $this->addSql('ALTER TABLE parameters DROP COLUMN eda_symbol_visibility'); + } + + public function sqLiteUp(Schema $schema): void + { + $this->addSql('ALTER TABLE parameters ADD COLUMN eda_symbol_visibility BOOLEAN DEFAULT NULL'); + } + + public function sqLiteDown(Schema $schema): void + { + $this->addSql('ALTER TABLE parameters DROP COLUMN eda_symbol_visibility'); + } + + public function postgreSQLUp(Schema $schema): void + { + $this->addSql('ALTER TABLE parameters ADD eda_symbol_visibility BOOLEAN DEFAULT NULL'); + } + + public function postgreSQLDown(Schema $schema): void + { + $this->addSql('ALTER TABLE parameters DROP COLUMN eda_symbol_visibility'); + } +} diff --git a/src/Entity/Parameters/AbstractParameter.php b/src/Entity/Parameters/AbstractParameter.php index f47f2e82..48aa40bd 100644 --- a/src/Entity/Parameters/AbstractParameter.php +++ b/src/Entity/Parameters/AbstractParameter.php @@ -179,6 +179,14 @@ abstract class AbstractParameter extends AbstractNamedDBElement implements Uniqu #[ORM\Column(type: Types::BOOLEAN, nullable: true, options: ['default' => null])] protected ?bool $eda_visibility = null; + /** + * @var bool|null Whether the exported EDA field should be visible in the schematic symbol + * (sets the KiCad field's "visible" flag). Null means use system default. + */ + #[Groups(['full', 'parameter:read', 'parameter:write', 'import'])] + #[ORM\Column(type: Types::BOOLEAN, nullable: true, options: ['default' => null])] + protected ?bool $eda_symbol_visibility = null; + /** * Mapping is done in subclasses. * @@ -493,6 +501,21 @@ abstract class AbstractParameter extends AbstractNamedDBElement implements Uniqu return $this; } + public function isEdaSymbolVisibility(): ?bool + { + return $this->eda_symbol_visibility; + } + + /** + * @return $this + */ + public function setEdaSymbolVisibility(?bool $eda_symbol_visibility): self + { + $this->eda_symbol_visibility = $eda_symbol_visibility; + + return $this; + } + public function getComparableFields(): array { return ['name' => $this->name, 'group' => $this->group, 'element' => $this->element?->getId()]; diff --git a/src/Form/ParameterType.php b/src/Form/ParameterType.php index f68c3921..bf37fca4 100644 --- a/src/Form/ParameterType.php +++ b/src/Form/ParameterType.php @@ -156,6 +156,11 @@ class ParameterType extends AbstractType 'label' => false, 'required' => false, ]); + + $builder->add('eda_symbol_visibility', TriStateCheckboxType::class, [ + 'label' => false, + 'required' => false, + ]); } } diff --git a/src/Services/EDA/KiCadHelper.php b/src/Services/EDA/KiCadHelper.php index 42cc2518..a4d0a901 100644 --- a/src/Services/EDA/KiCadHelper.php +++ b/src/Services/EDA/KiCadHelper.php @@ -341,7 +341,9 @@ class KiCadHelper $fieldName = $parameter->getName(); //Don't overwrite hardcoded fields if (!isset($result['fields'][$fieldName])) { - $result['fields'][$fieldName] = $this->createField($parameter->getFormattedValue()); + //Whether the field should be visible in the schematic symbol (explicit, or system default when null) + $symbolVisibility = $parameter->isEdaSymbolVisibility() ?? $this->kiCadEDASettings->defaultParameterSymbolVisibility; + $result['fields'][$fieldName] = $this->createField($parameter->getFormattedValue(), $symbolVisibility); } } } diff --git a/src/Settings/MiscSettings/KiCadEDASettings.php b/src/Settings/MiscSettings/KiCadEDASettings.php index dd223007..a32b31e5 100644 --- a/src/Settings/MiscSettings/KiCadEDASettings.php +++ b/src/Settings/MiscSettings/KiCadEDASettings.php @@ -56,6 +56,13 @@ class KiCadEDASettings )] public bool $defaultParameterVisibility = false; + #[SettingsParameter( + label: new TM("settings.misc.kicad_eda.default_parameter_symbol_visibility"), + description: new TM("settings.misc.kicad_eda.default_parameter_symbol_visibility.help"), + + )] + public bool $defaultParameterSymbolVisibility = false; + #[SettingsParameter( label: new TM("settings.misc.kicad_eda.default_orderdetails_visibility"), description: new TM("settings.misc.kicad_eda.default_orderdetails_visibility.help"), diff --git a/templates/parts/edit/_specifications.html.twig b/templates/parts/edit/_specifications.html.twig index 6f631b9f..e55ea9da 100644 --- a/templates/parts/edit/_specifications.html.twig +++ b/templates/parts/edit/_specifications.html.twig @@ -15,6 +15,7 @@ {% trans %}specifications.text{% endtrans %} {% trans %}specifications.group{% endtrans %} + diff --git a/templates/parts/edit/edit_form_styles.html.twig b/templates/parts/edit/edit_form_styles.html.twig index 44c8d89c..993e1fb7 100644 --- a/templates/parts/edit/edit_form_styles.html.twig +++ b/templates/parts/edit/edit_form_styles.html.twig @@ -83,6 +83,9 @@ {% if form.eda_visibility is defined %} {{ form_widget(form.eda_visibility) }} {% endif %} + {% if form.eda_symbol_visibility is defined %} + {{ form_widget(form.eda_symbol_visibility) }} + {% endif %}