1111 Commits

Author SHA1 Message Date
Seth Hillbrand 788716490a Fix irreflexive comparator in cvpcb auto-association sort
sortListbyCmpValue used >= 0, which returns true when comparing
equal elements (Cmp returns 0 for equal strings). This violates
the irreflexivity requirement of strict weak ordering, causing
undefined behavior in std::sort.
2026-02-19 07:47:29 -08:00
Seth Hillbrand c52ab91c84 Reduce compile times by extracting headers
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
2026-02-13 17:10:45 -08:00
Mark Roszko f95a58c5dd KIWAY_EXPRESS -> KIWAY_MAIL_EVENT 2026-02-02 20:33:08 -05:00
Mark Roszko 4f33af27dd Some renaming of kiway classes 2026-02-02 20:33:08 -05:00
Seth Hillbrand 8eb3f3c618 Enable GVFS/network filesystem visibility in file dialogs
On GTK, wxFileDialog defaults to local_only mode which hides GVFS-mounted
filesystems like Google Drive, SMB shares, and external drives mounted
through GVFS. This adds a platform-specific function that disables
local_only mode to show these network/virtual filesystems.

Apply AllowNetworkFileSystems to all file dialogs across KiCad
to ensure directories on network filesystems are visible when
browsing for files.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/14372
2026-01-29 12:43:20 -08:00
Seth Hillbrand 55036f9921 Replace GFootprintList with KIWAY-based filter
The symbol chooser's footprint dropdown now fetches filtered results from
pcbnew via KIWAY instead of requiring direct access to FOOTPRINT_LIST.
Filter criteria (pin count, footprint patterns) are serialized as JSON,
sent to pcbnew, and matching footprints are returned as a JSON array.

The filtering uses preloaded footprints from the adapter rather than
re-reading from disk, which eliminates the main performance bottleneck
when selecting symbols.
2026-01-23 08:44:31 -08:00
Seth Hillbrand 764cfdd3ba Remove fp-info-cache and simplify footprint library loading
Tree adapters now call GetFootprints() directly instead of going through
GFootprintList and its cache file. FOOTPRINT implements LIB_TREE_ITEM so
footprint objects work directly in library tree displays similar to
LIB_SYMBOL.

Removed cache read/write calls from files.cpp, footprint_edit_frame.cpp,
and pcb_base_edit_frame.cpp. The footprint chooser uses AsyncLoad() and
BlockUntilLoaded() to ensure libraries are ready before building trees.

GFootprintList still exists for cvpcb and eeschema cross-module access
via KIWAY, but no longer reads or writes cache files.
2026-01-23 08:44:31 -08:00
Seth Hillbrand 9b9899979b Stop showing popup for library load errors
Errors are stored to a vector for display after clicking the warning
icon in the toolbar.
2025-12-31 13:15:06 -08:00
Jeff Young ba3e35b13e Protect toolbar controls from improper contexts. 2025-12-30 13:26:20 +00:00
Seth Hillbrand eb70c0ab55 FootprintLoad returns a newly allocated pointer
Must be freed

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22430
2025-12-05 11:16:53 -08:00
Jeff Young e512a3bd9d Fix CvPCB build. 2025-12-04 14:35:27 +00:00
Jeff Young c21fe5641e Can't use dynamic_cast across compile units on Mac. 2025-12-01 20:00:12 +00:00
Jon Evans 7527a1154a ADDED: background loading of footprints 2025-11-04 06:54:53 -05:00
Jon Evans baa29c1a58 Port footprint library table to new system 2025-11-04 06:54:53 -05:00
Seth Hillbrand 61ab7cc915 ADDED: AUI Memory
Using the new wx3.3 routines to serialize the state of our AUI elements,
we store them using JSON in the preferences for each window

I have left the SavePerspective in place for now to see how legacy
(mostly *nix) builds handle this and provide a smooth transition to 3.3

Fixes https://gitlab.com/kicad/code/kicad/-/issues/2381
2025-09-24 18:43:47 -07:00
Seth Hillbrand 0785e7525b Auto-update flyout icons when changed
Provides an update action to refresh the icon display when the user
changes the angle mode using a hotkey.  Also unifies the angle modes
between schematic, pcb and library editors
2025-09-22 12:19:20 -07:00
Seth Hillbrand f66cbaf43a ADDED: Stacked pin notation support
Implement bracket notation for stacked pins ([1,2,3], [1-4], [1,3,5-7]).
Automatic net naming proceeds based on the smallest logical pin number
in stacked groups.

Provide explode/reform commands in symbol editor for conversion.
Supports arbitrary ranges including BGA alphanum ranges like
[AA1-AA3,CD14-CD22]

Adds some additional QA and trace logging

Fixes https://gitlab.com/kicad/code/kicad/-/issues/2004
2025-09-07 14:59:51 -07:00
Seth Hillbrand 26f0c03e61 ADDED: support for 45 degree crosshairs
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6047
2025-08-23 06:20:00 -07:00
Seth Hillbrand 2445b481c3 Fix compile issue 2025-08-12 06:09:05 -07:00
Jeff Young 325570eeec Coverity tweaks. 2025-07-28 19:37:52 +01:00
Jeff Young be0da70839 Shutdown safety. (Possibly KICAD-8S0.) 2025-07-18 11:49:06 +01:00
Jeff Young beb83e87ea Must use addParamsForWindow to init WINDOW_SETTINGs structs. 2025-07-17 16:26:50 +01:00
Jeff Young a7e2878e6b Kicad SEXPR should no longer need LOCALE_IO. 2025-07-14 13:17:53 +01:00
Jeff Young 68d4940087 Thread-safety (potentially KICAD-VMX...)
... KICAD-6PV, KICAD-82, KICAD-R3A, and others.
2025-07-13 15:25:10 +01:00
jean-pierre charras 5f8547dc7e Minor compil warnings fixes. 2025-07-09 15:38:33 +02:00
Jeff Young 1e0a08034f Bounds checking (KICAD-8V9) 2025-07-04 16:40:17 -06:00
Alex Shvartzkop 4a5039c2cf Remove some unused variables. 2025-07-02 16:48:26 +03:00
Jeff Young ca1db93013 Iterator safety. 2025-06-16 11:46:18 +01:00
Jeff Young 1bc60c32f0 Nullptr safety. 2025-06-15 21:45:09 +01:00
Jeff Young 18e107529a Don't force callers of GetAppSettings to implement exception processing. 2025-06-14 20:25:59 +01:00
Jeff Young 96fa79cef2 Minor performance optimizations. 2025-06-03 11:41:27 +01:00
Jeff Young 06dcb64ad8 Harden progress reporter API against misuse.
Also, titles are nouns, not verbs.  (Messages
*inside* reporters are verbs.)

Also implements progress reporter for Altium
schematic import.
2025-06-01 19:38:24 +01:00
Jeff Young f58fc0b952 Rewrite GROUP undo based on uuids.
This also removes the GROUP/UNGROUP-specific undo actions.

This also fixes a bunch of undo bugs when duplicating
group members, creating pins, etc.

This also fixes some undo bugs when dividing wires etc.

This also fixes some bugs with new sch items not
being created within an entered group.
2025-05-21 14:24:59 +01:00
Jeff Young 0659290417 Simplify hatch damage/rebuild and move it out of view.
There should be far fewer hatched objects than other
objects, so we're spending too much effort finding
all the possible damage when we probably should
just be auto-regenerating all the hatching.

This also moves it out of being done during redraw,
which was proving problematic.  Plus the refill
zones architecture does it during commit, and has
a lot more miles behind it.
2025-04-07 11:46:02 +01:00
Mike Williams 40058ebe80 actions: move all basic selection operations to common actions 2025-04-02 12:02:01 -04:00
jean-pierre charras eaa1e6d594 Fix a collision with a Windows define and our use of the same var name.
We use IN for INCH as units, but IN is defined in a Windows header
2025-03-02 11:34:30 +01:00
Jeff Young f951497a4f Code brevity. 2025-03-01 21:58:31 +00:00
Ian McInerney 85810510f4 Tweak toolbar settings a bit
* Manage the settings using the settings manager for better lifetimes
* Better architect the internals and JSON to make it easier to identify
  the various tool types
2025-02-28 01:57:37 +00:00
Ian McInerney 548334b4e2 Load toolbar configuration from settings 2025-02-28 01:57:37 +00:00
Ian McInerney 7e2a81da15 Initial JSON work 2025-02-28 01:57:37 +00:00
Ian McInerney 784246575b Move footprint viewer/cvpcb actions to tool framework 2025-02-28 01:57:37 +00:00
Ian McInerney fc6f3f2332 Formatting tweak 2025-02-28 01:57:37 +00:00
Ian McInerney 7ad1103f55 Move toolbars to a serializable storage format 2025-02-28 01:57:37 +00:00
Ian McInerney c24dbc17bf Move toolbar setup flags into the action definition
This makes them centrally defined, and removes the need to specify them
when creating the toolbar.
2025-02-28 01:57:37 +00:00
Jeff Young 9083c9e6ab Remove dead code. 2025-01-29 20:54:33 +00:00
Wayne Stambaugh d53ed205f2 CvPcb and Eeschema part 1 housekeeping. 2025-01-18 14:31:15 -05:00
Seth Hillbrand 0b2d4d4879 Revise Copyright statement to align with TLF
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
2025-01-01 14:12:04 -08:00
Marek Roszko 22d13546fb Some DisplayError -> DisplayErrorMessage 2024-12-20 19:28:30 -05:00
Jeff Young 0bcf6000a4 Formatting. 2024-12-08 21:46:54 +00:00
Jeff Young 6ff79ae78a Fix typo. 2024-09-10 11:27:32 +01:00