Added some very basic variant support to KiCost output

- Just support a very basic KiCost variant, delegated to KiCost
- Related to #106
This commit is contained in:
Salvador E. Tropea 2021-12-30 11:30:17 -03:00
parent 9417b61478
commit c91d84c1f3
3 changed files with 14 additions and 3 deletions

View File

@ -1365,6 +1365,7 @@ Next time you need this list just use an alias, like this:
- `dnf_filter`: [string|list(string)='_none'] Name of the filter to mark components as not fitted.
A short-cut to use for simple cases where a variant is an overkill.
Internal variants and filters are currently ignored.
Exception: a KiCost variant that uses `variant` as variant field.
- `fields`: [string|list(string)] List of fields to be added to the global data section.
- `group_fields`: [string|list(string)] List of fields that can be different for a group.
Parts with differences in these fields are grouped together, but displayed individually.
@ -1383,6 +1384,7 @@ Next time you need this list just use an alias, like this:
- `name`: [string=''] New name.
- `variant`: [string=''] Board variant to apply.
Internal variants and filters are currently ignored.
Exception: a KiCost variant that uses `variant` as variant field.
- `output_id`: [string=''] Text to use for the %I expansion content. To differentiate variations of this output.
- `run_by_default`: [boolean=true] When enabled this output will be created when no specific outputs are requested.

View File

@ -814,7 +814,8 @@ outputs:
distributors:
# [string|list(string)='_none'] Name of the filter to mark components as not fitted.
# A short-cut to use for simple cases where a variant is an overkill.
# Internal variants and filters are currently ignored
# Internal variants and filters are currently ignored.
# Exception: a KiCost variant that uses `variant` as variant field
dnf_filter: '_none'
# [string|list(string)] List of fields to be added to the global data section
fields:
@ -846,7 +847,8 @@ outputs:
# [string=''] New name
name: 'manf#'
# [string=''] Board variant to apply.
# Internal variants and filters are currently ignored
# Internal variants and filters are currently ignored.
# Exception: a KiCost variant that uses `variant` as variant field
variant: ''
# PcbDraw - Beautiful 2D PCB render:

View File

@ -8,6 +8,7 @@ from subprocess import check_output, STDOUT, CalledProcessError
from .misc import CMD_KICOST, URL_KICOST, BOM_ERROR, DISTRIBUTORS, W_UNKDIST, ISO_CURRENCIES, W_UNKCUR, KICOST_SUBMODULE
from .error import KiPlotConfigurationError
from .optionable import Optionable
from .registrable import RegOutput
from .gs import GS
from .kiplot import check_script
from .out_base import VariantOptions
@ -16,7 +17,8 @@ from .fil_base import FieldRename
from . import log
logger = log.get_logger()
WARNING_MIX = "Internal variants and filters are currently ignored"
WARNING_MIX = ("Internal variants and filters are currently ignored.\n"
"Exception: a KiCost variant that uses `variant` as variant field")
class Aggregate(Optionable):
@ -98,6 +100,11 @@ class KiCostOptions(VariantOptions):
return val
def config(self, parent):
# If we are using a KiCost variant make it the default for `kicost_variant`
variant = RegOutput.check_variant(self.variant)
if variant is not None and variant.type == 'kicost' and variant.variant_field == 'variant':
logger.error('variant: '+str(variant.__dict__))
self.kicost_variant = variant.variant
super().config(parent)
if not self.output:
self.output = '%f.%x'