Commit Graph

188 Commits

Author SHA1 Message Date
John Beard 6c5b1bbc8b Pcbnew: Allow to skip layer mapping using advanced config
Clicking Automap/OK was fun for a bit.
2026-03-04 23:28:31 +08:00
Seth Hillbrand 377023af84 Reduce wxEVT_UPDATE_UI overhead
wxApp::DoIdle fires the full window-tree UI update sweep between
every Wait() iteration in interactive loops. With the somewhere around
150 bound handlers, SearchDynamicEventTable dominates CPU time at
interactive frame rates.

We fix this by setting the update interval to 200 ms for the duration
of performRouting, performDragging, and InlineDrag and update the default
global default from 0 to 50 ms (200Hz).
2026-02-27 15:21:23 -08:00
Seth Hillbrand f826061434 Move DRC Rule Editor out from behind AC 2026-02-24 16:32:02 -08:00
Jeff Young 0381ca0e9e Retire RepairSchematic().
It's been broken for some time anyway....
2026-02-18 18:49:51 +00:00
Seth Hillbrand 54cf90965b Add PcbImportMinObjectSizeNm advanced config to prevent zero-size imports
Clamp all imported object dimensions (pad size, track width, via
width/drill, circle radius) to a configurable minimum. Default is
1000nm (1um), enough to prevent zero-size objects that crash the
renderer or cause division-by-zero in DRC without affecting real
designs.

Applied at 10 creation points in the PADS ASC importer: pad shapes,
test point pads, fallback pads, track widths, via dimensions, copper
shape widths, footprint decal circles, and board graphic circles.
2026-02-15 10:59:44 -08:00
Seth Hillbrand 0e7a052af0 PADS: add ASCII format importer for PCB and schematic files
Add complete import support for PADS ASCII (.asc) files, covering both
PCB layouts and schematics. The importer handles board outlines, copper
pours, routing with via inference, footprint decals, net assignment,
design rules, and component placement for PCB files. For schematics, it
supports symbol building from CAEDECAL definitions, multi-gate and
multi-variant parts, power symbols, wire routing, net labeling, arc
graphics, title blocks, and hierarchical sheet connectivity.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19944
2026-02-10 21:21:22 -08:00
Seth Hillbrand 5049ddae7a Move AUI and iterative refill out of ADV_CFG
Pre-RC1 changes to get needed features out of AC jail for wider use.
Changed after core team discussion at FOSDEM
2026-01-30 09:26:23 -08:00
Wayne Stambaugh cf9e4e5bdd Remove variant advanced configuration. 2026-01-14 09:13:12 -05:00
Seth Hillbrand a3a12399f2 Add graphical editor for custom design rules 2026-01-12 21:42:45 -08:00
Seth Hillbrand bc37f184bb Prevent lockup when tuning differential pair length
Fix freezes caused excessive branching.  Replaced the recursive
branching tracking with iterative joint mapping and a timeout fail-safe.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22041
2026-01-07 16:08:27 -08:00
Seth Hillbrand f0dbe9404c Add iterative refiller option
Right now, behind advanced config for testing.  Zones that are lower
priority get a second bite at the apple after higher priority,
overlapping zones have their islands knocked out.  Adds some additional
time to the zone fill, depending on the zone configuration

Fixes https://gitlab.com/kicad/code/kicad/-/issues/14388
2025-12-31 19:35:15 -08:00
Jeff Young 9cf72d50a2 Move customisable toolbars out from under advanced cfg. 2025-12-29 20:30:35 +00:00
Magnus Lundmark 26531bb25d Add text variable functions and recursive expansion for tables 2025-12-04 13:12:24 +00:00
Seth Hillbrand 3a3205071b Add: local history protections
Uses lockfile to prevent overlapping commits
Ensure restore happens recursively
Remove files added after restore point
Prevent duplicate savers from overrunning each other
2025-10-23 15:48:35 -07:00
Seth Hillbrand ce49e9d69c Prioritize anchor snapping over snapline/grid
We have a number of potential snap points and we would prefer to snap to
identified snap points on objects in the view over ethereal points
created by intersections
2025-10-15 13:42:13 -07:00
jean-pierre charras edf5324a6d Add EnableUseAuiPerspective advanced option to allow use of aui LoadPerspective()
LoadPerspective allows a easy way to store/load frame geometry.
Unfortunately it easy create broken geometry frame (missing or misplaced toolbars
for instance) when the number or the type of items has changed between last saved
geometry and the geometry frame in use when loading old Perspective. And the only
one way to fix a broken geometry is to delete the config json files.

So the saved Perspective is loaded only if EnableUseAuiPerspective advanced option
is set to 1, mainly for developers.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21828
2025-10-12 14:43:44 +02:00
Jeff Young 814f65934f Improvements to DRC marker clearance paths.
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.
2025-10-10 21:38:46 +01:00
Seth Hillbrand 24b3e26db6 Create a cross-product output of multi-run data
When multi multi-run data are created, the plot output should reflect
the available data combinatorics.  This also adds an advanced config
flag limiting the total number of allowed plot lines.  The advanced
config flag might be moved to a use config at some point or changed to a
time limit

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21871
2025-10-03 12:15:37 -07:00
Wayne Stambaugh 33ead34ea5 Work in progress variant code commit.
Please do not attempt to use this yet as it is a work in progress.  Given
large number of merge conflicts, I pushed this partial commit to save time
rebasing.

All of the user interface is hidden behind the "EnableVariantUI" advanced
configuration flag until variants are ready.
2025-09-26 08:54:08 -04:00
Seth Hillbrand 753afc7f37 ADDED: Plot uses the KiCad font, embedded in PDF
Creates a Type-3 representation of our stroke font, embeds it in the PDF
and then causes text to be represented in that font.

This prevents the need for over-stroking and keeps our PDFs searchable
and accessible
2025-09-17 09:05:15 -07:00
Jeff Young 425b77b34c wxString::both goes with Strip(), not Trim().
But Strip() is deprecated, so we shouldn't use it
(or wxString::leading/trailing/both) at all.
2025-09-16 17:51:11 +01:00
Jeff Young 87739c8ac7 wxStringTokenizer usage cleanup.
1) Always be explicit about what the delimiters are
2) If space is a delimiter, we probably want to skip
empty fields (wxTOKEN_STRTOK)
3) If space is not a delimiter, we often need to
trim the resultant tokens
4) Be more lenient about \t\r\n (and when they are
included, include them in the same order)
2025-09-16 13:03:02 +01:00
Mike Williams 202619cd43 design blocks: fix PADs getting copied in routing, enable by default 2025-09-02 13:58:18 -04:00
Seth Hillbrand e282dca102 Add configurable hysteresis to PCB snapping
Makes it harder to enter and harder to exit a snap.  ideally this should
help make snapping more intuitive and easier to use.  Once you have a
snap, it is harder to lose it but it avoids being overly snappy in the
begining
2025-08-29 16:21:35 -07:00
Seth Hillbrand 6dd03bc735 Fix screen scaling
We don't use wxWidget DPI (which is the screen DPI) for our on-screen
display.  Instead, we use 91 (?!?).  Make this configurable in advanced
config and use the set value in our scaling widget
2025-08-25 18:03:46 -07:00
Seth Hillbrand 23c1a68da8 Make printing consistent with plotting.
How you ask?  Plot first -> then read the PDF and print directly to the
platform-specific printers.  Roundabout?  Yes.  Better than wx printing?
Darnbetcha.

Also allows multi-size page printing and proper margins and print
preview

Fixes https://gitlab.com/kicad/code/kicad/-/issues/1831
2025-08-16 20:07:45 -07:00
Mark Roszko e08c7799fa Fix build error 2025-08-15 23:10:48 -04:00
John Beard 85dcdd5cb2 Altium: advanced config to skip models
This can be really slow, and isn't required if testing
something that's unrelated to models in a large demo file.
2025-08-16 05:36:11 +08:00
Seth Hillbrand 17d9ff4fe7 Add the ability to edit advanced config
If you set the env var KICAD_EDIT_ADVANCED_CFG=1, you get a new menu
option in the KiCad project window's Edit menu.  Lets you modify the
settings for advanced config graphically without having to
remember/lookup the magic incantation
2025-08-14 15:37:02 -07:00
Seth Hillbrand 1066595a2c Add wallclock timeout to PNS walkaround
WALKAROUND::singlestep is used by both shove and walkaround modes and
can bog down when applied to clusters with many objects.  In these
cases, we are unlikely to find a viable solution and it is beter to
allow the user to find a different ending position

(cherry picked from commit d9cfb94281)
2025-07-15 15:24:36 -07:00
Jeff Young 2cd6654e81 Hop-over improvements.
1) Move hop-over enablement to Schematic Setup.
2) Make hop-over size user configurable.
3) Prefer hop-overs to hop-unders.
2025-06-18 22:18:59 +01:00
Dhineshkumar S f650999004 Eeschema: Add option to show unconnected wire crossings as hop-overs. 2025-06-15 16:53:40 +02:00
Jeff Young 9ec4c9f540 Algorithmic safety.
Don't let computation times blow up.
2025-05-12 20:28:47 +01:00
Seth Hillbrand c5fde2aeb5 Add maximum pasted string length
Allows the user to avoid pasting unparsable boards as strings, which
freezes the system as we try to display enormous texts

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20732
2025-04-30 13:22:57 -07:00
JamesJCode 906c24bc6d Unify length calculation between router, board / frame, and DRC 2025-03-30 09:18:41 +01:00
Seth Hillbrand f83e607e6e Enable/disable git tracking in user prefs
Don't require advanced config for people who want to disable
2025-03-24 11:52:50 -07:00
Mike Williams e11cf94a3e design blocks: add PCB design blocks behind advanced config
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/2508
2025-03-20 15:13:52 -04: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 ab114c4159 Put preferences panes for toolbars, but hide behind an advanced config
There is still more work to do to make this feature actually
user-friendly and make it so people can't break their UI config too
easily.
2025-02-28 01:57:37 +00:00
Seth Hillbrand 5027a562e4 Adjust git timing parameters
Move most of the update firing to the file system watcher (except for
windows network shares that still need timed updated).  Gate the repo
status for sync

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20133
2025-02-26 15:56:38 -08:00
Seth Hillbrand 2c54ab277b Thread git checks
Push the git checks from the main thread into child threads to prevent
resource contention in some cases where Windows machines might have many
files in git that are _also_ being managed by Google Drive

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20078
2025-02-25 16:07:19 -08:00
Jeff Young f2da0c791f Retire non-cairo printing.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19323
2025-02-24 11:08:29 +00:00
Seth Hillbrand 878cf768d6 Quiet down the Exclude from Sim marks in Schematic
The big grey X and dimming the component made it look like the component
was no longer a part of the circuit, rather than just being excluded for
a single purpose.

The changes the display to make a more subtle grey outline with an icon
in the corner to indicate that this refers to simulation.
2025-02-21 12:38:23 -08:00
JamesJCode 6bc77195bd Move net inspector bulk update threshold to advanced config 2025-02-09 16:46:18 +00:00
Seth Hillbrand 3018d7af09 Enable git by default 2025-02-05 20:52:47 -08:00
John Beard 986312e612 Revert "Pcbnew: reduce snap timeout a fraction"
Now the updating is fixed in d90862b444,
the hover timeout is shorter because it's not mistakenly waiting a
random-ish time for the next mouse movement. So this adjustment is not
required. In fact, if anything, it may be better to go the other way.

This reverts commit 7080d99464.
2025-02-06 11:31:51 +08:00
jean-pierre charras bc25044e78 Eeschema, advanced_config: enable Cairo to export to clipboard by default. 2025-01-31 19:31:43 +01:00
John Beard 7080d99464 Pcbnew: reduce snap timeout a fraction
This is subjective but 500ms just seems a hair too long.
2025-01-25 23:57:38 +08:00
Wayne Stambaugh 5c8f4697ca Common folder housekeeping part 1. 2025-01-12 12:06:45 -05:00
Dhinesh e02b6be4c9 Fix error-marker highlighting for multiple markers at the same location
Previously, if multiple error markers were placed at the same location,
the selected marker was not visually differentiated from the unselected
ones, even if one was at the top of the stack. To fix this, Need to pass
overlapping markers to the FocusOnItems() function instead of calling
FocusOnItem() with only the selected marker.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/9778
2025-01-09 23:41:02 +00:00