Default out-of-the-box is no hotkey. Removed all the preference stuff.
Note that the new implementation is a little different: the old one only
operated on a selection with a single item where the new one operates on
all selected items. So if you want the whole track do a 'U' before the 'W'
(or whatever you have Change Track Width assigned to).
Fixes: lp:1844023
* https://bugs.launchpad.net/kicad/+bug/1844023
The python footprint wizard can modify other parameters than the one that was changed by user.
So the parameter grid list must be updated after every parameter change.
Fixes: lp:1846404
https://bugs.launchpad.net/kicad/+bug/1846404
In Python3, all division operators promote integers to floats. We need
to downcast back to integer for the polygon vertices.
There was also an unhandled overflow in the QR generation that allowed
more than 512 bits to be loaded. This overflows the type of QR we
generate, so this truncates the input string to 62 bytes ( leaving 12
bits for the checksum )
Fixes: lp:1850223
* https://bugs.launchpad.net/kicad/+bug/1850223
This adjusts the fix for 1813038 to focus on the duplicate ghost,
preventing the need to unselect/reselect in every cycle. This improves
large move speeds substantially
This adds the pad to die parameter from each pad to the total line
length of the tuned line for comparison with desired.
Fixes: lp:1711541
* https://bugs.launchpad.net/kicad/+bug/1711541
Right click is a pointing operation combined with a request for the
context menu. We need to highlight the user's intended object when they
have moved their mouse to a new element instead of showing the context
menu for the selected object.
However, in cases where the selection is difficult to make, it is
sometimes helpful to select the item first, then right-click. In these
cases, we keep the selection where the mouse remains inside the selected
object's bounding box.
We have forbidden lists maintained in 3 separate locations. This causes
a bit of confusion as to which is correct.
This makes the list uniform but remains to place the character set in a
single location.
The previous fix for optimizer breakout length calculation was providing
better scores to longer traces rather than longer breakouts as intended.
This limits the length scoring to breakout only.
The oval clearance adds an edge on the 0-length side of a circular oval.
This is not needed and can affect the fill algorithm. Instead, we treat
round ovals as circles for pad polygons
Fixes: lp:1849846
* https://bugs.launchpad.net/kicad/+bug/1849846
(cherry picked from commit 57f0f88552)
The constrained draw was constraining the polygon size to fit the
existing points rather than extending the existing points to fit the
user's intent.
This adds a 90° double-joint for the completion polygon that allows the
user to complete common constrained polygons visually based on the
preview with a double-click to finish.
BLOCK elements in DXF are re-usable bits that are useful when editing
the file but should not be shown when importing the model. This skips
all references except those that exist in the default "*Model_Space".
This block is required in each DXF file and cannot be renamed.
Fixes: lp:1790821
* https://bugs.launchpad.net/kicad/+bug/1790821
Flipped footprint pads may report their "primary" layer as not the front
layer in high contrast. We need to check whether the board item for
snaps is visible on the active layers.
Fixes: lp:1847877
* https://bugs.launchpad.net/kicad/+bug/1847877
In ZONE_CONTAINER( ZONE_CONTAINER& aOther ), the net info was set before zone type and layer were set.
So the net info was always set to ORPHAN net, instead of set to aOther net info.
Especially, it broke undo/redo function.
Fixes: lp:1840727
https://bugs.launchpad.net/kicad/+bug/1840727
The fracture routine introduces degenerate points that are healed by the
Clipper Polygon simplify command. This is normally fine but in the case
of hatched areas, there are thousands of degenerate points, which is
very slow in Clipper. Healing the degenerate points first before
simplifying and fracturing is much faster.
Fixes: lp:1847764
* https://bugs.launchpad.net/kicad/+bug/1847764
This margin is mandatory to avoid incorrect polygons in Gerber files:
due to the fact Gerber units can be 10 nm (and Gerbview internal unit is also 10nm), valid polygons
can be converted to non valid (self intersecting for instance) by coordinates truncation.
This is a known problem in Gerber files (not specific to Gerber format)
Fixes: lp:1847737
https://bugs.launchpad.net/kicad/+bug/1847737
The router items may not yet have a board item parent. In this case,
the reference to the parent needs to be guarded before dereferencing.
Fixes: lp:1847717
* https://bugs.launchpad.net/kicad/+bug/1847717
Therefore, for some footprints, the right footprint was not associated to the component.
The hash calculation was using a XOR to combine 2 sub hash values.
This is not a strong way to combine these hash values.
They are now added. Looks better to identify similar and different footprints.
Fixes: lp:1847575
https://bugs.launchpad.net/kicad/+bug/1847575
Items and layers that are hidden in the view should not be used as snap
points. This happens in multiple locations:
1) Grid Helper for normal tools
2) TOOL_BASE::snapToItem for router
Resolves KiPro Issue #116
Fixes: lp:1833128
* https://bugs.launchpad.net/kicad/+bug/1833128
Unlike schematic symbols, the value field and the footprint name are 2 different fields.
So coupling these fields in the DIALOG_FOOTPRINT_FP_EDITOR dialog created serious issues.
Fixes: lp:1846533
https://bugs.launchpad.net/kicad/+bug/1846533
Calling Init() in an action routine will reset the router
settings to the state they were in when first starting pcbnew.
The Init() function is automatically called when the tool is created.
Fixes: lp:1843810
* https://bugs.launchpad.net/kicad/+bug/1843810
This function calls Pgm(), but when running from a script (not from kicad) Pgm() uses a nullptr reference.
The nullptr reference is now tested in ComputeBoundingBox()
* Fix wildcard display in the file selector dialog (on GTK
it would show the regex to the user)
* Move the file extension comparison into a common function
Before, if the tools were activated from the context menu,
they would start drawing where the menu item was selected
instead of where the menu was opened.
* Make the events generated by the selection of context menu items
have the position where the menu was opened
* Ensure that TC_COMMAND type events have their position set to
be the cursor position where the event originated
On complex boards, the view holds a very large vector of all objects.
The dtor will remove each one, searching for the pointer before
removing. When removing all items, this process is not needed, so we
clear the view when exiting. This also prevents lock-up when closing
the full application as KiCad waits for the dtor to finish
(non-interactively). This will cause Windows to crash and Linux to
offer an option for terminating the non-responsive application.
Fixes: lp:1843092
* https://bugs.launchpad.net/kicad/+bug/1843092
the old way was not compatible with the current management if board item lists.
The crash was probably due to double deletions.
Note also the management of undo command in pcbnew_action_plugins needs serious optimization.
Fixes: lp:1844880
https://bugs.launchpad.net/kicad/+bug/1844880
The parenthesis depth is 2 when the polygon isn't closed. This
shouldn't happen but we have the fall-through to handle odd cases
Fixes: lp:1844872
* https://bugs.launchpad.net/kicad/+bug/1844872
(cherry picked from commit d862cdaa72)
Pads may include offsets that allow the user to shift the connection
point of the pad. This is captured by the pad m_Pos but not by
ShapePos(). When testing connectivity, we need to get the offset
position.
With pads, we should check available anchor points for each connection,
increasing probability of finding connection to match fill algorithm
Fixes: lp:1844661
* https://bugs.launchpad.net/kicad/+bug/1844661
The angle rotation was always negated. But this is incorrect:
The angle rotation must be negated when flipping around X axis
The angle rotation must be 180 - initial rotation when flipping around Y axis
This bug can break position files and footprint updates,
especially when mixing flipping around Y axis and flipping around X axis.
This is the behavior of previous 5.1 version.
Using the bounding box has advantages, but unfortunately in many cases the footprint position is moved.
If a lot of flip commands are made on the same footprint, it is moved far from its initial position.
This happens with wxWidgets 3.0.4 on Windows and is a side effect of a call to Layout().
The fix just calls Layout() only when needed.
Fixes: lp:1843594
https://bugs.launchpad.net/kicad/+bug/1843594
Eagle includes the width of the polygon line when generating polygon pad
sizes where KiCad does not. This simple fix inflates polygon pads half
of the Eagle polygon line width.
Fixes lp:1833687
https://bugs.launchpad.net/kicad/+bug/1833687
panel_board_stackup.cpp: material selection:
replace wxChoice by a better widget (wxTextCtrl+wxButton) to call the dielectric manager dialog
Move dielectric material class to a specific file
Doing so in the internals keeps users from being able to swap layer
names as the dialog does each layer name change individually.
Fixes: lp:1842665
* https://bugs.launchpad.net/kicad/+bug/1842665
Use the HTML_MESSAGE_BOX window to present the warning messages rather
than wxMessageBox which would overflow the display when there were a lot
of graphic items that could not be parsed.
Fixes lp:1839565
https://bugs.launchpad.net/kicad/+bug/1839565
This makes the pcbnew multiline text editor natively accept tabs in the
same manner as eeschema and extracts key handling routines to the shim
to allow undo/redo.
Also allows Ctrl-Y under Linux in addition to other platforms. While
not as popular as Ctrl-Shift-Z, it is utilized for Redo in some contexts
Also wrap orientation instead of verifying it. This allows valid angles
that are larger/smaller than the ±180 limit.
Fixes: lp:1842654
* https://bugs.launchpad.net/kicad/+bug/1842654
The INT_MAX limit for most elements makes sense only for single-segment,
straight line elements. For elements that accumulate lengths, we should
utilize the long long int (64 bits) to allow for greater lengths.
Fixes: lp:1842367
* https://bugs.launchpad.net/kicad/+bug/1842367
While we're re-using the Text Properties dialog, it really covers all
properties for a Dimension, so it needs to be more clear what's text
and what's not. This changelist uses the Tooltips to store the more
explicit labels so they can still be edited in FormBuilder.
Setting the active layer should be tied to the events that are triggered
by the layer change and overloaded for each frame. This ties the hotkey
back to these events.
Fixes: lp:1838244
* https://bugs.launchpad.net/kicad/+bug/1838244
When we refresh a scrolled window to get the GTK scrollbars updated, we
can capture the mouse, making key-only scrolling difficult when we want
the window not focused. This resets the active focus after refresh.
Fixes: lp:1841565
* https://bugs.launchpad.net/kicad/+bug/1841565
Adds the missing default layer to the default board setups for two
layers with parts on single side (either top or bottom)
Fixes: lp:1841294
* https://bugs.launchpad.net/kicad/+bug/1841294
(cherry picked from commit 8b3a2984bf)
We need to set the footprint local coordinates of the footprint
reference and value fields at instantiation separately from the
TEXT_DIVERS elements.
Fixes: lp:1829727
* https://bugs.launchpad.net/kicad/+bug/1829727
(cherry picked from commit a43a228f78)
Previously, zones of the same net were merged for plotting,
regardless the fact the outline thickness can be different between the zones,
creating incorrect solid areas.
Fixes: lp:1840695
https://bugs.launchpad.net/kicad/+bug/1840695
When moving a group of items, the allowed snapping layers should be each
layer in the group, not just the first item's LSET.
Fixes: lp:1830164
* https://bugs.launchpad.net/kicad/+bug/1830164
This modifies that logic for optimizing pad connections.
1) Custom pads now prefer the connections to their longer side. This is
particularly important to match the behavior in a rectangular pad
2) Costs for straight lines are non-zero. This favors fewer connections
3) Custom pad breakouts are at the polygon boundary rather than offset
by 0.1mm. This also matches the circular and rectangular paradigm.
4) Line Heads contained in the pad itself are not optimized. This
prevents escaping the pad unnecessarily
Fixes: lp:1824182
* https://bugs.launchpad.net/kicad/+bug/1824182
The Board bounding box calculation has two modes: edges only and
everything. While the everything mode works as expected, the edges only
calculation (and everything that depends on it) was seeing only the edge
cuts on the board drawings layer and not the footprint edge cuts.
Fixes: lp:1839768
* https://bugs.launchpad.net/kicad/+bug/1839768
If the layer is not shown, we should not be allowing it's items to be
selected and chosen as the start/end items in the router.
(cherry picked from commit fc1fb7a590)
The Get and place tool used to live in selection tool and could activate
the edit tool by stacking calls. Now that it is itself in the edit
tool, we cannot stack another call to the edit tool that runs
immediately, instead we allow the GetAndPlace to finish before beginning
the next tool (Move)
* Push a function into CONDITIONAL_MENU that adds the item
* Modify the tooltip for close and exit items to have the
program name
Fixes: lp:1835454
* https://bugs.launchpad.net/kicad/+bug/1835454
Drag is used for multiple modes so should be initialized when starting.
The line that we generate however needs to be pristine in drag, so we
clear the links in the duplicate.
Fixes: lp:1839612
* https://bugs.launchpad.net/kicad/+bug/1839612
create_vrml_shell() needed the idxSide check but create_vrml_plane only
had an extra variable that wasn't used and so shouldn't be checked.
(cherry picked from commit c9956def36)
In rare cases, the VRML triangulator may claim to work but return empty
vectors. These cases need to be caught before we dereference the vector
elements.
Fixes: lp:1838448
* https://bugs.launchpad.net/kicad/+bug/1838448
(cherry picked from commit 161dc9ce7e)
Also rewrites the PCBNew Find dialog to make use of the above, including:
1) searching in user-defined footprint fields
2) searching in pcb text
3) a history list in the search popup
4) case sensitive searching
5) word sensitive searching
6) the ability to turn wildcard searching on/off
7) better placement of the result when the dialog obscures part of the
window
Fixes: lp:1838006
* https://bugs.launchpad.net/kicad/+bug/1838006
The problem is that wxEVT_CHAR_HOOK doesn’t do the key translation
properly. wxEVT_CHAR does, but we only get to that if we skip the
event at the end of the tool’s event processing loop, which most tools
don’t do. (Selection tools, point editors, pickers, and a couple of
others do skip, which is probably why this didn’t get reported earlier.)
I played around with a couple of ways to fix wxEVT_CHAR_HOOK. Most of
them don’t work, and the few egregious hacks I tried weren't cross-
platform.
So I’m changing it so that most tools now skip at the end of their
event loops. I left out a couple that I felt were high risk (length
tuning, for instance). But there’s still enough risk that I’m 100%
sure it will break something, I just haven’t a clue what.
Fixes: lp:1836903
* https://bugs.launchpad.net/kicad/+bug/1836903
This method was using a case insensitive comparison to find the pad matching aPadName.
But in netlist we are using case sensitive comparisons to attribute a net to a pad.
So if in the netlist there is a pad name that does not match any footprint pad name using case sensitive comparison but if it matches some pads using case insensitive comparison, the net is not set, but the test to detect non existing pads fails.
Pads not on copper layers now do not have a netname, and are no longer taken in account in connectivity.
Especially it avoid creating useless rats-nests for these pads.
Setting stub width to a ridiculous large value (for instance 100 times the pad size) creates strange and broken shapes,
and obviously stubs cannot be built.
Ensure also the thermal shape is inside the zone boundary (because the algo adds areas this was previously possible)
Fixes: lp:1837559
https://bugs.launchpad.net/kicad/+bug/1837559
- make it wxWidgets 3.1 compatible.
- internationalize.
- fix minor wxwidgets alert.
- remove settings for fg/bg color: the result is unpredictable:
was black texts on black background on my computer.
Previously, for instance after modifying preferences or language,
they were rebuilt but the tools state was not set due to a missing call to SyncToolbars() after rebuilding.
This sets the clearance outline to a slightly better opacity to allow
viewing of items behind the routed track clearance. Future work should
include making this a configuration option.
Fixes: lp:1826719
* https://bugs.launchpad.net/kicad/+bug/1826719
(cherry picked from commit e0589d2908)
Previously, the background was highlighted, but not the text.
On Windows, the text was unreadable, until it was selected.
Now the foreground color is also set to the text selected color.
Similar to fix 34e00bdb6d, but for the fp editor.
1) Intermediate states might be self-intersecting, and we shouldn't
be policing our users on what order to do things in
2) The polygon might already be self-intersecting, at which point we're
preventing the user from fixing it.
Also includes better const management for SHAPE_POLY_SET API.
Fixes: lp:1833831
* https://bugs.launchpad.net/kicad/+bug/1833831
When generating a complex pad, this allows the user to combine with a
rotated pad and explode rotated pads without needing to rotate elements
to 0 orientation first.
Fixes: lp:1808137
* https://bugs.launchpad.net/kicad/+bug/1808137
"End Point" is the other. (The user doesn't care what the variable
names in the code are.)
Also re-lays-out the dialog for better comprehension.
Fixes: lp:1694964
* https://bugs.launchpad.net/kicad/+bug/1694964
Because the pickers are called with an Activate()/Wait() pair, any
usurping tool gets in between the picker handling the cancel (due
to activation) and the picker client doing a PopTool(). The new
tool is therefore pushed before the old tool is popped.
Fixes: lp:1835907
* https://bugs.launchpad.net/kicad/+bug/1835907
They now modifiy the selection if it contains only tracks and/or vias,
and modify the current widths/sizes otherwise.
Fixes: lp:1814908
* https://bugs.launchpad.net/kicad/+bug/1814908
We may later add an Automatic Zone Fill option which would restore
this, but for now I'm turning it off to see if it fixes the crash
bug.
Fixes: lp:1834718
* https://bugs.launchpad.net/kicad/+bug/1834718
Fix Board.GetAllNetClasses() so it no longer creates a duplicate of the Default netclass in the design rules net classes list.
Fixes: lp:1803623
* https://bugs.launchpad.net/kicad/+bug/1803623
Previous fix for the non-updated netclass pointers caused issues with
display of overlay view items and was bigger than needed to be. Just
resetting the tools gets the pointers released.
Fixes: lp:1835533
* https://bugs.launchpad.net/kicad/+bug/1835533
The old board pointer maintains shared pointers to netclasses (among
other things) that do not get released by the
SynchronizeNetsAndClasses() call. We reload the board to fully release
the pointers.
Fixes: lp:1835533
* https://bugs.launchpad.net/kicad/+bug/1835533
This changes make_lexer() so that it no longer generates a custom target
but instead attaches the generated files to an existing one (so the first
argument now is the name of an existing library or executable, and it needs
to come after the add_library/add_executable call).
The generated source is no longer listed in the project sources, as it is
added by the function. The files are generated in the build tree rather
than the source tree, and the directory is added to the include path for
the respective project as well as exported to projects linking against it.
Generated files in subdirectories are somewhat supported, but need to be
referenced with the same name as they were generated (i.e. including the
subdirectory name).
Fixes: lp:1831643
* https://bugs.launchpad.net/kicad/+bug/1831643
Fixes: lp:1832357
* https://bugs.launchpad.net/kicad/+bug/1832357
Fixes: lp:1833851
* https://bugs.launchpad.net/kicad/+bug/1833851
This removes unused static function in page layout editor, unused
variable in pcb_painter and restors the gcc unitialized fix for
pcbnew's drawing_tool.
wxWidgets sends the KillFocus event before the Cancel button event,
and it sets the receiving-focus window pointer to NULL (so you can't
even check for it being the Cancel button. Last time around (with
the UNIT_BINDER) I also tried a bunch of hacks for whether the window
pointer is NULL, etc., but they aren't discriminatory either.
Fixes: lp:1834975
* https://bugs.launchpad.net/kicad/+bug/1834975
Fixes: lp:1834966
* https://bugs.launchpad.net/kicad/+bug/1834966
More than that just gets annoying, and there is at least one edge case
which throws us into an infinite loop if we don't have something to
break us out.
Fixes: lp:1834966
* https://bugs.launchpad.net/kicad/+bug/1834966
This unifies the zone refill across architecture into the tool-based
architecture. Also provides ZONE_FILLER-based progress managment for
tools.
(cherry picked from commit be9cd98cb1)
Make the data generation code separate from the dialog code.
The dialog itself does not include anymore the data generation code.
Non SMD footprints forced in list are now displayed in the dialog.
The attribute MOD_CMS is no longer silently modified (without undo command) by the dialog.
This is based on the notion that in Kicad the start and end-points
are far more important (as they usually connect to other segments)
than the center is.
We do not allow non-copper routed tracks and they will break assumptions
elsewhere in the code. We drop them in the beginning so that they are
not saved.
(cherry picked from commit cabfcbc73c)
This end was not detected as connected by the IsDangling method.
Fix incorrect cleaning of dangling tracks in track cleaner.
Remove also a dead code.
The merge co-linear track segments is still full bugged in track cleaner.
Includes the addition of an onSetCursor() handler which must be called
from both the GAL canvas AND the GAL backend (at least on OSX) to prevent
cursor flickering between (for instance) pencil and arrow.
Also includes new architecture for point editors which allows them to
coordiate cursors with the editing tools (so we can switch to an arrow
when over a point).
We were running into various corner conditions where a tool's event
loop would exit while the tool was still active, or the tool would
get popped while we were still in the event loop. (A lot of these
had to do with the POINT_EDITOR's, but not all of them.)
The new architecture:
1) tools always do a Push()/Pop()
2) everyone is responsible for their own pops; no more stack-clearing
on a cancel
3) CancelInteractive events go to all tools to facilitate (2)
In .gbrjob file, one can specify the thickness and color of some layers.
Currently, there is no way to enter these parameters.
This commit prepare a better support of .gbrjob files.
Prevent the symbol and footprint library table editors from substituting
the current project path (${KIPRJMOD}) when adding libraries to the global
library table. This will almost assuredly fail when opening a different
project. We still allow users to manually use ${KIPRJMOD} in global table
paths under the assumption that if they are typing this in then they most
likely understand environment variable substitution.
Fixes lp:1830694
https://bugs.launchpad.net/kicad/+bug/1830694
Significant improvement in fetch time for item clearances. On large
boards with lots of nets, maybe 10% faster zone fills and about
2x speedup on track-to-track DRC.
It's too complicated trying to keep everything smaller or larger by
half the pen width, and some things like spoke-end-detection need the
actual outline anyway.
The thermal spokes are anchored at the pad anchor. They may or may
not make sense, depending on the pad shape. It's up to the author
to move the anchor around as necessary or to not use thermals.
This assumes maximum registration errors are a vector, rather than
an amount in both x and y axes. Lots more disucssion in the bug
report and on the forum (link in the bug report).
Also makes large changes to the painting of pads, but they now use
the same code as plotting, so if there are any changes then they
were errors before since plotting represents "truth".
Fixes: lp:1563744
* https://bugs.launchpad.net/kicad/+bug/1563744
Oblong holes (slots) use now a aperture attribute similar to round holes.
(The previous attribute "slot" is now deprecated)
However they have a specific aperture, and a comment is added in drill files for these apertures.
In singletop mode, all frames show the "Quit" option in the file menu
and will quit on Ctrl-Q. When launched from the main KiCad interface,
sub-programs show the "Close" option instead and will close with Ctrl-W.
In this mode, Ctrl-Q will instruct the main program to exit.
Fixes: lp:1779938
* https://bugs.launchpad.net/kicad/+bug/1779938
Footprint library nicknames are case sensitive but the comparison for
the library tree control was case insensitive.
Also make the footprint name comparisons case sensitive as well. While
not strictly necessary, the plan is to start using the name defined in
the footprint file instead of the file name which will allow for case
sensitivity.
Fixes lp:1833701
https://bugs.launchpad.net/kicad/+bug/1833701
(cherry picked from commit d8fff5c820)
The previous commit missed a case where the number was so large that it
overflowed the integer invalidating the comparison. This protects
against that case by using floating point comparison.
(cherry picked from commit f25ae373bb)
This checks the movement against a maximum value that would place the
selection outside of the valid area for the footprint or board.
Fixes: lp:1833478
* https://bugs.launchpad.net/kicad/+bug/1833478
(cherry picked from commit 845833e8fd)
A few files snuck in with CRLF for the line endings. These make it hard
to look at diffs as every line appears to have changed. This commit
makes only line ending changes, so can be ignored
Custom pads are referenced to the anchor pad 0-point, so flipping the
polygon should be about 0 and not the flip point.
Fixes: lp:1831311
* https://bugs.launchpad.net/kicad/+bug/1831311
(cherry picked from commit 909a25c147)
The returns of KiCad file extensions on GTK contain basic regex matching
case-insensitive file extensions. We need to match these in the
provider and tests
Also changes the presentation of the string when the checkbox appears
so that the "Changes will be lost" warning isn't hidden by the turndown.
This last part may require conditional compilation as it's undocumented.
Lastly, regularizes the Unsaved Changes strings between the apps.
Especially, small round rect pads have a ugly shape because the number of segments is
small and the 90 deg arcs are not very well approximated.
The minimal seg count for 90 deg arcs is now 4 (16 segm/circle) for pads.
Fixes: lp:1833005
https://bugs.launchpad.net/kicad/+bug/1833005
It's a bit of a hack because they're statically initialized and
so we can't make use of the _() macro. We do still want it in the
code, however, because the string harvesting is based off of it.
Fixes: lp:1833000
* https://bugs.launchpad.net/kicad/+bug/1833000
DIALOG_EXIT was not being laid out correctly after setting the dialog
message. Rather than fix our custom DIALOG_EXIT, wxMessageDialog and
wxRichMessageDialog were substituted as direct replacements for all
of the variants of DIALOG_EXIT. This make message dialogs appear more
consistent because wxMessageDialog uses the default platform message
dialog and wxRichMessageDialog uses the default platform rich message
dialog on windows.
Remove DIALOG_EXIT_BASE as it is no longer required.
Fixes lp:1832899
https://bugs.launchpad.net/kicad/+bug/1832899
If a tool called something like clearSelection while processing a
MOUSE_CLICK, the SELECTION_TOOL will pass the clearSelection
COMMAND_EVENT because it handles it as a transition, not as an
event. Because m_passEvent is effectively global, the tool manager
would then interpret that as passing the MOUSE_CLICK and we'd end
up processing the click by multiple tools.
Set the IS_NEW flags so the POINT_EDITOR doesn't try an poke its head
in, and apply the EE_SELECTION_TOOL hack for mouse clicks leaking
through to the underlying tools.
Fixes: lp:1832911
* https://bugs.launchpad.net/kicad/+bug/1832911
Instead of linking the same target name and re-building, we can install
the file to a new name. This speeds the build process and keeps linking
routines from stepping on each other. Available now that we are at
CMake 3.0.2
Fixes: lp:1789468
* https://bugs.launchpad.net/kicad/+bug/1789468
This adds the upper-case version of files names to the selection box for
filesystems that support case-sensitive file names.
Fixes: lp:1832853
* https://bugs.launchpad.net/kicad/+bug/1832853
Prevents certain edit tools from handling the action unless the cursor
remains inside the selection bounding box.
For now this is a UX test but the behavior may be expanded into Eeschema
as well.
Fixes: lp:1827242
* https://bugs.launchpad.net/kicad/+bug/1827242
Deleting objects from a container will invalidate the iterator that
contains the object. Correct deleting requires capturing the iterator
returned by the erase function.
Fixes: lp:1832331
* https://bugs.launchpad.net/kicad/+bug/1832331
Two issues:
* Unassigned hotkeys were being passed to WX in the menu strings as
"<unassigned>". WX doesn't recognise this, and prints debug each time.
Unassigned hotkeys are no longer rare or naughty, so we shouldn't provoke
debug spew. Suppress by not appending hotkey strings for actions with 0
(i.e. unassigned) hotkey IDs.
* The zone cutout tool uses GR_KB_SHIFT, not MD_SHIFT. This causes
"unknown hotkey" spew from WX.
* Circular gal<->common dependency bites again. Add 'common'
again to the 'kicad' target's link libraries. libgal.a depends
on SHAPE_POLY_SET in common, but common depends on gal. This is
not a real fix, but it unsticks Linux compilations. Fixing the
circular dep is an existing bug: https://bugs.launchpad.net/kicad/+bug/1832229
* Missing LEGACY_HK_NAME for ACT_EndTuning: this was probably accidentally
allowed on some other platform due to different wxString constructors.
On Linux/GCC, it breaks.
* Unused include from /kicad in export_vrml.cpp. This is not findable
on Linux, as pcbnew does not include the right dirs for this to be
found. But it's not used, so just remove it.
Return the EDA_DRAW_FRAME class back to common, whence it came (before it was
duplicated into legacy_wx and legacy_gal). Now there is only one
implementation (the GAL one), it doesn't need to be in a separate library.
This simplifies the dependencies for common lib users.
This mixes the de-emphasized layers into the background color rather
than merely a black color. This also keeps some of the original layer
color.
Fixes: lp:1831316
* https://bugs.launchpad.net/kicad/+bug/1831316
Mouse capture end is called by some actions such as save board. This
resets the cursor image but doesn't change the current tool. Resetting
the cursor image during action prevents this.
(cherry picked from commit 35e87128f5)
Fixes: lp:1831888
* https://bugs.launchpad.net/kicad/+bug/1831888
This standardizes the import vector graphics file dialog to use the
sbSizer titles instead of bold+lines. Tooltip changes will be in the
next change as we don't change strings for bugfix releases and this
commit is targeted for 5.1.3
Fixes: lp:1823462
* https://bugs.launchpad.net/kicad/+bug/1823462
This bug was seen only with some shapes, not all, and only for layers having a negative margin.
Fixes: lp:1831941
https://bugs.launchpad.net/kicad/+bug/
Building custom targets that depend on custom commands such as our
keyword lexer requires two layers of indirection to pick up changes
properly and not overwrite the same file in parallel builds.
Fixes: lp:1831643
* https://bugs.launchpad.net/kicad/+bug/1831643
* Remove infinite recursion calls in footprint.i
* Extend DRAWINGS deque iterator to auto cast contained BOARD_ITEMS,
similar to what dlist implementation did.
When exiting pcbnew, we only want to run the sections of ClearPcb that
remove the old pcb data. We do not want to queue events that handle
initializing a new pcb. These were caught after freeing memory in some
cases, leading to segfaults.
Fixes: lp:1831560
* https://bugs.launchpad.net/kicad/+bug/1831560
The dynamic ratsnest is shown while moving items but this needs to be
hidden after cancelling. Previously this was handled by the
SelectionClear event but we've changed this to (correctly) keep the
previous selection when canceling.
Fixes: lp:1831350
* https://bugs.launchpad.net/kicad/+bug/1831350
Fixes a few commit issues based on the std:: rework. Add an option to
delete tracks fully in pads and makes merge tracks smarter
Fixes: lp:1787190
* https://bugs.launchpad.net/kicad/+bug/1787190
Grid and ratsnest visibility are stored in the board file and should not
be changed without the user explicitly modifying them.
In the future, we'll move these settings out of the board file but we
shouldn't cause extra file-churn for flipped bits.
Fixes: lp:1828285
* https://bugs.launchpad.net/kicad/+bug/1828285
We have _two_ settings that independently control whether the netlist is
updated by timestamp. One in the NETLIST object and one in the
NETLIST_UPDATER object. It looks like we are phasing one out but the
commit was not complete.
Fixes: lp:1828754
* https://bugs.launchpad.net/kicad/+bug/1828754
Also fixes the post-duplicate move to start at the cursor pos.
Also fixes the fact that duplicate wasn't getting its hotkey.
Fixes: lp:1830596
* https://bugs.launchpad.net/kicad/+bug/1830596
This places the arc approximation setting in the kicad_pcb file and uses
it for all parts of the board rendering where arcs are converted to
segments. This allows the user to customize their speed vs. accuracy
tradeoff. The default setting of maximum error of 0.005mm is acceptable
for small boards on moderate systems.
Always check the return value of PyRun_SimpleString() for errors when a
Python script is run and show an error message rather than fail silently.
Enable Python interpreter I/O redirection in debug builds so that script
string errors will be shown when PyRun_SimpleString() is called.
Do not call PyErr_Print() after a PyRun_SimpleString() call failure. It
doesn't do anything useful.
Do not call Py_Finalize() after a PyRun_SimpleString() call failure. It
seems to cause Pcbnew to crash.
This corrects an issue with fill segments-per-circle and moves the error
to segmetns calculation down in a number of functions to expose the
single value for approximation
The no-connect net (0) should never drive the net of a cluster.
Otherwise, tracks connecting between unconnected pads and connected pads
can acquire net 0 incorrectly.
Sometimes we want to inflate a polygon without adding rounded edges.
This add the option using the jtMiter setting.
This is used in the Eagle parser to expand the Eagle zones for KiCad.
Eagle Zones are drawn on the polygon edge, so they extend out from the
outline. KiCad zones are drawn inside the polygon. We need to both
increase the zone size and decrease the minimum pen width to account for
this.
Fixes: lp:1817312
* https://bugs.launchpad.net/kicad/+bug/1817312
Eagle parsing allows pin 1 to be different from the other pins in the
package but this is set by a tag marking the pin as "first" rather than
the actual number of the pin.
Fixes: lp:1829251
* https://bugs.launchpad.net/kicad/+bug/1829251
Some how a board object was required to fetch the line width when a
footprint is being parsed. The problem is that there is no board
defined when loading Eagle footprint libraries so there was a nullptr
segfault as a result. When there is no board defined, use the default
KiCad layer line widths.
Fixes lp:1829243
https://bugs.launchpad.net/kicad/+bug/1829243
This removes the remaining hard-coded segments counts and replaces them
with the relative error calculation where the segments per arc is
determined by the maximum error we allow (smaller arcs = fewer segments)
This prevents the dialog being sensitive to the exact ordering
of the enum, and instead defines an explicit mapping between
the axis numbering type, the label string and the position in the
list box control.
Remove the axis numbering code from ARRAY_OPTIONS
and place in a new class, ARRAY_AXIS. This keeps
the logic for the array item numbering separate from
the logic for the array item geometry.
This simplifies the logic in the ARRAY_OPTIONS class, which
no longer has to deal with the numbering of each axis.
This is a stop gap fix. It should be possible to use the wxFrame title
string for this but some of the frame windows have appropriated the title
string for configuration file naming purposes which is less than ideal.
Fixes lp:1825977
https://bugs.launchpad.net/kicad/+bug/1825977
When using "Place Text" the crosshair was freezing if cancelled before
placing text.
After the crosshair freezes, the next uses of the "Place Text" or
"Add Dimension" caused the crosshair to jump to the screen location
where the previously the crosshair was frozen.
Cancelling the "Add Dimension" caused the crosshair to jump to the
screen location where the crosshair was when cancelled on the next use
of the "Place Text" or "Add Dimension".
Fixes: lp:1822578
* https://bugs.launchpad.net/kicad/+bug/1822578