Commit Graph

8151 Commits

Author SHA1 Message Date
Jon Evans 7030c7d948 Don't show added nets multiple times during dry run update 2019-04-17 22:57:20 -04:00
Jon Evans 105825c058 Refactor Import Netlist to use the same codepath as Update PCB 2019-04-17 22:57:19 -04:00
jean-pierre charras c1c5afad67 fix in qfn_wizard.py 2019-04-17 18:02:22 +02:00
jean-pierre charras 68e6308066 Fix qfn_wizard.py wizard.
(a parameter controlling pad position offset was also used in pad size, that creating incorrect pad size).
2019-04-17 13:46:35 +02:00
jean-pierre charras acf6c0ae2c BOARD_NETLIST_UPDATER: fix 2 serious issues in dry run (memory leak and incorrect single pad nets deletion)
Single pad nets deletion in dry run was incorrect when a new footprint was added, because in dry run it is not actually added,
and the single pad nets deletion does not see these new pads, and can (incorrectly) delete some nets.
2019-04-17 13:39:55 +02:00
Jeff Young ecfa05e2ca Allow adding symbols/footprints from editors and browsers.
This was always possible from modal browsers and from the footprint
editor, but it's now also possible from non-modal browsers and the
symbol editor.

Fixes: lp:920380
* https://bugs.launchpad.net/kicad/+bug/920380
2019-04-16 16:20:51 +01:00
Jeff Young 32c86a4ca4 Move place symbol to modern toolset. 2019-04-16 16:20:51 +01:00
jean-pierre charras a07caac85a Pcbnew, Netlist inspector: fixes and enhancements. 2019-04-15 10:10:51 +02:00
Jeff Young ef3f773f84 Code formatting cleanup. 2019-04-14 23:13:46 +01:00
Jeff Young d5f136cd7e Polish export-related changes to List Nets Dialog. 2019-04-14 22:29:52 +01:00
Andrey Fedorushkov dacab4abe0 pcbnew: add tracks length and export netlist to file in netlist inspector 2019-04-14 20:39:29 +01:00
Jon Evans 1d2db311b2 Set new module parent early enough to allow pad clearance to be shown
Fixes: lp:1824587
* https://bugs.launchpad.net/kicad/+bug/1824587
2019-04-14 14:25:38 -04:00
Jeff Young b63fab92cf Move Eeschema net highlighting to modern toolset. 2019-04-14 12:10:48 +01:00
Jeff Young 94a948fdd1 Move grid selection for both Eeschema and Pcbnew to COMMON_TOOLS. 2019-04-13 18:43:35 +01:00
Jeff Young fc7f5630c7 Move eeschema zoom operations to modern toolset. 2019-04-13 18:43:26 +01:00
Jon Evans dec5d80180 Veto mouse warping from DRC dialog
Fixes: lp:1824630
* https://bugs.launchpad.net/kicad/+bug/1824630
2019-04-13 11:23:57 -04:00
jean-pierre charras 2529346940 Some fixes for I18N. Mainly do not translate debug messages or strings giving only a print format (like "%d"). 2019-04-13 10:12:24 +02:00
Jeff Young dae41b7460 Remove legacy segment-based zones.
Give the user the option of cancelling a file open if there are
segment zones; otherwise they're converted to polygon fills.

Fixes: lp:1823087
* https://bugs.launchpad.net/kicad/+bug/1823087
2019-04-12 20:19:23 +01:00
John Beard ab2281d26f GAL opts: move config reading into GAL_DISPLAY_OPTIONS
Move repeated GAL config reading routines into GAL_DISPLAY_OPTIONS.
THe app-level config is in here already, do the same for the
common config.

This means that the configs are loaded consistently, which fixes
the symbol-chooser preview window, which previously didn't use the
same config routine as other GAL canvases.

Future work could move these functions to free functions that
act on the public interface of GAL_DISPLAY_OPTIONS to avoid
GAL_DISPLAY_OPTIONS having to know about wxConfig and wxWindow.

Fixes: lp:1824524
* https://bugs.launchpad.net/kicad/+bug/1824524
2019-04-12 16:08:11 +01:00
Jon Evans 3d9b5daf9c Improve selection behavior of DRC markers in DRC dialog list
Fixes: lp:1813373
* https://bugs.launchpad.net/kicad/+bug/1813373
2019-04-12 11:01:38 -04:00
jean-pierre charras c162ff9076 Curved airwires: set the default to straight lines (i.e. the legacy behavior)
Add also missing comments.
2019-04-12 14:17:55 +02:00
Jon Evans 69a66fc826 Fix polarity of curved ratlines button 2019-04-11 21:49:45 -04:00
Jeff Young 0021ecf51e Don't double-escape netnames.
Netnames in wxChoice or wxListBox are already in internal format
and don't need escaping again.

Fixes: lp:1823863
* https://bugs.launchpad.net/kicad/+bug/1823863
2019-04-12 00:28:58 +01:00
Jeff Young 76e0622222 Redraw and Position Relative can't share the same hotkey. 2019-04-12 00:28:58 +01:00
Jeff Young 8ae0579436 Reorder global edit dialogs for better comprehension.
Fixes: lp:1818087
* https://bugs.launchpad.net/kicad/+bug/1818087
2019-04-12 00:28:58 +01:00
MaPePeR e7d32c54b9 pcbnew: Draw Ratsnest with arcs to avoid overlap
Adds a toggle button that allows switching between straight lines and
curves for the ratsnest lines.

Fixes: lp:1766597
* https://bugs.launchpad.net/kicad/+bug/1766597
2019-04-12 00:28:58 +01:00
Jeff Young 3c11b89e4c Hook up refresh buttons to library tree synchronisation.
Fixes: lp:1820057
* https://bugs.launchpad.net/kicad/+bug/1820057
2019-04-11 19:45:10 +01:00
John Beard 17e88d0944 Pcbnew: FOOTPRINT_PREVIEW_PANEL passes reference to local
Previously, the GAL_DISPLAY_OPTIONS object in FOOTPRINT_PREVIEW_PANEL::New
was passed by reference in the ctor, down to EDA_DRAW_PANEL_GAL, which stored
it as a reference. The object in New() then goes out of scope, so the
referencing panel outlives the options.

Fix this by making a copy in a std::unique_ptr of the options, and giving
ownership to the panel.

There is another issue here: when the Pcbnew options are copies, the
OBSERVABLE subscriber list is copied too. This means if the panel called
NotifyChanged() on the options, Pcbnew would get updates, even though a copy
of the options changed. However, the panel doesn't change the options or
notify, so it's OK for now.
2019-04-11 17:01:23 +01:00
jean-pierre charras 0fae86b1ba Pcbnew: suppress incorrect wx alert when opening the plot dialog from File/Plot menu 2019-04-11 17:36:51 +02:00
Jeff Young 2144c6c97d Save a bit of space in the copper zone dialog. 2019-04-10 18:12:14 +01:00
jean-pierre charras aa53b5508e Zone filler: fix missing calculation of filled polygons when fill mode is ZFM::SEGMENTS 2019-04-10 17:49:40 +02:00
Seth Hillbrand 7cf394e34f pcbnew: Handle missing footprint wizards
When we do not have any footprint wizards to display, we cannot select
the grid rows.

Fixes: lp:1823608
* https://bugs.launchpad.net/kicad/+bug/1823608
2019-04-09 11:54:01 -07:00
Wayne Stambaugh f056777e6a Pcbnew: fix Hyperlynx export reporting string formatting. 2019-04-09 13:56:36 -04:00
jean-pierre charras 37ae0bf809 Pcbnew: fix a serious issue in ZONE_FILLER. 2019-04-09 11:38:18 +02:00
jean-pierre charras 0b33df8831 Pcbnew,DIALOG_SELECT_NET_FROM_LIST: fix a crash and the not working net selection.
It was due to changes in code, and related to escaping the '/' in net labels.
2019-04-08 15:36:55 +02:00
John Beard 124dd5e59a 3D viewer: use hi-DPI settings for canvases
The 3D viewer also uses OpenGL, so it also needs to
adjust based on DPI scale factors.

This patch moves the 3D viewer common config code solely
within the 3D viewer, and adds handling of the DPI scale. This
also avoids duplicated logic in PCB_BASE_FRAME::CommonSettingsChanged.

For now, as EDA_3D_VIEWER is not included in the Kiway settings
dispatch, still manually invoke the settings update from
PCB_BASE_FRAME.

The PANEL_3D_PREV gets a similar function to read the config, but
it doesn't have a listener for the update, so it's set just once
at dialog init, just like the existing pan settings.

Fixes: lp:1823681
* https://bugs.launchpad.net/kicad/+bug/1823681
2019-04-08 14:29:15 +01:00
Jeff Young d361e68d0e Condense the DRC dialog a bit.
The messages title doesn't really provide useful info anyway.
2019-04-08 13:26:26 +01:00
Jeff Young a1c162e59f Reimplement footprint checking on top of DRC architecture.
This allows Import Netlist and Update PCB from Schematic to
share the same checking code, and expose it through the DRC
dialog.

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

Fixes: lp:1809293
* https://bugs.launchpad.net/kicad/+bug/1809293
2019-04-08 13:26:17 +01:00
Jeff Young 77f15eeeaf Support synchronous messaging over KIWAY EXPRESS.
This allows us to make the various netlist and pcb update routines
more atomic and less reliant on carefully sequenced asynchronous
messages.

This is also a prelude to adding support for footprint testing
without a netlist.
2019-04-08 13:26:09 +01:00
Jeff Young 52e3a1d7c4 Trim zone fills to board outline.
Fixes: lp:1820306
* https://bugs.launchpad.net/kicad/+bug/1820306
2019-04-08 13:10:29 +01:00
Seth Hillbrand cf63ae7ae2 pcbnew: Show clearance when editing tracks
When requested by display options, we should show the track clearance
when dragging tracks.

Fixes: lp:1818343
* https://bugs.launchpad.net/kicad/+bug/1818343
2019-04-07 21:25:28 -07:00
Seth Hillbrand c8118e3ce4 pcbnew: Allow click+drag of tracks
This behavior existed in 5.0.x but did not properly exit the edit tool
in 5.1.  This removes stops the edit tool when we begin dragging a track
using the interactive router.

Fixes: lp:1820312
* https://bugs.launchpad.net/kicad/+bug/1820312
2019-04-07 20:59:06 -07:00
Tomasz Włostowski e5753b79d4 pcbnew: Hyperlynx Exporter - initial version 2019-04-08 02:56:02 +02:00
Jeff Young a81512ca96 Adjust justified text for rotation.
Fixes: lp:1823090
* https://bugs.launchpad.net/kicad/+bug/1823090
2019-04-07 22:17:59 +01:00
Michael Kavanagh 27e6f5b9e8 Change "Switch track width to previous" default hotkey from Ctrl+W to Shift+W
Tiny improvement in consistency.

Fixes lp:1785842
https://bugs.launchpad.net/kicad/+bug/1785842
2019-04-07 10:50:59 -07:00
Seth Hillbrand a300ae105d pcbnew: Freeze the netclasses dialog on init
Prevents the size events from firing on Mac when we set up the netclass
panel

Fixes: lp:1819426
* https://bugs.launchpad.net/kicad/+bug/1819426
2019-04-07 07:07:55 -07:00
Seth Hillbrand 24bf838392 pcbnew: Allow arc editing via midpoint
This permits changing the radius of the arc by adjusting the center
point of the arc.  The arc end points are fixed in this operation.
2019-04-07 06:50:25 -07:00
Jeff Young 4a9f82109a Uniformly quote strings which may have user content.
Fixes: lp:1655193
* https://bugs.launchpad.net/kicad/+bug/1655193
2019-04-07 00:24:10 +01:00
Jeff Young 684bb62fd8 Escape slashes in labels and netnames.
Also re-allows spaces, as they can already come in through sheet
names.

Fixes: lp:1798621
* https://bugs.launchpad.net/kicad/+bug/1798621
2019-04-07 00:24:10 +01:00
Jeff Young 97063440bb Adjust left- or right-justified text for mirroring. 2019-04-07 00:24:10 +01:00
Jeff Young 1ae47b6069 Implement a copper-to-edge-clearance setting.
For legacy boards, the setting is picked up from the board outline
thickness.  If the board outline has mixed thicknesses, then the
max is used and a warning is displayed.

Fixes: lp:1797787
* https://bugs.launchpad.net/kicad/+bug/1797787
2019-04-05 22:18:44 +01:00
Wayne Stambaugh b6a0bf1142 Minor drill file dialog improvements. 2019-04-05 16:49:08 -04:00
Wayne Stambaugh dfee7bddd3 Minor footprint position dialog improvements. 2019-04-05 16:15:16 -04:00
Jeff Young 87f303319c Implement a dry run for Cleanup Tracks and Vias.
Uses the DRC architecture to support inspection of the changes to
be made (right click on items, hover over them in the menu to
highlight them on the board).

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

Fixes: lp:1809474
* https://bugs.launchpad.net/kicad/+bug/1809474
2019-04-05 18:52:51 +01:00
Jeff Young e563184eac Add Gerbers to Fabrication Outputs menu.
Fixes: lp:1817124
* https://bugs.launchpad.net/kicad/+bug/1817124
2019-04-05 16:12:45 +01:00
Jeff Young ea43866563 Move legacy netlist read/write to import/export.
Fixes: lp:1610529
* https://bugs.launchpad.net/kicad/+bug/1610529
2019-04-05 16:11:15 +01:00
Jeff Young 2aad4a5e57 Remove dead code from removal of eeschema legacy canvas. 2019-04-05 15:54:31 +01:00
jean-pierre charras 0aa8458d04 DIALOG_PAD_PROPERTIES: Fix incorrect calculation of Round Rect Radius Ratio, when inches are selected.
Fixes: lp:1822720
https://bugs.launchpad.net/kicad/+bug/1822720
2019-04-04 15:40:29 +02:00
jean-pierre charras de4b2dea77 Pcbnew: DIALOG_IMPORT_GFX_BASE: fix a minor wxWidgets alert. 2019-04-04 13:46:09 +02:00
Seth Hillbrand ce254d1061 pcbnew: Allow Missing legacy option
LEGACY is disabled for GTK3, so we may not find the menu item

Fixes: lp:1822877
* https://bugs.launchpad.net/kicad/+bug/1822877
2019-04-03 15:54:54 -07:00
Jon Evans a6a6785316 Fix a wxString reference warning 2019-04-03 16:28:23 -04:00
Jeff Young d8cc2f8280 More cleanup from non-reference return from GetText(). 2019-04-03 19:35:25 +01:00
Jeff Young d90d0780ae Fix some fall-out from the non-reference GetText(). 2019-04-03 19:14:45 +01:00
Jeff Young 77284e82c8 Replace switch-to-non-copper-layer for DIMENSION and POLYGON.
These still aren't handled by DRC.

Fixes: lp:1796500
* https://bugs.launchpad.net/kicad/+bug/1796500
2019-04-03 19:14:45 +01:00
Wayne Stambaugh 75366bce74 Remove debugging code added in commit d2cb0ca7. 2019-04-03 12:19:50 -04:00
Wayne Stambaugh 120ab06db4 Pcbnew: fix DXF import line width bug.
There is a circular dependency between the GRAPHICS_IMPORTER object and
the GRAPHICS_IMPORT_PLUGIN object which makes sharing the settings in
the GRAPHICS_IMPORTER unwieldy.  This fix is a ugly hack that resolves
the issue.  The underlying issue will require some major refactoring.

Fixes lp:1821234

https://bugs.launchpad.net/kicad/+bug/1821234
2019-04-03 11:29:17 -04:00
Wayne Stambaugh d2cb0ca75f Pcbnew: fix import graphics dialog issues.
Improve padding, spacing and alignment of dialog layout.

Fix title capitalization.

Make file dialog wildcard string translatable.

Remove fixed initial dialog size to allow sizers to work their magic.

Replace OK button event handler with TransferDataFromWindow.

Remember last line width units between dialog instances and sessions.

Save configuration file settings in a separate group and remove GfxImport
prefix from the entry names.

Add fencing to dialog header file to prevent nested includes.

Fixes lp:1822568

https://bugs.launchpad.net/kicad/+bug/1822568
2019-04-03 09:57:31 -04:00
Jeff Young 920d9e3d46 Don't switch to non-copper layer when drawing text & graphics.
We now allow these items on copper layers (and do the necessary
DRC, etc.)

Fixes: lp:1796500
* https://bugs.launchpad.net/kicad/+bug/1796500
2019-04-03 10:18:11 +01:00
Jeff Young ca25f352ce Make Footprint Editor save command context-sensitive.
Fixes: lp:1795961
* https://bugs.launchpad.net/kicad/+bug/1795961
2019-04-03 10:18:11 +01:00
Seth Hillbrand 7ee12d674e pcbnew: Clear items before deleting vertex
Reverting changes causes the item to become invalid.  This can cause
issues when we have dangling pointers for the VIEW routines left over.
Until we implement a method of passing the reverted element back up to
the calling routine, we need to remove the selection for each Revert()
call.

Fixes: lp:1821909
* https://bugs.launchpad.net/kicad/+bug/1821909
2019-04-02 13:15:10 -07:00
Michael Kavanagh b0674b8802 Add Ctrl+, hotkey to preferences dialog
Also change interactive router settings from Ctrl+, to Ctrl+Shift+,
2019-04-02 12:57:27 -04:00
Seth Hillbrand 940aef77af pcbnew: Update points before refresh
When removing a point from the polygon, the vertex is removed before it
is tested for validity.  If it fails validation, the edit is reverted
and the point count doesn't change, so the view update only modifies the
existing points.  But the revert may also have changed the shared
pointer to the point array, invalidating the view's copy.

Fixes: lp:1821909
* https://bugs.launchpad.net/kicad/+bug/1821909
2019-04-02 09:55:28 -07:00
Seth Hillbrand 32e82f8d87 Include zone include for zone_settings.cpp 2019-04-02 09:55:28 -07:00
jean-pierre charras abc605fcfa fix a compil warning.
Fix a few comments.
2019-04-02 09:05:42 +02:00
Seth Hillbrand 428e7a900b pcbnew: Prevent aux axis after-image
Grid helper in the router tool is persistent, so remember to turn off
the aux axes after setting.

Fixes: lp:1822577
* https://bugs.launchpad.net/kicad/+bug/1822577
2019-04-01 14:23:46 -07:00
Seth Hillbrand 6f4d1345f3 pcbnew: Handle old stable translated layers
This inserts a translation map in the layer names so that the old stable
files with Italian/French layer names get updated to the standard
English layer names (instead of not opening).

Fixes: lp:1370575
* https://bugs.launchpad.net/kicad/+bug/1370575
2019-04-01 13:54:25 -07:00
Seth Hillbrand 5eb2a33498 pcbnew: Ensure DRC circles have at least 4 points
This prevents invalid outline errors for small circles.

Fixes: lp:1822641
* https://bugs.launchpad.net/kicad/+bug/1822641
2019-04-01 11:47:58 -07:00
Jeff Young 33e594e63e Update description when tree item is in editor.
Fixes: lp:1820298
* https://bugs.launchpad.net/kicad/+bug/1820298
2019-04-01 13:23:37 +01:00
Jeff Young a8b8c73ab8 Set initial focus to track width / via size.
Fixes: lp:1822177
* https://bugs.launchpad.net/kicad/+bug/1822177
2019-04-01 13:23:37 +01:00
Jeff Young 8b2b06c926 Allow save after importing footprint.
Fixes: lp:1819777
* https://bugs.launchpad.net/kicad/+bug/1819777
2019-04-01 13:23:37 +01:00
Jeff Young 3da5396c8d Fixes for importing board setup properties.
Save/restore default netclass.
Read layers back in with correct syntax ('.' between keyword and layer name).
Write layers to project file.
Read/write layer enablement bits.
Don't set solder paste margin min to 0 (most of them are negative).

Fixes: lp:1811990
* https://bugs.launchpad.net/kicad/+bug/1811990
2019-04-01 13:23:37 +01:00
jean-pierre charras 9d97c053b4 Pcbnew: Graphic polygon items are now drawn in sketch mode when the sketch mode is selected. 2019-04-01 12:50:47 +02:00
Jon Evans 4d10183e78 Try harder to reassign copper zones on netlist import 2019-03-31 19:56:28 -04:00
Michael Kavanagh a611269975 Read Footprint Library Browser grid settings from Footprint Editor.
Implements commit 3a0dbf48c8 for Footprint Library Browser/Editor.

Fixes: lp:1822401
https://bugs.launchpad.net/kicad/+bug/1822401
2019-03-31 07:00:45 -07:00
jean-pierre charras d29ee13fda Due to new features (hatched zones, chamfered round rect pads) set SEXPR_BOARD_FILE_VERSION to 20190331 2019-03-31 08:46:36 +02:00
jean-pierre charras 7170720f3c Allow hatch pattern in filled zones
the filled areas can use a hatch pattern (crossing lines) using square holes.
The zone filler removes too small holes (truncated holes) from hatch pattern.
It avoid to create small holes when a hole pattern is truncated by the filled area base shape.
2019-03-31 08:21:40 +02:00
John Beard d6b8e9e037 Pcbnew: Improve tab traversal in text properties dialog
Tab through the grid vertically, then horizontally, as the fields
are laid out with "related" fields (like the co-ords) vertically.

Also neaten headers.

Fixes: lp:1821887
* https://bugs.launchpad.net/kicad/+bug/1821887
2019-03-27 13:56:03 +00:00
John Beard b7017167f0 Pcbnew: Align right margins in text properties dialog 2019-03-27 13:56:03 +00:00
John Beard dd3252445d Pcbnew: update text properties dialog wxFB version
No actual changes, but this keeps the diffs clean(er).
2019-03-27 13:56:03 +00:00
Michael Kavanagh bbcea3c98d Fix mnemonic typo in pcbnew menubar 2019-03-26 19:10:01 -04:00
jean-pierre charras fdfe5eabfb Fix incorrect detection of filled zones changes in DRC check.
Commit 6006703798 fixed a crash but broke the filled zones changes detection.
Filled zones were always seen as not up to date due to the fact the filled areas were cleared too early.

The up to date detection is also optimized: the old filled polygons are no longer stored.
Instead of, the MD5_HASH is calculated and stored before clearing the filled polygons.
2019-03-21 15:27:05 +01:00
jean-pierre charras 7c04b3dbeb Drc dialog: make track to copper zones test optional, because it can be really very time consuming 2019-03-19 18:18:20 +01:00
Seth Hillbrand 078320e2fb Unify and correct Autosave functions
Autosave was not working correctly, partly due to different
implementations in eeschema and pcbnew and partly due to a mistaken
refactor at some point during v5 development.  This unifies the expected
autosave prefix to _autosave- for both pcbnew and eeschema.  It also
unifies the expected suffix for the backup files to -bak.

Fixes: lp:1820433
* https://bugs.launchpad.net/kicad/+bug/1820433
2019-03-18 10:25:26 -07:00
jean-pierre charras b558366a4e Pcbnew: disable commit 3692c511 on non Windows platforms
A zone refill display progress bar is shown when deselecting the zone after geometry changes.
However, on Linux, there are some artifact between the progress bar refresh and the board view refresh:
the filled areas are incorrectly shown: the insulated islands remain displayed,
although they are removed from the actual filled areas list
So it is disabled until a fix is found.
2019-03-17 08:31:00 +01:00
Seth Hillbrand 0de25e557b pcbnew: Adjust drag snapping to avoid start
When dragging, you will seldom want to snap to the original item.  This
commit prevents the "size of track" snap to the original item and
replaces it with an auxilary grid origin for the snap.  This means
effectively that the snap will happen to grid for the original item
unless the cursor is closer to the original item line than it is to the
grid crossing.

Fixes: lp:1820248
* https://bugs.launchpad.net/kicad/+bug/1820248
2019-03-16 20:37:14 -07:00
Seth Hillbrand f96d16eba3 Restore LINK_MAP linker options
Removing invalid TO_LINKER missed a few segments where it was used.
This fixes the ability to enable link maps
2019-03-16 20:37:14 -07:00
Wayne Stambaugh 59d9a9f454 Minor board editor menu fixes.
Correct menu string capitalization.

Remove duplicate mnemonic characters.

Fixes lp:1818906

https://bugs.launchpad.net/kicad/+bug/1818906
2019-03-16 10:36:22 -04:00
jean-pierre charras 353d9d7c9e Pcbnew, Zone refill: avoid useless refilling, when zone parameters are not modified.
Previously, in many cases the selected zone was refilled on exit selection, even if the zone was not modified.
This is annoying, because the zone fill can be really time consuming, and cannot be called without a good reason.
Now the refilling is made only if a zone parameter is actually modified.
2019-03-14 17:33:25 +01:00
Seth Hillbrand ec24981cc8 pcbnew: Don't refresh S_CURVE in bbox()
The bounding box calculation needs to be fast and is threaded in many
places in pcbnew.  We cannot invalidate items (the function is const but
this wasn't caught at compile-time for some reason) when getting the
bbox. This shouldn't be an issue as the m_BezierPoints is rebuilt each
time the curve is updated, so rebuilding during the bbox seems extra.

Fixes: lp:1819984
* https://bugs.launchpad.net/kicad/+bug/1819984
2019-03-14 05:47:05 -07:00
jean-pierre charras 3692c511d0 Zone fill: display progress bar when refilling a zone after edition.
Previously, refilling a zone after edition was made silently,
thus creating not understandable but very noticeable freeze time for complex zones.
2019-03-14 10:18:50 +01:00
jean-pierre charras 23086deccd Pcbnew fix: chamfered corners settings not copied with copy/paste pad properties
Fixes: lp:1819595
https://bugs.launchpad.net/kicad/+bug/1819595
2019-03-12 11:28:07 +01:00
Seth Hillbrand 6006703798 pcbnew: Remove fills prior to updates
Removing existing fills will prevent re-drawing invalid polygons before
they are ready.  This seems to happen on Macs more easily due to redraw
timing.

Fixes: lp:1819553
* https://bugs.launchpad.net/kicad/+bug/1819553
2019-03-11 16:25:43 -07:00
jean-pierre charras 80cf4ec5cb Add comments about SVG import. 2019-03-11 19:25:52 +01:00
jean-pierre charras 61567d3917 Pcbnew: Enable SVG import in DIALOG_IMPORT_GFX. 2019-03-11 18:30:59 +01:00
jean-pierre charras d259459a14 Pcbnew: add a new primitive pad shape: chamfered round rect pad.
Allows 0 to 4 chamfered corners, not only one.

A custom shape allow this kind of shape. However because it is a primitive,
it is easier to edit and it support thermal reliefs.
2019-03-11 10:26:15 +01:00
jean-pierre charras b9944e2c06 Thermal reliefs: fix a corner case that wrongly removes a stub in a thermal shape.
This was due to the stub removal tests if a stub end is outside a solid area to remove it.
There is a corner case: is the stub end is exactly on a solid area outline extra segment
created by Fracture() used in calculations.

The stub removal tests are now made before fracturing.

Fixes: lp:1819317
https://bugs.launchpad.net/kicad/+bug/1819317
2019-03-10 19:14:53 +01:00
John Beard 26d04269ac Pcbnew: disable module numbering in pcbnew arrays
The module refdes always increment by one. This is problematic
for two reasons:

* It doesn't work when more than one FP is selected (say you have
  C1 and C2, you get C1, C2, C2, C3)
* It messes with simple panellisations

The 5.0.x behaviour is to not renumber in Pcbnew, so revert to
that behaviour.

Better refdes incrementation can come post 5.1, as this will need
new strings and UI.

Fixes: lp:1819106
* https://bugs.launchpad.net/kicad/+bug/1819106
2019-03-08 10:34:43 +00:00
John Beard b6916c490c Pcbnew: allow tab traversal of footprint orientation text control
Disable the text update event for the orientation cutom value field before
updating it when the radio buttons are selected. This allows to use the
conventional EVT_TEXT handler, rather than KEYDOWN, which has two effects:

* Tabbing though the dialog no longer sets custom orientation
* Click-driven clipboard actions trigger the update correctly.

Introduce a helper function in validators.h to assist in updating
validated fields without triggering further events.

Fixes: lp:1819006
* https://bugs.launchpad.net/kicad/+bug/1819006
2019-03-07 20:27:04 +00:00
John Beard 4574349539 UI: Automatic wxFB changes in pcbnew edit footprint dialog
Commit automatic changes to keep diffs clean when real changes are made.
2019-03-07 20:27:04 +00:00
jean-pierre charras 5eee88b78a Pcbnew, Draw zones in GAL mode: fix missing initialization of line color.
It is noticeable only in printing mode.

Fixes: lp:1818971
https://bugs.launchpad.net/kicad/+bug/1818971
2019-03-07 21:09:03 +01:00
jean-pierre charras 26acd39129 Fix a few Coverity warnings. 2019-03-07 20:01:47 +01:00
Seth Hillbrand 523b37d9ae pcbenw: Clear contours before regenerating in DRC
When checking for closed outlines, we generate a board area using the
pcb structure.  We now also check for overlapping outlines due to
lp:1818163 However, the DRC maintained its previous outline before
generating the new one, causing an overlap error.

This regenerates the board outline from zero for each DRC run.

Fixes: lp:1819012
* https://bugs.launchpad.net/kicad/+bug/1819012
2019-03-07 09:45:54 -08:00
Seth Hillbrand 5ba2a08366 pcbnew: Set filename in Page Layout template
pcbnew refreshes the viewItem for the worksheet multiple times.  This
requires setting the filename to get parameters displayed on the
worksheet correctly.

Fixes: lp:1819000
* https://bugs.launchpad.net/kicad/+bug/1819000
2019-03-07 06:01:53 -08:00
jean-pierre charras 200ff1cda6 Pcbnew: Fix incorrect polygonal shape of thermal reliefs of rect pads.
Depending on thermal reliefs size, the polygons could be self intersecting,
and these self intersecting polygons are unexpected in zone calculations.
Other fix: the width of thermal stubs is clamped to the size of pads.
Previously, a bug in clamping calculations prevents constraining thermal stubs width.

Fixes: lp:1818752
https://bugs.launchpad.net/kicad/+bug/1818752
2019-03-07 14:31:12 +01:00
Wayne Stambaugh 4612175da2 Pcbnew: better fix for dialog default button handler issues.
Use DIALOG_SHIM::SetInitialFocus() to fix default button handler issue
on all platforms.  Commit cabc33b4 only fixed the problem on windows.
2019-03-04 15:30:32 -05:00
Seth Hillbrand 3dfa57fe1d pcbnew: Clear highlight cross-probe
When highlighting a new net, clear the Eeschema highlight before
selecting items

Fixes: lp:1815147
* https://bugs.launchpad.net/kicad/+bug/1815147
2019-03-04 12:00:59 -08:00
Tomasz Włostowski 92e2aa31a9 pcbnew: router: fix non-45 degree tail merge in LINE_PLACER
Fixes: lp:1817795
* https://bugs.launchpad.net/kicad/+bug/1817795
2019-03-04 18:33:10 +01:00
Wayne Stambaugh cabc33b4cd Pcbnew: fix dialog default button handler issues.
Set the focus to some control in the copper zone, non-copper zone, and
keep out zone dialogs required for the default button action to work
properly.  This only seem to affect windows dialogs.

Fixes lp:1818397

https://bugs.launchpad.net/kicad/+bug/1818397
2019-03-04 11:34:04 -05:00
Jeff Young cedef13bb1 Enable default OK button.
Fixes: lp:1818397
* https://bugs.launchpad.net/kicad/+bug/1818397
2019-03-04 12:06:40 +00:00
Jeff Young 69f003ba4a Remove previous cell selection fixes in favour of slow-click hack.
wxWidgets has several bugs that result in cell editors being closed
right after they're opened.  There are two wxWidgets hacks to
partially address this: the SetInSetFocus() hack, and a slow-click
hack.  We used to try and work-around these bugs ourselves for
single-click access, but this changelist moves those over to
wxWidget's slow-click hack.

Fixes: lp:1817965
* https://bugs.launchpad.net/kicad/+bug/1817965
2019-03-04 11:09:33 +00:00
jean-pierre charras 643d884fde Pcbnew: fix issue in legacy canvas when dragging a footprint (connectivity not updated)
Fixes: lp:1818388
https://bugs.launchpad.net/kicad/+bug/1818388
2019-03-03 19:11:25 +01:00
Wayne Stambaugh 8d26b07f67 Fix potential string iterator issue.
Added checks to StrCmpNum() function in common/sting.cpp to prevent
iterating past the end of the sting.  Also removed length of string
parameter since it did not seem to be used anywhere.

Fixes lp:1818157

https://bugs.launchpad.net/kicad/+bug/1818157
2019-03-02 08:20:53 -05:00
Seth Hillbrand 40309a17ef pcbnew: Check exact overlapping polygons
Checks for polygon collisions in the outline when the polygon contains
two or more segments that exactly overlap.  This also places the DRC
marker at the location where the collision happens.

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

Fixes: lp:1818218
* https://bugs.launchpad.net/kicad/+bug/1818218
2019-03-01 09:38:33 -08:00
jean-pierre charras 1ba1c6dbf3 DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS_BASE: fix minor wxWidgets alerts. 2019-02-28 18:56:48 +01:00
jean-pierre charras a391e5a236 Add comments 2019-02-28 13:35:37 +01:00
Jeff Young e25970592c Tighten up spacing a bit for 1024x768 monitors.
Fixes: lp:1817974
* https://bugs.launchpad.net/kicad/+bug/1817974
2019-02-28 11:36:09 +00:00
jean-pierre charras 16cbd25ed2 DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS_BASE: fix a minor wxWidgets alert. 2019-02-28 09:14:11 +01:00
jean-pierre charras 2768b3ddbe Pcbnew: fix check zone fills before plotting doesn't test no net zones.
Fixes: lp:1817797
https://bugs.launchpad.net/kicad/+bug/1817797
2019-02-27 11:27:18 +01:00
Jeff Young 73f0b3087c Initialize grid visibility correctly when opening project files. 2019-02-26 18:24:07 +00:00
jean-pierre charras 4d08906288 Pcbnew: fix 2 minor issues
* fp editor: ensure axis are drawn after switching the backend
* DIALOG_PNS_SETTINGS: ensure violate DRC option is correctly enabled/disable when opening the dialog.
2019-02-25 11:34:32 +01:00
Seth Hillbrand 1be759c5c1 pcbnew: Force rotation to grid
When setting the modification point of a group, we get the grid-snapped
coordinate

Fixes: lp:1674835
* https://bugs.launchpad.net/kicad/+bug/1674835
2019-02-23 14:48:12 -08:00
Seth Hillbrand d36fbba1f3 pcbnew: Violate DRC only enabled in Highlight mode
Violating the DRC cannot happen in shove or walk around mode as we use
the DRC to calculate these actions.  The tooltip explains this as well
but we need to explicitly disable the checkbox to prevent users from
thinking that they can complete DRC violating tracks in other modes.
2019-02-23 08:19:50 -08:00
Seth Hillbrand f47089a804 pcbnew: Enforce router settings
When the user selects "Ignore DRC" in the Highlight collisions mode,
they should be allowed to start drc violating tracks as well as end
them.
2019-02-23 08:19:50 -08:00
John Beard 82734e7116 Adjust tab ordering in some dialogs
Introduce a shortcut method to set tab ordering and use it in
the dialogs that override the tab traversal orders:

* Eeschema sheet properties
* Pcbnew Move exact
* Pcbnew Move relative

Also set some initial focus fields in the same dialogs.

Tidy a few includes.

Fixes: lp:1816009
* https://bugs.launchpad.net/kicad/+bug/1816009
2019-02-23 14:49:38 +00:00
John Beard 498a566ca3 Pcbnew: fix spacing in move exact dialog
The middle text ctrl has borders on both top and bottom, should be just
one for even spacing.
2019-02-23 14:49:38 +00:00
jean-pierre charras 0421335ac1 Minor fix in DIALOG_PAD_PROPERTIES: set show grid to false. 2019-02-23 12:31:00 +01:00
Jeff Young f14cf5cbc7 More uniform handling of state saving in global edit dialogs.
Includes Edit Text and Graphics Properties and Edit Track and Via
Properties.  It's also no longer board-specific as it turns out the
board timestamp is always 0 anyway.
2019-02-21 15:11:16 -07:00
Seth Hillbrand dae7b03465 gal: re-enable arc outline mode
Fixes: lp:1816373
* https://bugs.launchpad.net/kicad/+bug/1816373
2019-02-21 10:52:54 -08:00
jean-pierre charras 9ff0868813 pcbnew: fix incorrect sizing of net list display in DIALOG_SELECT_NET_FROM_LIST 2019-02-19 20:07:38 +01:00
Seth Hillbrand b426b9e784 pcbnew: Re-add missing user units python
When moving user user units out of the global, we missed that Python
calls were using it.  This re-adds a function to retrieve user units
allowing the python scripts to show users dialogs in their preferred
units.
2019-02-19 10:52:39 -08:00
Wayne Stambaugh de625e81cb Fix footprint editor library tree filter text control issue.
The default hot key definition for toggle high contrast mode was 'H'.
On windows, the menu accelerator handler code was grabbing the character
so it would not appear in the filter text control.  This is expected
because the windows wxWidgets code hooks this at the application level
so that once a menu accelerator key is found, all further event handling
for that key stops.  Changing the hot key definition to 'Ctrl+H' resolves
the issue.

Fixes lp:1803556

https://bugs.launchpad.net/kicad/+bug/1803556
2019-02-19 12:52:38 -05:00
Seth Hillbrand 4597979d18 cairo: Draw ovals with filled half-arcs
The circle at the end only ever looked right with 100% opacity.

Also fixes double-drawn arc fills in Cairo
2019-02-18 16:09:44 -08:00
Seth Hillbrand 525b9bd550 pcbnew: Correctly set the radio buttons in fpeditor
Radio buttons always have one set, so we need a single path to setting
the correct button.
2019-02-18 15:16:00 -08:00
jean-pierre charras 2dd653a327 WX_GRID: revert GetVisibleWidth() and add EnsureColLabelsVisible() to fix column label height of our wxGrid, for multiline column labels 2019-02-18 20:34:44 +01:00
jean-pierre charras e798cbe6c7 Fix a minor wxWidgets assert in DIALOG_SELECT_NET_FROM_LIST_BASE. 2019-02-18 11:33:53 +01:00
jean-pierre charras d62163cc7c Netclass panel: fix incorrect column sizes, that happens in a few languages.
The best size was calculated from a default size.
This default size (calculated by wxWidgets) was fully broken with some texts in a few languages.
So now this best size does not use this default size.

Fixes: lp:1816315
https://bugs.launchpad.net/kicad/+bug/1816315
2019-02-18 10:09:22 +01:00
Seth Hillbrand 27b4f2fbe9 pcbnew: Fix incorrect Type settings
Fixes: lp:1816259
* https://bugs.launchpad.net/kicad/+bug/1816259
2019-02-17 07:46:47 -08:00
Jeff Young dc5ae574e2 Restore ability to hide grid columns.
wxGrids stupidly does this by setting the width to zero, so you
have to be careful when adjusting minimum widths.
2019-02-17 14:09:35 +00:00
Jeff Young 076f07c683 Be more forgiving of large fonts in grids. 2019-02-17 10:38:06 +00:00
Jeff Young d751fecd8a Tooltip and error message improvements. 2019-02-17 10:20:29 +00:00
Jeff Young f1fb61202a Spelling fixes. 2019-02-17 10:18:42 +00:00
Jeff Young f5369c9d2c Clean up some extraneous TEXT_CRTL_EVAL references.
(UnitBinder gives you evaluation for "free".)
2019-02-17 10:16:09 +00:00
Tomasz Włostowski bbee30671a gal: pixel alignment hacks, works for Retina display too now.
gal: pixel alignment for Cairo.
gal: pixel alignment for OpenGL

Cleanup of pixel alignment patches

gal/opengl: more pixel alignment patches:
- works on Retina displays now
- pixel alignment for circles
- correct 1-pixel strokes
- fixed unfinished 1-pixel line ends

GAL: Restore antialiasing options in Cairo
GAL: Fix arc drawing

Removes DrawArcSegment, which drew arcs whose edge was optionally
stroked (a feature that we did not use).  Fixes Cairo arc drawing issue
where arcs were not visible in pcbnew.

gal: further cleanup
gal: removed unused shader parameter
2019-02-16 20:03:13 +01:00
jean-pierre charras 303b7ac7f8 Pcbnew: fix delete dangling tracks only removes the last segment of tracks.
Fixes: lp:1816234
https://bugs.launchpad.net/kicad/+bug/1816234
2019-02-16 16:05:29 +01:00
jean-pierre charras ec59361f75 Fix a few coverity errors 2019-02-16 14:09:21 +01:00
Seth Hillbrand 79f990266b drc: Allow graphical items to connect pads
This permits footprints like solder jumpers and net-ties.  (originally
from 3439551543 from Jeff Young)
2019-02-15 11:22:55 -08:00
jean-pierre charras c8d44b86e2 Fix a compil issue with some compilers. 2019-02-15 08:47:03 +01:00
Seth Hillbrand 5e5167f198 pcbnew: Adjust footprint properties columns
Size based on text width in 3d and check for overflow before expanding
the first column.
2019-02-14 22:09:01 -08:00
Seth Hillbrand 8b46c99c60 modedit: Fix footprint properties dialog
Checks for text in the dialog before setting width.  Also prevents
resizing beyond the width of the window (in the case of large fonts)
2019-02-14 22:02:34 -08:00
Seth Hillbrand a02f447daa pcbnew: Do not auto edit the 3d-model grid
Auto-selecting of the first grid element is performed in the footprint
editor to facility rapid editing.  Rapid editing of the 3d-model fields
is not as useful and requires multiple esc-keys to cancel.  This limits
the auto-edit to only the reference tab.

Fixes: lp:1815456
* https://bugs.launchpad.net/kicad/+bug/1815456
2019-02-14 16:29:51 -08:00
Seth Hillbrand 1f7022cb64 pcbnew: Do not source highlight from non-copper pads
Highlight connections is meant to show the copper connections on a
board.  We remove the non-copper pads from our selection when attempting
to source the net for highlighting.

Fixes: lp:1815898
* https://bugs.launchpad.net/kicad/+bug/1815898
2019-02-14 15:20:49 -08:00
Seth Hillbrand 2c61b7d7d6 pcbnew: Prevent invalid values from loading
Items that are located at the edge of or outside of integer limits will
not be shown on screen as they don't fit in the VIEW RTree.  This
prevents them from being edited and can corrupt data output.  Instead,
we place them at the largest value that is representable on the RTree
(INT_MAX/SQRT(2)).  This allows the user to correctly utilize DRC as
well as interact with and remove the offending items.

Fixes: lp:1815642
* https://bugs.launchpad.net/kicad/+bug/1815642
2019-02-14 14:28:42 -08:00
jean-pierre charras e6a200b09e Pcbnew: avoid integer overflow when displaying local coordinates.
Minor cleanup in code.
2019-02-14 10:57:22 +01:00
Seth Hillbrand 2cbbcfd3e0 Doxyfiles: Remove local debug lines 2019-02-13 17:22:07 -08:00
Seth Hillbrand 5c855a097b Doxygen: Update doxyfiles
Adds/updates commentary and removes empty, obsolete DTD tags
2019-02-13 10:18:07 -08:00
jean-pierre charras b6027e0815 Drill dialog: fix incorrect parent window when called from the Plot dialog.
The parent window was always the board edit frame,
but this is incorrect when this dialog is called from the Plot dialog.

Fixes: lp:1815530
https://bugs.launchpad.net/kicad/+bug/1815530
2019-02-13 11:41:52 +01:00
Seth Hillbrand 3524bed75a libtree: Remember pane width
Stores the library pane width in settings to keep user preferences
2019-02-12 10:06:36 -08:00
Seth Hillbrand 7b3ef1b7ed colors: Add HSL conversion and tune colors
When adding colors to length tuner, we depend on the window background
color, which can be set by the user, resulting in an unreadable text.
This uses the HSL conversion to detect which shade it should use for the
coloring.

Also adds test cases for round-trip HSL and HSV conversion

Fixes: lp:1814530
* https://bugs.launchpad.net/kicad/+bug/1814530
2019-02-11 22:08:41 -08:00
Wayne Stambaugh fe5d2b8710 Pcbnew: fix footprint properties dialog 3D model visibility issue.
Update 3D model panel on initial dialog load to reflect the current
visibility state of the 3D model.

Fix a few minor footprint properties dialog spacing issues.

Fixes lp:1815184

https://bugs.launchpad.net/kicad/+bug/1815184
2019-02-10 12:00:19 -05:00
jean-pierre charras a703c53312 Fixes in dialogs: mainly better sizes for grid columns, but more other minor fixes.
Fix wxGrid column minimal widths on Windows in dialogs (just fixing the size is not enough).
WX_GRID::GetVisibleWidth(): make width bigger for labels, because they usually use a bold font.
(However, the fix is just a workaround: a better code is welcome)
2019-02-10 16:40:47 +01:00
jean-pierre charras 5e318dc08a Pcbnew, PANEL_PCBNEW_ACTION_PLUGINS: make strings translatable.
Fix also a minimal size for grid columns.
2019-02-10 11:39:07 +01:00
jean-pierre charras 8dc4077d58 Fix compatibility issues with wxWidgets 3.1.1 2019-02-10 07:59:27 +01:00
Seth Hillbrand 8ff764376a wx_grid: abstract visible column width
Cleanup code for checking visible extents of grid text.  Places single
routine to extract the current spacing from the grid in WX_GRID.
2019-02-09 15:31:31 -08:00
jean-pierre charras 1c8077148a Pcbnew: legacy plugin: avoid crash when reading malformed files (old .brd kicad files).
Fixes: lp:1815292
https://bugs.launchpad.net/kicad/+bug/1815292
2019-02-09 18:12:42 +01:00
jean-pierre charras c0a86d734d Pcbnew, Excellon drill file creation: for oval holes allows selection of an alternate command, when the normal command is not accepted.
Using the normal command, oval holes are "drilled" by a route command.
Some board houses do not accept this normal command.
In this case, the drill dialog allows using an other Excellon drill command (a slotted hole).
Note also some board houses do not understand this alternate command!
2019-02-09 14:56:02 +01:00
jean-pierre charras 756b20ace8 Fix column minimal sizes in panel_setup_text_and_graphics.cpp on Windows. 2019-02-09 14:47:45 +01:00
jean-pierre charras 61a95c5440 Fix compatibility with wxWidgets 3.1.1 2019-02-09 11:21:09 +01:00
Seth Hillbrand 76600e3436 pcbnew: Force grid sizing based on text extents
GTK does not handle enlarged text layouts automatically, so we need to
get the screen size before choosing the correct grid width for the
dialog

Fixes: lp:1788495
* https://bugs.launchpad.net/kicad/+bug/1788495
2019-02-08 20:03:45 -08:00
Jeff Young 076499f3ad Set modify flag for immediate block commands.
Fixes: lp:1812124
* https://bugs.launchpad.net/kicad/+bug/1812124
2019-02-08 19:15:16 +00:00
Seth Hillbrand c0008bc757 pcbnew: Change track width should allow no changes
When doing a global edit of the tracks and vias, we need to allow for
the possibility that the track size doesn't change and that this is
explicitly allowed without DRC error.
2019-02-08 10:49:00 -08:00
Seth Hillbrand e1bce7dccd pcbnew: Prevent using "edit width" in dialogs
Editing predefined tracks/nets/vias sizes makes sense in the toolbar but
not inside the submenu.
2019-02-08 09:50:20 -08:00
John Beard edc73de023 Pcbnew: ignore start values in "first available" grid numbering
The using the "first available" numbering option, force an
artifical linear numbering scheme starting at '1'.

Start the pad name provider at the 0'th pad index.

Also adds a few related tests and adjusts tests affected by
this change to reflect that the offset still applies.

This can be expanded in future to be more general by skipping
pad (which would allow a custom start and numbering scheme
while still avoiding duplication), but for now,
this does what the UI says and avoids string changes in 5.1rc.

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

Fixes: lp:1814917
* https://bugs.launchpad.net/kicad/+bug/1814917
2019-02-08 12:15:02 +00:00
John Beard 0c6ec7dbb3 LIB_TABLE_BASE: Const and unsigned fixes
* Make LIB_TABLE_BASE::GetCount() return unsigned. This is more
  consistent with the behaviour of STL containers (especially the
  boost::ptr_vector this is really accessing). Sadly
  wxGridTableBase() forces an int, so a cast is still required
  at the WX interface.
* Make LIB_TABLE_BASE::At() return a reference. First, this is more
  consistent with normal STL indexing operator[]'s, and secondly, it
  allows an idiomatic const index method (so you can access const
  LIB_TABLE_ROWs from a const LIB_TABLE_BASE).

The motivation is to allow use of this class and LIB_TABLE_ROW
in a test program, where the LIB_TABLE_BASE is const.
2019-02-05 08:49:52 -08:00
John Beard e6a6266f3d Build: libpolygon provides its own includes
Libpolygon can provide its own includes via target_include_dirs PUBLIC.
This means any linking targets do not need to specifiy them manually.

As common requires polygon, the polygon dep is also now no longer
required downstream of libcommon, as it's transisitvely implied
by libcommon's target_link_libraries.

This resolves a circular dependency previously detected and also
simplifies CMakeLists.
2019-02-04 19:29:31 -08:00
John Beard bb2ae8e13b Bitmaps: move bitmap defs to bitmaps library
The bitmap definitions (BITMAP_DEF and so on) do not
have any dependencies on other libs, including WX. This
means the bitmaps library can be isolated from the other
dependencies.

Common now depends on bitmaps, and libraries that depend
on common can pick it up from the common target_link_libraries,
as it is PUBLIC. This means a lot of targets no longer
need manual bitmap linkage.

This avoids a circular dependency that was previously reported
by static analysis.

Avoiding pulling in WX and other headers into the include
tree of each bitmap .cpp is a huge speed up (around 10x) in
compilation, and the generated static library is also 10x
smaller (20MB vs 200MB)

Add common as a link library to pnsrouter,connectivity.
THese library do still use common code (including bitmaps,
via base_screen.h) and this allows them to pick up the libcommon
includes correctly.
2019-02-04 19:29:31 -08:00
jean-pierre charras 73a0cbff62 pcbnew, export to STEP: fix error in command line tolerance option (--min-distance="0.0100 mm") is some countries
In countries using a comma as floating point separator, the --min-distance="0.0100 mm" was passed as --min-distance="0,0100 mm"
This is incorrect and broke the command line.

Fixes: lp:1814559
https://bugs.launchpad.net/kicad/+bug/1814559
2019-02-04 18:05:49 +01:00
Seth Hillbrand d7272b7f5e eagle: Handle DRC rule-based pad shapes
Circles and Squares are handled correctly.  Octagons are converted to
circles.  Pad 1 is identified by the "1" string in the Eagle name.

Fixes: lp:1784126
* https://bugs.launchpad.net/kicad/+bug/1784126
2019-02-04 07:06:49 +01:00
Seth Hillbrand 1d09f84303 router: Take track width in dp from dp
Fixes and issue where forces were calculated using the current track
width even in differential placer mode where the tracks are specified by
the differential pair width.

Fixes: lp:1814480
* https://bugs.launchpad.net/kicad/+bug/1814480
2019-02-04 03:48:08 +01:00
Tomasz Włostowski 5d712716e6 router: don't create incorrect non-45 degree connections when routing a track that doesn't have a net assigned
Fixes: lp:1814433
* https://bugs.launchpad.net/kicad/+bug/1814433
2019-02-03 12:37:27 +01:00
Seth Hillbrand 08c944a467 cairo: Ensure Courtyard drawing order
Prevent courtyard from being raised twice

Fixes: lp:1811821
* https://bugs.launchpad.net/kicad/+bug/1811821
2019-02-03 11:27:31 +01:00
Seth Hillbrand a8e920bdef std-ize layer lists
Cleanup of list work to use std models.
2019-02-03 11:27:31 +01:00
Tomasz Włostowski 313ebb9dff router: correct walkaround corner case when both ends of the line lie on the hull edge
Fixes: lp:1810935
* https://bugs.launchpad.net/kicad/+bug/1810935
2019-02-03 11:22:18 +01:00
Seth Hillbrand c08736e245 Assign stack pointer to lib table
When creating new lib table rows, the pointer becomes managed by the new
table through the boost::ptr_vector.  The row is non-copyable, however,
so we lose the reference as soon as it goes out of scope. Creating a
clone provides a new pointer that is moved into the table on creation.

Fixes: lp:1792456
* https://bugs.launchpad.net/kicad/+bug/1792456
2019-02-03 05:20:50 +01:00
Seth Hillbrand b461fc44ef pcbnew: Ensure source snapping
Choosing the drag origin should not be dependent on the snap settings in
pcbnew.  Snap settings are sensible when you are designating a target
only.  Additionally, when dragging a module, we do not want the
footprint's pads to be used as targets for snapping.

Fixes: lp:1814402
* https://bugs.launchpad.net/kicad/+bug/1814402
2019-02-03 04:23:24 +01:00
Seth Hillbrand c0cd4c03fb pcbnew: Handle cancel action in fp load
When the user cancels the footprint load, we should assume they are
canceling the placement of a new footprint.  This also adds sanity check
when populating the list

Fixes: lp:1814181
* https://bugs.launchpad.net/kicad/+bug/1814181
2019-02-01 15:48:36 +01:00
jean-pierre charras 3ad5fd056e Pcbnew, Update PCB from schematic: Fix the reference point of the new footprints to place, when moving the cursor.
It was a regression from 5.02 version.
The block of new footprints to place has now its reference point (the point that is on the graphic cursor) fixed.
This is the first footprint loaded from the list.
2019-02-01 11:43:16 +01:00
Jeff Young b6a06aa129 Improve default canvas handling.
Fixes: lp:1813973
* https://bugs.launchpad.net/kicad/+bug/1813973
2019-01-31 19:43:31 +00:00
Seth Hillbrand 37741048ce plot: Correct a couple SVG output errors
Plotting to closed lines for polygons in SVG.  Also correct the filled
polygon line width for non-copper zones.

Fixes: lp:1813964
* https://bugs.launchpad.net/kicad/+bug/1813964
2019-01-30 15:41:36 -08:00
John Beard 88f9f6f072 Break out ref-des-centric functions to own header
This breaks the following functions out to a general-purposed refdes utils
header:

* MODULE::GetReferencePrefix()
* kicad_string.h RefDesStringCompare()

This acheives:

* Slimming of MODULE interface
* Placement of refdes code in common rather than pcbnew
** Testing of this code in qa_common
* Tighter and smaller includes for code that only needed refdes functions

Note: there are failing tests commited (as expected failures). These
are the cause of lp:1813669 and will be fixed as a follow-up commit.
2019-01-30 15:41:36 -08:00
John Beard dc20521cb9 Break out getTrailingInt from MODULE
This is not logic specific to MODULE. Breaking it out to
kicad_string.h acheives:

* Slimming of the MODULE interface
* Enables reuse of the function
* Enables testing of the function

Also add a test under qa_common for this function.
2019-01-30 15:41:36 -08:00
John Beard f85f10930a Break widget save/restore out to reusable class
The CONFIG_SAVE_RESTORE_WINDOW class does not need to be tied
to the array dialog, put it in common/widgets.

Also do a refactor and tidy-up of the the class, use a union for (slightly)
better type-safety and syntax (a variant would be better but that's C++17).

Also enable integral field save/restore from text boxes.
2019-01-30 15:41:35 -08:00
John Beard 24ac9b7055 Pcbnew: array: repair dialog value init
Fully initialise the CREATE_ARRAY_DIALOG_ENTRIES object,
and use these values for the dialog on first open. Currently,
the initial values aren't all initialised, and none are used, as the
valid flag is not set. This means there are poor defaults in some
fields.

Also more declarations and defintions of CREATE_ARRAY_DIALOG_ENTRIES
to the .cpp, as these do not need to be exposed in the header,
even privately.
2019-01-30 15:41:35 -08:00
John Beard 6558bd9381 Pcbnew: Also transform and number the original item
The original item is part of the array, so give it a number
and put it in the right place (all current array tools have
a null transform for the first item, but it's not part of the
contract. For example, a circular array with an angle offset
might want to move the first point).
2019-01-30 15:41:35 -08:00
John Beard ffaf99a600 Pcbnew: Enable some numbering options in pcbnew
The numbering axis priority (h then v or v then h), and alternate
reversing are not actually numbering parameters, they are part of
the geometry of the array (the items are physically in different
orders).

So enable these options, even when numbering is disabled.

Also fix broken logic about when numbering scheme is enabled
(it still applies even if the numbering offset is fixed.)
2019-01-30 15:41:35 -08:00
John Beard 453a91f661 Pcbnew: arrays skip existing names
The current module cannot be queried for existing pads as we
add them (because we never commit, until we finish the whole array).

Instead, pre-gather the names and check as we add, skipping any existing
names.

Note: this will not prevent arrays becoming "mis-ordered", but there
is not a lot we can do to prevent all possible errors.

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

The same principle could be used to skip existing ref-des'es on PCBs.
2019-01-30 15:41:35 -08:00
John Beard 5504981d00 Separate ARRAY_OPTIONS to own class in common
The geometry and numbering logic is separate to the dialog, and
can be separated for clearer logic and better testability.

Moreover, refactor it to avoid any dependency on pcbnew
classes, so it can be move to common for potential re-use in
eeschema and friends in future.

Also convert all wxPoint logic in these classes to VECTOR2I and
fix some function visibilities.

Add some unit tests of the ARRAY_OPTIONS geometry and numbering.
2019-01-30 15:41:35 -08:00
Jeff Young ca0164aa07 Unify library browser terminology.
Fixes: lp:1813882
* https://bugs.launchpad.net/kicad/+bug/1813882
2019-01-30 19:52:15 +00:00
Jeff Young 2dea3a49c8 Fix compile error in std::pow useage. 2019-01-30 16:38:34 +00:00
Jeff Young b3319d29c1 Init footprint chooser with current footprint.
Fixes: lp:1813882
* https://bugs.launchpad.net/kicad/+bug/1813882
2019-01-30 15:45:29 +00:00
Seth Hillbrand f1fed08fa7 pcbnew: Finalize previous snapping preferences
Snap/Grid modifier follow preferences from 05483a06c6.  Brings Shift/Alt
modifiers into alignment with drawing tools.  Shift modifier still
conflicts when choosing end item with the complete track click-modifier.
This will be addressed in v6 with a larger preference setting.
2019-01-29 17:10:58 -08:00
Seth Hillbrand 05483a06c6 pcbnew: Re-attach snap options
Snapping to item options were partially disconnected when unifying
framework.  This re-attaches the options and adds the additional option
for graphical items.

Fixes: lp:1801377
* https://bugs.launchpad.net/kicad/+bug/1801377
2019-01-29 13:36:17 -08:00
Seth Hillbrand 914596fcbb pcbnew: Allow STEP export tolerancing
kicad2step has a tolerance level that sets whether two points are at the
same location or not.  This allows KiCad to access these levels to some
degree, permitting a looser interpretation of a closed board outline.
2019-01-29 13:05:23 -08:00
jean-pierre charras a4d4d9a241 Fix not working sdip_wizard.py 2019-01-29 08:42:28 +01:00
Seth Hillbrand cf6ba6ad94 pcbnew: Get correct end when dragging
The selection for interactive drag uses cursor position  off grid to
choose the element for dragging.  We pass the same value into the start
dragging routine to choose the correct end of the element.

Fixes: lp:1813665
* https://bugs.launchpad.net/kicad/+bug/1813665
2019-01-28 15:16:07 -08:00
Jeff Young 577bb73320 Revert 7d06651a10. 2019-01-28 20:10:13 +00:00
Seth Hillbrand 9d99fd188f Revert "Change top selection drop-down to combobox"
This reverts commit 7d06651a10.
2019-01-28 10:15:32 -08:00
Tomasz Włostowski fd0381ea09 router: fix dragging when dragged segment has adjacent segment(s) at 180 degree angle
Fixes: lp:1812535
* https://bugs.launchpad.net/kicad/+bug/1812535
2019-01-28 10:31:50 +01:00
jean-pierre charras e850a482d1 Gerber output: fix a potential minor issue in a G04 line comment.
In gbr files only ASCII7 chars are allowed.
However, in a comment line a UTF8 string is used. It should not create issues, but it is incorrect.
2019-01-27 10:14:16 +01:00
Thomas Pointhuber 4fc692f04b fix handling of filled circle and default layer width 2019-01-26 07:42:35 -08:00
jean-pierre charras 90178eb681 Optimize DRC calculation for copper texts. fix also a bug in SHAPE_POLY_SET::Distance( const SEG& aSegment, int aSegmentWidth ).
This bug calculate incorrectly the distance between aSegment and the SHAPE_POLY_SET for the first segment of the SHAPE_POLY_SET.
2019-01-26 13:01:48 +01:00
jean-pierre charras b8cfabd22e Fix some issues in I10n strings
Fix typo and missing I10n identifier for 2 strings
2019-01-26 09:25:12 +01:00
Seth Hillbrand 184711beb4 pcbnew: Fix via snapping to multiple tracks
Rather than selecting an arbitrary track to snap, we select the closest
track to our point, allowing the via to be placed along the full track
length.

Fixes: lp:1813324
* https://bugs.launchpad.net/kicad/+bug/1813324
2019-01-25 09:13:18 -08:00
Seth Hillbrand ff9d814fbd Fix unused vars in wxpython3 2019-01-24 21:25:39 -08:00
John Beard d39cdb5565 Pcbnew: Disallow invalid mwwave inductor lengths
Some microwave inductor lengths cause invalid outputs
for the calculations, which causes jagged outputs.

* If the request length is such that four arcs and no straight
  segments is too long
* If the length is such that an N-turn coil is too short, but
  an N+1-turn coil is too long. This can happen when the coil
  count is small.

This patch doesn't fix the underlying geometric issue here - fixing
the first requires a numerical method, and fixing the second probably
needs an iterative approach. Both of these could benefit from
a refactor.

However, this patch does prevent the tools producing invalid outputs,
which can sometimes be quite subtle mistakes if the "jags" are small.

Fixes: lp:1792119
* https://bugs.launchpad.net/kicad/+bug/1792119
2019-01-24 21:23:43 -08:00
Seth Hillbrand 8b060799eb python: Fix Phoenix app setting
Phoenix doesn't have the same initialization as wxpython3 and so the
namespace doesn't get the wxApp() initialized to the existing instance.
In python, this is worked around by starting a new wxApp.
Unfortunately, this appears to overwrite the existing global instance
variable.  The issue _appears_ to be in Phoenix but for now we work
around it by saving and resetting the instance pointer in the main app.
The downside is that Python likely won't be able to respond to events
from C++

Fixes: lp:1809913
* https://bugs.launchpad.net/kicad/+bug/1809913
2019-01-24 19:41:07 -08:00
jean-pierre charras 70c2380fc2 Minor fixes in code: remove dead code. 2019-01-24 18:23:57 +01:00
John Beard b1a2c5d7c5 Zones: wxPoint/VECTOR2I warnings no longer needed
In the past, the ZONE_CONTAINER::GetPosition() member
returned a reference to a wxPoint, in accordance with the
BOARD_ITEM interface. This meant that ZONE_CONTAINER had
to reinterpret_cast a VECTOR2I (its internal position data) to wxPoint,
which was possible only due to fortunate memory layout.

This interface was changed to return wxPoints by value in
commit a4528988ca, and the normal (wxPoint) cast was used instead.

Thus, we can now also remove the dire warnings and static_asserts
used to ensure the now-unused old method was correct.
2019-01-23 10:39:03 -08:00
John Beard 8297ab24e4 DRC: Break out courtyard overlap function
Introduce the concept of a DRC_PROVIDER which allows
to separate the various DRC functions to their own
areas. This allows, amongst other things, a slimmer core
DRC class, and allows DRC functions to be separately testable.

The courtyard DRCs (overlap, missing and malformed)
are the first victims, so instrumentation can be added to this function.

Add some unit tests on this DRC function, as well a few re-usable PCB-based
utility functions in a library (qa_pcbnew_utils) that could be shared between
unit tests and other utilities.
2019-01-23 13:27:52 -05:00
John Beard e6edc1b670 DRC: Make the marker factory a separate class
This separates the "newMarker" functions from the DRC class. These
are moved to a new class, DRC_MARKER_FACTORY, which is now responsible for
constructing suitable markers from BOARD_ITEMS.

The reasons for this are:

1) Allow DRC related functions to access theese functions without having
   to bake these functions into the main DRC class.
2) Thereby simplify the DRC class interface
3) As DRC_MARKER is now a small class with public interfaces, it's
   possible to put unit tests on these functions.

The motivation here is to allow to start to split out pieces of DRC
into separate classes.
2019-01-23 13:27:52 -05:00
Seth Hillbrand 4247e32cd6 pcbnew: Disallow new via where DRC is violated
Prior to placing the via, we check if the resulting via will pass too
close to different nets on different layers.

Fixes: lp:1718827
* https://bugs.launchpad.net/kicad/+bug/1718827
2019-01-23 10:20:59 -08:00
jean-pierre charras 86263d6bb3 Pcbnew: Do not immediately refresh the 3D view after each board edition.
Previously, when the 3D viewer is opened, each board edition creates a 3D view refresh, that usually takes a bit of time.
Now the refresh is postponed until the 3D viewer has the focus.
2019-01-23 17:47:17 +01:00
Seth Hillbrand efe880bb79 pcbnew: Fix zone cutout duplication
When creating the zone cutout, we delete the old zone and add a new one
with each cutout.  This requires resetting the source zone and clearing
our previous selection if we would like to continue using the cutout
tool on the new zone.

Fixes: lp:1812339
* https://bugs.launchpad.net/kicad/+bug/1812339
2019-01-23 06:42:07 -08:00
jean-pierre charras 56879a964b Fix cross-probing issue when a net or pin name contains a space.
Fixes: lp:1812902
https://bugs.launchpad.net/kicad/+bug/1812902
2019-01-23 11:30:10 +01:00
Seth Hillbrand 6421b15b83 pcbnew: Allow an epsilon in the inflate before join
Plotting mask layers, we expand by a minimum width before performing a
boolean add of the separate regions.  The boolean add has a separation
condition that includes equality.  Since we are looking for the
complement of the mask, we would like the equality applied to the other
side.  Removing a unit value provides the separation.

Fixes: lp:1698457
* https://bugs.launchpad.net/kicad/+bug/1698457
2019-01-22 19:54:03 -08:00
Seth Hillbrand 0c723778f0 pcbnew: Set default missing soldermask min width
When loading an existing file, a missing value in the soldermask min
width value should not be interpreted as a default value but rather as a
0 value.  This corrects an issue introduced by 4d709d2392
2019-01-22 17:01:32 -08:00
Seth Hillbrand 823dce1a50 modedit: Allow name input for new footprint library
When prompting for a new footprint library, we need to treat the input
as a file for creation rather than a directory for selection.
Otherwise, users cannot specify the name of their new footprint library
independently of the existing directory names.

Fixes: lp:1812135
* https://bugs.launchpad.net/kicad/+bug/1812135
2019-01-22 15:40:10 -08:00
jean-pierre charras b0ab53ac26 Dxf importer: fix some issues, especially the rotation angle of texts. 2019-01-22 19:59:43 +01:00
jean-pierre charras c56d6ad2dd Fix issues in DXF import and GFX import dialog
Fixes: lp:1812840
https://bugs.launchpad.net/kicad/+bug/1812840
2019-01-22 18:01:04 +01:00
Seth Hillbrand 7551613826 pcbnew: Don't duplicate TOOL_EVENT
There is some odd interaction in the default copy constructor for
TOOL_EVENT using boost::optional under gcc.  Avoid this by explicitly
constructing the event needed for cut

Fixes: lp:1812848
* https://bugs.launchpad.net/kicad/+bug/1812848
2019-01-22 08:36:56 -08:00
jean-pierre charras a1d1354bcc footprint_editor_tools.cpp: Better code in Placepad. 2019-01-21 21:33:37 +01:00
jean-pierre charras 4d88cd3a0a Footprint editor: add missing local coordinate initialization in Add Pad. 2019-01-21 21:03:36 +01:00
Wayne Stambaugh b13efdb0f2 Initial global footprint library table fixes.
Fix bug when pcbnew is launched from a folder containing an existing
fp-lib-table file by using same method as setting the initial global
symbol library table.

Fixes lp:1810169

https://bugs.launchpad.net/kicad/+bug/1810169

Fixes lp:1738871

https://bugs.launchpad.net/kicad/+bug/1738871
2019-01-20 13:51:07 -05:00
jean-pierre charras 179dfa0dda Pcbnew fix missing initialization in PCB_PAINTER::draw( const TRACK* aTrack, int aLayer )
the stroke mode was always activated, even in fill mode. creating incorrect size shape for null length track segments.

Fixes: lp:1812532
https://bugs.launchpad.net/kicad/+bug/1812532
2019-01-20 10:12:21 +01:00
Seth Hillbrand 4443487f04 pcbnew: Check GetBoard() before using
GetBoard() may return nullptr in the case of a pad that does not belong
yet to the board.
2019-01-19 19:32:50 -08:00
jean-pierre charras 9cac0a38cc DIALOG_GRAPHIC_ITEM_PROPERTIES: better tooltip.
minor other code enhancement (does not create any actual change)
2019-01-19 12:35:35 +01:00
jean-pierre charras 3667b11682 fp editor: very minor fix: fix incorrect icon in toolbar 2019-01-19 07:54:02 +01:00
jean-pierre charras e2afe5e1a3 Toolbars with wxComboboxes: Fix incorrect ReCreate Toolbar methods: they recreated these wxComboboxes without deleting the previously created.
This issue created memory leak and not working wxComboboxes (for instance after modifying the language selection).
Now, these wxComboboxes are created only once, never recreated.

Also: minor cosmetic enhancement in footprint editor main toolbar
(the save footprint icon is modified if the footprint is saved to the board or to the library)
2019-01-18 17:24:40 +01:00
Seth Hillbrand 4cf4600a23 pcbnew: Discard delete action when routing
Prevent the action from being handled on the next transition.

Fixes: lp:1810611
* https://bugs.launchpad.net/kicad/+bug/1810611
2019-01-17 19:38:01 -08:00
Seth Hillbrand 5182fe15d3 Minor code formatting 2019-01-17 19:17:34 -08:00
Tomasz Włostowski 9657039af2 pcbnew: multiple fixes concerning track->pad net propagation used by Track/Via properties dialog:
- Added ignore netcode option to CONNECTIVITY_DATA::GetConnectedItems()
- PlaceModule() now ensures the module added to the board (and thus to the connectivity database) has correct bounding box necessary for R-trees to work
- Use recursive connected pad search so that the new net is propagated to all pads

Fixes: lp:1787961
* https://bugs.launchpad.net/kicad/+bug/1787961
2019-01-18 02:53:29 +01:00
Jeff Young 7bec707160 Fix 2 separate issues with saving the m_canvasType setting.
Fixes: lp:1811982
* https://bugs.launchpad.net/kicad/+bug/1811982
2019-01-17 20:34:24 +00:00
Seth Hillbrand 8b5127d9bc modedit: Renumber pads should hold removed numbers
When renumbering pads, you can click on a pad the second time to restore
the pad to its original value.  This did not allow a user to then place
the removed number on the correct pad (assuming a mistake).  This commit
ensures that removed pad numbers are remembered and allow the user to
place in the correct pad.
2019-01-17 09:58:22 -08:00
Seth Hillbrand 6b1b4bb43a pcbnew: Add cursor help to renumber pads
Renumber pads command is abstruse so add a small popup help to guide
users when renumbering.
2019-01-17 09:58:22 -08:00
jean-pierre charras 1c4b0337c2 Footprint editor, GAL mode: add missing initialization of local coordinates when creating graphic items
Fixes: lp:1812233
https://bugs.launchpad.net/kicad/+bug/1812233
2019-01-17 17:59:00 +01:00
Seth Hillbrand e270b5d266 modedit: Mirror custom pads
Fixes mirror command to correctly handle custom pads.

Fixes: lp:1808135
* https://bugs.launchpad.net/kicad/+bug/1808135
2019-01-17 08:55:59 -08:00
Tomasz Włostowski d50bc6a85f EDIT_TOOL: correctly handle locked items in Rotate/Flip/Mirror functions when the selection is already being dragged
Fixes: lp:1812009
* https://bugs.launchpad.net/kicad/+bug/1812009
2019-01-16 17:00:51 +01:00
Seth Hillbrand f9f87b3ff8 pcbnew: Fix missing config.h from 9458ae8221 2019-01-15 14:17:56 -08:00
Seth Hillbrand 5433423377 pcbnew: Don't update coords on add
When adding an element to a module, we don't need to update the relative
coordinates.  Doing so can cause changes when writing to file depending
on rotation and position.

Fixes: lp:1810870
* https://bugs.launchpad.net/kicad/+bug/1810870
2019-01-15 12:14:02 -08:00
Seth Hillbrand 9458ae8221 pcbnew: Prevent GITHUB plugin from being registered
If the user does not build the GITHUB plugin (deprecated), we cannot use
it in our footprint load and should remove the define to ensure
accidental use is caught at compile time.
2019-01-15 12:14:02 -08:00
Seth Hillbrand 576261cad1 pcbnew: code style cleanup 2019-01-15 07:34:45 -08:00
jean-pierre charras 31fa3af8d8 Fix a minor I18n issue
Fixes: lp:1811640
https://bugs.launchpad.net/kicad/+bug/1811640
2019-01-14 13:12:20 +01:00
Seth Hillbrand 0f1a11ef38 pcbnew: Cut only copied objects
Fixes a bug where objects where accessed after being freed by the cut

Fixes: lp:1811456
* https://bugs.launchpad.net/kicad/+bug/1811456
2019-01-11 17:27:29 -08:00
jean-pierre charras 644855c5ba Fix incorrect (broken) canvas type saving in config.
The config was saving a canvas type EDA_DRAW_FRAME member not always accurately initialized.
And the last canvas opened frame setup was saved, not necessary a frame having a canvas type that can be set by user.
This is a broken feature especially because the footprint viewer has a fixed canvas setting.
2019-01-11 13:19:46 +01:00
Seth Hillbrand 6b75f589e9 pcbnew: Do not remove islands from no-net zones
No net zones, by definition, do not connect to any other element.
Therefore, the entire net is an island and should not be removed by the
knockout section

Fixes: lp:1811239
* https://bugs.launchpad.net/kicad/+bug/1811239
2019-01-10 16:17:37 -08:00
John Beard 658cc8fd96 Wildcards: unify handling of all files wildcards
Use the AddFileExtListToFilter() to also generate the
wildcard for "all files". This is because:

* Users can use AddFileExtListToFilter for the all files WC
  with the same interface as for any other extensions.
* Users do not need to worry about wxGetTranslation, as the
  _() is applied in the same way as the other *Wildcard() helpers,
  and it is a function just like the others, so it is consistent
* There is a testable interface to document the expected result.
  The test is added.
2019-01-09 08:57:42 -05:00
Seth Hillbrand d1b53028a1 Remove errant printf() debugging statement 2019-01-08 17:21:05 -08:00
Seth Hillbrand 994be43782 ratsnest: Calculate ratsnest per pad
The local/dynamic ratsnest needs to calculate on a per-pad basis as the
module is always listed as having a visible ratsnest.  This fixes the
finalized ratsnest viewed when routing as well as the show local
ratsnest regression.

Fixes: lp:1811010
* https://bugs.launchpad.net/kicad/+bug/1811010
2019-01-08 17:19:30 -08:00
Seth Hillbrand 12e0e72107 pcbnew: Don't knock out thermals for non-conn zone
Non-connected zones are, by definition, not connected, therefore, we
should not knock out thermal reliefs under any case

Fixes: lp:1810989
* https://bugs.launchpad.net/kicad/+bug/1810989
2019-01-08 14:24:28 -08:00
Seth Hillbrand b0da1e19ee pcbnew: Don't use frame refresh to update display
Frame refresh in wxWidgets sets the focus back to indeterminate state
and prevents hotkey action until the focus is captured again.  Using
canvas update is the correct method to update the canvas display after
modifying zones/similar

Fixes: lp:1810993
* https://bugs.launchpad.net/kicad/+bug/1810993
2019-01-08 12:38:27 -08:00
Seth Hillbrand a8b3a3cc61 pcbnew: Allow capture of non-highlighted items
When routing in high-contrast mode, the user may wish to place items
that are primarily on a different layer while remaining in high contrast
mode.  This fixes a regression from 4.0.7

Fixes: lp:1804309
* https://bugs.launchpad.net/kicad/+bug/1804309
2019-01-08 11:38:06 -08:00
Seth Hillbrand 90ad240660 units: Move common units and add tests
Centralizing duplicate code from Eeschema and pcbnew and adding unit
tests
2019-01-08 09:29:32 -08:00
Seth Hillbrand 1e5ba6f1b1 Replace DIM() macro
The standard DIM() macro was not typesafe as it happily deferred errors
to runtime that can be caught at compile time.  Replacing it with a
generic C++11 constexpr allows for typecasting, comparison and compile
time error checking.
2019-01-06 08:43:12 -08:00
John Beard ec91329da0 Pcbnew: Array tool should not number NPTHs
Devolve the logic as to whether a pad should be numbered or not
to a pad utility function. Add a very simplistic test for this
function (demonstrating how to test BOARD_ITEMs in general).

Fixes: lp:1804787
* https://bugs.launchpad.net/kicad/+bug/1804787
2019-01-06 07:55:49 -08:00
jean-pierre charras 4493af9f4d Remove pcbnew/import_dxf because all the useful code was moved/merged to import_gfx 2019-01-06 11:17:39 +01:00
Seth Hillbrand 3b54a44540 wildcard strings update
Replace a few other cases where we used Windows-only or *nix specific
wildcard strings
2019-01-05 20:26:45 -08:00
Seth Hillbrand 69fc301bf3 eagle: Prevent 0-width lines in modules
It is very difficult to select 0-width lines and they aren't physical on
the board.  Items with this setting in Eagle should revert to the
default in KiCad.

Fixes: lp:1808584
* https://bugs.launchpad.net/kicad/+bug/1808584
2019-01-05 14:28:08 -08:00
jean-pierre charras eb06ae5910 Plot filenames automatically generated: change the point ('.') find in layer names to '_'
This change was in comments, but not in code.
2019-01-05 12:44:38 +01:00
Seth Hillbrand e8333633fe GAL: Add antialiasing options to Cairo
Cairo supports antialiasing when rendering but can be slow when set to
sub-pixel mode.  This bumps the minimum version of Cairo to 1.12
(available in 14.04 LTS as well as mingw) to support three antialias
settings (fast, good, best) that offer speed/appearance tradeoffs.

This can provide a higher-quality eeschema render as it works on a
per-element basis as opposed to the OpenGL per-screen antialias.
2019-01-04 13:39:56 -08:00
John Beard b743c39ed8 On start without config, start pcbnew in Cairo GAL
Currently, GAL is initialised to NONE (i.e. off). This causes
issues when Legacy canvas is broken (i.e. GTK3).

This changes the default to GAL Cairo, both in PCB_EDIT_FRAME
init, and in the config load.

Now, when the user starts with no config, they are prompted for
a choice: OpenGL or Cairo, and one of them will be set up, with
Cairo as fall back.

Users on platforms that still support legacy can go to it as normal
from the menu, but it will not be the default in any circumstance.

Fixes: lp:1809997
* https://bugs.launchpad.net/kicad/+bug/1809997
2019-01-04 15:22:34 -05:00
jean-pierre charras db7dba96ad Fix a few Coverity warnings.
Mainly not initialized members, and replace not tested dynamic_cast by static_cast.
2019-01-04 09:49:21 +01:00
Seth Hillbrand 25f8b1ce72 pcbnew: Update multiple zone segments
Where we can get away with lower segment counts (localizing an anchor),
we keep the low-def 16 segment count.  Intermediate values and values
that are visible to the user are set to high definition.  Most are
simply hints to the inflation correction but where they show, the user
show see smooth lines.
2019-01-03 17:34:59 -08:00
Seth Hillbrand c92424898c pcbnew: Replace magic number segment counts
Where we set 32 segments per circle, the magic number is replaced by the
same value as the common define ARC_APPROX_SEGMENTS_COUNT_HIGH_DEF
2019-01-03 17:21:10 -08:00
Seth Hillbrand 847f6ab4b3 Spelling fix HIGHT->HIGH 2019-01-03 17:10:27 -08:00
Seth Hillbrand 064303e238 pcbnew: Move zone-knockout to default high def
Most rounding operations have been shifted to an absolute error
calculation and the ability to adjust zone segment counts has been
removed in 5.1.  The remaining elements that use fixed segment counts
are either 18 (DRC) or 32 (plotting).  This aligns the punchout segment
count with the higher (32) definition value
2019-01-03 17:09:56 -08:00
Seth Hillbrand 7d06651a10 Change top selection drop-down to combobox
wxChoice centers the selection on GTK.  So when switching from a
mid-list item to an item at the top, the list is always cut off for
choice lists located on the top toolbar.  Using a combobox provides a
drop-down that allows easier access to all elements in the box.

Fixes: lp:1808569
* https://bugs.launchpad.net/kicad/+bug/1808569
2019-01-03 14:48:28 -08:00
Seth Hillbrand 8de12094d8 Fix compile error for missing dtor in overload 2019-01-02 20:21:33 -08:00
Seth Hillbrand efbc50b7b8 prevent NULL dereference in dialog_text_properties 2019-01-02 19:40:29 -08:00
Seth Hillbrand 6662891f34 string update: Help->List hotkeys
The hotkey name "Help (this window)" does not describe what the hotkey
and associated action does.  It displays the current hotkey list, so the
action name should reflect that behavior
2019-01-02 15:44:13 -08:00
Seth Hillbrand b39061855e pcbnew: Translate scripting test window 2019-01-02 14:49:55 -08:00
Seth Hillbrand aeedb3543b pcbnew: Update strings
Moving pcbnew error strings that may be seen by the user to translated
strings.  Strings that denote unexpected cases are moved to debug logs
as they are essentially asserts that should never be shown.  The
exceptions are the messages shown when files are loaded.  All unknown
items should show an error here.
2019-01-02 14:43:55 -08:00
Seth Hillbrand 5c055f3f80 pcbnew: minor text fix 2019-01-02 12:28:09 -08:00
Seth Hillbrand daee58a0ab pcbnew: Do not show dynamic ratsnest after most mods
Marking the selection modified should not show the local ratsnest unless
we are currently dragging

Fixes: lp:1809921
* https://bugs.launchpad.net/kicad/+bug/1809921
2019-01-02 12:27:48 -08:00
Seth Hillbrand 583e0173b9 pcbnew: Fix ratsnest display
Checks for ratsnest enabled prior to calculating and displaying the
local/dynamic ratsnest.  Calls the ratsnest clear from selection clear

Notably, it appears that the tool actions do not chain transitions for
the same event.  So only a single action (first specified) will be
executed when an event fires unless the actions are executed by separate
tools.

Fixes: lp:1809752
* https://bugs.launchpad.net/kicad/+bug/1809752
2019-01-02 11:56:23 -08:00
Jeff Young dffa399eab Set mirrored when creating footprint texts on back layer. 2018-12-31 21:50:09 +00:00
Jeff Young 061d993448 Warn the user when global track/via edits fail. 2018-12-31 21:50:09 +00:00
jean-pierre charras 1b7ebc7a4e Footprint editor: fix a bug that prevent from saving a library under a new name. 2018-12-31 18:20:58 +01:00
jean-pierre charras 7ad21fefe5 Cross probing: Trying to fix a crash, certainly due to a call to clear the HIGHLIGHTED flag of a structure that is not a EDA_ITEM.
Minor enhancement: use a specific message in cross probing to clear the HIGHLIGHTED flag.
2018-12-31 13:54:26 +01:00
John Beard e856a7a09c Disable legacy canvas on GTK3
This make the use of legacy canvas on GTK3 a default-off
advanced config. Legacy is substantially broken on GTK3
and is of basically no use at all to general users on this
platform.

If the program starts with legacy canvas in the config,
it is forced into a GAL mode, as otherwise it could happen
that the user is stuck and unable to get into pcbnew to change
the setting.

Fixes: lp:1803156
* https://bugs.launchpad.net/kicad/+bug/1803156
2018-12-28 11:36:09 -05:00
John Beard 892f7cf8ff Make SVG import an advanced config, not a compile option.
This demos the advanced config and allows no-recompile switching
of the SVG importer. It also allows the import manager to be
tested more completely.
2018-12-28 11:36:09 -05:00
Jeff Young 4d9b4428fa It's never a good idea to dereference a freed pointer.
Fixes: lp:1809897
* https://bugs.launchpad.net/kicad/+bug/1809897
2018-12-27 13:33:19 +00:00
Tomasz Włostowski a3d8ab911f router: improved snap-to-clearance zone algorithm in highlight collisions mode 2018-12-25 02:29:23 +01:00
Tomasz Włostowski c777eac000 eeschema: improved highlighting of PCB->SCH cross-probed components/labels/pins
Fixes: lp:1796990
* https://bugs.launchpad.net/kicad/+bug/1796990
2018-12-24 15:35:25 +01:00
Jeff Young 0c0dda54bf Close any active editor before rebuilding netclass lists.
Fixes: lp:1809555
* https://bugs.launchpad.net/kicad/+bug/1809555
2018-12-24 01:55:02 +00:00
Tomasz Włostowski bebbe6ed22 pcbnew: disable autopanning when cursor entered auto-pan margin following a keyboard cursor move command
Fixes: lp:1803523
* https://bugs.launchpad.net/kicad/+bug/1803523
2018-12-23 18:58:12 +01:00
jean-pierre charras dde933ba08 When printing, pads are not always printed (especially on tech layers)
A printing mode is added, to force ViewGetLOD() to return 0 in printing mode (pads are always drawn)

Fixes: lp:1809528
https://bugs.launchpad.net/kicad/+bug/1809528
2018-12-22 13:44:49 +01:00
jean-pierre charras 5f3cbff977 Pcbnew, DIALOG_SET_GRID_BASE: A few cosmetic enhancements and fix a wxWidgets minor alert 2018-12-21 10:15:15 +01:00
Seth Hillbrand ec93fb3171 pcbnew: Fracture polygons before plotting
While not technically allowed, overlapping polygons can be drawn in
pcbnew.  Gerber polygons are strictly simple, however, so we need to
fracture prior to exporting to avoid invalid gerbers.
2018-12-20 17:07:47 -08:00
jean-pierre charras 1d230bbee9 very minor fixes to help I18n translations (remove trailing spaces) 2018-12-20 20:19:45 +01:00
Seth Hillbrand 55f2a79957 pcbnew: locking connectivity using RAII
Rather than depend on proper unlocking for each exit, we move the
connectivity lock mutex into an RAII-type configuration that
automatically unlocks on exit.
2018-12-20 11:04:08 -08:00
jean-pierre charras 22d8ddb207 Pcbnew, legacy canvas, context menu for zones: better name for move and delete corner commands. 2018-12-20 08:47:45 +01:00
Seth Hillbrand 135ff314ca pcbnew: Correct layer naming
Layer bit sets get chosen for the layer name, starting with the copper
layers and then the technicals.  Additionally, multi-layer pads are
appended with an indicator that additional layer bits are set.

Fixes: lp:
* https://bugs.launchpad.net/kicad/+bug/
2018-12-19 20:58:36 -08:00
Seth Hillbrand 8f7c073514 pcbnew: Check for valid pointer before deref
In legacy toolkit, we do not keep the corner pointers, so dereferencing
causes crashes.

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

(cherry picked from commit 4aeef1e09e)
2018-12-19 16:54:34 -08:00
jean-pierre charras 83d851956c classes MARKER rework: remove duplicate code. Better HitTest code (HitTest takes in account the actual shape) 2018-12-19 19:53:27 +01:00
jean-pierre charras 15843ae01a class MARKER rework: fix a few minor issues, remove duplicate code and add comments. 2018-12-19 15:13:31 +01:00
Seth Hillbrand e5f5443762 modedit: Allow wildcard footprint import
When importing footprints, some are generated with non-standard (e.g.
"mod") extensions.  As a last option, we allow the * wildcard to select
these files for import.
2018-12-18 11:45:39 -08:00
jean-pierre charras 388397f97d Protect TesselatePolygon() against degenerated polygons (less than 3 corners) to avoid crashes.
Use TesselatePolygon() to draw polygons in Gerbview instead of GLU tesselation, much slower.
Add helper methods in GAL to know if the current GAL engine is Cairo, OpenGL or something else,
useful to optimize drawing code.
2018-12-18 12:49:14 +01:00
Seth Hillbrand e49242bc54 tesselation: Check winding order
Although copper layers are always tesselated CCW, polygons in footprints
will be CW if flipped to the back layer, resulting in a bad render.
2018-12-17 12:45:28 -08:00
Wayne Stambaugh fc69e6532c Unify "Read netlist" and "Load netlist" UI strings. 2018-12-17 10:18:44 -05:00
Jeff Young 95dcc30ffb Load footprint browser with last-selected footprint. 2018-12-16 21:59:42 +00:00
jean-pierre charras 6a0319f6b7 autoplacer: minor fixes. 2018-12-16 10:43:47 +01:00
Jeff Young 2e907bfaa3 Don't throw DRC errors for hidden copper text.
Fixes: lp:1808651
* https://bugs.launchpad.net/kicad/+bug/1808651
2018-12-15 22:30:11 +00:00
Jeff Young f69ea8b4a2 Don't cut invisible module text out of zones.
Fixes: lp:1808651
* https://bugs.launchpad.net/kicad/+bug/1808651
2018-12-15 20:15:19 +00:00
jean-pierre charras ed28b7e29b Autorouter rework: remove outdated or dead code, add comments and display the footprints as soon as a footprint is placed 2018-12-15 17:50:42 +01:00
Seth Hillbrand 7e9fee285f pcbnew: Align/Distribute handle locking
This fixes the handling of align/distribute tool when called on locked
items.  Locked items cannot be moved but they may be used for the target
of an align/distribute operation.

Fixes: lp:1808238
* https://bugs.launchpad.net/kicad/+bug/1808238
2018-12-14 16:04:07 -08:00
Seth Hillbrand 0a26388901 pcbnew: Break track in edit mode
Enables the ability to break a track into two segments when operating in
the edit mode rather than in router.

Fixes: lp:1779788
* https://bugs.launchpad.net/kicad/+bug/1779788
2018-12-14 09:59:25 -08:00
Seth Hillbrand 77163e27f0 suppress boost optional compiler warning 2018-12-13 12:43:29 -08:00
Seth Hillbrand 1c99784e92 pcbnew: Locked deletion prompting
Instead of a nag screen for locked items, we allow first the unlocked
items to be deleted and then, with a repeated request, the locked items.

This adds a popup cursor window informing the user of the option for
repeating the delete

Fixes: lp:1806507
* https://bugs.launchpad.net/kicad/+bug/1806507
2018-12-13 12:32:58 -08:00
jean-pierre charras 5f4530493a Make DRC markers always selectable.
Fixes: lp:1808181
https://bugs.launchpad.net/kicad/+bug/1808181
2018-12-13 09:06:38 +01:00
Seth Hillbrand 5c5979dfc6 pcbnew: Fix polygon hittest
Previous version had minimum width to account for it being difficult to
click on small lines.  This should not be used for filled polygons

Fixes: lp:1808141
* https://bugs.launchpad.net/kicad/+bug/1808141
2018-12-12 17:23:40 -08:00
Seth Hillbrand 4ff9d2f5e4 pcbnew: Update Alt Delete Name/hint
Simply calling it Alternative Delete was hiding its behavior. This gives
a descriptive tooltip and command name allowing users to more easily
find the equivalent to the "Ripup" command
2018-12-12 17:23:27 -08:00
jean-pierre charras 04aeec1223 Remove useless includes 2018-12-12 15:28:59 +01:00
Seth Hillbrand b4910658b5 Footprint wiz: Fix FPC courtyard 2018-12-11 13:11:56 -08:00
Seth Hillbrand 48aad33314 Activate the footprint wizard correctly
Starting the footprint wizard should cause the actual wizard to activate
2018-12-11 13:11:56 -08:00
Seth Hillbrand 4b3bfb0115 footprint wiz: Update default values
This updates some of the footprint wizard values to use the default KLC
values for silkscreen, fab, courtyard and text.

Also updates the default QFN settings to create a valid footprint
2018-12-11 13:11:56 -08:00
jean-pierre charras 372a09f299 Eagle(.lbr) footprints not listed in Library Browser
Fixes: lp:1807629
https://bugs.launchpad.net/kicad/+bug/1807629
2018-12-11 16:06:11 +01:00
jean-pierre charras 85775d522c Fix incorrect include paths
Especially, pcbnew/import_dxf is no longer in use.
2018-12-11 11:32:58 +01:00
Jeff Young f0c0f04348 Fix ReadNetList and UpdatePCB issues with new footprints.
Make sure the view is rebuilt before selecting the new footprints
so that they're shown only in the selection overlay.

Don't start the drag until the dialog is closed so we don't have
a bunch of extraneous mouse warping.

Fixes: lp:1775265
* https://bugs.launchpad.net/kicad/+bug/1775265
2018-12-10 19:48:58 +00:00
Seth Hillbrand d3a67e255d pcbnew: Polygon tool on EdgeCuts adds polylines
Edge cuts are more easily edited when they are polylines not polygons
and this keeps the files backwards compatible with v5.0.x.
2018-12-10 06:10:57 -08:00
Jeff Young 40dac0ecbb Default sizes for edit frames in case prefs get deleted.
Fixes: lp:1807676
* https://bugs.launchpad.net/kicad/+bug/1807676
2018-12-10 12:23:16 +00:00
jean-pierre charras 4013f6424d Pcbnew, autoplacer: display more activity during footprint placement 2018-12-10 10:33:56 +01:00
Seth Hillbrand 7ed1968f60 pcbnew: Remove corners from graphical polygons
Cherry-picked item from 5.0 allowed this action for modedit but missed
pcbnew.  This allows the same action in pcbnew as well.
2018-12-09 08:14:45 -08:00
jean-pierre charras f6aed7c99a Gerber plotter: rename UseX2Attributes() to UseX2format, and fix incorrect/outdated comments. 2018-12-09 10:23:07 +01:00
jean-pierre charras a18c7496bb Ensure compatibility with "old" pythons scripts after renaming SetUseGerberAttributes() to SetUseGerberX2format() 2018-12-09 08:38:23 +01:00
jean-pierre charras 7f20c55ed6 Pcbnew, Plot dialog, Gerber format: Enable or disable adding net metadata both in X1 and X2 format. Previously, this option was existing only in X2 format. Should be existing in both formats.
A bit of cleaning code related to this option.
2018-12-09 08:38:23 +01:00
Jeff Young dd9a001077 Turn off bugfix for lp:1797787 for 5.1.
This allows people to continue to use the edge-width as a proxy
for board edge clearance until we implement board edge clearance
as a real feature.

Fixes: lp:1797787
* https://bugs.launchpad.net/kicad/+bug/1797787
2018-12-08 17:09:41 +00:00
Seth Hillbrand 4fc81bb923 pcbnew: Graphic lines snap as single segments
Graphic lines and polygons are drawn to fit specific areas for which it
is helpful to have the endpoint controlled by the cursor even when
constraining the angle.

Fixes: lp:1805502
* https://bugs.launchpad.net/kicad/+bug/1805502
2018-12-08 07:26:58 -08:00
jean-pierre charras 5b3202d8f3 dxf and svg import: accept unicode filenames
Fixes: lp:1805613
https://bugs.launchpad.net/kicad/+bug/1805613
2018-12-07 10:07:43 +01:00
Maciej Suminski 766156ed87 Fix for dark mode on macOS Mojave
Thanks to Scott Rapson and Justace Clutter for the solution.

Fixes: lp:1797989
* https://bugs.launchpad.net/kicad/+bug/1797989
2018-12-07 09:03:56 +01:00
Jeff Young 78daaa8825 Allow cancel, delete or rescue when opening pcbs with undefined layers.
Fixes: lp:1796596
* https://bugs.launchpad.net/kicad/+bug/1796596
2018-12-07 00:26:10 +00:00
D4p0up e94752a6cf Added help string to select buttons.
Also moved highlight text string to help_common_strings.h

Fixes: lp:1497737
* https://bugs.launchpad.net/kicad/+bug/1497737
2018-12-05 20:13:03 -08:00
Seth Hillbrand 3d98c82217 pcbnew: Disable capture cursor in measure tool
When starting the measure tool, the cursor should not be captured until
we begin the measurement.

Fixes: lp:1806486
* https://bugs.launchpad.net/kicad/+bug/1806486
2018-12-05 19:59:01 -08:00
Seth Hillbrand f9dfbe6f4d Code formatting 2018-12-05 19:39:05 -08:00
Jeff Young 6a7ee5b107 Add locale handling for orientation combobox.
Fixes: lp:1806851
* https://bugs.launchpad.net/kicad/+bug/1806851
2018-12-05 18:08:50 +00:00
Seth Hillbrand 0614f59973 pcbnew: Add edge polygons to pns keepout
Fixes: lp:1806846
* https://bugs.launchpad.net/kicad/+bug/1806846
2018-12-05 08:58:55 -08:00
Seth Hillbrand 02039be2d9 Modify transform shape to use filled/unfilled poly 2018-12-05 08:44:49 -08:00
jean-pierre charras 5c54b9c46f Fix a compil issue due to a mistake in commit b8309e2 2018-12-05 10:14:46 +01:00
jean-pierre charras 754837f947 Pcbnew: DRAWSEGMENT polygonal shape: fix drawings in Legacy mode. Add IsPolygonFilled() to know if the polygon is filled or not.
IsPolygonFilled() replaces the hard coded comparisob with Edge_Cut in code.
For now the polygon is not filled only on Edge_Cut layer.

But in the future, it could be an option for other layers.
2018-12-05 09:57:59 +01:00
Seth Hillbrand b8309e2a70 pcbnew: Edgecuts polygons only hit edges
Only allow hittest for edgecuts polygons on their edges as we do not
display the fill for this layer.

Fixes: lp:1806782
* https://bugs.launchpad.net/kicad/+bug/1806782
2018-12-04 17:19:40 -08:00
Jeff Young 4f5771f79f Don't nag user about changes they made in a text editor.
Fixes: lp:1806748
* https://bugs.launchpad.net/kicad/+bug/1806748
2018-12-04 23:32:55 +00:00
Jeff Young da40def69d Standardize on "local coordinates" terminology. 2018-12-04 23:32:55 +00:00
Seth Hillbrand 2e0887d49f pcbnew: correctly display edgecut polygons in modules
Commit 1858b7dca corrected the handling of polygons on the edge cut
layer for board items.  This adjusts for the possibility of polygons
in modules on the edge cut layer by applying the module offset/rotation
to the polygon elements.
2018-12-04 15:08:04 -08:00
Seth Hillbrand 1858b7dca7 pcbnew: Allow closed polygons as board edges
Like circles, polygons are self-closed elements that define an outline.
This allows them to be used as such for board outlines and cutouts.

Fixes: lp:1795563
* https://bugs.launchpad.net/kicad/+bug/1795563
2018-12-04 12:32:47 -08:00
jean-pierre charras 4f4f03a98a Try to fix compil issue on OSX (commit 8757fcf6 breaks the import gfx dialog) 2018-12-04 20:03:23 +01:00
jean-pierre charras 3623980611 DXF importer: fix incorrect line thickness of imported texts. 2018-12-04 20:01:47 +01:00
John Beard bb18c9201b Make SVG import a CMake option (experimental)
This allows too turn it on for work without an additional patch.

Also fix a bug in the disable code - when the SVG is enabled,
allow to select SVG files.
2018-12-04 18:53:28 +01:00
Seth Hillbrand 8757fcf676 Add array hint to wxArrayString contructors
This may be required for some compilers to prevent premature casting to
a single element.
2018-12-04 09:47:43 -08:00
jean-pierre charras 2ec957a226 polygon_triangulation.h: fix a missing call to updateList() in TesselatePolygon. 2018-12-04 15:47:54 +01:00
Maciej Suminski ecff2ed384 SVG import dialog: make placement options mutually exclusive 2018-12-04 08:39:58 +01:00
Seth Hillbrand 2a574c4f65 pcbnew: Synchonize net info when loading via python
When loading the load using the UI, netclasses and net info are
synchronized to the board object after parsing the file.  This needs to
happen automatically when loading the board via the Python interface as
well.

Fixes: lp:1806506
* https://bugs.launchpad.net/kicad/+bug/1806506
2018-12-03 17:05:18 -08:00
jean-pierre charras af65c48979 Pcbnew: Partial revert of commit 0bceb69fe9
In DRAWSEGMENT polygonal shape: the commit tried to use triangulation (CacheTriangulation) to draw the shape (similar to zones).
It was much faster than using GLU tesselator (one order of magnitude).
Unfortunately, CacheTriangulation() works only with simple polygons, not with any polygon.
And simplifying a polygon with a lot of vertexes is very time consuming.
So using CacheTriangulation() is now removed and GLU tesselator is used as previously.

Fixes: lp:1806411
https://bugs.launchpad.net/kicad/+bug/1806411
2018-12-03 20:12:57 +01:00
Seth Hillbrand 2a865ef4b6 pcbnew: Remember highlighted net while routing
If the user has specifically requested a net to be highlighted before
routing, we keep the net highlighted after the route is completed.
2018-12-03 08:42:45 -08:00
jean-pierre charras a762c4d86e Import GFX: temporary disable SVG import until V6.0.
SVG import need some refinements to be efficient, so it is disable for v 5.x.
Will be re-enabled later.
Enabling SVG import is *only* for developers, not for users.
2018-12-03 15:31:40 +01:00
jean-pierre charras fb5b5ff7c3 nanosvg: Update nanosvg. Move the code to compile from nanosvg.h to nanosvg.cpp
Uncrustify this code.
2018-12-03 15:25:46 +01:00
jean-pierre charras cc0aa8b928 Gfx import: fix many issues, and add many enhancements.
* Do not compile dxf old files.
* import gfx, gal mode: make absolute placement working.
* Import gfx in legacy canvas: use it and make interactive placement working
* Take imported line width in account. Ensure DXF line thickness is OK.
* handling empty files in legacy mode.
2018-12-03 15:25:44 +01:00
jean-pierre charras 430c61822d Import svg import code from experimental trunk: convert dxf importer 2018-12-03 13:42:23 +01:00
jean-pierre charras 74a9d5401a Import svg import code from experimental trunk: start point 2018-12-03 13:42:22 +01:00
jean-pierre charras 0bceb69fe9 Pcbnew: DRAWSEGMENT polygonal shape: use triangulation (CacheTriangulation) to draw the shape (similar to zones).
On opengl, creating triangles by CacheTriangulation instead of GLU tesselator is much faster (one order of magnitude)
2018-12-02 18:05:25 +01:00
Seth Hillbrand 26765161c1 drc: Add board outline and edge crossing
This adds a check for contiguous board outlines to the DRC.  It also
uses the calculated outline to ensure that traces are not crossing the
outlines.

Fixes: lp:1648055
* https://bugs.launchpad.net/kicad/+bug/1648055
2018-12-02 07:54:52 -08:00
jean-pierre charras 5eb5b5ce58 DIALOG_TEXT_PROPERTIES: hide visibility option, because this option exists only for footprint texts, and do nothing for other texts.
Texts on board (not on footprints) cannot be invisible, at least in 5.0 and previous versions.
2018-12-02 10:30:48 +01:00
jean-pierre charras d607c4853d fix a minor compil warning. 2018-12-01 20:07:59 +01:00
Jeff Young 45ee95f5e2 Apply CharHook uniformly as other platforms appear to have issues.
Fixes: lp:1806124
* https://bugs.launchpad.net/kicad/+bug/1806124
2018-12-01 11:57:16 +00:00
Jeff Young ff6a3482ec Remove on-kill-focus-validation.
Fixes: lp:1805361
* https://bugs.launchpad.net/kicad/+bug/1805361
2018-11-29 19:00:21 +00:00
Wayne Stambaugh 59b0f553e0 Code cleaning. 2018-11-28 09:58:41 -05:00
Jeff Young 8ca0fe6722 When copying modified footprint make sure we get the latest.
Fixes: lp:1805413
* https://bugs.launchpad.net/kicad/+bug/1805413
2018-11-27 19:20:36 +00:00
Seth Hillbrand 7b2f245283 pcbnew: Tracks cleanup use connectivity database
Rather than duplicating the connectivity calculations in determining
whether a track is dangling, we utilize the current database to find the
number of connected items for an anchor item when feasible.

Multiple anchors such as tracks still need additional logic.

Fixes: lp:1805479
* https://bugs.launchpad.net/kicad/+bug/1805479
2018-11-27 11:17:59 -08:00
Jeff Young db07b43674 Fix copy/paste errors with wrong icons.
Fixes: lp:1805123
* https://bugs.launchpad.net/kicad/+bug/1805123
2018-11-26 23:57:08 +00:00
Maciej Suminski 4d73cfb8a1 PNS: validate SHAPE_LINE_CHAIN before accessing its segments 2018-11-26 00:01:02 +01:00
Seth Hillbrand 4a0467bbd0 Selection: allow optional locked item edit
When looping main, we should not exclude locked items without prompting
the user first.

Fixes: lp:1804979
* https://bugs.launchpad.net/kicad/+bug/1804979
2018-11-25 11:54:29 -08:00
Seth Hillbrand 2cfcb2b9fb SELECTION: Allow RequestSelection() to add items
The client filter might add items in the case where locked pads are
filtered.  We need to handle this case when requesting selection by
adding new items to the m_selection

Fixes: lp:1802686
* https://bugs.launchpad.net/kicad/+bug/1802686
2018-11-25 08:33:49 -08:00
Jeff Young d2756bedf1 Keep state except when the filter changed.
(Used to be "except when filtering".)

Fixes: lp:1804293
* https://bugs.launchpad.net/kicad/+bug/1804293
2018-11-25 01:51:45 +00:00
Seth Hillbrand ff668968f3 pcbnew: Changing the track width while routing
When changing the track width, we need to allow that the track's route
will change based on DRC, so force a move without changing position.

Fixes: lp:1785057
* https://bugs.launchpad.net/kicad/+bug/1785057
2018-11-24 11:52:26 -08:00
jean-pierre charras 558c38b5c5 Very minor enhancement in plot dialog.
Inside the layers listbox, the context menu can select all fabrication layers.
The courtyard layers (only used for DRC) are now not selected.
2018-11-24 17:48:05 +01:00
Seth Hillbrand 908c2a37e5 GRID_HELPER: Finish drawing closed path
When we draw a path, we usually want to close the path when clicking on
the end of another line.  This uses grid helper to ensure this
progression happens as expected.
2018-11-24 08:00:11 -08:00
Jeff Young 2e1920abad Add tooltips to library manager dialogs.
Fixes: lp:1804930
* https://bugs.launchpad.net/kicad/+bug/1804930
2018-11-24 15:06:21 +00:00
Jeff Young b2db49f4ac Add browse buttons to Library Manager dialogs.
Fixes: lp:1804924
* https://bugs.launchpad.net/kicad/+bug/1804924
2018-11-24 15:06:21 +00:00
jean-pierre charras 0b890b4d1d Drill files generation: add 3 structured comments in NC (Excellon) drill files and remove duplicate code. 2018-11-24 08:51:58 +01:00
Jeff Young 647fa6547d Update grid drop-down when changing user grid. 2018-11-23 23:33:02 +00:00
Jeff Young f05b756ccf Fix copy/paste typo. 2018-11-23 19:46:41 +00:00
Seth Hillbrand 9955d0beb2 MSW Ratsnest: Force marking ratsnest dirty
When updating the status of the ratsnest, we mark its target layer as
dirty to ensure the revised data are used to draw/clear the ratsnest

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

(cherry picked from commit 50eedcf0b3)
2018-11-23 11:45:29 -08:00
jean-pierre charras 149c4b55a6 DIALOG_TRACK_VIA_PROPERTIES_BASE: fix a minor wxWidgets alert. 2018-11-23 15:46:54 +01:00
Seth Hillbrand 36a69a7d5d clipboard: re-add limited LOCALE_IO to SaveSelection
JP notes that there is an issue with comma-based decimal locales and the
SaveSelection that is addressed by having a LOCALE_IO call in a limited
block.

This changed the copy timing of the clipboard and the interaction with
KDE Klipper again.  To address this, we isolate the clipboard open call
to the end of the routine and force a round-trip of the clipboard data
before exiting.
2018-11-22 08:17:09 -08:00
jean-pierre charras d03e82602e PANEL_COMMON_SETTINGS: minor fixes, mainly cosmetic. 2018-11-22 17:11:49 +01:00
Seth Hillbrand 964d6ebc06 pcbnew: Set clipboard locale to avoid Klipper crash
Klipper seems to poll at odd times.  When we copy to wxTheClipboard
in one locale and Klipper extracts data in a different locale, it throws
an XError.  We don't need the extra LOCALE_IO calls as Format() uses its
own LOCALE_IO setting.

Fixes: lp:1800648
* https://bugs.launchpad.net/kicad/+bug/1800648
2018-11-21 12:01:21 -08:00
nats 6e77176d76 Adding fillet option for the QFN Wizard
Fixes lp:1775961

https://bugs.launchpad.net/kicad/+bug/1775961
2018-11-21 15:00:39 -05:00
Jeff Young 5a74b55074 Reset delayedFocusPage even if it's already the right page.
Fixes: lp:1804315
* https://bugs.launchpad.net/kicad/+bug/1804315
2018-11-21 19:51:04 +00:00
Seth Hillbrand ad9916a93d ratsnest: Fix state issue switching in local tool
The ratsnest layer needs to be always enabled in GAL rather than taken
from the board settings.  This also adds a finalize handler to the
picker tool that allows a picker-caller to perform a specific action
when the picker tool exits.  In this case, we use it to clear the local
ratsnest selections back to the default.

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

(cherry picked from commit c0d9b9ab81)
2018-11-20 20:49:18 -08:00
Jeff Young ed27027ab1 Escape/unescape footprint descriptions and keywords when writing/reading cache file.
Fixes: lp:1803989
* https://bugs.launchpad.net/kicad/+bug/1803989
2018-11-20 21:44:04 +00:00
Jeff Young c016861962 Run some sanity checks on fp-info-cache files.
Fixes: lp:1803989
* https://bugs.launchpad.net/kicad/+bug/1803989
2018-11-19 21:06:25 +00:00
Jeff Young 5bb5aea936 Don't leave a selection with a deleted item in it.
Fixes: lp:1803730
* https://bugs.launchpad.net/kicad/+bug/1803730
2018-11-19 16:03:30 +00:00
Jeff Young f71998b34e Remove repetitive calls to other cancel operations. 2018-11-19 16:03:30 +00:00
Jeff Young 5b9458f4c2 Don't delegate context menu to Selection Tool.
Our superclass can handle it more correctly (including the Cancel
item at the top).
2018-11-19 16:03:30 +00:00
jean-pierre charras 240051fb26 Worksheet display in GAL mode: fix missing filename and (in Eeschema) sheet full name. 2018-11-19 10:21:28 +01:00
Seth Hillbrand eb689a5221 Ratsnest: Improve show heuristics
When the local ratsnest tool is used, it should toggle the state based
on the global ratsnest visibility.  After changing state, the layer
cache is marked as well.

Possibly related to lp:1800301

(cherry picked from commit 22fbf30f22)
2018-11-18 20:03:46 -08:00
jean-pierre charras c539d6e0be fix incorrect initialization of VIEW::m_boundary.
This parameter defines the working area (full page) size.

The fix is not perfect, because it does not take in account the page size.
However it is similar to the "old" initialization, before Eeschema GAL.
In Eeschema, a reasonable boundary size is used.
2018-11-18 20:04:17 +01:00
jean-pierre charras 65a967dca1 Fix minor I10n issues. 2018-11-18 14:40:36 +01:00
jean-pierre charras 2fdf13ab79 Fix minor compil warnings. 2018-11-18 10:12:34 +01:00
jean-pierre charras 0ef7aeb274 Fix incorrect behavior when collection footprint items in collectors.cpp.
It was a bug in commit 208622699.

Fixes: lp:1803803
https://bugs.launchpad.net/kicad/+bug/1803803
2018-11-18 10:08:12 +01:00
Jeff Young 208622699f Scale zone hit area by zoom.
Fixes: lp:1803362
* https://bugs.launchpad.net/kicad/+bug/1803362
2018-11-17 00:35:07 +00:00
Jeff Young 0de9cb345c Add shortcuts to setting dialogs for track widths, via sizes and grid sizes.
Fixes: lp:1803671
* https://bugs.launchpad.net/kicad/+bug/1803671
2018-11-17 00:35:06 +00:00
Jeff Young 3c6adbdf03 Indent layer properties for better comprehension. 2018-11-17 00:35:06 +00:00
Seth Hillbrand 940353afde GRID_HELPER: Keep edited items out of snap
Distinguish between the snap-from and snap-to items.  Previously, we
used the SELECTED or DRAGGED flags but the flagging arcitecture was
inherently fragile.  This specifies items directly that should not be
used as snap targets.

Fixes: lp:1802795
* https://bugs.launchpad.net/kicad/+bug/1802795
2018-11-16 10:05:31 -08:00
jean-pierre charras b35b1bb644 Fix a few minor I18n issues.
Especially remove trailing and leading spaces in sentences, always annoying in translations, and never useful in sources.
2018-11-16 18:12:01 +01:00
Jeff Young 4050991d28 Move ERC marker focusing to GAL architecture.
Fixes: lp:1802537
* https://bugs.launchpad.net/kicad/+bug/1802537
2018-11-16 10:38:44 +00:00
jean-pierre charras 8c8ccf83e6 Fix a few I18n minor issues. 2018-11-16 09:43:40 +01:00
jean-pierre charras 1f3d5cee0e Fix a few minor I18n issues. 2018-11-15 09:34:29 +01:00
Jeff Young bcc8c64256 Consider edge cuts items to have zero width when filling zones.
Fixes: lp:1797787
* https://bugs.launchpad.net/kicad/+bug/1797787
2018-11-14 23:45:32 +00:00
Jeff Young 02a559678a Improve terminology of track selection commands.
There was confusion that "copper" and "net" meant zones, and there
was confusion about what "trivial" meant.

Fixes: lp:1772251
* https://bugs.launchpad.net/kicad/+bug/1772251
2018-11-13 21:29:35 +00:00
Maciej Suminski 361b768aaf Fix frozen cursor on interactive DXF placement 2018-11-13 14:58:54 +01:00
Jeff Young 86273e86b9 Added user and grid origins to Position Relative dialog.
Also fixed a refresh bug when doing Position Relative.

Fixes: lp:1792699
* https://bugs.launchpad.net/kicad/+bug/1792699
2018-11-12 23:09:45 +00:00
Jeff Young 6d76097291 When running selectable() recursively, we're really only checking visibility.
Fixes: lp:1802949
* https://bugs.launchpad.net/kicad/+bug/1802949
2018-11-12 21:59:43 +00:00
Jeff Young fdff010199 Fix copy/paste errors in delayedFocusRow stuff.
Fixes: lp:1802907
* https://bugs.launchpad.net/kicad/+bug/1802907
2018-11-12 17:08:45 +00:00
Seth Hillbrand c15c64e991 GRID_HELPER: Don't snap to sub elements being moved
Fixes: lp:1802795
* https://bugs.launchpad.net/kicad/+bug/1802795
2018-11-12 06:53:33 -08:00
Jeff Young 62e2fe8bbd Recurse for more detailed selectability tests.
Fixes: lp:1801709
* https://bugs.launchpad.net/kicad/+bug/1801709
2018-11-11 20:26:19 +00:00
Jeff Young befc504734 Warp cursor back to creation point after new-text dailog.
Also fixes same issue for new zones.

Fixes: lp:1802532
* https://bugs.launchpad.net/kicad/+bug/1802532
2018-11-11 20:26:19 +00:00
Jeff Young 6789103961 Save internal values rather than textbox content.
Fixes: lp:1802442
* https://bugs.launchpad.net/kicad/+bug/1802442
2018-11-11 20:26:19 +00:00
Jeff Young 295013e4a9 Clarify fp reference filter and add fp id filter.
Fixes: lp:
* https://bugs.launchpad.net/kicad/+bug/
2018-11-11 20:26:19 +00:00
Seth Hillbrand c24f70ba1e GRID_HELPER: Filter targets based on dragging
Filtering based on selection ignores the use case where we are measuring
to a selected item.  This utilizes the dragged flag to prevent snapping
based on the current state of the item drag.

Fixes: lp:1801089
* https://bugs.launchpad.net/kicad/+bug/1801089
2018-11-11 11:30:36 -08:00
Seth Hillbrand cf20b39ddc GRID HELPER: Consider all snappable items
When snapping, we should allow any point identified as a snappable
point.  The additional consideration for corners might be used for
alignment in the future.

Fixes: lp:1802741
* https://bugs.launchpad.net/kicad/+bug/1802741
2018-11-11 11:30:36 -08:00
jean-pierre charras fcafe5362f NC drill (Excellon) exporter: remove useless M71 / M72 lines.
They are probably incorrect in V2 format, and the format is already specified.
2018-11-11 19:57:16 +01:00
jean-pierre charras 0d3637c2ee Fix a few minor I18n issues.
Avoid translation of debug messages.
2018-11-11 10:46:26 +01:00
jean-pierre charras f7cf40f2f4 Fix a few Coverity warnings.
Sometimes a dynamic_cast was used without testing the returned value.
Some are replaced by static_cast, when the dynamic_cast was useless.
2018-11-11 08:28:58 +01:00
jean-pierre charras acfa13c038 Fix typo 2018-11-09 15:46:09 +01:00
Seth Hillbrand 70e660dfe8 GRID_HELPER: Update target geometry when moving
Setting a previously visible item visible is a nop.  If the target was
visible, make sure to update the geometry

Fixes: lp:1802405
* https://bugs.launchpad.net/kicad/+bug/1802405
2018-11-09 06:12:31 -08:00
Wayne Stambaugh f1f4473d8b Footprint editor: add save view to PNG file.
Factor out save current canvas view to image file code from symbol editor
code so it can be used anywhere.

Add ability to save to any image format supported by wxBitmapType.  See
https://docs.wxwidgets.org/3.0/gdicmn_8h.html#a90a1eb6d85b5044a99b706fd979f27f5.
Currently only PNG output is implemented.

Please note that there is a minor bug that appears to be due to the
scroll bars which causes unfilled areas on the right and bottom edges
of the image.  This always existed in the save symbol editor view
image but it was not as noticeable because by default the background
color is white.  It is very noticeable in the footprint editor with
a black background.

The usual smattering of coding policy and comment fixes.

Fixes lp:1802127

https://bugs.launchpad.net/kicad/+bug/1802127
2018-11-09 08:32:36 -05:00
Jeff Young 5c726744b6 Move Zone Properties dialog to Connect() strategy.
If checkboxes don't have individual IDs FormBuilder won't assign
them and the event table ends up connecting each checkbox to all
of the checkbox handlers in the dialog.

Fixes: lp:1801746
* https://bugs.launchpad.net/kicad/+bug/1801746
2018-11-08 21:27:15 +00:00
Seth Hillbrand 4b931aeb57 pcbnew: Force cursor position when snapping
This places the crosshairs (confusingly named here) at the snap
position, either one of the snap points or the grid, depending on the
status of the hotkeys SHIFT/ALT.

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

Fixes: lp:1801369
* https://bugs.launchpad.net/kicad/+bug/1801369
2018-11-07 14:36:46 -08:00
Seth Hillbrand f2ccad39b6 pcbnew: Fix grid snapping for picker
Fixes: lp:1801373
* https://bugs.launchpad.net/kicad/+bug/1801373
2018-11-07 09:03:26 -08:00
Jeff Young 5c26b1dabd Don't use C-style cast when we don't actually know what it is. 2018-11-07 14:24:16 +00:00
Jeff Young 3439551543 Implement a work-around for net-ties.
Fixes: lp:1799318
* https://bugs.launchpad.net/kicad/+bug/1799318
2018-11-07 14:24:16 +00:00
Seth Hillbrand 1f25fcd3d6 pcbnew: Shift zone filler to std::async 2018-11-06 09:28:12 -08:00
Seth Hillbrand a24bd9baa1 pcbnew: Adjust default update rate to 100ms
10ms was too fast to update the progress reporter and actually slowed
the process down for many machines.
2018-11-06 09:28:12 -08:00
jean-pierre charras 238abad004 Gerber job file: fix incorrect GUID.
Fixes: lp:1801696
https://bugs.launchpad.net/kicad/+bug/1801696
2018-11-06 08:16:07 +01:00
Maciej Suminski 4ad37bc9ea Limit 'items on disabled layers' DRC check to copper layers
Fixes: lp:1788248
* https://bugs.launchpad.net/kicad/+bug/1788248
2018-11-05 14:00:49 +01:00
Jeff Young 6e9475694c Fix bug with zone selection when zones are shown filled. 2018-11-04 19:17:53 +00:00
Seth Hillbrand df562b7ec0 pcbnew: Prevent degenerate values in Eagle import
Importing Eagle files allowed for invalid zone values for clearance and
minimum width that triggered asserts in the 3d-viewer.

Fixes: lp:1801188
* https://bugs.launchpad.net/kicad/+bug/1801188
2018-11-04 11:01:08 -08:00
jean-pierre charras 93d3e4ccf8 dialog_footprint_wizard_list_base.cpp: fix a minor wxWidgets alert. 2018-11-04 15:50:29 +01:00
Jeff Young 589e1f6a96 MSW and GTK need a separate dialog for opening/saving directories.
Fixes: lp:1801528
* https://bugs.launchpad.net/kicad/+bug/1801528
2018-11-04 12:35:01 +00:00
Jeff Young 68b07d1aff Add show/hide search tree to modedit, and fix it in libedit.
Fixes: lp:1801531
* https://bugs.launchpad.net/kicad/+bug/1801531
2018-11-04 12:35:01 +00:00
Jeff Young 3bfd32cdc5 Inherit grid settings from PCBNew.
Fixes: lp:1801428
* https://bugs.launchpad.net/kicad/+bug/1801428
2018-11-04 12:35:01 +00:00
Nick Østergaard 8c1ebc4314 Remove shebang from footprint wizard plugin
Fedora packaging errors with ambiguous python shebang since current
rawhide (30).

So we should remove it as the footprint wizards are not to be executed
standalone.
2018-11-04 08:43:20 +01:00
Maciej Suminski 75896d767a Fix a crash in BOARD::SortedNetnamesList()
Variable netBuffer contains all NET_INFO items, whereas max_netcode
value is determined only basing on pad nets. After a netlist update
there still might be a NETINFO_ITEM that is not assigned to any pad and
has a net code higher than calculated max_netcode. Such situation
results in a out-of-bounds access in sortNetsByNodes().
2018-11-03 18:17:48 +01:00
jean-pierre charras 15fa8f8a22 Minor fixes. 2018-11-03 14:30:34 +01:00
Jeff Young 569d4a0f64 More selection logic improvements.
Separate out zone edges (which are quite specific, and should
win over most other things) from zone fills (which are pretty
generic and should only be considered when there's nothing else).

Also excludes zone fills when the zones aren't being shown as
filled.
2018-11-02 23:52:00 +00:00
Maciej Suminski dfccd8c5e4 Added level-of-details threshold for via net name layer 2018-11-03 00:48:03 +01:00
Maciej Suminski 8d73cfef2a Adjusted level-of-detail thresholds for BOARD_ITEMs visibility
Fixes: lp:1801056
* https://bugs.launchpad.net/kicad/+bug/1801056
2018-11-03 00:34:27 +01:00
Jeff Young 69952a7b9f Improve updating of symbol and footprint trees.
In particular, update highlighting when changing footprints.
2018-11-02 19:55:30 +00:00
Maciej Suminski afda69c9cc Removed default line width setting from the printing dialog 2018-10-31 19:17:30 +01:00
Maciej Suminski 64da77538f Fix bitmap scale in printouts
Display GALs had an incorrect world unit value set. Now the world unit
value says how many internal units are in an inch, in accord with the comments
in the GAL header. Bitmap drawing code relied on the information about DPI,
so scaling worked differently for display and print GALs.
2018-10-31 19:17:30 +01:00
Maciej Suminski 262a105416 Disable zone outlines and hatched lines rendering in printouts 2018-10-31 19:17:30 +01:00
Maciej Suminski 3d15092643 Fixed loading layer visibility setting for printouts 2018-10-31 19:17:30 +01:00
Maciej Suminski 90b6156448 Store line width setting for printouts 2018-10-31 19:17:30 +01:00
Maciej Suminski d3ea63e133 Removed a redundant parameter from BOARD_PRINTOUT constructor 2018-10-31 19:17:30 +01:00
Maciej Suminski ff0909c90c Fully initialize PCB_RENDER_SETTINGS::m_sketchMode 2018-10-31 19:17:30 +01:00
Maciej Suminski dea778842b Grand printing dialogs refactor
Patch introduces a generic printing settings window that is customized by pcbnew and gerbview.
2018-10-31 19:17:30 +01:00
Maciej Suminski e81c3a59a2 Refactored and unified board editor and footprint editor print dialogs 2018-10-31 19:17:30 +01:00
Maciej Suminski 92c5cb288e Fixed scale in Gerbview printouts 2018-10-31 19:17:30 +01:00
Maciej Suminski 8cb464b725 Handle drill mark options in pcbnew printouts 2018-10-31 19:17:30 +01:00
Maciej Suminski 698a380827 Clear selection before printing
Selected objects are hidden in VIEW, that makes them disappear from
printouts.
2018-10-31 19:17:30 +01:00
Maciej Suminski 59f77e68c9 Removed unused pcbnew printing code 2018-10-31 19:17:30 +01:00
Maciej Suminski 1cce194c8a Handle layer settings in printouts 2018-10-31 19:17:30 +01:00
Maciej Suminski 5b94f20e6f Adapted printout controllers to the new printing routines 2018-10-31 19:17:30 +01:00
Jeff Young 74118a2e9d Don't display all the footprint info when an edge is selected.
Fixes: lp:1800556
* https://bugs.launchpad.net/kicad/+bug/1800556
2018-10-30 11:33:49 +00:00
jean-pierre charras 654dbbb44b Gerber UUID parameter calculation: refinements and more comments 2018-10-29 18:56:26 +01:00
jean-pierre charras c05ca469ae Pcbnew, DIALOG_PLOT_BASE: Fix a minor wxWidgets alert. 2018-10-29 17:34:14 +01:00
jean-pierre charras 03f3ff79a5 Pcbnew, Gerber output: fix incorrect UUID format in %TF.ProjectId attribute.
Fixes: lp:1800459
https://bugs.launchpad.net/kicad/+bug/1800459
2018-10-29 17:34:14 +01:00
jean-pierre charras eabae68ab8 PANEL_SETUP_LAYERS_BASE: cosmetic enhancements. 2018-10-29 15:21:03 +01:00
Seth Hillbrand ed1c8eee9e async: Ensure threads are started async
It is possible for an async thread to simply be deferred if not
specifically set to async.  In which case, until the return value is
requested, the loop may simply wait.
2018-10-26 22:30:06 -07:00
Seth Hillbrand 59fb6d8851 Threading: Moving connectivity search to std::async
By decoupling from std::thread, we can avoid the wait/sleep cycle in
checking the std::atomic completion variable.  The std::future variables
are immediately returning without the additional atomic check cycle.
2018-10-26 18:00:43 -07:00
Thomas Pointhuber 0e0b4d52a2 Add initial support for Phoenix (new wxPython binding)
Based on the work of @mmccoo:
https://kicad.mmccoo.com/2017/11/23/learnings-from-moving-kicad-to-wxpython-4-0/
and this additional patchset to remove wxpy_api.h dependency:
http://mmccoo.com/random/0001-Remove-dependence-on-pywx_api.h.patch

Please note CreatePythonShellWindow changed quite a lot. Throughful testing
should be made for the old as well as new wxPython version on all platforms
2018-10-26 13:21:11 +02:00
jean-pierre charras 633bc7f2d5 Pcbnew, DIALOG_TEXT_PROPERTIES_BASE: fix many minor wxASSERTs 2018-10-26 13:09:05 +02:00
Seth Hillbrand a3bbd32953 Fix minor compile warnings 2018-10-25 17:14:04 -07:00
Seth Hillbrand 2d8f1df293 Threading: Minimize thread usage
This minimizes the thread usage, particularly during online actions such
as moving items and routing.

UpdateRatsnest:  Minimized the number of atomics by utilizing future
promise.  Avoided updating node-less nets.  Node-less nets are common in
the dynamic ratsnest because the net vector is created from the board
nets by value but only populated with a subset.  So the dynamic ratsnest
calculation always saw every net as dirty and spun up extra threads.

searchConnections: ParallelThreadCount is no longer lower bounded.
Small item counts are handled inline rather than with a separate thread.
2018-10-25 14:19:43 -07:00
Seth Hillbrand 90233e5ec6 SELECTION: Prevent double select/deselect.
When processing the selection filter, items were deselected before being
reselected after passing through the filter.  This adjusts the logic to
only deselect those items that are filtered out.
2018-10-24 17:17:45 -07:00
Jeff Young 9624ef4f2e Don't blindly overwrite footprints when doing a Save As. 2018-10-24 22:00:50 +01:00
Jeff Young 244497f514 A board FP is no longer a board FP after a Save As. 2018-10-24 22:00:50 +01:00
Seth Hillbrand a0e4e23c14 Ratsnest: Keep connectivity data local
The dynamic ratsnest did not need to have a smart pointer to the
temporary connectivity data.
2018-10-24 13:43:09 -07:00
Seth Hillbrand ec38a5cd10 Threading: Replacing sleep with yield for active wait
Some windows machines seem prone to sleeping for excessive times.  When
called in the main thread, this may prevent the system from responding
to Windows 'Are you alive?' calls.
2018-10-24 10:37:25 -07:00
Jeff Young a96dbde738 Allow net-ties within footprints.
Fixes: lp:1799318
* https://bugs.launchpad.net/kicad/+bug/1799318
2018-10-23 20:54:42 +01:00
Jeff Young adfe2fc267 Make sure user isn't surprised by Match All setting.
If they selected the dialog with a footprint selected, they're
probably not expecting Match All.
2018-10-23 20:54:42 +01:00
Wayne Stambaugh e43e3a93c0 Revert "cmake: avoid declaring a redundant concurrent _pcbnew.so target"
This reverts commit 2e047b45b4.
2018-10-22 19:12:17 -04:00
Wayne Stambaugh c99874ca2f Revert "cmake: rearranged code in the KICAD_SCRIPTING_MODULES section in order to clarify the intent"
This reverts commit 71f17a698b.
2018-10-22 19:11:11 -04:00
Roman Beranek 71f17a698b cmake: rearranged code in the KICAD_SCRIPTING_MODULES section in order to clarify the intent 2018-10-22 13:59:08 -04:00
Roman Beranek 2e047b45b4 cmake: avoid declaring a redundant concurrent _pcbnew.so target
The "renamed _pcbnew.kiface" target should only be declared for MINGW
because for Linux it would have been already declared at line 802.
2018-10-22 13:59:08 -04:00
Seth Hillbrand 3cc87b4597 PNS: Ensure we don't miss items
Higher candidate levels could override better matches if the layers did
not overlap.
2018-10-21 14:28:33 -07:00
jean-pierre charras 0f247264f8 Pcbnew: DRC ignores first net of list of nets to test.
Fixes: lp:1798985
https://bugs.launchpad.net/kicad/+bug/1798985
2018-10-21 17:01:58 +02:00
Jeff Young f17c18bcce Remove AdvanceDepth() hacks in favour of proper layers.
Also removes the bounding-box cache since the last big merge
should have sorted out the Update(GEOMETRY) calls.

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

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

Fixes: lp:1797075
* https://bugs.launchpad.net/kicad/+bug/1797075
2018-10-21 15:55:56 +01:00
jean-pierre charras 064b8a8d60 Gerber file generation: remove a optional info in .FileFunction: the layer type.
TF.FileFunction,Copper,L1,Top,Signal is now TF.FileFunction,Copper,L1,Top

This param is not useful, and probably never correctly set by users, because is is not used by Pcbnew.
(It is used only for dsn export)
2018-10-19 15:48:18 +02:00
Thomas Pointhuber e39eeb2f92 Remove debug printf and fix indentation inside of block 2018-10-19 09:59:06 +02:00
Thomas Pointhuber 95e55eb17a Fix coding style issue (space after if) 2018-10-19 09:59:06 +02:00
Thomas Pointhuber e09785db1d Introduce PyStringToWx helper to remove code duplication 2018-10-19 09:59:06 +02:00
Thomas Pointhuber ce471ec898 Fix braces 2018-10-19 09:59:06 +02:00
Thomas Pointhuber 6ac444f587 Fix style issue 2018-10-19 09:59:06 +02:00
Thomas Pointhuber 9eff4e999f Quick fix to avoid nameclash with local qrcode python package 2018-10-19 09:59:06 +02:00
Thomas Pointhuber 8bf1954625 NoneType was incorrectly passed to PyString_AsString
The implementation relied on the fact that PyString_AsString is returning NULL
for invalid inputs (and causing an error condition), which is then fixed by the
call to FROM_UTF8. Now, we will simply return an empty string if Py_None is
returned by a python fuction, which resemebles the old behaviour of those methods
2018-10-19 09:59:06 +02:00
Thomas Pointhuber a27e547290 Fix uss39_barcode.py to work with Python3 as well 2018-10-19 09:59:06 +02:00
Thomas Pointhuber 0812f71bd3 Fix builtins import in Python3 2018-10-19 09:59:06 +02:00
Thomas Pointhuber 22e5e52598 Fix warning: 'HAVE_CLOCK_GETTIME' macro redefined 2018-10-19 09:59:06 +02:00
Thomas Pointhuber 7365cb8e52 Get Exception handling working with Python 3
The old way to get the full stacktrace was incorrect, and does not work
with Python 3:
https://stackoverflow.com/questions/3702675/how-to-print-the-full-traceback-without-halting-the-program#comment84297600_33723119
2018-10-19 09:59:06 +02:00
Thomas Pointhuber 88d04f3bcb Get Action Plugins working with Python 3, fix some unicode string errors 2018-10-19 09:59:06 +02:00
Thomas Pointhuber 8805706ccb Fix incompatibilites between Python 2 and Python 3 2018-10-19 09:59:05 +02:00
Thomas Pointhuber e9da6811a6 Fix initialisation of the pcbnew python module 2018-10-19 09:59:05 +02:00
Thomas Pointhuber 284904b72c Rewrite C extensions to also support Python 3 2018-10-19 09:59:05 +02:00
Seth Hillbrand e1f30a3b38 pcbnew: Fix single-net connectivity
Ensure that changes affecting fewer than 4 nets still get updates in the
ratsnest.
2018-10-18 17:11:58 -07:00
Jeff Young a5c892d9cd Update line width each time a new object is drawn.
Fixes: lp:1797481
* https://bugs.launchpad.net/kicad/+bug/1797481
2018-10-18 15:25:56 +01:00
Tomasz Włostowski bdc64ff0b3 router: DP_GATEWAYS::FilterByOrientation() should have exactly opposite filtering condition!
Fixes: lp:1797914
* https://bugs.launchpad.net/kicad/+bug/1797914
2018-10-18 14:29:19 +02:00
Tomasz Włostowski eea949ce0a router: don't cross DP lines when length tuning, fix swap pair polarity bug
Fixes: lp:1798500
* https://bugs.launchpad.net/kicad/+bug/1798500

Fixes: lp:1798221
* https://bugs.launchpad.net/kicad/+bug/1798221
2018-10-18 13:48:43 +02:00
Jeff Young ff992f4a64 Keep track of which nets are currently in use.
Fixes: lp:1798006
* https://bugs.launchpad.net/kicad/+bug/1798006
2018-10-18 12:14:23 +01:00
Seth Hillbrand 38c5b025c8 Ratsnest: iterate only over dirty nets
Rather than forcing each thread to iterate over the full nets list to
find the dirty items, we collect the dirty items first before asking the
threads to address them.  This prevents thread spinning.  We also
amortize the cost of calculating on an 8-net per thread basis rather
than 2.
2018-10-17 17:07:29 -07:00
Jeff Young e9a80a5d7f Some minor dialog layout fixups. 2018-10-17 11:23:02 +01:00
jean-pierre charras 9795a3572d dialog_pns_length_tuning_settings: fix incorrect dialog size.
This was due to the fact sizers recalculate the sizes before initialization of a bitmap.
2018-10-17 11:48:15 +02:00
Jeff Young 6e3f226e45 Update texts with %V and %R when values or references is chosen.
(This in addition to updating them when other fields is chosen.)
2018-10-16 17:46:01 +01:00
Jeff Young 51deb9d562 Fix issue with updating Footprint graphic items.
dyn_cast doesn't handle inheritance.
2018-10-16 17:07:59 +01:00
Jeff Young ecd893c4b1 Refresh screen after filling zones.
Previous code didn't refresh until you moved the mouse.
2018-10-16 17:07:59 +01:00
Jeff Young d62145fba9 Fix compile error when not on OSX. 2018-10-15 20:54:29 +01:00
jean-pierre charras aabff98fb6 Try to fix the Jenkins link error 2018-10-15 21:43:50 +02:00
Jeff Young 59b7762981 Back out workaround f1e2f142a6.
A proper fix is in bf164f7c4b.
2018-10-15 20:33:43 +01:00
Jeff Young 3dcd52021a Simplify exchange footprints dialog and support wildcards. 2018-10-15 19:59:47 +01:00
Jeff Young 0585382986 Allow editing of library footprint from board reference. 2018-10-15 19:59:47 +01:00
jean-pierre charras 9c398dbf90 Pcbnew, CMakeLists.txt: remove duplicate lines.
For some reason, a few files were included 3 times in the same dependency. One time is enough.
2018-10-15 20:14:27 +02:00
Seth Hillbrand a7672716f8 Revert "pcbnew: Fix memory leak in Eagle importer"
This reverts commit 45d438cd13.
2018-10-15 08:26:04 -07:00
Jeff Young 0bd0558833 Auto-select reference numbers in PcbNew like we do in Eeschema. 2018-10-14 00:06:41 +01:00
Jeff Young f1e2f142a6 Work-around for preference crash with multiple GAL docs open. 2018-10-13 19:41:45 +01:00
Jeff Young 3158273c1a Revert window-locking change which didn't fix preferences crash. 2018-10-13 15:53:54 +01:00
Jeff Young 6a5744adb1 Show compile errors and go back to GLSL V120. 2018-10-13 12:39:53 +01:00
Seth Hillbrand 4a730e6c54 pcbnew: refactor connectivity locking
Locks protect the std::set in each item.  Devolving the mutex to the
CN_ITEM allows multiple threads to make simultaneous connections to
different items where they do not conflict.
2018-10-12 17:07:31 -07:00
Seth Hillbrand 59adb109a6 Organizing connectivity
Moved large routines out of headers in into cpp.  Moved trivial routines
into headers.
2018-10-12 16:31:09 -07:00
Seth Hillbrand cfaf7c1f23 pcbnew: re-organizing connectivity
The connectivity files were unwieldy.  This separates them logically
into data, algo and items where the items classes are those that hold,
surprise, surprise, the items, lists and clusters.
2018-10-12 16:31:09 -07:00
Seth Hillbrand 4460313104 pcbnew: Separating connectivity to subdir 2018-10-12 16:31:09 -07:00
Seth Hillbrand 9e4cad666e pcbnew: Code Cleanup removing unused fns
IsDirty() is generic, so we keep the clearer m_items.isDirty() sub
function and clear out old defs.
2018-10-12 16:31:09 -07:00
Seth Hillbrand cc776f71a9 pcbnew: Code cleanup
Moving functions to std:: algorithms where feasible to reduce the code
burden.
2018-10-12 16:31:09 -07:00
Seth Hillbrand 915d2ed374 pcbnew: Zone tool follows active layer
Refactor the polygon event loop into its parent function to allow access
to the params structure.  Active layer now updates the drawing layer for
add/cutout zones.

Fixes: lp:1797483
* https://bugs.launchpad.net/kicad/+bug/1797483
2018-10-11 21:16:05 -07:00
Seth Hillbrand 4f672f0d39 Fixing a number of dynamic_casts
Dynamic casts should only be used when we explicitly check for the
resulting pointer to be NULL.  Where we know the class is castable we
can use static_cast, save on overhead and ensure our resulting pointer
is non-null.
2018-10-11 15:24:12 -07:00
Jeff Young 732e0b0bf8 Remove extra rebuild of toolbar.
It's called from CommmonSettingsChanged() anyway.
2018-10-11 18:53:00 +01:00
Jeff Young d9bf1550e4 Improve slightly confusing error message. 2018-10-11 18:53:00 +01:00
Jeff Young 609d497870 Remember settings in Global Track & Via Properties dialog. 2018-10-10 19:49:06 +01:00
Jeff Young a02e83ebdb Remove deleted footprints from selection.
Fixes: lp:1797001
* https://bugs.launchpad.net/kicad/+bug/1797001
2018-10-10 10:59:50 +01:00
Jeff Young ab67d2f81a Another go at fixing units changes for rulers.
The previous fix only worked for hot-key changes.  This should
include using the toolbar, menu, etc.
2018-10-10 10:59:50 +01:00
Jeff Young e79e2f0175 Remove properties flag from via placer so single-click mode works.
Fixes: lp:1796769
* https://bugs.launchpad.net/kicad/+bug/1796769
2018-10-10 10:59:50 +01:00
Seth Hillbrand abdb91203f pcbnew: Position relative using pad
Positioning a pad relative to an item in the board edit should move the
footprint not the pad.

Fixes: lp:1796995
* https://bugs.launchpad.net/kicad/+bug/1796995
2018-10-09 22:05:41 -07:00
Seth Hillbrand 9a86b26b82 pcbnew: Distribute footprints not pads
When using the board edit, align tool automatically moved footprints
instead of pads but distribute tool did not.  This standardizes the
behavior.

Fixes: lp:1796997
* https://bugs.launchpad.net/kicad/+bug/1796997
2018-10-09 22:01:23 -07:00
Seth Hillbrand 13997f0050 Revert "pcbnew: Adding copy constructors to PNS items"
This reverts commit 41e4bc4d9f.

This commit requires additional testing before recommitting as it causes
issues with FindJoint().
2018-10-09 14:50:20 -07:00
Jeff Young c5499a6b19 Use ChangeValue() so design rules popup doesn't get cleared.
Fixes: lp:1796780
* https://bugs.launchpad.net/kicad/+bug/1796780
2018-10-09 21:33:43 +01:00
Seth Hillbrand 808a7d9483 pcbnew: Fix crash when GAL fallback fails in some cases 2018-10-09 09:05:14 -07:00
Seth Hillbrand 246f49b8cb pcbnew: Fix Footprint selection to only footprint area
Fixes: lp:1796866
* https://bugs.launchpad.net/kicad/+bug/1796866
2018-10-09 05:53:31 -07:00
Seth Hillbrand 4e06494105 pcbnew: Fix minor bug in tracks cleaner
Allow rebuild of track connection info when modified is true.
2018-10-09 05:43:26 -07:00
Seth Hillbrand 1a6f039bb5 pcbnew: Fix minor miscalculation in dp length
The commonParallellProjection had an odd ordering of parameters that was
not followed by callers.  This corrects the ordering to standard for
each.
2018-10-09 05:37:48 -07:00
Seth Hillbrand 41e4bc4d9f pcbnew: Adding copy constructors to PNS items
Adding safe copy constructors to PNS items including assignment check
and copy operations
2018-10-09 05:37:48 -07:00
Seth Hillbrand e1fe3c7ed4 GRID_HELPER: Remove double-check condition
We only need to check nearest once.
2018-10-09 05:37:48 -07:00
Seth Hillbrand 8189fbe85c pcbnew: Fix issue suppressing Creation Date
Typo in file could lead to creation date being suppressed if timezone
could not be determined.

Also fixed a few wide chars in comments
2018-10-09 05:37:48 -07:00
Seth Hillbrand 10d348999e pcbnew: Fix minor counting issue
The evaluation of count_if resulted in a 0 or 1, leading to segment zone
fills always running on single processor and the progress bar showing
incorrect status.  Likely infrequently hit as only affected segment
fills.
2018-10-09 05:37:48 -07:00
Jeff Young 9dfcc839a4 Fix color issues with cursor and sheet pins. 2018-10-09 11:08:56 +01:00
jean-pierre charras f283667fb0 add option to switch between opengl and cairo in eeschema (step 1) 2018-10-09 11:08:56 +01:00
Jeff Young 42ee4f79e4 Fix assert in Graphic Item Properties.
Fixes: lp:1792201
* https://bugs.launchpad.net/kicad/+bug/1792201
2018-10-09 11:08:56 +01:00
Jeff Young 46426f1196 Fix segfault when routing.
Fixes: lp:1792037
* https://bugs.launchpad.net/kicad/+bug/1792037
2018-10-09 11:08:56 +01:00
jean-pierre charras 906c52deff minor compil warnings and drawings fix 2018-10-09 11:08:55 +01:00
Jeff Young 3c82ad3220 Finish up the block rotate/mirror fixes.
Block rotate and mirror now work like they do in Pcbnew (that is
they're treated as part of the block move/duplicate/whatever
rather than finishing it).

Fixes: lp:1780794
* https://bugs.launchpad.net/kicad/+bug/1780794
2018-10-09 11:08:55 +01:00
Tomasz Wlostowski e439b17fa1 eeschema-gal: make sure all other Kicad apps compile after eeschema gal hacks 2018-10-09 11:08:52 +01:00
Maciej Suminski d599a02a90 Fix unused variable warnings 2018-10-09 09:14:51 +02:00
Seth Hillbrand f11cb736e5 pcbnew: Zone selection heuristic continuity for edge
If the user is carefully selecting the zone edge, we do not filter the
zone preemptively from our disambiguation list in the same manner as we
do for selecting on zone copper.

Fixes: lp:1796719
* https://bugs.launchpad.net/kicad/+bug/1796719
2018-10-08 11:31:52 -07:00
Seth Hillbrand 3ee72031a4 pcbnew: Follow cursor when editing polygon
Fixes: lp:1796721
* https://bugs.launchpad.net/kicad/+bug/1796721
2018-10-08 10:32:30 -07:00
Seth Hillbrand 77eeda4191 pcbnew: fix pad distance calc in gateways
The pad distance was fixed to 0, making the gateway priority set
artificially to 1
2018-10-08 09:53:47 -07:00
Seth Hillbrand 1828e8cb0f pcbnew: Use Default width define instead of nums
The board design settings file keeps our default values for various
thicknesses.  We use this to replace a number of magic numbers with the
defined value to help self-document the code.
2018-10-08 09:17:40 -07:00
Seth Hillbrand ecc80c00a5 pcbnew: Initialize DRAWSEGMENT to default width
The check against S_POLYGON was always false because we set the default
type to S_SEGMENT.  This unifies the magic numbers to the board design
settings file
2018-10-08 09:07:24 -07:00
Seth Hillbrand 45d438cd13 pcbnew: Fix memory leak in Eagle importer
unqiue_ptr release creates a memory leak unless the returned pointer is
freed.
2018-10-08 08:47:58 -07:00
Seth Hillbrand af8715da80 pcbnew: Fix missing board settings class
Fixes: lp:1796541
* https://bugs.launchpad.net/kicad/+bug/1796541
2018-10-07 08:31:49 -07:00
Seth Hillbrand 9505df5997 GRID_HELPER: Fix ALT issue with snapping
Disabling the grid should leave the snapping in place.  But our disabler
returned the current point as closest, effectively always ensuring the
cursor position was the closest snap.  This only uses grid when
requested.
2018-10-07 08:23:45 -07:00
Seth Hillbrand ae7f04a20c pcbnew: snap after constraint and grid
This is temporary until we figure out a way to do multiple constraint
handling in GRID_HELPER or the EC_* class.  This will work as long as
the EC constraint helper places the endpoint on either the primary or
aux grid.

    Fixes: lp:1796540
    * https://bugs.launchpad.net/kicad/+bug/1796540
2018-10-07 08:23:45 -07:00
Seth Hillbrand ebfa7d1f7d pcbnew: Remove maximum zone corner radius
We no longer require this as we calculate the number of segments based
on the maximum deviation rather than fixed numbers.

Fixes: lp:1780518
* https://bugs.launchpad.net/kicad/+bug/1780518
2018-10-06 22:01:39 -07:00
Seth Hillbrand 1ee579c821 pcbnew: Set graphic line width based on layer
Get the board settings when changing the drawing layer.  These include
default line thickness that should be updated.

Fixes: lp:1796489
* https://bugs.launchpad.net/kicad/+bug/1796489
2018-10-06 21:42:25 -07:00
Seth Hillbrand 821b10a37e pcbnew: Drawing tool's crosshairs follow the element
When drawing the crosshair should track the element while the mouse
provides the position to calculate the next snap.

Fixes: lp:1796524
* https://bugs.launchpad.net/kicad/+bug/1796524
2018-10-06 20:27:18 -07:00
Seth Hillbrand 85194989b2 pcbnew: Ensure that dimension tool snaps to anything
The dimension tool is used to measure physical dimensions on the board
therefore it should be able to snap to any other object, not just those
on its own layer set as is the case for other items.

This also deals with a corner snap case for constraints by first
snapping, then constraining, then aligning to grid.  This ensures OoO
for alignment from least to most constraining.
2018-10-06 19:55:20 -07:00
Seth Hillbrand 3b27049f6e GRID_HELPER: filter selected items from snap target
When considering potential targets for snap points, we need to exclude
the currently selected item as this will mean that we always snap to
ourselves when editing an existing item.

Fixes: lp:1796507
* https://bugs.launchpad.net/kicad/+bug/1796507
2018-10-06 19:38:26 -07:00
Seth Hillbrand d669ae043a GRID_HELPER: Standardize grid helper logic to dim
Places dimension tool under same snapping logic as rest of draw tools

Fixes: lp:1796498
* https://bugs.launchpad.net/kicad/+bug/1796498
2018-10-06 09:53:14 -07:00
Seth Hillbrand da3afd4abd GRID_HELPER: Avoid inactive layers when snapping 2018-10-06 09:52:21 -07:00
Seth Hillbrand 776d12c529 GRID_HELPER: Measurement snapping points
Measurements should snap to the points that are used for controlling the
measurement.
2018-10-06 09:29:19 -07:00
Seth Hillbrand f2a49c6bd6 pcbnew: Get anchor from layer when drawing
When drawing segments, the segment will be NULL'd after committing, at
which point we lost our snap layer.  Choosing snap layers from the
current drawing layer is a more robust method.

Fixes: lp:1796467
* https://bugs.launchpad.net/kicad/+bug/1796467
2018-10-06 08:18:31 -07:00
Seth Hillbrand 8c56f5b035 pcbnew: Allow deselection when clicking on zone
Deselection by clicking on a zone makes working with plane zones easier
by allowing the selected item to de-selected by clicking on a zone.
Once the selection is cleared, the zone may be re-selected as normal.
Clicking on non-zone items while a separate item is selected will still
select the new non-zone item without requiring a second click.
2018-10-05 21:20:32 -07:00
Seth Hillbrand 502383b759 pcbnew: Adjust selection behavior in highlight net
Prefer non-zones in highlight net in the same way we do for the
selection tool.  Highlight net just has separate logic and was missed
previously.
2018-10-05 21:20:26 -07:00
Seth Hillbrand 4efc8dec88 pcbnew: Skip the full itemlist search when updating
Updating connectivity should not need to iterate over the full item list
in each thread.  Instead, we collect the dirty items first and then
iterate only over the dirty list.
2018-10-05 15:08:25 -07:00
Seth Hillbrand bc02044767 pcbnew: Avoid spinning up thread when routing
Our connectivity data threads the ratsnest update based on the number of
nets that have changed.  If we are only changing one net (the case when
routing) then making a full thread to update the net is pointless
because we wait for the thread to finish before continuing.  This spins
that off to an inline lambda for single updates while still making
threads for multiple ratsnest changes.
2018-10-05 15:04:29 -07:00
Seth Hillbrand 2db3f859f7 GRID_HELPER: Show snap indicator when would snap
This shows the snap indicator even when the item we are snapping to
occurs on a grid point, giving the user an indication that the point is
correctly connected.
2018-10-05 14:33:48 -07:00
Jeff Young 9e828e0d94 Don't default Use Netclass Values to on.
Fixes: lp:1795939
* https://bugs.launchpad.net/kicad/+bug/1795939
2018-10-05 15:11:18 +01:00
Jeff Young 9a213207fb Clearer titles for editing board footprints.
Also cleans up the naming on the symbol editor side.
2018-10-05 14:17:58 +01:00
Jeff Young 895e187ca0 Add a bit more space for those using larger fonts. 2018-10-05 14:17:58 +01:00
Seth Hillbrand ee676b74d5 pcbnew: Move measure tool to common GRID_HELPER
This removes the last of the Magnetize legacy code from GAL,
standardizing the key bindings and magnetic effects in the GAL canvas
2018-10-04 21:31:57 -07:00
Seth Hillbrand 4c6b84bfdb GRID_HELPER: enable/disable grid in editor with ALT
Apply optional grid while editing
2018-10-04 21:31:28 -07:00
Seth Hillbrand 28c19cb613 GRID_HELPER: Allow grid disable
Many items require precise, non-grid movement.  Adding the ability to
flag a non-grid option will permit this behavior.

This is a required precursor commit to fixing lp:1738818 and lp:1771683
2018-10-04 21:23:50 -07:00
Seth Hillbrand f56b5cf7bd GRID_HELPER: Match layer set when snapping
This allows items to snap to multi-layer target anchors such as vias and
through hole pads.
2018-10-04 21:23:49 -07:00
Seth Hillbrand f8f2af774c GRID_HELPER: Fill out remaining anchor calculations
The computeAnchors function is used to find best drag locations for
items being moved.  All movable PCB items should be handled.

Fixes: lp:1794304
* https://bugs.launchpad.net/kicad/+bug/1794304
2018-10-04 20:25:13 -07:00
Seth Hillbrand 853b9d06ad pcbnew: Fix snapping while moving on pads
When requesting to move a footprint based on the pad, the pad layers
should determine the snapping.  This extracts layers from the selected
pad before allowing the filtering for locked pads

Fixes: lp:1787627
* https://bugs.launchpad.net/kicad/+bug/1787627
2018-10-04 15:53:41 -07:00
Seth Hillbrand 1ff9931333 pcbnew: Remove legacy Magnetize() from GAL picker
Magnetic items handled by GRID_HELPER in GAL.  Also includes the
standard keyboard modifier shift to change magnetic items on/off
2018-10-04 15:48:15 -07:00
Seth Hillbrand 11b45002e1 pcbnew: Code formatting 2018-10-04 08:17:48 -07:00
Seth Hillbrand a4966adb67 pcbnew: Don't call evt->pos for non-mouse events
Since we are handling snapping in the grid helper, we don't need to
enable it in the cursor position return.  This allows the grid helper to
use the frame position while optionally snapping to segments.
2018-10-04 07:29:41 -07:00
John Beard 445a9fa963 Put cursor and pan control in libcommon/tool, enable in Gerbview
Put the cursor and pan control TOOL_ACTIONs in ACTION,
and refer to them in that way.

The handlers are currently identical in Pcbnew and Cvpcb,
and Gerbview (and all canvases) can benefit from them as well
if they are in libcommon. Also saves duplicated code.

Fixes: lp:1795855
* https://bugs.launchpad.net/kicad/+bug/1795855
2018-10-04 11:41:06 +02:00
Seth Hillbrand 03e642a8db pcbnew: Implement consistent graphical snapping
This creates a standard snapping framework in the GRID_HELPER class that
allows snapping to items on the same layer as the object being
created/moved as well as consistent toggling of this using the Shift key
modifier.

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

Fixes: lp:1604616
* https://bugs.launchpad.net/kicad/+bug/1604616
2018-10-03 17:23:56 -07:00
Seth Hillbrand f714d2fa64 pcbnew: draw polygon and element previews on layer
This ensures that when starting to draw a zone or graphic element, the
preview is drawn in the same color/on the same layer as the element that
will be created.  Previously, beginning a graphic polygon while a copper
layer was active would result in the preview being drawn in the color of
the active copper layer.
2018-10-03 17:23:56 -07:00
Jeff Young c9ca1013b2 Make ModEdit and LibEdit library tree actions more consistent.
Adds Cut/Copy/Paste and Revert for footprints; introduces a new
shared Revert Changes? dialog; hooks up Add Library for footprints,
standardizes the Save As terminology.
2018-10-03 22:46:41 +01:00
Jeff Young b08766a2fa Scroll Footprint Viewer to selected item when opening. 2018-10-03 22:46:41 +01:00
Seth Hillbrand 6c693f80a7 pcbnew: Fix polygon corner adding in board editor
Polygon corners were enabled in the footprint editor but the logic
didn't extend to the board editor.  This revises the logic to look for
DRAWSEGMENTs and only reference the PCB_MODULE_EDGE_T where needed to
create a new segment in the footprint.

Fixes: lp:1782966
* https://bugs.launchpad.net/kicad/+bug/1782966
2018-10-03 11:29:02 -07:00
Seth Hillbrand 6a6d580a1c pcbnew: Improve zone/polygon selection
Allows selection of polygons and zones by their visible area.  Will only
select polygons/filled areas when they are unobstructed by other
elements in the footprint/pcb.  Also adds a "skip heuristics" modifier
key for clicking (ALT) that allows the full disambiguation list to be
displayed without removing less-likely elements.  This dovetails the
zone/polygon selection as it allows selecting even when areas a fully
overlapped.

Fixes: lp:1753153
* https://bugs.launchpad.net/kicad/+bug/1753153
2018-10-03 06:23:35 -07:00
jean-pierre charras 2c0fe8f595 Pcbnew: minor fix: avoid flicker in Layer Manager when closing Pcbnew.
It was due to useless paint events during closing, on some platforms.
2018-10-03 09:46:17 +02:00
Seth Hillbrand 57ceec5606 pcbnew: Allow DRC violations when requested in dp 2018-10-02 14:39:53 -07:00
Jeff Young fb4ae4e218 Update FP editor title after a Save As. 2018-10-02 21:05:14 +01:00
Jeff Young 536451138d Make sure fixes to netlist stuff are done on both sides.
This fixes the CmpNoCase() == 0 bug on one side, and the
footprint == null bug on the other side; both of which were
previously fixed on only one side.

Fixes: lp:1795561
* https://bugs.launchpad.net/kicad/+bug/1795561
2018-10-02 18:18:37 +01:00
Jeff Young afd518d1e8 Better logic for footprint loop.
Fixes: lp:1795288
* https://bugs.launchpad.net/kicad/+bug/1795288
2018-10-01 22:05:47 +01:00
Jeff Young dfe164e0dc Only clear link when adding footprint from library, cache, etc.
Fixes: lp:1792256
* https://bugs.launchpad.net/kicad/+bug/1792256
2018-10-01 19:22:42 +01:00
jean-pierre charras db5386467b Re activate Zone Unfill All command, accidentally removed by a previous commit.
Fixes: lp:1795293
https://bugs.launchpad.net/kicad/+bug/1795293
2018-10-01 09:04:14 +02:00
Seth Hillbrand 89a3d2b451 pcbnew: Force at least one connectivity thread
We want to keep at most 1 thread per 2 connectivity updates but we need
to force that floor to be at least 1 for when there is only 1
connectivity update.

Fixes: lp:1795245
* https://bugs.launchpad.net/kicad/+bug/1795245
2018-09-30 12:13:57 -07:00
Jeff Young f06bf81651 Don't deselected items that have been deleted.
De-referencing freed memory is never a good idea.

Fixes: lp:1795195
* https://bugs.launchpad.net/kicad/+bug/1795195
2018-09-30 15:47:18 +01:00
Seth Hillbrand ef6f7e96f3 pcbnew: Handle SEGZONE in GAL
SEGZONEs are no longer created by pcbnew but may exist in older boards.
This allows deleting the old fills in a manner similar to the deletion
in Legacy canvas.

Fixes: lp:1794571
* https://bugs.launchpad.net/kicad/+bug/1794571
2018-09-29 15:09:15 -07:00
Seth Hillbrand b3a5e08c2f pcbnew: Rename PCB_ZONE_T and remove from connectivity
SEGZONE types were confusingly named PCB_ZONE_T.  Zones in pcbnew are
now _only_ PCB_ZONE_AREA_T, so we name segzone types PCB_SEGZONE_T to be
clear.

This also removes processing of the SEGZONEs from connectivity
calculations.
2018-09-29 15:09:15 -07:00
Seth Hillbrand a81e3c2b13 pcbnew: Avoid double-separators in context menu 2018-09-29 15:09:15 -07:00
Jeff Young b49ca04355 Remove max length on layer names.
Fixes: lp:1745587
* https://bugs.launchpad.net/kicad/+bug/1745587
2018-09-29 22:07:31 +01:00
Jeff Young 19b1ae35ce Don't assume GetFlags() != 0 means it's being edited.
It could just mean it's selected, highlighted or brightened.

Fixes: lp:1794624
* https://bugs.launchpad.net/kicad/+bug/1794624
2018-09-27 22:18:13 +01:00
Seth Hillbrand 317ca8e64d pcbnew: Do not allow drag to violate DRC without permission
m_dragstatus is set to true when a valid route is created given the
user's constraints.  We need to check this before committing the route
to the board.

Fixes: lp:1794810
* https://bugs.launchpad.net/kicad/+bug/1794810
2018-09-27 13:08:22 -07:00
Jeff Young fac5fcb476 Don't draw the pad preview highlighted. 2018-09-27 17:46:51 +01:00
Jeff Young 50b96b406f More net selector fixes. 2018-09-27 16:58:12 +01:00
jean-pierre charras 1685af8425 dialog_track_via_properties_base.cpp: fix a few wxWidgets alerts. 2018-09-27 13:36:50 +02:00
Jeff Young 6764cda34d Fix issues with pad locking.
Fixes: lp:1794548
* https://bugs.launchpad.net/kicad/+bug/1794548
2018-09-26 21:57:35 +01:00
Seth Hillbrand 65678b223a pcbnew: Fixup for 491098af3
Unselecting performs two functions: unselecting and unhighlighting.
Some items may be deselected but still live in the temporary highlighted
layer (e.g. selecting a footprint and exchanging it).  Since there is no
harm in unselecting an unselected item, we can allow it to proceed
without the check.
2018-09-26 08:54:09 -07:00
Wayne Stambaugh b487a8c70e Pcbnew: fix track and via properties dialog control alignment issues. 2018-09-26 09:15:58 -04:00
Seth Hillbrand 491098af35 pcbnew: Deselect all items in a delete commit at once
Deselecting each individually had the side-effect of possibly re-drawing
the view in between actions, leading to visible artifacts in the router
(where invisible items are set visible before committing a change)
2018-09-26 05:41:14 -07:00
Baranovskiy Konstantin f68581d463 Pcbnew: fix column width in Nets dialog.
Nets dialog (Inspect->List Nets) contains list control
that has very small width for first and last columns.
Changed algorithm for calculating optimal values for
column width.
2018-09-26 04:26:09 -07:00
Jeff Young 86b654e493 Hook up 3D viewer to common preferences.
Also removes nanny limits on text sizes.

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

Fixes: lp:1794345
* https://bugs.launchpad.net/kicad/+bug/1794345
2018-09-25 20:47:03 +01:00
Jeff Young dfd028a66a Don't gray out non-enabled layers in layers setup panel.
Fixes: lp:1794215
* https://bugs.launchpad.net/kicad/+bug/1794215
2018-09-25 20:47:03 +01:00
Baranovskiy Konstantin 12e38bc5fa Pcbnew: make units in ViaSizeSelectBox translatable. 2018-09-25 12:27:06 -07:00
Baranovskiy Konstantin 682cb3abe1 Pcbnew: make "Swap Layers" title translatable. 2018-09-25 12:18:50 -07:00
Jeff Young 37f7faf433 Move lock checks to CLIENT_SELECTION_FILTER.
Also checks render item visibility as well as layer visibility
when making selections.

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

Fixes: lp:1541756
* https://bugs.launchpad.net/kicad/+bug/1541756
2018-09-25 17:56:38 +01:00
Seth Hillbrand 686f1b878b Prevent re-testing DRC on zones
We only need to test zone connections once, so we skip the double-check
from the nested loop unless we are only checking a single zone.  Then
the second loop needs to iterate over the full list of zones.
2018-09-25 09:24:34 -07:00
Seth Hillbrand b1d44ed415 Revert "Don't double-check all zones."
This reverts commit b842e4556d.

When a specific zone is tested, we need to iterate over all other zones
on the board.
2018-09-25 08:48:22 -07:00