Commit Graph

7981 Commits

Author SHA1 Message Date
Jeff Young 2c5876ee8c Add more control over how corners are handled when inflating polygons. 2019-07-16 16:41:21 +01:00
Jeff Young 27aacb26f8 Cleanup. 2019-07-16 02:31:07 +01:00
Jeff Young ceb6a49f0c Attempt to fix double-selected radio button on GTK.
Fixes: lp:1836538
* https://bugs.launchpad.net/kicad/+bug/1836538
2019-07-16 02:23:38 +01:00
Jeff Young e816a0c29d Push Eeschema & PLEditor PICKER_TOOLs down into common.
Also implements a more robust push/pop tool strategy for pickers.
2019-07-16 00:44:01 +01:00
Jeff Young 58ca5b71a9 A more robust fix for 36f1d023f0.
This one also handles when the events get out-of-order due to them
starting out in the Simulation window and not getting dispatched until
the mouse goes over the Schematic window.

Fixes: lp:1835907
* https://bugs.launchpad.net/kicad/+bug/1835907

Fixes: lp:1836544
* https://bugs.launchpad.net/kicad/+bug/1836544
2019-07-15 14:15:24 +01:00
Jeff Young 6da11de5e0 Be more careful about thermal reliefs for pads on different layers.
Fixes: lp:1605049
* https://bugs.launchpad.net/kicad/+bug/1605049
2019-07-14 23:15:39 +01:00
Jeff Young a3c74051c2 Allow edits to self-intersecting polygons.
1) Intermediate states might be self-intersecting, and we shouldn't
be policing our users on what order to do things in
2) The polygon might already be self-intersecting, at which point we're
preventing the user from fixing it.

Also includes better const management for SHAPE_POLY_SET API.

Fixes: lp:1833831
* https://bugs.launchpad.net/kicad/+bug/1833831
2019-07-14 18:18:48 +01:00
Jeff Young fe188489c7 A better hack for the post-ProgressReporter-loss-of-focus issue. 2019-07-14 18:18:48 +01:00
Jeff Young 928d6c5dff Implement preserved-corners to prevent divots when filling adjacent zones.
Fixes: lp:1460787
* https://bugs.launchpad.net/kicad/+bug/1460787
2019-07-14 18:18:48 +01:00
Jeff Young 1a7cef2950 Improve performance, commenting and API of some polygon classes. 2019-07-14 10:39:38 +01:00
Jeff Young 560fda70a2 Update position before first mouse-move-event.
Fixes: lp:1780426
* https://bugs.launchpad.net/kicad/+bug/1780426
2019-07-14 10:39:38 +01:00
Jeff Young 1dbaa89f95 Fix a bug in tool activation/deactivation and another illegal static_cast.
Fixes: lp:1836419
* https://bugs.launchpad.net/kicad/+bug/1836419
2019-07-14 10:39:38 +01:00
Jeff Young 37af3adffb Add preference for flip axis.
Fixes: lp:1836267
* https://bugs.launchpad.net/kicad/+bug/1836267
2019-07-14 10:36:48 +01:00
Jeff Young a3855cb4f2 Allow thermal spokes to be same width as minimum width.
Also some changes for readability and clarity, both in the code
and in the Feature Constraints panel.

Fixes: lp:1835674
* https://bugs.launchpad.net/kicad/+bug/1835674
2019-07-14 10:36:48 +01:00
Jeff Young 2d17d2b91f Cleanup and commenting. 2019-07-14 10:36:48 +01:00
jean-pierre charras fc2379ca8a Fix some issues in .gbrjob file.
2 issues are fixed: a missing double quote, and a incorrect handling of unicode chars

Fixes: lp:1836448
https://bugs.launchpad.net/kicad/+bug/1836448
2019-07-14 10:23:45 +02:00
jean-pierre charras be5f3717c7 Fix minor wxWidgets alerts. 2019-07-13 18:32:18 +02:00
Seth Hillbrand f2f2b4bcf9 Explode/Combine in terms of visible elements
When generating a complex pad, this allows the user to combine with a
rotated pad and explode rotated pads without needing to rotate elements
to 0 orientation first.

Fixes: lp:1808137
* https://bugs.launchpad.net/kicad/+bug/1808137
2019-07-12 16:55:41 -07:00
Seth Hillbrand c86b4928a7 Fix assert in footprint editor
PCB_EDIT_FRAME does not return for footprint editor.  The
PCB_EDIT_BASE_FRAME is needed for common fns between pcbnew and modedit
2019-07-12 13:34:30 -07:00
Ian McInerney 39954b20fe pcbnew: Make the netlist class panel usable with a lot of classes
Fixes: lp:1826154
* https://bugs.launchpad.net/kicad/+bug/1826154
2019-07-12 10:22:59 -07:00
Jeff Young 20036f8105 Add FootprintExists() which can be more careful about FS differences.
(And in particular, MSW's case-insensitive FS.)

Fixes: lp:1835999
* https://bugs.launchpad.net/kicad/+bug/1835999
2019-07-11 23:00:01 +01:00
Jeff Young 6c9e34e799 Don't let visibility bit get nuked when updating effects.
Fixes: lp:1836183
* https://bugs.launchpad.net/kicad/+bug/1836183
2019-07-11 18:19:29 +01:00
Jeff Young 807b8d4cf1 Lower x (or y) value always defines "Start Point".
"End Point" is the other.  (The user doesn't care what the variable
names in the code are.)

Also re-lays-out the dialog for better comprehension.

Fixes: lp:1694964
* https://bugs.launchpad.net/kicad/+bug/1694964
2019-07-11 17:36:32 +01:00
Ian McInerney ff9d899ae0 pcbnew: Clean up warnings with unit handling in the DXF export 2019-07-10 12:21:01 -04:00
Jeff Young ecc5fc9894 Cleanup. 2019-07-10 01:38:02 +01:00
Jeff Young 13d61e4b2b Cleanup. 2019-07-10 01:14:21 +01:00
Jeff Young 483dc24e87 Homogenize selection tools around our HIG.
In particular make addative and exclusive-or selections work the
same way.

Also give Highlight Net a hotkey now that it can't use ctrl-click
anymore.
2019-07-09 21:59:46 +01:00
Jeff Young b0b9c5ab63 Fix copy/paste error. 2019-07-09 16:54:02 +01:00
Jeff Young 36f1d023f0 Make sure Push/PopTool() go in the right order.
Because the pickers are called with an Activate()/Wait() pair, any
usurping tool gets in between the picker handling the cancel (due
to activation) and the picker client doing a PopTool().  The new
tool is therefore pushed before the old tool is popped.

Fixes: lp:1835907
* https://bugs.launchpad.net/kicad/+bug/1835907
2019-07-09 15:03:23 +01:00
Jeff Young d7f3a38510 If we're plotting small drill marks then we need to plot the pad even if the hole is the same size.
Fixes: lp:1835617
* https://bugs.launchpad.net/kicad/+bug/1835617
2019-07-09 13:07:36 +01:00
Jeff Young 3a8f32c380 Convert ShowEEschema to an ACTION so it can get a hotkey assignment.
Fixes: lp:1686010
* https://bugs.launchpad.net/kicad/+bug/1686010
2019-07-09 00:43:41 +01:00
Jeff Young b8013648d2 Change behaviour of increase/decrease track width & via size when there's a selection.
They now modifiy the selection if it contains only tracks and/or vias,
and modify the current widths/sizes otherwise.

Fixes: lp:1814908
* https://bugs.launchpad.net/kicad/+bug/1814908
2019-07-08 22:18:25 +01:00
Jeff Young 183687c69e Cleanup and a big hack to prevent keyboard focus loss.
Fixes: lp:1810993
* https://bugs.launchpad.net/kicad/+bug/1810993
2019-07-08 20:45:42 +01:00
Jeff Young 772dff7a01 Removed post-page-settings ZoomFitToScreen() calls.
Fixes: lp:1834608
* https://bugs.launchpad.net/kicad/+bug/1834608
2019-07-08 00:06:28 +01:00
Jeff Young a11f3a0b80 Make <esc> unhighlight nets, but only after all tools have been cleared.
Also moves the Highlight Net hotkey from activating the tool to just doing
a one-shot highlight.

Fixes: lp:1835658
* https://bugs.launchpad.net/kicad/+bug/1835658
2019-07-08 00:02:25 +01:00
Jeff Young 986392d88e Update item at start of drag to erase original location.
Fixes: lp:1813038
* https://bugs.launchpad.net/kicad/+bug/1813038
2019-07-07 22:30:18 +01:00
jean-pierre charras a833aeeacb Pcbnew: cosmetic enhancement: add missing icons to 2 menuitems in "Route" menu 2019-07-07 18:12:04 +02:00
Jeff Young 70ca02537d Don't split track when via is placed at one of its ends.
Zero-length tracks are just a pain.

Fixes: lp:1813077
* https://bugs.launchpad.net/kicad/+bug/1813077
2019-07-06 22:54:31 +01:00
Jeff Young a991625f56 Don't refill zone from external change.
We may later add an Automatic Zone Fill option which would restore
this, but for now I'm turning it off to see if it fixes the crash
bug.

Fixes: lp:1834718
* https://bugs.launchpad.net/kicad/+bug/1834718
2019-07-06 22:38:25 +01:00
Jeff Young 174c276883 Expose TrackWidthNext/Prev and ViaSizeNext/Prev in hotkey list.
Fixes: lp:1835616
* https://bugs.launchpad.net/kicad/+bug/1835616
2019-07-06 20:47:39 +01:00
Dave Vandenbout 44734dc059 python: Return copy of netclasses not reference
Fix Board.GetAllNetClasses() so it no longer creates a duplicate of the Default netclass in the design rules net classes list.

Fixes: lp:1803623
* https://bugs.launchpad.net/kicad/+bug/1803623
2019-07-06 07:40:33 -07:00
Seth Hillbrand 3d8d852990 Fix board setup issue with reloading
Previous fix for the non-updated netclass pointers caused issues with
display of overlay view items and was bigger than needed to be.  Just
resetting the tools gets the pointers released.

Fixes: lp:1835533
* https://bugs.launchpad.net/kicad/+bug/1835533
2019-07-06 06:43:43 -07:00
Jeff Young 7ee6afeace Performance improvement for zone filling. 2019-07-06 00:04:54 +01:00
Jeff Young 50f6844e71 Move Zone Display hotkey because Z is already in use (reset grid origin).
Fixes: lp:1835471
* https://bugs.launchpad.net/kicad/+bug/1835471
2019-07-06 00:04:54 +01:00
Jeff Young 562ab0bdea Move layer defaults and diff-pair dimensions to board file. 2019-07-06 00:04:54 +01:00
Seth Hillbrand 09100100c9 pcbnew: Reload board after changing board paramters
The old board pointer maintains shared pointers to netclasses (among
other things) that do not get released by the
SynchronizeNetsAndClasses() call.  We reload the board to fully release
the pointers.

Fixes: lp:1835533
* https://bugs.launchpad.net/kicad/+bug/1835533
2019-07-05 13:50:29 -07:00
Jeff Young f20335cefe Apply fix from 5.1 branch.
Fixes: lp:1834111
* https://bugs.launchpad.net/kicad/+bug/1834111
2019-07-05 14:45:15 +01:00
Jeff Young a9c66e15ea Common-ize EE_ACTIONS::refreshPreview and use it after cursor actions.
Fixes: lp:1818667
* https://bugs.launchpad.net/kicad/+bug/1818667
2019-07-05 14:45:15 +01:00
Jeff Young 867585c1f2 Don't allow keepout zones to match no-net tracks.
Fixes: lp:1819250
* https://bugs.launchpad.net/kicad/+bug/1819250
2019-07-05 14:45:15 +01:00
Jeff Young bcd48d4bc2 Use common actions where possible. 2019-07-05 14:45:15 +01:00
jean-pierre charras becd6a6f9d Microwave tools: better tooltips 2019-07-04 11:28:41 +02:00
Jeff Young 1548dcfe8d Fix typo in Pad Enumeration tool.
Fixes: lp:1831950
* https://bugs.launchpad.net/kicad/+bug/1831950
2019-07-03 18:53:13 +01:00
Simon Richter c8c3e1f96a Fix build order for generated headers and sources
This changes make_lexer() so that it no longer generates a custom target
but instead attaches the generated files to an existing one (so the first
argument now is the name of an existing library or executable, and it needs
to come after the add_library/add_executable call).

The generated source is no longer listed in the project sources, as it is
added by the function. The files are generated in the build tree rather
than the source tree, and the directory is added to the include path for
the respective project as well as exported to projects linking against it.

Generated files in subdirectories are somewhat supported, but need to be
referenced with the same name as they were generated (i.e. including the
subdirectory name).

Fixes: lp:1831643
* https://bugs.launchpad.net/kicad/+bug/1831643

Fixes: lp:1832357
* https://bugs.launchpad.net/kicad/+bug/1832357

Fixes: lp:1833851
* https://bugs.launchpad.net/kicad/+bug/1833851
2019-07-03 09:36:40 -04:00
Jeff Young a2fe319b92 Fix bug introduced when edge-thickness adjustments were moved.
Fixes: lp:1835132
* https://bugs.launchpad.net/kicad/+bug/1835132
2019-07-03 12:12:00 +01:00
Jeff Young 0eed5175cc Fix crash in Pcbnew drawing tools.
Couple of typos: return !cancelled instead of cancel, and some breaks
on the wrong side of the braces.

Fixes: lp:1835172
* https://bugs.launchpad.net/kicad/+bug/1835172
2019-07-03 11:44:30 +01:00
Jeff Young d03041b565 Cleanup. 2019-07-02 21:36:42 +01:00
Seth Hillbrand 9460f207f5 Fix misc build warnings
This removes unused static function in page layout editor, unused
variable in pcb_painter and restors the gcc unitialized fix for
pcbnew's drawing_tool.
2019-07-02 10:32:49 -07:00
Jeff Young 1c30f3d9a9 Give up on KillFocus validation.
wxWidgets sends the KillFocus event before the Cancel button event,
and it sets the receiving-focus window pointer to NULL (so you can't
even check for it being the Cancel button.  Last time around (with
the UNIT_BINDER) I also tried a bunch of hacks for whether the window
pointer is NULL, etc., but they aren't discriminatory either.

Fixes: lp:1834975
* https://bugs.launchpad.net/kicad/+bug/1834975

Fixes: lp:1834966
* https://bugs.launchpad.net/kicad/+bug/1834966
2019-07-02 17:04:08 +01:00
Jeff Young da71a51029 Cleanup. 2019-07-02 00:48:05 +01:00
Jeff Young 29db6152b3 Only warn once in KillFocus for each error value in footprint name.
More than that just gets annoying, and there is at least one edge case
which throws us into an infinite loop if we don't have something to
break us out.

Fixes: lp:1834966
* https://bugs.launchpad.net/kicad/+bug/1834966
2019-07-02 00:47:52 +01:00
Jeff Young faa730dfb1 Fix highlight bug.
Fixes: lp:1834960
* https://bugs.launchpad.net/kicad/+bug/1834960
2019-07-01 22:15:25 +01:00
Jeff Young 9effd24f3a Allow move tool to run on top of other tools.
Fixes: lp:1784480
* https://bugs.launchpad.net/kicad/+bug/1784480
2019-07-01 22:15:25 +01:00
Jeff Young ad26ece8d4 Add Global Edit Text and Graphics Properties to Eeschema.
Fixes: lp:1801150
* https://bugs.launchpad.net/kicad/+bug/1801150
2019-07-01 22:15:25 +01:00
Seth Hillbrand 743c650129 Move zone refill to action
This unifies the zone refill across architecture into the tool-based
architecture.  Also provides ZONE_FILLER-based progress managment for
tools.

(cherry picked from commit be9cd98cb1)
2019-07-01 09:27:04 -07:00
jean-pierre charras 978c4fd7d3 Pcbnew, export_footprints_placefile.cpp: code refactor.
Make the data generation code separate from the dialog code.
The dialog itself does not include anymore the data generation code.

Non SMD footprints forced in list are now displayed in the dialog.
The attribute MOD_CMS is no longer silently modified (without undo command) by the dialog.
2019-06-30 18:27:12 +02:00
Seth Hillbrand 7297208119 Handle all non-length units
Statusbar length updates need to handle default with wxASSERT if there
is not a specific, handled unit.
2019-06-29 09:46:25 -07:00
Seth Hillbrand d650cca088 Enforcing rational limits on length tuner
The length tuning dialog needed validators on close to prevent negative
and percentages >100%

Fixes: lp:1834734
* https://bugs.launchpad.net/kicad/+bug/1834734

(cherry picked from commit 3974c6fd89)
2019-06-29 09:38:27 -07:00
Jeff Young a498d7e9c5 Try out a new arc-editing paradigm for LibEdit.
This is based on the notion that in Kicad the start and end-points
are far more important (as they usually connect to other segments)
than the center is.
2019-06-29 16:10:58 +01:00
jean-pierre charras bcf690f901 TRACKS_CLEANER algo to merge collinear track segments: some minor fixes. 2019-06-29 09:12:19 +02:00
Seth Hillbrand 3a94ccd6a3 pcbnew: Drop tracks not on copper
We do not allow non-copper routed tracks and they will break assumptions
elsewhere in the code.  We drop them in the beginning so that they are
not saved.

(cherry picked from commit cabfcbc73c)
2019-06-28 19:28:55 -07:00
jean-pierre charras c9ccd8a642 Fix broken TRACKS_CLEANER algo to merge collinear track segments. 2019-06-28 20:23:09 +02:00
jean-pierre charras 71aafb6eb3 Pcbnew, connectivity: fix incorrect detection of dangling track ends when a end is inside a zone.
This end was not detected as connected by the IsDangling method.
Fix incorrect cleaning of dangling tracks in track cleaner.
Remove also a dead code.
The merge co-linear track segments is still full bugged in track cleaner.
2019-06-28 15:25:50 +02:00
Jeff Young 3135334c0c Hook up zone-connection controls in Edit Footprint dialog.
Fixes: lp:1834629
* https://bugs.launchpad.net/kicad/+bug/1834629
2019-06-28 12:24:15 +01:00
Jeff Young 981072598b Overhaul cursor code for new tool/action framework.
Includes the addition of an onSetCursor() handler which must be called
from both the GAL canvas AND the GAL backend (at least on OSX) to prevent
cursor flickering between (for instance) pencil and arrow.

Also includes new architecture for point editors which allows them to
coordiate cursors with the editing tools (so we can switch to an arrow
when over a point).
2019-06-27 22:37:11 +01:00
Jeff Young 2f23aa9556 Implement a more robust tool stacking architecture.
We were running into various corner conditions where a tool's event
loop would exit while the tool was still active, or the tool would
get popped while we were still in the event loop.  (A lot of these
had to do with the POINT_EDITOR's, but not all of them.)

The new architecture:
1) tools always do a Push()/Pop()
2) everyone is responsible for their own pops; no more stack-clearing
on a cancel
3) CancelInteractive events go to all tools to facilitate (2)
2019-06-27 17:01:31 +01:00
Jeff Young e175eb25b8 Fix bug with accidental modification of legacy hotkey name. 2019-06-27 11:29:05 +01:00
Jeff Young 8efe8d1835 Set library selection when pre-loading the Footprint Viewer.
Fixes: lp:1826932
* https://bugs.launchpad.net/kicad/+bug/1826932
2019-06-27 00:40:36 +01:00
Jeff Young 2ad40ad10a Fix some misplaced parens.
Fixes: lp:1818449
* https://bugs.launchpad.net/kicad/+bug/1818449
2019-06-26 21:54:04 +01:00
Jeff Young fa84babefe Re-implement sch->pcb cross-probing using net highlighting architecture.
Fixes: lp:1827853
* https://bugs.launchpad.net/kicad/+bug/1827853
2019-06-26 21:54:03 +01:00
Jeff Young e785c140b9 Eradicate globals for PCB_GENERAL_SETTINGS.
Fixes: lp:1832896
* https://bugs.launchpad.net/kicad/+bug/1832896
2019-06-26 21:54:03 +01:00
Jeff Young 00cf8ba976 Fix rotated & offset pad thermal spoke geometry. 2019-06-26 00:04:35 +01:00
Jeff Young a39023ad22 Resolve() call missing from Route menu.
Fixes: lp:1834187
* https://bugs.launchpad.net/kicad/+bug/1834187
2019-06-25 21:31:20 +01:00
Jeff Young 107d206dba Back to the drawing board for zone filling.
This one doesn't cut any corners so should be "correct".  And it
turns out to be pretty fast.
2019-06-25 21:10:21 +01:00
Jeff Young 4eaba20cd3 Real-time highlighting for Pcbnew and ModEdit delete tools. 2019-06-25 21:10:21 +01:00
Tomasz Włostowski be42b80713 TRACKS_CLEANER: restart dangling track removal loop every time an item is removed
Fixes: lp:1823973
* https://bugs.launchpad.net/kicad/+bug/1823973
2019-06-25 21:40:30 +02:00
jean-pierre charras c1eee56785 Prepare changes to support a better board stack management in .gbrjob file.
In .gbrjob file, one can specify the thickness and color of some layers.
Currently, there is no way to enter these parameters.
This commit prepare a better support of .gbrjob files.
2019-06-25 18:39:11 +02:00
Wayne Stambaugh 288982b15d Symbol and footprint library table editor fix.
Prevent the symbol and footprint library table editors from substituting
the current project path (${KIPRJMOD}) when adding libraries to the global
library table.  This will almost assuredly fail when opening a different
project.  We still allow users to manually use ${KIPRJMOD} in global table
paths under the assumption that if they are typing this in then they most
likely understand environment variable substitution.

Fixes lp:1830694

https://bugs.launchpad.net/kicad/+bug/1830694
2019-06-25 08:36:32 -04:00
Jeff Young 7ce38ee6f8 Performance enhancements to zone filling & track DRC.
Significant improvement in fetch time for item clearances.  On large
boards with lots of nets, maybe 10% faster zone fills and about
2x speedup on track-to-track DRC.
2019-06-25 11:34:28 +01:00
Jeff Young d4054029cd Shrink/expand zone by minimum width only after doing all knockouts.
It's too complicated trying to keep everything smaller or larger by
half the pen width, and some things like spoke-end-detection need the
actual outline anyway.
2019-06-25 11:34:28 +01:00
Jeff Young f9702aab87 Immediate actions for PlEditor, PcbNew, etc. 2019-06-25 11:34:28 +01:00
Jeff Young f088d4d762 Add env-var setting to CommonSettingsChanged().
Fixes: lp:1804925
* https://bugs.launchpad.net/kicad/+bug/1804925
2019-06-25 11:34:28 +01:00
Jeff Young 3784950603 Added more sophisticated checking for thermal spoke connections.
And, again, some more performance optimizations to make up for it.
2019-06-25 11:34:28 +01:00
Jeff Young 49610085ea Don't try to show sub-dialog in OnActivate(). High Sierra asserts.
Fixes: lp:1832635
* https://bugs.launchpad.net/kicad/+bug/1832635
2019-06-25 11:34:28 +01:00
Jeff Young 0ed26e4e33 Fix some geometry error in thermal spoke calculations.
Also introduces some performance enhancements to make up for the
extra time spent in the calculations.
2019-06-25 11:34:28 +01:00
Jeff Young e5cb8a0310 Bug fixes for rotated pad thermal spokes. 2019-06-25 11:34:28 +01:00
Jeff Young 70e6d95c7f More zone fill performance enhancements.
Knocking out unconnected spokes turns out to be very expensive, so
keep them in a list and only apply them if they're connected.
2019-06-25 11:34:28 +01:00
Jeff Young 14986d1e0e Zone fill performance enhancements.
Batch up fast operations to reduce the number of slow operations
required.
2019-06-25 11:34:28 +01:00
Jeff Young 79cd457ba7 Implement thermal spokes for custom pad shapes.
The thermal spokes are anchored at the pad anchor.  They may or may
not make sense, depending on the pad shape.  It's up to the author
to move the anchor around as necessary or to not use thermals.
2019-06-25 11:34:28 +01:00
Jeff Young a19c668891 Add tooltip for local ratsnest tool. 2019-06-25 11:34:27 +01:00
Jeff Young f70ab6203b Make all inner layers available for hotkey assignments.
Fixes: lp:1787073
* https://bugs.launchpad.net/kicad/+bug/1787073
2019-06-25 11:34:27 +01:00