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
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
If a polygon has fewer than 3 points, it is invalid. We need to
register this as failure, otherwise we save the formatting/closing
s-expr for the polygon without the actual polygon points. This breaks
the footprint and board.
Don't re-save all files in a library when editing a single footprint.
This creates issues with formatting in version control systems where
unmodified files are re-written without being explicitly changed by the
user.
Fixes: lp:1752991
* https://bugs.launchpad.net/kicad/+bug/1752991
We do not modify the underlying board when saving. Previously only the
visible layers were saved. This created a discrepancy between the board
that the user was editing and the board that was saved to disk.
Fixes: lp:1754049
* https://bugs.launchpad.net/kicad/+bug/1754049
It's too expensive to fetch the timestamps when the github
server is busy. See Dick Hollenbeck's comments at the top of
github_plugin.cpp for more info.
Also adds some safety to the other caching algorithms after
seeing github_plugin's wild-west usage of the kicad_plugin.
Fixes: lp:1753143
* https://bugs.launchpad.net/kicad/+bug/1753143
Too many external applications fail to touch the parent directory.
Also removes FP_CACHE_ITEM lastMod times and dirty flags as we've
always loaded libraries atomically anyway.
Claws back some of the performance lost by being more efficient
with cache management for sequential calls to Enumerate and then
Load.
Fixes: lp:1750936
* https://bugs.launchpad.net/kicad/+bug/1750936
Smartens the cache freshness checking, and adds checksums of
constituent-directory last-mod-dates to the footprint info
list.
Also inserts the dataPtrs into the list at the same time as
the text to keep wxWidgets from measuring the width of the
text twice (yes, really). And converts the list to default-
column widths in case the wxWidgets patch is present to
greatly speed list creation (by not measuring all that text).
On my machine drops the first-load time from 4s to 2.5s and
the subsequent-load times from 2.5s to < 1s. With the
wxWidgets patch subsequent-loads become near-instantaneous.
Check the footprint library path modification against the last load
time and reload the cache if the path modification time has changed
when a new file is added to the footprint library path.
Fixes lp:1727977
https://bugs.launchpad.net/kicad/+bug/1727977
Rename GetPolyPoint() to BuildPolyPointsList(), because GetPolyPoint() looks like an accessor, but it is not an accessor.
(Using it as accessor can creates a *very long calculation time* for very basic access to polygon vertices)
Fixes: lp:1745050
https://bugs.launchpad.net/kicad/+bug/1745050
- Reverts behaviour of 3e71ed2421
- 3D model offset now explicitly written in mm, using "offset" tag
- Any read "at" tag is converted from inches to mm
- This will not break any 3D model offset when reading files
- It will however render files incompatible with old versions
- renamed connectivity.[h|cpp] to connectivity_data [.h|.cpp] so that the file name matches the main class name.
- GetNetItems() now returns a vector instead of a list
Make all trace environment variable strings upper case and prefix with
KICAD_TRACE_ for consistency.
Add Doxygen group for the trace environment variable strings.
This forces the compiler class specific features rather than borrowing
from the base class's std::string. In some cases prior to this,
wxString( std::string ) was being called rather than UTF8::operator
wxString() leading to garbled wxStrings.
Added function UTF8::wx_str() which is of great convenience also.
Implicit conversions still work as before, and hopefully more reliably.
This commit was too broad and not cognizant of the purpose of the class
UTF8.
Add MAYBE_VERIFY_UTF8() macro, which can trap non-UTF8 encoded strings in
debug builds.
Use that macro conditionally in class UTF8 to trap non-UTF8 encoded strings
being put into UTF8 instances.