The move tool can stack on others, so when we re-enter the previous tool
this caused another immediate action. We flag re-entry in the tool
stack to check for this and avoid unexpected tool starts
When a user clicks on the "Add Component", "Add Power" or "Add Footprint"
icon, they want to add the item. Requiring an extra click on the screen
before selecting the component/footprint is not needed.
We auto-size them in the code and doing both produces nothing but a
mess.
Also improves the auto-sizing for the layers drop-down (particularly
needed for the new, somewhat longer, layer names.
Fixes https://gitlab.com/kicad/code/kicad/issues/7671
Also remove an implicit zone merge that was happening when the user
edited the zone parameters. This appears to have been a feature but it
happened without a) telling the user and b) having the option to prevent
it.
Fixes https://gitlab.com/kicad/code/kicad/issues/7661
We cannot do forward/reverse annotation in Single Top mode because we
depend on shared memory access. This disables the menu options in this
case and replaces the toolbar update pcb icon with the import netlist,
which is more appropriate for single top mode
Fixes https://gitlab.com/kicad/code/kicad/issues/7637
- Rename member variable names to use the 'm_' prefix
- Rename a few object types that clashed with KiCad object names, such
as BOARD and SCHEMATIC, to avoid the use of '::' to access the KiCad
objects.
- Remove some unused code.
Add a reset button that will only show up if the user
edits the JSON configuration for grids. This is a temporary
measure until we have a real grid editor GUI in V7.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7595
Each symbol unit in eeschema has a unique identifier. But we don't have
a unique identifier for the entire symbol. So changing which symbol
instance was unit A (our default base for matching), changed the UUID
that we were using to match the footprints.
This commit adds all UUIDs to the netlist, allowing us to match symbol
to footprint without worrying about which unit is referenced.
This still does not handle changing different units on different sheets.
Fixes https://gitlab.com/kicad/code/kicad/issues/7604
First issue: the C++ action plugins list should be cleared so that any
plugins that fail to reload do not hang around on the toolbar.
This is fixed on the C++ side.
Second issue: inner dependencies of plugins that are modules were not
reloaded before, which broke reloading for many plugin examples out there.
This is fixed on the Python side by keeping track of dependencies and
clearing them out before reloading a module (unfortunately there doesn't
seem to be a way to do this in the standard library)
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7245
This change is mainly due to the fact Modal dialogs do not work when our
current tool is the tool used to create new item (text, zone, graphic).
If when this tool is active, one try to edit the properties of the new item
being created (or being placed) the modal dialog does not capture the event tool
and hangs (cannot be dismissed)
Our quasi modal dialogs have their own event loop and work.
Fixes#7585https://gitlab.com/kicad/code/kicad/issues/7585
CHANGED: If the user made a selection and then tried dragging it, the
drag would only succeed if the selection contained at least one
footprint. Selections with only tracks and vias would instead make
KiCad drag a new selection box.
This MR allows routing of selections of a single track or via, while moving
selections containing more than one item, whether or not they also contain
a footprint.
Fixes https://gitlab.com/kicad/code/kicad/issues/7539
- Make DIALOG_SHIM::SetPosition working)
- rename PCB_BASE_FRAME::SelectLayer() to PCB_BASE_FRAME::SelectOneLayer()
- PCB_BASE_FRAME::SelectOneLayer(): make dismiss dialog by escape key working.
Fixes#7578https://gitlab.com/kicad/code/kicad/issues/7578
Assume that the user has locked tracks/vias for a reason and would very
much like them to remain in place, regardless of the operation
Fixes https://gitlab.com/kicad/code/kicad/issues/7562
1) Don't remove items from group when the group is being deleted as
well. We need those pointers for undo/redo.
2) Flip the GROUP/UNGROUP undo status when undoing/redoing group and
ungroup actions.
3) Remove PCB_GROUP_T from the rebuild-netlists section. Nothing
about an item's group/ungrouped status changes its netlisting.
4) Add PCB_PAD_T to the rebuild-netlists section. It can probably
only happen in the footprint editor where we don't care about
netlisting, but it's conceptually more correct and who knows what
might change in the future....
Fixes https://gitlab.com/kicad/code/kicad/issues/7540
This simple commit makes the Pcbnew copy to clipboard operation snap the
obtained cursor position to grid before the anchors are calculated. This
is also the way the move operation has been apparently working so far.
To be clear, this will not remove all cases where the copy reference
point is not aligned to the grid (see the linked Gitlab issue for
details about the problem). This will still occur for zone outlines that
are not axis-aligned. But such behavior has been so far also present in
the moving operation, so this may be as designed.
Fixes https://gitlab.com/kicad/code/kicad/issues/7507
For some kinds of issues, we want a way to point them out but
we don't need to keep the user from being able to close the
dialog. A separate Validate button lets the user check for
issues if desired, but these issues are not "fatal" and can
be ignored if the user wishes.
The removal of the pcbnew general section was meant for v6 but passed
the deadline. This removes the duplication of thickness. We do not
allow the thickness to be different between nominal and stackup, so
keeping separate text fields is unnecesarily confusing to users
The automatic wire tool was not working in the gridless mode because the
grid snapping on/off logic present in `EE_GRID_HELPER`, based on the
value of `m_enableGrid`, was not taking into account that another check,
but for the global KiCad setting, would be performed in the `Align()`
method, which is inherited from `GRID_HELPER`.
I've modified all tests of `m_enableGrid` value to also take the global
setting into account, and moved checks for it to `Align()` method, as
it's more consistent this way.
I've also removed an override of the `Align()` method in the
`PCB_GRID_HELPER` class, as it was made redundant by my changes.
Fixes https://gitlab.com/kicad/code/kicad/issues/7402
Some CADSTAR designs use zero sized pads because CADSTAR did not allow
arbitrarily assigning pad numbers: they had to be sequential. The
workaround to this was to use zero sized pads. However this causes DRC
errors in KiCad, so we load them just in a mask layer.
1. Make sure to convert to KiCad units
2. There are some KiCad rules that have no CADSTAR equivalent.
Make a guess as to what an appropriate rule could be.
It just means the outline wasn't malformed. It might still be
empty.
[Edit: my fix collided with JP's, so all this really is now is a
couple of slight performance improvements.]
Keep Through Hole pads on external layers should be ON by default, because
such a pad does not allow soldering/unsoldering, if this option this option is OFF
Also rename dialog_enum_pads.fbp as dialog_enum_pads_base.fbp, as usual
Keeps parent information such as UUID and pad removal options for
elements that are just updated in routing rather than created fresh or
fully destroyed.
Fixes https://gitlab.com/kicad/code/kicad/issues/7460