223 Commits

Author SHA1 Message Date
Seth Hillbrand
f66cbaf43a ADDED: Stacked pin notation support
Implement bracket notation for stacked pins ([1,2,3], [1-4], [1,3,5-7]).
Automatic net naming proceeds based on the smallest logical pin number
in stacked groups.

Provide explode/reform commands in symbol editor for conversion.
Supports arbitrary ranges including BGA alphanum ranges like
[AA1-AA3,CD14-CD22]

Adds some additional QA and trace logging

Fixes https://gitlab.com/kicad/code/kicad/-/issues/2004
2025-09-07 14:59:51 -07:00
Seth Hillbrand
ea8206eca5 Don't both designers with unneeded changes
If we are not asking for fields to be removed when updating, then don't
say we're doing anything if all we have to do is remove fields
2025-08-27 13:30:44 -07:00
Jeff Young
755537ad8c Fix some std::move() of a reference parameter issues.
Also some coding standard fixes for member variable
names.
2025-07-27 13:55:16 +01:00
Seth Hillbrand
094870e7a4 String fixes
- Clarify wording in a couple places
- Fix missing 'not' and remove non-standard dashes
- Standardize on single-quote for strings in strings
2025-07-23 17:36:51 -07:00
Jeff Young
7fbf51b17c Be more pedantic about RECURSE_MODE.
Also fixes an invalid iterator bug.

Also adds mirroring support for PCB_GROUPs.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21107
2025-06-12 11:21:28 +01:00
Jeff Young
70dfc9215d Accept empty "(fp)" statements.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20002
2025-06-08 16:33:05 +01:00
Jeff Young
ecd4d9d64a Don't assume a frame. 2025-06-08 16:33:05 +01:00
Jeff Young
96fa79cef2 Minor performance optimizations. 2025-06-03 11:41:27 +01:00
Jeff Young
c2591977b8 Minor performance optimizations. 2025-06-03 11:41:27 +01:00
Jeff Young
4a21da6b27 ADDED: field options for Update PCB from Schematic
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21021
2025-05-31 11:00:45 +01:00
Jeff Young
f58fc0b952 Rewrite GROUP undo based on uuids.
This also removes the GROUP/UNGROUP-specific undo actions.

This also fixes a bunch of undo bugs when duplicating
group members, creating pins, etc.

This also fixes some undo bugs when dividing wires etc.

This also fixes some bugs with new sch items not
being created within an entered group.
2025-05-21 14:24:59 +01:00
Mike Williams
bfc47bf387 sch->pcb: fixes for adding items to existing group 2025-05-13 14:42:27 -04:00
Mike Williams
d2f0a13515 groups/design blocks: add lib link to groups from design blocks
Also add Place Linked Design Block function.
2025-05-13 10:41:32 -04:00
Mike Williams
a17ef3fd93 groups: add support for syncing from SCH->PCB 2025-05-07 12:40:59 -04:00
JamesJCode
a5be581b1b Add char_traits<T> specialisations for wxUniChar and NANODBC_SQLCHAR
when building on Apple with Clang >= 17.

These specialisations are not strictly required by the C++ standard,
and have been removed from LLVM.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20631
2025-04-15 20:57:23 +01:00
jean-pierre charras
a661deb0ad BOARD_NETLIST_UPDATER: fix crash related to fields handling.
The crash happened when removing and deleting fields in footprint no
longer existing in netlist.
Crash due to a std::deque<PCB_FIELD*> modified during parsing, invalidating pointer.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20607
2025-04-11 11:16:25 +02:00
Mike Williams
40058ebe80 actions: move all basic selection operations to common actions 2025-04-02 12:02:01 -04:00
Jon Evans
1c83f0a70b Implement jumpers for footprints
Fixes https://gitlab.com/kicad/code/kicad/-/issues/2558
2025-03-24 22:17:46 -04:00
Jeff Young
f9b19bbb5b Fix is-same logic in updateFootprintParameters.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19988
2025-03-15 18:42:02 +00:00
JamesJCode
ede5faee72 Implement dynamic assignment of component classes 2025-03-15 14:33:47 +00:00
Seth Hillbrand
72411af9de Update fp properties even when can't update fp
When updating the footprint, we may encounter a missing footprint.  We
should still modify the netlist against the existing footprint (if one
does exist) to match the netlist.  This matches the behavior of updating
the netlist when fp are not selected for update

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18249
2025-02-25 17:03:52 -08:00
Jeff Young
c5bb59468d Get rid of assumptions about field order. 2025-02-24 11:08:29 +00:00
Jeff Young
ada1a9b054 Formatting. 2025-02-01 17:39:24 +00:00
Jeff Young
e19bce2f93 Reduce reliance on MANDATORY_FIELDS and their implied order. 2025-01-22 17:51:57 +00:00
Jeff Young
a0dd0485e9 Pull a little harder on the MANDATORY_FIELDs string.
We still conflate the fieldID, the position in the
array of fields, and whether or not that means the
field is mandatory.  But this attempts to clean up
*some* of that, without introducing too much risk.
2025-01-21 16:48:13 +00:00
Jeff Young
d50b69f1ae Reconcile divergence of MANDATORY_FIELDS between symbols and footprints.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19697
2025-01-21 13:28:28 +00:00
Seth Hillbrand
0b2d4d4879 Revise Copyright statement to align with TLF
Recommendation is to avoid using the year nomenclature as this
information is already encoded in the git repo.  Avoids needing to
repeatly update.

Also updates AUTHORS.txt from current repo with contributor names
2025-01-01 14:12:04 -08:00
JamesJCode
dfe0d6345b Another go at supressing FOOTPRINT field on FOOTPRINT objects 2024-12-28 21:57:35 +00:00
Jon Evans
9b1b318736 REMOVED: Footprint field from footprints
This field was redundant (was generally set to the footprint's LIB_ID)
but also buggy (not guaranteed to contain the footprint's LIB_ID)
and confusing (not a way to change the footprint's LIB_ID).
2024-12-01 15:50:40 -05:00
Jeff Young
251a6a27aa Escape HTML in messages.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18925
2024-10-20 16:37:01 +01:00
JamesJCode
1fcc71a5c7 Improve netlist import messages for component class changes
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18917
2024-10-15 14:05:12 +01:00
JamesJCode
f4e5ae0514 Clean up redundant component classes on netlist update 2024-10-07 22:24:03 +01:00
John Beard
3d6d8b9946 Strip richio.h from headers that don't need them
Like the DSNLEXER header, this has visibility in over 700
files, whereas well under half actually use any of it
(quite a bit, but not all, of it actually via DSNLEXER)

Many places already forward-declare the OUTPUTFORMATTER type,
by doing that for the others, it still possible to use the
non-IO methods without having to see richio.h.
2024-10-04 18:06:18 +01:00
John Beard
77f2cce10d NETLIST_PARSER: Put in own header
This one isn't as invasive as the others, but it is still
an implementation class that's not needed for public use
of netlists.

Actually, this could even be local to kicad_netlist_reader.cpp
as it's literally only used there.

Now, dsnlexer.h is exposed to only the files it needs, rather
than nearly 800 files.
2024-10-04 15:01:00 +01:00
Wayne Stambaugh
38db5e13b0 Fix null pointer dereference crash when updating board from schematic. 2024-10-02 13:39:28 -04:00
JamesJCode
d64a112971 Implement Component Classes
- Adds Component Class field to SCH_DIRECTIVE_LABEL
- Adds SCH_SYMBOLs to SCH_RULE_AREA item lists
- SCH_SYMBOLs resolve Component Class directives
- Netlist exporter / importer handles Component Class names
- Adds DRC expressions and functions
- Adds QA check for component class netlist export
2024-10-01 22:36:18 +01:00
JamesJCode
0e11c9cb8c Remove debug output from KICAD_NETLIST_PARSER 2024-09-28 11:58:53 +01:00
Wayne Stambaugh
64d4dbb2e8 Fix incorrect warning coordinates when updating board from schematic.
Use the X and Y axis inversion preference settings in the "PCB Editor"
"Origin & Axes" panel to invert the internal coordinates to display to
the user.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18662
2024-09-11 12:03:48 -04:00
Tomasz Wlostowski
e35f64c3cf pcbnew: parse also the human readable hierarchical sheet paths for footprints when reading the netlist
We've had so far the chain of UUIDs, but for the ease of use in the DRC language (i.e. memberOfSheet),
a human-readable path is also useful. No file format changes.
2024-08-13 22:50:25 +02:00
James J
7ce00e511b Multi-netclass support 2024-07-26 20:49:29 +00:00
Jeff Young
fcb104694b Avoid cover types. 2024-07-22 13:21:29 +01:00
Jeff Young
756445dd19 Fix missing From_UTF8().
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18406
2024-07-20 20:46:15 +01:00
jean-pierre charras
a075a80b3c Move all CTL_OMIT_xxx flags definitions into a new file ctl_flags.h
Previously, they were defined in different files, and sometimes redefined.
This change should not create an actual code change.
However, this move shows there are the same value used for different flags,
so another fix should be made later.
2024-07-14 18:10:37 +02:00
Jeff Young
9be60cb45d Gracefully handle DNP & Excl-from-brd components in nets list.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17146
2024-04-26 20:11:33 +01:00
Seth Hillbrand
f61d400d88 Allow non-identical schematic/pcb nets
The schematic net names are fully unique but if we have multiple pads
that are mapped to a NC pin, they need to have unique net names so that
they do not get connected to each other in the ratsnest.  This breaks
the schematic parity check as we have modified the netname for some
pads.  To work around this, we first maintain the zero-th net without
suffix and then add an additional check in DRC to ensure that we allow
unconnected nets as long as the share a common prefix with the schematic
netname.
2024-04-15 17:54:44 -07:00
Jeff Young
fa0ead98d8 Split out table editing and table cell editing. 2024-02-24 20:05:51 +00:00
Jeff Young
4c5dbcd7f4 ADDED override locks checkbox for update from schematic.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16471
2024-02-24 20:05:50 +00:00
jean-pierre charras
fe1579ebbd BOARD_NETLIST_UPDATER: fix issue when reading net-lists having no FOOTPRINT_FIELD
they can be old net-lists or non Kicad net-lists.
Fixes #16931
https://gitlab.com/kicad/code/kicad/-/issues/16931
2024-02-11 21:03:00 +01:00
jean-pierre charras
5d3c35c5d3 BOARD_NETLIST_UPDATER: fix incorrect warning message:
pad number and footprint reference were swapped.
Fixes #16500
https://gitlab.com/kicad/code/kicad/-/issues/16500
2024-01-02 15:14:53 +01:00
Jeff Young
985e590e6f PCB_FIELDs don't belong in the view.
They're handled by their parent FOOTPRINTs.

Also makes sure footprint children get their parents
updated on a swap.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16412
2023-12-31 21:38:11 +00:00