Break the most expensive header include chains that contaminate the
largest number of translation units
New lightweight headers for extractdded types:
font_metrics.h, mouse_drag_action.h, board_project_settings_params.h,
common_settings_internals.h, wx_infobar_message_type.h,
zone_layer_properties_grid.h
Remove all wxLogDebug instances by either replacing them with wxLogTrace
calls where it was obvious what the trace flag should be or out right
remove them from the code base.
When checking if an embedded file needs to be updated, we now compute the
hash of the source file and compare it against the stored hash. This
allows detecting changes to embedded 3D models that are used by multiple
footprints.
Adds ComputeFileHash() static method to EMBEDDED_FILES to compute
MMH3 hash of a file on disk without fully embedding it.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20495
The symbol library embedded files were implicit, which made them hard to
work with. Adding the panel makes it clearer and setting the panel
correctly to the callback ensures that the structure is updated on
close.
Adds some copy/move semantics for EMBEDDED_FILES to take advantage of
how the multiple copies are handled in the library editor
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18935
Each editor needs the embedded files tab in the
schematic/pcb/symbol/footprint settings. But the footprint may add an
embedded file from the 3d models tab and symbols/footprints may add
embedded files from the grid. This should be immediately visible in the
embedded files tab. Additionally, removing the reference to an embedded
file in the grid or 3d models now removes the embedded file as well.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18934
Recommendation is to avoid using the year nomenclature as this
information is already encoded in the git repo. Avoids needing to
repeatly update.
Also updates AUTHORS.txt from current repo with contributor names
Also fixes a bug where the pretty printer didn't insert
linebreaks for a forest (it assumed a single tree root).
Also further regularises bool and quote formatting.
This drags in dsnlexer.h to everything that uses EMBEDDED_FILES, but the
parser is actually only used in two files. It's not the only thing to
drag it in, though.
Currently, touching dsnlexer.h rebuilds nearly 800 files, when it
actually is needed by about 50 at most.
SHA256 is fine for one-offs but for large libraries where we might be
running the hash on hundreds of files, the speed difference is
appreciable. We don't require crytographic hashing, just a check that
the original file hasn't been corrupted so Murmur3 satisfies our basic
requirement.
Schematics, symbols, boards and footprints all get the ability to store
files inside their file structures. File lookups now have a
kicad-embed:// URI to allow various parts of KiCad to refer to files
stored in this manner.
kicad-embed://datasheet.pdf references the file named "datasheet.pdf"
embedded in the document. Embeds are allowed in schematics, boards,
symbols and footprints. Currently supported embeddings are Datasheets,
3D Models and drawingsheets
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6918
Fixes https://gitlab.com/kicad/code/kicad/-/issues/2376
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17827