There are some headers which don't need to include pad.h (which brings
padstack.h) - they just need forward defines.
While pad.h is not an especially heavy include on the scale of things,
footprint is quite heavy. And both reduce inclusion load and
reduce the number of files needlessly sensitive to changes in headers.
This breaks the view_item.h -> inspectable.h -> property.h chain that
pulled wx/propgrid/property.h into 150-200 TUs. The lean inspectable.h
now includes only wx/any.h, wx/string.h, wx/variant.h.
Headers using DECLARE_ENUM_TO_WXANY (board_item.h, sch_item.h) retain
their property.h include since the macro requires it.
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
PCB_IO_MGR::FindPlugin() returns a new PCB_IO* that the caller owns. The
Python wrapper functions (FootprintLoad, FootprintSave, etc.) in
footprint.i call GetPluginForPath which calls FindPlugin, but the
returned plugin object was never deleted because SWIG didn't know
Python owned it.
The %newobject directive tells SWIG that Python owns the returned
PCB_IO* and should delete it when the Python object is garbage
collected.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22526
Reverts most of the fix for 9778. Highlighting
multiple markers creates confusion in both the
status bar and how the associated clearance paths
are shown.
Also adds more clearance path graphics to make
the need for a fix to 9778 somewhat less acute.
Also makes clearance graphics scale with marker.
Put the string manipuuation utils in the cpp, and
remove string_utils.h from the includes of netinfo.h.
This spams that header into about 350 files, not all of which
need it. Then go round and tidy up the places (most exporters
and dialogs) where CPP files weren't including string_utils.h
when they used it, as well as some other order-sensitive
include issues that turned up.
After forcing the locale-specific read/writes out of our IO, we can
remove the global LOCALE_IO calls in many places.
Still to do: exporters, pcm, specctra, settings, drawing sheets,
plotters
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
Previously, these checks injected a custom handler to add graphic
objects to a DRC marker. This was not thread-safe and was causing
non-deterministic crashes. The DRC reporting methods now accept
a customer handler which is called on the newly created
PCB_MARKER within the commit context. This defaults to nullptr
for DRC checks which do not require graphics or other additional
processing.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19282