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.
Remove KICAD_PTEMPLATE environment variable as it's purpose was not
clear and was often poorly defined as the path to the KiCad installed
templates.
Add a new KICAD_TEMPLATE_DIR environment variable which clearly should
be the path of the KiCad installed templates. Make this environment
variable available in the user settings in case the default is wrong
which has been the case in some instances. Use the standard search
stack to set the default system template path which has a much greater
chance of being correct.
Add a new KICAD_USER_TEMPLATE_DIR environment variable which clearly
should be the path of the user defined templates. Users most likely
were not even aware of the old default user path unless they read the
fine manual.
Set template path search stack priority as follows:
* KICAD_USER_TEMPLATE_DIR
* KICAD_TEMPLATE_DIR
* Search stack template paths
Reverse template selection dialog and project path dialog for improved
user experience.
Fixes lp:1543443
https://bugs.launchpad.net/kicad/+bug/1543443
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
The original algorithm picked the value from the last component having
non empty value for a given field, but the processing order was
dependent on the layout of the components in the memory. It means that
for each component, the field values could have been taken from any
unit, randomly.
The patch improves the algorithm, trying to get all values from the unit
with the lowest number and resorts to other units only when there are
field values left empty.
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
This reverts the hotkeys file format to a human readable and VCS
compatible listing by splitting individual hotkey assignments onto
separate lines instead of the single key. This unifies the hotkey format
between the application configuration and export Hotkey routines.
Both hotkey formats remain readable by the same routines.
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.
The tools were being set as idle, whenever an event handler execution
finished (via TOOL_MANAGER::finishTool()). Such approach does not take
into account cases when a tool is active and receives an event causing
another event handler of the same tool to run. When this happend, the
tool has been incorrectly set as idle when the second handler finished
its execution.
In a particular case, invoking the router settings dialog caused the PNS
router to be incorrectly detected as inactive in
EDIT_TOOL::invokeInlineRouter(). Due to that, ROUTER_TOOL::CanInlineDrag()
requested a selection that required disambiguation menu for items
that were modified by the router, but not yet committed. After the drag
tool had finished, the disambiguation menu was eventually shown
with items existing only in the undo buffer. Removing such item lead to
track DLIST corruption, effectively erasing all tracks.
Fixes: lp:1767826
* https://bugs.launchpad.net/kicad/+bug/1767826
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
The opencascade patch intrusively checked against libraries but broke
some build scripts. This restores the default cmake OCE behavior that was
changed by 2bab30d9a and makes the OpenCascade search truly secondary.
It was always replaced with space in a graphic text, but it should happens
only in non quoted texts
Now graphic texts containing ' ' or '~' or '"' are always quoted
(work fine with 4.0 version)
Fixes: lp:1771105
https://bugs.launchpad.net/kicad/+bug/1771105
A structured comment is a comment line starting by "G04 #@! " and in fact containing
a X2 attribute. It is used to create Gerber files contianing X2 metadata, but compatible
with X1 file format