2196 Commits

Author SHA1 Message Date
Seth Hillbrand
56ad08cdd8 Prevent backannotation from changing variables
Updating to PCB always resolves text variables from the schematic.  This
means that back annotation will always start from resolved variables if
they exist in the schematic.  So to avoid this, we prevent overwriting
any text variables that exist in the schematic.

This does prevent the user from updating a text variable in a pcbnew
field and backannotating this variable change into the schematic where
the schematic had a text variable already.  Text variables are forward
annotation only until we add an additional property to each field to
include the unresolved text

Fixes https://gitlab.com/kicad/code/kicad/issues/21724
2025-09-12 07:24:39 -07:00
Seth Hillbrand
dcbadb5857 Allow drag-drop for schematic elements
Dragging screen elements over a subsheet allows moving elements into a
subsheet
2025-09-11 02:16:47 -07:00
Seth Hillbrand
ef602be91f Allow drawing subsheet with click+drag
Interestingly, the majority of people in a KiCad training course wanted
to draw subsheets this way.  There is no real reason to keep the
existing select behavior, so this greases some skids
2025-09-10 21:55:31 -07:00
Seth Hillbrand
ceed9ca5f8 ADDED: Place missing units
Adds a contextual menu for symbols that will look for units that are not
currently instantiated and offer to place them
2025-09-08 16:38:49 -07:00
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
Jeff Young
702f774a1f Bring DIALOG_LIB_FIELDS into line with DIALOG_SYMBOL_FIELDS_TABLE. 2025-09-06 15:10:30 +01:00
Seth Hillbrand
173e02eff7 ADDED: Lasso support to Schematic Editor 2025-09-03 06:45:49 -07:00
jean-pierre charras
2346be9768 Fix compil warnings 2025-09-03 09:43:41 +02:00
John Beard
8709f73b98 Symbol editor: simplify root symbol-finding 2025-09-03 00:30:56 +08:00
John Beard
e76b2089bb Symbol edit: add symbol flatten action
This removes inheritance from the symbol.

This doesn't play well with undo, but then again, neither does symbol
deletion, so that seems like a higher-level symbol editor issue.

Relates-To: https://gitlab.com/kicad/code/kicad/-/issues/8895
2025-09-03 00:24:32 +08:00
John Beard
b34746e06b Symbol editor: allow editing all related symbols from the treeview
This makes it more straightforward to edit a group of related symbols
(related = all derived from the same parent, including the parent).

Relates-To: https://gitlab.com/kicad/code/kicad/-/issues/21067
Relates-To: https://gitlab.com/kicad/code/kicad/-/issues/9742
Relates-To: https://gitlab.com/kicad/code/kicad/-/issues/11506
2025-09-03 00:24:18 +08:00
John Beard
9b14434fc3 Symbol editor: allow to inject the symbol list into DIALOG_LIB_FIELDS
This will permit editing fields for subsets (e.g. only symbols in
a certain inheritance hierarchy)
2025-09-03 00:24:12 +08:00
Jeff Young
cff261ce2e Don't allow stack addresses to escape via long-life handlers. 2025-09-02 14:19:17 +01:00
Seth Hillbrand
9cba910d53 ADDED: Library Table Editor
Edits all symbols in a library at once.  Supports copy/paste, multiple
field assignment and selective coloration based on existing data

Fixes https://gitlab.com/kicad/code/kicad/-/issues/11506
2025-09-01 21:47:14 -07:00
jean-pierre charras
4953e80122 Fix some compil warnings 2025-09-01 16:22:05 +02:00
Jeff Young
4024a15a17 Don't reference stack variables from a long-life lambda.
In particular, a lambda for conditional menus should
never capture more than `[this]`.  Even the tool's
frame pointer could change.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21615
2025-09-01 12:44:20 +01:00
Jeff Young
0c8e7a7137 Reload symbol chooser on keep symbol, and improve accessibility.
(Respond to hotkey-generated clicks.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/7698
2025-09-01 11:45:20 +01:00
Seth Hillbrand
bbc762a546 ADDED: Angle preview for polygon mod
Shows angle for the current and adjacent corners and whether they are
congruent
2025-08-31 11:49:41 -07:00
Seth Hillbrand
8c6f057f6c Re-organize points to allow missing radius
Not all rectangles want/need the radius point, but we will only be able
to drag one point at a time.  So we re-organize which point of an
overlapping set is selected

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21605
2025-08-31 07:10:14 -07:00
Jeff Young
9d7db3d135 Better interactive feedback.
Don't wait for mouse to move before refreshing after a command.

Also fixes a crash bug deleting an item after an
Unstage() (the Unstage() has already deleted the item).

Also fixes a crash when changing label type during
creation of a label produces a mess.

Also Keep cursor aligned to grid when not warping
back to original point.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16828
2025-08-31 14:25:52 +01:00
Seth Hillbrand
8acf5c1a25 ADDED: Rounded Rectangles
Fixes https://gitlab.com/kicad/code/kicad/-/issues/4742
2025-08-29 17:37:30 -07:00
Seth Hillbrand
e8cec41355 ADDED: Indication of filter blocking
If the selection filter has blocked all selections under the cursor,
show a subtle flash on which filter(s) did the blocking.  Helpful for
people getting frustrated by not being able to select locked items.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20487
2025-08-29 07:08:27 -07:00
Jeff Young
5c240efd75 Consolidate to single copy of deletableItems. 2025-08-28 11:54:24 +01:00
Jeff Young
6dd4e01f16 ADDED: custom body styles.
(Also moves editing of unit display names to the
Symbol Properties dialog and retires the Set Unit
Display Name dialog.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16069

Fixes https://gitlab.com/kicad/code/kicad/-/issues/14843
2025-08-27 18:11:56 +01:00
John Beard
4bebd09bd0 EDA_LIST_DIALOG: Simplify ctor args
Sometimes you want to add these in the ctor of the child
class based on some logic and having to construct the vector
in the init-list is a bit ugly.

Theoretically allows to not require a vector too.
2025-08-26 23:34:46 +08:00
Seth Hillbrand
66c42f396c Ensure junction placed is placed
Added QA to maintain this

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21516
2025-08-24 10:22:12 -07:00
jean-pierre charras
f3c222f5ba Compil issue: add missing include on MSYS2 2025-08-24 09:01:25 +02:00
Seth Hillbrand
f415ba78fa ADDED: Drag and drop images into schematic editor
Also fixed paste so that the image attaches to the cursor for placement

Fixes https://gitlab.com/kicad/code/kicad/-/issues/15379
2025-08-23 06:38:59 -07:00
Jeff Young
73bb65b802 Formatting. 2025-08-21 12:29:34 +01:00
Jeff Young
42735b775d Remove unreachable PASTE_MODE.
Also, don't depend on enum order.

Fixes KICAD-YJ8.
2025-08-21 12:29:34 +01:00
Mike Williams
2abeb5cb49 sch design blocks: add suffix to grouped and repeated placements 2025-08-20 15:20:13 -04:00
Seth Hillbrand
0586f02f00 Move wire/junction actions out of SCHEMATIC
They are tool actions and require that the tool holder is valid, so they
really need to be where this is only ever true

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21510
2025-08-19 15:47:54 -07:00
Seth Hillbrand
cea77b7e9b Avoid doubly-inserting wires when repeating
The repeat key should only insert one copy.  We don't want to depend on
later cleanup
2025-08-19 14:40:48 -07:00
jean-pierre charras
3021d0241c Fix compil warnings: missing include 2025-08-19 09:16:08 +02:00
Jeff Young
a0940b10d4 Always provide a SCH_SCREEN to SCH_COMMIT.
Fixes KICAD-YKY
2025-08-18 22:09:21 +01:00
JamesJCode
ee9e94df04 Don't assume SCH_SYMBOLs have a LIB_SYMBOL when resolving embedded files
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21497
2025-08-18 20:30:33 +01:00
Jeff Young
6f389fd320 Tighten parent/child undo/redo architecture.
Always look for pre-existing undo/redo record.  Checking for IsNew()
is less robust and should be avoided.  Also moves the checking to a
location where it will be easier to ensure that it's uniform.

Push get-undo-level-item processing down a level so it is uniformly
called.

Make sure tables & labels are uniformly handled.

Remove incorrect usage of Get/SetGroupId() for storing lastPin
(which we don't use anyway).

Lists of deleted and changed items MUST include the screen pointer.
An item could be changed on one screen but not on another.

Also tightens handling of PCB_NETINFO_T items, which are not in the
view.

Also fixes a bug where there is no increment parameter if you assign
the base increment command to a hotkey.
(This was discovered while testing the above changes.)

Also fixes a bug where delete during a move in PCB Editor did an
undo instead of a delete.
(Again, found while testing above.)

An experiment was also run to collapse shared parts of SCH_EDIT_FRAME
and SYMBOL_EDITOR_FRAME into SCH_BASE_EDIT_FRAME.  However, sharing the
undo code actually increased complexity, and there was very little else
of value in SCH_BASE_EDIT_FRAME (other than the Increment() routines).
2025-08-18 19:20:09 +01:00
Jeff Young
30637e65b0 Move dirtyConnectivity up a level. 2025-08-18 19:20:09 +01:00
Jeff Young
33c73d7db4 Fix crashes when settings manager doesn't exist yet. 2025-08-14 11:33:25 +01:00
Seth Hillbrand
e97fab9aee Fixup live junction display
We were a bit aggro with how we removed junctions after finishing.  Now,
we can avoid this by removing moved junctions and re-adding when needed

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21480
2025-08-13 13:53:30 -07:00
Seth Hillbrand
188ffda029 Add a 90°-only mode for polygon creation
Sometimes, you don't want those 45° corners in your nice, clean zones.
This adds an additional mode that can be selected, cycling through
free-angle, 45° angle and 90° angle constraints
2025-08-12 16:48:36 -07:00
Seth Hillbrand
87ccb2abc0 Move Annotation preferences (most) to schematic setup
The scope, recursion, reset options and message filters remain in the
user preferences.  Others including numbering, sort order and reuse are
schematic preferences.

Also, the oddball subunit display remains here but it doesn't really
belong in annotation.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17942
2025-08-12 16:15:17 -07:00
Seth Hillbrand
8a081f60b1 Prevent error message when backpropagating
Need to allow only processing other fields

Fixes https://gitlab.com/kicad/code/kicad/issues/21467
2025-08-12 08:10:22 -07:00
John Beard
d1aa7b148a Eeschema/Pcbnew: allow multiple nets to be assigned to a netclass at once
There is only a simplistic multi-net pattern expression
generator here (A|B|...) with a single prefix detected
rather than anything too fancy.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/21451
2025-08-12 20:00:33 +08:00
Seth Hillbrand
1a7a97a496 ADDED: Realtime junction indicators
Adds potential junctions to the preview overlay while drawing wires or
dragging.  Also fixes an issue where junctions were created at old
splits

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18206
2025-08-11 17:42:58 -07:00
Jeff Young
833a5ee3ab Yet even more open-coded dialog state-saving cleanup. 2025-08-11 20:36:23 +01:00
Jeff Young
892f9031d7 More open-coded dialog state-saving cleanup. 2025-08-10 21:00:17 +01:00
Seth Hillbrand
b207ec8817 Remove negative index access from CPoint
Callers should be responsible for index count and/or use iterators
2025-08-08 10:46:45 -07:00
Andrzej Wolski
c73d555fe2 ADDED: Lasso selection in pcbnew
Adds a lasso or freeform selection tool to KiCad in addition to standard
rectangular selection.  Adds supporting HitTest routines

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/1977
2025-08-06 16:06:40 -07:00
John Beard
bbe5280d57 Eeschema: provide tooltip for place sheet pin action 2025-08-07 00:55:48 +08:00