Commit Graph

9979 Commits

Author SHA1 Message Date
Seth Hillbrand bf3cb0b1d0 Standardize pad type enums 2020-09-30 08:38:35 -07:00
Jeff Young 673b52b5c4 Non-copper zones need a different trim-outside-board strategy.
The copper zones are checking for any point being outside the board
as they will have already been broken in to islands either entirely
outside or entirely inside the board.  Not so for non-copper zones.

However, non-copper zones are *already* trimmed to the board edges,
so we just need to avoid using the above faulty assumption.

Fixes https://gitlab.com/kicad/code/kicad/issues/5811
2020-09-30 11:50:51 +01:00
Jeff Young d3f8f2b81e Remove confusion between pad->IsOnLayer and pad->IsPadOnLayer 2020-09-30 11:50:51 +01:00
Jon Evans 31549cdc10 Clean up some things about pad locking
Allow selecting pads on a locked footprint (but not editing)
Don't create point editor for pads that should be locked

Fixes https://gitlab.com/kicad/code/kicad/-/issues/5829
2020-09-29 18:53:49 -04:00
Jeff Young ab033327c7 Limit checks need to be done at start, not end.
(We also use the limit checks to ignore violations.)

Fixes https://gitlab.com/kicad/code/kicad/issues/5831
2020-09-29 21:23:26 +01:00
Jeff Young 2cf303bb09 Test against pad hole cylinder when pad is not on layer. 2020-09-29 18:18:19 +01:00
Jeff Young 95f12d0826 Add some missing includes. 2020-09-29 16:32:44 +01:00
Jeff Young d0773cbe89 Be more careful with iterators when deleting.
Fixes https://gitlab.com/kicad/code/kicad/issues/5811
2020-09-29 14:11:32 +01:00
Jeff Young 66454ec895 Don't do hole-to-pad clearance testing on compound pads.
Fixes https://gitlab.com/kicad/code/kicad/issues/5822
2020-09-29 14:11:32 +01:00
Jeff Young d70f812255 Fix some initialisation issues in the Python framework.
Fixes https://gitlab.com/kicad/code/kicad/issues/5824
2020-09-29 14:11:32 +01:00
Jon Evans 4bb3e9dd98 Better handling of rounded pad shapes in GRID_HELPER 2020-09-28 23:59:44 -04:00
Jon Evans 30663c293c GRID_HELPER: allow snapping to collinear points 2020-09-28 21:38:08 -04:00
Jon Evans fe0f6b5ac7 ADDED: snapping to pad shape endpoints and midpoints
ADDED: snapping to rectangle midpoints

Fixes https://gitlab.com/kicad/code/kicad/-/issues/4749
2020-09-28 21:38:08 -04:00
Jon Evans e4ca4a2a47 REMOVED: "Delete twice to delete locked" action
Now that it is possible to disable selection of locked
items, it is better to just prevent accidental editing
of locked items

Fixes https://gitlab.com/kicad/code/kicad/-/issues/5793
2020-09-28 21:38:08 -04:00
Jon Evans 74b0e1fa47 Break apart locked items from the rest of the selection filter
Disable selection of locked items by default

See discussion in https://gitlab.com/kicad/code/kicad/-/issues/5793
2020-09-28 21:38:08 -04:00
Jeff Young 8dfb5b5640 Go back to separate intermediate and final corner strategies.
While we can *almost* get away with only chamfering/rouding acute
corners, some ugly edge cases turn up.

Fixes https://gitlab.com/kicad/code/kicad/issues/5581
2020-09-29 00:51:36 +01:00
Jeff Young bf67648562 Support optional location reporting in SHAPE collisions.
Also fixes a few bugs in the collision routines.
2020-09-28 23:28:33 +01:00
jean-pierre charras 39d2a46b30 Avoid Pcbnew crash when double clicking in DIALOG_DRC on a error item. 2020-09-28 21:07:51 +02:00
jean-pierre charras c21883c8c9 fix minor I18n issues. 2020-09-28 20:52:55 +02:00
PJM 258d1a1971 Pcb: Get proper "Break Track" location when invoked from RMB context menu
When invoking "Break Track" from the RMB context menu, Pcbnew
gets and uses the current position of the mouse to figure out where to
break the track.  The problem is that the mouse has to be moved to select
the "Break Track" menu item, and the mouse position used is wrong.  This
can result in the break in the wrong location or not happening at all.

CHANGED: This commit determines if the "Break Track" was invoked from a
context menu or a hotkey.  If a hotkey, it uses the current mosue position.
If a context menu, it uses the original postion of the mouse when the menu
was opened.
2020-09-28 16:56:02 +00:00
Mario Luzeiro 456112de03 Request redraw of 3D-Viewer when moving a footprint 2020-09-28 02:26:25 +00:00
Mario Luzeiro 5a362dfeeb Request redraw of 3D-Viewer when a selection from Schematic is made 2020-09-28 02:26:25 +00:00
Mario Luzeiro a1e94c2583 3D-Viewer: request a redraw when a footprint is selected in pcbnew 2020-09-28 02:26:25 +00:00
Roberto Fernandez Bautista 72b904a978 ADDED: CADSTAR Archive project importer 2020-09-27 23:50:20 +00:00
Roberto Fernandez Bautista 39995341d9 Compile fixes
Fix compile error
Fix string format to use %ld instead to work on clang in CADSTAR Archive importers
Add virtual destructor to CONNECTION in CADSTAR_ARCHIVE_PARSER
2020-09-27 22:05:07 +00:00
Jeff Young db1d3ea710 Update track, via and pad clearances for the current layer.
Fixes https://gitlab.com/kicad/code/kicad/issues/5797
2020-09-27 21:33:37 +01:00
Jeff Young 09ab269770 Support for 'L' in DRC expression language.
Also make layer testing work again against both canonical names and
user names.
2020-09-27 21:33:37 +01:00
Jeff Young a2d9acb647 Rename DRC rule function onLayer to existsOnLayer.
Fixes https://gitlab.com/kicad/code/kicad/issues/5647
2020-09-27 21:33:37 +01:00
Roberto Fernandez Bautista 6f5f6a0fba CADSTAR Schematic / PCB Archive Importers: Fix string formatting asserts 2020-09-27 18:14:02 +01:00
Roberto Fernandez Bautista 93242eb3ad CADSTAR Schematic / PCB Archive Importers: Add missing import warnings and fix code formatting 2020-09-27 18:14:01 +01:00
Roberto Fernandez Bautista 2d99703e28 CADSTAR Schematic Archive Importer: Load all Sheets and Hierarchical Blocks 2020-09-27 18:13:58 +01:00
Roberto Fernandez Bautista 646a733556 CADSTAR Schematic Archive Importer: Parse all elements 2020-09-27 18:13:57 +01:00
Roberto Fernandez Bautista 1b20a2910a Move all common CADSTAR Importer Parser code
Move all common code from CADSTAR_PCB_ARCHIVE_PARSER (pcbnew) to CADSTAR_ARCHIVE_PARSER (common)
2020-09-27 18:13:56 +01:00
Tomasz Wlostowski c5c6b97c8b drc: fixed warnings in length matcher 2020-09-27 17:51:16 +02:00
Tomasz Wlostowski fbb669aa75 drc: diff pair test provider reports gap & max uncoupled length violations. 2020-09-27 17:50:57 +02:00
Tomasz Wlostowski 8e9a39e17c drc: fix incorrect DRCE_LAST 2020-09-27 17:50:24 +02:00
Tomasz Wlostowski 3cca2ace44 pcbnew: fix warnings in FROM_TO_CACHE 2020-09-27 17:49:54 +02:00
Tomasz Wlostowski 5874373a0c drc: unfinished version of diff pair gap/coupled length test 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski 9b4504e73f drc: report from-to paths for length matched signals 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski adf7d3260d drc: parse diff pair constranits 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski cb2dfcde83 drc: error codes for diff-pair related stuff 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski 3654e7b795 pcbnew: add QueryFromToPath() method to FROM_TO_CACHE 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski bd0bd5b84b drc: support for skew & via_count constraints. Length test now generates a length report 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski f38147c201 drc: add support for via_count constraint to the parser 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski 7b7c3bde88 pcb_new: CONNECTIVITY_DATA now keeps a cache of DRC from-tos 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski bc7369d70c pcbnew: include silk2silk and length/skew DRC tests in the makefile 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski 8d206a9ef0 PCB_EXPR_EVALUATOR: added fromTo() method 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski 2258c861c9 drc: initial version of matched trace lengths test provider 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski 2bacfe8202 drc: use R-Tree intersection for silk clearance tests 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski b215361b30 drc: default constraints for silk2pad, silk2silk 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski 26e7dc6e14 drc: added length/skew constraint types 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski abe354773f drc: initial version of tree intersection (QueryCollidingPairs) 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski 8405793e57 drc: add error codes for length/skew/via count violations 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski 201a630740 drc: extend drc-rules file format with length and skew tokens 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski 6578a76b72 drc: first R-tree based test (silk to pad clearance) 2020-09-27 16:45:46 +02:00
Tomasz Wlostowski 43404d4577 drc: be more verbose when skipping LVS due to lack of schematic netlist 2020-09-27 16:45:46 +02:00
PJM 9544c58bd7 Pcbnew: Cross-probe - Get correct zoom direction when view flipped
CHANGED: When Pcbnew has the view flipped, it causes cross-probe zooming
to go the wrong direction.  Instead of zooming in to the selected part,
it zooms very wide.  The problem is the x dimension of the screen size
becomes a negative value when the view is flipped, so "fabs()" is used
to correct it.

Fixes https://gitlab.com/kicad/code/kicad/issues/5157
2020-09-27 13:29:02 +00:00
jean-pierre charras 6b958ff4e0 Move specialized plotter classes from plotter.h to specific plotter_xx.h
plotter.h contains now only a header common to all plotters.
The code does not actually change, but it allows modifying a specific plotter
without recompiling most of kicad files.
2020-09-27 09:54:39 +02:00
Ian McInerney fc565edb33 Add a palette to the toolbars to display groups of actions
This adds a palette to toolbar items that displays groups
of actions when long-pressed on a button.
2020-09-27 01:00:44 +01:00
Jeff Young 23938356b9 Move "selection copied" to the status bar. 2020-09-27 00:26:18 +01:00
Jeff Young 4c21668940 Use high-contrast layer to inform clearance rules for outline.
Fixes https://gitlab.com/kicad/code/kicad/issues/5797
2020-09-27 00:11:51 +01:00
Jeff Young 7f33c229d8 Allow selection of nested items (ie: pads) inside an entered group.
Also moves some group-related functionality from BOARD to PCB_GROUP.
2020-09-26 20:35:52 +01:00
Jon Evans b6e4b7bf7d Fix order of initializing tools when loading board
Also add a few safeguards against invalid situations

Fixes https://gitlab.com/kicad/code/kicad/-/issues/5801
2020-09-26 14:45:16 -04:00
Jeff Young 7300640da0 Reload DRC rules on MODEL_RELOAD.
Fixes https://gitlab.com/kicad/code/kicad/issues/5794
2020-09-26 16:49:09 +01:00
Jeff Young f8875bc5a6 Move std::contains to alg::contains. 2020-09-26 14:42:40 +01:00
Jeff Young 035abe960c Fix copy/paste of groups.
We can't check for selected on parent groups because the order isn't
defined (and the parent may not yet have been selected).  Check for
inclusion instead.
2020-09-26 12:40:48 +01:00
Jeff Young d7e80f8008 Add std::contains() to simplify a lot of code. 2020-09-26 12:40:32 +01:00
Jeff Young e32c113249 A bit more syntax help for layers. 2020-09-26 10:20:10 +01:00
Jeff Young 44af3978af Re-implement undo/redo of group ops in a pointer-safe way. 2020-09-26 10:03:13 +01:00
Jon Evans 92c8ed2943 Fix non-copper zone layer ordering
Fixes https://gitlab.com/kicad/code/kicad/-/issues/5350
2020-09-25 23:10:52 -04:00
Jon Evans 597a212313 Fix saving of filled polys with custom layer names 2020-09-25 22:38:01 -04:00
Jon Evans 6df4a0cc7f Clean up asserts when running DRC from Python 2020-09-25 21:28:04 -04:00
Jon Evans bb8aa70ad0 Fix copy pasta 2020-09-25 21:28:04 -04:00
Jon Evans f4a8275f3e Allow selecting pads of locked footprints when filter allows
Before the selection filter, this heuristic made sense, but
now there is an explicit toggle to disable selection of locked
items, so we want to be able to select pads when that toggle
is enabled.
2020-09-25 21:28:04 -04:00
Jeff Young ba0bed7a45 Groups don't go in the view, but they do go in an overlay when entered. 2020-09-25 22:51:16 +01:00
Jeff Young 2ae4fecaea Paste items into group when group has been "entered". 2020-09-25 22:48:40 +01:00
Jeff Young eb97fe8386 Fix bug when entered group is immediate parent. 2020-09-25 22:14:22 +01:00
Jeff Young b4672c64ea Fix Group Properties dialog grow behaviour. 2020-09-25 21:14:08 +01:00
Jeff Young 955ba0a483 Add LAYER_ANCHORS to the always-active layer set.
Otherwise you can't see your groups in high-contrast mode.

Fixes https://gitlab.com/kicad/code/kicad/issues/5769
2020-09-25 19:42:06 +01:00
Jeff Young 6fde9ea8a5 Don't leave stale pointers in groups when exchanging modules.
Also simplifies groups so that other areas of code that have to know
about them at least don't have to know as much. One of the simplifications
is to not worry so much about empty groups until save time; others are in
the access logic to parent groups.

Also simplifies user model slightly by removing Merge and Flatten
(which are just ungroup/group and ungroup/ungroup/.../group).

Also allows multiple groups to have the same name.  This is useful when
using groups for a classification system.

Fixes https://gitlab.com/kicad/code/kicad/issues/5788
2020-09-25 18:43:19 +01:00
PJM d1322e7d1d Refactor GetDocumentExtents()
CHANGED: GetDocumentExtents() in 'eda_draw_frame.h' now has a bool
parameter "aIncludeAllVisible" with a default value "true" which makes
it behave as it did before adding parameter.  If "aIncludeAllVisible"
is false, the returned bbox ignores some items depending on which
program it is running in.

CHANGED: Made "Zoom to Objects" use only PCB edge in Pcbnew.  This
allows text, notes, etc outside the PCB edge to be excluded in the
zoom calculation.

CHANGED: Added "Zoom to Objects" to Pcbnew main menu, and to RMB context
menus for Eeschema and Pcbnew.

Fixes https://gitlab.com/kicad/code/kicad/issues/5787
2020-09-25 00:31:56 -07:00
Jon Evans 0783669633 CHANGED: Design rules files now use .kicad_dru extension
Fixes https://gitlab.com/kicad/code/kicad/-/issues/5763
Fixes https://gitlab.com/kicad/code/kicad/-/issues/5444
2020-09-24 21:26:23 -04:00
Jeff Young ae3ef90f7d Add location points to dimension message bar info.
Fixes https://gitlab.com/kicad/code/kicad/issues/5673
2020-09-25 00:43:30 +01:00
Ian McInerney bba29a1036 Always show the track and via menu in the router context menu 2020-09-25 00:17:54 +01:00
Seth Hillbrand 9937f52f06 Fix crash when not wrapping search
The iterator at the end of the search is already set the end(), so we
cannot increment it safely
2020-09-24 15:57:49 -07:00
Ian McInerney 672756a018 Move the router tools to a TOOL_MENU context menu
The previous way of displaying a context menu was being
usurped by the selection tool because it was displaying its
menu before DispatchContextMenu was called, and all other tools
explictly use the TOOL_MENU system.

Fixes https://gitlab.com/kicad/code/kicad/issues/5762
2020-09-24 23:51:34 +01:00
Jon Evans 1319885285 Wrap ZONE_FILLER to allow use without commit from Python
Fixes https://gitlab.com/kicad/code/kicad/-/issues/5646
2020-09-24 18:08:23 -04:00
Jon Evans ff652d5375 Fix saving colors modified outside of preferences 2020-09-24 17:29:40 -04:00
Jeff Young e16b7626cd Implement GetMsgPanelInfo for dimensions.
Fixes https://gitlab.com/kicad/code/kicad/issues/5673
2020-09-24 22:23:59 +01:00
jean-pierre charras dfaf0851fe Fix broken layer names used when saving a footprint from library.
This issue was also existing when copying to the clipboard.
Saving boards was not affected.

Instead of using canonical layer names, the user layers names were used.

Fixes #5779
https://gitlab.com/kicad/code/kicad/issues/5779
2020-09-24 20:01:24 +02:00
Wayne Stambaugh feeb925e61 Pcbnew: add user defined layer colors to color preferences panel. 2020-09-24 13:51:18 -04:00
Jeff Young f0739315f6 Use title-bar-style for group names.
Fixes https://gitlab.com/kicad/code/kicad/issues/5769
2020-09-24 16:35:20 +01:00
Wayne Stambaugh 564f363c57 Pcbnew: fix user defined layer bugs. 2020-09-24 10:19:10 -04:00
Jeff Young 5ad76a237e Moving checking the rules up a level so we can properly exit DRC dialog.
Fixes https://gitlab.com/kicad/code/kicad/issues/5778
2020-09-24 15:17:46 +01:00
Jeff Young 3e366a901f Expose pad type in property system.
Also corrects the spelling of some enum items so they match the
menus (otherwise folks will never be able to figure out what they
are).
2020-09-24 14:41:02 +01:00
Jeff Young dba42ebed0 ADDED Properties Dialog for groups.
ADDED memberOf() function for DRC rule expressions.

Also fixes a bug in several of the pickers where the event wasn't
being correctly passed.

Fixes https://gitlab.com/kicad/code/kicad/issues/5647
2020-09-24 14:41:02 +01:00
jean-pierre charras 446a9ca866 Round-rect pads: use a circle to draw degenerated shapes.
A degenerated shape is a round-rect pads with same X and Y size, and a
radius very near 50% of the size.

Fixes #5768
https://gitlab.com/kicad/code/kicad/issues/5768
2020-09-24 11:05:56 +02:00
jean-pierre charras aa6158a9fb fix a minor wxWidgets alert 2020-09-24 10:18:28 +02:00
Jon Evans 690575e2b6 Improve edit point legibility with a hover state 2020-09-23 21:27:23 -04:00
Seth Hillbrand 856cf51fc8 Fix typo 2020-09-23 14:00:39 -07:00