Commit Graph

1629 Commits

Author SHA1 Message Date
Jon Evans 148e111579 Refactor pin orientation to be an enum class
Add various LIB_PIN properties
2023-07-26 23:46:15 -04:00
Jon Evans 000fa28ffc Properties: initial infrastructure for symbol editor 2023-07-26 18:32:14 -04:00
jean-pierre charras 5ea170baab Symbol editor: fix crash when trying to "drag" an item.
Drag or move is an option of the schematic editor, and not in symbol editor.
So it cannot be tested in code for the symbol editor.
Fixes #15264
https://gitlab.com/kicad/code/kicad/-/issues/15264
2023-07-26 08:58:22 +02:00
Mike Williams 132a0ada73 Grid Overrides: support grids-per-type that override the current grid.
Schematic only at this point while we test and refine.

PCB support is a future addition.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/14756
2023-07-25 10:17:57 -04:00
jean-pierre charras a16ab0aae1 Replace SHAPE_T::RECT by SHAPE_T::RECTANGLE: RECT creates a collision name
issue with a Windows header on msys2.
Change very similar to the commit 9a47b344 about class PAD_SHAPE.
No actual code change
2023-07-25 09:11:55 +02:00
Josue Huaroto eeb74dbae9 Sort SCH_ITEM by name on paste 2023-07-24 16:37:25 +00:00
Jeff Young 9c08d4febe ADDED support for simulation plot margins and GUI for Y axis locking. 2023-07-19 23:40:10 +01:00
Jeff Young 7f3839a179 Minor cleanup. 2023-07-16 14:43:29 +01:00
Jeff Young 5419055acb We no longer need activate actions with RunSynchronousAction. 2023-07-16 14:43:29 +01:00
Jeff Young 89780d353a Pick up snapped item's line properties.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15192
2023-07-15 20:22:34 +01:00
Jeff Young 1218f61d0a Implement undo/redo for footprint children.
Our special-cases to handle the fact that we didn't do this had far
outgrown the code necessary to actually handle it.
2023-07-15 17:37:31 +01:00
Jeff Young ff044cd0cf Mostly a terminology update...
... but also makes DIALOG_SIM_COMMAND and SIMULATOR_REPORTER a bit
more simulator-agnostic.
2023-07-14 17:46:06 +01:00
Jeff Young 5f8583cd25 Try both ends to see if one is a wire.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15178
2023-07-13 18:20:28 +01:00
Jeff Young eedf319ba4 Don't double-offset effective text shapes.
Also fixes several bugs with intersheet ref fields.  (It's possible for
other fields to have an ID of 0.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/15165
2023-07-10 19:32:00 +01:00
Jeff Young 8f9a67063a Straighten out some really confusing terminology in simulator GUI. 2023-07-09 23:07:54 +01:00
Jeff Young 7608350bdc Iron out NewPlot vs EditSimCommand.
Also don't confuse SIM_PLOT_PANEL_BASE with SIM_PLOT_PANEL.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/15157
2023-07-09 22:38:48 +01:00
Jeff Young 5aed30ac79 Handle RepeatLastItem for TwoClickPlace items.
(Note that we've always excluded sheet pins from RepeatLastItem.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/15108
2023-07-09 20:33:33 +01:00
Jeff Young 6182ff4834 Handle delete of sheet pins.
SCH_COMMIT::Stage() can handle promoting the parent, but then the pin
needs to be removed first.  I think it's probably clearer if we just
do the promotion in the delete routine.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/15129
2023-07-09 13:40:27 +01:00
Mike Williams cb01ac53fa Schematic: allowing swapping sheet pins on same sheet
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/15122
2023-07-08 20:26:26 -04:00
Jeff Young 5bca002567 Swap non-temp and non-edit flags for SCH_ITEMs.
This is required to keep selected and brightened state across undo.

It's also probably required for things like IS_SHOWN_AS_BITMAP and
possibly ENTERED.  FWIW, most BOARD_ITEMs do a straight swap, including
the temp and edit flags.  But that seems like a risky change....

Also removes SyncView() call from Undo/Redo as that does a MODEL_RELOAD
which clears the selection.
2023-07-08 18:37:47 +01:00
Jeff Young 534a3efce1 Add a couple of TODOs for SCH_COMMIT. 2023-07-07 15:40:15 +01:00
Jeff Young 922f7128a9 Move item updating and view refresh to SCH_COMMIT::Push().
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15132
2023-07-07 15:40:01 +01:00
Jeff Young bde9c2cbc5 ADDED FFT analyses.
CHANGED abandon the unpredictable behaviour of the Simulation Command
dialog.  You now separately add simulation tabs (which have invariant
command types once created), and the dialog edits the current tab.

Also a bunch of bug fixes to make multiple simulation plots actually
work.
2023-07-07 12:33:50 +01:00
Jeff Young d5d2800b03 Sort out terminology issues between vectors and plots. 2023-07-07 12:33:50 +01:00
Ian McInerney 0fd2efa283 Give unfold bus a default parameter for hotkey invocation
Fixes KICAD-2JN
2023-07-06 23:07:24 +01:00
Ian McInerney 247fda80ef Give schematic editor's placeImage action a default parameter 2023-07-03 11:38:51 +01:00
Alex Shvartzkop 55b31030c0 Perf: don't search for niluuid items when moving cursor in eeschema.
Reduces CPU usage by 60% in some cases.
2023-07-03 02:15:05 +03:00
Jeff Young 03fd9c2086 Fix refresh bug after a symbol reload from the file watcher.
Also moves EE_POINT_EDITOR to SCH_COMMIT.  (There was another refresh
bug in RollbackSymbolFromUndo() -- whose only caller was the
EE_POINT_EDITOR's old undo code).

Fixes https://gitlab.com/kicad/code/kicad/-/issues/14274
2023-07-02 10:37:50 +01:00
Jeff Young 4cbf512461 Support synchronous move in symbol editor.
Also removes duplicate-during-move.  It's not really compatibile with
a passed-in SCH_COMMIT, and it was never clear it was worth the code.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/14274
2023-07-02 10:37:50 +01:00
Jeff Young efac777f28 Don't DisplayCurrentSheet() if we're already on it.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/14305
2023-07-01 21:57:40 +01:00
Jeff Young 773e1a1ab6 Actions with a COMMIT must be run synchronously.
Note that "immediate" doesn't mean quite the same thing: while it will
enter the tool immediately, it won't necessarily finish the tool during
the call if the tool has an event loop.  So for something like Rotate
"immediate" and "synchronous" have the same behaviour, but for something
like Move they do not.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/15085
2023-06-30 18:57:37 +01:00
Ian McInerney c3674e6858 Fix incorrect parameter passing in symbol editor drawing
The text box used a different enum than the shapes, so this leads to a
possibility of clashing. The new action framework flagged this problem,
so modify the tool to handle the shape types properly.

Fixes KICAD-2CJ
2023-06-29 00:17:12 +01:00
Ian McInerney 2a940a5f70 Add COMMIT to TOOL_EVENTs instead of passing as a parameter 2023-06-27 00:57:59 +01:00
Ian McInerney 2fb6f19a84 Separate immediate and delayed action dispatch
Using a boolean argument just leads to a lot of trailing booleans in the
function calls and is not user friendly. Instead, introduce PostAction()
to send an action that runs after the coroutine (equivalent to passing
false or the default argument), and leave RunAction as the immediate
execution function.
2023-06-27 00:57:59 +01:00
Jeff Young ed6487da1e Disallow sheet pins from changing sides when edited by point editor.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15057
2023-06-25 19:55:13 +01:00
Jeff Young e7ee6e1f26 Modified flags are handled by SCH_COMMIT. 2023-06-25 16:01:35 +01:00
Ian McInerney 118b815824 Get proper LINE_MODE type from tool event.
Properly fix https://gitlab.com/kicad/code/kicad/-/issues/15053
2023-06-25 13:43:32 +01:00
Ian McInerney b00361d136 Revert "Don't use TOOL_EVENT parameters for line modes."
This reverts commit 84a63f7daa.
2023-06-25 13:37:58 +01:00
Jeff Young 84a63f7daa Don't use TOOL_EVENT parameters for line modes.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15053
2023-06-25 11:10:07 +01:00
Jeff Young 493828cc6b Eradicate a bunch of calls to dyn_cast.
Also deletes PAD::GetParent() which fails to look for parent footprint
through groups.
2023-06-25 11:10:07 +01:00
Jeff Young 300a60e88e Eradicate a bunch of calls to dyn_cast. 2023-06-25 11:10:05 +01:00
Jon Evans d4b7144448 Properties: expose symbol attributes
Flip polarity of exclude-from-BOM and -board for symbols
to match that of footprints and match the GUI display.
2023-06-24 22:03:06 -04:00
Jeff Young 4764606a9d Sheet pins are owned by their parents, so the parent must go in the SCH_COMMIT.
Also collapses a bunch of duplicated code.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/15044
2023-06-24 12:35:48 +01:00
Jeff Young a901247cbd Rebuilding connectivity must be done after changes are committed.
It also needs to be done after undo and redo.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/15028
2023-06-23 22:10:17 +01:00
Jeff Young 237cc7eee1 Move TestDanglingEnds() to SCH_COMMIT.
Also fixes a bug where Convert Symbol wasn't undoable.

Also cleans up some SetModified() call no longer needed with SCH_COMMIT.

Also fixes bug where revert of a modification didn't update the screen's
RTree.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/15030
2023-06-23 19:59:46 +01:00
Jeff Young aa6d9ad69a Clear IS_NEW flags on commit.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15037
2023-06-23 15:30:09 +01:00
Jon Evans 3a0f8214fa ADDED: Properties panel for schematic editor
Initial infrastructure work; follow-ons will add more
properties for schematic items.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/6351
Fixes https://gitlab.com/kicad/code/kicad/-/issues/14105
2023-06-22 22:32:24 -04:00
Ian McInerney 19f5c16708 Ensure const-ness matches across draw wire event parameters 2023-06-21 14:06:25 +01:00
Ian McInerney a2bd7192c0 Add default empty symbol to place symbols/power actions 2023-06-21 13:42:21 +01:00
Ian McInerney 480223f67c More RunAction specialization 2023-06-20 21:52:50 +01:00
Ian McInerney b04e54dbea Switch TOOL_EVENT and TOOL_ACTION to have a std::any parameter
Using std::any from C++17 allows for proper type handling in the
parameter field, removing the need for casting to void* and then casting
the void* to the desired type.
2023-06-20 21:52:50 +01:00
Jeff Young 30336b2fe3 Unify go-back-one-step processing for drawing tools (and router).
Also warps mouse on all go-back-one-step operations for better feedback.

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

Fixes https://gitlab.com/kicad/code/kicad/-/issues/9985
2023-06-19 17:14:32 +01:00
Jeff Young e9046076a6 Fine-tune SCH_COMMIT handling of child objects.
While a SCH_SHEET does indeed have a SCH_SHEET parent, it's not one of
the children that gets added as a CHT_MODIFY of its parent.

Also fixes a bug where the newly drawn sheet gets removed from the
preview before running the dialog.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/14976
2023-06-18 16:52:11 +01:00
Jon Evans fc69939190 ADDED: GUI feedback when grid setting is changed by hotkey
Can be extended to other cyclical hotkey settings

Fixes https://gitlab.com/kicad/code/kicad/-/issues/14756
2023-06-17 23:18:50 -04:00
Jeff Young ef6866757e Treat undo as backspace and/or escape when drawing. Ignore redo.
Undo == backspace when drawing a polygon or chained lines.  Otherwise
it's an escape.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/14961
2023-06-16 22:08:21 +01:00
Jeff Young 8259091ca1 Fix typo in new SCH_COMMIT architecture for shape drawing.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/14976
2023-06-16 15:50:51 +01:00
Jeff Young 75e78f9088 Move bitmap2cmp and pcb_calculator to tool framework.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/1939

Fixes https://gitlab.com/kicad/code/kicad/-/issues/7561
2023-06-16 15:37:58 +01:00
Jeff Young 5c4ca9f092 Renaming to support potential future usage of SIMULATOR_PANEL as a panel within SIMULATOR_FRAME. 2023-06-15 17:39:10 +01:00
Wayne Stambaugh 4ccbbde54a Net navigator bug fixes and improvements.
Note: This changes the net highlight tool behavior.  When clicking on an
      already highlighted net, the net highlighting is no longer toggled
      off.  This prevents the net navigator panel from being cleared.
2023-06-14 09:57:55 -04:00
Jeff Young 4f39cb0789 Fix SCH_COMMIT handling in TwoClickPlace. 2023-06-13 13:21:11 +01:00
Ian McInerney d96580c651 Properly handle improper symbols when pasting in symbol editor
Before, an improper symbol (one without the starting toekn) weren't
detected and reported to the user properly and would instead assert. Now
properly detect these and pass the error up the stack to the tool.

(Sentry issue KICAD-21J).
2023-06-12 23:14:56 +01:00
Seth Hillbrand 62f24aca1e Fix Connectivity Asserts in new COMMIT structure
The connection graph should only be updated within the commit structure
because this is the only time the connectivity should be changed.  We
want any connectivity changes to be included in the commit as well, so
this should be stored prior to the undo/redo list mods
2023-06-12 13:35:06 -07:00
Jeff Young 286716a1ff Retire AddItemToCommitAndScreen()
It duplicates a bunch of stuff in SCH_COMMIT and isn't really
compatible with it.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/14933
2023-06-12 19:34:23 +01:00
Jeff Young 8f1b9119bf Upgrade some symbol editor stuff to SCHEMATIC_COMMIT.
Also renames SCHEMATIC_COMMIT to SCH_COMMIT since it's not schematic-specifc.
2023-06-09 22:41:47 +01:00
Jeff Young e698156975 Upgrade many editing actions to SCHEMATIC_COMMIT. 2023-06-09 22:41:47 +01:00
Jeff Young dcfd426333 Upgrade some dialogs to SCHEMATIC_COMMIT. 2023-06-09 22:41:47 +01:00
Wayne Stambaugh e9dc00cda3 Minor schematic net navigator improvements.
- Expand tree and highlight object selected with net highlight tool.
- Expand tree and highlight object that are currently highlighted with the
  selection tool.
- Use more descriptive object text rather than menu entry text for tree
  strings.
- Rebuild tree on unit changes.
2023-06-09 14:34:54 -04:00
Jeff Young 90c14ecdf7 Upgrade a couple of schematic actions to SCHEMATIC_COMMIT. 2023-06-07 15:30:56 +01:00
Seth Hillbrand c33d1ab244 Don't dirty the item connectivity prematurely
Item connectivity changes once the elements are commited, not during the
process of moving.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/14884
2023-06-05 09:12:20 -07:00
Jeff Young d827bb8a1f Leave back/forward/up nav buttons enabled so the action doesn't change.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/14783
2023-05-31 11:13:35 +01:00
Jeff Young a4f16423c8 Push reference and value special cases down into LIB_FIELD::compare().
Use COMPARE_FLAGS::EQUALITY and COMPARE_FLAGS::ERC when doing
library diffs.

Also fixes a few more cases where we weren't checking for -1 when
doing a fieldID < MANDATORY_FIELDS.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/14830
2023-05-29 12:40:20 +01:00
Jeff Young 81d7428fd2 Don't call OnPageSettingsChanges on Undo/Redo.
It's incredibly expensive (multiple seconds on a document with
lots of text in an outline font).
2023-05-27 20:35:05 +01:00
Jeff Young 4ed267394a Outline font performance improvements.
1) Don't fracture font glyphs when generating them; we're going
   to fracture during triangulation anyway.
2) Don't check for self-intersection when deciding to fracture.
   It costs nearly as much as the fracture does.
3) Cache drawing sheet text.
4) Use the current font when checking for cache validity.
5) Parallelize glyph triangulation.
6) Don't invalidate bounding box caches when offset by {0,0}
7) Use the glyph cache when generating text effective shape.
8) Short-circuit NormalizeJustification() if its center/center.
9) Don't triangulate for GuessSelectionCandidates()
10) Avoid sqrt whenever possible.
11) Pre-allocate bezier and SHAPE_LINE_CHAIN buffers.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/14303
2023-05-27 01:35:40 +01:00
Steve Bollinger 28b37ad020 Someone accidentally exchanged the x and y coordinates when flipping
components horizontally and vertically in
SCH_DRAWING_TOOLS::SingleClickPlace()

Fixes https://gitlab.com/kicad/code/kicad/-/issues/14725
2023-05-25 12:11:48 +00:00
Jeff Young 14f004d2a5 Hook up text variable auto-complete for PCBNew.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/14777
2023-05-25 10:24:50 +01:00
Jeff Young 5a9ed66cfd Go back to using QuasiModal for TextBox Properties.
Also removes auto-closing of blocking dialogs when inserting
symbols from the Symbol Editor or Chooser, preventing the bug
that QuasiModel was removed for earlier.

Also fixes a non-initialized parent pointer when the TextBox
Properties dialog was called from DrawShape().

Fixes https://gitlab.com/kicad/code/kicad/-/issues/14777
2023-05-25 10:24:50 +01:00
Wayne Stambaugh 24b04795fd Add net navigator panel to schematic editor.
[ADDED]: A panel to the schematic editor  that allows quick access to all
         of the items connected to the currently highlighted net.

This is an initial swag at implementing a full net navigator feature.  For
now it only shows the currently highlighted net nodes.  The incremental
net list advanced setting must be enabled in order to use this feature due
to performance reasons.  There are still some issues with saving the panel
position which will be addressed in the future.

Initial code for serializing wxAuiPaneInfo settings to and from JSON have
be implemented.
2023-05-20 13:48:03 -04:00
Marek Roszko aeadd49a33 Fix windows builder broken by 831a6d5 2023-05-16 21:49:55 -04:00
Wayne Stambaugh 831a6d55fc Fix potential stale pointer bug in schematic highlight connection code.
SCH_CONNECTION objects are temporary and can become stale any time the
connectivity is updated.  Keeping them around to reference later is a
bad idea.  Even if the object pointer is still valid in an SCH_ITEM in
the undo/redo buffers, comparing the pointer against another pointer as
a test to see if they are the same connection is not valid.  Saving the
connection name is safe and ensures the connection is the same even if
the pointers differ.
2023-05-16 20:06:21 -04:00
Marek Roszko 1adcb86e0b Initial schematic search pane 2023-05-14 22:41:56 -04:00
Jeff Young 4a62cc6edd Separate symbol editor polyline and polygon tools.
Fixes https://gitlab.com/kicad/code/kicad/issues/14695
2023-05-07 14:58:44 +01:00
Jeff Young 49655ae742 Defense in depth for "mouse stuck in canvas".
Fixes https://gitlab.com/kicad/code/kicad/issues/12653
2023-05-06 11:28:14 +01:00
Jeff Young c016bea020 Make sure mouse isn't captured when dialog is raised.
Fixes https://gitlab.com/kicad/code/kicad/issues/14685
2023-05-06 11:28:14 +01:00
Jeff Young b41d446f58 Fix a bunch more issues with sheetpaths and allowExtraText.
A sheetpath is required to correctly resolve text variables.
Depending on currentSheet is rife with bugs.

There are many places where we do *not* want to be prepending
field names to the field values, such as netlisting,
building PDF hypertext menus, etc.

Also, Find/Replace needs to work on unresolved text, as
that's what we're going to display (and if replace nuked
your variable references you wouldn't be happy).
2023-05-05 17:23:52 +01:00
Seth Hillbrand 1e03c84918 Add ability to toggle attributes
Adds actions and context menu options to adjust attributes.
2023-05-04 11:51:21 -07:00
Seth Hillbrand cb85412b85 Cleanup Undo ordering
The undo command has accreted a number of things over the years.  This
prunes back the changes to the minimum required number and correctly
orders the actions

Fixes https://gitlab.com/kicad/code/kicad/issues/14661
2023-05-01 19:29:48 -07:00
Mike Williams 04a53ea40d Picker Tools: make sure we know what tool we are
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/14621
2023-05-01 12:43:09 -04:00
Mike Williams 39cc686dc4 Back Annotation: add support for DNP and Exclude from BOM attributes
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/14584
2023-05-01 08:54:14 -04:00
Seth Hillbrand f4b43617e7 Add COMMIT structure to Schematic and Symbol editors
Provides a single-point access for modifying the schematic and symbol
elements that allows chaining updates and reverting partial changes.
Standardizes the undo hierarchy between pcb and schematic editors

As this is another layer on the existing undo/redo structure, the
initial commit does not replace all undo/redo calls currently existing.
These will be handled in a series of follow-on commits
2023-04-28 17:05:47 -07:00
Jeff Young e1b39946fe ADDED: show/hide controls for directive labels. 2023-04-28 00:32:49 +01:00
Jeff Young f7a552a2b3 Ensure item is gridded if there was no motion between clicks. 2023-04-18 23:55:56 +01:00
Jeff Young 6fb8916798 The symbol viewer handles its own message panel. 2023-04-16 18:47:04 +01:00
aris-kimi 18cebe3779 Don't assume an EDA_ITEM is a SCH_ITEM. v2
In the same way as cec4109176 did

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/14528
2023-04-13 11:12:02 +01:00
Jeff Young a24a63e416 Search in label fields.
Fixes https://gitlab.com/kicad/code/kicad/issues/14075
2023-04-12 23:21:53 +01:00
Ian McInerney 18e573d5e9 Remove stray wx include
There is no reason to include the actual string implementation header
here.
2023-04-12 18:57:12 +01:00
Jeff Young 66f48d56ae Separate sheet reloads (MODEL_RELOAD) and schematic reloads (SUPERMODEL_RELOAD).
Fixes https://gitlab.com/kicad/code/kicad/issues/14523
2023-04-12 11:51:09 +01:00
qu1ck 0c049eccc7 Fix a bunch of compiler warnings 2023-04-11 17:01:30 +00:00
jean-pierre charras f01e083f7c fix 2 issues related to SCH_GLOBALLABEL items:
- Ensure the first field in m_fields has id = 0 to be seen has hypertext
(it was not the case after reading a .kicad_sch file)
- when converting this item to another label/text, remove this special Field
from the copied field list to the converted label.
2023-04-10 09:58:27 +02:00
Jeff Young a226f7fc14 Don't delete default intersheetrefs field from global labels.
Fixes https://gitlab.com/kicad/code/kicad/issues/14493
2023-04-09 19:03:36 +01:00
jean-pierre charras 7eb13c3d33 Symbol editor: clear the edit flags of a pasted pin after place it.
When pasting a single pin, its edit flags were not cleared, and create
issues when trying to edit the pasted pin.
Fixes #14188
https://gitlab.com/kicad/code/kicad/issues/14188
2023-04-06 11:08:01 +02:00