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
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
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
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
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
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.
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().
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.
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.
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.
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.
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.
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.
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.
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)
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
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.
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.
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.
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
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.
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
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.
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
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
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.
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
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.
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
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
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
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
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.
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
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
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.
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.
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.
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.
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
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
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
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.
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
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.
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.
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
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
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
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
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
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.
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
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.
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)
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.
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.
Commit efdbc91e42 broken the primary
alignment mechanism for maintaining the current point as an auxilliary
grid reference. This reverts that commit and fixes both the initial
issue and the associated bug by applying the primary constraint after
the secondary. In this way, we consider the secondary constraint as an
additive rather than alternative constraint.
Fixes: lp:1793888
* https://bugs.launchpad.net/kicad/+bug/1793888
Change "OK" to "Export" so user is not surprised by the fact that the
dialog does not close after the step file is created..
Fixes lp:1784260
https://bugs.launchpad.net/kicad/+bug/1784260
It can be used instead of the slot (G85) command to create oval holes.
Do not yet activate it.
Oval holes frequently create issues with board houses.
Using a more usual routing (G01) command could solve some issues.
When editing the pcb, Ctrl-Click will highlight a net. This allows
de-highlight with the ESC/cancel action from the selection tool. Inside
the highlight tool, ESC reverts to the selection tool while keeping the
net highlighted.
Fixes: lp:1793842
* https://bugs.launchpad.net/kicad/+bug/1793842
Clang++ seems to be in left-field here as it processes a stringstream
1.0X1.0 >> double as a hexadecimal floating point ('X' character) and
throws an error rather than converting 1.0 and stopping when it reaches
a non-numeric character. This causes errors when exporting step on Mac,
which uses clang++ by default.
Adding spaces to the string is more explicit and doesn't break gcc. It
will be sufficient until we get rid of kicad2step as an external
utility.
Fixes: lp:1778564
* https://bugs.launchpad.net/kicad/+bug/1778564
(cherry picked from commit e7a9643b37)
The lock file code would reset the lock file every other time the same
board file was opened in Pcbnew in the stand alone mode. This created
the perfect toggle switch causing the board to be reloaded every other
time the same board was selected.
Please note that wxSingleInstanceChecker is broken on Linux and most
likely MacOS as well due to a bug in wxWidgets. On these platforms,
the already opened file is reopened rather than displaying a warning
that the file is already opened.
Fixes lp:1777599
https://bugs.launchpad.net/kicad/+bug/1777599
This is a boyscouting commit to standardize the threading of zone fills.
We do not need to join threads after their completion, instead we simply
allow them to clean up their memory without blocking the user. This
also sets the maximum number of threads that may be created to the
number of zones being filled. More than this will only leave un-used
threads being created and immediately killed.
We also include the connectivity search as a phase in the fill progress
reporter. This was the case before but did not utilize the correct
maxsize, leading to stalled progress bar.
This commit finishes the removal of OpenMP from the KiCad codebase.
Removed in this commit are the OpenMP calls in 3d-viewer and
qa/polygon_triangulation as well as all references in CMakeLists.txt
std::thread is used instead for multithreaded computation
OpenMP is not available for macos, so moving to a std::threads
implementation brings platforms into shared code.
This also reduces the OpenMP overhead when computing connectivity and
ratsnests.
Fixes: lp:1780130
* https://bugs.launchpad.net/kicad/+bug/1780130
The CMake scripts calculate the install path for python scripts by
distutils.sysconfig.get_python_lib(
plat_specific=0,
standard_lib=0,
prefix=''
)
which generates a string in line with
lib/python2.7/site-packages
This string ends up in the CMake variable PYTHON_DEST and is used by the
install step as destination directory for pcbnew.py.
There has been a hard-coded assumption on the content of that string in
PcbNew which is not compatible with FreeBSD 11.1.
This commit eliminates the hard-coded assumption in PcbNew and reuses
the install path as known by CMake.
Fixes: lp:1777921
* https://bugs.launchpad.net/kicad/+bug/1777921
(cherry picked from commit dd3c24faf8)
Repeating find with the same search string would result in a not found
error for absolute search strings. Don't clear the found item if the
search string did not change from the previous search..
Fix another minor bug where the do not warp mouse pointer option was
always checked when the find dialog was called from one of the gal
canvases.
Fixes lp:1793300
https://bugs.launchpad.net/kicad/+bug/1793300
We like to allow items that are marked SELECTED to remain so during
editing but this does not indicate that there are multiple edits queued,
so do not prevent pushing this into the undo queue.
When designing pads, it can be helpful to not only see the resulting
rounded rectangle radius from a given percentage but also to set it,
constraining the related percentage. This adjusts the dialog to allow
editing the rounded rectangle corner radius. It does not change the
file format as the resulting ratio is saved. Further updates of the pad
size or ratio will modify the radius.
Fixes: lp:1668020
* https://bugs.launchpad.net/kicad/+bug/1668020
Zones can be explicitly merged even if they do not have the same
parameters. Automatic merging should only occur when all of the zone
parameters are exactly identical to allow for area-specific zone
parameters.
( cherry-picked from 3d0915a33 )
Fixes: lp:1695761
* https://bugs.launchpad.net/kicad/+bug/1695761
Keepout zones can have different layer sets and different restrictions
that should not be combined unless they are identical.
( cherry-picked from a67bfa620 )
Fixes: lp:1789062
* https://bugs.launchpad.net/kicad/+bug/1789062
We had been deselecting items after calling edits to be safe in case the
item was deleted/exchanged by the edit. The item pointer itself remains
valid even when deleting as it is assigned to the undo stack. But it
should not remain visible or selected on the schematic if it is removed.
This tests for removed items by checking whether it (in the case of
first-level BOARD_ITEMS) or its parent (in the case of footprint item
components) remain in the view list after editing. If they are still in
the view list, then we re-select them.
( cherry-picked from 2c6d0ffe2 )
Fixes: lp:1765774
* https://bugs.launchpad.net/kicad/+bug/1765774
Fixes: lp:1775946
* https://bugs.launchpad.net/kicad/+bug/1775946
Snapping while dragging depends on the current net being assigned during
dragging. This initializes the placer to hold the current net while
performing inline dragging. The placer is reset along with the dragger
in StopRouting(). This fixes the difference in snap between drag and
create new route.
( cherry-picked from 219695953 )
Allow corner adding to polygons in both module editor and board editor.
The board editor was already allowed but only through special types.
The module editor is now sychronized to the same process and both
recognize standard context menus
Fixes: lp:1782966
* https://bugs.launchpad.net/kicad/+bug/1782966
( cherry-picked from 06ac172c2 )
When constraining moves, the cursor snaps to grid but does not
represent the position of the final edited point. The point is rotated
to the nearest snap angle, while the vector length remains unchanged
resulting in a line longer than intended and off-grid.
This adds a grid-snap after the constraint is applied.
Fixes: lp:1792655
* https://bugs.launchpad.net/kicad/+bug/1792655
( cherry-picked from e7c51a6a6 )
Triangulation of zones can be time consuming for large boards. This
adds a std::thread implementation of parallel zone loading to speed this
process on multi-core machines.
Add Display Settings to Footprint Browser.
Make each of them OpenGL on OSX and Cairo on other platforms.
Allow auto-zoom to be turned off and save last zoom setting.
Make ordering of tools in htoolbar consistent.
Standardize grid and zoom drop-downs.
Fixes: lp:1791667
* https://bugs.launchpad.net/kicad/+bug/1791667
Unplated holes in Ealge can either be free floating or part of a larger
footprint. We handle both in the same packageHole routine by either
offsetting the hole in a centered footprint or offsetting the footprint
in a centered hole.
Fixes: lp:1791287
* https://bugs.launchpad.net/kicad/+bug/1791287
Invalid graphical items that cannot be created in pcbnew may still be
created by external tools. This synchronizes the pcbnew view display
with the gerber output and 3d viewer line widths for these types of
lines. Only filled polygons are permitted 0-width lines.
Fixes: lp:1790534
* https://bugs.launchpad.net/kicad/+bug/1790534
Normally working at a zoom level when a footprint is not fully displayed
indicates that the user modifies other components. Selection Tool used
to discard footprints that had area larger than the viewport area, but
it may make sense to select them if there are no other candidates.
Fixes: lp:1789578
* https://bugs.launchpad.net/kicad/+bug/1789578
This allows full copper connections even when THT changes a trace layer.
It avoides selecting the actual pad to prevent actions on the copper
connections from affecting the footprints as well.
Fixes: lp:1789807
* https://bugs.launchpad.net/kicad/+bug/1789807
Items removed from the connectivity list will not have valid parents, so
we cannot update the BBox, thus we will only use the cached value.
Fixes: lp:1785605
* https://bugs.launchpad.net/kicad/+bug/1785605
Text can be included in the same selection group as the parent module.
Thus if we clear the selection marker on a module's child elements we
also need to remove the element from the selection group.
Fixes: lp:1789418
* https://bugs.launchpad.net/kicad/+bug/1789418
Using Title + Message wasn't working for all the dialogs which
did substitutions in the message (which was a lot of them).
Fixes: lp:1789348
* https://bugs.launchpad.net/kicad/+bug/1789348
The values in choice are 0.0 90.0 not compatible with floating point notation (0,0 90,0)
and always detected as bad values (unless you have loaded a up to date dictionary, which is not necessary the case)
good values are in any case 0 90 180 and -90
Missing types were handled by the superclass (in the case of zones)
PCB_CONNECTED_ITEM, which incorrectly returned "true" when testing lines
against zones.
Fixes: lp:1789195
* https://bugs.launchpad.net/kicad/+bug/1789195
Before closing the window in the footprint editor, we clear the existing
pcb, undo/redo stack and associated memory to prevent callbacks
double-freeing on destruction.
Fixes: lp:1784504
* https://bugs.launchpad.net/kicad/+bug/1784504
The default board soldermask clearance should not be used in the
footprint viewer. Setting the board's solder mask margin to 0 will
leave the footprint displayed with only the soldermask defined by
the pads or the footprint.
Thanks to Fabian Inostroza for pointing out the missing line.
Fixes: lp:1779979
* https://bugs.launchpad.net/kicad/+bug/1779979
Also fixes a bug where nets wouldn't get changed because the
pads weren't changed and so the pad nets would propagate and
wipe out the changed nets on the tracks.
Also includes warning dialogs that pad nets will be changed if the
track nets are.
Fixes: lp:1779854
* https://bugs.launchpad.net/kicad/+bug/1779854
Previous tooltips were outdated. Current action is to center with
single-click, hightlight with right-click and close window with
double-click.
Fixes: lp:1788635
* https://bugs.launchpad.net/kicad/+bug/1788635
Use standard Magnetize() to handle grid and magnetic pads.
Use the standard menu from PCB_TOOL. Delegating the menu to
the SELECTION_TOOL just caused grief.
Also brings clients (such as Position Relative To) into line,
and implements better Cancel behaviour.
Also improves visibility of modal status messages:
- moves Select Anchor message from status bar to popup
- moves Select Reference message from dialog to popup
Fixes: lp:1786727
* https://bugs.launchpad.net/kicad/+bug/1786727
New algorithm more targetted and just clears the items. This
also obviates the need for the aQuietMode flags.
Only fixes one part of the bug, but the "fixes" line is the
easiest way to get a link in the bug to the commit.
Fixes: lp:1786727
* https://bugs.launchpad.net/kicad/+bug/1786727
Shorten and improve informational content of messages, errors and
warnings.
Remove redundant info messages when they shadow an action, warning
or error message.
Improve title of "Update Footprints" to make it clear that it's
recreating footprints which have different assignments rather than
updating footprints from the library.
Don't perform the dryRun twice.
Don't use the old netlist method of loading footprints. We get
better error reporting if we do it ourselves.
Be more careful checking the last pad when checking for single-pad
nets. If the last pad has no net then pad != previouspad at the
end of the loop.
Fixes: lp:1787255
* https://bugs.launchpad.net/kicad/+bug/1787255
Also updates the file menu IDs so that we can actually handle
more than 9 items in the file history.
Also adds configurable file history length to the other gerber
files (zip, drill and job).
Fixes: lp:1745729
* https://bugs.launchpad.net/kicad/+bug/1745729
Eagle files that are edited may be missing required data. While we do
not need to handle these files, we do need to prevent segfaults in KiCad
when reading them.
Primary change is to replace most control/window borders with
AUI pane borders. We implement our own AUI border drawing
routine which avoids the ugly one-pixel white frames around
dark canvasses.
Also increases the signal-to-noise ratio of all the pane
creation code in the various frames.
This makes zoom automatique work much better in the footprint
editor, and should improve other things which probably assumed
the bounding box included everything (such as refresh code).
Callers which still want just the module outline should call
GetFootprintRect() instead of GetBoundingBox().
Some other tools (in this case the POINT_EDITOR) aren't good
citizens and activate themselves when receiving selection
changes.
Fixes: lp:1785781
* https://bugs.launchpad.net/kicad/+bug/1785781
Adds a hotkey to the TOOL_ACTION, and also checks for
action validity prior to running the actions (previously
implicitly gated by the enablement of the menu item).
Spooling up a full PLAYER in the background takes too long.
This also fixes bugs around how the tables are saved, although
that was just missing code rather than anything architectural.
Fixes: lp:1785436
* https://bugs.launchpad.net/kicad/+bug/1785436
Be more intelligent about sorting lib tree items. (Footprint
entries, for instance, come out of an already-sorted list.)
Don't recreate menus twice when laoding Footprint Editor.
More pervasive use of WX_FILENAME to avoid expensive calls to
wxFileName::SplitPath() and string concatenation.
For POSIX kernels do all the work on the file-system side so we
don't have to keep converting back and forth between encodings.
Cache the footprint info on disk (in the project).
Move timestamp-generation (and checking) to the filesystem so the
above will be bullet-proof.
Rewrite some wxWidgets classes for performance (see common.h).
Drop all uses of wxRAISED_BORDER and wxSUNKEN_BORDER from dialogs and
panels used in main frame windows.
Drop use of wxSP_3DSASH options on all wxSplitterWindow definitions.
Minor dialog alignment and spacing fixes.
This also fixes a bunch of bugs where an error during save would
still close the window (rather than cancelling the close action).
Fixes: lp:1785034
* https://bugs.launchpad.net/kicad/+bug/1785034
Also fixes some interactivity issues in the microwave tools around
single-click tools that have initial properties dialogs. Those
need to act kind of like a hybrid between single-click and two-click
tools.
Fixes: lp:1751381
* https://bugs.launchpad.net/kicad/+bug/1751381
When changing elements in the module editor, each element shares the
same parent. Undo commits store a copy of the parent as it existed
before the change. For footprints with many elements, this creates
large, slow undo commits as a copy of the full footprint is stored for
each element being edited.
This keeps a single copy of the footprint in the undo stack per edit.
Fixes: lp:1780526
* https://bugs.launchpad.net/kicad/+bug/1780526
This prevents non-copper layers from being included in the connectivity
search. It also limits the layer search in the connectivity RTree to
just the copper layer range.
There's no point in having both Save Symbol and Save Library when
only one can be selected at a time.
Also cleans up a bunch of extraneous icons, and fixes a few
copy/paste errors in menus and toolbars.
This removes the existing constructors so that all parsing must
be explicit and callers are made aware that they need to think
about illegal characters, malformed ids, etc.
Fixes: lp:1783474
* https://bugs.launchpad.net/kicad/+bug/1783474
* A few typos like stray new lines
* Per cent -> percent
* Consistent use of full stops
* Consistent use of commas after "If 0"
Fixes: lp:1783446
https://bugs.launchpad.net/kicad/+bug/1783446
Also brings horizontal toolbar in line with Pcbnew and Eeschema.
And updates the EDA_LIST_DIALOG to current practices.
This finishes the removal of the active library concept from the
Symbol Editor (started with the new component tree in 5.0).
Fixes: lp:1740717
* https://bugs.launchpad.net/kicad/+bug/1740717
This introduces a new util function in geometry_utils which snaps a vector
to axes or 45 degree lines. This can be used whenever you want to
snap a vector to these angles, but still want it to stay on a grid.
This snapping is used for the dimension tool and the ruler tool.
This is substantially simpler for two-point tools that the method
used by the line tool, which uses DIRECTION_45.
Fixes: lp:1780826
https://bugs.launchpad.net/kicad/+bug/1780826
Well, almost anyway. We can't use a pad attribute for them as
that would change the file format. So they're currently
defined as a CONN pad with no copper layers.
However, when figuring out of existing pads should be *treated*
as aperture pads, we just check for no copper layers.
Fixes: lp:1781760
* https://bugs.launchpad.net/kicad/+bug/1781760
UI update event handler updates toolbar button state for the scripting
console, but for the associated menu item it displays an assert saying that
the menu item that cannot be checked. To avoid that, the UI update event
handler returns early if event does not come from the toolbar.
wxDataViewCtrl used an incorrect column type, which made wxWidgets try
to extract wxDataViewIcon from an integer variable.
Fixes: lp:1782449
* https://bugs.launchpad.net/kicad/+bug/1782449
The colours don't add much in the way of comprehension and they
do add visual complexity. Same for the labels at the top of
the layers list box.
Also improved the grouping to make the presets aciton more clear.
(cherry picked from commit 1a03e13)
Also includes a bunch of changes to simplifiy the terminology
and unify the copper, non-copper and keepout versions.
Also removes some legacy features:
Removes contol for fill method. If the fill method is currently
segments the dialog will ask if you want to convert to polygons
on OK.
Removes control of boundary resolution. We've done this with trig
since 5.0.
(cherry picked from commit 487aaeb)
Also move courtyard testing flags to BoardSettings API. Both are
still stored in the config until we decide where they go in order
to prevent prematurely disturbing the board file format.
Fixes: lp:684067
* https://bugs.launchpad.net/kicad/+bug/684067
(cherry picked from commit 5399f60)
... and GetMsgPanelInfo.
Step 4 in the g_UserUnit eradication effort.
Also removes a couple of conversion routines that were close
enough to extinction.
(cherry picked from commit c75da51)
This not only reduces the number of different mechanisms, but
will also reduce (yet again) the number of Clarify Selection
pop-ups (because the CLIENT_SELECTION_FILTER runs before the
pop-up, while SanitizePads ran after it).
Fixes: lp:1710451
* https://bugs.launchpad.net/kicad/+bug/1710451
(cherry picked from commit e50a993)
Allow copy of a single cell demarcated by the grid cursor.
Paste of lib_table s-expressions should always start at 0,0.
Let caller or specialized sub-class do auto-sizing; don’t
do it from within the base GRID_TRICKS.
Don’t start GRID_TRICKS menu IDs at -1; wxWidgets doesn’t
like it when you get to 0.
Add column visibility menu.
(cherry picked from commit e5071ed)
It's time to fix the focus issues. This adds a new SetInitialFocus()
routine to DIALOG_SHIM which will need to be called from a lot of
dialogs.
(cherry picked from commit 6d9647a)
The general idea is to support user-units inheritance. The
UNIT_BINDER allows wrapped controls to inherit units from their
parent dialog, while KEYWAY_HOLDER and DIALOG_SHIM allow child
KEYWAY_HOLDERs or DIALOG_SHIMs to inherit units from their
parent.
The GetUserUnits() method signature has to move to KEYWAY_HOLDER
rather than KEYWAY_PLAYER (where it makes more sense) as it’s the
only common ancestor of KEYWAY_PLAYER and DIALOG_SHIM.
As long as we'll be using the UNIT_BINDER more widely, it also
makes sense to move evaluation and validation into it.
This commit also provides eeschema’s DIALOG_LABEL_EDITOR and
pcbnew’s DIALOG_TRACK_VIA_PROPERTIES and DIALOG_SET_GRID as
models of how to use the new user-units inheritance, eval, and
validation.
Fixes: lp:593795
* https://bugs.launchpad.net/kicad/+bug/593795
(cherry picked from commit c8bc53e)
Step 1 of the g_UserUnit global eradication. This commit includes
basic hookup of hotkeys, units tool-buttons and grid dialogs.
(cherry picked from commit e0500ab)
Be consistent with order, formatting, etc.
Remove debug stuff such as zone timestamp and net code.
Clean up misleading pad messages.
(cherry picked from commit 2132109)
Also makes better use of space to significantly increase number
of markers shown.
Fixes: lp:1748676
* https://bugs.launchpad.net/kicad/+bug/1748676
(cherry picked from commit a1d8097)
The old item pointers (which aren't safe to keep around) were
removed in favour of opaque references (void*) which are then
compared against existing items when needed.
Also improves brightening by brightening the whole footprint
(ie: its pads, drawings, reference and value) rather than just
its target cross.
(cherry picked from commit 30e90b0)
Small icons for dialog browse, refresh, and row operations.
Icons in B&W so they don't over-emphasize with respect to other
controls in the dialog.
Layout cleanup for consistency. Removal of the blank space to
left of the fields list in the Global Fields Editor, and addition
of column-sizing-to-list-width.
More even spacing for buttons in html report panel.
Honor platform conventions for action button order and layout.
Move netlist importer to update-pcb-from-schematic algorithm
(display messages and then update instead of "dry run" checkbox)
(cherry picked from commit b21e19d)
In Cairo, we don't have z-ordering implemented, so we need to draw the
clearance outline first otherwise it will draw a large, grey overlay
that hides the actual track while routing.
Fixes: lp:1779228
* https://bugs.launchpad.net/kicad/+bug/1779228
After refilling zones, we need to unconditionally remove the filled
polys from the map because their fills map have changed. Left-over
filled polygons will not map to current polygons, creating "ghost"
islands in the connectivity. Removing these can overflow the polygon
count.
Fixes: lp:1778454
* https://bugs.launchpad.net/kicad/+bug/1778454
This adds a small KiCad logo in the top left of the Doxygen pages.
54px used as 55px is maximum recommended height for Doxygen logos.
For the main docs and the dev docs, this is easily done in the Doxyfile,
for the Python docs, as that is run from the binary dir, the source dir
is passed as an Environment variable.
The itemlist and zonelist in connectivity can both contain many items,
so both use the same OpenMP routine. However, we can only clear the
dirty flag when we conduct a full search, including zones. Otherwise we
missing connections to zones when propogating changed items that are
then marked as not dirty.
Fixes: lp:1777993
* https://bugs.launchpad.net/kicad/+bug/1777993
During the symbol library table implementation, the legal character
tests for the footprint library table were changed and the forward
slash '/' character became illegal. This change broke editing some
users footprint library tables that already had '/' in library table
nicknames. This change split the library nickname and library item
name illegal character tests.
The local ratsnest needs to be able to hide as well as show visibility.
Clicking a module will toggle the visibility while clicking off all
modules clears the local ratsnest display.
Fixes: lp:1531332
* https://bugs.launchpad.net/kicad/+bug/1531332
Options that do not have code implementing them are now hidden from the
user so that they are not searching for ways to enable the greyed out
options. Similarly, when selecting a routing option that disables
free-mode, we show the effect of disabling the mode in the dialog.
GAL is strict regarding which layers are rendered, therefore to show
ratsnest lines when an item is dragged - the ratsnest layer must be kept
enabled. Ratsnest line visibility is enabled per item and this is the
way to show/hide the lines.
Fixes: lp:1666473
* https://bugs.launchpad.net/kicad/+bug/1666473
Minimum differential pair clearance should be limited to the netclass
differential pair spacing. This also cleans up some unused code that
was left over from previous work on differential pair clearances.
Fixes: lp:1673632
* https://bugs.launchpad.net/kicad/+bug/1673632
In case there are zero width oval holes on the PCB,
it is safer to not plot them at all, rather than plotting
with width arbitrarily increased to 10 mils.
This also makes Gerber outputs consistent with Excellon outputs.
When removing items, we perform a two-pass removal, checking first
for the cached rectangle collision. Then, if we do not find the item
being removed, we perform a second, more expensive pass over the full
tree. This second pass is required as we cannot be certain that an
item's bbox has not been modified between insertion and deletion. In
which case, keeping stale pointers in the tree will lead to segfaults.
Fixes: lp:1777246
* https://bugs.launchpad.net/kicad/+bug/1777246
The dialog was displayed due to a global TOOL_ACTION and a hotkey
assigned to a top menubar entry. Removing the hotkey from the menubar entry
is not ideal, but less irritating than a dialog showing up twice.
The assert in the title line verifies that an item does not belong to
any DLIST when it is being added to one. Items in clipboard are already
owned by DLISTs, therefore they need to be removed from the original
DLISTs before being added to new ones.
Commit 72b49acc changed behavior of MODULE::ViewBBox(),
which now includes text fields area. This caused problems
with selecting footprints with relatively large text fields.
This patch fixes this problem by using MODULE::GetBoundingBox instead.
Fixes: lp:1776942
* https://bugs.launchpad.net/kicad/+bug/1776942
After an action is completed that required the screen to pan when the
cursor reaches the edge of the screen, we should release the cursor to
allow the user to move their mouse without panning.
Fixes: lp:1763860
* https://bugs.launchpad.net/kicad/+bug/1763860
There's no risk in measuring an empty footprint but there's no benefit
either. This matches the measure tool to the other, deactivated
footprint tools.
- Ordering of Hotkey list by function
- Use Hotkey assignment instead of hard-coded hotkey for length tuning
- Adjust default Length Tuning settings hotkey to CTRL-L so that we
don't overlap with "Lock" (overlaps are not editable)
Once SELECTION_TOOL has been changed to use EDA_ITEM::GetBoundingBox(),
selection area had to cover the footprint and its ref/value texts,
even hidden ones. To fix this, ref/val strings are taken into account
only in the ViewBBox().
Change the Doxyfile project name from KiCAD to KiCad. It doesn't look
very good when we don't get the project name capitalization correct.
Clean up trailing whitespace in some of the helper scripts and Doxyfile.
Also sets the initial footprint to the current footprint when
doing a Choose Footprint from the Eeschema Edit Property
dialog.
Fixes: lp:1776126
* https://bugs.launchpad.net/kicad/+bug/1776126
- fixed via bounding box calculation in TRACK::GetBoundingBox()
- moved clearance to TRACK::ViewBBox()
- modified the Selection Tool to use EDA_ITEM::GetBoundingBox() rather
than VIEW_ITEM::ViewBBox() to determine selection
Fixes: lp:1776314
* https://bugs.launchpad.net/kicad/+bug/1776314
It happens if the first segment of the new trace is inside a pad: the other segments are not found.
And the erased trace is not the right trace.
However this fix is more a workaround than a fix: currently the detection of the trace boundaries (BOARD::MarkTrace())
does not work very well for segments inside a pad.
Fixes: lp:1776121
https://bugs.launchpad.net/kicad/+bug/1776121
New items just being placed on the board are still temporary. Although
we can modify their orientations/positions, we can't stage these changes
for undo/redo without corrupting the undo stack.
Fixes: lp:1776312
* https://bugs.launchpad.net/kicad/+bug/1776312
Previously, the "Select Connection" sub-items were greyed out when the
selection contained both tracks and vias. This meant that you couldn't
access "Select Copper Connection" when the selection contained both
tracks and vias (though the keyboard shortcuts did work).
Change to use SELECTION_CONDITIONS::OnlyTypes( GENERAL_COLLECTOR::Tracks
) to allow any combination of track elements to be selected.
Fixes: lp:1772249
* https://bugs.launchpad.net/kicad/+bug/1772249
We can invalidate a node by rotating. Make sure that our endpoints for
the ratsnest are valid before attempting to draw.
Fixes: lp:1775727
* https://bugs.launchpad.net/kicad/+bug/1775727
PNS routing options allow trace width to be chosen by the assigned
netclass. This extends that to differential pair width/gap settings as
well.
Fixes: lp:1672126
* https://bugs.launchpad.net/kicad/+bug/1672126
Processing enter from within the dimension editor window is only set to
the default action for top-level items. Within the sizer, enter is
handled by the first registered button (Cancel) unless explicitly set.
Fixes: lp:1774035
* https://bugs.launchpad.net/kicad/+bug/1774035
When clearing the pcb in footprint editor, we need to transfer the
netclass settings to ensure we have the correct defaults for the new
footprint.
Fixes: lp:1751583
* https://bugs.launchpad.net/kicad/+bug/1751583
There are three related changes here to harden our handling of threads
in the footprint async loader.
1) Footprint async loader explicitly aborts any remaining loader threads
on exit.
2) We protect the thread join by a mutex
3) We do not pause during no-wait routines
Pads count all pads/pins on the board including unconnected and NPTH.
Nodes count only the pads that can connect to a net and are therefore
routable. These were being calculated as the same number (displayed in
the info bar at the bottom of the screen)
Connectivity searches were slow for large, complex boards. This was
partly due to the need to search all lists for possible connections
between anchors.
We remove this requirement by creating an RTree based on items' bounding
boxes similar to the PNS router. Then we get both the colliding items
and search forward/backward to see if there are connections between the
anchors and the other item.
Because we use RTree, we no longer need the maintenance overhead of multiple
item lists and an anchor list in the connectivity class.
Fixes: lp:1701791
* https://bugs.launchpad.net/kicad/+bug/1701791
Fixes: lp:1769408
* https://bugs.launchpad.net/kicad/+bug/1769408
Fixes: lp:1761989
* https://bugs.launchpad.net/kicad/+bug/1761989
It was broken by commit c78171d01f.
During creation, the Drc must only display a error message, and do not create markers.
Markers are created only during a full board DRC test.
commit c78171d01f replaced this behavior by a incorrect one (create markers and do not show error messages)
The progress reporter should not be cleared in the footprint
implementation to prevent dereferencing a NULL.
When cancelling the load, we should only allow setting of cancellation
to true to prevent a condition where the progress reporter resets
the cancellation.
Fixes: lp:1774777
* https://bugs.launchpad.net/kicad/+bug/1774777
Also lock the DeleteAll call with mutext to protect threaded access.
The OpenGL contexts are removed when OPENGL_GAL class is destroyed.
Explicitly deleting all contexts prior to destroying the OPENGL_GAL
class causes an assert when the destructor tries to lock its context
prior to cleaning up OpenGL memory. In most cases, an unhandled assert
in a destructor-called function will simply exit the destructor.
Python thread cleanup will also attempt to close the context. This can
cause a race condition with multiple threads accessing/deleting the
canvas.
Fixes: lp:1774096
* https://bugs.launchpad.net/kicad/+bug/1774096
Colors are assigned to virtual layers while the ToLayer_ID returns a
physical layer enum. The GetLayerColor/SetLayerColor take LAYER_NUM
(int) values that can be larger than the physical layer count.
We were trying to handle aOnlyOneFile at two different levels
which was preventing the Silk layer from going through the
right routine (and preventing board outlines from getting
drawn if selected).
We were also overwriting the references color local variable
before using it, meaning the reference was always rendered in
the value's color.
Fixes: lp:1774171
* https://bugs.launchpad.net/kicad/+bug/1774171
Previously, the dialog was created only once, with the current board setup and the current units selection.
Therefore, after changes in board or units, the dialog was really broken.
Now, the dialog is recreated when the plot command is run.
A perfect solution would create holes in the coverage map
for the zone edges and handles, but that's a lot more
work.
Fixes: lp:1773204
* https://bugs.launchpad.net/kicad/+bug/1773204
As of v5 footprint library reorganization (one repo per library concept
is replaced with a common repo for all libraries), the Footprint Library
Wizard may handle only the old libraries. It has been replaced with
a file browser to select only local files.
Fixes: lp:1772209
* https://bugs.launchpad.net/kicad/+bug/1772209
When starting async processes, we need to have a way to stop the process
before releasing memory. Descoping FOOTPRINT_ASYNC_LOADER while the
threads were still running could cause crashes depending on the memory
structure. To avoid this we define clear procedures for exiting a
running async processes and call these when exiting.
Fixes: lp:1772909
* https://bugs.launchpad.net/kicad/+bug/1772909
The SELECTION is a std::set. Numerical dereference of item n is O(n) as
the iterator is not random access. Therefore, a for loop using
numerical dereference is O(n!) and quickly slows.
We avoid this by storing items to remove separately while iterating and
then removing the items after we complete.
Fixes: lp:1692081
* https://bugs.launchpad.net/kicad/+bug/1692081
If you select a track with many segments (e.g. a length-tuned track) and
then select all connected items again ('U' -> 'U'), we would iterate
over all items in the selection and mark connections for each of the n
segments n separate times.
We avoid this by using the marked flag to show when the segment has
already been visited by the routine. This means that if the segment has
been checked for connections because it was connected to the previous
item, it won't be checked for connections again. However, a selection
that interleaves items from multiple connection segments will still
(potentially) be multiply checked as the BUSY flag is cleared each time
there is one not-BUSY track in the selection.
On large boards with high pad-count modules, searching each pad for hits
becomes expensive. We eliminate many of the pad searches by first
checking the module's bounding box before iterating over pads to look
for hits.
It can be useful to have similar class messages grouped together so that
error messages in a larger report don't get lost among the
warning/info/action messages.
This patch allows sorting of messages for dialogs that benefit from
organization. Default behavior of reporter messages remains
unchanged by this patch.
Fixes: lp:1772090
* https://bugs.launchpad.net/kicad/+bug/1772090
Freerouting-specialized menus are removed as FreeRouting is not
maintained or packaged for most OSes. Users can still import/export
SPECCTRA files in KiCad allowing them to interface with a custom
FreeRouting installation.
The graphical editor window for pcbnew and modedit have slight
differences, so different classes. But they should appear the same to
the user. This merges the differences into a dialog that looks the same
to the user.
Fixes: lp:1772389
* https://bugs.launchpad.net/kicad/+bug/1772389
Circles are defined by center and a point on their edge. This requires
the user to do extra math to figure out the size of the circle. The
patch allows the user to edit and draw circles using radial coordinates.
1) hide the status popup when the dialog is brought up
2) forward events from the popup to the canvas so hotkeys work
3) make sure diff pair radius is always 100%
4) fix greyed-out Miter style label
5) make L a hotkey so it works before you start dragging
Fixes: lp:1545856
* https://bugs.launchpad.net/kicad/+bug/1545856
We only need to iterate over the anchors when there are items that are
marked invalid. We check once in the item list and only if there are
invalid items to remove do we trim the anchor lists.
However, the connected items might still need to be trimmed, so we leave
this final step outside of the conditional.
This is a speed commit for large boards. Tracks and pads cannot connect
to elements that are not on the same layer. Rather than checking for
this at the last step, this commit splits the anchor vectors by layer,
limiting the initial search space.
Previously, binary search was hand-coded. This moves the search to a
std::algorithm variant. Also searches bbox by limits rather than
directly iterating.
Unifies the different sections of hotkeys so that we are not storing two
[eeschema] or [pcbnew] sections in two different files.
Previous hotkey definitions are loaded at start if they exist but are
overwritten by the new format, if it exists. Changes to hotkeys save
only in the combined format.
Hotkey editor for each application only shows the hotkeys relevant to
that application.
Fixes: lp:1741757
* https://bugs.launchpad.net/kicad/+bug/1741757
Fixes: lp:1668799
* https://bugs.launchpad.net/kicad/+bug/1668799
Select net has two columns, so we should limit the column width to the
size of the grid. The size should adjust with the window, so we take
the size of the first column as fixed and assign the rest of the grid
width to the second column.
It looks like D_GLIBCXX_ASSERTIONS=ON activated on some Linux versions creates too zealous tests at run time.
This patch just calculate the same pointer value using a slightly different formula.
Fix also a hard-to-understand comment
Fixes: lp:1770414
https://bugs.launchpad.net/kicad/+bug/1770414
m_Zone is a fully deprecated list of SEG_ZONE items (similar to TRACK), used to fill copper zones in *very old* boards.
it is even unlikely there are still boards that use them.
So it should be removed one day.
* Refresh the view only when changes are made in the caller frame.
* Allows recreate a new instances when try to open the 3D view from a frame taht is not the initial caller
* Remove duplicate code in kicad frames.
Add padding to standard dialog button sizer. On windows, the buttons are
slammed against the bottom of the dialog with no border which looks awful.
Fix alignment and padding in grid sizers.
Add padding to standard dialog button sizer. On windows, the buttons are
slammed against the bottom of the dialog with no border which looks awful.
Replace degree symbol with the word degrees. On windows, this does not
translate to the degree symbol.
While "fixes" isn't quite the right word, we do want this commit
associated with the following bug, and "fixes" is the easiest
way to do that:
Fixes: lp:1712579
* https://bugs.launchpad.net/kicad/+bug/1712579
Previously, dragging changes were applied only if the last cursor move
finished with a successful drag operation. It made items squeezing
difficult, as it required accurate cursor movement to apply the changes.
When counting items, many cases exist where we want to count all items
without checking flags. This short-circuits the loop to provide the
immediate count.
This allows the user to selectively disable the snap-to behavior when
placing stand-alone vias. Full solution will require an update to the
segment distance calculation that takes into account the rounded line
caps.
Fixes: lp:1769523
* https://bugs.launchpad.net/kicad/+bug/1769523
When saving a library, check and report on libraries that do not exist
as well as those that exist but are read-only.
Fixes: lp:1769190
* https://bugs.launchpad.net/kicad/+bug/1769190
Changes SHAPE_CONVEX to SHAPE_SIMPLE to better reflect the limitations.
Changes SHAPE_LINE_CHAIN::PointInside calculation to allow points
strictly inside a line chain
Fixes: lp:1768862
* https://bugs.launchpad.net/kicad/+bug/1768862
Usually pads do not overlap. However custom pads are represented as
their convex hull, so they may enclose other pads. This change allows the
router to select the closest pad to the cursor position.
The roundrect_rratio token was missing a leading space which made the
file formatting different from all other formatting when using rounded
rectangle pads.
Fixes lp:1768355
https://bugs.launchpad.net/kicad/+bug/1768355
This is particularly important when bulk adding (by director, etc.)
as otherwise the user might end up having to click OK to many
many error dialogs.
Fixes: lp:1764057
* https://bugs.launchpad.net/kicad/+bug/1764057
Also fixes a bug where a FOOTPRINT_EDIT_FRAME was being passed
in to a PCB_EDIT_FRAME.
Also tidies up Modedit settings handling for settings which can't
be edited in Modedit's preferences dialog. They're now copied
from Pcbnew.
Fixes: lp:1768477
* https://bugs.launchpad.net/kicad/+bug/1768477
This partially reverts 36d36de and 3bac100, moving the legacy footprint
lock/unlock code from the autorouter (which remains disabled) to
pcb_edit_frame.
Old code failed to set the wxEventType during acceptance, and
failed to set the default button during initialization.
Fixes: lp:1768253
* https://bugs.launchpad.net/kicad/+bug/1768253
When reading netlist or updating board from schematic, if the
changes leave a zone with a net with no pads then change the
zone's net to the new net of one of it's connections.
Also improves update-board-from-schematic's dry run reporting
to include zone nets and single-pad nets.
Fixes: lp:1609401
* https://bugs.launchpad.net/kicad/+bug/1609401
Duplicate already works, so there's little reason to disallow
using the zone dialog to do it.
The legacy canvas can't be fixed because we'll immediately
union the two zones, resulting in a no-op.
Fixes: lp:1464677
* https://bugs.launchpad.net/kicad/+bug/1464677
Corrects an error in polyline estimation
Syncs graphics to world PNS by whole layer set rather than
individual layer at a time.
Prevents reloading of full pns TOOL_BASE during reset of tools unless
the tool is being activated.
Fixes: lp:1766626
* https://bugs.launchpad.net/kicad/+bug/1766626
For some obscure (for me) reason, the path separators in bundlepath are seen as escape seq, and the path can be incorrectly handled
(when \n or \r are found in this string).
it happens only for this path, not for other paths in LoadPlugins.
For bundlepath parameter, unix separator is now used.
Fixes: lp:1766879
https://bugs.launchpad.net/kicad/+bug/1766879
it was due to a incorrect behavior of TRACK::GetBestInsertPoint( BOARD* aPcb )
Also: update comment for this method.
Fixes: lp:1767061
https://bugs.launchpad.net/kicad/+bug/1767061
This really needs to get put into the VIEW_CONTROLS for all the
tools, but that's probably a bit too risky for 5.0 at this
point.
Fixes: lp:1766547
* https://bugs.launchpad.net/kicad/+bug/1766547
Previous algorithm used a static variable which it decremented
for each new unconnected track, but this resulted in the router
marking earlier fixed segments as collisions (because they
would get set to netcode = 0 when "fixed").
Fixes: lp:1762043
* https://bugs.launchpad.net/kicad/+bug/1762043
This had been removed along with autorouter but its functionality is
still desired. If/when the autorouter is resurrected, these IDs will
need to be deconflicted.
Fixes: lp:1766550
* https://bugs.launchpad.net/kicad/+bug/1766550
Corrected polygon export missing vertex.
Set pads to export on copper layer when not masked, keeping visual
output similar to physical.
Fixes: lp:1766634
* https://bugs.launchpad.net/kicad/+bug/1766634
If the initial pad was a custom pad converted in a usual pad + graphic items by the command:
"Explode Pad to Graphic Shapes"
the "old" primitives were not cleaned, and the new created pad contained these old primitives, regardless the new selected shapes.
(Usual case when a user want to edit a custom shape)