* add VARIANT and VARIANT_DESC to the list of known vars in the drawing
sheet editor.
* cache variant and variant description in respective objects.
* expand the respective text variables when building the drawing sheet.
* keep the cached variant and its description up-to-date when selecting
a variant in the GUI.
* pass variant and its description to the plotters.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/23430
The BOM revision in IPC-2581 export was hardcoded to "1.0"
instead of reflecting the actual design revision.
The project file stores two separate fields: bomRev for
explicit user overrides set in the PCBnew export dialog or
via --bom-rev on the CLI, and schRevision for the value
auto-propagated from eeschema.
There are some headers which don't need to include pad.h (which brings
padstack.h) - they just need forward defines.
While pad.h is not an especially heavy include on the scale of things,
footprint is quite heavy. And both reduce inclusion load and
reduce the number of files needlessly sensitive to changes in headers.
This lightens the load when including forwards for PCB_TRACK and
friends as we don't need all the transitive includes. Sometimes
you just need the enums - many users just wanted VIATYPE, or
just needed a forward.
And reduces transitive code churn when something is changed in the
header - this reduces the files affected by a change in
pcb_track.h from nearly 400 to under 200.
JobExportGencad() called LoadBoard() directly with m_filename, which is
empty when the job is dispatched from a jobset in the GUI. All other
export job handlers use getBoard(), which knows how to obtain the board
from the PCB editor frame in GUI mode, from the project in CLI mode, or
from a direct path.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/23227
The variant system correctly affected 3D visualization but all CLI
export paths (STEP, SVG, PDF, DXF, PS, Gerber, IPC-2581, ODB++) lost
the in-memory variant state because kicad-cli loads the board fresh
from disk.
Add m_variant field to JOB_EXPORT_PCB_3D, JOB_EXPORT_PCB_IPC2581, and
JOB_EXPORT_PCB_ODB. Add --variant CLI argument to all PCB plot, 3D,
IPC-2581, and ODB++ export commands. Each job handler now calls
SetCurrentVariant() on the board after loading, so variant-aware DNP
and BOM filtering works correctly during export.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/23159
Remove the existing file check when exporting ODB++ from the command line.
It is still retained when exporting ODB++ using the dialog.
This also adds additional command line status information when exporting
from the command line using a CLI_REPORTER object. If any errors occur
exporting they are written to 'stderr' and the job handler returns an
unknown error code instead of always returning a successful export.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/23148
(cherry picked from commit a88edddef3)
This breaks the view_item.h -> inspectable.h -> property.h chain that
pulled wx/propgrid/property.h into 150-200 TUs. The lean inspectable.h
now includes only wx/any.h, wx/string.h, wx/variant.h.
Headers using DECLARE_ENUM_TO_WXANY (board_item.h, sch_item.h) retain
their property.h include since the macro requires it.
Break the most expensive header include chains that contaminate the
largest number of translation units
New lightweight headers for extractdded types:
font_metrics.h, mouse_drag_action.h, board_project_settings_params.h,
common_settings_internals.h, wx_infobar_message_type.h,
zone_layer_properties_grid.h
Add complete import support for PADS ASCII (.asc) files, covering both
PCB layouts and schematics. The importer handles board outlines, copper
pours, routing with via inference, footprint decals, net assignment,
design rules, and component placement for PCB files. For schematics, it
supports symbol building from CAEDECAL definitions, multi-gate and
multi-variant parts, power symbols, wire routing, net labeling, arc
graphics, title blocks, and hierarchical sheet connectivity.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19944
When executing render jobs from jobsets, the code stored the preset name
in m_CurrentPreset but never actually applied the preset's layer visibility
settings and colors. This caused renders to use whatever settings were in
the user's 3D viewer config instead of the specified preset.
Add code to look up the preset and apply its settings using SetVisibleLayers()
and SetLayerColors(), matching the behavior of the 3D viewer GUI.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21887
Move CLOUD_SYNC_BUFFER_SIZE constant to kiplatform/io.h header so it
can be shared across all archive output locations. Apply the setvbuf
fix to additional locations that create zip archives.
This is a follow-up to 904b560668 which only fixed project_archiver.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21356
When running export jobs (Gerbers, SVG, DXF, PDF, PS), CheckAllZones()
was used to fill zones before plotting. However, CheckAllZones() has
an early-return check for m_ZoneFillsDirty which is not set in jobset
context, causing zones to remain unfilled.
Changed all job export handlers to use FillAllZones() with headless
mode enabled instead, following the pattern already used by the DRC
job handler. Modified the dialog text in jobset to reflect the action
rather than a check that cannot be acted on
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21937
Reverts most of the fix for 9778. Highlighting
multiple markers creates confusion in both the
status bar and how the associated clearance paths
are shown.
Also adds more clearance path graphics to make
the need for a fix to 9778 somewhat less acute.
Also makes clearance graphics scale with marker.
1) Always be explicit about what the delimiters are
2) If space is a delimiter, we probably want to skip
empty fields (wxTOKEN_STRTOK)
3) If space is not a delimiter, we often need to
trim the resultant tokens
4) Be more lenient about \t\r\n (and when they are
included, include them in the same order)