Seth Hillbrand
73886aecb1
Ensure partially triangulated polys are not valid
...
Moves rule area triangulation outside of layer iterator and keeps the
triangulation_valid flag false until the triangulation has been
completed.
Fixes https://gitlab.com/kicad/code/kicad/issues/7032
2021-01-29 16:33:57 -08:00
Wayne Stambaugh
6a39b81647
Fix the last of broken Doxygen comment specifiers.
2021-01-27 17:39:44 -05:00
Mikołaj Wielgus
3e42ba18a9
Show dragging tools in context selection menu for components
...
Show the dragging tools in the context selection menu when a single
component is selected. Prevent the dragging tools from appearing when
more than one object is selected, as they will not activate anyway.
Fixes https://gitlab.com/kicad/code/kicad/issues/7258
2021-01-27 19:55:42 +00:00
Jon Evans
b96bcc86b1
Don't restrict start item to same layer if snapping is enabled
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7276
2021-01-25 21:19:26 -05:00
Jeff Young
3fcd0860c1
Make 'E' go straight to Custom Track Width dialog.
...
Also fixes some mouse capture issues.
Fixes https://gitlab.com/kicad/code/kicad/issues/7198
2021-01-20 18:19:55 +00:00
Jon Evans
330d717c69
Fix typo
2021-01-18 21:50:26 -05:00
Ian McInerney
44655b98de
Initialize variables properly
2021-01-18 18:35:10 +00:00
Jeff Young
68efdb2fff
Push shared parts of GRID_HELPERs into common.
2021-01-16 23:18:10 +00:00
Jeff Young
02ccd5fbdb
Make sure properties commands don't go to other tools during routing.
...
Brings up the track widths (or diff pairs) context menu instead,
which seems to be the closest parallel.
Fixes https://gitlab.com/kicad/code/kicad/issues/7099
2021-01-14 15:19:09 +00:00
Dominik Wernberger
dc02ec9758
Remove a few const_cast
2021-01-12 20:51:31 +00:00
Jon Evans
111fa99f9f
PNS: Use last-segment posture optimization always
...
Also when auto-posture is enabled, don't flutter
until area threshold has been met.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6935
2021-01-07 20:12:31 -05:00
hoijui
6ca9a42251
Removes 3 other instances of a potential encoding problem
...
Signed-off-by: hoijui <hoijui.quaero@gmail.com>
2021-01-07 17:36:49 +00:00
Jeff Young
e41c06304b
Don't show a leading ratline to a NPTH.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6960
2021-01-07 12:25:04 +00:00
Jeff Young
f702b64b8d
Minor improvements to formatting & SNR.
2021-01-07 12:25:04 +00:00
Jon Evans
0234b7278a
PNS: Make DIRECTION_45 North be up everywhere
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6935
2021-01-06 21:47:06 -05:00
Jon Evans
46c4727783
Make MSVC happy again
2021-01-05 20:56:37 -05:00
Jon Evans
e7b047660c
PNS: Correctly assemble lines with reversed arcs
2021-01-05 17:57:21 -05:00
Jon Evans
feda03f69b
PNS: Fix arc orientation when assembling lines with backwards arcs
2021-01-05 17:57:21 -05:00
Jon Evans
7431d5c985
PNS: First pass at updating meander placers for arcs
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6464
2021-01-05 17:57:21 -05:00
Jon Evans
8619086cf2
PNS: re-enable optimization of colinear segs in lines with arcs
2021-01-05 17:57:21 -05:00
Jon Evans
8901e71fc8
PNS: Fix loop removal, make walkaround less broken for arcs
2021-01-05 17:57:21 -05:00
Jeff Young
02cd8c99cd
Better error messages when routing can't be started.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6541
2021-01-05 18:47:58 +00:00
Jeff Young
88d42724e6
Remove diff-pair-gap handling from single-line-router.
...
We can't really support it until we do min/max/opt shoving and
dragging.
Fixes https://gitlab.com/kicad/code/kicad/issues/6932
2021-01-05 16:54:52 +00:00
Jeff Young
d975f2f6aa
Commenting and naming for clarity.
2021-01-05 16:54:52 +00:00
Jeff Young
f7b20611c1
Enforce hole-to-hole min when placing diffpair vias.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6931
2021-01-05 00:26:49 +00:00
Jeff Young
93bd2171ab
Formatting.
2021-01-05 00:26:49 +00:00
Jeff Young
d24b034cbc
Cleanup (and a minor performance improvement).
2021-01-04 22:32:29 +00:00
Jeff Young
2ea6bc5529
Formatting.
2021-01-04 19:19:55 +00:00
Jeff Young
648c42f643
Show collisions preventing routing from starting.
...
Also introduces a callback to the infobar so that the view can be
cleaned up when the timer expires.
Fixes https://gitlab.com/kicad/code/kicad/issues/6930
2021-01-04 19:19:55 +00:00
Jeff Young
71215bcab3
Make sure TH pads get collision layer highlighted.
...
Also cleans it up to centralise all the decision-making.
Fixes https://gitlab.com/kicad/code/kicad/issues/6925
2021-01-03 21:16:09 +00:00
Jon Evans
f01297fedd
Convert an annoying message box to an infobar
2021-01-02 22:14:10 -05:00
Jeff Young
8b849b1c49
Fix several bugs in hull push-back with vias.
...
1) take hole plating thickness into account
2) build hulls specifically for via so pushing back to the hull doesn't
have to try and figure out how much extra to push back for the via
and/or hole
3) clear MK_HOLE flags when colliding with the pad itself so that we
don't get stuck in HOLE mode
4) move flag setting/clearing to updateNearest() so that it will keep
track of the state of the nearest collision
Fixes https://gitlab.com/kicad/code/kicad/issues/6913
2021-01-02 19:14:44 +00:00
Jeff Young
13094fdc28
Formatting.
2021-01-02 18:38:17 +00:00
Jeff Young
85e42890c4
Distinction between via and via hole probably not useful.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6913
2021-01-02 16:41:09 +00:00
Jeff Young
068af7d328
When routing don't give NPTH holes a copper clearance.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6903
2021-01-02 16:33:51 +00:00
Jon Evans
eba7cb222c
PNS: Fix initial posture guess for pads
2021-01-02 10:32:15 -05:00
Jeff Young
6b6694f55f
Fix typo.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6913
2021-01-02 15:04:30 +00:00
Jeff Young
42c114f6ed
Record status of via dragging in Walkaround mode.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/3967
2021-01-02 00:31:02 +00:00
Jeff Young
8a049cf290
Make sure bounding boxes get cached on rule areas.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6898
2021-01-01 23:17:49 +00:00
Jeff Young
018c17399d
SNR.
2021-01-01 23:17:49 +00:00
Jeff Young
fc1b0ec11f
Improve feedback when routing in highlight collisions mode.
...
In particular, when Allow DRC violations is NOT turned on and we
bump in to an obstacle.
2021-01-01 17:25:37 +00:00
Jeff Young
3ba17e0a16
Formatting.
2021-01-01 01:02:06 +00:00
Jeff Young
ecc0e861d3
Implement hole clearance and hole-to-hole clearance in router.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6882
2021-01-01 00:31:36 +00:00
Jeff Young
5d8e6020d1
Improve clarity.
2021-01-01 00:31:36 +00:00
Jeff Young
0e3c9de684
Formatting.
2021-01-01 00:31:36 +00:00
Jeff Young
1b93663627
Formatting.
2021-01-01 00:31:36 +00:00
Jon Evans
9a0f685a75
PNS: Consider arcs when searching for lines between joints
2020-12-31 13:05:43 -05:00
Jon Evans
73248ab219
PNS: correct initial segment direction for posture solver
2020-12-31 13:05:43 -05:00
Jon Evans
60fd7fdbb2
Fix comment
2020-12-30 18:52:56 -05:00
Jon Evans
510db66f0e
PNS: Fix rollback for arc traces
...
PNS: Update posture solver after rollback
2020-12-30 18:23:24 -05:00
Jon Evans
6105ac50da
ADDED: Default hotkey of CTRL+/ for switch corner rounding
2020-12-30 18:23:24 -05:00
Jon Evans
b5b64a55ad
PNS: Only run optimization if lastNode is valid
2020-12-30 18:23:24 -05:00
Jon Evans
79502a0d88
PNS: A new approach to arc placement
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6334
2020-12-30 18:23:24 -05:00
Jon Evans
bf9501e1d4
PNS: Fix auto-posture when placing via
2020-12-29 21:14:36 -05:00
Jon Evans
689da3794d
PNS: Merge co-linear segments during placement
2020-12-29 21:14:36 -05:00
Jon Evans
4c0aa6db1a
PNS: Disable smart pads optimization for vias
...
There is not much point with the current algorithm and it
breaks auto-posture.
2020-12-29 21:14:36 -05:00
Jon Evans
81d4e06f00
PNS: Consider pad orientation when routing
...
PNS: Skip smart pads when posture was manually forced
This allows a more-correct pad breakout to be chosen when
smart pads is off.
2020-12-29 01:06:46 -05:00
Jon Evans
96d49d1473
PNS: Improved auto-posture when starting from a segment
...
The previous auto-posture algorithm worked great for pads
but not so great when starting routing from a segment.
Now we can optimize the posture based on the starting
segment if one exists, to maximize the "obtuseness" of the
posture.
2020-12-28 23:51:13 -05:00
Jon Evans
3adff647a7
PNS: Preserve nearest vertex when dragging in shove mode
2020-12-28 19:44:39 -05:00
Jon Evans
be294dabce
PNS: Snap back to last valid point when committing a drag
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6651
2020-12-28 16:36:42 -05:00
Jon Evans
3c87e67753
PNS: Allow committing routes even when cursor moves beyond valid solution
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6651
2020-12-27 17:14:38 -05:00
Jon Evans
2cdf9875b9
PNS: fix off-by-one in dragCorner45
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6644
2020-12-27 15:58:36 -05:00
Jon Evans
c615b7a49b
PNS: make initial direction behavior consistent with fix-all enabled
2020-12-27 15:21:55 -05:00
Peter Montgomery
1c79e3174c
Pcbnew: Prevent footprint jumping when starting to drag it
...
CHANGED: When dragging a footprint, if the mouse isn't directly over the
footprint anchor when 'D' is pressed, the footprint center will jump to
the mouse position when dragging begins. This MR uses the current
mouse position instead of the footprint anchor as the inital reference
point when starting to drag.
Fixes https://gitlab.com/kicad/code/kicad/issues/6813
2020-12-27 17:43:52 +00:00
Jon Evans
8ad89ae457
PNS: fix manual posture mode
2020-12-24 17:31:54 -05:00
Jon Evans
8a2667c4c3
PNS: Fix all segments by default (and make optional)
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/5920
2020-12-23 21:55:43 -05:00
Jon Evans
8c247fc97c
PNS: Add a setting to disable posture solver
...
PNS: Prevent autoposture flutter when trail has little area
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6797
2020-12-23 21:02:17 -05:00
Jon Evans
912657dd23
Component dragger: make relaxed segment pickup work for PTH pads
2020-12-22 22:43:44 -05:00
Jon Evans
70c6314c67
Component dragger: be more generous about picking up tracks
...
We now pick up tracks that end anywhere in the pad, not just
at the pad anchor.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/5945
2020-12-22 22:28:24 -05:00
Jon Evans
70c397a9b4
Implement free vias fully
...
CHANGED: manually-placed (stitching) vias won't have their nets automatically updated
(unless the via is placed directly on a track segment)
CHANGED: stitching vias can be placed on footprint pads and pick up their nets
Fixes https://gitlab.com/kicad/code/kicad/-/issues/5484
2020-12-20 16:29:50 -05:00
Jeff Young
cd162a8f58
Honour m_placingVia when avoiding collisions.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/3773
2020-12-20 20:36:19 +00:00
Jon Evans
e8f38e3c18
Snap to footprint origin when dragging
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6633
2020-12-20 15:15:48 -05:00
Jon Evans
ac793618f9
Set start item for inline dragging so that snapping works properly
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6796
2020-12-20 11:13:09 -05:00
Jeff Young
46314f6483
Only compare collision-corrected routes when looking for shortest.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6511
2020-12-19 23:20:27 +00:00
Jeff Young
acfbcb4beb
Make distinction between PCBNew-wide tools and Board-specific tools.
...
The old names were really hard to keep straight (even for me, who named
many of them).
2020-12-16 13:32:46 +00:00
Jeff Young
5f9ed2583c
Don't put up double lock confirmation dialogs.
...
Also removes EditToolSelectionFilter which was misused in more places
than it was used correctly. The original point of the client filter
was to move the logic to the point of use, which the
EditToolSelectionFilter sort of obviated anyway.
Fixes https://gitlab.com/kicad/code/kicad/issues/6751
2020-12-15 22:34:24 +00:00
Jeff Young
c0a9742b3a
Apply 0ef63aca47
to diff pairs.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6314
2020-12-12 03:43:41 +00:00
Wayne Stambaugh
dd4298bb94
Coverity fixes: 280374, 313611, 313648, 313649, and 314720.
2020-12-11 13:29:52 -05:00
Jeff Young
0ef63aca47
Don't reset tail when changing track width/via sizes.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6314
2020-12-11 17:58:36 +00:00
Jeff Young
7cb2d19814
Honour alt-means-disable-grid-snapping in router.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6679
2020-12-11 13:11:47 +00:00
Jeff Young
d304f12284
Formatting.
2020-12-11 12:48:04 +00:00
Jeff Young
73b7b104cd
Fix some issues with Infobar sizing.
...
This also commits to the new strategy as it wasn't really compatible
with if-def-ing anymore.
2020-12-11 12:39:40 +00:00
Ian McInerney
be4b6ec06a
Cleanup compiler warnings
2020-12-09 23:13:33 +00:00
Jeff Young
b1f0bf7334
More consistent naming.
2020-12-08 13:05:39 +00:00
Jeff Young
aa3e29ee7c
Don't re-enter router on subsequent X key.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6656
Fixes https://gitlab.com/kicad/code/kicad/issues/4504
2020-12-08 00:13:29 +00:00
Jeff Young
f09ca9ceee
Pass unhandled events when dragging in the router tool.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6630
2020-12-06 12:30:29 +00:00
Jeff Young
7b347d793b
Change gears on no-connect net generation. See bug rpt.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6534
Fixes https://gitlab.com/kicad/code/kicad/issues/6615
2020-12-04 18:25:48 +00:00
Jeff Young
00edc85f4f
Allow layer switching when routing from pad.
...
Additionally, don't process layer events from both main loop and
transitions -- it makes for a mess.
Fixes https://gitlab.com/kicad/code/kicad/issues/4832
2020-12-02 21:17:56 +00:00
Jeff Young
f2ac6fcd44
Treat net 0 items as each being in their own net.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6534
2020-12-02 20:05:47 +00:00
Jeff Young
d06d35a74d
Formatting.
2020-12-02 20:05:47 +00:00
Jeff Young
288ab7ed6f
Minor formatting cleanup.
2020-12-01 14:04:01 +00:00
Jeff Young
06b9439dbf
Edge Cuts shapes have zero width.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6517
2020-11-26 17:42:46 +00:00
Jeff Young
9c7c05c161
Mostly formatting cleanup but a few type-casting cleanups too.
2020-11-24 22:16:41 +00:00
jean-pierre charras
976c6262f4
French translation update (fix also trailing spaces in a few sentences)
2020-11-23 11:42:25 +01:00
qu1ck
b32c2a6c90
Refactor EDA_TEXT::TransformToSegmentList() to return a vector of points
...
This allows reading text object as it is rendered through python API.
2020-11-23 07:50:54 +00:00
Jeff Young
ff3bd7e72a
Fix a crash bug in DRC, and equate Margin to Edge.Cuts.
2020-11-20 21:22:27 +00:00
Jeff Young
9e9946628a
Go back to arrow cursor on a cancel (or finish).
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6421
2020-11-19 20:09:28 +00:00
Dominik Wernberger
99da663e82
Remove unused variables plus some more fixes from CppCheck
...
Remove unused variables plus a few more fixes from CppCheck
Remove unused variables plus a few more fixes from CppCheck
2020-11-19 02:28:47 +00:00
Werni
0e44f5128c
Add const specifiers
2020-11-18 19:50:36 +00:00
Jeff Young
795e45836d
Fix assert in DRC.
2020-11-17 17:41:57 +00:00
Jeff Young
7bd31d5237
Naming conventions.
2020-11-14 18:26:03 +00:00
Jeff Young
ec020dd19f
First-class support for filled shapes.
2020-11-14 01:40:32 +00:00
Jeff Young
bdbb68f813
MODULE -> FOOTPRINT.
2020-11-13 16:04:03 +00:00
Jeff Young
3451ac3088
PCB_MODULE_T -> PCB_FOOTPRINT_T
2020-11-13 15:16:24 +00:00
Jeff Young
52a46341db
More module -> footprint.
2020-11-13 15:16:24 +00:00
Jeff Young
f5443de7f9
D_PAD -> PAD.
2020-11-13 15:16:24 +00:00
Jeff Young
84dd5108ba
Remove some "class_" prefixes from files.
2020-11-13 15:16:23 +00:00
Jeff Young
f7333ad64a
Update some classnames including archaic zone names.
2020-11-12 10:31:25 +00:00
Jeff Young
da5cfb5df1
Improve commenting.
2020-11-11 17:52:15 +00:00
Jeff Young
5e569e81e7
Performance enhancements for PNS.
2020-11-11 15:32:30 +00:00
Ian McInerney
d88eaaf477
Fix various compiler and Coverity warnings
2020-11-11 00:41:02 +00:00
Jeff Young
ce3b2921bd
Sort potential start candidates by distance from cursor.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/1926
2020-11-10 23:50:57 +00:00
Jeff Young
bd63c018c9
Don't snap synthetic priming event.
...
We need to let the consumer of the event do snapping (so that, for
instance, it can also snap to tracks, pads, etc.)
Fixes https://gitlab.com/kicad/code/kicad/issues/4365
2020-11-09 17:21:47 +00:00
Jeff Young
64876a2761
PNS_DRAGGER should report its layers.
...
Also, don't use ViewGetLayers() for visibility checking. For some
things (like vias) it deals with synthetic layers, not board layers.
Fixes https://gitlab.com/kicad/code/kicad/issues/6328
2020-11-08 17:19:37 +00:00
Jeff Young
81ea71fb80
More safety when fetching via sizes.
2020-11-07 18:50:30 +00:00
Jeff Young
ae9afdd169
SNR. (Mostly for progammers, but a little for user messages.)
2020-11-02 16:20:00 +00:00
Jeff Young
76ac8b5acf
Preflight routing so we can give a warning if it's not going to work.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/4975
2020-11-02 00:10:21 +00:00
Jeff Young
8bfb255c96
Put a warning when routing can't start due to DRC violation.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/4975
2020-11-01 23:46:42 +00:00
Jeff Young
409cd9d4ee
Formatting.
2020-11-01 20:25:36 +00:00
Jeff Young
f6c92ab1ea
DRAGGER needs to report it's nets.
...
Otherwise things like snapping don't work.
Fixes https://gitlab.com/kicad/code/kicad/issues/4147
2020-11-01 19:57:42 +00:00
Jeff Young
a95e2184da
A more generic error message when route start pt violates DRC.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/1812
2020-11-01 18:23:07 +00:00
Jeff Young
2c1b6e42e0
Repair ARC copy constructor.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6176
2020-11-01 00:10:08 +00:00
Jeff Young
fab87fb97b
Handle proxy items for the second PNS_ITEM as well.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6193
2020-10-31 23:23:54 +00:00
Jeff Young
843974b0bf
Cleanup and formtting.
2020-10-31 15:50:06 +00:00
Jeff Young
ba4d711356
I should have known better than to use a global....
...
When the board is closed and reopened the dummy items belong to a
freed board.
2020-10-31 15:50:06 +00:00
Jeff Young
c17ceb5875
Make sure proxy items at least get the right net for clearance lines.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/5980
2020-10-30 23:37:35 +00:00
Werni
a7d5d1f091
Add more consts all over the place
2020-10-27 11:03:35 +00:00
Ian McInerney
31e626f279
Cleanup creation of all our smart pointers
2020-10-26 23:52:44 +00:00
Marek Roszko
a785f70ea1
msgpanel is a widget, shove it to the right folder.
2020-10-25 20:01:12 -04:00
jean-pierre charras
d6f91c810f
Fix a few compil and Coverity warnings.
2020-10-25 10:02:07 +01:00
Marek Roszko
81a7afc76e
Use kicad_algo directly rather than common.h
2020-10-24 08:53:11 -04:00
Marek Roszko
8d7feb3d72
Nip some common.h from headers
2020-10-24 08:28:03 -04:00
Seth Hillbrand
4085757aeb
Remove beginning/ending spaces in translations
...
Adding space padding makes translations more difficult by increasing
string counts
2020-10-20 12:08:04 -07:00
Jeff Young
3045dbd6e8
Minor code clean-up.
2020-10-20 13:38:09 +01:00
Jeff Young
d7ea70ba02
Don't assume a valid constraint.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6059
2020-10-18 20:58:53 +01:00
Jeff Young
02cbcb99df
Fix broken logic in ImportSizes().
...
Fixes https://gitlab.com/kicad/code/kicad/issues/6049
2020-10-18 12:08:16 +01:00
Jeff Young
827699bed2
Just because we have a startItem doesn't mean it can find a width.
...
For instance, a pad with no other tracks attached will return 0.
Fixes https://gitlab.com/kicad/code/kicad/issues/6019
2020-10-17 13:57:07 +01:00
Jeff Young
23d9e2e74a
New rules engine needs non-connected items as well.
2020-10-17 13:52:18 +01:00
Jeff Young
1ee3df61c9
Improve robustness of infobar button handling.
2020-10-16 17:07:59 +01:00
Jeff Young
eea7957e16
Inform user of bad DRC rules when filling zones.
...
ADDED: facility for hypertext links in infobar.
Also made use of this for via constraint errors when routing.
Fixes https://gitlab.com/kicad/code/kicad/issues/5800
2020-10-16 12:44:20 +01:00
Marek Roszko
9656bd310b
Remove eda_item and gr_basic from eda_text.h
2020-10-13 22:46:39 -04:00
Jon Evans
cea73fe510
Restore net highlighting to router tool
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/5962
2020-10-13 20:30:38 -04:00
Jon Evans
fd4b9f0efa
PNS: ratlines need to not be debug graphics
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/5995
2020-10-13 20:04:47 -04:00
Tomasz Wlostowski
ac8b072284
router: fix assertion failure when starting a route on an empty board
2020-10-13 19:36:36 +02:00
Jeff Young
44dbe3577b
Create proxy items for PNS when needing to query clearances.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/5929
2020-10-12 20:59:19 +01:00
Michael Kavanagh
c40483d18a
Cleanup: Move KiCad files into plugins folder
2020-10-12 16:36:08 +00:00
Jeff Young
b92cb5c930
Hook up PNS via command to new rule system.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/5951
2020-10-12 00:14:32 +01:00
Jeff Young
bcebb19665
Add implied diffpair netclass rules.
2020-10-11 13:19:23 +01:00
Jeff Young
79f91481f3
Fix missing break stmt.
2020-10-11 01:11:55 +01:00
Jeff Young
f680ff17d6
Need an item to pick a netclass value.
2020-10-11 00:14:42 +01:00
Jeff Young
22cde88ba9
Allow chamfering/filleting of zone/board edge intersections.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/5947
2020-10-10 23:09:43 +01:00
Jeff Young
04c4012ee6
Make track/via sizes UI more predictable and compatible with DRC.
...
Two main changes: netclass values need to go through the DRC engine
so they can interact with other rules. They're also now dependent
on the layer being routed as well as the start object.
Also make the controls adjust to each other better. For instance,
copy-track-width needs to turn off when you select a particular
track width, and a particular track width needs to zero out when
you choose copy-track-width.
Fixes https://gitlab.com/kicad/code/kicad/issues/5951
2020-10-10 19:32:30 +01:00
jean-pierre charras
c5f01501c1
PnS, router/router_preview_item: fix incorrect size of SH_RECT shape when drawing it.
...
The width of the rectangle was used instead of the width of outline (usualy 0) to
draw the shape (when dragging the pad for instance)
Fixes #5944
https://gitlab.com/kicad/code/kicad/issues/5944
2020-10-10 10:03:23 +02:00
Jeff Young
b31470012a
Previous check didn't account for router dragging.
2020-10-09 14:30:55 +01:00
Jeff Young
2ca819a627
Don't assume a DRC_CONSTRAINT has a parent rule.
...
It will still have a name, though.
2020-10-09 14:26:09 +01:00
Jeff Young
1cb0cbff2e
Fix crash when router gets notifed but has no current m_placer.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/5935
2020-10-09 14:26:04 +01:00
Jon Evans
966730710e
Partial fix for routing with no start item
2020-10-08 20:38:08 -04:00
Tomasz Wlostowski
38cef95da9
router: initial support for V6 Design Rules (width/clearance/diff pair width/diff pair gap). Still a lot of work to do!
2020-10-09 00:01:26 +02:00
Tomasz Wlostowski
9bef95418e
router: wip on less intrusive dragged trace optimization
2020-10-09 00:01:26 +02:00
Tomasz Wlostowski
5e4fb46aef
MINOPTMAX: added OptThenMin() method as syntax sugar
2020-10-09 00:01:26 +02:00
Marek Roszko
f5e0754f65
Use the setCursor lambda pattern and fix up the initial cursor states
2020-10-07 23:26:14 -04:00
Mark Roszko
d9485129c8
Implement more context specific cursors using both stock and custom cursors.
2020-10-08 00:50:28 +00:00
Tomasz Wlostowski
eb8287ded8
router: bring back legacy GetEffectivePolygon() for complex pad shapes (more info in comments)
2020-10-07 16:36:37 +02:00
Jeff Young
d23d5510e7
Restore a side-effect that the router appears to depend on.
2020-10-06 00:07:34 +01:00
Jeff Young
35fa857fd8
Make sure router tool passes events it doesn't handle.
...
Fixes undo/redo when router tool is active but not routing.
2020-10-05 23:16:37 +01:00
Jeff Young
18a3c4c1db
Fix some fairly catastrophic bugs in shape collision optimization.
...
I did a little too much copy & paste last time around....
2020-10-05 22:32:07 +01:00
Jeff Young
6d50c9749c
Mark the colliding shape so we know which one to highlight.
...
Also checks the nets when checking for a pad being flashed on a particular
layer (so we don't end up thinking the currently-routing-collided track
is a connection).
2020-10-05 22:32:07 +01:00
Jeff Young
d063c56971
Move PNS pad solids to COMPOUND_SHAPE.
...
Also fixes plated holes solids to include plating thickness.
2020-10-05 22:32:07 +01:00
Jeff Young
37906511f5
Class renaming.
...
DRAWSEGMENT -> PCB_SHAPE
EDGE_MODULE -> FP_SHAPE
TEXTE_PCB -> PCB_TEXT
TEXTE_MODULE -> FP_TEXT
2020-10-05 11:55:33 +01:00
Mark Roszko
a28a0e14ba
Fix conversion warnings
2020-10-05 10:41:14 +00:00
Jeff Young
7a4900b8dc
PCB_LINE_T -> PCB_SHAPE_T and PCB_MODULE_EDGE_T -> PCB_FP_SHAPE_T
...
Also updated footprint text and zone types for consistencey.
2020-10-04 16:49:04 +01:00
Jeff Young
bb753aaadf
Clean up terminology around active & high contrast layers.
2020-10-03 22:55:34 +01:00
Mikolaj Wielgus
400c15b8eb
Add mils to units, remove useMils variables
2020-10-03 20:06:56 +00:00
Jon Evans
6f54a9982c
Remove PCB_LAYER_WIDGET
2020-09-30 19:12:26 -04:00
Seth Hillbrand
bf3cb0b1d0
Standardize pad type enums
2020-09-30 08:38:35 -07:00
Jeff Young
d3f8f2b81e
Remove confusion between pad->IsOnLayer and pad->IsPadOnLayer
2020-09-30 11:50:51 +01:00
PJM
258d1a1971
Pcb: Get proper "Break Track" location when invoked from RMB context menu
...
When invoking "Break Track" from the RMB context menu, Pcbnew
gets and uses the current position of the mouse to figure out where to
break the track. The problem is that the mouse has to be moved to select
the "Break Track" menu item, and the mouse position used is wrong. This
can result in the break in the wrong location or not happening at all.
CHANGED: This commit determines if the "Break Track" was invoked from a
context menu or a hotkey. If a hotkey, it uses the current mosue position.
If a context menu, it uses the original postion of the mouse when the menu
was opened.
2020-09-28 16:56:02 +00:00
Jeff Young
f8875bc5a6
Move std::contains to alg::contains.
2020-09-26 14:42:40 +01:00
Jeff Young
d7e80f8008
Add std::contains() to simplify a lot of code.
2020-09-26 12:40:32 +01:00
Ian McInerney
bba29a1036
Always show the track and via menu in the router context menu
2020-09-25 00:17:54 +01:00
Ian McInerney
672756a018
Move the router tools to a TOOL_MENU context menu
...
The previous way of displaying a context menu was being
usurped by the selection tool because it was displaying its
menu before DispatchContextMenu was called, and all other tools
explictly use the TOOL_MENU system.
Fixes https://gitlab.com/kicad/code/kicad/issues/5762
2020-09-24 23:51:34 +01:00
Jon Evans
18e17abd6a
Rename "Keepout" to "Rule Area"
...
These objects can now be used in advanced DRC rules and
not just for keeping things out. Also remove the restriction
that at least one of the "basic" keepout rules must be set,
so that these areas can be used for more advanced rules.
2020-09-21 23:55:02 -04:00
Jeff Young
ece2ae9805
Don't capture commands in the router eventloop that it doesn't process.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/5692
2020-09-19 12:08:18 +01:00
Seth Hillbrand
f493e270ea
ADDED: Menu option to enable/disable snap to grid
...
You can now enable and disable snap to grid when drawing/editing across
all apps. You can also tie snap to grid to the visibility of the grid
to allow rapid enable/disable via grid display.
2020-09-10 20:09:30 -07:00
Seth Hillbrand
173b4ff588
Add snapping to eeschema
...
This generalizes both the SetPosition() function and ORIGIN_VIEWITEM
class away from the pcbnew-centric.
2020-09-09 10:18:15 -07:00
Tomasz Wlostowski
54ca66be72
router: NODE::AllItemsInNet() can now filter by item type
2020-09-08 01:31:42 +02:00
Tomasz Wlostowski
f2338d9faa
router: fix segfault with NPTH holes in COMPONENT_DRAGGER
2020-09-08 01:31:42 +02:00
Jeff Young
88635ee5b6
Clean up error messages.
...
Convert a lot of nags to InfoBar errors/warnings/messages, and some
that never should have been exposed to wxFAIL_MSGs.
2020-08-31 14:19:57 +01:00
Jon Evans
7a5c99ee0f
Tweak the mouse-based posture solver
...
Add an epsilon to reduce flutter
Add a lock after a certain distance
Forget the old trail when unlocking
Fixes https://gitlab.com/kicad/code/kicad/-/issues/5381
2020-08-30 19:54:09 -04:00
Jeff Young
8b7c0cbe04
Adjust footprint zones while dragging footprint.
2020-08-28 11:05:58 +01:00
Seth Hillbrand
f4e8c194be
Revise restriction on No Copper setting
...
This allows the user to specify a NPTH with "No Copper", allowing a pad
to retain the mask layer without a copper landing.
Fixes https://gitlab.com/kicad/code/kicad/issues/3407
Fixes https://gitlab.com/kicad/code/kicad/issues/5237
2020-08-26 18:09:06 +00:00
Seth Hillbrand
adff7f749b
PNS: Addition layer smarts
...
Edge.Cuts have no parent but cross all layers, so we need to handle the
"all layers" case. Also renames "IsPadOnLayer" to "IsOnLayer".
Fixes https://gitlab.com/kicad/code/kicad/issues/5351
2020-08-25 09:42:50 -07:00
Seth Hillbrand
686af65a9b
Fix issue generating alternate shape
...
Boolean ops need boolean inputs.
2020-08-22 08:04:03 -07:00
Jeff Young
842641308f
Solids don't always have nets (even a defualt one).
...
Fixes https://gitlab.com/kicad/code/kicad/issues/5290
2020-08-21 20:08:12 +01:00
Seth Hillbrand
9a4f92dfd9
Ensure that all pads with holes have alts
...
Alternate shapes for holes that are fallback clearance are needed in
case we have missing copper on any layer
Fixes https://gitlab.com/kicad/code/kicad/issues/5233
2020-08-20 21:50:37 -07:00
Seth Hillbrand
dd9f7c8c25
PNS: Add defensive coding to AlternateShape()
...
Adds additional check/warnings about missing alternate shapes when they
are expected.
Fixes https://gitlab.com/kicad/code/kicad/issues/5233
2020-08-19 09:02:06 -07:00
Wayne Stambaugh
ede39780e2
Remove all debugging output that cannot be disabled.
...
The use of printf, wxLogDebug, and std::err/std::out causes excessive
debugging output which makes finding specific debugging messages more
difficult than it needs to be.
There is still some debugging output in test code that really needs to
be moved into a unit test.
Add debugging output section to the coding policy regarding debugging
output.
2020-08-18 10:17:36 -04:00
Seth Hillbrand
4cc820f550
PNS: skip hulls for layers where the solid isn't
...
If we don't have an object on the required layer and there isn't a
through-hole (m_alternateShape), then we shouldn't return a hull
Fixes https://gitlab.com/kicad/code/kicad/issues/5233
2020-08-18 06:53:03 -07:00
Seth Hillbrand
5c3a1d059e
Fix memory mgmt issue with SOLID shapes
...
We don't delete items from the CTOR but we do need to check if they
exist in the incoming SOLID before cloning
Fixes https://gitlab.com/kicad/code/kicad/issues/5214
2020-08-17 06:16:11 -07:00
Seth Hillbrand
afc94fdec3
PNS: Be better about handling multiple layers
...
Rather than adding pads/vias multiple times for each layer, we introduce
the "alternate shape" idiom to PNS that allows us to optionally place
the collision constraint on the hole instead of the pad for those
vias/pads that have inner layers removed.
Fixes https://gitlab.com/kicad/code/kicad/issues/5158
Fixes https://gitlab.com/kicad/code/kicad/issues/5198
Fixes https://gitlab.com/kicad/code/kicad/issues/5195
2020-08-16 12:39:15 -07:00
Jeff Young
57c3d8e8d8
Make sure preview group gets added to view after a clear.
2020-08-15 21:13:44 +01:00
Jon Evans
bd14f8a82a
ADDED: New appearance control widget for PcbNew
...
Featuring:
- Layer view presets
- Per-type opacity for tracks, vias, pads, zones
- Net and netclass color and visibility controls
CHANGED: Simplified object visibilty controls
Fixes https://gitlab.com/kicad/code/kicad/-/issues/1951
Fixes https://gitlab.com/kicad/code/kicad/-/issues/1981
Fixes https://gitlab.com/kicad/code/kicad/-/issues/2003
Fixes https://gitlab.com/kicad/code/kicad/-/issues/2173
Fixes https://gitlab.com/kicad/code/kicad/-/issues/2254
Fixes https://gitlab.com/kicad/code/kicad/-/issues/4325
2020-08-15 15:24:28 -04:00
Jeff Young
463100d67f
Remove a long-standing hack to keep divots out of adjacent zones.
...
The new algorithm unions any adjacent zones before doing the
chamfer/fillet and then subtracts the other zones back out afterwards.
Fixes https://gitlab.com/kicad/code/kicad/issues/3812
2020-08-12 22:20:08 +01:00
Seth Hillbrand
9a66a5acad
Cleanup code line endings
2020-08-10 03:27:27 +00:00
Seth Hillbrand
5fc6b74c89
ADDED: Remove unused pads
...
This option removes copper layers from pads and vias where they are not
connected to other board elements. This allows the inner layers to be
more closely routed if the via landing pad is not needed.
Fixes https://gitlab.com/kicad/code/kicad/issues/1835
2020-08-10 03:27:26 +00:00
Ian McInerney
90a17427ee
Give the length tuning tool an inital end point that isn't the start point
...
Using the starting point as the end point means that the tool
initializes with 0 length traces and so nothing is visible.
Fixes https://gitlab.com/kicad/code/kicad/issues/1912
2020-08-08 23:41:48 +01:00
Jeff Young
7cd8f710b6
Clean up unused includes.
2020-08-08 16:25:30 +01:00
Seth Hillbrand
c57c168753
PNS: Remove items from all layers
...
subIndices control which layers the items are inserted onto and removed
from. The iterator to remove items needs to be inclusive of the
first/last layers
Fixes https://gitlab.com/kicad/code/kicad/issues/5090
Fixes https://gitlab.com/kicad/code/kicad/issues/5075
Fixes https://gitlab.com/kicad/code/kicad/issues/5034
2020-08-05 19:39:55 -07:00
Jeff Young
73832a9708
Work around an event processing failure.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/4273
2020-08-05 19:36:58 +01:00
Jeff Young
e2ec9d9f00
A more fail-safe way to disallow editing while routing.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/4413
Fixes https://gitlab.com/kicad/code/kicad/issues/5067
2020-08-05 16:51:58 +01:00
Jeff Young
59ba793096
Disable various combinations of router and editing commands.
...
They just confuse each other.
Fixes https://gitlab.com/kicad/code/kicad/issues/5067
2020-08-04 14:32:02 +01:00
Jeff Young
74b9cce682
Try again at dragging module edges.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/5037
2020-08-03 23:53:45 +01:00
Jeff Young
ef2388b5bb
Fix issue with dragging flipped MODULE.
2020-08-02 17:05:13 +01:00
Jeff Young
d586495c0a
Preview fp edges & text while dragging in router.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/5037
2020-08-01 15:40:34 +01:00
Tomasz Wlostowski
89a953e039
Migrated GetEffectiveShape(s) to SHAPE_COMPOUND
2020-07-29 23:14:03 +02:00
Tomasz Wlostowski
85aecc15ee
router: fix mistake in 45/free-angle mode selection when dragging corners
2020-07-29 23:14:03 +02:00
Tomasz Wlostowski
c2b9db293f
router: prevent heap crash when initial walkaround line is empty
2020-07-29 23:14:03 +02:00
Seth Hillbrand
1f5fb979b9
Keep PNS item RTree on layer-by-layer
...
Rather than extra splitting of the RTree that we use for collision
detection on types and direction, we limit this to checks on
layer-by-layer basis. This also allows for layer expansion by using
deque of RTrees rather than fixed index
This fixes the missing layernumbers and keeps the layers in a deque to
prevent re-allocation on expansion.
Replaces ad94b6205
2020-07-29 11:21:00 -07:00
jean-pierre charras
f00c59c446
Fix a few Coverity warnings.
2020-07-29 09:26:57 +02:00
Seth Hillbrand
ad94b6205a
Revert "Keep PNS item RTree on layer-by-layer"
...
This reverts commit a34d33c460
.
The commit did not work properly for shove routing. Will revist in
later commit
2020-07-28 21:20:19 -07:00
Seth Hillbrand
a34d33c460
Keep PNS item RTree on layer-by-layer
...
Rather than extra splitting of the RTree that we use for collision
detection on types and direction, we limit this to checks on
layer-by-layer basis. This also allows for layer expansion by using
vector of RTrees rather than fixed index
2020-07-28 10:17:56 -07:00
Jeff Young
46602148dc
Fix overly aggressive assert.
2020-07-28 13:35:37 +01:00
Jeff Young
4153309fba
Add defensive code.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/4941
2020-07-25 23:54:04 +01:00
Jeff Young
bf445c1a95
Performance enhancements.
...
1) cache pad polygon outlines
huge improvement in connectivity performance and a decent
improvement in DRC performance
2) don't pre-allocate CONTEXT stack
significant improvement in DRC rule performance
2) don't keep re-encoding strings
decent improvement in DRC rule performance
2020-07-25 13:03:33 +01:00
Tomasz Wlostowski
70b98c3b49
router: dump entire event log + annotated PCB upon user request
2020-07-22 18:05:54 +02:00
Tomasz Wlostowski
379aa8f3b5
router: clearer distinction between LOGGER and DEBUG_DECORATOR classes.
...
The first one keeps a log of events (start routing, mouse motion, etc).
The second allows for adding temporary debug drawings and messages which are stored synchronously with the events in LOGGER.
The event stream together with the PCB design (now with UUIDs) can be used to deterministically replay routing bugs as the user sees them.
2020-07-22 18:05:54 +02:00
Tomasz Wlostowski
2a2e389a94
router: auto-guess track posture from mouse movements, experimental!
2020-07-22 18:05:50 +02:00
Tomasz Wlostowski
fd07e94760
router: abstract segment links into a LINK_HOLDER interface. DIFF_PAIRS are now also linkable
2020-07-22 17:04:42 +02:00
Ian McInerney
450107e453
Remove if statement with duplicated branches in router
2020-07-22 00:18:30 +01:00
Jon Evans
2f31bf278b
Fix layer hotkey dispatch
...
Hotkeys received by more than one tool need AF_NOTIFY
2020-07-11 21:59:16 -04:00
Jon Evans
5d118b0700
More visibility settings infrastructure
...
ADDED: Three-state high contrast mode action
ADDED: Save contrast mode in local settings
Also some initial infrastructure for layer presets
2020-07-11 21:59:07 -04:00
Jon Evans
0148c1db84
Support layer switch hotkeys while routing
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/4699
2020-07-03 19:49:19 -04:00
Jon Evans
3d7610d6b9
Hide PNS debug graphics behind an AC key
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/4061
2020-07-03 19:33:36 -04:00
Jon Evans
c0aa6965de
Migrate PcbNew project settings to new framework
...
Various architecture upgrades to support this.
Creating a BOARD now requires a valid PROJECT, which caused
some (mostly transparent) changes to the Python API internals.
ADDED: Project local settings file
CHANGED: Board design settings are no longer stored in PCB file
CHANGED: Net classes are no longer stored in PCB file
CHANGED: Importing board settings now reads boards, not just projects
Fixes https://gitlab.com/kicad/code/kicad/-/issues/2578
Fixes https://gitlab.com/kicad/code/kicad/-/issues/4070
2020-07-02 22:08:54 -04:00
Jeff Young
2cfd6ba978
Fix a couple of integer overflows.
2020-07-02 22:52:37 +01:00
Jeff Young
eb1ff80d57
SHAPE collision fixes.
...
1) An actual distance of 0 is still a collision, even if the allowed
distance is 0.
2) Be consitent about edges and interiors. Everyone expect the edge
of a RECT to be part of the RECT; same with a CIRCLE. SHAPE_POLY_SET
shouldn't be any different. (And SHAPE_LINE_CHAIN was a split-
personality with the edge considered part of it for Collide() but not
for PointInside()).
2020-07-02 21:38:37 +01:00
Jeff Young
441dfa30f0
Return individual custom pad shapes instead of a SHAPE_POLY_SET.
...
Also implements an optional pointer to return the actual distance
from all the SHAPE collision routines.
Fixes https://gitlab.com/kicad/code/kicad/issues/4774
2020-07-02 17:09:15 +01:00
Ian McInerney
17adb6c3c6
Add context menu to route and zone toolbar items
...
ADDED: Context menu for route and zone toolbar items
2020-06-26 21:29:03 +00:00
Jeff Young
d01b29ab37
Cleanup pad geometry handling.
...
There were a lot of plotters, exporters, etc. that were rolling their
own implementations.
This also introduces a lazily-built set of SHAPE objects for doing
collision detection and some forms of rendering (and later DRC).
2020-06-22 22:28:37 +01:00
Jeff Young
aeed8e6e2c
Finish implementation of DRAWSEGMENT::C_RECT.
...
It's currently only supported in the Footprint Editor. It could be
easily added to the board editor (all the code is there), but the board
editor is a little short on room in the drawing tools toolbar.
2020-06-15 20:51:31 +01:00
Jeff Young
47ab7c78a6
Divorce GRID_HELPER from the parent frame.
...
This moves GRID_HELPER fully into the tool framework.
2020-06-13 22:44:16 +01:00
Seth Hillbrand
a8ab668122
Move SHAPE_ARC to start->mid->end format
...
The arc shapes need to connect with their adjacent points. By storing
the relevant points, we allow exact point matching on both ends of the
arc as well as localize point storage.
2020-06-13 11:23:14 -07:00
Seth Hillbrand
1c46bf1955
PNS: Use segment shape for all oval pads
...
Instead of calculating a simple polygon for the oval pads that are
rotated, we use a rotated segment.
Fixes https://gitlab.com/kicad/code/kicad/issues/4604
(cherry picked from commit 25b8da8e3b
)
2020-06-04 20:29:25 -07:00
Seth Hillbrand
674226f99f
pcbnew: Set flag when cancelling during routing
...
Fixes https://gitlab.com/kicad/code/kicad/issues/4475
2020-06-04 15:48:01 -07:00
Jon Evans
c7daf8a8f3
ADDED: Cross-probe highlighting of bus members
...
Note: this is a basic implementation but it could be
improved once we include bus information in the netlist
and pcbnew can natively keep track of buses and nets
instead of just nets.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/4158
2020-05-24 13:30:23 -04:00
Ian McInerney
6692935808
Consolidate common viewer actions across cvpcb and pcbnew frames
...
* Consolidate the measure tool into one tool (this gives cvpcb
unit changing and snapping capabilities in its measure tool)
* Transition cvpcb to use actions for the sketch modes
* Replumb how magnetic items settings are stored and used
2020-05-24 11:58:33 +01:00
Jeff Young
05855a5a1c
Performance enhancements for DRC.
2020-05-18 13:38:17 +01:00
Jeff Young
3c3984a6fc
Generalize default footprint fields.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/2289
2020-05-08 23:30:33 +01:00
Jon Evans
51eac3e3e6
Split pcbnew and footprint editor settings getters for clarity
2020-05-05 21:46:00 -04:00
jean-pierre charras
83cb9c0d14
Fix a few Coverity and compil minor warnings. Remove dead code
2020-04-21 12:47:48 +02:00
Michael Kavanagh
7db355e34a
ADDED: TOOL_ACTION for switching PNS router mode.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/2249
2020-04-19 22:44:05 +00:00
Jeff Young
9c8941e040
Remove a bunch of globals.
2020-04-16 17:34:46 +01:00
Tomasz Wlostowski
4a3cd77416
router: smarter way to check the shove direction without using silly heuristics
2020-04-15 13:00:48 +02:00
Jeff Young
6e800bddae
Rationalize penWidth processing as first step in removing some globals.
2020-04-13 20:58:13 +01:00
jean-pierre charras
bdada70ee7
Cosmetic enhancements: add bitmaps to a few context menus.
...
Fix also a minor compil warning.
2020-04-12 10:29:28 +02:00
jean-pierre charras
ffe0b4aba1
Fix a few Coverity warnings.
2020-04-02 14:21:09 +02:00
jean-pierre charras
ddb7b2b2b7
pns router: fix possible hang when using "end" key to finish the current track.
...
Add also left double click (same as "end" key) to finish the track.
Fixes #4116
https://gitlab.com/kicad/code/kicad/issues/4116
2020-04-02 14:21:09 +02:00
jean-pierre charras
e811101567
fix a few Coverity warnings.
2020-04-01 09:34:44 +02:00
jean-pierre charras
6e47f147aa
A few Coverity fixes.
2020-03-30 09:50:26 +02:00
jean-pierre charras
9d2712a824
Fix a few Coverity warnings.
...
It also fix:
Fixes #4082
https://gitlab.com/kicad/code/kicad/issues/4082
2020-03-29 18:42:24 +02:00
Seth Hillbrand
4dfe630b28
PNS: Moving the rest of the placer to Fix/Commit
...
Springback introduced a new PNS structure to check for valid placement
as well as separating the Fix/Commit routines. This updates the
remaining placers to utilize the new structure.
Fixes https://gitlab.com/kicad/code/kicad/issues/4008
2020-03-06 09:56:44 -08:00
Seth Hillbrand
f6317fba82
PNS: Protect drag from null deref
...
Items that do not have nets will not be in the index, so we need to
avoid the null pointer when adding drag tagets
Fixes https://gitlab.com/kicad/code/kicad/issues/4009
2020-03-06 09:32:04 -08:00
Seth Hillbrand
0417a6b409
PNS: Fix missing via on zero-length
...
The current node needs to be kept for zero-length lines when placing a
via.
Fixes https://gitlab.com/kicad/code/kicad/issues/4005
2020-03-05 15:02:40 -08:00
Seth Hillbrand
b0d9838fb4
PNS: Correct assertion when dragging
...
Dragging using highlight caused an assertion as the duplicated lines
were being re-added with their old links still inplace. While this was
probably fine as the link references shouldn't be stale, we clear them
to allow for the possibibility that the dragger will adjust the links in
the future.
2020-03-05 08:47:06 -08:00
Seth Hillbrand
4c2626f6b0
PNS: Don't use PNS margin to calc bump direction
...
The bump direction should only be concerned with physical points to
calculate the heuristic for loop-back otherwise we get too many false
positives.
Fixes https://gitlab.com/kicad/code/kicad/issues/3971
2020-03-04 19:22:57 -06:00
Seth Hillbrand
fe8524b9bb
Update DIFF_PAIR_PLACER to new callbacks
...
Needs to handle changes to PNS_ROUTER. This does not implement
springback or backspace in DIFF_PAIR_PLACER, only allows committing
lines as before
Fixes https://gitlab.com/kicad/code/kicad/issues/3988
2020-03-04 17:23:04 -06:00
Seth Hillbrand
d4cbc348de
PNS: avoid committing route with nothing
...
The node is not neccesarily populated when committing, so we need to
check for validity first.
Fixes #3984 | https://gitlab.com/kicad/code/kicad/issues/3984
2020-03-03 14:02:32 -08:00
Seth Hillbrand
9769e1020b
PNS: Don't link unroutable items
...
The joint map only works for items that are routable, so don't bother
adding unroutable items as this only takes additional time to process
Fixes #3976 | https://gitlab.com/kicad/code/kicad/issues/3976
2020-03-03 12:42:56 -08:00
Seth Hillbrand
d6706c257c
PNS: clear via when fixing route
...
When fixing the route, we need to clear the via to avoid re-placing it
on each future click.
Fixes #3966 | https://gitlab.com/kicad/code/kicad/issues/3966
2020-03-02 16:22:34 -08:00
Seth Hillbrand
386147628e
PNS: Initialize placement test
2020-03-02 16:22:34 -08:00
Seth Hillbrand
3c19704349
PNS: Don't add null items to drag
...
Not all footprint pad items are connected to elements in the PNS, so if
we don't find the parent element, we avoid later crashes/assertions by
skipping their addition
Fixes #3972 | https://gitlab.com/kicad/code/kicad/issues/3972
2020-03-02 11:28:14 -08:00
Seth Hillbrand
18db471967
PNS: Line placer returns false when nothing committed
...
The true/false return should be triggered on whether any elements have
been commited to the line
Fixes #3969 | https://gitlab.com/kicad/code/kicad/issues/3969
2020-03-02 11:11:13 -08:00
Tomasz Wlostowski
a28f58d14d
router: fix regression in PNS_KICAD_IFACE treating newly created items as invisible (side effect = non-45 degree angles due to incorrect snapping)
2020-02-29 20:41:31 +01:00
Tomasz Wlostowski
6850067182
router: commit traces made in single stroke/click (fixes regression introduced with Backspace support)
2020-02-29 20:40:19 +01:00
Tomasz Wlostowski
e5fff302a3
router: fix arc drawing in ROUTER_PREVIEW_ITEM
2020-02-28 23:52:33 +01:00
Tomasz Wlostowski
e0bad936bf
router: enable inline dragging of components
2020-02-28 23:17:15 +01:00
Tomasz Wlostowski
44905e1b0a
router: initial support for dragging components with traces attached
2020-02-28 23:17:15 +01:00
Tomasz Wlostowski
b2b1edbcd1
router: KICAD_IFACE can now commit changes to module positions
2020-02-28 23:17:15 +01:00
Tomasz Wlostowski
b6e059f018
router: use a common base class for all dragging algorithms
2020-02-28 23:17:15 +01:00
Tomasz Wlostowski
1d0ee66187
router: kill debug printf()
2020-02-28 23:17:15 +01:00
Tomasz Wlostowski
77478014d8
router: kill some warnings in OPTIMIZER
2020-02-28 23:17:15 +01:00
Tomasz Wlostowski
796aec6e6e
router: SOLID::SetPos() should update the shape position too
2020-02-28 23:17:15 +01:00
Tomasz Wlostowski
5a16fda11a
router: allow modification of SOLIDs in PNS::NODE
2020-02-28 23:17:15 +01:00
Seth Hillbrand
7cb3ed456e
PNS: No free-angle drag at the moment.
...
Fixes #3954 | https://gitlab.com/kicad/code/kicad/issues/3954
2020-02-28 12:43:59 -08:00
Jon Evans
9cc5b4b3f9
Fix management of nested settings for PNS
2020-02-27 22:53:00 -05:00
Tomasz Wlostowski
f77d2f8cb8
router: option to enable optimization of the track being dragged
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
4525a17076
router: backspace key to undo last fixed segment(s)
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
b5c11f21e5
router: rounding mode context menu entry
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
d1a5d8c78b
router: don't forget the tail when toggling via placement
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
8ddeb966ca
pns: drag wip on walkaround via mode
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
cf4945afaa
router: optimizer should now handle 'keep vertex' constraint correctly...
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
53c3f95ac4
router: initial attempt at walkaround mode for dragger
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
c0314dbb29
router: dragger can now optimize also the segment being dragged
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
a6d3ae3c5b
router: NODE now can also query joints
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
6b767d50c3
router: initial support for user-provided constraints for the optimizer
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
c2d95a00c1
router: improved handling of corner cases in LINE::Walkaround
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
37a754c4dd
router: initial attempt at improved 'aim at mouse cursor' strategy in walkaround mode, wip...
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
43b71cd9e3
router: Clear() method for PNS::LINE
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
dbe90e163e
router: use one global logger object
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
4281bd8207
router: keep board in base Kicad Iface class
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
9e605d6958
router: DEBUG_DECORATOR now allows to name each primitive
2020-02-27 22:02:56 +01:00
Tomasz Wlostowski
065d634b30
router: put non-graphical part of ROUTER_IFACE into a parent class (for unit tests)
2020-02-27 22:02:56 +01:00
Jon Evans
9f8ff236d6
Fix load and save of PNS settings
2020-02-25 19:36:36 -05:00
jean-pierre charras
f206db2041
Pcbnew: fix crash on exit after using the track length tool.
...
This is due to the fact the PNS_TUNE_STATUS_POPUP was not hidden
before calling its destructor.
It is now fixed by setting its virtual destructor calling Hide().
TODO: see if it could be used for any class derived from STATUS_POPUP.
(We already have this issue in other places)
2020-02-22 10:34:11 +01:00
Seth Hillbrand
8c19b4b6ae
pcbnew: Adding arcs to PNS
...
This is allows ARCs in tracks to be synchronized with
the PNS router. Note this does not yet include the UI components
to route curved traces
2020-02-21 16:11:41 -08:00
Jon Evans
e59a3d981e
Implement a new settings framework across all of KiCad
...
CHANGED: Settings are now stored in versioned sub-directories
ADDED: First-run dialog for migrating settings from a previous version
CHANGED: Settings are now stored as JSON files instead of wxConfig-style INI files
CHANGED: Color settings are now all stored in a separate settings file
CHANGED: The symbol editor and footprint editor now have their own settings files
CHANGED: Color settings are no longer exposed through BOARD object
CHANGED: Page layout editor now uses Eeschema's color scheme
Settings are now managed through a central SETTINGS_MANAGER held by PGM_BASE.
Existing settings will be migrated from the wxConfig format on first run of each application.
Per-application settings are now stored in one class for each application.
2020-02-19 23:44:56 -05:00
Ian McInerney
8b7d4c2a55
Put tool graphics back on the stack
...
Now that the tool framework gracefully shutdowns the tools, graphics
can be created on the stack inside a tool function.
This reverts commit f6881ce3de
.
2020-02-05 22:23:44 +00:00
Ian McInerney
34e5b76c5f
Add virtual constructors to some classes that should have them
...
This is more for safety from undefined deletion behavior than
anything else (it also silences the Clang -Wnon-virtual-dtor warning).
2020-02-05 22:19:14 +00:00
Seth Hillbrand
c4fff95078
PNS: Detect collisions including newline width
...
The new line collision search uses BBox() to check for colliding
objects. BBox in the SHAPE_LINE_CHAIN did not include width as the
chains were assumed to be zero-width. This is not the case for
PNS::LINE elements.
We mostly don't notice this because DRC checks for SEGMENT collisions
but it becomes obvious/annoying when we cannot place a track for unknown
reasons and the snap-back doesn't take line width into account.
Fixes #3776 | https://gitlab.com/kicad/code/kicad/issues/3776
2020-01-17 11:23:08 -08:00
Seth Hillbrand
f7cb970a02
PNS: Modify MarkObstacles logic to select shorter
...
When routing where we hit multiple obstacles, we choose the shortest
path to allow overlapping hits to choose the shorter path, thus giving a
better chance of returning true for the DRC-compliant path.
Fixes #3773 | https://gitlab.com/kicad/code/kicad/issues/3773
2020-01-16 19:57:38 -08:00
Ian McInerney
3ab9db6ff1
Update cast in PNS since we are guaranteed to have text
...
We are guaranteed that the BOARD_ITEM will be a TEXTE_MODULE
since we have tested its type already, so just use a static_cast
to remove the overhead.
2020-01-13 19:42:49 +00:00
Seth Hillbrand
52bfdb9703
PNS: Assume the current line is a base before optimizing
...
We use the cost of the current line before trying to improve the pad
breakout cost when optimizing the smart pads
Fixes #3759 | https://gitlab.com/kicad/code/kicad/issues/3759
2020-01-12 11:08:46 -08:00
Ian McInerney
00e58cd974
Fix unintialized values (from coverity scan)
2020-01-12 13:00:42 +00:00
Seth Hillbrand
7c28c3838a
Comment-only changes
...
Makes class comments conform to coding standards
2020-01-10 16:43:01 -08:00
Jeff Young
88eab8134e
Fix a couple of uninitialized variables (from Coverity scan).
2020-01-11 00:11:31 +00:00
Ian McInerney
13b6028e1b
Refactor all math into a new kimath library
...
* Split up the thirdparty code into the thirdparty folder (#3637 )
* Create a new kimath static library containing all the math functions
This is part of cleaning the build system for #1906 .
2020-01-07 17:12:59 +00:00
Ian McInerney
5d46e721e5
pcbnew: Cleanup includes of pcbnew_id.h
...
* Remove unused IDs from the enum
* Remove the include statements from files that no longer need it
2020-01-03 15:39:05 +00:00
Mark Roszko
19ceb11ae7
Change more enums over to scoped enums
2019-12-28 00:55:11 +00:00
Mark Roszko
11ff16be4e
Switch to scoped enums
2019-12-20 14:11:39 +00:00
Seth Hillbrand
eb3d32f967
SHAPE_LINE_CHAIN: Unify constructors
...
Keeps the multi element SHAPE_LINE_CHAIN constructors in a single
routine using std::vector and implicit construction.
2019-12-12 13:54:48 +00:00
Seth Hillbrand
c4d853c1e8
SHAPE_LINE_CHAIN: Remove element access
...
This is the first step to allowing non-segments in the line chain.
External routines cannot be allowed to change the line chain without
going through the internal routines. To accomplish this, we remove the
Vertex() and Point() access routines and only leave the const versions.
Transformations are given for both points as well as the chain itself.
2019-12-12 13:54:48 +00:00
jean-pierre charras
21dd8db7a9
P&S router: length tuning tool: fix a crash after trying to tune a track.
...
It happens on Windows, and wxWidgets 3.1.3.
It is created by PNS_TUNE_STATUS_POPUP instance used in tool.
I am pretty sure this crash is created by the stack switching
when managing events, due to some changes in wxWidgets code.
the fix creates the instance on the heap, instead of on the stack.
This is not the first time I see this kind of issue.
2019-12-12 09:39:51 +01:00
Seth Hillbrand
b6b805548d
PNS: Allow snap to temp hidden
...
The IFACE for kicad refers to the board hidden state, not the
temporarily hidden state used by the router. We allow snapping to items
that have been removed by the temporary router state to provide snapping
to original track location.
Fixes #1827 | https://gitlab.com/kicad/code/kicad/issues/1827
(cherry picked from commit 1e64524afb
)
2019-12-07 09:51:02 -08:00
Fabien Corona
36fba5bd7f
PCBnew: placing a blind/buried via sometimes incorrectly place a through via.
...
Fixes #1819
https://gitlab.com/kicad/code/kicad/issues/1819
2019-12-06 13:11:33 +01:00
Seth Hillbrand
6983c56cf8
Use const references where possible
...
This avoids copy cost on local vars where we only read.
2019-12-05 14:40:22 -08:00
Seth Hillbrand
c6f5df134c
Minor speed cleanup
...
This adjusts iterators to use const reference when only used for
copy. It also ensures pre-allocation of vectors when size is known
ahead of time.
2019-12-05 14:20:59 -08:00
Seth Hillbrand
b5f021ff9f
Cleanup: Replace push_back with emplace_back
...
In cases where we create a new item and immediately push into a
container, the emplace idiom is faster and more efficient.
2019-12-05 13:41:21 -08:00
Seth Hillbrand
4d2e953f42
Cleanup: Replace C-only deprecated headers
...
This replaces headers deprecated by C++14 with their equivalent
replacement
2019-12-05 11:03:15 -08:00
Seth Hillbrand
a2edf9c442
Unified update to C++14 std::make_unique
...
This update replaces the existing uses of unique pointer creation with
the C++14 std::make_unique call that provides proper memory release in
event of an exception.
2019-12-05 10:43:55 -08:00
Ian McInerney
1b14a38b01
pcbnew: Fix hotkeys during routing
...
CHANGED: Fix hotkeys for actions during routing
Previously hotkeys on shifted characters would not be
passed through the router and processed.
2019-11-10 17:47:51 +00:00
Ian McInerney
d8c80623ce
pcbnew: Fix cursor position after via layer select
...
CHANGED: Move cursor to event position instead of the
dialog position when selecting the via layer
2019-11-10 17:34:16 +00:00
Fabien Corona
6182133a4e
Ratsnest default value for tracks and vias
...
Fixes: lp:1851611
* https://bugs.launchpad.net/kicad/+bug/1851611
2019-11-07 08:41:56 -08:00
Seth Hillbrand
6625d0721e
Implement Get/Set display options
...
The pointer passing for display options is deprecated. This removes the
excess casting as the EDA_FRAME didn't need the base call with no value.
All requests for display options are now returned const and are updated
with a Set() routine after modification.
In Gerbview, this resolves an issue where the display options were not
stored because it was receiving the NULL from EDA_FRAME.
2019-11-07 08:26:44 -08:00
Seth Hillbrand
42daf172fd
router: Keep meander placer world in base
...
m_world overloaded in pns_meander_placer and didn't get the correct
pointer in certain tune modes.
Fixes: lp:1851251
* https://bugs.launchpad.net/kicad/+bug/1851251
2019-11-04 09:11:19 -08:00
Seth Hillbrand
4178cf7f36
pcbnew: Add PadToDie length for tuning actions
...
This adds the pad to die parameter from each pad to the total line
length of the tuned line for comparison with desired.
Fixes: lp:1711541
* https://bugs.launchpad.net/kicad/+bug/1711541
2019-10-31 16:00:19 -07:00
Seth Hillbrand
4135f0c0e7
pcbnew: Don't duplicate tracks
...
Dragging in freeangle mode can be forced, in which case, we don't want
the extra line from the SHOVE element.
Fixes: lp:1845844
* https://bugs.launchpad.net/kicad/+bug/1845844
2019-10-30 10:44:33 -07:00
jean-pierre charras
1c2891e6d4
Fp editor: allow internal layers in footprint keep-out zones Especially: Enable one internal layer to manage keep-out areas only on internal layers Allowing one internal layer is a trick to manage these keep-out areas (visibility and selection) In fact this internal layer groups all internal layers enabled is these keep-out areas.
2019-10-29 11:24:57 +01:00
Seth Hillbrand
133772e964
pcbnew: Correct optimizer breakout calculation
...
The previous fix for optimizer breakout length calculation was providing
better scores to longer traces rather than longer breakouts as intended.
This limits the length scoring to breakout only.
2019-10-25 11:18:16 -07:00
Seth Hillbrand
07c8596084
pcbnew: Check all layers for routing snaps
...
Flipped footprint pads may report their "primary" layer as not the front
layer in high contrast. We need to check whether the board item for
snaps is visible on the active layers.
Fixes: lp:1847877
* https://bugs.launchpad.net/kicad/+bug/1847877
2019-10-15 09:44:16 -07:00
Seth Hillbrand
0f8a1c22ad
pcbnew: Snap during routing needs active parent
...
The router items may not yet have a board item parent. In this case,
the reference to the parent needs to be guarded before dereferencing.
Fixes: lp:1847717
* https://bugs.launchpad.net/kicad/+bug/1847717
2019-10-11 09:16:26 -07:00
Seth Hillbrand
cecfeea947
pcbnew: Remove snapping to hidden items
...
Items and layers that are hidden in the view should not be used as snap
points. This happens in multiple locations:
1) Grid Helper for normal tools
2) TOOL_BASE::snapToItem for router
Resolves KiPro Issue #116
Fixes: lp:1833128
* https://bugs.launchpad.net/kicad/+bug/1833128
2019-10-10 09:37:25 -07:00
Ian McInerney
58d4a8bb4a
pcbnew: Don't reinitialize the router tool in an action
...
Calling Init() in an action routine will reset the router
settings to the state they were in when first starting pcbnew.
The Init() function is automatically called when the tool is created.
Fixes: lp:1843810
* https://bugs.launchpad.net/kicad/+bug/1843810
2019-10-07 16:07:05 -04:00
Ian McInerney
0aa5424511
pcbnew: Switch over some drawing tools to use PrimeTool
...
Before, if the tools were activated from the context menu,
they would start drawing where the menu item was selected
instead of where the menu was opened.
2019-10-03 19:04:36 +01:00
Jeff Young
9a349065db
Better error messages for router.
2019-10-01 15:02:41 +01:00
Seth Hillbrand
e7c07501c5
Minor compile warning cleanup
2019-09-05 09:47:52 -07:00
Seth Hillbrand
c8a6878eb8
pcbnew: Allow tuning length to be longer than INT_MAX
...
The INT_MAX limit for most elements makes sense only for single-segment,
straight line elements. For elements that accumulate lengths, we should
utilize the long long int (64 bits) to allow for greater lengths.
Fixes: lp:1842367
* https://bugs.launchpad.net/kicad/+bug/1842367
2019-09-03 16:41:09 -07:00
Seth Hillbrand
03d5bf0df5
PNS: Check that we are optimizing a pad
...
Vias are also sent to breakout optimizer, so we need to check for the
solid cast before dereference.
Fixes: lp:1841057
* https://bugs.launchpad.net/kicad/+bug/1841057
2019-08-22 08:57:19 -07:00
Seth Hillbrand
06cb21cc47
pcbnew: Optimize pad connection revision
...
This modifies that logic for optimizing pad connections.
1) Custom pads now prefer the connections to their longer side. This is
particularly important to match the behavior in a rectangular pad
2) Costs for straight lines are non-zero. This favors fewer connections
3) Custom pad breakouts are at the polygon boundary rather than offset
by 0.1mm. This also matches the circular and rectangular paradigm.
4) Line Heads contained in the pad itself are not optimized. This
prevents escaping the pad unnecessarily
Fixes: lp:1824182
* https://bugs.launchpad.net/kicad/+bug/1824182
2019-08-20 19:35:26 -07:00
Seth Hillbrand
aa875e5830
PNS: Don't allow routing on hidden layers
...
If the layer is not shown, we should not be allowing it's items to be
selected and chosen as the start/end items in the router.
(cherry picked from commit fc1fb7a590
)
2019-08-15 12:40:05 -07:00
Seth Hillbrand
619c78622e
pcbnew: Initialize drag and clear links
...
Drag is used for multiple modes so should be initialized when starting.
The line that we generate however needs to be pristine in drag, so we
clear the links in the duplicate.
Fixes: lp:1839612
* https://bugs.launchpad.net/kicad/+bug/1839612
2019-08-12 15:32:16 -07:00