When changing units, we might not have the original pins
available to set the Alt assignments. Instead, we search
by number and skip the pin if it doesn't exist in the
new unit
Fixes https://gitlab.com/kicad/code/kicad/issues/12218
ba7a06f5 tried to fix a (minor) issue in net names when the name was coming
from a input power pin having a '/' in name. But ba7a06f5 blindly escaped any '/'
in net name, and the hierarchy info was lost.
Now only the pin name is escaped (like any other pin name used in net names)
Unconnected items and schematic partity violations are also now
represented by markers, so the ERC/DRC window itself needs to do
the deep-delete.
Fixes https://gitlab.com/kicad/code/kicad/issues/12182
1) Move a bunch of std::map's to std::unordered_map to get constant-time
look-ups
2) Lengthen progress-reporting intervals to spend more time doing work
and less time talking about it
3) Reverse order of SHAPE_LINE_CHAINs in thermal intersection checks to
make (much) better use of bbox caches
4) Don't re-generate bboxes we already have
5) Fix some autos that weren't by reference (and were therefore copying
large datasets)
6) Rename delta progressDelta so it's easier to search for in future
7) Get rid of a few more autos (because I don't like them)
8) Pass large items to lambdas by reference
Fixes https://gitlab.com/kicad/code/kicad/issues/12130
Template instantiations need to follow the template definitions or you
don't get all of the template members, just the ones called from within
the file
On msys2, this file (mainly a large amount of data) compiled in debug mode
crashes Eeschema at start (issue probably related to a memory issue).
On msys2, binaries built in debug are always *very* large
Removes the need for the "KiCad" workaround where stacked pins need
to be "Passive" type. Pins that have the same parent symbol, name,
position and type are considered to be the same output and do not
trigger ERC errors
Fixes https://gitlab.com/kicad/code/kicad/issues/5367
Unfortunately, Windows headers define a lot of macros for common words,
so we had to rename some enums to not collide.
We also fix some of the many bugs related to the new simulation
architecture and the Spice Model Editor dialog.
- Tab-switching,
- Automatic expansion of categories on tab-switch,
- Various minor simulation improvements,
- Various new simulation-related bugfixes.
Don't serialize parameters in certain models for default values. Infer
models from Value field for some kinds of models. Resolve synonyms when
loading models from Spice libraries.
Rewrite the spice exporter to work with the new simulation model
architecture and data model, with many bugfixes related to the latter
two along the way.
Implement parsing and loading Spice libraries into KiCad. This is done
without any involvement of Ngspice -- we create our own in-tree parser
using PEGTL -- because Ngspice doesn't offer any intermediate output we
could plug ourselves into. We don't parse everything -- just the library
content, so this won't be that much effort.
We implement some basic Spice code preview to give the user a hint what
Spice code eir model will correspond to.
Implemented serialization and deserialization of models in symbol fields
through the SIM_VALUE class. We don't carry the Spice legacy of
case-insensitive suffixes, instead we conform to the SI standard (i.e. M
is Mega, not milli, P is peta, p is pico).
Parameter grid value validation is implemented by simply not allowing
any characters that will make the value invalid (instead of highlighting
the field in a red color). This will likely be changed at some point in
the future.
This commit adds parameter display functionality, via a wxPropertyGrid
widget, to the Sim Model Editor. To faciliate that, a SIM_VALUE class is
created to serialize, deserialize, and validate numeric values in the
new parameter grid.
SPICE_MODEL is renamed to SIM_MODEL and split into several subclasses
that correspond to different model kinds.
With that also begin reworking the internal structure of the simulation
model storage. Some models have parameter information extracted from
Ngspice, which was specially patched to faciliate that. The model is
stored and managed by the SPICE_MODEL class (later will be renamed to
SIM_MODEL).
SCH_SYMBOL::Unit() is updated when the symbol is on the screen, we need
to get the instance unit so it's right even if it's not being displayed /
has never been displayed.
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/12050
Placing a symbol from symbol editor starts the TwoClickPlace in a
different context. We need to prevent multiple contexts of the same
tool
Fixes https://gitlab.com/kicad/code/kicad/issues/11891
Pins that are explicitly connected in the schematic should not have an
"unconnected pin" ERC error. But stacked pins do not count as
explicitly connected because the schematic designer has not connected
them
(cherry picked from commit 865bb54591)
Also find a few more places where we are reaching into a new frame to
perform actions that need to have dialogs closed.
Running actions should also wait for the next cycle rather than being
immediately executed when we are calling into a new frame. This allow
for the cleanup actions onClose() to happen prior to the next action
starting
Fixes https://gitlab.com/kicad/code/kicad/issues/11891
U1 and u1 are allowed but if they both exist in the same schematic, they
will throw an ERC and annotation error. Reannotating will make them U1
and u2.
Fixes https://gitlab.com/kicad/code/kicad/issues/11862
Converts dialog_image_editor to panel_image_editor. Embeds this panel in
a new properties dialog for the schematic and PCB editors that allows
editing position, layer, locked status, etc. like other items.
ADDED: When pin length is changed now, the pin position is adjusted
according to its orientation such that the connection point for wires
moves instead of the other side of the stem base. For pins coming out of
component boxes, etc. this keeps them attached to the box while the
length is changed.
The fractional part of Altium schematic units is an integer number of
1/10000 mil segments, which is 2.54 nm. The internal unit of eeschema
is 10 nm, so each fractional unit in Altium is 0.254 base eeschema
units. To be consistent with
cf33cfcad1
we round to the nearest 10nm for each element
Fixes https://gitlab.com/kicad/code/kicad/issues/11742
Previous the cross-probing options were mixed between sending and
receiving cross-probe events. This clarifies so that all of the pcbnew
cross-probe options deal with whether the cross-probe is seen in pcbnew
and all of the eeschema options deal with seeing the event in eeschema.
Also updates the wording in the options panels to be the same where
possible and adds tooltips
Fixes https://gitlab.com/kicad/code/kicad/issues/11454
At the moment, units are stored in the instance data, so when loading
the file, all symbols will have bbox for the first unit. After calling
`UpdateUnit()`, we need to recache the rtree bounding boxes to get
correct hit tests
Fixes https://gitlab.com/kicad/code/kicad/issues/11681
Users may still use xsltproc with kicad as the invocation of third party tools remains.
We simply are not maintaining these xsl sample scripts anymore nor bundling xsltproc.
Fix https://gitlab.com/kicad/code/kicad/-/issues/9074
Common settings may change colors so make sure that we refresh the draw
objects when the settings change to draw them in the proper colors.
Failing to do this may also cause left over lines on the screen
depending on OpenGL drivers
Fixes https://gitlab.com/kicad/code/kicad/issues/11921
(cherry picked from commit 8aabdcff9c)
When a rescue library already existed, the disabled writing of legacy
symbol library table entries prevented the rescue library from being
updated.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/11897
Thread pools are long-lasting executors that have close to zero overhead
when launching new jobs. This is advantageous over creating new threads
as we can use this for threading smalling jobs and smaller quanta. It
also avoids the heuristics needed to determine the optimal number of
threads to spawn
GetGAL()->DrawGrid() was called when switching the engine, outside a paint event,
thus creating a crash (at least on Windows) probably because the new Gal stuff was
not fully initialized.
The start/end point plotting is not reliable for eeschema. We need to
preconvert to angles to get the correct winding as the default plotter
conversion in the PLOTTER class makes pcbnew-based assumptions
Fixes https://gitlab.com/kicad/code/kicad/issues/11885