* 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
If the hierarchy navigator is open and expanded, we have references to
the existing sheets. These need to be cleared when importing a new
sheet over top
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20004
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 adds a mode for AUTOADDED fields.
Also fixes a couple of bugs where a manual-level autoplaced
symbol would get reset back to auto-level when autoplaced.
Remove the PROFILE definitions from the incremental connectivity
profiling so a special build isn't required. If the starting and
stopping the profile timer is excessive, we can add this back.
(cherry picked from commit 8a09e5f3c3ab185671a5944625e5f8b3ef4fb5c5)
This is useful when you want to copy text content out to some
external program (or put it in a text item/box).
I'm not sure it's possible to intuit exactly what a user wants,
as you will often want to copy items as the real items, and sometimes
as text. While KiCad might be able to make a smart guess, external
programs will have no chance!
The sheet list is returned as a copy of the cached list rather than a
reference to prevent external code from changing the list. While not as
performant, it eliminates the risk of the sheet list being altered in
ways that could break the schematic. The sheet list should only be
updated by calling SCHEMATIC::RefreshHierarchy() when any appropriate
sheet changes are made.
Note to developers: there is something inherently different about how the
QA tests are loading and handling schematics versus the schematic editor.
Using the cached sheet list for the SCHEMATIC object will cause some QA
test to fail. This is why SCHEMATIC::Hierarchy() has not replaced
SCHEMATIC::BuildSheetListSortedByPageNumbers() everywhere.
This makes it easier to see which pins have alt modes
available. There is an option to turn them off.
The icon positions are chosen so they they shouldn't
interfere as far as possible:
* If the text is inside, the icon goes more inside
the body
* If the text is above/below the pin, it goes away from
the body
This means it won't collide with a symbol wall in
most cases, but some symbols with alt pins on opposing
sides may need to be widened if the icons are show.
Includes a rather fiddly refactor of the SCH_PIN painter
function, which needs quite a lot of massaging to allow
it to figure out where an icon would go. Quite a bit
of logic is broken out into smaller encapsulations with
less visible state to each chunk.
Icon modes for base-name-selected and alt-selected are
included, but only the former works due to information
being thrown away during the SCH_PAINTER tempPin
process.
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/11069
PCB and footprint editors were already blocking this. Otherwise we would
get weird issues when pasting while drawing things like sheets or
textboxes that aren't selected while drawing.
This is a little more primitive than the pcbnew tool,
in the same way that the arc tool is also more primitive
(no interactive manager).
It works just about well enough to get the curves drawn,
but all these tools could do with some interactivity
in esschema and symbol editor.
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/8828
When resizing the panel, it retrieves the last defined pane size
instead of the current one. To fix this, we need to trigger the event a
second time after the pane size has been defined. This avoid calling
m_AuiPanels.Update() that crashes windows if called directly
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17835