Compare commits

...

2823 Commits

Author SHA1 Message Date
Wayne Stambaugh b09c98053a Tag stable version 9.0.8. 2026-03-15 08:48:29 -04:00
Anonymous a882002c9b Translated using Weblate (Japanese)
Currently translated at 100.0% (10123 of 10123 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2026-03-13 20:35:23 +01:00
Seth Hillbrand 3f114dd551 Update translations 2026-03-13 11:18:49 -07:00
Henrik Kauhanen f41bc308af Translated using Weblate (Swedish)
Currently translated at 99.9% (10117 of 10123 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2026-03-13 19:18:17 +01:00
Seth Hillbrand 3e68881128 Translated using Weblate (Norwegian Bokmål)
Currently translated at 95.3% (9651 of 10123 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/nb_NO/
2026-03-13 19:18:17 +01:00
EdizonTN 750d93767f Translated using Weblate (Slovak)
Currently translated at 71.8% (7271 of 10123 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-03-13 19:18:17 +01:00
YÜKSEL AÇIKGÖZ e40fc3e86a Translated using Weblate (Turkish)
Currently translated at 100.0% (10123 of 10123 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2026-03-13 19:18:17 +01:00
Seth Hillbrand a4ea00cb1c Translated using Weblate (Danish)
Currently translated at 95.3% (9656 of 10123 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/da/
2026-03-13 19:18:17 +01:00
Seth Hillbrand 28436ba8ea Translated using Weblate (Vietnamese)
Currently translated at 95.0% (9623 of 10123 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/vi/
2026-03-13 19:18:17 +01:00
2tama3 113b5a3bc0 Translated using Weblate (Japanese)
Currently translated at 100.0% (10123 of 10123 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2026-03-13 19:18:17 +01:00
ZbeeGin ab22fd2a37 Translated using Weblate (Polish)
Currently translated at 100.0% (10123 of 10123 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2026-03-13 19:18:17 +01:00
EdizonTN 3c7eadbd1c Translated using Weblate (Slovak)
Currently translated at 71.1% (7204 of 10123 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-03-13 19:18:16 +01:00
Simon Schaak 6023bd0a99 Multichannel dialog: fix other tab grids
(cherry picked from commit 3fc2963215)
2026-03-13 11:16:09 -07:00
Mark Roszko b2bfa24c98 ERC dialog: make "Save..." button write listed violations
the ERC dialog's save action always wrote (just) errors and warnings to
the report, regardless of the violations listed in the dialog based on
the checkboxes. that was different from the DRC dialog's behavior, which
writes the selected severities to the report. this change makes the ERC
dialog's "Save..." button behave the same as the DRC dialog's.


(cherry picked from commit 42d202b6cf)

Co-authored-by: Bernhard Kirchen <schlimmchen@posteo.net>
2026-03-13 11:07:29 +00:00
Seth Hillbrand a0beba756f Update translations 2026-03-11 13:58:44 -07:00
brunofaus 03d3127d5b Translated using Weblate (Portuguese (Brazil))
Currently translated at 98.9% (10013 of 10123 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt_BR/
2026-03-11 21:02:56 +01:00
EdizonTN ad8db26464 Translated using Weblate (Slovak)
Currently translated at 70.8% (7177 of 10123 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-03-11 21:02:55 +01:00
Seth Hillbrand 6d3dd89934 Translated using Weblate (Spanish)
Currently translated at 98.2% (9946 of 10123 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es/
2026-03-10 13:12:30 +01:00
Seth Hillbrand c2153b88de Translated using Weblate (Estonian)
Currently translated at 93.2% (9440 of 10123 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/et/
2026-03-10 13:12:17 +01:00
CloverGit e9058cddb8 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.6% (10089 of 10123 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2026-03-10 13:09:05 +01:00
Seth Hillbrand f368ede532 Update translations 2026-03-09 11:12:00 -07:00
Henrik Kauhanen 4184948774 Translated using Weblate (Swedish)
Currently translated at 99.9% (10117 of 10123 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2026-03-09 19:07:30 +01:00
Tomas0015 788db1062e Translated using Weblate (Czech)
Currently translated at 78.9% (7992 of 10123 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2026-03-09 19:07:30 +01:00
EdizonTN 1d5b432e78 Translated using Weblate (Slovak)
Currently translated at 70.3% (7123 of 10123 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-03-09 19:07:30 +01:00
szumsky 0b7e739a9a Translated using Weblate (Polish)
Currently translated at 99.9% (10113 of 10123 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2026-03-09 19:07:30 +01:00
Frank Sonnenberg 6abc727f67 Translated using Weblate (German)
Currently translated at 100.0% (10123 of 10123 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-03-09 19:07:30 +01:00
ZbeeGin 44f0690a33 Translated using Weblate (Polish)
Currently translated at 99.9% (10113 of 10123 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2026-03-09 19:07:30 +01:00
2tama3 53a873bbda Translated using Weblate (Japanese)
Currently translated at 100.0% (10123 of 10123 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2026-03-09 19:07:29 +01:00
EdizonTN 08c6d0db31 Translated using Weblate (Slovak)
Currently translated at 69.1% (6997 of 10123 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-03-09 19:07:29 +01:00
YÜKSEL AÇIKGÖZ f76736d054 Translated using Weblate (Turkish)
Currently translated at 100.0% (10123 of 10123 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2026-03-09 19:07:29 +01:00
dsa-t f601709fcc Translated using Weblate (Georgian)
Currently translated at 32.9% (3335 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ka/
2026-03-09 19:07:29 +01:00
Temuri Doghonadze 5120b0d9e3 Translated using Weblate (Georgian)
Currently translated at 32.9% (3335 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ka/
2026-03-09 19:07:29 +01:00
Anonymous a01b23e25f Translated using Weblate (Georgian)
Currently translated at 32.9% (3335 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ka/
2026-03-09 19:07:29 +01:00
dsa-t b34076d995 Translated using Weblate (Korean)
Currently translated at 99.9% (10114 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ko/
2026-03-09 19:07:29 +01:00
Pedro Moreira 0c7c9f53a8 Translated using Weblate (Korean)
Currently translated at 99.9% (10114 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ko/
2026-03-09 19:07:29 +01:00
Jason Son faffb91731 Translated using Weblate (Korean)
Currently translated at 99.9% (10114 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ko/
2026-03-09 19:07:29 +01:00
Seth Hillbrand aadc2fa50a Translated using Weblate (Korean)
Currently translated at 99.9% (10114 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ko/
2026-03-09 19:07:29 +01:00
김랑기 441851ca1b Translated using Weblate (Korean)
Currently translated at 99.9% (10114 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ko/
2026-03-09 19:07:29 +01:00
DevAny 0df142ff7d Translated using Weblate (Korean)
Currently translated at 99.9% (10114 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ko/
2026-03-09 19:07:29 +01:00
Anonymous 7d5385eea6 Translated using Weblate (Korean)
Currently translated at 99.9% (10114 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ko/
2026-03-09 19:07:29 +01:00
dsa-t 1d8383d30b Translated using Weblate (Indonesian)
Currently translated at 14.1% (1431 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/id/
2026-03-09 19:07:29 +01:00
Anonymous c0c4787063 Translated using Weblate (Indonesian)
Currently translated at 14.1% (1431 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/id/
2026-03-09 19:07:28 +01:00
dsa-t 11fb7c33fe Translated using Weblate (Spanish)
Currently translated at 98.2% (9944 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es/
2026-03-09 19:07:28 +01:00
Gaston Schelotto ca73d0cbdb Translated using Weblate (Spanish)
Currently translated at 98.2% (9944 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es/
2026-03-09 19:07:28 +01:00
Francisco Jose Rey 0939994964 Translated using Weblate (Spanish)
Currently translated at 98.2% (9944 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es/
2026-03-09 19:07:28 +01:00
Seth Hillbrand 2e990170f5 Translated using Weblate (Spanish)
Currently translated at 98.2% (9944 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es/
2026-03-09 19:07:28 +01:00
Anonymous dcd66a1249 Translated using Weblate (Spanish)
Currently translated at 98.2% (9944 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es/
2026-03-09 19:07:28 +01:00
Adolfo Jayme Barrientos b3ed007e98 Translated using Weblate (Spanish)
Currently translated at 98.2% (9944 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es/
2026-03-09 19:07:28 +01:00
dsa-t 4bd5ccf5f3 Translated using Weblate (German)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-03-09 19:07:28 +01:00
Henrik Kauhanen 9c023f71b1 Translated using Weblate (German)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-03-09 19:07:28 +01:00
Kliment 0f0472ee89 Translated using Weblate (German)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-03-09 19:07:28 +01:00
Ettore Atalan 52fd059557 Translated using Weblate (German)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-03-09 19:07:28 +01:00
weblateuser 3ede385a30 Translated using Weblate (German)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-03-09 19:07:27 +01:00
Pferd O. 19a8278829 Translated using Weblate (German)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-03-09 19:07:27 +01:00
Frank Sonnenberg 52f9c0156c Translated using Weblate (German)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-03-09 19:07:27 +01:00
Anonymous 6a1165bdc2 Translated using Weblate (German)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-03-09 19:07:27 +01:00
dsa-t a876b05fa5 Translated using Weblate (Italian)
Currently translated at 99.2% (10044 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2026-03-09 19:07:27 +01:00
Marco Ciampa ae10e04ce8 Translated using Weblate (Italian)
Currently translated at 99.2% (10044 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2026-03-09 19:07:27 +01:00
Anonymous 42e271cbdf Translated using Weblate (Italian)
Currently translated at 99.2% (10044 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2026-03-09 19:07:27 +01:00
dsa-t 3e1cbcac84 Translated using Weblate (Portuguese (Brazil))
Currently translated at 98.9% (10011 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt_BR/
2026-03-09 19:07:27 +01:00
soldado-do-wolfenstein c96cee4b96 Translated using Weblate (Portuguese (Brazil))
Currently translated at 98.9% (10011 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt_BR/
2026-03-09 19:07:27 +01:00
Seth Hillbrand 264d445a9f Translated using Weblate (Portuguese (Brazil))
Currently translated at 98.9% (10011 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt_BR/
2026-03-09 19:07:27 +01:00
Wellington Terumi Uemura 7e6f5b5b91 Translated using Weblate (Portuguese (Brazil))
Currently translated at 98.9% (10011 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt_BR/
2026-03-09 19:07:27 +01:00
Anonymous 8cdbe92345 Translated using Weblate (Portuguese (Brazil))
Currently translated at 98.9% (10011 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt_BR/
2026-03-09 19:07:27 +01:00
dsa-t 4318c5e81d Translated using Weblate (Lithuanian)
Currently translated at 42.1% (4264 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/lt/
2026-03-09 19:07:26 +01:00
Anonymous f6469e9622 Translated using Weblate (Lithuanian)
Currently translated at 42.1% (4264 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/lt/
2026-03-09 19:07:26 +01:00
dsa-t 559ca6970c Translated using Weblate (Slovenian)
Currently translated at 1.2% (129 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sl/
2026-03-09 19:07:26 +01:00
Mitja Nemec 9dd167ca50 Translated using Weblate (Slovenian)
Currently translated at 1.2% (129 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sl/
2026-03-09 19:07:26 +01:00
Anonymous 1156445256 Translated using Weblate (Slovenian)
Currently translated at 1.2% (129 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sl/
2026-03-09 19:07:26 +01:00
dsa-t b237f743b8 Translated using Weblate (Russian)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2026-03-09 19:07:26 +01:00
Anonymous c34ac5a701 Translated using Weblate (Russian)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2026-03-09 19:07:26 +01:00
dsa-t 5defdbcd1d Translated using Weblate (Danish)
Currently translated at 41.2% (4172 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/da/
2026-03-09 19:07:26 +01:00
Anonymous 399b72c05a Translated using Weblate (Danish)
Currently translated at 41.2% (4172 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/da/
2026-03-09 19:07:26 +01:00
dsa-t 87cf283064 Translated using Weblate (Czech)
Currently translated at 78.9% (7989 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2026-03-09 19:07:26 +01:00
Hynek Štětina aebe3d79d0 Translated using Weblate (Czech)
Currently translated at 78.9% (7989 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2026-03-09 19:07:26 +01:00
Michal Kundrát 3f02a24096 Translated using Weblate (Czech)
Currently translated at 78.9% (7989 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2026-03-09 19:07:26 +01:00
René Široký 7a378e71d9 Translated using Weblate (Czech)
Currently translated at 78.9% (7989 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2026-03-09 19:07:26 +01:00
Tomas0015 f2b5cb4327 Translated using Weblate (Czech)
Currently translated at 78.9% (7989 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2026-03-09 19:07:25 +01:00
Jan Straka b77de2e997 Translated using Weblate (Czech)
Currently translated at 78.9% (7989 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2026-03-09 19:07:25 +01:00
Anonymous 57da3455a8 Translated using Weblate (Czech)
Currently translated at 78.9% (7989 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2026-03-09 19:07:25 +01:00
dsa-t f475d1e7c4 Translated using Weblate (Greek)
Currently translated at 85.4% (8645 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/el/
2026-03-09 19:07:25 +01:00
Theodoros Asimakopoulos f902bee722 Translated using Weblate (Greek)
Currently translated at 85.4% (8645 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/el/
2026-03-09 19:07:25 +01:00
aris-kimi f848ad2dc4 Translated using Weblate (Greek)
Currently translated at 85.4% (8645 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/el/
2026-03-09 19:07:25 +01:00
Anonymous aa1add163b Translated using Weblate (Greek)
Currently translated at 85.4% (8645 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/el/
2026-03-09 19:07:25 +01:00
dsa-t c9327da6d6 Translated using Weblate (Serbian)
Currently translated at 18.8% (1907 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sr/
2026-03-09 19:07:25 +01:00
___davidpr 3068b8bb43 Translated using Weblate (Serbian)
Currently translated at 18.8% (1907 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sr/
2026-03-09 19:07:25 +01:00
Anonymous 371e60678f Translated using Weblate (Serbian)
Currently translated at 18.8% (1907 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sr/
2026-03-09 19:07:25 +01:00
Luka Borkovic 352813b633 Translated using Weblate (Serbian)
Currently translated at 18.8% (1907 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sr/
2026-03-09 19:07:25 +01:00
dsa-t 0b0fe011e5 Translated using Weblate (Japanese)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2026-03-09 19:07:24 +01:00
Tokita, Hiroshi 2d464c08e7 Translated using Weblate (Japanese)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2026-03-09 19:07:24 +01:00
co8 j 09de36bf32 Translated using Weblate (Japanese)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2026-03-09 19:07:24 +01:00
2tama3 e49035c9d2 Translated using Weblate (Japanese)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2026-03-09 19:07:24 +01:00
Anonymous 5d1fd55f5a Translated using Weblate (Japanese)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2026-03-09 19:07:24 +01:00
Deleted User 74fb4f82ba Translated using Weblate (Turkish)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2026-03-09 19:07:24 +01:00
dsa-t 3e29de1d00 Translated using Weblate (Turkish)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2026-03-09 19:07:24 +01:00
Tevfik Bagcivan 7a299568b3 Translated using Weblate (Turkish)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2026-03-09 19:07:24 +01:00
Argeolog 29ed1e7850 Translated using Weblate (Turkish)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2026-03-09 19:07:24 +01:00
Ahmet Saygın ÖĞÜLMÜŞ eb107eaa19 Translated using Weblate (Turkish)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2026-03-09 19:07:24 +01:00
YÜKSEL AÇIKGÖZ 75af08bee2 Translated using Weblate (Turkish)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2026-03-09 19:07:24 +01:00
İclal Gör 020a895040 Translated using Weblate (Turkish)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2026-03-09 19:07:24 +01:00
Anonymous e59409d8bd Translated using Weblate (Turkish)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2026-03-09 19:07:24 +01:00
dsa-t 195605553a Translated using Weblate (Romanian)
Currently translated at 29.8% (3023 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ro/
2026-03-09 19:07:24 +01:00
Marco Ciampa 27461a458d Translated using Weblate (Romanian)
Currently translated at 29.8% (3023 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ro/
2026-03-09 19:07:24 +01:00
Tatu Bogdan 4f9119af02 Translated using Weblate (Romanian)
Currently translated at 29.8% (3023 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ro/
2026-03-09 19:07:23 +01:00
Peter B dfb2b32aef Translated using Weblate (Romanian)
Currently translated at 29.8% (3023 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ro/
2026-03-09 19:07:23 +01:00
Alex Gellen b8497903e7 Translated using Weblate (Romanian)
Currently translated at 29.8% (3023 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ro/
2026-03-09 19:07:23 +01:00
Anonymous 5011975452 Translated using Weblate (Romanian)
Currently translated at 29.8% (3023 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ro/
2026-03-09 19:07:23 +01:00
dsa-t 89940f18c1 Translated using Weblate (Slovak)
Currently translated at 69.1% (6996 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-03-09 19:07:23 +01:00
EdizonTN d2ca2854f0 Translated using Weblate (Slovak)
Currently translated at 69.1% (6996 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-03-09 19:07:23 +01:00
Anonymous bdedae7867 Translated using Weblate (Slovak)
Currently translated at 69.1% (6996 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-03-09 19:07:23 +01:00
dsa-t f945286861 Translated using Weblate (Tamil)
Currently translated at 99.6% (10082 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ta/
2026-03-09 19:07:23 +01:00
Anonymous 978267bbb8 Translated using Weblate (Tamil)
Currently translated at 99.6% (10082 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ta/
2026-03-09 19:07:23 +01:00
தமிழ்நேரம் c3b6a8143b Translated using Weblate (Tamil)
Currently translated at 99.6% (10082 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ta/
2026-03-09 19:07:23 +01:00
dsa-t 7741b50d54 Translated using Weblate (Hungarian)
Currently translated at 53.2% (5388 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2026-03-09 19:07:23 +01:00
Miklós Márton d8c4c88d34 Translated using Weblate (Hungarian)
Currently translated at 53.2% (5388 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2026-03-09 19:07:23 +01:00
KB 2ac030bfb8 Translated using Weblate (Hungarian)
Currently translated at 53.2% (5388 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2026-03-09 19:07:22 +01:00
Anonymous b0535d07a4 Translated using Weblate (Hungarian)
Currently translated at 53.2% (5388 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2026-03-09 19:07:22 +01:00
Sárkány Lőrinc 0bdc83aba7 Translated using Weblate (Hungarian)
Currently translated at 53.2% (5388 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2026-03-09 19:07:22 +01:00
dsa-t f6585748bf Translated using Weblate (Finnish)
Currently translated at 97.2% (9844 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/fi/
2026-03-09 19:07:22 +01:00
Henrik Kauhanen acea522147 Translated using Weblate (Finnish)
Currently translated at 97.2% (9844 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/fi/
2026-03-09 19:07:22 +01:00
Toni Laiho cfbefd22ae Translated using Weblate (Finnish)
Currently translated at 97.2% (9844 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/fi/
2026-03-09 19:07:22 +01:00
Kliment c4b9008878 Translated using Weblate (Finnish)
Currently translated at 97.2% (9844 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/fi/
2026-03-09 19:07:22 +01:00
Anonymous 88493eb19a Translated using Weblate (Finnish)
Currently translated at 97.2% (9844 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/fi/
2026-03-09 19:07:22 +01:00
dsa-t 03ddc8ef80 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.6% (10086 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2026-03-09 19:07:22 +01:00
CharlieYu e9acab5fb3 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.6% (10086 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2026-03-09 19:07:21 +01:00
Rigo Ligo 30879fb78d Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.6% (10086 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2026-03-09 19:07:21 +01:00
Hubert Hu 8d14d7498f Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.6% (10086 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2026-03-09 19:07:21 +01:00
CloverGit f0715942d3 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.6% (10086 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2026-03-09 19:07:21 +01:00
Anonymous 07e4a809c0 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.6% (10086 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2026-03-09 19:07:21 +01:00
dsa-t cf1621ed89 Translated using Weblate (Bulgarian)
Currently translated at 8.0% (819 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/bg/
2026-03-09 19:07:21 +01:00
109247019824 6dd0d9f45b Translated using Weblate (Bulgarian)
Currently translated at 8.0% (819 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/bg/
2026-03-09 19:07:21 +01:00
Anonymous 1091000202 Translated using Weblate (Bulgarian)
Currently translated at 8.0% (819 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/bg/
2026-03-09 19:07:21 +01:00
dsa-t b40751930c Translated using Weblate (Polish)
Currently translated at 99.8% (10108 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2026-03-09 19:07:21 +01:00
ZbeeGin 37041529ae Translated using Weblate (Polish)
Currently translated at 99.8% (10108 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2026-03-09 19:07:21 +01:00
Anonymous f7cd2f3fa2 Translated using Weblate (Polish)
Currently translated at 99.8% (10108 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2026-03-09 19:07:21 +01:00
dsa-t a5f1b76893 Translated using Weblate (Portuguese)
Currently translated at 99.5% (10080 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt/
2026-03-09 19:07:21 +01:00
Hildo Guillardi Júnior a973aabfd0 Translated using Weblate (Portuguese)
Currently translated at 99.5% (10080 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt/
2026-03-09 19:07:21 +01:00
Julio Dias aa4be4474e Translated using Weblate (Portuguese)
Currently translated at 99.5% (10080 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt/
2026-03-09 19:07:21 +01:00
Seth Hillbrand 6e058523cf Translated using Weblate (Portuguese)
Currently translated at 99.5% (10080 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt/
2026-03-09 19:07:21 +01:00
Manuela Silva bd03949c62 Translated using Weblate (Portuguese)
Currently translated at 99.5% (10080 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt/
2026-03-09 19:07:20 +01:00
ssantos 10669c3b77 Translated using Weblate (Portuguese)
Currently translated at 99.5% (10080 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt/
2026-03-09 19:07:20 +01:00
Anonymous 33227f617b Translated using Weblate (Portuguese)
Currently translated at 99.5% (10080 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt/
2026-03-09 19:07:20 +01:00
dsa-t e9f43aca31 Translated using Weblate (Dutch)
Currently translated at 90.0% (9118 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/nl/
2026-03-09 19:07:20 +01:00
Herman van der Vaart eac8635cbb Translated using Weblate (Dutch)
Currently translated at 90.0% (9118 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/nl/
2026-03-09 19:07:20 +01:00
Stefan De Raedemaeker 0b0f115dc7 Translated using Weblate (Dutch)
Currently translated at 90.0% (9118 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/nl/
2026-03-09 19:07:20 +01:00
Anonymous 43305c51b5 Translated using Weblate (Dutch)
Currently translated at 90.0% (9118 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/nl/
2026-03-09 19:07:20 +01:00
Håvard Syslak cf36ee9be8 Translated using Weblate (Norwegian Bokmål)
Currently translated at 41.7% (4221 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/nb_NO/
2026-03-09 19:07:20 +01:00
dsa-t ccd70bd699 Translated using Weblate (Norwegian Bokmål)
Currently translated at 41.7% (4221 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/nb_NO/
2026-03-09 19:07:20 +01:00
Stian Kristensen ce5656a373 Translated using Weblate (Norwegian Bokmål)
Currently translated at 41.7% (4221 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/nb_NO/
2026-03-09 19:07:20 +01:00
Anonymous 64ca58d205 Translated using Weblate (Norwegian Bokmål)
Currently translated at 41.7% (4221 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/nb_NO/
2026-03-09 19:07:20 +01:00
dsa-t 2adf6429f7 Translated using Weblate (Croatian)
Currently translated at 0.0% (0 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hr/
2026-03-09 19:07:20 +01:00
Anonymous 53f5b563fa Translated using Weblate (Croatian)
Currently translated at 0.0% (0 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hr/
2026-03-09 19:07:19 +01:00
dsa-t 53ca9b42b7 Translated using Weblate (Estonian)
Currently translated at 3.7% (375 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/et/
2026-03-09 19:07:19 +01:00
Ivan Chuba bc4cffe0d3 Translated using Weblate (Estonian)
Currently translated at 3.7% (375 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/et/
2026-03-09 19:07:19 +01:00
Anonymous 225ce42c6c Translated using Weblate (Estonian)
Currently translated at 3.7% (375 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/et/
2026-03-09 19:07:19 +01:00
dsa-t 7b6d04124d Translated using Weblate (Thai)
Currently translated at 60.1% (6086 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/th/
2026-03-09 19:07:19 +01:00
Anonymous 3211c6e563 Translated using Weblate (Thai)
Currently translated at 60.1% (6086 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/th/
2026-03-09 19:07:19 +01:00
dsa-t bf8035eb08 Translated using Weblate (Vietnamese)
Currently translated at 23.3% (2365 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/vi/
2026-03-09 19:07:19 +01:00
Nguyễn Ngọc Khánh 6df0e447f9 Translated using Weblate (Vietnamese)
Currently translated at 23.3% (2365 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/vi/
2026-03-09 19:07:19 +01:00
Anonymous 300b3f2067 Translated using Weblate (Vietnamese)
Currently translated at 23.3% (2365 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/vi/
2026-03-09 19:07:19 +01:00
Johan Heikkilä 16c0a41f95 Translated using Weblate (Swedish)
Currently translated at 99.9% (10115 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2026-03-09 19:07:19 +01:00
dsa-t 54583b22e6 Translated using Weblate (Swedish)
Currently translated at 99.9% (10115 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2026-03-09 19:07:19 +01:00
Stefan Bjornelund the Gnome afe8c612a6 Translated using Weblate (Swedish)
Currently translated at 99.9% (10115 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2026-03-09 19:07:19 +01:00
Joakim Lundborg f3da402537 Translated using Weblate (Swedish)
Currently translated at 99.9% (10115 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2026-03-09 19:07:19 +01:00
Henrik Kauhanen a1bd75bfac Translated using Weblate (Swedish)
Currently translated at 99.9% (10115 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2026-03-09 19:07:19 +01:00
Anonymous 3c416463e9 Translated using Weblate (Swedish)
Currently translated at 99.9% (10115 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2026-03-09 19:07:18 +01:00
dsa-t ada0464b8a Translated using Weblate (Spanish (Mexico))
Currently translated at 98.6% (9981 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es_MX/
2026-03-09 19:07:18 +01:00
Deleted User 81d3150b2d Translated using Weblate (Spanish (Mexico))
Currently translated at 98.6% (9981 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es_MX/
2026-03-09 19:07:18 +01:00
Seth Hillbrand f6775465c7 Translated using Weblate (Spanish (Mexico))
Currently translated at 98.6% (9981 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es_MX/
2026-03-09 19:07:18 +01:00
Anonymous 0bbc37324a Translated using Weblate (Spanish (Mexico))
Currently translated at 98.6% (9981 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es_MX/
2026-03-09 19:07:18 +01:00
Anonymous 27b34599ff Translated using Weblate (Hebrew)
Currently translated at 93.4% (9460 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/he/
2026-03-09 19:07:18 +01:00
Seth Hillbrand 6636f00a18 Translated using Weblate (Hebrew)
Currently translated at 93.4% (9460 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/he/
2026-03-09 19:07:18 +01:00
dsa-t 2ac547050d Translated using Weblate (Ukrainian)
Currently translated at 99.9% (10112 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2026-03-09 19:07:18 +01:00
Ivan Chuba 997b72c808 Translated using Weblate (Ukrainian)
Currently translated at 99.9% (10112 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2026-03-09 19:07:18 +01:00
Максим Горпиніч e55afc12d6 Translated using Weblate (Ukrainian)
Currently translated at 99.9% (10112 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2026-03-09 19:07:18 +01:00
Anonymous 342822580c Translated using Weblate (Ukrainian)
Currently translated at 99.9% (10112 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2026-03-09 19:07:18 +01:00
dsa-t c2acb2a796 Translated using Weblate (Catalan)
Currently translated at 41.4% (4196 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ca/
2026-03-09 19:07:18 +01:00
rsr.private d9c76748bb Translated using Weblate (Catalan)
Currently translated at 41.4% (4196 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ca/
2026-03-09 19:07:18 +01:00
Marc de Miguel 41c8d23046 Translated using Weblate (Catalan)
Currently translated at 41.4% (4196 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ca/
2026-03-09 19:07:17 +01:00
Arnau Llovet Vidal 1137e00322 Translated using Weblate (Catalan)
Currently translated at 41.4% (4196 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ca/
2026-03-09 19:07:17 +01:00
Adolfo Jayme Barrientos 40f1836aab Translated using Weblate (Catalan)
Currently translated at 41.4% (4196 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ca/
2026-03-09 19:07:17 +01:00
Anonymous 8cf947d6ef Translated using Weblate (Catalan)
Currently translated at 41.4% (4196 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ca/
2026-03-09 19:07:17 +01:00
ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝) af0c1c8956 Translated using Weblate (Latvian)
Currently translated at 0.7% (78 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/lv/
2026-03-09 19:07:17 +01:00
dsa-t 7f288c8787 Translated using Weblate (Latvian)
Currently translated at 0.7% (78 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/lv/
2026-03-09 19:07:17 +01:00
Anonymous bfe38f49c9 Translated using Weblate (Latvian)
Currently translated at 0.7% (78 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/lv/
2026-03-09 19:07:17 +01:00
dsa-t b967c97db7 Translated using Weblate (Arabic)
Currently translated at 1.1% (117 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ar/
2026-03-09 19:07:17 +01:00
Hesham Eina Abdalla 24f9e450c5 Translated using Weblate (Arabic)
Currently translated at 1.1% (117 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ar/
2026-03-09 19:07:17 +01:00
Morad Tamer 7684abc92c Translated using Weblate (Arabic)
Currently translated at 1.1% (117 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ar/
2026-03-09 19:07:17 +01:00
Anonymous 1c3b395a48 Translated using Weblate (Arabic)
Currently translated at 1.1% (117 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ar/
2026-03-09 19:07:16 +01:00
dsa-t 6b9cd91ef4 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 97.9% (9911 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2026-03-09 19:07:16 +01:00
Oliver0804 df213e1ad3 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 97.9% (9911 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2026-03-09 19:07:16 +01:00
Shuwn Hsu 98e2fc0976 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 97.9% (9911 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2026-03-09 19:07:16 +01:00
William Lin b7460f13b7 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 97.9% (9911 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2026-03-09 19:07:16 +01:00
CloverGit 10dcec397c Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 97.9% (9911 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2026-03-09 19:07:16 +01:00
Che-Hsien Su e31fd3f6a4 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 97.9% (9911 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2026-03-09 19:07:16 +01:00
Vic 04f805d2f5 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 97.9% (9911 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2026-03-09 19:07:16 +01:00
pominglee 42bb81dae4 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 97.9% (9911 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2026-03-09 19:07:16 +01:00
Anonymous 3387854c6c Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 97.9% (9911 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2026-03-09 19:07:16 +01:00
EdizonTN 8397291113 Translated using Weblate (Slovak)
Currently translated at 69.0% (6985 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-03-09 19:07:15 +01:00
YÜKSEL AÇIKGÖZ a26c9cba9a Translated using Weblate (Turkish)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2026-03-09 19:07:15 +01:00
Ian McKernan 3137020b7f Fix incorrect SVG export offset for symbols reference and value fields
(cherry picked from commit 8acdf8d3ea)
2026-03-09 09:22:10 -04:00
Jon Evans 0aeb33f94f API: Avoid redundant serialization of polyline arcs
Fixes https://gitlab.com/kicad/code/kicad-python/-/issues/79
2026-03-08 00:20:25 -05:00
Jon Evans d248f1d3f4 Fix IPC API losing custom fields when updating footprints
(Manual cherry-pick of 0596455809)
2026-03-07 23:28:27 -05:00
Jon Evans 9547cc190e API: Fix missing pad shape serialization
(only impacts 9.0 branch)
2026-03-07 22:52:39 -05:00
JamesJCode cc4409cb1a Auto-increment directive label fields on repeat item action
Fixes #23331

(cherry picked from commit 69f218f8ff)
2026-03-06 21:51:00 +00:00
Seth Hillbrand ddec1361d1 Update translations 2026-03-06 13:08:08 -08:00
Seth Hillbrand 0b3456404e Update translations 2026-03-06 12:39:46 -08:00
Seth Hillbrand c6a662eba4 Translated using Weblate (Spanish)
Currently translated at 98.2% (9944 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es/
2026-03-06 21:14:33 +01:00
Seth Hillbrand d32737c177 Translated using Weblate (Korean)
Currently translated at 99.9% (10114 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ko/
2026-03-06 21:14:01 +01:00
Seth Hillbrand f7af713592 Translated using Weblate (Hebrew)
Currently translated at 93.4% (9460 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/he/
2026-03-06 21:13:41 +01:00
EdizonTN ffa0838e62 Translated using Weblate (Slovak)
Currently translated at 68.3% (6921 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-03-06 21:10:42 +01:00
YÜKSEL AÇIKGÖZ bf1dbfa65b Translated using Weblate (Turkish)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2026-03-06 21:10:37 +01:00
Seth Hillbrand c752ca869c Translated using Weblate (Spanish (Mexico))
Currently translated at 98.6% (9981 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es_MX/
2026-03-06 21:10:25 +01:00
2tama3 e33bdc65b7 Translated using Weblate (Japanese)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2026-03-06 21:09:50 +01:00
Alex Shvartzkop 2b51b2b9b9 Update translations 2026-03-05 22:09:27 +03:00
dsa-t d97a0f818c Translated using Weblate (Russian)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2026-03-05 20:06:46 +01:00
Theodoros Asimakopoulos d735810cad Translated using Weblate (Greek)
Currently translated at 85.4% (8645 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/el/
2026-03-05 20:06:46 +01:00
EdizonTN 0858ce9fff Translated using Weblate (Slovak)
Currently translated at 67.4% (6826 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-03-05 20:06:46 +01:00
YÜKSEL AÇIKGÖZ 0f0e15421a Translated using Weblate (Turkish)
Currently translated at 99.1% (10039 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2026-03-05 20:06:45 +01:00
EdizonTN 7a89d88018 Translated using Weblate (Slovak)
Currently translated at 67.0% (6791 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-03-05 20:06:45 +01:00
Sárkány Lőrinc 0059b5ab69 Translated using Weblate (Hungarian)
Currently translated at 53.2% (5388 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2026-03-05 20:06:45 +01:00
EdizonTN de062bd5e3 Translated using Weblate (Slovak)
Currently translated at 66.8% (6766 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-03-05 20:06:45 +01:00
Tomas0015 9f13d12158 Translated using Weblate (Czech)
Currently translated at 78.9% (7989 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2026-03-05 20:06:45 +01:00
Sárkány Lőrinc 74aebd8e9e Translated using Weblate (Hungarian)
Currently translated at 53.2% (5386 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2026-03-05 20:06:45 +01:00
EdizonTN 705e2ba2fd Translated using Weblate (Slovak)
Currently translated at 66.7% (6756 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-03-05 20:06:45 +01:00
EdizonTN 40d9f5eda6 Translated using Weblate (Slovak)
Currently translated at 66.5% (6731 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-03-05 20:06:45 +01:00
Mitja Nemec 791219c314 Translated using Weblate (Slovenian)
Currently translated at 1.2% (129 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sl/
2026-03-05 20:06:45 +01:00
Sárkány Lőrinc 763e62f70d Translated using Weblate (Hungarian)
Currently translated at 53.1% (5384 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2026-03-05 20:06:45 +01:00
Tomas0015 a986c10544 Translated using Weblate (Czech)
Currently translated at 78.6% (7962 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2026-03-05 20:06:45 +01:00
2tama3 03101435c4 Translated using Weblate (Japanese)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2026-03-05 20:06:45 +01:00
Tomas0015 f6b9b3243f Translated using Weblate (Czech)
Currently translated at 78.5% (7948 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2026-03-05 20:06:45 +01:00
Sárkány Lőrinc 05433f5bb2 Translated using Weblate (Hungarian)
Currently translated at 53.1% (5379 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2026-03-05 20:06:44 +01:00
EdizonTN 4622b17085 Translated using Weblate (Slovak)
Currently translated at 66.4% (6721 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-03-05 20:06:44 +01:00
Pferd O. 3324b4d167 Translated using Weblate (German)
Currently translated at 100.0% (10121 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-03-05 20:06:44 +01:00
Henrik Kauhanen f620393385 Translated using Weblate (Swedish)
Currently translated at 99.9% (10115 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2026-03-05 20:06:44 +01:00
EdizonTN bc8d31187c Translated using Weblate (Slovak)
Currently translated at 64.3% (6513 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-03-05 20:06:44 +01:00
ZbeeGin 16575689c2 Translated using Weblate (Polish)
Currently translated at 99.8% (10108 of 10121 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2026-03-05 20:06:44 +01:00
Damjan Prerad 2d4d531b42 Fix empty project name in symbol instances
Symbol instance saving was refactored earlier. This replaced
the conditional project name lookup with unconditional use of the
stored m_ProjectName. This variable is never populated at symbol
creation time, and is not updated on project rename or Save As, this
results in empty or stale project names being written to disk.

Restore the conditional: use the live project name from GetProjectName()
for current project instances, and fall back to the stored m_ProjectName
only for foreign project instances.

This is the v9 equivalent of the master fix in 4836d172c7, which could
not be cherry-picked due to v10-specific virtual root changes.
2026-03-05 15:47:43 +01:00
Jeff Young 1862fe4a22 Pull back more changes from master.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/23310
2026-03-04 21:16:46 +00:00
Seth Hillbrand 846bb2790c Fix multiline text selection highlight for outline fonts
When selecting multiline text objects with non-default (outline) fonts
in the schematic editor, only a single line-height box was drawn as
the selection highlight. This happened because boxText() called
GetTextExtents() which used StringBoundaryLimits() treating the entire
multiline string as one line, producing a very wide but single-height
bounding box.

Replace the boxText() call with GetBoundingBox() which correctly
computes the bounding box for multiline text by measuring each line
individually and accounting for interline spacing.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/23198

(cherry picked from commit fc8c1e2b44)
2026-03-04 20:40:13 +00:00
Wayne Stambaugh 0a2ae3b526 Tag stable version 9.0.8 release candidate 1. 2026-03-02 18:01:38 -05:00
Wayne Stambaugh 973f6a29e5 Fix clipped info bar button text in ERC dialog.
The ERC dialog info bar button text gets clipped when there are symbols
that are not annotated in the schematic.  This was a manual cherry pick
from fixes in the development branch that got overlooked.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22638
2026-03-02 17:56:54 -05:00
Seth Hillbrand 145b190904 Fix crash in SCH_RULE_AREA::RemoveItem
FreeDrawList() deletes items in arbitrary order. When a SCH_RULE_AREA
is freed before items it contains, those items' destructors call
RemoveItem() on the freed rule area, causing a use-after-free crash
in unordered_set::erase.

This breaks the bidirectional references in ~SCH_RULE_AREA() so
contained items no longer hold dangling pointers to the destroyed
rule area.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22822
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22993

(cherry picked from commit 92fe51409e)
2026-03-02 11:52:38 -08:00
Dominique Fuchs 394d466a47 Guard null m_appearancePanel in colour-changed handler
During PCB_EDIT_FRAME construction, wxEVT_SYS_COLOUR_CHANGED
can fire before m_appearancePanel is created. On macOS with
multiple displays, LoadWindowState triggers a synchronous
windowDidChangeBackingProperties notification during DoSetSize,
which wxWidgets translates into a colour-changed event. The
handler dereferences m_appearancePanel unconditionally, causing
an EXC_BAD_ACCESS crash.

Add a null check consistent with all other m_appearancePanel
accesses in the same file.

Fixes kicad/code/kicad#23302

Signed-off-by: Dominique Fuchs's avatarDominique Fuchs <df@0x9d.net>

(Cherry-picked from a592b9db27)
2026-03-02 19:28:54 +00:00
Wayne Stambaugh bad8f864b6 Fix schematic plot job file name handling.
The schematic plot job set was incorrectly handling file definitions as
paths resulting in the output file always being used as a path definition.
This fix honors file name definitions provided in the plot dialog path text
control.
2026-03-02 11:43:37 -05:00
Jon Evans 3514d130cb API: Add support for retrieving user names for all layers 2026-03-01 22:25:09 -05:00
Ian McInerney bec0c8387d Don't gate toolbar tool action processing by ID anymore
We have some actions that use wx IDs now (e.g., wxID_PASTE), so we can't
just process things in our custom ID region anymore.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/23239

(Cherry-picked from 96d5de482a)
2026-03-02 01:42:37 +00:00
Alex Shvartzkop 707b1e18a3 Update translations 2026-03-01 09:48:44 +03:00
Sárkány Lőrinc 9a74d5f5ef Translated using Weblate (Hungarian)
Currently translated at 53.1% (5376 of 10118 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2026-03-01 07:35:57 +01:00
ZbeeGin 2de883c52a Translated using Weblate (Polish)
Currently translated at 99.8% (10107 of 10118 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2026-03-01 07:35:57 +01:00
2tama3 bea7f9c81b Translated using Weblate (Japanese)
Currently translated at 100.0% (10118 of 10118 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2026-03-01 07:35:57 +01:00
EdizonTN 9e769d1ab0 Translated using Weblate (Slovak)
Currently translated at 64.0% (6482 of 10118 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-03-01 07:35:57 +01:00
Henrik Kauhanen 694132c2fe Translated using Weblate (Swedish)
Currently translated at 99.9% (10113 of 10118 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2026-03-01 07:35:57 +01:00
EdizonTN 5bb9e1e5c1 Translated using Weblate (Slovak)
Currently translated at 62.9% (6366 of 10118 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-03-01 07:35:57 +01:00
EdizonTN 06859309d7 Translated using Weblate (Slovak)
Currently translated at 62.8% (6363 of 10118 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-03-01 07:35:57 +01:00
Che-Hsien Su 51124f9ee6 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 97.9% (9912 of 10118 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2026-03-01 07:35:57 +01:00
Pferd O. 027c1cdf9c Translated using Weblate (German)
Currently translated at 100.0% (10118 of 10118 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-03-01 07:35:56 +01:00
Henrik Kauhanen 91cb46fe08 Translated using Weblate (Swedish)
Currently translated at 99.9% (10113 of 10118 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2026-03-01 07:35:56 +01:00
2tama3 b340fd6b06 Translated using Weblate (Japanese)
Currently translated at 100.0% (10118 of 10118 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2026-03-01 07:35:56 +01:00
Mark Roszko c176626120 Add --generate-report for drill report 2026-02-28 12:28:47 -05:00
Ian McInerney edd208aaa4 Don't show locking control in reference image dialog in footprint editor
We don't support locked items in the footprint editor.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/23203

(Cherry-picked from 21d441d208)
2026-02-28 16:35:19 +00:00
Seth Hillbrand a252e92d77 pcbnew: fix STEP exporter build errors
Match the three VECTOR2D origin parameters in exporter_step.cpp to
their const-reference declarations in exporter_step.h.
2026-02-27 18:59:08 -08:00
Seth Hillbrand 2a628ecadf pcbnew: fix DRC dialog focus stealing and flicker on GTK
SafeYieldFor( this, wxEVT_CATEGORY_NATIVE_EVENTS ) was called every
100ms during DRC to keep the UI responsive.  On GTK this processes raw
GDK events including window-focus and expose events, causing the dialog
to steal focus and flicker continuously while DRC is running.

wxEVT_CATEGORY_UI and wxEVT_CATEGORY_USER_INPUT are sufficient: UI
events keep the gauge visually updated; user-input events allow the
Cancel button to respond.  Excluding wxEVT_CATEGORY_NATIVE_EVENTS
eliminates the GTK focus/repaint churn without affecting Windows
behaviour (the 100 ms gate from fd501b4bc8 is retained).

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22916

(cherry picked from commit 18c76bbe7c7425db27e1597b044d93ebc13d5bbe)
2026-02-27 12:57:17 -08:00
Seth Hillbrand 366d083da2 Fix solder mask generation issues in STEP export
Fixed two problems with soldermask generation.  First, via holes weren't
cut in soldermask when copper export was disabled.  Second, we ignored
zones on F.Mask/B.Mask when zone export was disabled even though
soldermask export was enabled.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20452

(cherry picked from commit 497fe12f2d)
2026-02-27 12:56:47 -08:00
Wayne Stambaugh 2c55930bcf Fix false positive warning message when updating board from schematic.
The board connectivity algorithm creates pseudo net names for footprints
that have multiple pads with the same number using a "_N" suffix.  At
some point a change was made to the zone net properties dialog that
allowed choosing a pseudo net name as the net name assigned to the zone.
This caused the netlist updater to trigger a false "zone has no pads
connected" warning because the pseudo net name is not in the schematic
net list.

The warning message was not very helpful. Added the correct zone layers
and the net name assigned to the zone to the message for improved
clarity.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22133

(cherry picked from commit 6ba805173e)
2026-02-27 13:37:36 -05:00
Seth Hillbrand 008511e5e8 eeschema: fix design block panel crash on file open in standalone mode
When opening a new schematic file in standalone eeschema (without the
project manager), the project is reloaded via settings_manager.  The
old project's DESIGN_BLOCK_LIB_TABLE is destroyed, but
DESIGN_BLOCK_TREE_MODEL_ADAPTER::m_libs still holds a raw pointer to
it.  Hovering over any design block after this point fires
LIB_TREE::onPreselect -> GenerateInfo() -> m_libs->GetEnumeratedDesignBlock(),
which dereferences the dangling pointer and causes a SIGSEGV.

Fix by overriding SCH_EDIT_FRAME::ProjectChanged() to call
m_designBlocksPane->RefreshLibs(), which updates m_libs to point at
the new project's DESIGN_BLOCK_LIB_TABLE via adapter->SetLibTable().

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/23156
2026-02-26 08:46:26 -08:00
Wayne Stambaugh 8eb9b52c00 QA housekeeping.
Remove the 9.99 QA configuration files.  They do not belong in the 9.0
branch.
2026-02-25 13:55:16 -05:00
Seth Hillbrand d23ac98062 Altium importer: use pre-computed kicadLocation for pin electrical end
ASCH_PIN already computes the electrical connection point (kicadLocation)
from the Altium body-end coordinates and pin length using combined
integer+fractional arithmetic, which avoids the rounding error that
occurs when computing Altium2KiCadUnit(body) + Altium2KiCadUnit(length)
separately.

Use this pre-computed value directly instead of manually adding the
pin-length offset to elem.location, eliminating the known off-by-one
positioning issue noted in the previous TODO comment.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/23238
2026-02-24 18:43:36 -08:00
Seth Hillbrand 0f16c0539e Fix Altium importer text orientation in symbols on schematic
Altium stores text orientation in absolute coordinates. When
importing labels inside symbols, the text angle and justification were
stored as-is in the library symbol, but KiCad applies the symbol's
orientation transform (via OrientAndMirrorSymbolItems) at render time.
This caused text to be rotated twice.  Fix this by pre-compensating for
the KiCad rotation.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22940
2026-02-24 18:43:33 -08:00
Seth Hillbrand fcc16293d0 Altium importer: Compensate field text for symbol orientation
When importing Altium schematics, text field properties (angle and
justification) for designators and parameters are stored in absolute
page coordinates. KiCad stores these relative to the parent symbol
and applies the symbol's transform at render time. Without
compensation, text appears with incorrect rotation and alignment
after the symbol orientation commit (090583a57e).

Add AdjustFieldForSymbolOrientation() to inverse-transform text angle
and horizontal justification based on the parent symbol's Altium
orientation. The compensation follows the same logic as
SCH_FIELD::Rotate() applied in the reverse direction for each of the
four orientation cases and mirror-Y.

Also add the missing SetTextPositioning() call in ParseLibDesignator()
to preserve text angle and justification for library-level designators.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22907
2026-02-24 18:41:15 -08:00
Seth Hillbrand c18d0c17f9 Altium: Fix pin orientation and arc geometry on import
Pin orientations from Altium are in absolute schematic coordinates, but
KiCad stores them in library-local space. To tranform the, we compute
both the pin body end and connection point in absolute coordinates,
transform both through GetRelativePosition, and derive the orientation
from the resulting direction vector.

This also fixes arc start/end offsets, which were computed from absolute
angles but never transformed to library-local space.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22907
2026-02-24 18:41:12 -08:00
Alex Shvartzkop 923fef44e9 Update translations 2026-02-25 01:09:13 +03:00
EdizonTN 0d160c41dc Translated using Weblate (Slovak)
Currently translated at 62.3% (6305 of 10116 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-02-24 23:08:23 +01:00
Tomas0015 5ffab9079f Translated using Weblate (Czech)
Currently translated at 78.5% (7949 of 10116 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2026-02-24 23:08:23 +01:00
EdizonTN 39dc9c1f89 Translated using Weblate (Slovak)
Currently translated at 62.3% (6303 of 10116 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-02-24 23:08:23 +01:00
2tama3 3c2bf49349 Translated using Weblate (Japanese)
Currently translated at 100.0% (10116 of 10116 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2026-02-24 23:08:23 +01:00
Frank Sonnenberg c0c8dec9ab Translated using Weblate (German)
Currently translated at 100.0% (10116 of 10116 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-02-24 23:08:23 +01:00
ZbeeGin 13418bf205 Translated using Weblate (Polish)
Currently translated at 99.9% (10107 of 10116 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2026-02-24 23:08:23 +01:00
EdizonTN 86ce0abacd Translated using Weblate (Slovak)
Currently translated at 61.9% (6263 of 10116 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-02-24 23:08:23 +01:00
EdizonTN 36231f0bee Translated using Weblate (Slovak)
Currently translated at 61.2% (6196 of 10116 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-02-24 23:08:22 +01:00
Ivan Chuba 4ddd716f22 Translated using Weblate (Ukrainian)
Currently translated at 99.9% (10113 of 10116 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2026-02-24 23:08:22 +01:00
Pferd O. d9212a03be Translated using Weblate (German)
Currently translated at 100.0% (10116 of 10116 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-02-24 23:08:22 +01:00
Mitja Nemec 6322536b93 Translated using Weblate (Slovenian)
Currently translated at 0.8% (88 of 10116 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sl/
2026-02-24 23:08:22 +01:00
Seth Hillbrand 9bf88d7394 Fix image rotation direction in BITMAP_BASE::Rotate
The wxImage::Rotate90() parameter means "clockwise" when true, but the
code was passing aRotateCCW directly. This caused the pixel rotation to
be opposite to the intended direction. The bug manifested as images
appearing incorrectly after save/reload, since the OpenGL renderer uses
m_originalImage with m_rotation compensation, while after reload the
already-rotated pixels have no rotation compensation.

Also updated the unit test that was written to match the buggy behavior,
and added a separate test case for CW rotation.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22719

(cherry picked from commit a02b5f2f1f)
2026-02-24 08:39:43 -08:00
Seth Hillbrand 4a00f058a6 qa_cli: update ERC test fixtures for severity reporting
Commit a5f5298cad added severity headers to ERC report output but
didn't update the CLI test reference files. Update the golden .rpt
files to include the new "Report includes:" header line, update the
.json golden file to include the new "included_severities" array, and
bump the JSON test's line_skip_count from 5 to 9 to skip past the
new block and the kicad_version field during comparison.
2026-02-24 08:30:29 -08:00
Seth Hillbrand 6b1ab24ac9 Add $INSUNITS header variable to DXF export
The DXF exporter was missing the $INSUNITS header variable, which tells
CAD software what physical units the drawing coordinates represent. Without
it, other programs have no reliable way to determine the coordinate scale.

Add $INSUNITS to the HEADER section alongside the existing $MEASUREMENT
variable. When exporting in millimeters, $INSUNITS is set to 4; when
exporting in inches, it is set to 1.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/23181

(cherry picked from commit c0a6a139cf)
2026-02-23 18:21:50 -08:00
Seth Hillbrand 1fbdaf1347 Fix use-after-free in SCH_DIRECTIVE_LABEL destruction with rule areas
When FreeDrawList() destroys items in arbitrary order, a directive label
may be freed before the rule area it connects to. The rule area's
destructor then calls RemoveConnectedRuleArea() on the freed label.

Add ~SCH_DIRECTIVE_LABEL() that calls RemoveDirective() on each
connected rule area, mirroring the existing bidirectional cleanup
between SCH_RULE_AREA and SCH_ITEM.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/23150

(cherry picked from commit 685ee777bc)
2026-02-23 18:18:30 -08:00
Seth Hillbrand ca94b79638 Fix locked state lost when router splits a track segment
When routing a new track that connects to the middle of a locked track,
the router splits the existing segment into two pieces via
SplitAdjacentSegments. The PNS-level Clone preserves the MK_LOCKED
marker on both halves, but createBoardItem did not propagate the locked
state when creating the new board item for the second half.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21564

(cherry picked from commit 7df22da61a)
2026-02-23 18:12:17 -08:00
Seth Hillbrand 29345cc4d0 Fix diff pair router losing inherited track width after first click
When "Use Connected Track Width" is enabled and routing starts from
pre-routed diff pair tracks, the router correctly inherits the track
width for the initial segment. However, after the first click to fix
that segment, updateSizesAfterRouterEvent() recalculates sizes from
netclass constraints and DIFF_PAIR_PLACER::UpdateSizes() unconditionally
overwrites the inherited width, causing subsequent segments to revert
to the netclass default.

LINE_PLACER::UpdateSizes() already guards against this by checking
TrackWidthIsExplicit() and HasPlacedAnything() to preserve the
inherited width during chained placement. Add the same guard to
DIFF_PAIR_PLACER::UpdateSizes() so that the inherited diff pair width
is preserved across fix-route boundaries.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20189

(cherry picked from commit 573381c95b)
2026-02-23 18:10:26 -08:00
Seth Hillbrand 38510036f8 Fix crash in schematic hierarchy when load fails partway through
Guard against empty hierarchy in SetSheetNumberAndCount() to prevent
crash when schematic load fails and the hierarchy list is not populated.
Return empty string instead of asserting in GetPageNumber() when the
sheet path is empty.

Resolves KICAD-11EJ

(cherry picked from commit 0b79465d51)
2026-02-23 18:10:07 -08:00
Seth Hillbrand 625f28d84d Fix perpetual footprint change notifications for legacy FPIDs
When schematic symbols have footprint fields without library name prefixes
(e.g., "DGG56" instead of "Package_SO:DGG56"), the netlist updater's FPID
comparison always fails against the board's fully qualified FPIDs, causing
"Update PCB from Schematic" to perpetually report footprint changes that
can never be resolved.

Match by item name only when the schematic-side FPID has no library
nickname (legacy format), and warn the user to add the library prefix.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22958

(cherry picked from commit c28dd5d4a9)
2026-02-23 18:09:24 -08:00
Seth Hillbrand 78c0d81eb0 Attempt to fix crash on exit
The update check runs on the thread pool and captures a raw pointer to the
KICAD_MANAGER_FRAME for CallAfter. If the update check completes during
frame destruction, the CallAfter targets a partially-destroyed window,
causing a segfault in wxWindowBase::RemoveEventHandler via wxAuiNotebook
destruction.  At least, that is the theory...

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22593

(cherry picked from commit c0230e74c1)
2026-02-23 18:05:43 -08:00
Seth Hillbrand d911483455 Fix crash when exiting KiCad with editor frames open
Guard against re-entrant wxEVT_CLOSE_WINDOW events in windowClosing().
GTK can deliver a second close event while the first is still being
processed (e.g. during Destroy() calls in doCloseWindow), leading to
use-after-free crashes when the tool manager has already been deleted.

Also add defensive null checks for GetToolManager() and GetTool() in
all SaveSettings/SaveProjectLocalSettings paths that access the
selection tool filter, since these are called during frame teardown.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22926

(cherry picked from commit cb31a1ade7)
2026-02-23 18:05:40 -08:00
Seth Hillbrand 8759d05a12 Fix overlapping track segments
When routing with "Fix All Segments on Click" disabled, collinear segments
committed across multiple partial fixes were never merged, resulting in
redundant overlapping track segments.

The root cause was that simplifyNewLine() was only called when the route
was complete (realEnd=true), not during partial fixes. This function
handles merging of collinear segments and removal of contained segments.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19538

(cherry picked from commit 30838e1ec8)
2026-02-23 18:04:20 -08:00
Seth Hillbrand 3fbf6ff1d0 Add escaping support for spaces in bus parsing
Adds support for two escaping mechanisms in bus vector and bus group
parsing to allow net names with spaces inside bus constructs in one of
two common ways

1. Backslash escaping: Data\ Bus[1..4] or BUS{Net\ One Net\ Two}
2. Quoted strings: "Data Bus"[1..4] or BUS{"Net One" "Net Two"}

Fixes https://gitlab.com/kicad/code/kicad/-/issues/9258

(cherry picked from commit 66e232bc36)
2026-02-23 18:04:15 -08:00
Seth Hillbrand 09fcc1269f Strip whitespace from bus alias names and members
Bus alias names and member names entered with leading or trailing
whitespace caused silent connection failures because the lookup
used the trimmed name from the schematic label while the definition
retained the untrimmed name.

Centralize sanitization in BUS_ALIAS by trimming whitespace in
SetName() and adding AddMember/SetMembers/ClearMembers methods
that trim and reject empty strings. Remove the mutable Members()
accessor to prevent bypassing the sanitization. Update all callers
across parsers, importers, and the dialog to use the new API.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19971

(cherry picked from commit 80c4b1b4df)
2026-02-23 18:02:57 -08:00
Dominique Fuchs 5ffe0e762a macOS: Fix kicad-cli resolving paths relative to symlink location 2026-02-23 17:55:34 -08:00
Akhil Velagapudi 40a4f1543f IPC-2581: Fix duplicate Location elements for multi-pad pins 2026-02-23 17:51:28 -08:00
Damjan 106f10ca46 Adjust/Distribute tool skips table cells 2026-02-23 17:44:39 -08:00
Jeff Young 48ad039c39 Unbind event handlers in d'tor. 2026-02-23 17:44:36 -08:00
Seth Hillbrand 4891b45be4 Fix O(n^2) ResolveItem lookups for degen boards
ResolveItem's linear scan fallback now caches items on first
hit, so repeated lookups for the same uncached UUID are O(1)
instead of O(n). The cache is made mutable to allow population
from the const method.

In resolveGroups, the parser now uses the board's item-by-id
cache directly instead of calling ResolveItem, and builds a
one-time hash map for footprint children. This eliminates the
per-call dynamic_cast and linear scans that made group
resolution quadratic on boards with many groups.

(cherry picked from commit 459d2cfb68)
2026-02-23 17:28:24 -08:00
Bernhard Kirchen a5f5298cad ERC/DRC reports: list what severities are part of the report
an ERC or DRC report without violations or without violations of a
particular kind does not tell the user whether there actually are no
violations of that severity, or if the severity was filtered.

we now list the severities by name that are included in the report.

(cherry picked from commit cd03794b23)
2026-02-23 13:15:54 -05:00
Bernhard Kirchen 662b7daf00 CLI: make ERC report include violations with the expected severities
the ERC report creates its own SHEETLIST_ERC_ITEMS_PROVIDER and
hard-codes warnings and errors as wanted severities, regardless
of the --severity-* options given through the CLI.

we keep the marker provider optional and create a fallback instance for
tests code that expects reports with warnings and errors.

(cherry picked from commit 24dec03ba5)
2026-02-22 17:07:45 -05:00
Wayne Stambaugh f4b3366b30 Revert "Fix schematic ERC report command line output."
This reverts commit 47edf9b52d.
2026-02-22 17:06:39 -05:00
Wayne Stambaugh 47edf9b52d Fix schematic ERC report command line output.
The schematic ERC command line report was always reporting the same output
regardless of the severity options because the severity was hard coded to
RPT_SEVERITY_ERROR and RPT_SEVERITY_WARNING.  The ERC_REPORT object now has
an optional severities argument for filtering the output ERC items.
2026-02-22 14:40:14 -05:00
Seth Hillbrand 1390e4d82f Fix routing perf regression from clearance cache
The clearance cache added in b0d0dd57ef invalidates on every
SetLayer() and SetNetCode() call. The router's rule resolver
calls SetLayer() on dummy board items for every clearance
evaluation during routing. Each call acquires an exclusive
lock and linearly scans the entire cache, but dummy items
never exist in the cache, so this is pure waste.

Skip cache invalidation for items flagged ROUTER_TRANSIENT.
The flag is already set on all dummy items in the rule
resolver.

Also replace the O(n) linear scan in InvalidateClearanceCache
with targeted O(1) hash erasure per copper layer.
2026-02-20 15:07:27 -08:00
Seth Hillbrand e1fe374b0a Open subsheets in project context on activation
Double-clicking a subsheet in the project tree opened
it as a standalone schematic, losing reference numbers
and project context. The fix scans the schematic file
hierarchy using a lightweight text parser to determine
if the clicked file is part of the project. If it is,
the project schematic opens and navigates to the target
sheet via MAIL_SCH_NAVIGATE_TO_SHEET.

The cross-probing handler now compares against
SCH_SCREEN::GetFileName() instead of
SCH_SHEET::GetFileName(), since the screen stores the
absolute path while the sheet stores a relative one.
The previous comparison would never match for subsheets.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/23000
2026-02-19 11:07:37 -08:00
Alex Shvartzkop db83e73498 Update translations 2026-02-19 12:58:07 +03:00
Frank Sonnenberg ae84af20db Translated using Weblate (German)
Currently translated at 100.0% (10119 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-02-19 10:57:31 +01:00
Tomas0015 cd343c953a Translated using Weblate (Czech)
Currently translated at 78.2% (7922 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2026-02-19 10:57:31 +01:00
EdizonTN 5f8e45632d Translated using Weblate (Slovak)
Currently translated at 60.6% (6133 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-02-19 10:57:31 +01:00
2tama3 65e153b02c Translated using Weblate (Japanese)
Currently translated at 100.0% (10119 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2026-02-19 10:57:31 +01:00
Tomas0015 3722e13fa6 Translated using Weblate (Czech)
Currently translated at 77.9% (7891 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2026-02-19 10:57:30 +01:00
Frank Sonnenberg 1102e32c2a Translated using Weblate (German)
Currently translated at 100.0% (10119 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-02-19 10:57:30 +01:00
Frank Sonnenberg 4e719bb048 Translated using Weblate (German)
Currently translated at 100.0% (10119 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-02-19 10:57:30 +01:00
EdizonTN aa30dea896 Translated using Weblate (Slovak)
Currently translated at 60.2% (6096 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-02-19 10:57:30 +01:00
2tama3 e8e58a5e38 Translated using Weblate (Japanese)
Currently translated at 100.0% (10119 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2026-02-19 10:57:30 +01:00
Alex Gellen 43d8f48517 Translated using Weblate (Romanian)
Currently translated at 29.8% (3025 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ro/
2026-02-19 10:57:30 +01:00
Mitja Nemec 2cc9c18337 Translated using Weblate (Slovenian)
Currently translated at 0.5% (53 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sl/
2026-02-19 10:57:30 +01:00
Hynek Štětina fba97dd2c7 Translated using Weblate (Czech)
Currently translated at 77.9% (7885 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2026-02-19 10:57:29 +01:00
Seth Hillbrand ac922b8ad3 Fix hotkey list dialog missing runtime refresh
The List Hotkeys dialog now saves edits but was not calling
CommonSettingsChanged(HOTKEYS_CHANGED) after closing, so
ACTION_MANAGER kept stale keycode lookup maps and edited
shortcuts did not take effect until restart.

Add the HOTKEYS_CHANGED notification after the dialog closes
with OK. Add a Cancel button so users can discard accidental
edits. Exclude gesture and platform command pseudo-actions
from the Preferences panel since edits to those entries are
not persisted to disk. The List Hotkeys dialog continues to
show them for reference. Update the stale "read-only" doc
comment on DIALOG_LIST_HOTKEYS.
2026-02-18 18:40:18 -08:00
Seth Hillbrand 1d4e119724 Fix hotkey editing not working in Preferences dialog.
Remove the m_readOnly parameter from PANEL_HOTKEYS_EDITOR and
WIDGET_HOTKEY_LIST. This parameter was causing hotkey changes not to be
saved because TransferDataFromWindow() would return early when m_readOnly
was true, and event handlers for editing were only bound when m_readOnly
was false.

Both the Preferences Hotkeys panel and the Help > List Hotkeys dialog
now support editing, which is the expected behavior.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22455
2026-02-18 18:40:18 -08:00
Wayne Stambaugh a88edddef3 Overwrite output file when exporting ODB++ from the command line.
Remove the existing file check when exporting ODB++ from the command line.
It is still retained when exporting ODB++ using the dialog.

This also adds additional command line status information when exporting
from the command line using a CLI_REPORTER object.  If any errors occur
exporting they are written to 'stderr' and the job handler returns an
unknown error code instead of always returning a successful export.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/23148
2026-02-18 18:48:28 -05:00
jean-pierre charras c1e9e95849 French translation update 2026-02-18 13:07:16 +01:00
Seth Hillbrand 3f69a07e89 Fix crash/hang in DRC zone-zone clearance check
SEG::operator< delegates to VECTOR2I::operator< which compares by
squared magnitude. When SEG::operator< mixes this magnitude comparison
with VECTOR2I::operator== (exact coordinate equality) for tie-breaking,
it violates strict weak ordering: two points at the same magnitude but
different coordinates are "incomparable" under operator< but "unequal"
under operator==, breaking transitivity of incomparability.

Replace the default SEG::operator< sort with a lexicographic comparator
on x/y coordinates, which provides a proper strict weak ordering and
matches the sweep-line optimization that follows (breaking the inner
loop when refSegment.B.x < testSegment.A.x).

Also add null checks for polyA/polyB from GetFill() before dereferencing.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/23112
2026-02-16 14:02:44 -08:00
Seth Hillbrand 9dbffdffeb Don't strip trailing null byte from binary records in Altium parser
ReadProperties() unconditionally stripped a trailing 0x00 byte from all
records. This is correct for text records where 0x00 is a string
terminator, but binary records contain raw compressed data where 0x00 is
valid payload. When a zlib stream happened to end with 0x00, stripping
it caused ReadFullPascalString() to throw out_of_range, crashing Altium
.SchLib imports.

Only strip the null byte for non-binary records.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/23013
2026-02-16 13:06:24 -08:00
Alex Shvartzkop e1e00acccb Update translations 2026-02-16 02:11:53 +03:00
EdizonTN 6ffbdeb08c Translated using Weblate (Slovak)
Currently translated at 59.8% (6060 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-02-15 23:10:50 +00:00
EdizonTN e70682e7c6 Translated using Weblate (Slovak)
Currently translated at 59.8% (6058 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-02-16 00:07:31 +01:00
Ivan Chuba 3c8718bfdb Translated using Weblate (Ukrainian)
Currently translated at 99.9% (10116 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2026-02-16 00:07:31 +01:00
Jan Straka 94bc350653 Translated using Weblate (Czech)
Currently translated at 77.9% (7885 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2026-02-16 00:07:31 +01:00
ZbeeGin 012fb56c14 Translated using Weblate (Polish)
Currently translated at 99.9% (10109 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2026-02-16 00:07:31 +01:00
Pferd O. 71a37d54d4 Translated using Weblate (German)
Currently translated at 100.0% (10119 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-02-16 00:07:30 +01:00
Marco Ciampa 2d694ce203 Translated using Weblate (Italian)
Currently translated at 99.3% (10049 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2026-02-16 00:07:30 +01:00
EdizonTN f2c7936425 Translated using Weblate (Slovak)
Currently translated at 59.4% (6020 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-02-16 00:07:30 +01:00
Pferd O. 41603e1c4f Translated using Weblate (German)
Currently translated at 99.9% (10111 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-02-16 00:07:30 +01:00
Marco Ciampa 4d35bc7c2d Translated using Weblate (Italian)
Currently translated at 99.2% (10047 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2026-02-16 00:07:30 +01:00
EdizonTN 34c8413bba Translated using Weblate (Slovak)
Currently translated at 59.3% (6004 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-02-16 00:07:30 +01:00
Ivan Chuba d6bba34632 Translated using Weblate (Ukrainian)
Currently translated at 99.9% (10112 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2026-02-16 00:07:30 +01:00
CloverGit 2631af8aa9 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.7% (10091 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2026-02-16 00:07:29 +01:00
EdizonTN f6aff75274 Translated using Weblate (Slovak)
Currently translated at 58.6% (5935 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-02-16 00:07:29 +01:00
Marco Ciampa ac5d8a10b6 Translated using Weblate (Italian)
Currently translated at 99.2% (10043 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2026-02-16 00:07:29 +01:00
2tama3 aed8e51eb5 Translated using Weblate (Japanese)
Currently translated at 100.0% (10119 of 10119 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2026-02-16 00:07:29 +01:00
Jeff Young a058d1db76 Check graphic for matching nets.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/23011

(cherry picked from commit 26e97207e2)
2026-02-13 12:33:07 +00:00
John Beard af9a3281ca Pcbnew: export footprints in normal mode, not compact
Otherwise, footprints will export differently to how they save.

In master, this is already fixed with
KICAD_FORMAT::Prettify( prettyData, KICAD_FORMAT::FORMAT_MODE::NORMAL );

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/23050
2026-02-13 18:14:57 +08:00
Alex Shvartzkop e6c4bbd429 Update translations 2026-02-12 00:15:52 +03:00
René Široký 6f8a4bf2bf Translated using Weblate (Czech)
Currently translated at 77.9% (7884 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2026-02-11 22:13:15 +01:00
Frank Sonnenberg f8c4f5a83f Translated using Weblate (German)
Currently translated at 100.0% (10114 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-02-11 22:13:15 +01:00
Pferd O. bd45f578cd Translated using Weblate (German)
Currently translated at 100.0% (10114 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-02-11 22:13:15 +01:00
EdizonTN 17dade6a1e Translated using Weblate (Slovak)
Currently translated at 58.6% (5930 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-02-11 22:13:15 +01:00
Tomas0015 f8d52e0242 Translated using Weblate (Czech)
Currently translated at 77.9% (7884 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2026-02-11 22:13:15 +01:00
René Široký d3c57917b4 Translated using Weblate (Czech)
Currently translated at 77.9% (7884 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2026-02-11 22:13:15 +01:00
Pferd O. 30558013a8 Translated using Weblate (German)
Currently translated at 99.9% (10113 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-02-11 22:13:15 +01:00
Frank Sonnenberg cdc6ce1113 Translated using Weblate (German)
Currently translated at 99.9% (10113 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-02-11 22:13:15 +01:00
Alex Gellen 5ae3c8462e Translated using Weblate (Romanian)
Currently translated at 28.9% (2930 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ro/
2026-02-11 22:13:15 +01:00
Tomas0015 413ec5660b Translated using Weblate (Czech)
Currently translated at 77.9% (7881 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2026-02-11 22:13:14 +01:00
EdizonTN 062447439b Translated using Weblate (Slovak)
Currently translated at 58.6% (5927 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-02-11 22:13:14 +01:00
Pferd O. 342168a77e Translated using Weblate (German)
Currently translated at 99.9% (10113 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-02-11 22:13:14 +01:00
Frank Sonnenberg bd940d4694 Translated using Weblate (German)
Currently translated at 99.9% (10113 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-02-11 22:13:14 +01:00
Pferd O. b4b1870c51 Translated using Weblate (German)
Currently translated at 99.9% (10113 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-02-11 22:13:14 +01:00
ZbeeGin 4c26d6b043 Translated using Weblate (Polish)
Currently translated at 100.0% (10114 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2026-02-11 22:13:14 +01:00
EdizonTN 0c683754a0 Translated using Weblate (Slovak)
Currently translated at 58.0% (5871 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-02-11 22:13:14 +01:00
Frank Sonnenberg e6a5296dd8 Translated using Weblate (German)
Currently translated at 99.9% (10113 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-02-11 22:13:14 +01:00
Frank Sonnenberg babe5cbfa0 Translated using Weblate (German)
Currently translated at 99.9% (10113 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-02-11 22:13:14 +01:00
2tama3 06be33cc41 Translated using Weblate (Japanese)
Currently translated at 100.0% (10114 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2026-02-11 22:13:13 +01:00
EdizonTN 3b36ba1fa3 Translated using Weblate (Slovak)
Currently translated at 58.0% (5868 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-02-11 22:13:13 +01:00
CloverGit 87660838f5 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (10094 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2026-02-11 22:13:13 +01:00
Damjan cedb3b15a6 Fix PCB table flipping to respect Left/Right and Top/Bottom preference 2026-02-11 12:39:48 -05:00
Damjan d5305adde1 Fix multiline text alignment in symbol plots
(cherry picked from commit ca750804ac)
2026-02-09 19:59:23 -05:00
Jeff Young 5ebfc5ac18 Fill in some missing tests in SCH_SYMBOL operator==. 2026-02-09 15:41:58 +00:00
Seth Hillbrand 2436b2e900 Remove WinRT accidental cherry-pick 2026-02-08 19:52:22 -08:00
Seth Hillbrand a251d083fa Add more Linux warnings
MSVC is all bend out of shape about wxString conversions so it will help
to get the warnings on Linux as well.  Only works for Clang right now

(cherry picked from commit 382e141db5)
2026-02-08 17:15:44 -08:00
Damjan 05004b8026 Fix autocomplete popup closing immediately on first line.
(cherry picked from commit 201a49b1c9)
2026-02-08 12:12:15 +00:00
Damjan 5fa8b26f4c Fix accent (´) being converted to apostrophe in Scintilla text controls
(cherry picked from commit f23d3df3ca)
2026-02-08 12:08:27 +00:00
Seth Hillbrand eb6ab26ed7 Only report duplicate pins when on different nets
Symbols with multiple pins sharing the same pin number are valid when
those pins are connected to the same net. This is common for connector
symbols and jumpers where internal connections exist.

The ERC now checks actual net connections rather than just detecting
duplicate pin numbers. A new TestDuplicatePinNets function iterates
over sheet paths to access connection information and only reports an
error when duplicate-numbered pins are connected to different nets.

The error report now states which pins are duplicate and which nets

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20443

(cherry picked from commit 37c005fb32)
2026-02-06 08:55:04 -08:00
jean-pierre charras 062c21ce5c Try to fix French translation 2026-02-06 14:21:23 +01:00
jean-pierre charras 2cdf5ca637 French translation update 2026-02-06 12:50:38 +01:00
Seth Hillbrand bbbe0235bf Fix render jobs not honoring layer presets
When executing render jobs from jobsets, the code stored the preset name
in m_CurrentPreset but never actually applied the preset's layer visibility
settings and colors. This caused renders to use whatever settings were in
the user's 3D viewer config instead of the specified preset.

Add code to look up the preset and apply its settings using SetVisibleLayers()
and SetLayerColors(), matching the behavior of the 3D viewer GUI.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21887

(cherry picked from commit 0dc4c5d08b)
2026-02-05 23:01:38 -08:00
Seth Hillbrand 5631ef69c9 Eeschema: Fix snap indicator hidden when snapping to anchors
BestSnapAnchor unconditionally hid the snap point indicator and
cleared the snap item at the end of the function, even after
successfully snapping to an anchor. This was introduced in
e892783109 when the snap line logic was refactored to use
SnapToConstructionLines. The original code used mutually exclusive
if/else if/else branches, but the refactored code fell through to
the cleanup block in all cases.

Return early from BestSnapAnchor when snapped to an anchor, which
preserves the snap indicator visibility and m_snapItem state. This
restores the visual feedback (circle-cross marker) that shows when
the cursor has snapped to a pin, wire endpoint, or junction.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22678

(cherry picked from commit e87f655293)
2026-02-05 23:01:38 -08:00
Seth Hillbrand 2d67316967 Fix ERC non-determinism when processing global power pins
Sort m_global_power_pins before processing in generateGlobalPowerPinSubGraphs()
to ensure deterministic iteration order. This prevents the same schematic from
producing different ERC results on consecutive runs.

The sort key uses sheet path, symbol reference, and pin number for a stable
ordering that does not depend on RTree iteration order.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20012

(cherry picked from commit 22428040b7)
2026-02-05 23:01:38 -08:00
Seth Hillbrand f418a0e256 Fix HTTP library symbol library nickname not set correctly
When placing a symbol from an HTTP library, the symbol kept the original
KiCad library nickname instead of using the HTTP library nickname. For
example, a symbol from the W5 HTTP library would retain "Device" as its
library nickname instead of "W5".

The issue was in loadSymbolFromPart() where only the sub-library name was
updated, leaving the library nickname from the source symbol unchanged.

The fix extracts the library nickname from the HTTP library path
(e.g., "W5.kicad_httplib" becomes "W5"), passes this path to
loadSymbolFromPart(), and calls SetLibNickname() before setting the
sub-library name. This ensures the symbol's library link is correctly
formatted as "LibraryNickname:PartName" instead of using the wrong
library name.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20407

(cherry picked from commit b61b0f180c)
2026-02-05 23:01:38 -08:00
Seth Hillbrand 00f1c1c4ee Fix hidden power pin visibility change not updating connectivity
SCH_PIN::HasConnectivityChanges() now detects visibility changes for
power input pins. Hidden power pins create implicit global net
connections via IsGlobalPower(), so visibility changes affect
connectivity semantics.

Also detects pin type changes to/from PT_POWER_IN since these affect
IsGlobalPower() as well.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21159

(cherry picked from commit 9587f62e0c)
2026-02-05 23:01:38 -08:00
Seth Hillbrand 61247a1b43 IPC-2581: Export solder mask openings for SMD pads
SMD pads have implicit solder mask and paste openings that are defined by
the pad's expansion properties, but the mask layers are not in the pad's
layer set. The IPC-2581 exporter was only iterating over the pad's layer
set, causing mask/paste layer features to be missing for SMD pads.

Add pads to F_Mask/B_Mask and F_Paste/B_Paste layer features when they
are on the corresponding copper layer, unless they already explicitly
include those layers in their layer set.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16658

(cherry picked from commit 37b23ef824)
2026-02-05 23:01:38 -08:00
Seth Hillbrand 13063d2148 Cairo: Fix high CPU usage in fallback graphics mode
Create wxPaintDC in onPaint() to acknowledge paint events. Without this,
wxWidgets keeps sending paint events because it thinks the window still
needs to be painted. This caused continuous repaints in Cairo mode,
consuming CPU when dialogs with preview canvases were open.

The OpenGL GAL has the same issue but is not affected because
wxGLCanvas handles paint events differently via its double-buffering
mechanism.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18823

(cherry picked from commit e8d3b68e6b)
2026-02-05 23:01:38 -08:00
Seth Hillbrand 1a14809f16 Fix via placement when pressing V before starting to route
When the user presses V to place a via before clicking to start routing,
the via placement intent was being ignored because ToggleViaPlacement()
only works during active routing. The via would only appear if the user
moved the mouse after pressing V.

Add a flag to remember when V is pressed in pre-routing state and enable
via placement after routing starts.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19814

(cherry picked from commit f6a0b6b836)
2026-02-05 23:01:38 -08:00
Seth Hillbrand 4034211f6e Altium: Apply symbol orientation and mirroring on import
Apply the symbol orientation and mirroring from Altium schematic files
when importing. Previously, all imported symbols were placed at 0 degree
rotation regardless of their original orientation in Altium.

The orientation mapping follows the same pattern used for power ports:
- Altium 0 (RIGHTWARDS) -> KiCad SYM_ORIENT_90
- Altium 1 (UPWARDS) -> KiCad SYM_ORIENT_180
- Altium 2 (LEFTWARDS) -> KiCad SYM_ORIENT_270
- Altium 3 (DOWNWARDS) -> KiCad SYM_ORIENT_0

When the symbol is mirrored in Altium, SYM_MIRROR_Y is also applied.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19630

(cherry picked from commit 090583a57e)
2026-02-05 23:01:38 -08:00
Seth Hillbrand 8a839ac851 Fix incorrect ordering of mouse click and escape key events
When pressing escape soon after left clicking (within ~60ms), KiCad
was processing the escape key before the mouse button release event
due to wxWidgets event queue ordering. This caused operations to be
canceled instead of completed.

The fix adds flushPendingClicks() which checks button state via polling
when an escape key event arrives. If a button was logically pressed but
has been physically released, the click event is generated before the
escape event is processed, maintaining proper ordering.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20527

(cherry picked from commit b9327dbe7e)
2026-02-05 23:01:38 -08:00
Seth Hillbrand a8ecaf2cc9 Git: Show error when pull fails due to unstaged changes
When git pull fails due to unstaged changes in the working directory,
show an informative error message instead of silently failing.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20363

(cherry picked from commit 0b116673ab)
2026-02-05 23:01:37 -08:00
Seth Hillbrand b395c31c91 Show embedded fonts inherited from footprints in board setup
When a PCB contains footprints with embedded fonts, the Board Setup
dialog's Embedded Files panel was not showing these inherited fonts,
even though they were correctly embedded when saving.

Fix by collecting embedded files from all footprints and passing them
to PANEL_EMBEDDED_FILES as inherited files.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20579

(cherry picked from commit b0bf0a9365)
2026-02-05 23:01:37 -08:00
Seth Hillbrand ad80375664 Sync Sheet Pins dialog now honors selected sheet
When opening the Sync Sheet Pins dialog from the toolbar, the dialog
now automatically selects the tab for the currently selected sheet.
If no sheet is selected, it falls back to selecting the first tab
with unsynced pins (those showing the exclamation mark icon).

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22344

(cherry picked from commit 618aa535b1)
2026-02-05 23:01:37 -08:00
Seth Hillbrand 53724b15b0 Fix false positive board edge clearance for concentric arcs
Use DRC epsilon tolerance when checking edge clearance collisions to prevent
false positives caused by floating-point precision issues. Items placed exactly
at the specified clearance distance were incorrectly flagged due to
floating-point rounding in arc/arc distance calculations.

The fix subtracts m_epsilon from the collision threshold, which is initialized
from the board's DRC epsilon setting. This provides consistent tolerance
handling that matches other DRC checks.

Adds regression test with concentric arcs where copper arc inner edge is
exactly at board edge clearance distance.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18839

(cherry picked from commit 01e67cef85)
2026-02-05 23:01:37 -08:00
Seth Hillbrand adeda13537 Fix router clearance check for pads with different sizes on each layer
When using FRONT_INNER_BACK padstack mode on a 2-layer board, the router
would incorrectly report clearance violations. This happened because
syncPad() created an INNER_LAYERS SOLID with PNS_LAYER_RANGE(1, 0),
which got swapped to (0, 1) by the constructor. This caused the SOLID
to be indexed on both F_Cu and B_Cu, leading to incorrect collision
checks that used the wrong pad size.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20355

(cherry picked from commit 7d1b5db8ac)
2026-02-05 23:01:37 -08:00
Seth Hillbrand 8986f0762e Add 30-second connection timeout to CURL to prevent UI freeze
Without a connection timeout, CURL can wait up to 5 minutes for DNS
resolution or connection establishment when network is unreachable.
The 30-second connection timeout applies only to the connection phase,
not the total transfer time, so large file downloads still work normally.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20568

(cherry picked from commit f5c7ab27c9)
2026-02-05 23:01:37 -08:00
Seth Hillbrand 80fd7b6287 Fix HTTP library symbol name not set correctly
When loading symbols from an HTTP library, the duplicated symbol
retained the original symbol's name instead of the HTTP library
part identifier. This caused ERC to report "Symbol not found"
errors with the wrong symbol name.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20247

(cherry picked from commit c2403152e0)
2026-02-05 23:01:37 -08:00
Seth Hillbrand 7d95d025c4 Fix topology mismatch with dotted reference designators in multichannel tool
The multichannel tool's topology matching failed when reference designators
contained dots (e.g., TRIM_1.1, TRIM_2.1) because GetRefDesPrefix() extracted
different prefixes for components that should match. TRIM_1.1 gave prefix
"TRIM_1." while TRIM_2.1 gave "TRIM_2.", causing IsSameKind() to return false.

Modified the prefix comparison in topo_match.cpp to find the longest common
starting sequence between prefixes and verify that the differing parts are
valid channel suffixes (digits and dots only). This allows TRIM_1. and TRIM_2.
to match because they share base prefix "TRIM_" with channel suffixes.

Added unit test for the specific dotted reference designator case.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20058

(cherry picked from commit e9c32c7202)
2026-02-05 23:01:37 -08:00
Seth Hillbrand 0ccd2b7db7 Fix arrow key movement precision during Move operation
When moving items with arrow keys, the position should change by exactly
the grid step amount. My previous fix for issue 21682 introduced Align()
which snaps to the nearest grid point, but this causes problems when the
item starts at an off-grid position.

The original fix also had a second problem where the refreshPreview filter
was too broad. CursorControl posts refreshPreview after handling arrow
keys, but the filter prevented using the keyboard position for that event,
so it fell back to mouse position instead.

This restructures the code to always use the keyboard position when it's
valid, and moves the refreshPreview filter inside so it only skips the
axis lock logic rather than the entire keyboard handling path.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22805

(cherry picked from commit f41394fc5a)
2026-02-05 23:01:37 -08:00
Seth Hillbrand d9958ff5ff kicad-cli: Preprocess vector args
argparse required long-form functions to use an equal sign to process a
string like --rotate='-45,0,45' but would accept long-form args that
didn't have a negative like --output test.png without the equal sign.

Since this is an intrinsic limitation of our library, we work around it
by detecting these vector forms and changing them into an equality under
the hood.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20191

(cherry picked from commit a9ce9da551)
2026-02-05 23:01:37 -08:00
Seth Hillbrand 0ae20bf3b0 pcbnew: Fix footprint selection when only opposite-side layers visible
Footprints with graphics on both copper layers (like fiducials without
pads) were not selectable when only the opposite-side layers were
visible. For example, a footprint declared on F.Cu with graphics on
B.Cu could not be selected when showing only bottom layers.

The early-return check based on the footprint's declared side prevented
the child visibility iteration from running, even though child items on
the opposite layer were visible. Removing this check allows the existing
child iteration to correctly determine selectability based on whether
any child items are on visible layers.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22666

(cherry picked from commit 40ea18277f)
2026-02-05 23:01:37 -08:00
Seth Hillbrand bd64ea015c Allow lowercase letters for array tool pin numbering
The ARRAY_AXIS class now accepts lowercase letters (a-z) as input for
alphabetic numbering schemes and preserves that case in the output.
This allows users to create pin numbers like a1, b1, c1 which are
commonly used in DIN 41612 and other backplane connectors.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22787

(cherry picked from commit 56b8309525)
2026-02-05 23:01:37 -08:00
Seth Hillbrand 0b8a92d930 Ensure that arcs are properly handled when converting
Shallow arcs are essentially segments but the cutoff is not clear.  So
we build a two-tiered system where we know that arcs with at least a
sagitta-chord ratio of 0.3 are valid and we know that less than 0.2 is
invalid.  After that, we do additional rational checks to find
problematic arcs that are more computationally intensive

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22475

(cherry picked from commit 3b3d640eed)
2026-02-05 23:01:37 -08:00
Seth Hillbrand 6f5a92c7e2 Altium Schematic Import: Fix duplicate sheet creation in hierarchical projects
When importing Altium projects, sheets were sometimes imported as both top-level
sheets and hierarchical subsheets. This happened because the project file lists
sheets in arbitrary order. If a parent sheet was processed before its children,
the children would be loaded as subsheets during hierarchy descent. Later, when
those same files appeared in the project file, duplicate sheets were created.

The importer now checks whether a file has already been loaded as a subsheet
before creating a new top-level sheet entry. The check includes a case-insensitive
fallback search since Altium uses inconsistent casing in its .SchDoc extension.

Sheet filenames were also being set to the original Altium paths instead of
KiCad project-relative paths. This caused path mismatches in the hierarchy
search and left references to non-existent Altium paths in the saved schematic.
Filenames now use the KiCad project directory with the .kicad_sch extension.

Hierarchical labels on top-level sheets are converted to global labels during
import since top-level sheets have no parent sheet to connect them to.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21909

(cherry picked from commit f00dc1befd)
2026-02-05 23:01:37 -08:00
Seth Hillbrand ef617a272d Fix mirrored text in data views for RTL locales like Hebrew
wxWidgets applies layout direction mirroring to controls when the locale
is a right-to-left language (Hebrew, Arabic, etc.). This caused text in
wxDataViewCtrl and wxListCtrl widgets to appear horizontally mirrored,
making them unreadable.

The fix explicitly sets wxLayout_LeftToRight on all wxDataViewCtrl and
wxListCtrl widgets used to display violation reports and data lists.
This follows the existing pattern used in other KiCad dialogs and
drawing panels.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22750

(cherry picked from commit f41eb38405)
2026-02-05 23:01:37 -08:00
Seth Hillbrand 196e63ba01 Altium importer: Fix symbols with slashes in names not loading
When Altium symbol names contain slashes (e.g., "C-68UF/63V_10/10-SMD"),
the compound file stores them in directories using underscores instead
(since slashes are invalid in directory names). The symbol cache used
these directory names as keys, but the symbol's internal name (m_name)
was set from the original Altium LIBREFERENCE property with slashes.

This caused a mismatch when loading symbols via the symbol chooser,
as the tree node's LIB_ID was built from GetName() (with slashes) but
the cache lookup expected the directory name (with underscores).

Fix by setting the symbol name to match the cache key after parsing,
ensuring consistent lookups.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22453

(cherry picked from commit f91e3df207)
2026-02-05 23:01:37 -08:00
Seth Hillbrand 133d2fa5f6 Reset tool dispatcher state when GAL canvas loses focus
When the GAL canvas loses focus while a mouse button is pressed,
the button-up event may be delivered to another window, leaving
the tool dispatcher in an inconsistent state where it thinks the
button is still pressed. This can cause selection and drag
operations to stop working until the application is restarted.

Call ResetState() on the tool dispatcher when focus is lost to
ensure the button tracking state is properly cleared. This
complements the existing CancelDrag() call which only resets the
view-level panning/zooming state.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22317

(cherry picked from commit f5731f69b1)
2026-02-05 23:01:37 -08:00
Seth Hillbrand 18575df311 Use GetType() for pin alternate electrical type queries
When a pin has an alternate function selected, GetType() correctly
returns the alternate's type. However, GetCanonicalElectricalTypeName(),
GetElectricalTypeName(), and PlotPinType() were accessing m_type directly,
bypassing the alternate type lookup. This caused netlist exports to show
the wrong pin type (e.g., "no_connect" instead of "power_in") and the
NC symbol to be drawn incorrectly when alternates changed the pin type.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22286

(cherry picked from commit 25430cfbb8)
2026-02-05 23:01:37 -08:00
Seth Hillbrand f1b0926699 Properly bind event handlers to a sink
Lambdas are stored as opaque functors, so wxWidgets cannot see what they
capture.  Since we don't know what the event sink is, we don't know to
detach the handler when the sink is destroyed.  Then, events can execute
after the swatch is destroyed

Changing the lambdas to a member function explicitly binds the event to
a sink and wxWidgets can track it and detach the handler when the swatch
hits a dtor

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22689

(cherry picked from commit 36655e0499)
2026-02-05 23:01:37 -08:00
Seth Hillbrand eadc270c11 Fix overlapping dialogs in zone manager
When transferring data, we may hit an error.  Don't keep processing b/c
this will move the progress dialog back to the front

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22687

(cherry picked from commit aef709bbe4)
2026-02-05 23:01:37 -08:00
Seth Hillbrand 02731c6e8b Fabmaster: Preserve static shapes that have no matching outline
Static shapes in Allegro are copper areas that don't void around other nets.
In Fabmaster export, these appear as filled areas with net assignments but
without corresponding outline polygons. Previously, the importer deleted all
netted zones after matching outlines to fills, which caused static shapes
to disappear entirely.

Now the importer tracks which fills are matched to outlines and only deletes
those. Unmatched fills (static shapes) are preserved as solid filled zones
with their original net assignments.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/7753

(cherry picked from commit 6601701fe0)
2026-02-05 23:01:37 -08:00
Seth Hillbrand 305761c777 IPC-2581: Use inline geometry for shapes in Marking elements
When shapes like circles, rectangles, and polygons are placed within
Marking elements in Package definitions, they should use inline Polyline
geometry rather than UserPrimitiveRef references.

The fix adds an aInline parameter to addShape() for PCB_SHAPE. When true,
circles are output as two PolyStepCurve arcs forming a complete circle,
rectangles as PolyStepSegment paths, and polygons as Polyline elements
with their outline points.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17623

(cherry picked from commit 0ef2631492)
2026-02-05 23:01:37 -08:00
Seth Hillbrand 948fc25618 Fix dashed/dotted line rendering in simulator graphs
The horizontal segment merging optimization was breaking non-solid pen
styles by combining line segments, which altered the dash/dot pattern.
This fix only applies the merging optimization for solid pens and extends
the reduced chunk size handling to all non-solid pen styles.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18887

(cherry picked from commit 233fa0366f)
2026-02-05 23:01:37 -08:00
Seth Hillbrand 31c06bd7f2 Fix multichannel tool removing vias from reference rule area
When a copper fill zone shares the same name as a placement rule area,
the multichannel tool's enclosedByArea() queries would match items in
both zones. This caused vias and other routing in the reference area to
be incorrectly removed during repeat layout operations.

Changed findOtherItemsInRuleArea() and findRoutingInRuleArea() to use
the zone's UUID instead of its name when constructing enclosedByArea()
expressions.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21184

(cherry picked from commit 37d8f151ff)
2026-02-05 23:01:37 -08:00
Seth Hillbrand c85e130ea5 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

(cherry picked from commit bc37f184bb)
2026-02-05 23:01:37 -08:00
Seth Hillbrand 737e6de4c5 Fix missing colors when exporting STEP model
The TDocStd_XLinkTool::Copy function copies shape labels between XDE
documents but doesn't properly transfer color associations which are
stored separately in the ColorTool section. This caused component
models to lose their color information when exported to STEP.

Added transferColors() function to explicitly transfer color information
from source to destination document by recursively transferring colors
to all elements in destination shape

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21865

(cherry picked from commit 1bda2a4b40)
2026-02-05 23:01:37 -08:00
Seth Hillbrand 4a37d391c0 Don't change directory when importing settings
Working directory nukes the current project, so don't modify it when
importing settings from another

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16151

(cherry picked from commit bc0484d8bc)
2026-02-05 23:01:37 -08:00
Seth Hillbrand f6318ad852 Clear hidden file attribute on Windows before saving
On Windows, files with the hidden attribute cannot be overwritten using
standard file I/O operations. This can cause save failures when files
have been synced via cloud services like OneDrive, which may set the
hidden attribute on files.

This commit extends KIPLATFORM::IO::MakeWriteable() to also clear the
hidden attribute on Windows, and adds calls to this function before
saving schematic and board files.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/14956

(cherry picked from commit d2013cba95)
2026-02-05 23:01:37 -08:00
Seth Hillbrand 30b0f2a368 Fix DXF import corruption with large coordinates
The overflow check for auto-offsetting imported graphics did not account
for the IU conversion factor, causing DXF files with coordinates around
2300mm to exhibit visual glitches. The check compared mm values directly
against INT32_MAX, but after IU conversion (multiply by 1e6 for PCB),
these values exceed the integer limit.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/9681

(cherry picked from commit 00565e0f14)
2026-02-05 23:01:37 -08:00
Seth Hillbrand c2d551036f Fix table comparison in operator< causing file churn
Copy pasta in SCH_TABLE::operator< had compared GetPosition().x
and GetPosition().y against themselves instead of against other's position.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22559

(cherry picked from commit 0188edb155)
2026-02-05 23:01:37 -08:00
Seth Hillbrand a0457b2e0f Fix multi-channel tool swapping identical parallel components
When copying layouts between rule areas, identical parallel components
(e.g., multiple capacitors in parallel) would get their positions mixed
up randomly. This happened because the sorting functions used for
component matching did not provide deterministic ordering for
topologically identical components.

The fix adds reference designator as a secondary sort key in both
sortByPinCount() and findMatchingComponents(), ensuring that identical
parallel components are always matched in a consistent order based on
their reference designators.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22293

(cherry picked from commit 348bbad7be)
2026-02-05 23:01:37 -08:00
Seth Hillbrand d13d88bcb3 Fix memory leak in Python pcbnew.FootprintLoad()
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

(cherry picked from commit 0f0fbc55d7)
2026-02-05 23:01:37 -08:00
Seth Hillbrand 3352623b2a Fix component classes not being cleared during Update PCB from Schematic
Two things were happening here

1. The FOOTPRINT copy constructor and assignment operators did not copy
the static component class from the source footprint. So when the undo
system created copies of footprints, the component class information was lost.

2. When only the component class changed (no other footprint parameters), the
change was not recorded in the commit and could be lost.

This change adds the component class info to the copy operation, tracks
it in COMMIT and updates footprins without component classes to 'none'

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21101

(cherry picked from commit 127a85f753)
2026-02-05 23:01:37 -08:00
Seth Hillbrand 6ee10db849 Fix STEP export for models with non-self-contained XDE data
Some STEP files exported from CAD tools like Fusion 360 with linked
components contain internal references that violate OpenCASCADE's
"self-contained" requirement for TDocStd_XLinkTool::Copy. This caused
the error "TDocStd_XLinkTool::Copy : not self-contained" and prevented
the 3D model from being included in the exported STEP file.

The fix checks if the source label is self-contained using
TDF_Tool::IsSelfContained before attempting the copy. If not
self-contained, it falls back to extracting just the geometric shape
directly and adds it to the destination document. This loses some
XDE metadata like colors and names, but allows the model to be
successfully transferred rather than failing entirely.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22417

(cherry picked from commit 1948da99a2)
2026-02-05 23:01:37 -08:00
Seth Hillbrand 96820f8ac1 Add virtual fields to CLI BOM export data model
The CLI BOM export handler should add Mandatory fields
and virtual fields

This adds the generated field columns to match the GUI behavior, allowing
users to include ${QUANTITY} and ${ITEM_NUMBER} in CLI BOM exports.

Also adds test coverage for BOM export with virtual fields.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22613

(cherry picked from commit 3659475455)
2026-02-05 23:01:37 -08:00
Seth Hillbrand c5dca7310d Prevent crash when updating to lower pin count
When iterating, we need to check if our index is valid for both new and
old symbols

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22566

(cherry picked from commit 465207df4a)
2026-02-05 23:01:36 -08:00
Seth Hillbrand db0be852c4 Don't trip on bus syntax
Instead of relying on regex, do a bus expansion to determine coloration
and membership

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16915

(cherry picked from commit 8178a6d338)
2026-02-05 23:01:36 -08:00
Seth Hillbrand 25804bb945 Don't clear references unconditionally
If we are clearing all references in the schematic, then we can clear
our references, otherwise, just eliminate the ones for the proper
sheets.   We don't want to clear the references on Sheet A when we copy
and paste it to Sheet B.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20173

(cherry picked from commit 8d37b3787d)
2026-02-05 23:01:36 -08:00
Seth Hillbrand a6ebb8a162 Have tabs skip over hidden/disabled controls
Set an explicit tab order in the find/replace dialog

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18073

(cherry picked from commit 390a1da1ee)
2026-02-05 23:01:36 -08:00
Seth Hillbrand 84839b47a4 Handle bus member rename deterministically
Look to see if, in the same bus, the bus member was renamed.  if so,
take the new name unless one of two things:
1) If the current name already matches a different bus member
2) If a different bus updated the neighbor (this preserves the bus name)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18299

(cherry picked from commit 511d213462)
2026-02-05 23:01:36 -08:00
Seth Hillbrand 1602da41a4 Ensure wires stay connected to sheet pins
Pass screen into sheet_point_edit_behavior so that we can catch
connected wires when resizing

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17724

(cherry picked from commit 9c4999f229)
2026-02-05 23:01:36 -08:00
Seth Hillbrand 187cc84b55 Assign netclasses after resolution in Altium import
We are correctly importing netclasses in the Altium import but we need
to fully resolve them in order for them to show up without
saving/reopening

Also found a crash when importing invalid pads that didn't need to be
there.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/15584

(cherry picked from commit ed993ae35d)
2026-02-05 23:01:36 -08:00
Seth Hillbrand 548bc438b4 Change Remove Version Control to Disable
We don't need destructive operations in KiCad.  We can just disable the
git integration on a per-project basis for people

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22134

(cherry picked from commit 09413b0fc6)
2026-02-05 23:01:36 -08:00
Seth Hillbrand f1ba9f70ac Propogate drivers back
If a higher priority driver renames the bus member, be sure to inform
the rest of the bus

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18119

(cherry picked from commit f873d672c1)
2026-02-05 23:01:36 -08:00
Seth Hillbrand 0ac783aa7e Normalize pad to unflipped orientation
Should keep the pad orientation consistent for output

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19703

(cherry picked from commit 709b577026)
2026-02-05 23:01:36 -08:00
Seth Hillbrand 983e8c0058 Correct PNS diff pair collision order
After shapes are modified, we want to perform the collision check on the
modified lines (pLine/nLine) not the previous geometry.  We also need to
set the heads to the shape in order to commit the shoved geometry in
FixRoute()

Fixes https://gitlab.com/kicad/code/kicad/-/issues/10825

(cherry picked from commit 1c59cc29ff)
2026-02-05 23:01:36 -08:00
Seth Hillbrand f653c6cfad Ensure shared sheet units are updated
When updating the unit of the next symbol to be placed, we need to
update all instances of the symbol unit

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22052

(cherry picked from commit 1b4cdfcbac)
2026-02-05 23:01:36 -08:00
Seth Hillbrand a4d7dc9775 Ensure unique ODB++ component names
Use the known entity map to check for _1, _2, etc before renaming.  Adds
logging for each change

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21701

(cherry picked from commit e6cb818818)
2026-02-05 23:01:36 -08:00
Seth Hillbrand 97a826b5f5 Restore Freeze/Thaw pattern
While wxWindowUpdateLocker is supposed to do the same thing, it appears
less effective

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22434

(cherry picked from commit 635550b31e)
2026-02-05 23:01:36 -08:00
Seth Hillbrand 4ccaf7051d Sort bus neighbors
When choosing the shorted net name, ensure that we are alphabetically
sorted for vectors to keep a consistent name

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18606

(cherry picked from commit ba54c640ab)
2026-02-05 23:01:36 -08:00
Seth Hillbrand 08e6d7f292 Don't break out nested buses for implicit connection
Only break out nets

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17771

(cherry picked from commit 61e85f3b25)
2026-02-05 23:01:36 -08:00
Seth Hillbrand 02709d7026 Performance improvements in Creepage
Caching and pre-filtering parents avoids some of the worst O(n^2) loops.
Adds a basic test to check for minimum performance and scaling.  We'll
have to see if our test machine handles it

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21482

(cherry picked from commit a3eb311c48)
2026-02-05 23:01:36 -08:00
Seth Hillbrand 2912419b41 Persist utf8 strings
It is possible that the utf8 strings expire before the API call handles
them.  Also possible that the size is incorrect when not using length()
on the proper string.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20231

(cherry picked from commit 0f87d6eead)
2026-02-05 23:01:36 -08:00
Seth Hillbrand a4097884b5 Fix vector bus parsing
Avoid the nesting braces when embedding a bracket vector

Fixes https://gitlab.com/kicad/code/kicad/-/issues/9031

(cherry picked from commit 2e8e4f91e4)
2026-02-05 23:01:36 -08:00
Seth Hillbrand 86fe87fd61 Fix crash when changing invalid model
Check for empty models and clear pointers when changing

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22437

(cherry picked from commit 1df7cb1bd7)
2026-02-05 23:01:36 -08:00
Seth Hillbrand 04ea0796d0 Handle git cancellation when closing
Tidies up a few places where we need to hold the mutex and early exit
from loops if we are quitting

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21849

(cherry picked from commit fd2ddf60b7)
2026-02-05 23:01:36 -08:00
Seth Hillbrand 19a9cac436 Prevent holding dangling pointers when rebuilding
Changing properties consecutively can rebuild the grid, leading to
dangling pointers.  Storing references by name keeps the current pointer
accurate

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22262

(cherry picked from commit 458db88648)
2026-02-05 23:01:36 -08:00
Seth Hillbrand 0b88e2a9ab Do not clear netclasses when appending
Appending should not replace all content, it should add to the existing
content, so don't remove data before loading the board to append

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22089

(cherry picked from commit acab87cadc)
2026-02-05 23:01:36 -08:00
Seth Hillbrand 0fc6e20508 Attempt to fix ordering issue when quitting
In some cases (mostly mac but not just), we can get to the dtor for
thread pool after the CV has already been destroyed.  This prevents that
from being possible and hopefully fixes the crash

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22583

(cherry picked from commit 1b4a840820)
2026-02-05 23:01:36 -08:00
Seth Hillbrand c17dbbdc7b Import default Eagle netclass clearances
Eagle picks largest clearance of netclass and zone.  However, Eagle also
allows netclass-netclass definitions.  KiCad only has a single netclass
clearance option.  Since custom rules override the zone clearance, we
can get a situation where the KiCad clearance is different that the
Eagle clearance.

This fixes the common use case where Eagle netclass to 'default'
clearance is set.  This can be represented by KiCad.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21283

(cherry picked from commit 22ba1451d6)
2026-02-05 23:01:36 -08:00
Seth Hillbrand dd221d4c85 Don't remove locked segments
When removing redundant tracks, check to see if the segment is locked
before removing it.  If it is, skip the locked track(s)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22387

(cherry picked from commit f745f61d06)
2026-02-05 23:01:36 -08:00
Seth Hillbrand 3c1a7701d0 Fit sheet on cross-probe
If we are not zooming to fit the selection on cross-probe, when we
change sheets, just show the whole sheet but maintain the sheet size for
the new display

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19515

(cherry picked from commit 1eab09147a)
2026-02-05 23:01:35 -08:00
Seth Hillbrand 016dc47ec2 Don't copy embedded files for temp objects
Just takes a long time and we throw it away a ms later

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22547

(cherry picked from commit d94d2c9a05)
2026-02-05 23:01:35 -08:00
Seth Hillbrand f3079700dd Import footprints even without graphics
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7792

(cherry picked from commit 1fd163d09f)
2026-02-05 23:01:35 -08:00
Alex Shvartzkop d53f791e04 Update translations 2026-02-05 23:40:09 +03:00
Pferd O. 8d3b089c17 Translated using Weblate (German)
Currently translated at 99.9% (10113 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-02-05 21:39:12 +01:00
Frank Sonnenberg bd2c8f828f Translated using Weblate (German)
Currently translated at 99.9% (10113 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-02-05 21:39:12 +01:00
Temuri Doghonadze f1450ca6e9 Translated using Weblate (Georgian)
Currently translated at 33.0% (3339 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ka/
2026-02-05 21:39:12 +01:00
EdizonTN 1d12392bef Translated using Weblate (Slovak)
Currently translated at 57.3% (5802 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-02-05 21:39:12 +01:00
Ivan Chuba e8330f9cff Translated using Weblate (Ukrainian)
Currently translated at 100.0% (10114 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2026-02-05 21:39:11 +01:00
Frank Sonnenberg 9b4e015b51 Translated using Weblate (German)
Currently translated at 99.9% (10113 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-02-05 21:39:11 +01:00
EdizonTN 2cc5a88d0b Translated using Weblate (Slovak)
Currently translated at 56.8% (5749 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-02-05 21:39:11 +01:00
ZbeeGin 8ac2628c12 Translated using Weblate (Polish)
Currently translated at 99.8% (10101 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2026-02-05 21:39:11 +01:00
Alex Gellen fb83a926c1 Translated using Weblate (Romanian)
Currently translated at 28.7% (2909 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ro/
2026-02-05 21:39:11 +01:00
2tama3 370934e219 Translated using Weblate (Japanese)
Currently translated at 100.0% (10114 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2026-02-05 21:39:11 +01:00
EdizonTN 57c02b2df3 Translated using Weblate (Slovak)
Currently translated at 56.6% (5725 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-02-05 21:39:11 +01:00
Ivan Chuba 9fc399fc8f Translated using Weblate (Ukrainian)
Currently translated at 99.9% (10112 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2026-02-05 21:39:10 +01:00
Pferd O. 42d5d6dc42 Translated using Weblate (German)
Currently translated at 99.9% (10113 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-02-05 21:39:10 +01:00
ZbeeGin 910222c052 Translated using Weblate (Polish)
Currently translated at 99.8% (10099 of 10114 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2026-02-05 21:39:10 +01:00
Seth Hillbrand 49f6154ce3 Trim unused OCCT libraries from FindOCC
Remove 15 libraries from OCC_LIBS_COMMON that KiCad never
links against: persistence format libs (TKBin*, TKXml*,
TKTObj), unused modeling algorithms (TKFeat, TKFillet,
TKOffset, TKXMesh), and OCCT viewer internals (TKMeshVS,
TKOpenGl). This reduces the common set from 35 to 22.

In loadmodel.cpp, drop the unused AIS_Shape.hxx include and
add an explicit Quantity_ColorRGBA.hxx include that was
previously pulled in transitively through AIS_Shape.

Add /usr/opencascade to the Unix library search hints.
2026-02-04 12:42:49 -08:00
Jon Evans a366808478 Fix IPC API not permitting operations when a single polygon is selected 2026-02-04 09:37:39 -05:00
Jon Evans 07778ad10f Prevent crash when corrupt files leave pins without parents 2026-02-03 15:14:58 -05:00
Jeff Young f00d6dd194 Back out 507ec29cc0.
Apply a more localized fix which doesn't mess up
text positioning.

Also move it to shared code so that it can't get out
of sync with plotting again.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22921

(cherry picked from commit 0f33d13c1c)
2026-02-03 16:12:14 +00:00
Alex Shvartzkop b04c8bb905 Update translations 2026-02-02 18:27:25 +03:00
EdizonTN 32a5cfda8b Translated using Weblate (Slovak)
Currently translated at 56.3% (5697 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-02-02 16:25:37 +01:00
Alex Gellen 41fd0e41e2 Translated using Weblate (Romanian)
Currently translated at 28.0% (2832 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ro/
2026-02-02 16:25:37 +01:00
Marco Ciampa 620fdb46af Translated using Weblate (Italian)
Currently translated at 99.3% (10048 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2026-02-02 16:25:37 +01:00
Temuri Doghonadze 95e881b7ea Translated using Weblate (Georgian)
Currently translated at 33.0% (3337 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ka/
2026-02-02 16:25:36 +01:00
EdizonTN c928a06b99 Translated using Weblate (Slovak)
Currently translated at 55.2% (5585 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-02-02 16:25:36 +01:00
Pferd O. 2de16c4b52 Translated using Weblate (German)
Currently translated at 100.0% (10110 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-02-02 16:25:36 +01:00
Frank Sonnenberg fdedf2f067 Translated using Weblate (German)
Currently translated at 100.0% (10110 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-02-02 16:25:36 +01:00
EdizonTN 2bd4ebacbf Translated using Weblate (Slovak)
Currently translated at 55.2% (5581 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2026-02-02 16:25:36 +01:00
Frank Sonnenberg 0226769d67 Translated using Weblate (German)
Currently translated at 100.0% (10110 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-02-02 16:25:36 +01:00
Temuri Doghonadze 010aadf4cf Translated using Weblate (Georgian)
Currently translated at 33.0% (3337 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ka/
2026-02-02 16:25:36 +01:00
Temuri Doghonadze 30ed02d3a9 Translated using Weblate (Georgian)
Currently translated at 32.8% (3324 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ka/
2026-02-02 16:25:36 +01:00
Temuri Doghonadze c3f0e459dc Translated using Weblate (Georgian)
Currently translated at 32.8% (3321 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ka/
2026-02-02 16:25:35 +01:00
CloverGit a85548f825 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (10094 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2026-02-02 16:25:35 +01:00
ZbeeGin 8251915da5 Translated using Weblate (Polish)
Currently translated at 99.8% (10098 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2026-02-02 16:25:35 +01:00
Alex Gellen df219063e1 Translated using Weblate (Romanian)
Currently translated at 27.4% (2776 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ro/
2026-02-02 16:25:35 +01:00
Marco Ciampa a4b0b8cd51 Translated using Weblate (Italian)
Currently translated at 99.3% (10046 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2026-02-02 16:25:35 +01:00
2tama3 e2a8c8ca74 Translated using Weblate (Japanese)
Currently translated at 100.0% (10110 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2026-02-02 16:25:35 +01:00
Marco Ciampa 4d87de2b78 Translated using Weblate (Italian)
Currently translated at 99.3% (10046 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2026-02-02 16:25:35 +01:00
Alex Gellen 6fa6168118 Translated using Weblate (Romanian)
Currently translated at 25.6% (2593 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ro/
2026-02-02 16:25:35 +01:00
2tama3 1cf8f00a3f Translated using Weblate (Japanese)
Currently translated at 100.0% (10110 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2026-02-02 16:25:35 +01:00
Pferd O. cf879fd811 Translated using Weblate (German)
Currently translated at 100.0% (10110 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-02-02 16:25:34 +01:00
ZbeeGin b40a3bd81c Translated using Weblate (Polish)
Currently translated at 99.8% (10097 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2026-02-02 16:25:34 +01:00
ZbeeGin b046e658eb Translated using Weblate (Polish)
Currently translated at 99.8% (10097 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2026-02-02 16:25:34 +01:00
2tama3 6d37e7fa2e Translated using Weblate (Japanese)
Currently translated at 100.0% (10110 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2026-02-02 16:25:34 +01:00
Ivan Chuba 60fe60440f Translated using Weblate (Ukrainian)
Currently translated at 100.0% (10110 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2026-02-02 16:25:34 +01:00
CloverGit 5596b46d61 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (10094 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2026-02-02 16:25:34 +01:00
Pferd O. 3cfdd05a51 Translated using Weblate (German)
Currently translated at 100.0% (10110 of 10110 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2026-02-02 16:25:34 +01:00
jean-pierre charras 0a789e1cbc Eeschema: netlist Allegro export: do not quote value string twice.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22868

(cherry picked from commit a26c25b7e5)
2026-02-02 16:22:12 +01:00
Mike Williams cb30093045 drc: remove stale markers from cache
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/22888
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/22901
2026-02-02 10:03:36 -05:00
Seth Hillbrand c5a32bd4d2 Fix PCB generator layer reporting
The tuning pattern generator now returns the layer of its
contained tracks instead of the base layer. During parsing,
generators set their layer to match contained tracks so the
layer is preserved when loading files.

(cherry picked from commit 7f92e60d22)
2026-01-30 11:03:40 -08:00
jean-pierre charras 169e0d7f3e Eeschema: netlist Allegro export: fix missing items in $PACKAGES section.
(cherry picked from commit 80e2443ed3)
2026-01-28 16:57:53 +01:00
jean-pierre charras 0342375cdf French translation update 2026-01-28 16:51:17 +01:00
Seth Hillbrand 44f34e1f82 Make MSVC happy 2026-01-26 18:24:16 -08:00
Seth Hillbrand 9deec754cd Fix crash when running ERC twice with rule areas
When a schematic item is deleted or moved, it must remove itself from
any SCH_RULE_AREA that contains it. Previously, the rule area kept
dangling pointers to deleted items in its m_items and m_prev_items
sets. On subsequent ERC runs, iterating these sets and calling methods
on freed memory caused a crash.

Added SCH_RULE_AREA::RemoveItem() and call it from SCH_ITEM destructor
to clean up the bidirectional references.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22854
2026-01-26 16:15:44 -08:00
Seth Hillbrand 33f2886c24 Fix MSVC build 2026-01-23 22:03:14 -08:00
Seth Hillbrand 0b21f33a3a Fix some determinism in saving
Teardrops don't get their own unique UUID saved in the file, so they can
end up being sorted differently on save.  Instead, we assign a synthetic
UUID to the teardrop based on its two connecting elements' UUIDs.

This also fixes the comparison function so that we don't end up mixing
around caches

(cherry picked from commit a48d8c0233)
2026-01-23 13:57:32 -08:00
Seth Hillbrand 3b1d9e4c4a Router: Fix shove not honoring item-to-item custom design rules
When tracks have location-dependent clearances defined by custom rules
(insideCourtyard, intersectsArea conditions), the shove algorithm would
lock track endpoints during drag operations. This prevented tracks from
being reshoved when they moved from one clearance zone to another,
resulting in unresolvable DRC violations.

Add SHP_DONT_LOCK_ENDPOINTS policy flag to prevent endpoint locking
during drag operations. This allows the entire line to be reshoved when
clearance requirements change as segments move between different
clearance zones.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18550

(cherry picked from commit 1907580b82)
2026-01-23 12:39:57 -08:00
Seth Hillbrand c13b4e9757 Ensure aperture mask DRC hits all tracks
First, we need to ensure that when DRC says it will report errors for
all track segments that this includes the aperature errors.  Second, max
clearance needs to include aperature clearance.  If you set that higher
than your standard clearance, the RTree might not catch elements that
don't have their own aperture clearance (like teardrops that inherit
from pads)
2026-01-23 12:03:55 -08:00
Seth Hillbrand 0d2f50e38d Ensure 3d model plugins respect the flags
KICAD_RUN_FROM_BUILD_DIR should prevent ABI-incompatible plugins from
being loaded
2026-01-23 10:49:09 -08:00
Seth Hillbrand d12e9f2046 Add missing sanity check for diff pair
We did this to single tracks back in a07c4921a8 but forgot diff pairs

(cherry picked from commit e723734038)
2026-01-20 10:11:45 -08:00
Seth Hillbrand 3ba9119137 Sanity checks in design settings
(cherry picked from commit a07c4921a8)
2026-01-20 10:09:37 -08:00
Seth Hillbrand 3ade986e8d Altium Importer: Fix library cache assertion and improve root sheet handling
Fixed assertion failure in ensureLoadedLibrary() where m_timestamps and
m_libCache could become out of sync if an exception was thrown during
library parsing. Both maps are now properly cleaned up on error.

When importing Altium projects with a single top-level sheet, that sheet
now becomes the root instead of creating an unnecessary dummy root. Projects
with multiple top-level sheets continue to use a dummy root container as before.

This simplifies the schematic hierarchy for single-sheet projects and makes
them more consistent with how KiCad normally structures schematics.
2026-01-19 14:24:03 -08:00
Seth Hillbrand 8357261519 Altium Schematic Import: Fix duplicate sheet creation in hierarchical projects
When importing Altium projects, sheets were sometimes imported as both top-level
sheets and hierarchical subsheets. This happened because the project file lists
sheets in arbitrary order. If a parent sheet was processed before its children,
the children would be loaded as subsheets during hierarchy descent. Later, when
those same files appeared in the project file, duplicate sheets were created.

The importer now checks whether a file has already been loaded as a subsheet
before creating a new top-level sheet entry. The check includes a case-insensitive
fallback search since Altium uses inconsistent casing in its .SchDoc extension.

Sheet filenames were also being set to the original Altium paths instead of
KiCad project-relative paths. This caused path mismatches in the hierarchy
search and left references to non-existent Altium paths in the saved schematic.
Filenames now use the KiCad project directory with the .kicad_sch extension.

Hierarchical labels on top-level sheets are converted to global labels during
import since top-level sheets have no parent sheet to connect them to.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21909

(cherry picked from commit f00dc1befd)
2026-01-19 14:04:21 -08:00
Jeff Young 9e0d6091f5 Honour overwrite flag.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22665

(cherry picked from commit 02b49d2f3b)
2026-01-19 14:26:10 +00:00
Jeff Young a1c0892a96 Formatting.
(cherry picked from commit bd06f734a2)
2026-01-19 14:23:29 +00:00
Wayne Stambaugh a6c3d7900c Do not clip progress dialog message.
The progress dialog is initialized with an empty message string.  This
causes all subsequent message to be nearly completely clipped because the
initial dialog layout is done with the empty string.

This is fixed by laying out the dialog in the derived object dtor.
2026-01-18 07:53:50 -05:00
Sven Pauli 37a073698c Fix memory leak in PNS/tuning tool.
(cherry picked from commit 61d893694c)
2026-01-18 07:53:50 -05:00
Jeff Young cef1f69200 Allow cancel from Route Selected operations.
ADDED: a new "Cancel Current Item" to move to the next
item.  "Cancel" goes back to cancelling the entire op.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22729

(cherry picked from commit 62c8ee9793)
2026-01-18 12:27:43 +00:00
Jeff Young f30931733f Uninitialized variable safety.
(cherry picked from commit 83b4f19844)
2026-01-18 12:27:43 +00:00
Alex Shvartzkop 9b61821505 router: improve shove when dragging track ends in some cases
Try both cw and ccw direction and pick the shortest in shoveLineToHullSet

See https://gitlab.com/kicad/code/kicad/-/issues/22749
2026-01-17 18:52:03 +03:00
Alex Shvartzkop 52788676f7 Update translations 2026-01-16 18:17:29 +03:00
CloverGit 2ff7504587 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.9% (10093 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2026-01-16 15:10:32 +01:00
CloverGit e097f43600 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.9% (10093 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2026-01-16 15:10:32 +01:00
Ivan Chuba 2b7859de10 Translated using Weblate (Estonian)
Currently translated at 3.7% (375 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/et/
2026-01-16 15:10:32 +01:00
Sárkány Lőrinc 77ad45eb28 Translated using Weblate (Hungarian)
Currently translated at 53.2% (5380 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2026-01-16 15:10:32 +01:00
CloverGit 99c0fcdb45 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (10090 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2026-01-16 15:10:32 +01:00
Sárkány Lőrinc 1bef7decc6 Translated using Weblate (Hungarian)
Currently translated at 53.1% (5368 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2026-01-16 15:10:32 +01:00
Sárkány Lőrinc bab3d326fe Translated using Weblate (Hungarian)
Currently translated at 53.1% (5366 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2026-01-16 15:10:31 +01:00
Sárkány Lőrinc d3ea4fba4d Translated using Weblate (Hungarian)
Currently translated at 52.6% (5324 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2026-01-16 15:10:31 +01:00
2tama3 d1b69f4e64 Translated using Weblate (Japanese)
Currently translated at 100.0% (10103 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2026-01-16 15:10:31 +01:00
Herman van der Vaart 2d3d71cef9 Translated using Weblate (Dutch)
Currently translated at 90.3% (9124 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/nl/
2026-01-16 15:10:31 +01:00
Sárkány Lőrinc a4bcba25f5 Translated using Weblate (Hungarian)
Currently translated at 52.3% (5293 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2026-01-16 15:10:31 +01:00
Marco Ciampa 7ad3e8b4c3 Translated using Weblate (Italian)
Currently translated at 99.4% (10044 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2026-01-16 15:10:31 +01:00
Sárkány Lőrinc 3f1020fe52 Translated using Weblate (Hungarian)
Currently translated at 52.0% (5259 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2026-01-16 15:10:31 +01:00
Alex Shvartzkop 0dc3ad45cd router: fix getting stuck when routing right next to other tracks in Walkaround mode.
The walkround algorithm fails if the path points are inside the padded hull,
so remove the extra hull clearance padding.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20117
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21813
2026-01-16 16:29:00 +03:00
Seth Hillbrand 16bde88f7d Fix crash in table manipulation
When undoing an align operation on cells, we had no columns (cells
only), so we ended up with a divide by zero

We shouldn't be aligning cells outside of a table, so this disables the
action and provides a guardrail for the divide by zero

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22704
2026-01-14 14:03:36 -08:00
Jeff Young 8a840b28f5 Use the correct preferences.
The fooptrint viewer has its own WIDNOW_SETTINGS.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22709

(cherry picked from commit d40dced428)
2026-01-14 15:22:41 +00:00
Jeff Young e5cf42882e Fix Interactive Offset Tool.
The final offset is supposed to be typed into
the dialog.  What comes up in the dialog to
start is the NOP offset.

This also means the on-canvaw hint arrow needs
to point the other way.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22692

(cherry picked from commit faa0875d3a)
2026-01-14 15:17:05 +00:00
Alex Shvartzkop ddac9c500b Support WRL substitutions in STEP export when using embedded models. 2026-01-13 15:07:19 +05:00
Wayne Stambaugh d3e05c9147 Prevent assertion when setting status bar progress indicator above range.
(cherry picked from commit 008abdb187)
2026-01-12 15:26:40 -05:00
Alex Shvartzkop de10e02759 Embed STEP models along with WRL(VRML) in "Collect And Embed 3D Models".
STEP models are needed for STEP export, but the KiCad libraries specify .wrl models.
2026-01-13 00:59:48 +05:00
Alex Shvartzkop 6cfe5df7c0 Fix crash when CallAfter is called while destructing thread pool on exit.
PROJECT_TREE_PANE is already destructed at that point.
2026-01-13 00:56:54 +05:00
Alex Shvartzkop 6c7ace5eba Support VRML(WRL) mesh data for STL/PLY export.
master commit: afd2405230
2026-01-13 00:28:50 +05:00
Alex Shvartzkop 0fdbc5ea48 Add "Collect And Embed 3D Models" to Tools menu. 2026-01-12 15:17:41 +05:00
Seth Hillbrand 20b7d49c81 ADDED: Action to embed all 3d models referenced
Moves through the footprints and replaces external references with
internal embedded files

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20847
2026-01-12 15:17:41 +05:00
Seth Hillbrand f6fb40f110 Cache netclass clearances
Importing Altium boards can generate hundreds of netclasses.  Our O(N)
search was choking on the overload
2026-01-09 16:22:03 -08:00
Seth Hillbrand 9455c86a5e Fix broken cherry-pick 2026-01-09 13:47:20 -08:00
Mark Roszko bb02206e8d Update pad layers on footprint swap dialog, centralize that function from the pcb parser
(cherry picked from commit d6bea496f4)
2026-01-08 12:24:15 -08:00
Seth Hillbrand 0b9ff5e2bc Pre-initialize the OwnClearance cache
Thread this so that massive boards can set up their cache quickly
2026-01-07 17:53:10 -08:00
Seth Hillbrand 13c4922270 Add clearance cache to improve clearance outline rendering performance
When displaying pad and track clearance outlines, GetOwnClearance()
was called repeatedly during rendering, re-evaluating DRC rules on
every paint refresh. With complex DRC rules, this caused significant
slowdown.

Add a lazy-evaluated cache in DRC_ENGINE keyed by (UUID, layer) that
stores clearance values. The cache is invalidated when DRC rules
change (in InitEngine) or properties change that could affect clearance
(net, layer, pad type)
2026-01-07 17:10:15 -08:00
dsa-t 23c5e101b7 Use LIB_TREE_RENDERER GTK workaround from wx 3.2.7
See https://github.com/wxWidgets/wxWidgets/issues/24227


(cherry picked from commit ac281c79d2)

Co-authored-by: Alex Shvartzkop <dudesuchamazing@gmail.com>
2026-01-05 11:28:12 +03:00
jean-pierre charras 004f91bf05 DIALOG_LINE_PROPERTIES: do not commit a change for lines during creation.
When creating lines, one can edit them. But a commit must not be created, because
it is useless (no previous item) and it can create dangling pointers if the line
creation is aborted.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22642

(cherry picked from commit 0ac47819f1)
2026-01-04 18:35:20 +01:00
jean-pierre charras 26a300688e Fix link issue on mingw/msys2. (imported from master branch)
Previously fixed in master branch
2026-01-04 18:34:49 +01:00
Seth Hillbrand 1a03a9a244 Handle invalid SPICE library files gracefully
When a binary file (like an OrCAD .olb) is selected instead of a valid SPICE library,
catch the std::out_of_range exception to prevent crashes and report an error.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22189

(cherry picked from commit fe2fe400fd)
2026-01-04 08:25:26 -08:00
Wayne Stambaugh 0299edac4d Properly lay out info bar buttons.
For some reason This fix does not work in the 9.0 branch.  It is being
cherry picked to keep it in sync with the master branch.

(cherry picked from commit 4eb1c8d66e)
2026-01-04 10:54:32 -05:00
Seth Hillbrand d2cd5ecdd1 Don't clear references unconditionally
If we are clearing all references in the schematic, then we can clear
our references, otherwise, just eliminate the ones for the proper
sheets.   We don't want to clear the references on Sheet A when we copy
and paste it to Sheet B.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20173

(cherry picked from commit 8d37b3787d)
2026-01-02 17:15:12 -08:00
Seth Hillbrand cd8ecbcc6d Ensure derived symbols can also hold embedded files
Derived symbols should have access to both the embedded files from the
parent as well as their own embedded files.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22356

(cherry picked from commit adc6e8f06a)
2026-01-02 17:15:12 -08:00
Mark Roszko e0ea53ee1f Move code block to updated CompareGeometry, forgot to in previous commit
(cherry picked from commit e64a0d982a)

Co-authored-by: Mark Roszko <mark.roszko@gmail.com>
2026-01-03 00:33:01 +00:00
Mark Roszko 24a139843a Increase DRC parity epsilon to tolerate rounding errors at the nm scale
It seems the last digit on our scale tends to have some error shift depending on order of operations performed on a component. Reproducing the position and orientation for the comparison alone may not generate the same error in the virtual comparison part and we would get false DRC error.

Move the epsilon to the 10nm as that seems to be empirically safe
2026-01-02 11:53:46 -05:00
Jeff Young c0b1254e20 Special-case firing of SelectedItemsModified in FPEditor.
(The footprint itself is never selected, but we still
use this event for the properties manager, etc.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22608

(cherry picked from commit 3dd42c0b35)
2026-01-02 12:04:11 +00:00
Jeff Young 44030c622a Give 2-pin SUBCKT's shortened signal names for current.
ngspice only recognises the long format for
items with more than 2 nodes.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21994

(cherry picked from commit b76221958b)
2026-01-02 12:04:11 +00:00
Jeff Young 7e43c6acba Clean up itemsToPlace on ESC.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22358

(cherry picked from commit cad3eac481)
2026-01-02 12:04:11 +00:00
Jeff Young fcc91b1407 Don't rotate around centre when there's a user-defined reference point.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21843

(cherry picked from commit 78b36796e8)
2026-01-02 12:04:11 +00:00
Jeff Young aa65b4266c More flexible (and correct) version of CopySexprFile(),
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21738

(cherry picked from commit 666e7f5bc5)
2026-01-02 12:04:11 +00:00
Jeff Young 08fd4630e9 Update sheetfiles and instance projects in Save As.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21738

(cherry picked from commit da1a3a944e)
2026-01-02 12:04:11 +00:00
Mark Roszko f4aa3d663b Fix lib parity drc for polys, add cyclical path match rather than exact point order match 2026-01-01 23:05:58 -05:00
Seth Hillbrand f28cf4e753 Block ERC error for stacked NC pins
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22409

(cherry picked from commit 3cbb0685d1)
2026-01-01 15:36:59 -08:00
Seth Hillbrand 4a53f97e27 Ensure beziers are shown
If we can't find an inflection, draw the straight line

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22459

(cherry picked from commit 8e95894936)
2026-01-01 15:16:03 -08:00
akhilles 84df82f9a7 IPC-2581: Export description to BomItem description attribute
The IPC-2581C spec defines an optional "description" attribute for
BomItem elements. Export the footprint's library description to this
field to provide human-readable component information in the BOM.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22257

(cherry picked from commit 41aeeacaaf)
2026-01-01 15:15:30 -08:00
Seth Hillbrand 9efd12092f Remove redundant ExchangeItem call
This was originally here to solve
https://gitlab.com/kicad/code/kicad/-/issues/17851 However, since then,
we have changed how pins are handled in UpdatePins(), leading to the
exchanged item having dangling pointers.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21995

(cherry picked from commit 3e63d5c5a6)
2026-01-01 14:17:12 -08:00
Seth Hillbrand 9389449246 Avoid printing superfluous bus messages
If we don't have a bus selected, we don't need the bus-relevant data and
the net might be separate

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18350

(cherry picked from commit 430c62d3ca)
2026-01-01 14:15:26 -08:00
Wayne Stambaugh e70208bd48 Begin version 9.0.8 development. 2026-01-01 13:00:08 -05:00
Wayne Stambaugh cc82296118 Tag stable version 9.0.7. 2026-01-01 12:54:29 -05:00
Alex Shvartzkop bce055fa21 Update translations 2026-01-01 20:31:21 +03:00
Sárkány Lőrinc 45471ecfc9 Translated using Weblate (Hungarian)
Currently translated at 51.6% (5219 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2026-01-01 15:49:57 +01:00
Marco Ciampa ca8633b3db Translated using Weblate (Italian)
Currently translated at 99.4% (10043 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2026-01-01 15:49:57 +01:00
2tama3 fbb70da3c0 Translated using Weblate (Japanese)
Currently translated at 100.0% (10103 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2026-01-01 15:49:57 +01:00
Marco Ciampa 8f8c937db5 Translated using Weblate (Italian)
Currently translated at 99.3% (10037 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2026-01-01 15:49:56 +01:00
Sárkány Lőrinc b62a67ceba Translated using Weblate (Hungarian)
Currently translated at 51.6% (5217 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2026-01-01 15:49:56 +01:00
2tama3 c0c25fb1d7 Translated using Weblate (Japanese)
Currently translated at 100.0% (10103 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2026-01-01 15:49:56 +01:00
Sárkány Lőrinc 2b3d3bc41b Translated using Weblate (Hungarian)
Currently translated at 51.4% (5200 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2026-01-01 15:49:56 +01:00
Sárkány Lőrinc 60d64c8c1b Translated using Weblate (Hungarian)
Currently translated at 51.3% (5192 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2026-01-01 15:49:56 +01:00
Sárkány Lőrinc b5a54e8822 Translated using Weblate (Hungarian)
Currently translated at 51.1% (5172 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2026-01-01 15:49:56 +01:00
Sárkány Lőrinc 962aadb859 Translated using Weblate (Hungarian)
Currently translated at 51.1% (5170 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2026-01-01 15:49:56 +01:00
Sárkány Lőrinc e2a5b8ee74 Translated using Weblate (Hungarian)
Currently translated at 49.3% (4988 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2026-01-01 15:49:56 +01:00
2tama3 a3f7e5339b Translated using Weblate (Japanese)
Currently translated at 100.0% (10103 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2026-01-01 15:49:56 +01:00
Henrik Kauhanen c5964c59ce Translated using Weblate (Swedish)
Currently translated at 99.9% (10097 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2026-01-01 15:49:55 +01:00
Sárkány Lőrinc dcff6e0547 Translated using Weblate (Hungarian)
Currently translated at 48.0% (4852 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2026-01-01 15:49:55 +01:00
Wayne Stambaugh 9f6e81e9cc Tag stable version 9.0.7 release candidate 2. 2025-12-23 15:40:18 -05:00
Alex Shvartzkop 17c867e92f Update translations 2025-12-23 05:02:55 +03:00
Sárkány Lőrinc 938dec0d6e Translated using Weblate (Hungarian)
Currently translated at 47.8% (4835 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-12-23 03:02:04 +01:00
CloverGit 0107ac0532 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (10090 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-12-23 03:02:04 +01:00
soldado-do-wolfenstein d4910a66dc Translated using Weblate (Portuguese (Brazil))
Currently translated at 97.6% (9867 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt_BR/
2025-12-23 03:02:04 +01:00
Sárkány Lőrinc 89ebfa63c9 Translated using Weblate (Hungarian)
Currently translated at 47.7% (4825 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-12-23 03:02:04 +01:00
Sárkány Lőrinc 451642fa62 Translated using Weblate (Hungarian)
Currently translated at 46.6% (4713 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-12-23 03:02:04 +01:00
CharlieYu 8f52e2b685 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.9% (10093 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-12-23 03:02:03 +01:00
Temuri Doghonadze 3597d76c40 Translated using Weblate (Georgian)
Currently translated at 32.8% (3319 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ka/
2025-12-23 03:02:03 +01:00
Sárkány Lőrinc 6c092d78a3 Translated using Weblate (Hungarian)
Currently translated at 45.4% (4594 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-12-23 03:02:03 +01:00
Marco Ciampa 95bbcc40d4 Translated using Weblate (Italian)
Currently translated at 99.3% (10036 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-12-23 03:02:03 +01:00
Sárkány Lőrinc 2ebe4cc9e2 Translated using Weblate (Hungarian)
Currently translated at 45.4% (4590 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-12-23 03:02:03 +01:00
Sárkány Lőrinc 2f52c4901a Translated using Weblate (Hungarian)
Currently translated at 45.3% (4579 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-12-23 03:02:03 +01:00
Sárkány Lőrinc 689fb262c5 Translated using Weblate (Hungarian)
Currently translated at 45.2% (4568 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-12-23 03:02:03 +01:00
Sárkány Lőrinc 16b0ec206a Translated using Weblate (Hungarian)
Currently translated at 44.8% (4529 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-12-23 03:02:03 +01:00
Pferd O. 890735dbe1 Translated using Weblate (German)
Currently translated at 100.0% (10103 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-12-23 03:02:03 +01:00
Jon Evans 3cfb633ea4 Avoid crash when project tree files disappear
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22568
2025-12-22 15:55:25 -05:00
Alex Shvartzkop 92274f1a5d Fix assert failure when opening simulator frame
Fixes KICAD-XS2
2025-12-20 19:01:08 +03:00
Alex Shvartzkop 7d03b6bb8c Fix assert failures when opening non-ASCII files in gerbview.
Fixes KICAD-KEV
2025-12-20 03:19:28 +03:00
Alex Shvartzkop 9ae5759e24 Specctra DSN: fix assert failures when exporting footprint arcs.
Fixes KICAD-PG4
2025-12-20 02:04:48 +03:00
Alex Shvartzkop 11467a7f4b Specctra DSN export: add last rectangle edge. 2025-12-20 02:04:48 +03:00
Wayne Stambaugh f8f051275f Fix Windows build error. 2025-12-19 16:46:04 -05:00
Wayne Stambaugh a167322440 Do not assume sheet path is valid when getting sheet page number.
Fixes KICAD-C4Q
2025-12-19 15:41:34 -05:00
Jeff Young 2b1747f80f Careful of unspecified start reference.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22552

(cherry picked from commit 1aed1d5f2f)
2025-12-19 13:21:02 +00:00
jean-pierre charras 26b350b51a symbol editor: import SVG: fix incorrect import of degenerated splines
Degenerated splines are in fact segments. So they are imported as 2 points polylines.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22556

(cherry picked from commit 1b17b57be0)
2025-12-19 15:47:06 +03:00
Jeff Young 64821c793f Don't test clearance or shorting for same-net items; only holes.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22532

(cherry picked from commit 57c9866094)
2025-12-16 14:11:10 +00:00
Alex Shvartzkop 50ddfefbbb Fix potential crash when multichannel tool can't find any rule areas.
fbp dialog changes:
- Don't add the first grid row,
- Resize the grid with the dialog window,
- Improve min sizes.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22535
2025-12-16 16:27:56 +03:00
jean-pierre charras 49ee909d68 DIALOG_LABEL_PROPERTIES: ensure multiple placed labels have a unique ID
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22529

(cherry picked from commit e20671ea73)
2025-12-15 10:03:09 +01:00
Wayne Stambaugh 85ebd7c371 Tag stable version 9.0.7 release candidate 1. 2025-12-14 09:30:40 -05:00
jean-pierre charras 12d1f5bdd9 SVG_PLOTTER: fix incorrect bitmaps position is some cases
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22326

Cherry picked by hand.
2025-12-14 14:10:18 +01:00
Alex Shvartzkop 5071295d34 Update translations 2025-12-13 20:08:29 +03:00
CloverGit 5885b364a3 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.7% (10082 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-12-13 18:07:50 +01:00
Sárkány Lőrinc 1a04549321 Translated using Weblate (Hungarian)
Currently translated at 44.1% (4464 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-12-13 18:07:50 +01:00
Sárkány Lőrinc b9819bc8ae Translated using Weblate (Hungarian)
Currently translated at 44.1% (4460 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-12-13 18:07:50 +01:00
2tama3 7cd534c614 Translated using Weblate (Japanese)
Currently translated at 100.0% (10103 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-12-13 18:07:50 +01:00
Pferd O. f652fbcfcf Translated using Weblate (German)
Currently translated at 99.9% (10098 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-12-13 18:07:50 +01:00
Максим Горпиніч 6085182574 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (10103 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2025-12-13 18:07:50 +01:00
Henrik Kauhanen 3aa22cd4e4 Translated using Weblate (Swedish)
Currently translated at 99.9% (10095 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-12-13 18:07:49 +01:00
Marco Ciampa 7e33fc18d3 Translated using Weblate (Italian)
Currently translated at 99.3% (10034 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-12-13 18:07:49 +01:00
dsa-t 0503b22617 Translated using Weblate (Russian)
Currently translated at 100.0% (10103 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-12-13 18:07:49 +01:00
2tama3 e2562aae5d Translated using Weblate (Japanese)
Currently translated at 100.0% (10103 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-12-13 18:07:49 +01:00
Henrik Kauhanen b1b28786af Translated using Weblate (Swedish)
Currently translated at 99.9% (10094 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-12-13 18:07:49 +01:00
Sárkány Lőrinc 355afb9845 Translated using Weblate (Hungarian)
Currently translated at 44.1% (4459 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-12-13 18:07:49 +01:00
Vic 14d2ebc607 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 98.1% (9913 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2025-12-13 18:07:49 +01:00
Максим Горпиніч c48ace68a0 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (10103 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2025-12-13 18:07:48 +01:00
Ivan Chuba c82caa6dc1 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (10103 of 10103 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2025-12-13 18:07:48 +01:00
Alex Shvartzkop 50309f0033 Revert "Lock harfbuzz to 11.2.0 to avoid 11.3.3+ regressions/features."
This reverts commit 481e78a29f.
2025-12-13 02:28:10 +03:00
Alex Shvartzkop a588a63778 Remove hb_ft_font_set_funcs call in outline fonts.
It doesn't appear to do anything useful since we already use the ft vtable,
and calling hb_ft_font_set_funcs breaks x_advance values in harfbuzz 11.3.0+

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22524
2025-12-13 02:27:12 +03:00
Alex Shvartzkop 481e78a29f Lock harfbuzz to 11.2.0 to avoid 11.3.3+ regressions/features.
pos.x_advance is just too small for bold Bahnschrift font when using harfbuzz 11.3.3+

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22524
2025-12-12 22:28:38 +03:00
Alex Shvartzkop 5e4633545b Clear tool manager model to avoid crash when closing PCB editor. 2025-12-12 21:29:15 +03:00
Mark Roszko 447be71b65 Fix new msvc build warnings about enums
(cherry picked from commit 0e46f99fdf)
2025-12-12 21:17:37 +03:00
Mike Williams a54ac23bbb snapping: don't snap to invisible footprint anchors 2025-12-12 07:59:23 -05:00
Mike Williams a017fb265f footprint anchors: only show them for footprints on visible layers 2025-12-12 07:59:23 -05:00
Mike Williams 65e486499e view switcher: default to advance selection
This make ctrl-tab/shift-tab work like other OS and KiCad switcher
paradigms.
2025-12-12 07:59:23 -05:00
Mark Roszko ef2f445b14 Don't EscapeHTML on the netname that is stored internally
(cherry picked from commit 602eeb01e3)

Co-authored-by: Mark Roszko <mark.roszko@gmail.com>
2025-12-12 12:50:28 +00:00
dsa-t 866d92e1f6 Altium PCB import: don't overwrite m_layermap.
m_layermap contains copper layers from stackup info at this point.
We don't want to clear it, especially that most copper layers don't
appear in the layer mapping dialog.


(cherry picked from commit 744406cda0)

Co-authored-by: Alex Shvartzkop <dudesuchamazing@gmail.com>
2025-12-11 21:45:41 +03:00
Seth Hillbrand 3003c0c509 Clear construction manager with grid helper
Construction manager and snap manager keep raw pointers to board items,
so we need to clear them when switching canvases
2025-12-10 08:31:19 -08:00
Alex Shvartzkop 9b3e14546e Update translations 2025-12-10 10:04:59 +03:00
CloverGit 1a3bded55e Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (10083 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-12-10 07:59:28 +01:00
Sárkány Lőrinc bf9d6e2689 Translated using Weblate (Hungarian)
Currently translated at 44.1% (4454 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-12-10 07:59:28 +01:00
Sárkány Lőrinc 24529ef5df Translated using Weblate (Hungarian)
Currently translated at 43.9% (4441 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-12-10 07:59:28 +01:00
Marco Ciampa 4bf59e4b0f Translated using Weblate (Italian)
Currently translated at 99.3% (10033 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-12-10 07:59:28 +01:00
Seth Hillbrand 2c35d43069 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 97.9% (9890 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2025-12-10 07:59:28 +01:00
Sárkány Lőrinc a3a00a4932 Translated using Weblate (Hungarian)
Currently translated at 43.7% (4415 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-12-10 07:59:27 +01:00
Sárkány Lőrinc 2fd4406f04 Translated using Weblate (Hungarian)
Currently translated at 43.4% (4386 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-12-10 07:59:27 +01:00
Temuri Doghonadze d4c262cc40 Translated using Weblate (Georgian)
Currently translated at 32.8% (3318 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ka/
2025-12-10 07:59:27 +01:00
Sárkány Lőrinc 1767edfd87 Translated using Weblate (Hungarian)
Currently translated at 42.7% (4318 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-12-10 07:59:27 +01:00
CloverGit 704bfa5391 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.9% (10087 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-12-10 07:59:27 +01:00
Sárkány Lőrinc ed8a699670 Translated using Weblate (Hungarian)
Currently translated at 42.3% (4274 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-12-10 07:59:27 +01:00
Temuri Doghonadze 49ca0e5452 Translated using Weblate (Georgian)
Currently translated at 32.7% (3307 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ka/
2025-12-10 07:59:27 +01:00
Sárkány Lőrinc 844a1b5eb9 Translated using Weblate (Hungarian)
Currently translated at 41.1% (4154 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-12-10 07:59:27 +01:00
CloverGit ff6c1852b4 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (10084 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-12-10 07:59:27 +01:00
Temuri Doghonadze 6d6355c67d Translated using Weblate (Georgian)
Currently translated at 32.5% (3285 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ka/
2025-12-10 07:59:26 +01:00
Sárkány Lőrinc 3321da2a5d Translated using Weblate (Hungarian)
Currently translated at 40.3% (4073 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-12-10 07:59:26 +01:00
Marco Ciampa 74963bd16c Translated using Weblate (Italian)
Currently translated at 99.3% (10032 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-12-10 07:59:26 +01:00
Temuri Doghonadze 03c67a8033 Translated using Weblate (Georgian)
Currently translated at 32.1% (3250 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ka/
2025-12-10 07:59:26 +01:00
Temuri Doghonadze 778d8846d6 Translated using Weblate (Georgian)
Currently translated at 30.9% (3125 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ka/
2025-12-10 07:59:26 +01:00
Marco Ciampa b5a763fe69 Translated using Weblate (Italian)
Currently translated at 99.3% (10030 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-12-10 07:59:26 +01:00
CloverGit af16d38b46 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (10081 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-12-10 07:59:26 +01:00
Marco Ciampa d089ecbc02 Translated using Weblate (Italian)
Currently translated at 99.2% (10026 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-12-10 07:59:26 +01:00
Temuri Doghonadze 06b6b51ed8 Translated using Weblate (Georgian)
Currently translated at 29.7% (3002 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ka/
2025-12-10 07:59:26 +01:00
CloverGit cbaeb2235e Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (10079 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-12-10 07:59:25 +01:00
ZbeeGin 833b5fc6e2 Translated using Weblate (Polish)
Currently translated at 100.0% (10097 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-12-10 07:59:25 +01:00
Krzysztof Kawa 22efda6367 Translated using Weblate (Polish)
Currently translated at 100.0% (10097 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-12-10 07:59:24 +01:00
Marco Ciampa 964947bc4f Translated using Weblate (Italian)
Currently translated at 99.2% (10017 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-12-10 07:59:24 +01:00
Temuri Doghonadze f032186e43 Translated using Weblate (Georgian)
Currently translated at 28.7% (2904 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ka/
2025-12-10 07:59:24 +01:00
Jan Straka 91f6033982 Translated using Weblate (Czech)
Currently translated at 77.9% (7872 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2025-12-10 07:59:24 +01:00
CloverGit fa1bb05cfa Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (10079 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-12-10 07:59:24 +01:00
Temuri Doghonadze 9ac570c622 Translated using Weblate (Georgian)
Currently translated at 28.2% (2856 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ka/
2025-12-10 07:59:24 +01:00
CloverGit 1e795bee18 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (10079 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-12-10 07:59:24 +01:00
Marco Ciampa e9a1792d45 Translated using Weblate (Italian)
Currently translated at 99.1% (10013 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-12-10 07:59:23 +01:00
CloverGit c2593c3547 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (10079 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-12-10 07:59:23 +01:00
2tama3 c59c1701bb Translated using Weblate (Japanese)
Currently translated at 100.0% (10097 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-12-10 07:59:23 +01:00
CloverGit 534acc718d Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (10079 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-12-10 07:59:23 +01:00
Marco Ciampa 7f6557e76a Translated using Weblate (Italian)
Currently translated at 99.1% (10013 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-12-10 07:59:23 +01:00
Henrik Kauhanen b6f21ea2ae Translated using Weblate (Swedish)
Currently translated at 99.9% (10091 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-12-10 07:59:23 +01:00
Marco Ciampa e906e5e98c Translated using Weblate (Italian)
Currently translated at 99.0% (10002 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-12-10 07:59:23 +01:00
CloverGit c5a02c908f Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (10079 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-12-10 07:59:22 +01:00
Marco Ciampa 9edf3e4005 Translated using Weblate (Italian)
Currently translated at 99.0% (10001 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-12-10 07:59:22 +01:00
Pferd O. 55a8a075e6 Translated using Weblate (German)
Currently translated at 100.0% (10097 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-12-10 07:59:22 +01:00
김랑기 1f95d9bc1c Translated using Weblate (Korean)
Currently translated at 99.7% (10075 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ko/
2025-12-10 07:59:22 +01:00
Marco Ciampa 97971957ce Translated using Weblate (Italian)
Currently translated at 98.7% (9972 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-12-10 07:59:22 +01:00
김랑기 662f4c1e89 Translated using Weblate (Korean)
Currently translated at 99.3% (10033 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ko/
2025-12-10 07:59:22 +01:00
Temuri Doghonadze 49a03c7c01 Translated using Weblate (Georgian)
Currently translated at 28.0% (2836 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ka/
2025-12-10 07:59:22 +01:00
김랑기 ed6319fae0 Translated using Weblate (Korean)
Currently translated at 99.1% (10016 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ko/
2025-12-10 07:59:22 +01:00
2tama3 10f5d88b7a Translated using Weblate (Japanese)
Currently translated at 100.0% (10097 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-12-10 07:59:21 +01:00
Ivan Chuba 8937681052 Translated using Weblate (Estonian)
Currently translated at 3.5% (357 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/et/
2025-12-10 07:59:21 +01:00
Pferd O. a0030b4dd3 Translated using Weblate (German)
Currently translated at 100.0% (10097 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-12-10 07:59:20 +01:00
Vic 1fb6254d62 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 97.9% (9890 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2025-12-10 07:59:19 +01:00
CloverGit 6f0bafa7a0 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (10080 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-12-10 07:59:19 +01:00
Максим Горпиніч c7e7d3aac8 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (10097 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2025-12-10 07:59:19 +01:00
2tama3 312dd06216 Translated using Weblate (Japanese)
Currently translated at 100.0% (10097 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-12-10 07:59:19 +01:00
Marco Ciampa 803ce01795 Translated using Weblate (Italian)
Currently translated at 98.7% (9969 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-12-10 07:59:18 +01:00
Pferd O. d9cc8ee071 Translated using Weblate (German)
Currently translated at 99.9% (10096 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-12-10 07:59:18 +01:00
Jeff Young 27df4775d0 Kill any running tools before switching the footprint. 2025-12-09 23:51:48 +00:00
Jeff Young 3071bbd201 Don't short-cicuit Remove() or RemoveAll().
Also, make sure PCB_GRID_HELPER installs itself
as a board listener.  (Otherwise its
OnBoardItemRemoved() handler will never get
called.)

(cherry picked from commit 88e87bab3e)
2025-12-09 18:00:37 +00:00
Jeff Young 6296360047 Clear snap items when their parent footprint are removed from board.
(cherry picked from commit 75deaaa467)
2025-12-09 18:00:37 +00:00
Seth Hillbrand a23c267fb3 Avoid calling grid helper when changing tool
When changing tools, the canvas may reference objects that are invalid,
so avoid using the grid helper here.  We don't need the cursor pos at
this point anyway

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21929
2025-12-08 15:31:39 -08:00
Jeff Young 85f483c36b Fix accidentally broken text mirroring direction.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22479

(cherry picked from commit 39cf28d5fd)
2025-12-08 17:20:10 +00:00
Jeff Young e99964d652 Fix indenting. 2025-12-08 16:38:42 +00:00
Jeff Young a68a69893c Regenerate changes list when checkboxes change.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22467

(cherry picked from commit 51494f3853)
2025-12-08 16:38:42 +00:00
Jeff Young 3f528f89ef Force output of pad offset when other layers of padstack differ.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22464

(cherry picked from commit 8133e53fbf)
2025-12-08 16:38:42 +00:00
Mark Roszko 1a69f21462 Reduce tiny fp errors that can be introduced when updating footprints
Moving by the cursor position (double) and then back to the integer coordinate position sometimes added tiny tiny tiny shifts in the coordinate.


(cherry picked from commit dad49d5dba)

Co-authored-by: Mark Roszko <mark.roszko@gmail.com>
2025-12-06 20:41:32 +00:00
Mark Roszko 47363766c7 Fix rule areas not accounting for inner layer expansion in drc parity check
Also fix up the pad stack check to account for external layer presence more properly
2025-12-06 14:12:14 -05:00
Mark Roszko 1d694eba5d Allow footprints to have additional layers on their pads in boards instead of flagging constant library mismatches
Board layer count settings increase the number of layers on PTH pads when the board is loaded.
This causes false library mismatch DRCs with little explanation of something that is automatic and logical behavior.
2025-12-06 11:26:14 -05:00
Wayne Stambaugh dbeaeae919 Reset tools before loading new footprint in footprint chooser.
This may not actually fix this issue.  It is probably safer to reset all
tools before changing the footprint view just in case an unexpected event
occurs that causes a tool to attempt to access an object no longer valid
in the view.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21929
2025-12-05 08:12:19 -05:00
Seth Hillbrand 4f97ce15cc Fix broken cherry-pick 2025-12-03 15:43:36 -08:00
Seth Hillbrand d27552a282 Ensure closed polygons for filling
PDF output needs closed polygons to fill objects, so ensure that we
properly close before filling

(cherry picked from commit ae80e30467)
2025-12-03 11:32:11 -08:00
Wayne Stambaugh 0be18638f8 Use correct signature of VIA::Width() to prevent crash.
- Update VIA::GetWidth() to raise an assertion and always return a valid albeit
  most likely incorrect width.

- Fix interactive via placement tool to call the correct VIA::GetWidth() which
  prevents the crash/assertion.  This uses the layer of the shape where the via
  is being placed.

Fixes KICAD-ZY6
2025-12-01 15:35:38 -05:00
Jeff Young a697be4fbf Resolve text variables when resolving netclasses.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22413

(cherry picked from commit 36c603b6f0)
2025-12-01 17:35:49 +00:00
Mark Roszko ac6dcbe9ae Update vcpkg for wx test 2025-12-01 01:16:01 +00:00
Jeff Young d16f784412 Don't leave the dirty flag set after clearing properties.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22428
2025-11-30 14:38:01 +00:00
Jeff Young b12b88fd40 Don't try to open-code a SHAPE_POLY_SET::BooleanSubtract().
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17317

(cherry picked from commit 308134d025)
2025-11-30 14:38:01 +00:00
Bernhard Kirchen bd2152bb3d add DRC exclusion comment to JSON report
closes #22330.

(cherry picked from commit 80e148fb68)
2025-11-30 14:38:01 +00:00
Jeff Young 677750b64e Remove previous hack for dealing with ligatures.
It appears to be no longer needed, and messes some
things up.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22402

(cherry picked from commit 4bfed3f174)
2025-11-30 14:38:01 +00:00
Jeff Young d6ddeff443 Fix initial focus in Label Properties dialog.
(cherry picked from commit 84213dff2a)
2025-11-30 14:38:01 +00:00
Jeff Young 06e1e4c62c Drawing tools must police their own handling of paste.
Doing otherwise disables paste even when
the tool is idle.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22373

(cherry picked from commit b7c561b232)
2025-11-30 14:38:01 +00:00
Alex Shvartzkop aa6fb159b5 Warn about Controlled folder access on Windows
Controlled folder access blocks access to Documents folder which we use.
2025-11-29 19:38:17 +03:00
Mark Roszko 3ed9fbe423 Edit doxygen.yml
(cherry picked from commit bc73ecbddf)

Co-authored-by: Mark Roszko <mark.roszko@gmail.com>
2025-11-27 00:11:04 +00:00
Alex Shvartzkop 8b93d56c14 Hyperlynx export: swap arc start/end.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22178
2025-11-25 12:48:27 +03:00
Alex Shvartzkop 138f8af8ab Support Autodesk Fusion urn format for Eagle import.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22394
2025-11-25 09:55:30 +03:00
Mark Roszko 00b6f25031 Fix calculator min size and minor dead code nix
(cherry picked from commit e222aaeefd)

82bbecc9 pcb_calculator: remove dead code in PCB_CALCULATOR_FRAME::OnUpdateUi
d1de79b8 fixes https://gitlab.com/kicad/code/kicad/-/issues/22385

Co-authored-by: Jan Dorniak <jaskij@gmail.com>
2025-11-23 17:05:42 +00:00
Mark Roszko fdb333ca8b Add missing include 2025-11-22 18:54:21 +00:00
Mark Roszko 014a4d040c Handle Python multi-phase initialization support in swig-4.4.0
Signed-off-by: Mark Roszko <mark.roszko@gmail.com>


(cherry picked from commit c5a2b86379)

Co-authored-by: Raman Varabets <gitlab-20240601-da2ef10c@cyborgize.sg>
2025-11-22 18:15:30 +00:00
Jon Evans 5818b52a38 API: Ensure new footprints have unique child UUIDs
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21340
2025-11-22 11:28:37 -05:00
Jon Evans ea5ae7cc5d API: Fix serialization of footprint rule overrides; add missing allow_soldermask_bridges attribute
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21674
2025-11-22 09:59:03 -05:00
Jon Evans f230800365 Use active layer when pasting text from clipboard
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22370
2025-11-22 09:25:15 -05:00
Jon Evans 51ba93c680 Fix loading of shape offset and delta for complex padstacks
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21691
2025-11-22 09:21:23 -05:00
Alex Shvartzkop bddc4e5f89 gerbview: significantly improve performance when zip archive has extra ASCII files. 2025-11-22 15:27:24 +03:00
Jon Evans bdd98e801f API: Add schematic pin attributes to pads
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22360
2025-11-20 23:29:43 -05:00
Mark Roszko a7c69264ad Fix vcpkg baseline hash 2025-11-20 21:04:54 -05:00
Mark Roszko 9c16efcb83 Bump vcpkg baseline 2025-11-20 20:53:55 -05:00
Mark Roszko 89155c488f Bump kicad-vcpkg for a wxwidgets fix (aui icon drawing speed) 2025-11-20 20:53:11 -05:00
Jon Evans 949be9a63a API: Preserve linked symbol properties in footprints
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21655
2025-11-20 19:57:27 -05:00
Alex Shvartzkop 0685039e0a EasyEDA/JLCEDA Pro V3: fix pin name/number import. 2025-11-21 02:05:09 +03:00
Alex Shvartzkop 5ab0ab2bdb EasyEDA Pro schematic import: improve text sizing. 2025-11-21 00:50:14 +03:00
Alex Shvartzkop 95f895b4a9 EasyEDA Pro schematic import: change Arial to default font
JLCEDA Pro V3 export to format version V1 specifies Arial
explicitly instead of null for default font,
and system's Arial usually doesn't have the Chinese charset.
2025-11-21 00:49:15 +03:00
Alex Shvartzkop 34a7f64821 EasyEDA Pro: allow picking "Global Net Name" from symbol.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19734
2025-11-21 00:19:28 +03:00
Alex Shvartzkop 95f1630bce Revert "Ignore visibility and style attrs in instance data."
This reverts commit 17158f21da.
2025-11-20 23:36:57 +03:00
jean-pierre charras 85494592d6 ZONE::GetMsgPanelInfo(): fix info displayed for rule areas
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22352

(cherry picked from commit 284348f032)
2025-11-20 17:28:06 +01:00
jean-pierre charras 4a5c64a036 Fix plot pad issue with solder paste layer when using a percentage for clearance.
For chamfered rectangle pads, when using a percentage to define a clearance for
solder paste shape from copper pad shape with different X and Y sizes, the
plotted solder paste shape was incorrect.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22306

(cherry picked from commit fa0fc59d82)
2025-11-20 14:34:26 +01:00
dsa-t 39e69ffdad Work around a bug in JLCEDA V1 format export where SMD pads specify zero-sized hole.
(cherry picked from commit 3e8a2fb7ea)

Co-authored-by: Alex Shvartzkop <dudesuchamazing@gmail.com>
2025-11-20 14:31:12 +03:00
Jeff Young 48d8c8d0b2 Hand cherry-pick of ea147ae68b. 2025-11-14 18:15:52 +00:00
Jeff Young 06f48b6c88 Refresh library tree when saving an editable copy.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22247

(cherry picked from commit 885bb34f66)
2025-11-13 12:35:18 +00:00
Magnus Lundmark 96868b2737 Add row or column to a table now respects formatting
(cherry picked from commit a6840a1370)
2025-11-10 14:10:44 +00:00
JamesJCode 4e4a2d1fa1 Implement hierarchical component classes
This ensures that hierarchical sheets inside a rule are with a
component class attached pass that component class down the
schematic hierarchy.

(cherry picked from commit 710a239c67)
2025-11-09 20:51:08 +00:00
Wayne Stambaugh 3c4f582352 Fix image rotation direction in schematic editor.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22254

(cherry picked from commit 2e278c10f8)
2025-11-06 16:36:13 -05:00
akhilles 7a513cb61a IPC-2581: Fix SlotCavity to use drill hole dimensions
The addSlotCavity function was using GetEffectiveShape() which returns
the copper pad geometry, not the drill hole geometry. This caused
slotted through-holes to export with incorrect dimensions in the ROUT
layer, resulting in zero annular ring when parsed by IPC-2581 compliant
tools.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22145
2025-11-06 14:04:25 -05:00
dsa-t 29863a3da1 Fix EasyEDA Pro v2.2 compatibility.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22239


(cherry picked from commit be8025b331)

Co-authored-by: Alex Shvartzkop <dudesuchamazing@gmail.com>
2025-11-06 11:15:23 +03:00
Jeff Young f059596736 Fix regression with resolving text variables in symbol fields table.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19978
2025-11-04 17:52:03 +00:00
Jeff Young 19c0bb27f5 Adding/removing items to/from footprint taints the geometry caches.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22203
2025-11-04 17:41:42 +00:00
Alex Shvartzkop 7852afc219 router: try to resolve track drag collision first before showing "Track violates DRC". 2025-11-04 02:28:07 +03:00
Alex Shvartzkop 32b15a6d8d Support wx 3.2 in Eagle sch parser.
(cherry picked from commit 79a926f533)
2025-11-03 02:10:44 +03:00
Alex Shvartzkop 5eb95e9976 Support reading EAGLE sch files starting with "<eagle" instead of correct xml header.
(cherry picked from commit 7ff43c501e)
2025-11-03 02:10:44 +03:00
Alex Shvartzkop 378b7ef2cb Eagle import: improve rot field parsing. 2025-11-03 02:10:44 +03:00
Alex Shvartzkop 1770ce0557 Update translations 2025-11-02 05:47:46 +03:00
Максим Горпиніч 31ce874136 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (10096 of 10096 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2025-11-02 03:45:45 +01:00
Marco Ciampa c4d3d0e0e2 Translated using Weblate (Italian)
Currently translated at 98.6% (9964 of 10096 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-11-02 03:45:45 +01:00
CloverGit 050df10ad4 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (10081 of 10096 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-11-02 03:45:45 +01:00
Marco Ciampa 2c8d12f9eb Translated using Weblate (Italian)
Currently translated at 98.6% (9962 of 10096 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-11-02 03:45:45 +01:00
CloverGit acc70d85c3 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (10079 of 10096 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-11-02 03:45:45 +01:00
Tatu Bogdan 995e313f3a Translated using Weblate (Romanian)
Currently translated at 24.2% (2449 of 10096 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ro/
2025-11-02 03:45:45 +01:00
2tama3 c5b6ebaa1a Translated using Weblate (Japanese)
Currently translated at 100.0% (10096 of 10096 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-11-02 03:45:45 +01:00
Pferd O 9ce8200750 Translated using Weblate (German)
Currently translated at 100.0% (10096 of 10096 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-11-02 03:45:45 +01:00
Eli Hughes 5bc2f6aa2b adding some docuemntation for the http test server as well as a requirements.txt and pyproject.toml for running w/ uv
(cherry picked from commit 8fa6656e39)
2025-11-01 10:24:11 +00:00
Jeff Young db2f1a3040 Don't beep on the event that got us here.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22158

(cherry picked from commit 8c2b5977ec)
2025-10-30 15:35:01 +00:00
Jeff Young 3a77e1377a Resolve text variables in descriptions and keywords.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22146

(cherry picked from commit 5e41d63bd0)
2025-10-30 15:35:01 +00:00
Jeff Young 7a9d9fb5f6 Hand cherry-pick of 82b1bcecca. 2025-10-30 15:35:01 +00:00
Jeff Young d4c25be6c0 Make sure graphic items pass selection filter. 2025-10-30 15:35:01 +00:00
Jeff Young 11d08ae2c8 Make sure graphic segments pass selection filter. 2025-10-30 15:35:01 +00:00
Jeff Young da8be848e1 Multiple bug fixes in handling of inheritance chains.
Lots of code assumed a single inheritance, while in
fact the parent could also be derived.

Also removed a couple of cover types on std:shared_ptr
and std::weak_ptr as it's important to know the API
contract you're dealing with.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22003

(cherry picked from commit 857c408b25)
2025-10-30 15:35:01 +00:00
Jeff Young c3226645c5 Hand cherry-pick parts of f1e4d75118. 2025-10-30 15:35:01 +00:00
Jeff Young 144cdd98ce Replace comment; change format name.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21982

(cherry picked from commit d8b4fde1c8)
2025-10-30 15:35:01 +00:00
Philippe Maire 9aa9a618be Fix position file alignment when the values or footprint contain UTF-8 characters. https://gitlab.com/kicad/code/kicad/-/issues/21982
(cherry picked from commit 1be157d212)
2025-10-30 15:35:01 +00:00
Jeff Young 2cc574ed14 Adjust text offset after SCH_/LIB_ merger.
(It was upside down as it originated
from the flipped coordinate system.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21802

(cherry picked from commit 507ec29cc0)
2025-10-30 15:35:01 +00:00
Jeff Young 08267916e8 Give auto-created fields names.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21928

(cherry picked from commit 4c91cba7c8)
2025-10-30 15:35:01 +00:00
Jeff Young 3476553bb2 Cleanup CLI argument specifications.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21950

(cherry picked from commit 9468f304c7)
2025-10-30 15:35:01 +00:00
Jeff Young c7fd6a14d6 Formatting. 2025-10-30 15:35:01 +00:00
Jeff Young 8c1e3704e7 Cherry-pick of 54200d073a. 2025-10-30 15:35:01 +00:00
Jeff Young 9eef6cf857 Be wary of items being pulled out from under PointEditor.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21966

(cherry picked from commit 54200d073a)
2025-10-30 15:35:01 +00:00
Jeff Young 2b662b4ccc Don't abort same-net items in the filter.
We still need to check for hole collisions.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21941

(cherry picked from commit d03b5f44ab)
2025-10-30 15:35:01 +00:00
Jeff Young 8a78d83087 Hand cherry-pick 77d6a1d490 2025-10-30 15:35:01 +00:00
Jeff Young c05fe36a0a Hand cherry-pick hole clearance fixes for #21941. 2025-10-30 15:35:01 +00:00
Jeff Young 2cf7288b1b Hand cherry-pick of b6cc9df1f4. 2025-10-30 15:35:01 +00:00
jean-pierre charras 77686f50af Fix BOARD::ConvertBrdLayerToPolygonalContours() broken for PCB_TABLE
ConvertBrdLayerToPolygonalContours() convert basic graphic items to their
polygonal shapes to allow plotting them in DXF export and vrml export.
For PCB_TABLE, the conversion of PCB_TABLE basic graphic items (textx, segments)
was not made.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21934

(cherry picked from commit 118410eb1b)
2025-10-30 13:57:45 +01:00
Wayne Stambaugh f84f0b913d Begin version 9.0.7 development. 2025-10-30 08:43:20 -04:00
Wayne Stambaugh 8a3464bdf1 Tag stable version 9.0.6. 2025-10-30 08:41:59 -04:00
Alex Shvartzkop 51646e6605 Update translations 2025-10-30 04:51:46 +03:00
Vic e962686afb Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 97.9% (9891 of 10096 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2025-10-30 02:50:56 +01:00
2tama3 9211d60d7b Translated using Weblate (Japanese)
Currently translated at 100.0% (10096 of 10096 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-10-30 02:50:56 +01:00
Marco Ciampa 632c03a874 Translated using Weblate (Italian)
Currently translated at 98.6% (9958 of 10096 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-10-30 02:50:56 +01:00
Vic 24d2eded07 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 97.9% (9891 of 10096 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2025-10-30 02:50:56 +01:00
தமிழ்நேரம் d3a5bf20db Translated using Weblate (Tamil)
Currently translated at 99.9% (10094 of 10096 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ta/
2025-10-30 02:50:56 +01:00
Pferd O 099e0d1312 Translated using Weblate (German)
Currently translated at 99.9% (10093 of 10096 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-10-30 02:50:56 +01:00
Frank Sonnenberg 3c1bc31456 Translated using Weblate (German)
Currently translated at 99.9% (10093 of 10096 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-10-30 02:50:56 +01:00
Vic 2fffc9780b Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 97.8% (9874 of 10096 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2025-10-30 02:50:56 +01:00
தமிழ்நேரம் 68bfa2001e Translated using Weblate (Tamil)
Currently translated at 99.8% (10078 of 10096 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ta/
2025-10-30 02:50:56 +01:00
Sárkány Lőrinc ebdf4c7719 Translated using Weblate (Hungarian)
Currently translated at 39.7% (4012 of 10096 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-10-30 02:50:55 +01:00
Toni Laiho f944b662b6 Translated using Weblate (Finnish)
Currently translated at 97.6% (9854 of 10096 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/fi/
2025-10-30 02:50:55 +01:00
Frank Sonnenberg 3ac9bace21 Translated using Weblate (German)
Currently translated at 99.9% (10093 of 10096 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-10-30 02:50:55 +01:00
Vic 98141d0143 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 97.7% (9871 of 10096 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2025-10-30 02:50:55 +01:00
தமிழ்நேரம் d90d86775b Translated using Weblate (Tamil)
Currently translated at 99.7% (10067 of 10096 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ta/
2025-10-30 02:50:55 +01:00
dsa-t 578d0a5a4a Translated using Weblate (Russian)
Currently translated at 100.0% (10096 of 10096 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-10-30 02:50:55 +01:00
2tama3 53075ee9f3 Translated using Weblate (Japanese)
Currently translated at 100.0% (10096 of 10096 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-10-30 02:50:55 +01:00
Frank Sonnenberg 7f19d051ed Translated using Weblate (German)
Currently translated at 99.9% (10094 of 10096 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-10-30 02:50:55 +01:00
Seth Hillbrand 364cf0808f Ensure snaps override grid points 2025-10-29 15:22:52 -07:00
Seth Hillbrand d3cce1e35c Remove H/V/45 limits in router completely
Lots of complaints, little benefit

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22147

(cherry picked from commit ab0e0abe67)
2025-10-28 17:00:55 -07:00
jean-pierre charras 1b20a932ad Fix Unroute Selected when footprint is select and filter selection pad OFF
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22138

(cherry picked from commit 8ba749bf49)
2025-10-28 18:40:01 +01:00
Jeff Young 3b0dac9491 Fix typo. 2025-10-27 15:35:39 +00:00
Wayne Stambaugh 4433da15b1 Tag stable version 9.0.6 release candidate 2. 2025-10-22 18:40:21 -04:00
Alex Shvartzkop e4af447855 Update translations 2025-10-23 00:59:39 +03:00
தமிழ்நேரம் ecd4326533 Translated using Weblate (Tamil)
Currently translated at 99.5% (10050 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ta/
2025-10-23 00:57:45 +03:00
Sárkány Lőrinc 73854bc9f1 Translated using Weblate (Hungarian)
Currently translated at 39.7% (4009 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-10-23 00:57:30 +03:00
CloverGit 544c035298 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (10082 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-10-23 00:57:18 +03:00
aris-kimi c8da489b1f Translated using Weblate (Greek)
Currently translated at 85.6% (8649 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/el/
2025-10-23 00:57:18 +03:00
2tama3 da6f97b24f Translated using Weblate (Japanese)
Currently translated at 100.0% (10097 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-10-23 00:57:08 +03:00
Tokita, Hiroshi 464d248b8c Translated using Weblate (Japanese)
Currently translated at 100.0% (10097 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-10-23 00:57:08 +03:00
CloverGit b790b46c76 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (10081 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-10-23 00:56:54 +03:00
Frank Sonnenberg b4a5422e54 Translated using Weblate (German)
Currently translated at 100.0% (10097 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-10-23 00:56:43 +03:00
Mark Hämmerling 565d54a184 Translated using Weblate (German)
Currently translated at 100.0% (10097 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-10-23 00:56:43 +03:00
Pferd O ebcf96dcd6 Translated using Weblate (German)
Currently translated at 100.0% (10097 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-10-23 00:56:43 +03:00
Pferd O e067a8ddc8 Translated using Weblate (German)
Currently translated at 100.0% (10097 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-10-23 00:56:43 +03:00
Temuri Doghonadze 4d8feb94bd Translated using Weblate (Georgian)
Currently translated at 27.6% (2790 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ka/
2025-10-23 00:56:27 +03:00
Seth Hillbrand 2374e5e542 Propagate lib_fields changes
Partial cherry-pick of 702f774a1f and
fef84a2c6a
2025-10-22 13:10:04 -07:00
Seth Hillbrand a3e4a001bb Fix HV45 toggle during move
Action handled externally, so trigger internal updates on flag

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22025
2025-10-21 16:44:12 -07:00
Seth Hillbrand edc25f8ba0 Fix axis locking when keypresses are specific
If you immediately pressed left/right it would not unlock unless there
was a mouse movement between
2025-10-21 16:25:49 -07:00
Seth Hillbrand 10a03972d4 Re-enable axis locking on cursor key
This is an accidental feature previously but now make it explicit.
Pressing left or right keys will lock the movement to the horizontal
axis until you press the opposite key.  Same for up/down

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21981
2025-10-21 15:30:26 -07:00
Wayne Stambaugh 5a3c210b7c Revert "Tag stable version 9.0.6 release candidate 2."
This reverts commit 239eb5a1ff.
2025-10-21 16:48:53 -04:00
Wayne Stambaugh 239eb5a1ff Tag stable version 9.0.6 release candidate 2. 2025-10-21 16:39:16 -04:00
Seth Hillbrand c1a1bbc96b Strongly prefer snap points over snap lines
When moving toward an intersection of snap lines that is also a snap
point, when the grid is off, the snap will always be closer to one snap
line or the other before the snap point.  This is problematic for
snapping to a center point, e.g.

Instead, if you are within the snap range of a snap point, that should
be your preference.  Zooming in will allow snapping to the snap physical
point on a line and avoiding the snap point snapping

Fixes https://gitlab.com/kicad/code/kicad/-/issues/22045
2025-10-21 12:07:27 -07:00
Seth Hillbrand c16076a5c3 Remove Local Power from v9 2025-10-21 12:04:57 -07:00
Seth Hillbrand 77ab6c29bf Ensure ERC Exclusions are maintained
After we load/resolve the exclusions, we want to ensure that the
resolved ones are re-recorded into the project file so that it always
remains consistent with the state of the system.  This way, if pcbnew
closes first and re-saves the project, our exclusions are not lost until
the schematic closes

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21410

(cherry picked from commit 5442e5050e)
2025-10-21 06:27:40 -07:00
Seth Hillbrand 9366902052 Clear the keyboard movement flag on mouse move
We detect mouse movement by checking if the screen position is not the
keyboard position and if not, we clear the
m_lastKeyboardCursorPositionValid that is used for detemining keyboard
movement in snaps

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21981

(cherry picked from commit 120c788ef0)
2025-10-20 16:34:11 -07:00
Jeff Young 86b687bdaf Minimal cherry-pick of ba73ce78e6. 2025-10-20 14:08:30 +01:00
Wayne Stambaugh 1da4895619 Sync shared symbol instance field values in symbol fields table dialog.
Change data store key from wxString to KIID_PATH to make it easier to look
up shared symbol instances by KIID.
2025-10-16 17:56:18 -04:00
Seth Hillbrand fbf9a45a00 Fix MSVC compile 2025-10-15 17:27:45 -07:00
Seth Hillbrand c6c2d6468d Keep movement snaps aligned with start
Prevents jumping elements when we start to move

(cherry picked from commit d4265ebff8)
2025-10-15 16:51:40 -07:00
Seth Hillbrand b349140112 Snap construction lines to grid if enabled
Nearest grid line intersection is a snap point on construction lines

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21984

(cherry picked from commit ce305990e8)
2025-10-15 16:49:00 -07:00
Seth Hillbrand 5dafadb12c 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

(cherry picked from commit ce49e9d69c)
2025-10-15 15:25:55 -07:00
Seth Hillbrand da1f71684c Use full path to match symbols in table/BOM
In the symbol fields table, we can't rely on the UUID being unique
across sheets.  So, we need to keep the full path as our key to unique
symbols

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21998

N.B. This is similar to but not a direct cherry pick from 8cf33049be
since the branches have diverged
2025-10-15 15:14:50 -07:00
Seth Hillbrand 563a2d20b7 SCH_ITEMs will not always have a schematic pointer
Especially if we are updating a symbol, the pointer is removed, so we
need to be able to handle this case

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21995
2025-10-15 10:01:39 -07:00
Seth Hillbrand f31450018d Add missing acknowlegement for ur-3dmodels library
(cherry picked from commit fcc25071b7)
2025-10-15 06:57:00 -07:00
Seth Hillbrand c329ba2b4c Add link to original GitHub 3D repo
(cherry picked from commit 61f33a2fef)
2025-10-15 06:57:00 -07:00
Seth Hillbrand fe42b1fd6b Fix link to Maui's GitHub
(cherry picked from commit 9067338e37)
2025-10-15 06:57:00 -07:00
Jon Evans 66628a3501 API: Do not attempt to unpack invalid layers
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21743
2025-10-14 17:55:30 -04:00
Tomasz Wlostowski e21ebbff76 router: improved multidrag segment side/corner determination
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21972
2025-10-14 19:16:42 +03:00
Seth Hillbrand 7df0a80eed Don't write invalid countour data in ODB++
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21974

(cherry picked from commit df76a54db1)
2025-10-13 16:20:11 -07:00
Jeff Young 790dee114b Use the fully-qualified name in the library too.
(Otherwise when we save another symbol with
a different fully-qualified name, but same
elem.text, we'll delete the first instance
which we still have cached.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21947
2025-10-12 20:30:33 +01:00
Seth Hillbrand 3f17abba60 Properly handle choices mapped
If the choice is an integer, we need to be able to handle it directly
because we can't get the wxAny to a wxString if the underlying type
doesn't map

(cherry picked from commit 42a76dd4bd)
2025-10-11 22:55:46 -07:00
Wayne Stambaugh dbca140d17 Tag stable version 9.0.6 release candidate 1. 2025-10-11 13:02:53 -04:00
Alex Shvartzkop d563588b28 Update translations 2025-10-11 04:08:44 +03:00
2tama3 4503abdf80 Translated using Weblate (Japanese)
Currently translated at 100.0% (10097 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-10-11 03:08:00 +02:00
Sárkány Lőrinc d670be0007 Translated using Weblate (Hungarian)
Currently translated at 39.6% (4007 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-10-11 03:08:00 +02:00
Pferd O f55873fc3d Translated using Weblate (German)
Currently translated at 100.0% (10097 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-10-11 03:08:00 +02:00
Temuri Doghonadze 330437ee8d Translated using Weblate (Georgian)
Currently translated at 26.4% (2669 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ka/
2025-10-11 03:08:00 +02:00
Sárkány Lőrinc 61648be38a Translated using Weblate (Hungarian)
Currently translated at 39.5% (3998 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-10-11 03:08:00 +02:00
Frank Sonnenberg 58584cb227 Translated using Weblate (German)
Currently translated at 100.0% (10097 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-10-11 03:08:00 +02:00
Pferd O 4cab605fb6 Translated using Weblate (German)
Currently translated at 100.0% (10097 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-10-11 03:07:59 +02:00
Henrik Kauhanen 57f6d1c015 Translated using Weblate (Swedish)
Currently translated at 99.7% (10070 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-10-11 03:07:59 +02:00
Seth Hillbrand 57df0435bf Fix double-delete crash
9.0 uses boost to auto-manage the lifetime
2025-10-10 17:23:53 -07:00
Seth Hillbrand 46312674c6 Re-work of 5514396c for v9
All links are processed in the same order

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21913
2025-10-10 17:12:00 -07:00
Quentin Freimanis 32781c3992 altium pcbs: import pad to die length
(cherry picked from commit ad07c85cea)
2025-10-10 15:35:59 -07:00
Seth Hillbrand 48b3408f9a Fix alignment QA
We actually offset by 25, so the check was wrong
2025-10-10 15:19:24 -07:00
Seth Hillbrand e892783109 Move HV45 to suggestions when moving
Snap lines shown when snapped
2025-10-10 14:44:00 -07:00
Seth Hillbrand 5865431759 Refactor grid_helper to allow testing
Make view and tool manager optional so that we can implement QA on the
actual snapping

(cherry picked from commit 29eee9f126)
2025-10-10 13:39:02 -07:00
Seth Hillbrand d75d0ef686 Allow multi-row deleting in 3d models
Removes all selected rows when hitting the trash can

Fixes https://gitlab.com/kicad/code/kicad/issues/21894

(cherry picked from commit 7ebf5f084b)
2025-10-10 10:01:15 -07:00
Seth Hillbrand baf4843a45 Avoid minor overlaps
Some geometry creates 1-2nm overlaps.  These are not actually overlaps
because our collinear test can't correctly determine their
directionality, so we limit the overlap to at least 25 units (arbitrary)
to skip these chunks

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21946

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21930

(cherry picked from commit 063430e488)
2025-10-09 17:57:44 -07:00
Alex Shvartzkop 57309d4a62 Update translations 2025-10-08 13:56:58 +03:00
ZbeeGin a9ad99f513 Translated using Weblate (Polish)
Currently translated at 100.0% (10097 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-10-08 12:56:21 +02:00
Temuri Doghonadze 5a459ce982 Translated using Weblate (Georgian)
Currently translated at 25.4% (2572 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ka/
2025-10-08 12:56:21 +02:00
2tama3 32626dfa1d Translated using Weblate (Japanese)
Currently translated at 100.0% (10097 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-10-08 12:56:21 +02:00
Temuri Doghonadze 3406f20a5c Translated using Weblate (Georgian)
Currently translated at 25.4% (2571 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ka/
2025-10-08 12:56:20 +02:00
2tama3 2fedbaac2e Translated using Weblate (Japanese)
Currently translated at 100.0% (10097 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-10-08 12:56:20 +02:00
Pferd O b3f7e2e827 Translated using Weblate (German)
Currently translated at 99.8% (10083 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-10-08 12:56:20 +02:00
Frank Sonnenberg 6430bd6c61 Translated using Weblate (German)
Currently translated at 99.8% (10083 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-10-08 12:56:20 +02:00
Michal Kundrát cb51d324b7 Translated using Weblate (Czech)
Currently translated at 77.9% (7871 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2025-10-08 12:56:20 +02:00
Максим Горпиніч 1eb9accb1e Translated using Weblate (Ukrainian)
Currently translated at 100.0% (10097 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2025-10-08 12:56:20 +02:00
dsa-t fb8716f16a Translated using Weblate (Russian)
Currently translated at 100.0% (10097 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-10-08 12:56:19 +02:00
Temuri Doghonadze 1bdeebf13d Translated using Weblate (Georgian)
Currently translated at 19.2% (1943 of 10097 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ka/
2025-10-08 12:56:19 +02:00
Jeff Young 3688a9ca61 Support translation of property grid enums.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21859

Fixes https://gitlab.com/kicad/code/kicad/-/issues/13636

(cherry picked from commit 44f932e9ec)
2025-10-07 13:49:14 +01:00
Jeff Young 94370cc6d8 Support translation in tool context menus that are long-lived.
(The specialized ones are OK as they're created
for each use.)

Also, enum maps must be untranslated.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21859

(cherry picked from commit 2fe7219474)
2025-10-07 13:46:54 +01:00
Jeff Young 186839b245 Nullptr safety.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21840

(cherry picked from commit e00bb21afd)
2025-10-07 13:44:26 +01:00
Jeff Young c70653c9dc Nullptr safety.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21841

(cherry picked from commit 0edae828df)
2025-10-07 13:38:25 +01:00
Jeff Young ed59993fc3 Fix build error. 2025-10-07 13:32:09 +01:00
Jeff Young fec37a0f79 Make sure exclusion hotkey works when dialog has focus.
(Potentially only required on MSW.  Not required
on MacOS, unknown on GTK.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21761

(cherry picked from commit 7003c0639e)
2025-10-07 13:28:41 +01:00
Jeff Young 7a4ab8971c Auto-convert numeric values in fields when referencing them in expressions.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21723

(cherry picked from commit 2c102a62e0)
2025-10-07 13:24:21 +01:00
Jeff Young 76cff2e7aa Fix build error. 2025-10-07 13:23:14 +01:00
Jeff Young e95aab5df6 Implement netclass compare for sorting.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21345

(cherry picked from commit 3bb1aafdf3)
2025-10-07 12:41:33 +01:00
Seth Hillbrand 0b1fee9f7f Properly account for keyboard movement
We need to snap the position to the grid at the start of movement with
the keyboard because it will snap to the movement point of the item when
we are moving, so the difference between mouse position and grid
position will end up being some fractional value that appears random

Fixes https://gitlab.com/kicad/code/kicad/issues/21682

(cherry picked from commit 4a090ca353)
2025-10-05 21:35:53 -07:00
Seth Hillbrand 8a5c51d37f Properly name Altium subsheets
Instead of using Altium extensions, we need to use KiCad extensions
otherwise, we'll never load them

Fixes https://gitlab.com/kicad/code/kicad/issues/21173
2025-10-05 14:03:15 -07:00
Seth Hillbrand d288dce1d0 Fix Altium subsheet names 2025-10-05 13:57:57 -07:00
Seth Hillbrand 89b92fe3f5 One follow-on to fix additional windows paths
We need to set the format earlier and handle internal filenames

Fixes https://gitlab.com/kicad/code/kicad/issues/20161
2025-10-05 13:53:57 -07:00
Seth Hillbrand cb7385bf0c Update Altium subfolder import
Altium projects save relative sub folder paths in the windows path
format.  To import these correctly, we need to turn off the escape
character handling in wx's config file processing otherwise
SUBFOLDER\PROJECT.SchDoc ends up looking like SUBFOLDERROJECT.SchDoc

Fixes https://gitlab.com/kicad/code/kicad/issues/20161

(cherry picked from commit 4ae76d56c6)
2025-10-05 13:29:29 -07:00
Seth Hillbrand ec6af273bb One more fix for compiling 2025-10-05 06:58:59 -07:00
Seth Hillbrand 0dd4d0e46c Fix cherry-pick error 2025-10-05 06:57:43 -07:00
Seth Hillbrand 2d0c5dc8bd Only constrain points based on settings
There was a false fall-through that caught all points for polygons.
Now, constraint is applied only based on the user keys and settings

Fixes https://gitlab.com/kicad/code/kicad/issues/21897
2025-10-05 06:53:41 -07:00
Alex Shvartzkop 95418742e9 Fix build error. 2025-10-05 16:09:59 +03:00
Seth Hillbrand 53d0d60f33 Force clearing rtree when rebuilding
Avoid leaving stale triangle references

Fixes https://gitlab.com/kicad/code/kicad/issues/21896

(cherry picked from commit b4f396bb2d)
2025-10-05 16:09:59 +03:00
Alex Shvartzkop bf1dbde3c3 Update translations 2025-10-05 16:04:44 +03:00
Temuri Doghonadze 2b1b1b4fcb Translated using Weblate (Georgian)
Currently translated at 17.7% (1786 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ka/
2025-10-05 15:03:47 +02:00
Sárkány Lőrinc a1066bac65 Translated using Weblate (Hungarian)
Currently translated at 39.4% (3972 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-10-05 15:03:47 +02:00
Temuri Doghonadze a30498a572 Translated using Weblate (Georgian)
Currently translated at 15.0% (1520 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ka/
2025-10-05 15:03:47 +02:00
YÜKSEL AÇIKGÖZ 5403990121 Translated using Weblate (Turkish)
Currently translated at 99.4% (10029 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-10-05 15:03:47 +02:00
2tama3 2deacd59ef Translated using Weblate (Japanese)
Currently translated at 100.0% (10080 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-10-05 15:03:46 +02:00
William Lin 7d67775f45 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 97.9% (9870 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2025-10-05 15:03:46 +02:00
Henrik Kauhanen c5ef10cf2c Translated using Weblate (Swedish)
Currently translated at 99.8% (10062 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-10-05 15:03:46 +02:00
Frank Sonnenberg 04d0719269 Translated using Weblate (German)
Currently translated at 100.0% (10080 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-10-05 15:03:46 +02:00
Seth Hillbrand f143ce563f Protect polygon build
If we don't have corners, then we cannot add any points or lines

(cherry picked from commit f33fd675d2)
2025-10-05 05:58:14 -07:00
Seth Hillbrand 5792a02825 Adjust the project name when importing
Ensures that the proper project is referenced after saving imported
project

Fixes https://gitlab.com/kicad/code/kicad/issues/13986

(cherry picked from commit d0f1920ab6)
2025-10-05 04:58:46 -07:00
Seth Hillbrand 0dc0061d30 When using git, show all files
Git tracks the status of files in the repository, so we shouldn't hide
the non-root schematics

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21583

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21583

(cherry picked from commit d5e03741b7)
2025-10-05 04:54:13 -07:00
Seth Hillbrand 2116e272b5 Maintain units even when opening standalone
The unit data is maintained in the instances so we need a temporary
instance setting if we do not have the parent sheet

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19361

(cherry picked from commit 39ed3c538f)
2025-10-05 04:53:37 -07:00
Seth Hillbrand 25c14ae7cb Ensure new symbols obey the observed sheet number
Internal numerology will not make sense when annotating, so use the
observed sheet number and let the algo ensure that numbers are not
duplicated

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21637

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19138

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16632

(cherry picked from commit 4fcc2ac7e2)
2025-10-05 04:53:16 -07:00
Seth Hillbrand 3a8fc4dd82 Fully separate command and parameters
Ensures proper execution on all platforms

Fixes https://gitlab.com/kicad/code/kicad/issues/14261

(cherry picked from commit 25e9464d2c)
2025-10-05 04:51:17 -07:00
Seth Hillbrand 5558dce259 Handle custom fields from netlist
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21648

(cherry picked from commit 2677cae840)
2025-10-05 04:50:53 -07:00
Seth Hillbrand 8fe891a475 Prevent H/V locking when dragging
This avoids the track position locking into arbitrary 90° points.

Fixes https://gitlab.com/kicad/code/kicad/issues/21892

(cherry picked from commit a5090c908d)
2025-10-05 04:50:36 -07:00
Seth Hillbrand 501b63028b Prevent crash in changing units
SCH_ITEM unit is set as a wxString

Fixes https://gitlab.com/kicad/code/kicad/issues/21891

(cherry picked from commit 5b0db05ad2)
2025-10-05 04:50:36 -07:00
Seth Hillbrand b7d7403e6f Dedupe ODB++ symbol names
If we have duplicate symbol names (can happen from plugins), suffix a
number

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21803

(cherry picked from commit 8cfac03444)
2025-10-05 04:50:36 -07:00
Seth Hillbrand c0648c4728 We need to clamp the index to max - 1
What did we think this was?  Pascal?

Fixes https://gitlab.com/kicad/code/kicad/issues/21750

(cherry picked from commit 9c0727f28e)
2025-10-05 04:50:36 -07:00
Seth Hillbrand a33003cf62 Clean up third axis
Ensure that there are better displays and detects potential power
signals

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21645

(cherry picked from commit c00e818688)
2025-10-05 04:33:02 -07:00
Seth Hillbrand 1d577cf917 Lazy load git credentials when needed
Prevents querying SecretStore on boot

Fixes https://gitlab.com/kicad/code/kicad/issues/20176

(cherry picked from commit 4ed56d87a4)
2025-10-05 04:32:21 -07:00
Seth Hillbrand d189c6ddbf Enforce spice-valid netnames when parsing
Avoids prematurely trimming netnames containing numbers

Fixes https://gitlab.com/kicad/code/kicad/issues/18598

(cherry picked from commit d6d476e39e)
2025-10-05 04:31:10 -07:00
Seth Hillbrand f781ec82c9 Avoid OtherSideView in 2581B
This was introduced in 2581C, so if we are exporting 2581B, emit the
silk elements as board-level instead of tied to a footprint

Fixes https://gitlab.com/kicad/code/kicad/issues/16286

(cherry picked from commit 1dceb5825d)
2025-10-05 04:15:25 -07:00
Seth Hillbrand 3a33a5b506 Ensure table directories are created
Use static routines to create needed directories before copying files

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18937

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18938

(cherry picked from commit 3eeb2a1ad7)
2025-10-05 04:12:22 -07:00
Seth Hillbrand 4436d93446 When copying global tables, ensure writable
Copying read-only files into the user directory, the files will need to
be read/write in order to work correctly

Fixes https://gitlab.com/kicad/code/kicad/issues/21899

(cherry picked from commit ab7c30a2a1)
2025-10-05 04:10:59 -07:00
JamesJCode 238612d2c2 Use hasExactNetclass() function for all implicit net class DRC rules
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21819

(cherry picked from commit 7c8dd9bf92)
2025-10-04 10:42:00 +01:00
Seth Hillbrand f787c01b47 Clean up lib table cherry-pick and hide
For now, we place this behind the advanced config flag for v9 testing
2025-10-03 17:24:26 -07:00
Seth Hillbrand f8e60b11c9 Fix lib_fields column attributes
Need to properly display footprint selector and datasheet globe

(cherry picked from commit 05d04e665a)
2025-10-03 16:07:22 -07:00
Seth Hillbrand 0f07c4ef78 Prompt for unsaved changes in the lib fields table editor
(cherry picked from commit 344fab5741)
2025-10-03 16:07:22 -07:00
John Beard 6fcfcd28ca Symbol editor: allow to inject the symbol list into DIALOG_LIB_FIELDS
This will permit editing fields for subsets (e.g. only symbols in
a certain inheritance hierarchy)

(cherry picked from commit 9b14434fc3)
2025-10-03 16:06:08 -07:00
Seth Hillbrand 1773eb2b1c ADDED: Library Table Editor
Edits all symbols in a library at once.  Supports copy/paste, multiple
field assignment and selective coloration based on existing data

Fixes https://gitlab.com/kicad/code/kicad/-/issues/11506

(cherry picked from commit 9cba910d53)
2025-10-03 16:05:52 -07:00
Seth Hillbrand 45bdde41b3 JP's patch to fix crash in routing empty board
(cherry picked from commit 8592b2ee70)
2025-10-03 08:46:36 -07:00
Seth Hillbrand 292faaa48d Protect against invalid line access
When placing, we may have failed to generate a tail, in which case, we
will have no line to split, so just return

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21883
2025-10-03 08:42:56 -07:00
Wayne Stambaugh 44c473c1b3 Only use front/back layer notation "F&B" for zone definitions.
This prevents false positive DRC footprint parity errors caused by commit
088e0e80a1.

(cherry picked from commit 8b525671b1)
2025-10-01 16:01:11 -04:00
Wayne Stambaugh 85474345d6 Begin version 9.0.6 development. 2025-10-01 15:09:57 -04:00
Wayne Stambaugh fda292bd08 Tag stable version 9.0.5. 2025-10-01 15:09:57 -04:00
Alex Shvartzkop c666bf8626 STEP export: paint board body in soldermask color if soldermask export is off
Was broken in 54e9a97b26

Fixes (part of) https://gitlab.com/kicad/code/kicad/-/issues/21865
2025-10-01 21:56:34 +03:00
Alex Shvartzkop 96f20d102b Update translations 2025-09-30 15:10:36 +03:00
Henrik Kauhanen f57cdb52dd Translated using Weblate (Swedish)
Currently translated at 99.8% (10061 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-09-30 14:06:53 +02:00
Frank Sonnenberg a5d2294ec3 Translated using Weblate (German)
Currently translated at 100.0% (10080 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-30 14:06:53 +02:00
Frank Sonnenberg 72fdb41b73 Translated using Weblate (German)
Currently translated at 100.0% (10080 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-30 14:06:53 +02:00
Pferd O 2ca04123d4 Translated using Weblate (German)
Currently translated at 100.0% (10080 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-30 14:06:53 +02:00
2tama3 07a4710363 Translated using Weblate (Japanese)
Currently translated at 100.0% (10080 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-09-30 14:06:52 +02:00
Sárkány Lőrinc c01e37304f Translated using Weblate (Hungarian)
Currently translated at 39.2% (3960 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-09-30 14:06:52 +02:00
Stefan Bjornelund the Gnome 52b57b1145 Translated using Weblate (Swedish)
Currently translated at 99.8% (10060 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-09-30 14:06:52 +02:00
2tama3 7b4e444f6c Translated using Weblate (Japanese)
Currently translated at 100.0% (10080 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-09-30 14:06:52 +02:00
Sárkány Lőrinc a9f4f85746 Translated using Weblate (Hungarian)
Currently translated at 39.2% (3955 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-09-30 14:06:52 +02:00
Pferd O bc7ece44eb Translated using Weblate (German)
Currently translated at 99.9% (10070 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-30 14:06:52 +02:00
Sárkány Lőrinc 51cc22a4f2 Translated using Weblate (Hungarian)
Currently translated at 39.1% (3951 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-09-30 14:06:52 +02:00
Frank Sonnenberg 38f2541a3f Translated using Weblate (German)
Currently translated at 99.9% (10070 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-30 14:06:52 +02:00
Ivan Chuba a05e3de852 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (10080 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2025-09-30 14:06:52 +02:00
co8 j 908e7205e7 Translated using Weblate (Japanese)
Currently translated at 100.0% (10080 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-09-30 14:06:52 +02:00
Sárkány Lőrinc a80e410683 Translated using Weblate (Hungarian)
Currently translated at 39.1% (3947 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-09-30 14:06:52 +02:00
Frank Sonnenberg fa234e4b58 Translated using Weblate (German)
Currently translated at 99.9% (10070 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-30 14:06:52 +02:00
Pferd O fb82e722e1 Translated using Weblate (German)
Currently translated at 99.9% (10070 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-30 14:06:52 +02:00
Максим Горпиніч b45f9e7392 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (10080 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2025-09-30 14:06:52 +02:00
dsa-t d496b281ef Translated using Weblate (Russian)
Currently translated at 100.0% (10080 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-09-30 14:06:51 +02:00
Sárkány Lőrinc 2a46ff370a Translated using Weblate (Hungarian)
Currently translated at 39.1% (3942 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-09-30 14:06:51 +02:00
Pferd O 44d0b27544 Translated using Weblate (German)
Currently translated at 99.8% (10064 of 10080 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-30 14:06:51 +02:00
Jeff Young 7d76868c5c Fix latent bug in UpdatePins().
(It was failing to update the unit and bodystyle.)

(cherry picked from commit 3f1999795c)
2025-09-29 17:30:49 +01:00
Jeff Young e4d9d1829f Honour alternate pin definitions.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21618

(cherry picked from commit 19133bc6bd)
2025-09-27 13:36:42 +01:00
Jeff Young e585948861 Formatting.
(cherry picked from commit d140261ab1)
2025-09-27 13:15:02 +01:00
Jeff Young e31b177335 Static cast safety.
(cherry picked from commit 48c9145177)
2025-09-27 13:09:29 +01:00
jean-pierre charras 4624d57bc2 FRAME_FOOTPRINT_CHOOSER and FRAME_FOOTPRINT_VIEWER: fix incorrect save settings
They were saved in cvpcb.json instead of pcbnew.json, and especially for
FRAME_FOOTPRINT_CHOOSER, some settings were incorrectly retrieved because
not actually updated.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21818

(cherry picked from commit 8f8edf8d69)
2025-09-26 12:40:21 +02:00
jean-pierre charras 4f2d1ec5a1 French translation update 2025-09-24 08:36:57 +02:00
Alex Shvartzkop 5bcb3edae1 Update translations 2025-09-23 13:55:59 +03:00
Sárkány Lőrinc 30fbfd53c1 Translated using Weblate (Hungarian)
Currently translated at 39.0% (3931 of 10069 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-09-23 12:53:01 +02:00
Sárkány Lőrinc dc979be459 Translated using Weblate (Hungarian)
Currently translated at 36.5% (3679 of 10069 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-09-23 12:53:01 +02:00
Frank Sonnenberg 450c4517b5 Translated using Weblate (German)
Currently translated at 100.0% (10069 of 10069 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-23 12:53:01 +02:00
Sárkány Lőrinc 47cd4d6b7a Translated using Weblate (Hungarian)
Currently translated at 36.2% (3648 of 10069 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-09-23 12:53:01 +02:00
Pferd O 8842c575c3 Translated using Weblate (German)
Currently translated at 100.0% (10069 of 10069 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-23 12:53:01 +02:00
CloverGit 858c23f731 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.9% (10063 of 10069 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-09-23 12:53:01 +02:00
Toni Laiho 1d879d51c5 Translated using Weblate (Finnish)
Currently translated at 97.7% (9842 of 10069 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/fi/
2025-09-23 12:53:00 +02:00
Pferd O 6e0df489eb Translated using Weblate (German)
Currently translated at 99.9% (10060 of 10069 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-23 12:53:00 +02:00
Henrik Kauhanen a9be5c5759 Translated using Weblate (Swedish)
Currently translated at 99.8% (10057 of 10069 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-09-23 12:53:00 +02:00
Stefan De Raedemaeker 258e2fd46f Translated using Weblate (Dutch)
Currently translated at 90.6% (9127 of 10069 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/nl/
2025-09-23 12:53:00 +02:00
Pferd O f5852f0869 Translated using Weblate (German)
Currently translated at 99.9% (10059 of 10069 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-23 12:53:00 +02:00
Henrik Kauhanen 1d0adbc5d6 Translated using Weblate (Swedish)
Currently translated at 99.8% (10056 of 10069 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-09-23 12:53:00 +02:00
Pferd O 34834fd963 Translated using Weblate (German)
Currently translated at 99.8% (10058 of 10069 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-23 12:53:00 +02:00
Frank Sonnenberg 2f095aeafb Translated using Weblate (German)
Currently translated at 99.8% (10058 of 10069 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-23 12:53:00 +02:00
CloverGit 47bb72179f Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.9% (10063 of 10069 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-09-23 12:53:00 +02:00
Pferd O 9f7af4a3a7 Translated using Weblate (German)
Currently translated at 99.9% (10060 of 10069 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-23 12:53:00 +02:00
Frank Sonnenberg dda127ceec Translated using Weblate (German)
Currently translated at 99.9% (10060 of 10069 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-23 12:53:00 +02:00
Максим Горпиніч 68e6e0a742 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (10069 of 10069 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2025-09-23 12:53:00 +02:00
2tama3 a844ba713a Translated using Weblate (Japanese)
Currently translated at 100.0% (10069 of 10069 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-09-23 12:53:00 +02:00
Frank Sonnenberg 5d75bd0f0a Translated using Weblate (German)
Currently translated at 99.9% (10060 of 10069 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-23 12:53:00 +02:00
jean-pierre charras c492565ee8 DIALOG_LIB_SYMBOL_PROPERTIES: fix incorrect handling of vertical pos. of fields
The Y pos was negated twice when saving the field position.
Note also this is a fast fix. A better fix should be removing these Y pos sign
change in dialog because they are now not needed, but it will wait 9.0.6.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21781
2025-09-21 16:43:20 +02:00
Wayne Stambaugh 879d2bef4b Tag stable version 9.0.5 release candidate 1. 2025-09-20 15:52:28 -04:00
Olliver Schinagl 05376a39ac export_vrml: Skip missing 3D models with warning
(cherry picked from commit 98d77db5ae)
2025-09-20 11:43:55 -04:00
oskarwires 9c01c2aeb8 Fix pin length change and push
(cherry picked from commit abba11031a)
2025-09-20 11:36:25 -04:00
Alex Shvartzkop 72db7bfedc Fix some warnings. 2025-09-19 17:07:47 +03:00
Alex Shvartzkop 95cfe2cc2e STEP export: don't return non-zero error code on non-fatal errors. 2025-09-19 17:06:38 +03:00
Mark Roszko c6f5daf87f Make ERC/DRC jobs default to fail on violation count
(cherry picked from commit 94856f1ffa)

Co-authored-by: Mark Roszko <mark.roszko@gmail.com>
2025-09-19 12:01:51 +00:00
Seth Hillbrand b1711d692a Do not hang onto previous elements
When using multi-label input or repeat commands, the previous element
should be deselected so that we can properly transform the current
element

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21765

(cherry picked from commit 5ed46b823b)
2025-09-18 12:28:55 -07:00
Seth Hillbrand d538182f1f Fix Windows Builds 2025-09-18 11:15:52 -07:00
Wayne Stambaugh b4b87b5c38 Prevent crash dereferencing null pointer when creating schematic table. 2025-09-18 14:05:05 -04:00
Seth Hillbrand eed95e612d Skip exterior segments when splitting
We need to avoid fracture points when choosing how to split exterior
segments

(cherry picked from commit 50274352b1)
2025-09-18 10:30:43 -07:00
Seth Hillbrand 68d3c7f5c2 Force type in wxString 2025-09-17 21:05:39 -07:00
Seth Hillbrand 848d5484d8 Fix mocks 2025-09-17 13:42:22 -07:00
Alexander Boehm d3b84f219c generate rule areas dialog: vertical scroll bars
With many entries the dialog could not be resized by dragging
nor were scroll bars displayed (at least under Linux).

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20195

(cherry picked from commit 4111140f93)
2025-09-17 11:38:04 -07:00
Seth Hillbrand 58ccf62d2f Unify sheet name validators and apply to properties
Properties panel and properties dialog now share a validator with shared
strings

Fixes https://gitlab.com/kicad/code/kicad/issues/21689

(cherry picked from commit 733a379ca3)
2025-09-17 11:36:53 -07:00
Seth Hillbrand 021229647f Prevent lines from drawing on netclass layer
Only wires and busses get netclasses

Fixes https://gitlab.com/kicad/code/kicad/issues/21731

(cherry picked from commit 5fdfff2b9c)
2025-09-17 11:19:58 -07:00
Seth Hillbrand 9a812bc63c Remove noise from orthographic projection raytracing
We generally add some jitter to the raytracing lines in order to smooth
out over multiple iterations some of the imperfections.  However, when
we do this to an orthographic projection (where all lines are parallel
to start, we don't average and just introduce noticeable noise in the
render

Fixes https://gitlab.com/kicad/code/kicad/issues/8863

(cherry picked from commit abf3438ed6)
2025-09-17 11:18:47 -07:00
Seth Hillbrand 8a9201b79c Update properties to show units
The function duplicated our built-in funcitonality and did not properly
handly outputs

Fixes https://gitlab.com/kicad/code/kicad/issues/21685

(cherry picked from commit 3f8abe3744)
2025-09-17 11:06:25 -07:00
Jeff Young f8e9b3402f Comboboxes for units and body styles.
Also for pin-types in pad properties.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19904

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19905

(cherry picked from commit ec155c00f3)
2025-09-17 11:05:57 -07:00
Seth Hillbrand 808c645933 Don't convert URI slashes on Windows
We auto-convert paths for windows boxes but this should not happen for
uri schemes that have the form <URI>://<path>

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20381

(cherry picked from commit e85a8056f5)
2025-09-17 10:46:41 -07:00
Adrián García ea467c1bac Fix crash in LIB_SYMBOL::SetUnitCount when reducing unit count
When decreasing the number of units in a symbol, the previous code erased
items directly from m_drawings using a single iterator. Because m_drawings
is a MULTIVECTOR, this could invalidate iterators and attempt to erase
from the wrong bucket, leading to segmentation faults.

This patch iterates bucket by bucket and erases items belonging to units
greater than the requested count. This ensures iterator safety and avoids
accessing invalid memory.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21631

(cherry picked from commit fb558eee3c)
2025-09-17 10:46:14 -07:00
Seth Hillbrand c51b6a0cd2 Prevent GTK from providing stale position
When the library name and symbol/footprint name both match the filter,
we try to display both but ensure visible can move things to the wrong
place.  We need to ensure the filtered list is up to date prior to
moving by ensureVisible

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18000

(cherry picked from commit dc7e0665c3)
2025-09-17 10:45:40 -07:00
Seth Hillbrand 10f16ed82e Prevent modifying teardrops on lock/unlock
This action doesn't affect geometry, so don't dirty the teardrops

Fixes https://gitlab.com/kicad/code/kicad/issues/21342

(cherry picked from commit ad80113f47)
2025-09-17 10:45:17 -07:00
Seth Hillbrand ab9cf326e8 Consider visibility when colliding in DRC
Most places we check this but we should also check it in physical
clearance

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21625

(cherry picked from commit d9741fd46a)
2025-09-17 10:44:53 -07:00
Seth Hillbrand 4e6087c183 Prevent main KiCad window from expanding based on DPI events
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21602

(cherry picked from commit f5904cf2ac)
2025-09-17 10:44:32 -07:00
Seth Hillbrand e7abf472ba Make properties panel obey free pads setting
Pads should almost never be moved without their parent.  Only allow this
in the case where free pads has explicitly been checked

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21591

(cherry picked from commit b22f259ccb)
2025-09-17 10:42:58 -07:00
Addo White f0c6b57ab9 Fix for Cursor rendering on Linux+EGL+Nvidia in accelerated graphics mode
EGL/NVidia can sometimes clip the cursor based on its plane regardless
of the depth mask.  This avoids the issue by forcing the cursor up over the existing plane.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/12183

(cherry picked from commit 843eea259d)
2025-09-17 10:42:13 -07:00
Seth Hillbrand e830709cda Make Expand Connection respect the filter
Prevents expansion that would require traversing elements that are
disabled in the selection filter

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21581

(cherry picked from commit a811f61c39)
2025-09-17 10:39:58 -07:00
Seth Hillbrand 415aac7fc5 Fix Chessboard splitting
Due to a bug(?) in Clipper2, 45° collinear edges may not be detected.
See https://github.com/AngusJohnson/Clipper2/issues/1008 for current
status.  In the meantime, we pre-process these to remove the extraneous
joints preventing our triangulation from getting mixed up

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18176

(cherry picked from commit 408e1feae2)
2025-09-17 10:37:44 -07:00
modbw 21f15c3b2a Fix net assignment messed up in Eagle import
When there is a polygon in the Eagle project withput any pad connected
netCode was not incremented and so the wrong nets were assigned to the
following elements.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21243

(cherry picked from commit 57ad779797)
2025-09-17 10:36:17 -07:00
Seth Hillbrand 0f8df0bcee Ensure that we check tracks exiting pads for gaps
The DP gap check should look for sections of track that are coupled by
wider than a given spacing.  Our primitive check of looking for
collisions on the segment between the start poins causes tracks exiting
but not entering pads to be excluded.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21561

(cherry picked from commit 1e76f1a11d)
2025-09-17 10:34:50 -07:00
Seth Hillbrand d6ef6252a2 Maintain group membership when shoving
Keep track of the original group membership and assign this to the newly
created element as well

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20862

(cherry picked from commit 2db8c6eca0)
2025-09-17 10:33:36 -07:00
Seth Hillbrand f13c9cbd49 Prevent stale names in fp browser
When switching libraries, if there is an additional footprint with the
same name, we don't want to select it by default as this will prevent
updating the footprint display.  Instead, force the update

Fixes https://gitlab.com/kicad/code/kicad/-/issues/9763

(cherry picked from commit cb620338db)
2025-09-17 10:29:31 -07:00
Seth Hillbrand c2af66a44b Specialize the pad wall drawing
Avoids slowdown when zoom/pan with many THTs as everything remains
cached.  Still slow in Cairo but this is expected

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20506

(cherry picked from commit 3ef862f7b6)
2025-09-17 10:27:56 -07:00
Seth Hillbrand 40c50c94fb Help is always valid
Return 0 and no error, just help when the --help flag is present

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21538

(cherry picked from commit 9dc76f658d)
2025-09-17 10:27:21 -07:00
Seth Hillbrand 0103f92d0e Add more parent safety checks
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21317

(cherry picked from commit e346139301)
2025-09-17 10:26:51 -07:00
Seth Hillbrand 0f27f8b7fc Enforce board-level hole to hole on diff pairs
Makes the router behave like the DRC

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21240

(cherry picked from commit cac334bb45)
2025-09-17 10:25:56 -07:00
Seth Hillbrand 5631b61dbc Find the proper line split
And avoid leaving duplicate tracks when overlapping

Fixes https://gitlab.com/kicad/code/kicad/-/issues/10422

(cherry picked from commit 8acdcafe90)
2025-09-17 10:25:32 -07:00
Seth Hillbrand da659f5d05 Manually check pad layers before inserting
We do not rely on GetEffectiveShape(layer) to return null for layers
that the pad does not exist on.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21523

(cherry picked from commit 2e1910ca86)
2025-09-17 10:23:46 -07:00
Seth Hillbrand 2029c5389f Move IPC2581 output to REPORTER
Adds a wx_reporter_panel to the 2581 output window, shunt messages
through the reporter instance

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16314

(cherry picked from commit 44228bd580)
2025-09-17 10:23:21 -07:00
Seth Hillbrand 4205e70775 Update cache when modifying schematic
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18297

(cherry picked from commit 2347b290cb)
2025-09-17 10:17:08 -07:00
Seth Hillbrand 4f66225de7 Allow multiple pad->single pin in 2581 correctly
Grouped pads by pin number in the IPC-2581 exporter so only one pin node
is created per number.  Still output multiple pad shapes with the same
number.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18688

(cherry picked from commit c1cd4dd157)
2025-09-17 10:16:42 -07:00
Seth Hillbrand 18e4682c3a Set embedded delegate to update view properly
When embedding a 3d model we want to be able to see it immediately but
this requires getting the embedded files from the delegate model

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19991

(cherry picked from commit bd86f979ed)
2025-09-17 10:16:17 -07:00
Seth Hillbrand 6b540ae1e3 Add embed option to standard file dialog for 3dmodels
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20025

(cherry picked from commit 09cdca876c)
2025-09-17 10:15:51 -07:00
Seth Hillbrand 1f12b6c17d Force overlapping wires to share labels
Crossing wires with pathological label in the center are actually
connected for the netlist.  This is an ERC error but we should keep
things consistent.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21494

(cherry picked from commit c995d47c87)
2025-09-17 10:11:43 -07:00
Seth Hillbrand e2c23c70f1 Allow soldermask bridging between nettie items
Previously we only allowed graphical items but within the net-tie we
need to allow bridging for connected items as well

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19288

(cherry picked from commit 8faf1b4d0e)
2025-09-17 10:06:32 -07:00
Seth Hillbrand f60f0394be Fix preferential coordinates in rule display
Fixes https://gitlab.com/kicad/code/kicad/-/issues/11546

(cherry picked from commit eb89d7ffcc)
2025-09-17 10:06:23 -07:00
Seth Hillbrand bd64bcf446 Keep the ruler measurements on screen
Fixes https://gitlab.com/kicad/code/kicad/-/issues/11546

(cherry picked from commit b2fbb326b0)
2025-09-17 10:04:42 -07:00
Seth Hillbrand 176d0f5820 Slight modification to followTrivialPath
Now keeps track of branch points, recursing through them to find the
longest path it can in both directions.  This helps to ignore
overlapping segments

Fixes https://gitlab.com/kicad/code/kicad/-/issues/7809

(cherry picked from commit 4c5b44545f)
2025-09-17 10:04:13 -07:00
Seth Hillbrand 118ee1c072 Prevent autosave error from cluttering the screen
Once per session, per editor we can show the error.  After that, assume
that the designer has seen and knows about the issue.

Fixes https://gitlab.com/kicad/code/kicad/issues/21464

(cherry picked from commit 9f2b04c7e2)
2025-09-17 09:57:32 -07:00
Seth Hillbrand fd15a1108b Allow wildcard matching for Netclass naming
Fixes https://gitlab.com/kicad/code/kicad/issues/21455

(cherry picked from commit fcd2da354d)
2025-09-17 09:56:46 -07:00
Seth Hillbrand 43b5d4d91f Ensure archives without ext are given .zip
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21423

(cherry picked from commit 2ded7b87af)
2025-09-17 09:56:19 -07:00
Seth Hillbrand d11ab8201f Allow generator actions to affect children
Changing the generator will often modify the underlying children's
properties.  We should store these data in the stack.  Also add the
ability to change layers

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21476

(cherry picked from commit 3ec380d93c)
2025-09-17 09:55:52 -07:00
Seth Hillbrand 86bae558b4 Fix broken cherry-pick 2025-09-17 09:55:52 -07:00
Seth Hillbrand 68991a7644 Make move tool obey snap settings
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21192

(cherry picked from commit 8bf7975440)
2025-09-17 09:40:06 -07:00
Seth Hillbrand 0701640c5a Prevent error message when backpropagating
Need to allow only processing other fields

Fixes https://gitlab.com/kicad/code/kicad/issues/21467

(cherry picked from commit 8a081f60b1)
2025-09-17 09:39:14 -07:00
Seth Hillbrand 9fe656a33c Remove namespacing from IPC2581 output
Because some readers maintain global namespace per the standard, we make
sure that we don't overlap names between namespaces but keep the minimum
viable name for each element

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19914

(cherry picked from commit 8f625086b1)
2025-09-17 09:38:48 -07:00
Seth Hillbrand 3fb8f22fd3 Have Find dialog update its cache on board mod
We don't want to find stale references

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21445

(cherry picked from commit 1a8dac9296)
2025-09-17 09:30:30 -07:00
Seth Hillbrand 929930fb3a Show inherited fields in symbols
When working with derived symbols, make sure that we show all of the
fields, not just the ones that are defined in the current level since
they are all attached to the output.

Inherited fields are shown in italics until changed

Fixes https://gitlab.com/kicad/code/kicad/-/issues/11422

(cherry picked from commit ff5a309386)
2025-09-17 09:12:09 -07:00
Seth Hillbrand 4195b874d5 Properly order netlist pages
We cannot reorder these without updating the defines.  So, keep the GUI
in line with the definitions

Fixes https://gitlab.com/kicad/code/kicad/issues/21730

(cherry picked from commit 497afffd48)
2025-09-17 17:59:08 +02:00
Jeff Young ae0d6c80dd Don't overwrite footprint filters created from multiple tokens in footprint column.
(cherry picked from commit 9ddb5465e1)
2025-09-17 13:13:23 +01:00
Jeff Young 4e2f84727c ADDED: support for multiple footprints in the footprint json from HTTP libraries
These are semi-colon-separated.

This is different from the footprint_filters dict entry, which is space-separated.

The first footprint in the footprint dict entry
will go into the "Footprint" field, while the rest
will go into the symbol's footprint filters.

(cherry picked from commit 91405ae34d)
2025-09-17 13:13:17 +01:00
Jeff Young 35889130e8 Formatting and naming conventions.
(cherry picked from commit 2eb3518e49)
2025-09-17 13:10:56 +01:00
Jeff Young 2e7145cc4b ADDED: handling of meta-data items in REST libraries.
"description" and "keywords" must hold string values;
"footprint_filters" can either hold a (space-
separated) string value, or an array of strings.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20750

(cherry picked from commit 1f1f490887)
2025-09-17 13:02:09 +01:00
Jeff Young e0d955993c Catch all errors thrown by nanodbc.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21707

(cherry picked from commit 37df36be62)
2025-09-17 13:00:45 +01:00
Mark Roszko cd7a646fcc Fix up arm assembly compiling on windows 2025-09-15 21:01:50 -04:00
Mark Roszko cb2a09d17c Edit ConfigurePlatform.cmake
(cherry picked from commit bda994c00a)

Co-authored-by: Mark Roszko <mark.roszko@gmail.com>
2025-09-15 23:47:12 +00:00
Mark Roszko d0cb210427 Also set CMAKE_SYSTEM_PROCESSOR in win cross compile
(cherry picked from commit e02008630f)

Co-authored-by: Mark Roszko <mark.roszko@gmail.com>
2025-09-15 23:43:55 +00:00
Seth Hillbrand b89d77bf36 Do not leave stale edges floating around
We assume that all net edges are valid in too many places

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21745
2025-09-15 07:01:18 -07:00
Mark Roszko 7fdeb4796a Manually set CMAKE_CROSSCOMPILING on MSVC.
(cherry picked from commit accb0ddcd1)

Co-authored-by: Mark Roszko <mark.roszko@gmail.com>
2025-09-14 15:00:49 +00:00
Roberto Fernandez Bautista e82088a59b Windows CI: custom vcpkg triplet to ensure shareable binary cache
(cherry picked from commit 8d8bd7253f)
2025-09-13 23:45:41 +02:00
Seth Hillbrand 5a5191361f Second pass at fixing warping and grids
First attempt caused additional problems for #21535

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18196

(cherry picked from commit 2cdeb0cd7c)
2025-09-12 10:52:36 +02:00
jean-pierre charras b47f8f4504 Revert "Remove the forced ancillary grid"
This reverts commit 7b602142b1.
2025-09-12 10:51:29 +02:00
jean-pierre charras 00ae91d6b5 Gerbview: fix broken behavior for deprecated command IPPOS and IPNEG
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21715

(cherry picked from commit 45166bf5c3)
2025-09-11 14:32:17 +02:00
Jeff Young 097e0eadf1 LIBEVAL::CONTEXT manages its own local VALUEs.
Don't use std::unique_ptr as we'll just free the
value right after storing it.

Also, don't try to execute a non-existent function.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21697

(cherry picked from commit 6ab6283e2e)
2025-09-11 12:50:31 +01:00
Jeff Young c8c293dca8 Don't allow stack addresses to escape via long-life handlers.
(cherry picked from commit cff261ce2e)
2025-09-09 14:57:13 +01:00
Jeff Young e6cfd1cdcf Formatting.
(cherry picked from commit b98621c8c8)
2025-09-09 14:57:13 +01:00
Jeff Young 905170b4f4 Only test parameters under the same conditions as we'd write them to the file.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21520

(cherry picked from commit 8ae2ad3586)
2025-09-09 14:57:12 +01:00
Jeff Young 57fa8ea2b9 Use WX_GRID::ClearRows() to avoid assertions.
Fixes KICAD-VM1.

(cherry picked from commit 0b102fc085)
2025-09-09 14:57:12 +01:00
Jeff Young c7730a00c4 Fix typo.
(cherry picked from commit 330361d0cb)
2025-09-09 14:57:12 +01:00
Alex Shvartzkop beaaf3b5be Update translations 2025-09-09 01:19:33 +03:00
dsa-t b644f15d7f Translated using Weblate (Hungarian)
Currently translated at 36.0% (3630 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-09-09 00:18:33 +02:00
Sárkány Lőrinc af398762db Translated using Weblate (Hungarian)
Currently translated at 36.0% (3630 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-09-09 00:18:33 +02:00
CloverGit dfd40b566d Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (10066 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-09-09 00:16:32 +02:00
KB e056ef2693 Translated using Weblate (Hungarian)
Currently translated at 36.0% (3630 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-09-09 00:16:32 +02:00
ZbeeGin 02d0944546 Translated using Weblate (Polish)
Currently translated at 99.5% (10019 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-09-09 00:16:32 +02:00
Nguyễn Ngọc Khánh 1aba70ca37 Translated using Weblate (Vietnamese)
Currently translated at 23.5% (2368 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/vi/
2025-09-09 00:16:32 +02:00
Frank Sonnenberg ff8b82d060 Translated using Weblate (German)
Currently translated at 99.9% (10065 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-09 00:16:31 +02:00
ssantos 68d1e3223a Translated using Weblate (Portuguese)
Currently translated at 98.5% (9922 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt/
2025-09-09 00:16:31 +02:00
Frank Sonnenberg 9e64d52a38 Translated using Weblate (German)
Currently translated at 99.9% (10065 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-09 00:16:31 +02:00
CloverGit f7b3c0226b Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (10066 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-09-09 00:16:31 +02:00
Frank Sonnenberg 17fc05ec45 Translated using Weblate (German)
Currently translated at 99.9% (10065 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-09 00:16:31 +02:00
Pferd O b64f1f2bd3 Translated using Weblate (German)
Currently translated at 99.9% (10063 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-09 00:16:31 +02:00
Frank Sonnenberg b32d8862da Translated using Weblate (German)
Currently translated at 99.9% (10063 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-09 00:16:31 +02:00
Hesham Eina Abdalla ff061e51a0 Translated using Weblate (Arabic)
Currently translated at 1.1% (117 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ar/
2025-09-09 00:16:31 +02:00
Ivan Chuba 6020e6d6f9 Translated using Weblate (Estonian)
Currently translated at 3.5% (357 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/et/
2025-09-09 00:16:31 +02:00
Frank Sonnenberg a3fffc868f Translated using Weblate (German)
Currently translated at 99.9% (10065 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-09 00:16:31 +02:00
Frank Sonnenberg 9670aa1b8a Translated using Weblate (German)
Currently translated at 99.9% (10065 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-09 00:16:30 +02:00
Frank Sonnenberg 85ba5ae406 Translated using Weblate (German)
Currently translated at 99.9% (10065 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-09 00:16:30 +02:00
Pferd O faa3287fd6 Translated using Weblate (German)
Currently translated at 99.9% (10065 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-09 00:16:30 +02:00
ZbeeGin 33ab1d9242 Translated using Weblate (Polish)
Currently translated at 99.5% (10018 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-09-09 00:16:30 +02:00
Frank Sonnenberg 01aa2d7e42 Translated using Weblate (German)
Currently translated at 99.9% (10065 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-09 00:16:30 +02:00
Sárkány Lőrinc b24e2ac00d Translated using Weblate (Hungarian)
Currently translated at 35.9% (3617 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-09-09 00:16:30 +02:00
Frank Sonnenberg 2bc3ef82dc Translated using Weblate (German)
Currently translated at 99.9% (10065 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-09 00:16:30 +02:00
Sárkány Lőrinc 672ba5cd41 Translated using Weblate (Hungarian)
Currently translated at 35.6% (3591 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-09-09 00:16:30 +02:00
Pferd O 905b9ae6c5 Translated using Weblate (German)
Currently translated at 100.0% (10066 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-09 00:16:30 +02:00
CloverGit f81a203c22 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (10066 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-09-09 00:16:29 +02:00
Sárkány Lőrinc 7aa0431a60 Translated using Weblate (Hungarian)
Currently translated at 34.3% (3459 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-09-09 00:16:29 +02:00
Pferd O 57505674f8 Translated using Weblate (German)
Currently translated at 100.0% (10066 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-09 00:16:29 +02:00
2tama3 558bef00cc Translated using Weblate (Japanese)
Currently translated at 100.0% (10066 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-09-09 00:16:29 +02:00
Sárkány Lőrinc 28f9bd797a Translated using Weblate (Hungarian)
Currently translated at 34.2% (3446 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-09-09 00:16:29 +02:00
CloverGit 52d6fc66f1 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (10066 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-09-09 00:16:28 +02:00
Максим Горпиніч ab49e9b29d Translated using Weblate (Ukrainian)
Currently translated at 100.0% (10066 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2025-09-09 00:16:28 +02:00
Henrik Kauhanen f6710e64de Translated using Weblate (Swedish)
Currently translated at 99.9% (10058 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-09-09 00:16:28 +02:00
dsa-t 804154e21d Translated using Weblate (Russian)
Currently translated at 100.0% (10066 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-09-09 00:16:28 +02:00
2tama3 03cb8521bc Translated using Weblate (Japanese)
Currently translated at 100.0% (10066 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-09-09 00:16:28 +02:00
Sárkány Lőrinc 3ee940e3fb Translated using Weblate (Hungarian)
Currently translated at 34.2% (3445 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-09-09 00:16:28 +02:00
Frank Sonnenberg 8b25c3b0fe Translated using Weblate (German)
Currently translated at 100.0% (10066 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-09 00:16:28 +02:00
Pferd O 529cf246d2 Translated using Weblate (German)
Currently translated at 100.0% (10066 of 10066 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-09-09 00:16:27 +02:00
Mark Roszko 7e7c281a64 Fix unit binder dropdown not working on windows
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20626


(cherry picked from commit 0f97f51ba1)

Co-authored-by: Mark Roszko <mark.roszko@gmail.com>
2025-09-08 10:41:03 +00:00
Mark Roszko 350925f10a Shoehorn an improvement to table sorting to keep files more stable
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21652
2025-09-07 10:34:12 -04:00
Mark Roszko 5e8982600a Update ngspice to 45.2
(cherry picked from commit 922699f388)

Co-authored-by: Mark Roszko <mark.roszko@gmail.com>
2025-09-06 17:41:01 +00:00
Mark Roszko e633af9216 Update kicad-vcpkg and ngspice 2025-09-06 12:49:44 +00:00
jean-pierre charras b0f21e5452 DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE: fix a incorrect widgets type
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21662

From master branch
2025-09-06 13:28:41 +02:00
jean-pierre charras d2d582cc00 PCB_DIM_CENTER: fix incorrect bounding box size for 90deg cross.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21643

From master branch
2025-09-05 10:03:44 +02:00
jean-pierre charras 4f11681c4a French translation: fix typo 2025-09-05 09:51:45 +02:00
Mark Roszko 897ebee00f Fix position of package properties that must follow packages
(cherry picked from commit 9f1aa612ec)

Co-authored-by: Mark Roszko <mark.roszko@gmail.com>
2025-09-04 11:16:28 +00:00
Mark Roszko be0a42a09a Fix typo in allegro output for nets
(cherry picked from commit 9de2548064)

Co-authored-by: Mark Roszko <mark.roszko@gmail.com>
2025-09-04 11:09:35 +00:00
Mark Roszko 3069799a2d Fix double quoting tol for some reason
(cherry picked from commit a899da7cb7)

Co-authored-by: Mark Roszko <mark.roszko@gmail.com>
2025-09-04 03:00:05 +00:00
Mark Roszko ad22e53518 Fix the allegro netlist export and move mostly to {fmt}
Weirdly $PACKAGES header got shifted out of position.
Drop generating empty references.
2025-09-03 22:56:25 -04:00
Seth Hillbrand 2ef05eb191 Fix image pasting for MacOS
Apparently, GetImage() on MacOS does not always convert the image
properly.  So do a two-step here to get the Bitmap first, forcing the
conversion and then going back to an image

(cherry picked from commit 9f06d1f66b)
2025-09-03 09:20:12 -07:00
Seth Hillbrand 235e583182 Prevent crash in nettie
We need to avoid collecting invalid layers in the net ties regardless of
their origins

(cherry picked from commit 826f15a103)
2025-09-02 19:19:50 -07:00
Seth Hillbrand 76ce4ec535 Prevent pads from moving inappropriately
Free pads is a setting unless we are in the footprint editor and needs
to be respected by the alignmen tool

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21626

(cherry picked from commit 1f1f8699e0)
2025-09-02 09:11:48 -07:00
Jeff Young 0226481156 Give Mac dock icon menu a kick.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17596

(cherry picked from commit 98b63389c1)
2025-09-01 22:36:37 +01:00
Seth Hillbrand 8fab2d8ca3 Disable snap when moving with keyboard
Keyboard movement is for precision control, so avoid snapping behavior

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21235

(cherry picked from commit 9e326c29db)
2025-09-01 14:23:36 -07:00
Jeff Young 1c6d8b3f5e Don't reference stack variables from a long-life lambda.
In particular, a lambda for conditional menus should
never capture more than `[this]`.  Even the tool's
frame pointer could change.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21615
2025-09-01 12:37:43 +01:00
Jeff Young 32e9ab9b75 Don't reference stack variables from a long-life lambda. 2025-09-01 12:37:43 +01:00
Jon Evans ca0207016e API: Add ability to set enabled board layers and copper layer count 2025-08-31 22:18:53 -04:00
Mark Roszko 9ca1bf63d9 jobsets: fix Replace button to overwrite existing files (#19900)
(cherry picked from commit 5fb55ccb30)

1ea009e6 jobsets: allow replacing existing jobset files

Co-authored-by: Adrián García <adrgarcia@outlook.com>
2025-09-01 01:14:25 +00:00
Jeff Young 7e13870ae3 Allow stitching of graphic shapes.
(cherry picked from commit 1309b436da)
2025-08-31 19:34:22 +01:00
Jeff Young 3c907b5589 Set free vias to graphic net if available.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21578

(cherry picked from commit c47b7459aa)
2025-08-31 19:34:19 +01:00
Jeff Young e9efd9971c Don't set point to a value we're not going to keep.
It just causes flicker.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19947

(cherry picked from commit a2e98fb53c)
2025-08-31 17:15:17 +01:00
Jeff Young 2bf9a6f5d1 Better interactive feedback.
Don't wait for mouse to move before refreshing after a command.

Also fixes a crash bug deleting an item after an
Unstage() (the Unstage() has already deleted the item).

Also fixes a crash when changing label type during
creation of a label produces a mess.

Also Keep cursor aligned to grid when not warping
back to original point.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16828

(cherry picked from commit 9d7db3d135)
2025-08-31 16:13:07 +01:00
jean-pierre charras 42c67b40b1 fix issues in ROUNDRECT: Fix incorrect ROUNDRECT Ctor.
- Do not throw  an error in CTor: this is not the place. It is much easy to
fix the value of incorrect radius.
Moreover, the Ctor is called without catching a throw-ed error in code.
- fix the test about radius validity, broken.

From master branch.
2025-08-31 08:25:14 +02:00
jean-pierre charras 5ae3c55a99 Step exporter: fix overzealous validity test.
When converting poly shapes with arcs in STEP_PCB_MODEL::MakeShapes,
when an error happens, a second try is made using a full polygonal shape.
However a fatal error was emitted at the first attempt, before the second try.
Now at first try, only a debug message is emitted on error. The fatal error
is emitted only if the second try fails.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21589

(cherry picked from commit aeafbe48fe)
2025-08-31 08:00:06 +02:00
Jeff Young 54e9a97b26 ADDED: separate front/back silk and mask colours for STEP export.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21593

(cherry picked from commit acc7b1e508)
2025-08-30 17:46:42 +01:00
Jeff Young 1e3b879d93 Run collision check on correct layer.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21586
2025-08-29 17:12:33 +01:00
Seth Hillbrand 7ca6a93436 Don't both designers with unneeded changes
If we are not asking for fields to be removed when updating, then don't
say we're doing anything if all we have to do is remove fields

(cherry picked from commit ea8206eca5)
2025-08-27 13:31:59 -07:00
jean-pierre charras 05c11d023f GERBER_JOBFILE_WRITER: fix incorrect layer id in File Attributes for inner layers.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21569

(cherry picked from commit 9725ac2215)
2025-08-27 13:28:55 +02:00
jean-pierre charras 996c3d7fa1 PAD: better HitTest( const VECTOR2I& aPosition, int aAccuracy, PCB_LAYER_ID aLayer )
(cherry picked from commit b349f1988a)
2025-08-27 13:27:45 +02:00
jean-pierre charras b204742fe3 Pcbnew: fix teardrop generation for pads having different shapes by layer.
Teardrop generator used pad::HitTest not testing the hit of a specific layer.
It created false test for some complex pads. Now use a test specific to a layer.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21560

(cherry picked from commit 963aa47778)
2025-08-27 11:35:07 +02:00
Emmanuel Vera 2b8e62e0b9 Update power filter for power symbols placement
(cherry picked from commit b5df0ad3eb)
2025-08-27 08:52:24 +02:00
jean-pierre charras c3d122becf French translation cleanup and update 2025-08-27 08:48:02 +02:00
John Beard 43c828474a Pcbnew: fix sensitivity of via placement to large grids
Another case where large grids are overly "grabby" for snaps.

In this case, because the via was moved to the grid-snap first,
and then THAT position was used to look for things like pad-snaps,
the pad snaps would not be found if a coarse grid meant the cursor
was outside the pad.

Instead, use the mouse position when looking for the non-grid snaps
in VIA_PLACER::SnapItem.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/18626
(cherry picked from commit 0f0527bd03)
2025-08-26 23:50:35 +08:00
John Beard 8073185c36 Pcbnew: use R-tree for pad checks in via place tool
Otherwise this is an O(n-pads-on-board) operation for every new
candidate via position.

(cherry picked from commit 3d8803f579)
2025-08-26 23:50:35 +08:00
Jeff Young f1ddcfe799 Expose shape in prop inspector for sheet pins.
(cherry picked from commit 3058bc6355)
2025-08-25 17:21:04 +01:00
jean-pierre charras 9d6f9c84d0 French translation update 2025-08-23 12:41:37 +02:00
jean-pierre charras 680a693c04 DIALOG_CHANGE_SYMBOLS: fix hanging is some cases and shows a better message.
When (happens after converting old schematics to the new format) trying to
update symbols having a bad lib id can hang Eeschema (infinite loop)
It can easily happens when the user has badly converted the schematic.
Also display a error message when happens.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21536

(cherry picked from commit 61aeea9237)
2025-08-23 12:40:48 +02:00
Alex Shvartzkop 4f72dd421a REPORTER's HasMessage indicates that any message got reported, not stored. 2025-08-23 00:27:41 +03:00
dsa-t bc533de0a3 Revert "Use board stackup colors by default in 3D render job."
This reverts commit f7380ae015
2025-08-23 00:09:53 +03:00
dsa-t c08109d63e Revert "Add FOLLOW_PCB, FOLLOW_PLOT_SETTINGS appearance presets to 3D render job dialog."
This reverts commit efc6c3e45e
2025-08-22 21:26:51 +03:00
Jeff Young b11f0a31b9 Read legacy tokens before current tokens.
(So current can overwrite.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21525

(cherry picked from commit 03c230dd64)
2025-08-22 17:03:32 +01:00
Jeff Young f6fabdc8ee Don't double mirror groups.
Also removes previous fix, which had side-effects.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/8121

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20465

(cherry picked from commit 3f85071f91)
2025-08-22 17:03:25 +01:00
Jeff Young 965abb46d0 Avoid div-by-zero.
(cherry picked from commit c287d9a222)
2025-08-22 17:00:04 +01:00
Jeff Young c9f53c607e Fix missing initialization.
(cherry picked from commit de1c6c86ab)
2025-08-22 16:59:45 +01:00
Jeff Young 7b91b51bcf Add spacing for Mac file dialog custom controls.
(cherry picked from commit e841ca1906)
2025-08-22 16:59:29 +01:00
Jeff Young a3354dc352 Always provide a SCH_SCREEN to SCH_COMMIT.
Fixes KICAD-YKY

(cherry picked from commit a0940b10d4)
2025-08-22 16:57:17 +01:00
Jeff Young 6723964cdd Fix copy/pasta.
(cherry picked from commit c2f953e3f7)
2025-08-22 16:48:19 +01:00
Jeff Young df5f4ba541 Improve quasimodal comment.
(cherry picked from commit c85e5c08e4)
2025-08-22 16:46:39 +01:00
Jeff Young 926f41a0f5 Don't show locked shadow in pad preview.
(cherry picked from commit 60dbfd3eec)
2025-08-22 16:44:19 +01:00
Jeff Young db801c8d7e Remove stale comment.
(cherry picked from commit 3f1f9e8e72)
2025-08-22 16:43:35 +01:00
Jeff Young ad433b9468 ADDED: follow-pcb and follow-plot-settings to render job settings.
Also added Follow-board-stackup-colors to both
render job settings and render CLI arguments

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21341

(cherry picked from commit 2e629ca55c)
2025-08-22 16:41:58 +01:00
Jeff Young 1eefb2b70a Allow deletion of nested embedded files.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20581

(cherry picked from commit ea84879b06)
2025-08-22 16:40:10 +01:00
Jeff Young 3d6527c1be Formatting.
(cherry picked from commit 7240128130)
2025-08-22 16:40:07 +01:00
Jeff Young 319530ad01 Grid is already updated by AddFile() callback.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20565

(cherry picked from commit 2c3408aad5)
2025-08-22 16:38:19 +01:00
Jeff Young 24efca1db1 Focus second column control after property grid navigation.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20651

(cherry picked from commit 95da436ddd)
2025-08-22 16:37:49 +01:00
Alex Shvartzkop a009d859d0 Fix some warnings. 2025-08-22 17:40:37 +03:00
Alex Shvartzkop 44a3bb9274 Prevent jobs from affecting each other via reporters when running jobsets from CLI. 2025-08-22 17:40:12 +03:00
Alex Shvartzkop 72e1904708 Fix ODB++ path creation. 2025-08-22 15:07:38 +03:00
Alex Shvartzkop 279a30974e Increase default precision in ODB++ export job dialog. 2025-08-22 14:34:43 +03:00
Alex Shvartzkop efc6c3e45e Add FOLLOW_PCB, FOLLOW_PLOT_SETTINGS appearance presets to 3D render job dialog. 2025-08-22 13:35:14 +03:00
Alex Shvartzkop f7380ae015 Use board stackup colors by default in 3D render job. 2025-08-22 13:34:25 +03:00
Alex Shvartzkop 26b6c28bef EasyEDA import: Add footprint Reference text on F_Fab. 2025-08-21 17:40:53 +03:00
Alex Shvartzkop 8cd7b73b2a EasyEDA import: Build basic Courtyard box for footprints. 2025-08-21 17:08:41 +03:00
Alex Shvartzkop c2d31699bf EasyEDA import: Place component shape and marking on F_Fab. 2025-08-21 17:04:23 +03:00
Alex Shvartzkop 47c5918c3d Add green color indication to length tuning status popup. 2025-08-21 15:38:08 +03:00
Alex Shvartzkop 12cf3f9301 router: Inline drag by track end even if cursor is slightly outside the track shape. 2025-08-21 13:56:25 +03:00
Alex Shvartzkop 013aab58d6 Update golden ERC QA files after 316a9511e8 2025-08-21 12:30:38 +03:00
Alex Shvartzkop 316a9511e8 Show errors before warnings in DRC/ERC. 2025-08-21 00:24:21 +03:00
Alex Shvartzkop 29fadcb931 Update translations 2025-08-21 00:16:37 +03:00
Pedro Moreira d73fecd2a1 Translated using Weblate (Korean)
Currently translated at 98.6% (9933 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ko/
2025-08-20 23:15:12 +02:00
CloverGit 35caf91c31 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.9% (10059 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-08-20 23:15:12 +02:00
2tama3 352cf21ffc Translated using Weblate (Japanese)
Currently translated at 100.0% (10065 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-08-20 23:15:12 +02:00
CloverGit 21335f604f Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.9% (10059 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-08-20 23:15:12 +02:00
Henrik Kauhanen c6b7f90408 Translated using Weblate (Swedish)
Currently translated at 99.9% (10058 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-08-20 23:15:12 +02:00
2tama3 a5dee0c2b1 Translated using Weblate (Japanese)
Currently translated at 100.0% (10065 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-08-20 23:15:12 +02:00
Ettore Atalan bf73ad42ca Translated using Weblate (German)
Currently translated at 99.9% (10062 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-08-20 23:15:11 +02:00
John Beard 7d905948f5 Pcbnew: fix refdes ordering in arrays
The first cell of the array needs to not be reannotated, or it will
skips its own number(s) and take what we expect for the second cell.
The repeats until the last entry, which didn't reannotate anything,
leaving the original numbers. Producing a 'rotation' like 2,3,4,5,1
rather than the expected 1,2,3,4,5.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/20935
(cherry picked from commit f31a109ab4)
2025-08-21 00:26:50 +08:00
John Beard 5c8c0e0648 Pcbnew: fix occasional failure-to-select for dragging
In the Drag tool client filter function, sometimes,
GuessSelectionCandidates trims the collector's item list.
But we used the old contents of the per-type vectors to make
judgements about what was connected.

If a call came in with 2 tracks (e.g. near a knee) and one
was removed by GuessSelectionCandidates, sometimes the
other one would be the one selected for removal in the
2 tracks/0 via case. This leaves the collector empty.

The other case, where the item removed by GuessSelectionCandidates
was removed from the collector is silent, as removing an item
not in the collector is a no-op.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/21517
(cherry picked from commit 105b9fcfe8)
2025-08-20 20:40:01 +08:00
Alex Shvartzkop 4cfa2e3a38 Remove unnecessary newlines in STEP exporter logging. 2025-08-20 14:54:27 +03:00
Alex Shvartzkop eecf0cd685 Remove a Message_Printer holding a stale REPORTER pointer from OCCT.
Fixes KICAD-V8A
2025-08-20 13:57:48 +03:00
Alex Shvartzkop 91e5e81bb4 Record execute command job input and error streams in the log.
Also print the resolved command.
2025-08-20 13:07:29 +03:00
JamesJCode 5b3cd96641 Don't assume SCH_SYMBOLs have a LIB_SYMBOL when resolving embedded files
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21497

(cherry picked from commit ee9e94df04)
2025-08-19 14:17:02 +01:00
John Beard db0967d5c9 Pcbnew: fix bug in private layer selection
USer-defined layers now occur in steps of 2, otherwise
illegal layers for the grid get used.
2025-08-19 16:25:02 +08:00
jean-pierre charras 5165ced528 Eeschema: Reset m_ercRun flag when cleaning all markers.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21113

(cherry picked from commit 54085c4e50)
2025-08-18 17:33:30 +02:00
Alex Shvartzkop eb4f9fa093 Wrap command text control in execute command job dialog. 2025-08-18 17:06:17 +03:00
Alex Shvartzkop 47381f3d90 Disable ibeam cursor setter for search fields on non-OSX.
The ibeam cursor gets stuck on MSW when mouse leaves the field.
2025-08-18 15:53:37 +03:00
jean-pierre charras e697339bc6 PLOT_CONTROLLER::PlotLayer(): fix bug when drill marks must be plotted.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21474

(cherry picked from commit 20d8c9c7f9) and
(cherry picked from commit 2afd752bbc)
2025-08-18 11:48:07 +02:00
jean-pierre charras 6159cee2b0 Kicad manager: display the number of GDI objects in About Dialog (Windows only)
On Windows, if the number of GDI objects reach a limit (usually 10000) some can
be not shown, thus creating  a strange behavior not easy to diagnose.
Displaying the number in use can help.

(cherry picked from commit de208b3f00)
2025-08-18 09:07:31 +02:00
jean-pierre charras 3460b33ccf DIALOG_IMPORT_SETTINGS: fix some minor issues.
From master branch.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21483
2025-08-18 08:43:40 +02:00
jean-pierre charras 5baaa89131 Reapply "SHAPE_ARC::GetCentralAngle(): better algo to calculate actual arc."
This new algo is now tested since more than 2 months, so it should be good.
This reverts commit 88ad461514.
2025-08-18 08:25:33 +02:00
Wayne Stambaugh d45a38f086 Begin version 9.0.5 development. 2025-08-17 15:48:17 -04:00
Wayne Stambaugh 19b2df4693 Tag stable version 9.0.4. 2025-08-17 15:32:36 -04:00
Alex Shvartzkop a883bd2f82 Update translations 2025-08-17 01:15:57 +03:00
dsa-t c90d61a870 Translated using Weblate (Spanish)
Currently translated at 86.1% (8666 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es/
2025-08-17 00:13:38 +02:00
Gaston Schelotto d419d09dc1 Translated using Weblate (Spanish)
Currently translated at 86.0% (8664 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es/
2025-08-17 00:12:37 +02:00
Максим Горпиніч d717bcbdc9 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (10065 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2025-08-17 00:11:35 +02:00
Sárkány Lőrinc 58fd4c71b9 Translated using Weblate (Hungarian)
Currently translated at 34.1% (3441 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-08-17 00:11:35 +02:00
Максим Горпиніч f494da6cc5 Translated using Weblate (Ukrainian)
Currently translated at 95.1% (9577 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2025-08-17 00:11:35 +02:00
Sárkány Lőrinc 915d0bda9e Translated using Weblate (Hungarian)
Currently translated at 34.1% (3436 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-08-17 00:11:35 +02:00
Максим Горпиніч dfb17e7d3a Translated using Weblate (Ukrainian)
Currently translated at 92.4% (9306 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2025-08-17 00:11:35 +02:00
Максим Горпиніч 5470a916a4 Translated using Weblate (Ukrainian)
Currently translated at 91.7% (9234 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2025-08-17 00:11:35 +02:00
Sárkány Lőrinc 83b52c2dab Translated using Weblate (Hungarian)
Currently translated at 34.0% (3425 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-08-17 00:11:35 +02:00
Frank Sonnenberg 7396aefc3b Translated using Weblate (German)
Currently translated at 99.9% (10062 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-08-17 00:11:34 +02:00
2tama3 b31e878118 Translated using Weblate (Japanese)
Currently translated at 100.0% (10065 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-08-17 00:11:34 +02:00
Sárkány Lőrinc 016a884266 Translated using Weblate (Hungarian)
Currently translated at 33.9% (3420 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-08-17 00:11:34 +02:00
Gaston Schelotto 519c28d93e Translated using Weblate (Spanish)
Currently translated at 86.1% (8666 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es/
2025-08-17 00:11:34 +02:00
CloverGit 8163d10285 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.9% (10056 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-08-17 00:11:34 +02:00
YÜKSEL AÇIKGÖZ 16b326967a Translated using Weblate (Turkish)
Currently translated at 99.9% (10064 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-08-17 00:11:34 +02:00
Jan Straka d1de8754dc Translated using Weblate (Czech)
Currently translated at 78.2% (7875 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2025-08-17 00:11:34 +02:00
ZbeeGin 02bb2e84f7 Translated using Weblate (Polish)
Currently translated at 99.3% (10000 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-08-17 00:11:34 +02:00
ssantos 22131142ab Translated using Weblate (Portuguese)
Currently translated at 98.6% (9928 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt/
2025-08-17 00:11:34 +02:00
Francisco Jose Rey eaa9669e4b Translated using Weblate (Spanish)
Currently translated at 85.7% (8627 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es/
2025-08-17 00:11:34 +02:00
Stefan Bjornelund the Gnome af05b8ef41 Translated using Weblate (Swedish)
Currently translated at 99.9% (10058 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-08-17 00:11:34 +02:00
Henrik Kauhanen 95cd898f7f Translated using Weblate (Swedish)
Currently translated at 99.9% (10058 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-08-17 00:11:33 +02:00
dsa-t ed42d8e3b8 Translated using Weblate (Russian)
Currently translated at 100.0% (10065 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-08-17 00:11:33 +02:00
co8 j b373041454 Translated using Weblate (Japanese)
Currently translated at 100.0% (10065 of 10065 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-08-17 00:11:33 +02:00
Mark Roszko 09628aefbb Reuse the visibility bitmap bundles to reduce gdi object exhaustion
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21386
2025-08-15 13:02:36 +00:00
Seth Hillbrand 7a1866c6d5 Fix copy pasta causing crash
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21486

(cherry picked from commit a45cb0015a)
2025-08-14 16:28:51 -07:00
Seth Hillbrand c4400e6857 Keep the drill results visible
When clicking "Generate", we want to see if the drill action was
successful so we must avoid closing the window prematurely

(cherry picked from commit 38ee4359eb)
2025-08-14 15:49:26 -07:00
Alex Shvartzkop 9de49e3ac5 Altium PCB import: fix 3D models rotation when 3D body is on bottom side.
See https://gitlab.com/kicad/code/kicad/-/issues/18450
2025-08-15 01:14:14 +03:00
Alex Shvartzkop 1fc06dd44a Fix zones having no net when opening Altium or Legacy PCBs.
At least these importers set the zone net code before zone layers.

d3b80ae2aa caused IsOnCopperLayer()
to return false in BOARD_CONNECTED_ITEM::SetNetCode,
so the net code was getting set to 0.
2025-08-14 21:10:36 +03:00
Alex Shvartzkop 6d24a4f946 Remove unused variable. 2025-08-14 17:46:07 +03:00
Alex Shvartzkop 87949aba38 Remove unused method. 2025-08-14 17:46:04 +03:00
John Beard 9292bf6514 Pcbnew: array tool: fix radio button not intialising
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/20723
(cherry picked from commit ebc86d1fa4)
2025-08-12 17:13:30 +08:00
John Beard 612601bb65 Eeschema: propagate alt mode icons to render settings on prefs change
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/21462
(cherry picked from commit ea8d0519bd)
2025-08-11 21:13:38 +08:00
Mike Williams f371dfb478 schematic: avoid crash on missing tool
(cherry picked from commit adde48010e)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21454
2025-08-09 17:39:54 +03:00
Wayne Stambaugh 440e8c9669 Tag stable version 9.0.4 release candidate 1. 2025-08-08 14:22:07 -04:00
Seth Hillbrand 111c4fec5b Do not create teeny segments in outline
bezier misalignment in the outline can cause 1nm segments which will
break STEP export.  Use our chaining epsilon setting to get the minimum
distance that we require two points to be separated to consider them
distinct
2025-08-08 09:20:44 -07:00
John Beard acb005f044 Netclass: allow multiple assignments with the same pattern
This isn't really a problem, and overwriting the entry allows
for silent data loss by making a new assignment with the
same pattern as an existing one.

The resolve netclasses are de-duplicated later, so it's even
OK if the whole assignment is duplicated (in theory), but
continue to clean these up.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/21316
(cherry picked from commit db97d77544)
2025-08-08 22:46:35 +08:00
JamesJCode 9af8594db9 Ignore empty net class fields in net class ERC
(cherry picked from commit 88c09517f2)
2025-08-08 14:37:34 +01:00
John Beard dcb8f7f9c7 Pcbnew: fix outline drawing of PTH pads
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/21448
(cherry picked from commit 6bdfe2bce6)
2025-08-07 23:07:28 +08:00
Mark Roszko 143819d735 Use the full bitmap bundles in ACTION_MENU 2025-08-06 20:42:37 -04:00
John Beard 57d10fde70 Eeschema: fix alt mode resetting on symbol update
GetName is the alt name if it's set, so use GetBaseName.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/21439
(cherry picked from commit a8d69c856f)
2025-08-07 01:19:23 +08:00
John Beard 41a3516f18 Eeschema: fix alt pin icon/OP current preference resetting
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/21440
(cherry picked from commit 8023227829)
2025-08-07 01:02:25 +08:00
Jeff Young ac270d16eb Don't set m_IsPreviewer to force 3D models.
It has unintended side-effects (such as showing
user drawings and user comments layers).

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21428

(cherry picked from commit b2ecaf1ddc)
2025-08-06 11:23:52 +01:00
dsa-t 39d2499cd7 Fix erroneous hex parsing when opening legacy PCB files on MSVC.
e.g. "FFFF8007" does not fit into signed "long" type (4 bytes on MSVC),
so strtoul returns 0x7FFFFFFF and sets errno to EINVAL.


(cherry picked from commit 39978ab2e2)

Co-authored-by: Alex Shvartzkop <dudesuchamazing@gmail.com>
2025-08-05 23:14:41 +03:00
Jeff Young 4f59aaf2be Fix broken tentvias read logic.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20840
2025-08-05 16:20:41 +01:00
Jeff Young 462c7673eb Frame needs an extra kick to toggle grid visibility.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21409

(cherry picked from commit dc7312efd6)
2025-08-05 16:20:41 +01:00
Alex Shvartzkop a46f75eed2 Update translations 2025-08-05 15:14:47 +03:00
CloverGit 28d4ba54fb Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.9% (10054 of 10062 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-08-05 14:13:44 +02:00
dsa-t e0fe0411f9 Translated using Weblate (Russian)
Currently translated at 100.0% (10062 of 10062 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-08-05 14:13:44 +02:00
2tama3 6fad082d45 Translated using Weblate (Japanese)
Currently translated at 100.0% (10062 of 10062 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-08-05 14:13:44 +02:00
Alex Shvartzkop 44ef026f1c Update generated custom DRC rules help files, required for Weblate. 2025-08-05 15:05:58 +03:00
Alex Shvartzkop e43bc82053 Revert "Ignore autogenerated files"
This reverts commit 83b8bdf137.
2025-08-05 14:37:51 +03:00
Jon Evans 997cee8120 pcbnew/api: Expose pad-to-die length
Closes #21346.


(cherry picked from commit 29c733c651)

Co-authored-by: Ben Gamari <ben@smart-cactus.org>
2025-08-04 21:01:08 -04:00
John Beard 026280780c Pcbnew: when moving, select move origin by mouse, not cursor
Selecting the origin fby the cursor position makes it impossible
to select a item further from a grid point than another. This is
especially noticeable when selecting pins while using large grids

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/10471
(cherry picked from commit 8c4c3b7e5e)
2025-08-05 04:35:00 +08:00
John Beard 1bb42bcb59 Pcbnew: improve snapping: avoid cases where a valid snap is excluded
Trimming items that don't have an "involved" real item needs to be
done at the time that the nearest point is found. Otherwise, if
there are multiple nearest points at the same location, and an
'uninvolved' one is chosen, it will later be discarded, and the
grid snap will be the fallback.

The effect of this is that grid snaps can appear to be very
agressive and also inconsistent, as it sometimes uses the item
snap (when it happens to choose an "involved" one) and sometimes not.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/21422

(cherry picked from commit 3606d25ab6)
2025-08-05 04:34:59 +08:00
Seth Hillbrand 7b602142b1 Remove the forced ancillary grid
If you are moving an object, we already have the axis snap, forcing the
grid to center at the start of the move prevents us from easily aligning
elements by moving them.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18196

(cherry picked from commit 29dc45d584)
2025-08-04 12:01:24 -07:00
Seth Hillbrand 2e5be57499 Pass hotkeys from search pane to frame
If the search pane doesn't handle the key, push it through the frame
hotkey handling system

Fixes https://gitlab.com/kicad/code/kicad/-/issues/12474

(cherry picked from commit 322c08d5f0)
2025-08-04 11:58:44 -07:00
Seth Hillbrand dc0b408eeb Optimize zone-zone clearance checks
Improve the CREEPAGE_GRAPH:::GeneratePaths to skip unused checks.
Handle zone-zone paralellism better

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21353

(cherry picked from commit faeaee824a)
2025-08-04 11:47:17 -07:00
Seth Hillbrand 4360db3a09 Break out of the zone tool on complete
After placing a zone, we want to be able to immediately edit the zone
points.  But in the zone tool, we have the intermediate context menu
that doesn't help, so breaking back to the selection tool simplifies
that workflow

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21319

(cherry picked from commit e04c5783cf)
2025-08-04 11:45:16 -07:00
Seth Hillbrand a4e95c500f Prevent command line applications handling dark mode
Double-check before getting background color from invalid m_parent also

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21317

(cherry picked from commit 9cb3a37b6f)
2025-08-04 11:44:23 -07:00
Salvador E. Tropea 541a727e15 Always use PCB_PLOTTER::PlotJobToPlotOpts for plotter exports
Removes PCBNEW_JOBS_HANDLER::populateGerberPlotOptionsFromJob
2025-08-04 07:23:50 -04:00
John Beard de31b133e1 Pcbnew: fix mistaken angle int cast in arc properties
(cherry picked from commit 2b69e118e0)
2025-08-04 17:42:19 +08:00
Jeff Young d6e5d7b6be More discriminatory test for 2-1/2 digits after decimal. 2025-08-03 21:35:13 +01:00
jack2bs b7f823227e bitmap2component: Adding file drag and drop
(cherry picked from commit 8c017c7503)
2025-08-03 10:02:39 -04:00
Jeff Young c1f3b5aab9 nullptr safety
(cherry picked from commit 57f3f22aa4)
2025-08-03 13:32:54 +01:00
Jeff Young e27424d1b4 Attempt to fix non-Clang builds.
(cherry picked from commit 25ad1f051e)
2025-08-03 13:32:31 +01:00
Jeff Young 09cbdd8db7 Support dash-dot-dot line style in DXF.
Fixes KICAD-TY8.

(cherry picked from commit 91b7bc0843)
2025-08-03 13:31:14 +01:00
Jeff Young c0c8910207 Move search handlers to std::shared_ptr.
(cherry picked from commit 5accdc2d94)
2025-08-03 13:31:09 +01:00
Jeff Young 23f1e287aa See if copying netclasses is responsible for KICAD-V6Z (and others).
(cherry picked from commit a75fd2bb23)
2025-08-03 13:30:22 +01:00
Jeff Young 68f4a6117e Copy c'tor / operator= safety.
Also fixes a memory leak of search pane handlers.

(cherry picked from commit 8c85cd43f3)
2025-08-03 13:09:58 +01:00
Jeff Young 3bdeb84b51 Don't allow default copy c'tor to copy arrays of pointers.
Fixes KICAD-SJ2.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21408

(cherry picked from commit d91cce930f)
2025-08-03 12:54:24 +01:00
Jeff Young b907fe412f Don't attempt to fetch last char of empty string.
Fixes KICAD-5ED.
Fixes KICAD-RC1.
Fixes KICAD-W0B.

(cherry picked from commit ed40391bde)
2025-08-01 17:40:04 +01:00
Jeff Young 25d89307c9 Nullptr safety.
Fixes KICAD-P7Q.

(cherry picked from commit ac3eac9ed0)
2025-08-01 17:40:04 +01:00
Jeff Young d917ff6893 Don't assume a tree root.
Fixes KICAD-Y72.

(cherry picked from commit 6c6c02a329)
2025-08-01 17:40:04 +01:00
Jeff Young 0da6ca2300 Don't clip table borders.
(cherry picked from commit 6ac5ca7fc4)
2025-08-01 17:40:04 +01:00
Jeff Young f27ed9857c Bump short-form-mm from 2 digits after decimal to 2-1/2.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21357

(cherry picked from commit b1e686be97)
2025-08-01 17:40:04 +01:00
Jeff Young d88e5972e7 Similar local labels on different sheets are fine
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21334

(cherry picked from commit 3eb66e1b3d)
2025-08-01 17:40:04 +01:00
Jeff Young 6867a77da0 Prevent stale selections.
(cherry picked from commit fa7d67d80a)
2025-08-01 17:40:04 +01:00
Jeff Young 6e4ca91229 Formatting.
(cherry picked from commit 7a4107b985)
2025-08-01 17:40:03 +01:00
John Beard 6f11df5ad6 Pcbnew: prevent a timer callback happening during ACTIVATION_HELPER destruction
Speculative fix, as I couldn't reproduce. But this seems like it could
cause the reported issue, though I think ~ACTIVATION_HELPER and the
callback should both be on the same event loop, so it's not clear to me
that it is exactly the issue.

And add a wxCHECK to at least bail safely before handing a nullptr off to the
later functions.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/20693
(cherry picked from commit 8a4496f458)
2025-08-01 21:25:43 +08:00
Marek Roszko e610bc7ec5 Allow QA to create new SCHEMATIC instances rather than reusing a single container
Why make cleanup complicated lol
2025-07-31 23:48:32 -04:00
Marek Roszko 480c2f0277 Use m_project member instead of Prj() inside SCHEMATIC 2025-07-31 23:47:04 -04:00
Marek Roszko e49d44ea25 Remove the callback on RecomputeIntersheetRefs 2025-07-31 23:44:55 -04:00
Marek Roszko e29df06568 Split part of RecalculateConnections to SCHEMATIC, fix cli loader to call RecalculateConnections which fixes rules areas
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20528
2025-07-31 23:43:18 -04:00
Marek Roszko e95ae05dcf Move CleanUp to SCHEMATIC 2025-07-31 23:34:22 -04:00
Marek Roszko 651fb1118f Move BreakSegment(s/OnJunction) out of SCH_EDIT_FRAME 2025-07-31 23:11:47 -04:00
Alex Shvartzkop b5c2ed30be Update translations 2025-07-31 19:38:28 +03:00
CloverGit 037a58cb76 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.9% (10055 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-07-31 18:36:20 +02:00
2tama3 c66cb1a2ee Translated using Weblate (Japanese)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-07-31 18:36:20 +02:00
Jan Straka 2303e72e2c Translated using Weblate (Czech)
Currently translated at 78.2% (7871 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2025-07-31 18:36:20 +02:00
2tama3 35a05ecec5 Translated using Weblate (Japanese)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-07-31 18:36:20 +02:00
Mustafa Selçuk ÇAVDAR fd20a9acff Translated using Weblate (Turkish)
Currently translated at 99.5% (10015 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-31 18:36:19 +02:00
Stefan De Raedemaeker 1a1917a0a9 Translated using Weblate (Dutch)
Currently translated at 89.8% (9044 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/nl/
2025-07-31 18:36:19 +02:00
co8 j 8949dd8f11 Translated using Weblate (Japanese)
Currently translated at 99.9% (10063 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-07-31 18:36:19 +02:00
Stefan De Raedemaeker dec0ada04f Translated using Weblate (Dutch)
Currently translated at 88.2% (8885 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/nl/
2025-07-31 18:36:19 +02:00
Sárkány Lőrinc c6fbf80684 Translated using Weblate (Hungarian)
Currently translated at 33.8% (3406 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-07-31 18:36:19 +02:00
ZbeeGin ffe8521a8a Translated using Weblate (Polish)
Currently translated at 99.3% (10000 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-07-31 18:36:19 +02:00
Sárkány Lőrinc efdebaa529 Translated using Weblate (Hungarian)
Currently translated at 32.9% (3316 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-07-31 18:36:18 +02:00
Pferd O 639f9fce1f Translated using Weblate (German)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-07-31 18:36:18 +02:00
Alex Shvartzkop 2a36da6723 Fix DPI value in Cairo printing on MSW.
Linux will need a different fix.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20477 on MSW
2025-07-29 17:07:35 +03:00
Seth Hillbrand 38f4f04a18 Prevent radius from overflowing 2025-07-28 15:57:52 -07:00
Jeff Young 7679413f2f Honour board's PAGE_INFO when plotting drill maps.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21393

(cherry picked from commit d7b5456dfb)
2025-07-28 20:35:05 +01:00
Jeff Young 149cac25f4 Don't remove nonexistent entries from wxArrayStrings (KICAD-PG7)
(cherry picked from commit 51e244d7d4)
2025-07-28 20:34:52 +01:00
Jeff Young be7cf117a5 Shutdown safety (KICAD-N5Y).
(cherry picked from commit 59caea4344)
2025-07-28 20:34:39 +01:00
Jeff Young 083dc651b4 Improve debugging (KICAD-XS0).
(cherry picked from commit 6cfe5ecc94)
2025-07-28 20:34:31 +01:00
Jeff Young e7d47265f8 Cleanup (KICAD-XZP).
(cherry picked from commit 65f4524164)
2025-07-28 20:33:43 +01:00
Jeff Young 2a246801eb Handle undo when changing new item before placing.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21391

(cherry picked from commit a191d4e6e5)
2025-07-28 20:33:32 +01:00
Jeff Young 9d2b6ce033 Fix padstack/boundingbox issue.
Earlier fix to stop clearing the boundingRadius
for each unique layer also cleared it for
ERROR_INSIDE (when we aren't rebuilding it).

Re-order whole routine to make this more clear.

(cherry picked from commit 046c36d060)
2025-07-28 20:14:20 +01:00
Jeff Young e9a331f2df Fix deficient c'tors and operator=.
(cherry picked from commit 60ec152d90)
2025-07-28 20:13:23 +01:00
Jeff Young e582a8ced9 Honour pad holes when hit-testing.
They may be bigger than the pad.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21331

(cherry picked from commit c58b1146de)
2025-07-28 20:13:13 +01:00
Seth Hillbrand 64f8258f1f Don't prompt for rule areas and no-net shapes
Highlighting and placing vias will pop up a potential net list. This
should not include things without nets

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21381

(cherry picked from commit dd41e2b00b)
2025-07-25 16:41:38 -07:00
Seth Hillbrand 21ed7a0641 Avoid unmapped layers
ViewGetLayers returns the item layer even if it is invalid.  We filter
this out at the base and skip items that cannot be displayed in the
view.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21368

(cherry picked from commit d538f8d848)
2025-07-24 13:41:41 -07:00
Seth Hillbrand e7eedc7567 Junctions are wires in schematic editor
Treat junctions like wires for the purposes of the selection filter.
Allows selecting them together with wires and avoids grouping with
"Other Items" which is confusing

(cherry picked from commit 16f82d1de5)
2025-07-24 10:53:36 -07:00
Seth Hillbrand 87f375b54f Align import brd file icon with grid
(cherry picked from commit 740f55fd30)
2025-07-23 17:38:13 -07:00
Seth Hillbrand 562d0ff296 Force trimming whitespace in env vars
Nothing good can come of leading or trailing whitespace in environment
variables.  They don't resolve correctly and you can't see why

(cherry picked from commit 8d65217fda)
2025-07-23 17:38:09 -07:00
Seth Hillbrand 609296c5e6 Don't protect arbitrary paths
We only need to protect our predefined variables, not ones that the user
might create that uses the same pattern

(cherry picked from commit d195e93ebe)
2025-07-23 17:38:08 -07:00
Seth Hillbrand 2b4544cfea Optimize zone-zone checks in filler
Teardrops are calculated as zones, so when we create a board with
thousands of teardrops, we don't want to run O(n^2) checks on the
clearance between multiple teardrops.  Instead, we can check only the
clearance where the two zones have the potential to interact

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21226

(cherry picked from commit b165240118)
2025-07-22 09:53:46 -07:00
Marek Roszko e31b0950a8 Add missing demo installs
(cherry picked from commit 3d15317282)
2025-07-22 18:53:06 +08:00
Jeff Young 435f0176dc Don't promote pads to footprints for align/distribute.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21337
2025-07-21 21:30:12 +01:00
Jeff Young 7c97ed6f16 Fix merge error.
(cherry picked from commit d8cbafe858)
2025-07-21 21:05:44 +01:00
Jeff Young 17af4aa5ce Make auto-created labels work with new multi-create architecture.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21306

(cherry picked from commit 5fb40f152c)
2025-07-21 21:03:26 +01:00
Jeff Young 41effa1556 See if we can't fix the ever-growing window bug.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20120

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18543

Fixes https://gitlab.com/kicad/code/kicad/-/issues/10609

(cherry picked from commit 9d074c1679)
2025-07-21 21:02:01 +01:00
Jeff Young e5f97dac98 Code clarity.
(cherry picked from commit da8abffea4)
2025-07-21 21:01:16 +01:00
Jeff Young f149c48fc8 Formatting.
(cherry picked from commit f1686cc568)
2025-07-21 21:01:13 +01:00
Jeff Young db02ccfc40 Naming conventions.
(cherry picked from commit c49156fb35)
2025-07-21 21:01:09 +01:00
Seth Hillbrand 8bbde3bfc6 Speed up massively slow outline convert
Avoid unneeded comparisons for segments that will never touch.  Helps in
pathological cases of O(10000+) segments in an outline

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21352

(cherry picked from commit d53cbe638f)
2025-07-19 17:34:03 -07:00
Seth Hillbrand 9ba20b1a69 Remove context menu from position interactively
It was marked "TODO: This does not work" and indeed it crashed when
trying to use it on some items.  When it did not crash, it did not show
a menu, so the TODO was in fact accurate

(cherry picked from commit cb1bf5613e)
2025-07-18 16:56:44 -07:00
jean-pierre charras 5e1e1df3c7 French translation update 2025-07-18 18:19:22 +02:00
Seth Hillbrand 90507e11a3 Update translations 2025-07-18 08:10:34 -07:00
CloverGit d2eaa8b096 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-07-18 16:51:00 +02:00
Stefan Bjornelund the Gnome bab7a98842 Translated using Weblate (Swedish)
Currently translated at 99.9% (10056 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-07-18 16:51:00 +02:00
2tama3 1ec3bf4da9 Translated using Weblate (Japanese)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-07-18 16:51:00 +02:00
Luka Borkovic ca40cb3ef8 Translated using Weblate (Serbian)
Currently translated at 18.9% (1909 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sr/
2025-07-18 16:51:00 +02:00
Luka Borkovic 87fe50f323 Translated using Weblate (Serbian)
Currently translated at 18.9% (1909 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sr/
2025-07-18 16:51:00 +02:00
Luka Borkovic afed6765b0 Translated using Weblate (Serbian)
Currently translated at 18.9% (1909 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sr/
2025-07-18 16:50:59 +02:00
Sárkány Lőrinc 7e18c2689f Translated using Weblate (Hungarian)
Currently translated at 32.9% (3318 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-07-18 16:50:59 +02:00
Sárkány Lőrinc 70d399169a Translated using Weblate (Hungarian)
Currently translated at 32.9% (3318 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-07-18 16:50:59 +02:00
CloverGit 2a65e2fcfd Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-07-18 16:50:59 +02:00
co8 j 9ed0613fc8 Translated using Weblate (Japanese)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-07-18 16:50:59 +02:00
CloverGit 8a088e96d0 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.9% (10062 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-07-18 16:50:59 +02:00
Pferd O 5ddddc0628 Translated using Weblate (German)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-07-18 16:50:59 +02:00
Pferd O a043d6d0bb Translated using Weblate (German)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-07-18 16:50:59 +02:00
Luka Borkovic ec655d19ae Translated using Weblate (Serbian)
Currently translated at 18.8% (1899 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sr/
2025-07-18 16:50:59 +02:00
Luka Borkovic 1513611839 Translated using Weblate (Serbian)
Currently translated at 18.8% (1899 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sr/
2025-07-18 16:50:59 +02:00
ZbeeGin 890e99c1f1 Translated using Weblate (Polish)
Currently translated at 99.7% (10036 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-07-18 16:50:59 +02:00
Sárkány Lőrinc 38362dd872 Translated using Weblate (Hungarian)
Currently translated at 32.8% (3310 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-07-18 16:50:59 +02:00
Sárkány Lőrinc 9fadc3536c Translated using Weblate (Hungarian)
Currently translated at 32.8% (3310 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-07-18 16:50:59 +02:00
Sárkány Lőrinc a2bcf846b4 Translated using Weblate (Hungarian)
Currently translated at 32.8% (3310 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-07-18 16:50:58 +02:00
Sárkány Lőrinc db50dc29c4 Translated using Weblate (Hungarian)
Currently translated at 32.8% (3310 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-07-18 16:50:58 +02:00
Sárkány Lőrinc d5962f45e7 Translated using Weblate (Hungarian)
Currently translated at 32.8% (3310 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-07-18 16:50:58 +02:00
Pferd O 2044e6ee5f Translated using Weblate (German)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-07-18 16:50:58 +02:00
Pferd O eb7eef2007 Translated using Weblate (German)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-07-18 16:50:58 +02:00
CloverGit f22b398721 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.9% (10062 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-07-18 16:50:58 +02:00
YÜKSEL AÇIKGÖZ 0c824a3c38 Translated using Weblate (Turkish)
Currently translated at 99.9% (10063 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-18 16:50:58 +02:00
YÜKSEL AÇIKGÖZ 1a086065f1 Translated using Weblate (Turkish)
Currently translated at 99.9% (10063 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-18 16:50:58 +02:00
Luka Borkovic b6c303bf63 Translated using Weblate (Serbian)
Currently translated at 18.8% (1898 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sr/
2025-07-18 16:50:58 +02:00
2tama3 1a7c22a75e Translated using Weblate (Japanese)
Currently translated at 99.9% (10062 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-07-18 16:50:58 +02:00
Sárkány Lőrinc a9d56c2082 Translated using Weblate (Hungarian)
Currently translated at 32.4% (3261 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-07-18 16:50:57 +02:00
Pferd O 66a0b874ff Translated using Weblate (German)
Currently translated at 99.8% (10051 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-07-18 16:50:57 +02:00
Pferd O 493aa263b9 Translated using Weblate (German)
Currently translated at 99.8% (10051 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-07-18 16:50:57 +02:00
Pferd O 3fac3e83cd Translated using Weblate (German)
Currently translated at 99.8% (10051 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-07-18 16:50:57 +02:00
Pferd O e3c528f2cf Translated using Weblate (German)
Currently translated at 99.8% (10051 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-07-18 16:50:57 +02:00
Pferd O c0dec56076 Translated using Weblate (German)
Currently translated at 99.8% (10051 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-07-18 16:50:57 +02:00
Seth Hillbrand bc02818134 Handle model projection in Altium import
If the model is seated on the back, KiCad just needs to rotate and
offset for the board (if it is placed)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/213356

(cherry picked from commit 8556bd45c2)
2025-07-17 16:48:53 -07:00
Seth Hillbrand 8521ec583c Reverse order in HPGL
Satisfies the request for TRUMPF laser

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21336
2025-07-17 11:01:53 -07:00
Seth Hillbrand c45394b0f2 Properly align imported dimensions
The height depends on which direction the dimension is being pulled.

Also try to mimic Altium's automatic arrow in/out style

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21329

(cherry picked from commit e8219c4300)
2025-07-17 10:34:51 -07:00
Jeff Young 8bf44292f5 Fix one more missing addParamsForWindow(). 2025-07-17 16:36:45 +01:00
Jeff Young 3949647754 Must use addParamsForWindow to init WINDOW_SETTINGs structs.
(cherry picked from commit beb83e87ea)
2025-07-17 16:31:32 +01:00
Jeff Young ac1aad35b7 Fix typo.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21328
2025-07-17 13:43:10 +01:00
Jeff Young a51a705ea4 Don't clear pin-assignments when changing sim model.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19533

(cherry picked from commit b4dcb05208)
2025-07-17 12:52:02 +01:00
Jeff Young f10d11d36c Honour renderSettings' default font.
This still leaves a few things out in the cold,
such as hit-testing and polygon generation.
But at least it allows us to plot with a default
font.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19031

(cherry picked from commit e230d5164d)
2025-07-17 10:05:07 +01:00
Jeff Young 593537c52e Honour front/back layer types for user layer.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21284

(cherry picked from commit 0495828a55)
2025-07-17 10:05:07 +01:00
Seth Hillbrand 8edc7b8b40 Fix sheet number access
getPageNumber is actually asking for the parent path rather than the
sheet path itself.  Without this, we don't match the cached page number
and instead match against the virtual page number that is position
dependent

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21296
2025-07-16 16:34:47 -07:00
Wayne Stambaugh 63ec5af8a1 Do not refresh PCB canvas when clearing every selected item.
It only needs to be done once after all of the items are updated.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21332
2025-07-16 16:45:13 -04:00
Seth Hillbrand 6fcbf3f0d4 Remove temporary file saving step
We implemented the intermediate temporary file in order to avoid issues
during save.  Unfortunately, this is heavily system-dependent and seems
to cause problems with unusual setups.  Now that we cache writing using
the prettifier, the errors during output will not affect the existing
file

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21330

(cherry picked from commit f6b599e155)
2025-07-16 09:22:25 -07:00
Seth Hillbrand 0a2ee53b2e One. More. Time.
(cherry picked from commit 5235b8e3ca)
2025-07-15 17:23:46 -07:00
Seth Hillbrand 9a9f7f4d1b Correct exact language in help message
(cherry picked from commit 6120b430d4)
2025-07-15 15:28:22 -07:00
Seth Hillbrand 15bc336b1d Add some additional context for the sync pin error
When editing using synchronized pins mode, you place a pin on all units
but if you already have a pin that only exists on one unit, you might
get a confusing error.  This helps nudge people with to to resolve it.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18466

(cherry picked from commit 5f48e2cbf3)
2025-07-15 15:28:22 -07:00
Seth Hillbrand d9cfb94281 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
2025-07-15 15:24:16 -07:00
John Beard 28a4164c9a Pcbnew: polygon boolean subtraction: area ordering is more robust
This will also handle the case when more than two items are subtracted,
e.g. many small items witrhin one larger item.  Again, thanks to
Kliment for a smart idea!

(cherry picked from commit 9de414d1b3)
2025-07-16 04:30:21 +08:00
John Beard 95228d092c Pcbnew: polygon booleans - try subtraction in both orders if null result
While there is technically some kinds of defined order (last selected item is
'A' in the 'A - B (- C...)' operation, it's easy to drag select and then
get a null result.

So if this happens to a non-commutative operation, try again in the
reverse order. In the usual case (2 items), this will get what the user,
presumably, wants. If there are more than 2, it will either work, or the
user can undo and try merging the "B" operand before subtracting, or do
them one at a time (at which point the order-reverse logic will help
again).

Thanks to Kliment for an this usability suggestion!

(cherry picked from commit 8d07eb7f24)
2025-07-16 04:30:21 +08:00
John Beard 55117ba314 Pcbnew: handle circles in polygon booleans
(cherry picked from commit 401eba4e91)
2025-07-16 04:30:21 +08:00
John Beard 79a07fa52d Pcbnew: polygon boolean ops: clear arcs first to avoid assert
(cherry picked from commit f36af7e08a)
2025-07-16 02:32:42 +08:00
John Beard 50b6eb193b Pcbnew: polygon boolean subtraction - allow holes
The problem was using outlines, not the UnitSet function.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/19348
(cherry picked from commit 563bb7a538)
2025-07-16 02:32:42 +08:00
Seth Hillbrand 819ce0b0df Add paste length control to PCB Editor as well
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20732

(cherry picked from commit fd0b8fcc3c)
2025-07-15 10:44:25 -07:00
Seth Hillbrand 27d6c36f2d 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

(cherry picked from commit c5fde2aeb5)
2025-07-15 10:44:25 -07:00
Jeff Young 42ccfceebd Repair COMMON_TOOLS to know about frame-specific WINDOW_SETTINGS
Remove the older architectures for ensuring non-empty
grids and zooms

Move new architecture to PARAM_LIST::Load,
and add zoom support

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21318

(cherry picked from commit 6541202d42)
2025-07-15 15:25:54 +01:00
Jeff Young 9d4e6bd42f Make sure selected item is still valid before activating (KICAD-18S).
(cherry picked from commit dc4f639c61)
2025-07-15 15:25:20 +01:00
Jeff Young c0d2ce00d4 Clear selection before sending table msg (KICAD-KWE).
(cherry picked from commit a3bf095387)
2025-07-15 15:25:15 +01:00
Jeff Young c9bf1d1b40 Cleanup.
(cherry picked from commit de1376e369)
2025-07-15 15:25:07 +01:00
Jeff Young e141a5df3f Attempt to fix non-Mac builds.
(cherry picked from commit 28da0d3e1e)
2025-07-14 20:49:24 +01:00
Jeff Young 09bdaf6ef0 Formatting.
(cherry picked from commit 28cf485d00)
2025-07-14 20:49:20 +01:00
Jeff Young cff49ba3b4 LIB_TABLE::migrate() is called from Load(), which already has a lock. 2025-07-14 19:44:47 +01:00
Jeff Young 8179d363db Move CURL shutting-down flag to std::atomic.
Also removes lock from KICAD_CURL::Init(), which
leaves us open to multiple parallel Init()'s, but
it's not clear that happens.

(cherry picked from commit 0c220d1a8c)
2025-07-14 19:19:58 +01:00
Jeff Young d3b80ae2aa Cleanup export zone settings for initializing zones (KICAD-EYF).
(cherry picked from commit 79d17fcb6e)
2025-07-14 19:19:49 +01:00
Jeff Young f66a5be0d6 Fix m_importProperties not getting nulled (KICAD-6BJ).
(cherry picked from commit caf6e23064)
2025-07-14 13:21:52 +01:00
Jeff Young 604b598ac8 Repair zone-to-zone copper clearance test.
Don't copy zone fill when not necessary.
Make sure zone polys (not copies) have bbox caches.

(cherry picked from commit 5074a2861f)
2025-07-14 13:21:49 +01:00
Jeff Young a1254102e4 Improved thread safety.
(cherry picked from commit f7e85a7b20)
2025-07-14 13:21:45 +01:00
Jeff Young 73bca72cdb Thread safety.
(cherry picked from commit 1b21b880e6)
2025-07-14 13:21:42 +01:00
Jeff Young dff78f8961 Thread safety.
(cherry picked from commit 80c447f869)
2025-07-14 13:21:39 +01:00
Jeff Young 2bd6e11dc0 Thread safety.
(cherry picked from commit a1c26e4516)
2025-07-14 13:21:03 +01:00
Jeff Young 29d34a6e4d Thread safety.
(cherry picked from commit f0909e125e)
2025-07-14 13:20:59 +01:00
Jeff Young c5a3e8e15f Formatting.
(cherry picked from commit da57c4aa74)
2025-07-14 13:20:55 +01:00
Jeff Young 166314907d Better debugging.
(cherry picked from commit 4bc0651a3e)
2025-07-14 13:20:52 +01:00
Jeff Young 9d392d832f Debugging.
(cherry picked from commit b53b1cfd01)
2025-07-14 13:20:48 +01:00
Jeff Young ecb2016047 Kicad SEXPR should no longer need LOCALE_IO.
(cherry picked from commit a7e2878e6b)
2025-07-14 13:20:29 +01:00
Jeff Young 120dbd12ee Wait for chooser to finish initializing before enabling char hook (KICAD-BJ0).
(cherry picked from commit 5d4eb2cce6)
2025-07-14 13:19:50 +01:00
Jeff Young 44af22cbb6 Don't assume a non-null root (KICAD-SYR). 2025-07-14 13:19:14 +01:00
Wayne Stambaugh 3bcf0a438a Do not allow selection of excluded DRC markers when they are not visible.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21265

(cherry picked from commit 718b7e744a)
2025-07-13 18:17:34 -04:00
Jeff Young 777b731687 Re-entrancy guard for sym/fp change timers.
(Potentially KICAD-XJN.)

(cherry picked from commit 273ca3de77)
2025-07-13 16:57:33 +01:00
Jeff Young 1e881c6a36 Don't steal unrelated timer events (potentially KICAD-XJN).
(cherry picked from commit d3046e6aee)
2025-07-13 16:56:44 +01:00
Jeff Young 7d04a86695 Fix copy/pasta.
(cherry picked from commit 1b24c0a72b)
2025-07-13 16:56:39 +01:00
Jeff Young 06933ee9f0 Thread-safety (potentially KICAD-VMX...)
... KICAD-6PV, KICAD-82, KICAD-R3A, and others.

(cherry picked from commit 68d4940087)
2025-07-13 16:56:36 +01:00
Jeff Young ae61630010 Don't presume an edit frame (KICAD-PWS).
Also KICAD-PVR, KICAD-TWN and KICAD-JNQ

(cherry picked from commit 8bb9c47f9b)
2025-07-13 16:55:53 +01:00
Jeff Young ca4b4c7db3 Don't presume an edit frame (KICAD-PWS).
Also KICAD-PVR, KICAD-TWN and KICAD-JNQ

(cherry picked from commit b4524a47e8)
2025-07-13 16:55:07 +01:00
Jeff Young ff92a7c731 Don't enumerate pads when in pad edit mode (potentially KICAD-9P8).
(cherry picked from commit 4765d1b90d)
2025-07-13 16:54:18 +01:00
Jeff Young bfd88ffa18 Be more robust around filesystems that don't support timestamps (KICAD-R7V).
(cherry picked from commit 6b32815887)
2025-07-13 16:54:14 +01:00
Jeff Young 6e28b01f4c Separate non-copper track processing for hand edited boards and SWIG.
(cherry picked from commit 4e63316963)
2025-07-13 16:54:10 +01:00
Jeff Young a0ebf4f571 Quiet wxWidgets assert (KICAD-HRE).
(cherry picked from commit f0c3f469a1)
2025-07-13 16:52:49 +01:00
Jeff Young 1523f29c83 Lock safety.
("row" should not exceed the lifetime of "lock".)

(cherry picked from commit abc23a313d)
2025-07-13 16:51:21 +01:00
Jeff Young 30e6f10026 Quiet wxWidgets assert (KICAD-XJ2). 2025-07-13 16:51:21 +01:00
Mark Roszko 16ce70befb Quote the relaunch command string
(cherry picked from commit c594e1da5c)

Co-authored-by: Mark Roszko <mark.roszko@gmail.com>
2025-07-12 23:23:55 +00:00
Jeff Young 18330c8cd1 Symbol chooser has different canvases.
(cherry picked from commit 05fcfdaf87)
2025-07-12 22:39:23 +01:00
jean-pierre charras d66bfa58e7 DIALOG_LABEL_PROPERTIES: allows entering spaces in label names.
This issue was created by switching to FILTER_COMBOBOX in this dialog.
Spaces in labels are not a good idea, but this is needed to enter group
members to a bus definition

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21300

(cherry picked from commit a0485a38a7)
2025-07-12 18:31:12 +02:00
Jeff Young 13eea9cd19 Fix merge error. 2025-07-12 17:16:03 +01:00
Jeff Young ac35cbec48 Don't presume a selection.
(cherry picked from commit eb877a2fb4)
2025-07-12 17:11:25 +01:00
Jeff Young 1b1dee4a2a Fix copy/pastas.
(cherry picked from commit 66921b5026)
2025-07-12 17:11:22 +01:00
Jeff Young fa3b897a2a Don't bother with save changes for a kill.
(cherry picked from commit a9ab850f93)
2025-07-12 17:11:19 +01:00
Jeff Young 13fc7cede5 Debugging.
(cherry picked from commit ad83ad512a)
2025-07-12 17:11:16 +01:00
Jeff Young 6121a4641e It's too late to flag these at render time.
(And we don't control what kind of nonsense fonts
have either.)

(cherry picked from commit c09fc59ba5)
2025-07-12 17:11:12 +01:00
Jeff Young e0b5f101ea Clear arcs when merging zones (KICAD-DZ2).
(cherry picked from commit 2708aaad8d)
2025-07-12 17:11:07 +01:00
Jeff Young 8f2983399b Remove overzealous assert (KICAD-7YQ).
(cherry picked from commit 21992c5030)
2025-07-12 17:11:04 +01:00
Jeff Young 69d37e5485 Commit messages are title caps.
(They appear in the Undo menu.)

(cherry picked from commit b498ca0376)
2025-07-12 17:10:58 +01:00
Jeff Young 457883db09 Debugging.
(cherry picked from commit be1e79ccd8)
2025-07-12 17:10:11 +01:00
Jeff Young a7364e365b Reentrancy guard for placeAnchor (KICAD-A6J).
(cherry picked from commit cd48cc4007)
2025-07-12 17:10:06 +01:00
Jeff Young ff64e888f5 Handle duplication of reference images for array tool (KICAD-R7M).
(cherry picked from commit 58b5dae1ee)
2025-07-12 17:09:19 +01:00
Jeff Young 855762f676 Attempt to prevent random DRC crashes.
(cherry picked from commit 860fb9cabb)
2025-07-12 17:09:13 +01:00
Jeff Young 6e24ad8cad Re-entrancy guard for zones and vias (potentially KICAD-AFQ).
(cherry picked from commit 6474913fe8)
2025-07-12 17:09:03 +01:00
Jeff Young 4b8ae90444 Don't try to write to non-editable combobox (KICAD-6JS).
(cherry picked from commit 68109fc0a9)
2025-07-12 17:08:59 +01:00
Jeff Young 9c3f2a20ec Don't presume a selection (potentially KICAD-8VP).
(cherry picked from commit 34367020c4)
2025-07-12 17:08:53 +01:00
Jeff Young 1771a49017 Remove double-assert.
(getPropertyFromEvent() already asserts if it can't find one.)

(cherry picked from commit fc0bcdc8a3)
2025-07-12 17:08:50 +01:00
Jeff Young 1c5b6e0d8a Nullptr safety (KICAD-S1B).
(cherry picked from commit 3ec557cf4a)
2025-07-12 17:08:46 +01:00
Jeff Young e0f9b0dbf4 Bounds checking (KICAD-GGM).
(cherry picked from commit e51908e6c8)
2025-07-12 17:08:42 +01:00
Jeff Young 14c06a3acb Less auto.
(cherry picked from commit b2ba9d3371)
2025-07-12 17:07:42 +01:00
Jeff Young fe10e6036f We're creating the symbol library, so if it's not in the cache, then it's not in the library. 2025-07-12 09:45:43 +01:00
Jeff Young b5f19e11ae Formatting. 2025-07-12 09:14:16 +01:00
Columba Livia 4a99dc1a99 fix for issue 17429 - DRC exclusion instability
- backported from master
- fix for issue-17429 - DRC unnconnected items exclusion instability
  - new serialization format for unconnected items (MainID and AuxID
    last)
- RunOnUnconnectedItems sorts RN_NET edges for stability
- ResolveDRCExclusions now matches unconnected items by not matching on
      MainID and AuxID
2025-07-11 15:58:14 -07:00
Mark Roszko 9ea4b899a2 Fix the relaunch command
(cherry picked from commit 2c9f189441)

Co-authored-by: Mark Roszko <mark.roszko@gmail.com>
2025-07-11 22:39:29 +00:00
Ian McInerney 0708c6d67c Link copper layer color swatches in 3D viewer
(cherry picked from commit 33a4d6ea6f)
2025-07-11 16:10:47 +01:00
Jeff Young 4eab3916d4 Fix MSW build. 2025-07-11 14:44:10 +01:00
Jeff Young 8e2ba60c41 Mostly debugging help for Sentry, but also gives the user a better Undo string.
(cherry picked from commit 327d0ec51f)
2025-07-11 14:43:28 +01:00
Jeff Young 083e15e6d9 Formatting.
(cherry picked from commit 0797217595)
2025-07-11 14:43:24 +01:00
Jeff Young d72743f133 ERC exclusions go in the project file, not the local settings.
Potentially KICAD-PEV.

(cherry picked from commit 8ae6d179f0)
2025-07-11 14:43:19 +01:00
Jeff Young ee36806c94 Retire WINDOW_FREEZER in favour of wxWindowUpdateLocker.
Also pulls out previous fix to a Sentry issue I can
no longer find, at least until I figure out what
went wrong.
2025-07-11 13:09:27 +01:00
Jeff Young f6906ee982 Specialize table cell properties exposure.
(Also removes solder mask properties from textboxes.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21224

(cherry picked from commit bdd8790180)
2025-07-11 13:09:27 +01:00
Jeff Young aefebbf1b0 Upgrade ShowPlayer re-entrancy guard (KICAD-XAC).
(cherry picked from commit 53c90b0469)
2025-07-11 13:09:27 +01:00
Jeff Young 7f74d9abda Upgrade ShowPlayer re-entrancy guard (KICAD-XAC).
(cherry picked from commit fa00626512)
2025-07-11 13:09:27 +01:00
Jeff Young b9e49a0123 Formatting.
(cherry picked from commit 7a91441a82)
2025-07-11 13:09:27 +01:00
jean-pierre charras cf9f11a135 Fix mingw build (from master branch) 2025-07-10 08:41:21 +02:00
Mark Roszko ce1f3b8819 Add support for SHAddToRecentDocs on windows with app model id 2025-07-09 20:11:23 -04:00
jean-pierre charras d83275c469 Pcbnew, shape modification on polygonal shapes: clear arcs if any in polys.
Arcs cannot be handled by polygon boolean transforms, and must be cleared

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21134
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21277

(cherry picked from commit 06346f5ab5)
2025-07-09 17:33:03 +02:00
Jeff Young d4cfc0464e Be consistent about getting board copper layers.
(cherry picked from commit d2a623719b)
2025-07-09 16:01:27 +01:00
Jeff Young 4f30fecd84 Multithreaded safety. (KICAD-T5A)
(cherry picked from commit f097fbdfcc)
2025-07-09 16:01:27 +01:00
Jeff Young af44eedbce Shutdown safety.
(cherry picked from commit 0f19ed5f9f)
2025-07-09 16:01:27 +01:00
Jeff Young 264cd9e4f3 No point-editor support for rotated tablecells. (KICAD-RN8)
(cherry picked from commit e0351b60b2)
2025-07-09 16:01:27 +01:00
Jeff Young 3aca4393ac Shutdown safety. (Potentially KICAD-TJK.)
(cherry picked from commit 479daa37c5)
2025-07-09 16:01:27 +01:00
Jeff Young 9ba079de2c Shutdown safety. (Potentially KICAD-S3Q.)
(cherry picked from commit c183e1e3d2)
2025-07-09 16:01:27 +01:00
Jeff Young f7e2e0a1d4 Formatting.
(cherry picked from commit f7e275ba04)
2025-07-09 16:01:27 +01:00
Jeff Young a3d0831acc Put all focused items through ID lookup when un-brightening them. (Potentially KICAD-RN1)
(cherry picked from commit 4a653c548b)
2025-07-09 16:01:27 +01:00
Jeff Young bee098283c Don't attempt to update status bar while closing (KICAD-506).
(cherry picked from commit 30adcaa390)
2025-07-09 16:01:26 +01:00
Jeff Young 5b5fa6ede6 Collect more debugging.
(cherry picked from commit f589ed906f)
2025-07-09 16:01:26 +01:00
Jeff Young 55c686b704 Formatting.
(cherry picked from commit b4f44a0833)
2025-07-09 16:01:26 +01:00
Jeff Young 4c9bc832ec MakeNetNavigatorNode() will attempt to select it (while frozen). KICAD-VV8
(cherry picked from commit 0ba617bf1a)
2025-07-09 16:01:26 +01:00
Jeff Young 52f4c46a22 Debugging.
(cherry picked from commit 0d34db67cd)
2025-07-09 16:01:26 +01:00
Jeff Young 4f5b6c6d12 Don't assert inner layer in Footprint Editor (KICAD-STX).
(cherry picked from commit 5d8def9055)
2025-07-09 16:01:26 +01:00
Jeff Young 50138ccf69 Don't double-delete panes. (Potentially KICAD-22T)
(cherry picked from commit 5390e0d7f9)
2025-07-09 16:01:26 +01:00
Jeff Young ed91410496 Don't presume a single MAIL_SYMBOL_NETLIST to footprint chooser. KICAD-XBW
(cherry picked from commit 866659df97)
2025-07-09 16:01:26 +01:00
Mark Roszko 954e75b014 Windows, msys2 build: fix cast not accepted by GCC
(cherry picked from commit d0288dbcbf)

Co-authored-by: jean-pierre charras <jp.charras@wanadoo.fr>
2025-07-09 13:45:58 +00:00
Mark Roszko 60d428dbac Add a -n arg for "new instance" to kicad.exe for use with the relaunch command 2025-07-09 06:59:54 -04:00
Mark Roszko 589bfeafe3 Fix shift+middle click on windows no longer working
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21267
2025-07-09 06:59:18 -04:00
Sebastian c494dbd978 Fix updating embedded drawing sheet by marking true to update the embed drawing files.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20800

(cherry picked from commit 3cafe2e6bb)
2025-07-08 23:37:26 +01:00
Graham Keeth fe6add129f change title case to sentence case in Git preferences
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/20784
(cherry picked from commit 454c95ac51)
2025-07-08 23:37:02 +01:00
aris-kimi 8b6c314296 Sim:Fix an unescaped while loop
(cherry picked from commit cf5d4df78a)
2025-07-08 23:36:21 +01:00
Ian McInerney 83d71d95ae Don't set the dimension group's action to the origin action
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21274
2025-07-08 23:28:34 +01:00
jean-pierre charras 2cc2ba603e Pad editor dlg: set the default thermal spoke to 90 deg for RR pad shape
It was 45 deg, but this default value is good for round pads only, not
for rectangular pad shapes.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21271

(cherry picked from commit cef15bcf30)
2025-07-08 18:17:46 +02:00
jean-pierre charras 34e4a34231 EEschema: avoid DNP and EXCLUDE from SIM markers blinking when moving an object
They were redrawn multiple times, and not always on the right graphic layer, thus
creating draw artifacts.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20483

(cherry picked from commit b8d2bdb3d2)
2025-07-08 14:55:18 +02:00
jean-pierre charras ae069e82d1 Step export: handle castellated pads.
Only pads having the fab property "Castellated" are handled.
Imported from master build, commit 60f65e68c1
2025-07-08 14:55:17 +02:00
Jeff Young b21da0e582 Fix merge error. 2025-07-08 12:51:24 +01:00
Jeff Young 8f98861d5f Only promote to footprints when it's clear that's what the user meant.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21207

(cherry picked from commit 8a0e0b620c)
2025-07-08 12:45:10 +01:00
Jeff Young 7b15c5f343 Don't special-case footprint children for undo of delete.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21204

(cherry picked from commit 02365bb206)
2025-07-08 12:44:02 +01:00
Jeff Young 0186970f24 Ignore visibility and style attrs in instance data.
It appears that it's always null/0.  (At least in this
test-case.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19734

(cherry picked from commit 17158f21da)
2025-07-08 12:43:19 +01:00
Jeff Young 32de29ff4e More protection for stale wxDataView items. 2025-07-08 10:23:00 +01:00
Jeff Young 7ad1823d41 Attempt to patch SWIG for VIEW_ITEM::GetClass().
(cherry picked from commit da9544dfd1)
2025-07-08 09:44:56 +01:00
Jeff Young 1dbeec7c0f Show Actual Clearance even for same-net objects.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21261

(cherry picked from commit 4ff51913cf)
2025-07-08 08:44:23 +01:00
Jeff Young ccf24de599 Debugging.
(Separate so Sentry can tell us which one fired.)

(cherry picked from commit 9098750ba0)
2025-07-08 08:44:23 +01:00
Jeff Young cbc407260c Bounds checking. KICAD-A6F.
(cherry picked from commit 0ccd706faf)
2025-07-08 08:44:23 +01:00
Jeff Young b929b8dd87 Not all callers are expecting GUI to be put up at this level.
Potentially KICAD-RVC.

(cherry picked from commit 4e62a71448)
2025-07-08 08:44:23 +01:00
Jeff Young 5e9a755348 Respect non-free-pads mode for Move Exactly.
(Also makes sure the filters are always in the
same order, though this may be immaterial.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21183

(cherry picked from commit edbe570d42)
2025-07-08 08:44:23 +01:00
Jeff Young 512131a062 Equality for doubles. (Potentially KICAD-SV8)
(cherry picked from commit c960f69a9b)
2025-07-08 08:44:23 +01:00
Jeff Young 8177960946 Include LAYER_LOCKED_ITEM_SHADOW in PADSTACK::EffectiveLayerFor() (KICAD-V2W)
(cherry picked from commit 9e07f1e68b)
2025-07-08 08:44:23 +01:00
Jeff Young c23a3426c3 Remove noisy assert. KICAD-6XH
We may need to support showing complex numbers at some
point, but as we don't today it's sort of moot.
2025-07-08 08:44:23 +01:00
Jeff Young 55f7da60e7 Fix format specifier (KICAD-SV6).
(cherry picked from commit b08990646c)
2025-07-08 08:44:23 +01:00
Jeff Young 2492451270 Don't assume strings are non-empty (KICAD-PMX).
(cherry picked from commit 96eb11cb9e)
2025-07-08 08:44:23 +01:00
Jeff Young 03c56f05a4 Commenting.
(cherry picked from commit 9faf8b3d4c)
2025-07-08 08:44:23 +01:00
Jeff Young f8acb1f2d9 Clear seleciton before removing rows. (KICAD-BER).
(cherry picked from commit 275ff1cb4e)
2025-07-08 08:44:23 +01:00
Jeff Young d2cf153688 Load appearances presets to render job.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20660

(cherry picked from commit 61986ab7c8)
2025-07-08 08:44:23 +01:00
Jeff Young e845ca539c ADDED: appearance preset selection to Render Jobs.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20682

(cherry picked from commit 70cbdbff89)
2025-07-08 08:44:23 +01:00
Jeff Young 497a7983cb ADDED: some individual flags for render jobs.
Also fixes bug where error code wasn't returned.

Also fixes bug where user's preferences were being
overwritten with each job.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20436

(cherry picked from commit d2b3f8ba28)
2025-07-08 08:44:23 +01:00
Jeff Young 0619bb9179 Formatting.
(cherry picked from commit 0730a0bc86)
2025-07-08 08:44:23 +01:00
Jeff Young ca78205d66 Dirty connectivity when deleting via layers.
(Also dirty the document when removing blind/buried
vias.)

(This fixeds KICAD-FOY as a side-effect.)

(cherry picked from commit bf193c5ea1)
2025-07-08 08:44:23 +01:00
Jeff Young 7f4ac37b08 If library was updated outside KiCad, the symbol may have been deleted. (KICAD-QZ9)
(cherry picked from commit 7bab41d746)
2025-07-08 08:44:23 +01:00
Jeff Young 7d3bd92a46 Remove double-layer-processing.
(The caller already handles cycling through the
layers.)

(cherry picked from commit 7fc9fc5f58)
2025-07-08 08:44:23 +01:00
Jeff Young 4f6de4c5a1 Bounds checking (KICAD-8V9) 2025-07-08 08:44:23 +01:00
Jeff Young 6a11c7d87a Debugging.
(cherry picked from commit bacc82c589)
2025-07-08 08:44:23 +01:00
Jeff Young ff086a48f1 Quiet assert. (KICAD-QZJ)
(cherry picked from commit dc96b99e22)
2025-07-08 08:44:23 +01:00
Jeff Young adc05de7db Pads can be on Dwgs & Eco layers. (KICAD-RQE)
(cherry picked from commit 7d18c237b3)
2025-07-08 08:44:23 +01:00
Jeff Young 3e3570c395 Don't assume a schematic. (KICAD-G7S)
(cherry picked from commit 4b510c59f9)
2025-07-08 08:44:23 +01:00
Jeff Young c9c033dd04 Don't trip over a stale sort column index. (KICAD-B3X)
(cherry picked from commit e1d1243a91)
2025-07-08 08:44:23 +01:00
Jeff Young dc8811db45 Type safety (KICAD-QQT).
(cherry picked from commit 86280d5a65)
2025-07-08 08:44:23 +01:00
Jeff Young 2a04ab947b Clear arcs before running boolean ops (KICAD-QXG).
(cherry picked from commit 9c884242f6)
2025-07-08 08:44:23 +01:00
Jeff Young 4a8a1fc882 Iterate pad layers when doing collisions (KICAD-R3Q).
(cherry picked from commit 1184bc3c36)
2025-07-08 08:44:23 +01:00
Jeff Young 53a3955eeb Don't assume a string (KICAD-8QP).
(cherry picked from commit 82d4ab5094)
2025-07-08 08:44:23 +01:00
Jeff Young 6a2bd02a22 User could lock the file at any time (KICAD-73V).
The file being locked is not a programming error.

(cherry picked from commit e18b4cbf72)
2025-07-08 08:44:23 +01:00
Jeff Young 798f763090 We need to catch these when they're created. During write is too late.
(cherry picked from commit 2a7474b33e)
2025-07-08 08:44:23 +01:00
Jeff Young adb96ecdf3 Make sure we don't end up with stale picker handlers (lots of Sentry tickets).
(cherry picked from commit 69b23df4c3)
2025-07-08 08:44:23 +01:00
Jeff Young d16c2e4b25 Prevent wxWidgets assert. (KICAD-QZ5)
(cherry picked from commit 2892642516)
2025-07-08 08:44:23 +01:00
Jeff Young 2f0c89b197 Sort col may not be in the current columns. (KICAD-G74)
(cherry picked from commit 4e4dfa0a38)
2025-07-08 08:44:23 +01:00
Jeff Young 7da15c8027 Prevent wxWidgets assert (KICAD-6VM).
(cherry picked from commit 7b0aceb99e)
2025-07-08 08:44:23 +01:00
Jeff Young 061957bd22 Clear arcs before boolean ops (KICAD-CFQ).
(cherry picked from commit b077b32c43)
2025-07-08 08:44:23 +01:00
Jeff Young 24b56fa1c2 Fix a pair of copy/pastas (KICAD-JC2).
(cherry picked from commit 9ee5950c44)
2025-07-08 08:44:23 +01:00
Jeff Young b6384167bc More tool loop safety. 2025-07-08 08:44:23 +01:00
Jeff Young b6dd1d2a46 ADDED: row height and column width property inspector properties.
(This time for SCH tables.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21224

(cherry picked from commit ee097a7073)
2025-07-08 08:44:23 +01:00
Jeff Young 86c475ced9 Debugging for removing items not in the view.
(cherry picked from commit 0375985d58)
2025-07-08 08:44:23 +01:00
Jeff Young fc0b0a577f Tool loop safety.
(cherry picked from commit a7319bfcd0)
2025-07-08 08:44:23 +01:00
Jeff Young 583b23406c Static_cast safety.
(cherry picked from commit 6f7023116d)
2025-07-08 08:44:23 +01:00
Jeff Young 8c82ecfa3a Double check file dlg results on MSW.
(cherry picked from commit 54cfb62597)
2025-07-08 08:44:23 +01:00
Jeff Young 0d34fef2b6 Be careful with legacy ".pro" conversions.
(cherry picked from commit 762fd179d3)
2025-07-08 08:44:23 +01:00
Jeff Young c52201f427 Assert when nested_settings is null.
(cherry picked from commit 4d06fbce1a)
2025-07-08 08:44:23 +01:00
Jeff Young 5da5d12198 Check file extensions before trying to open.
(cherry picked from commit e74f56c629)
2025-07-08 08:44:23 +01:00
Jeff Young 0c28401be1 Don't overflow trying to draw ticks on ruler (KICAD-9HV).
(cherry picked from commit fde693ebe1)
2025-07-08 08:44:23 +01:00
Jeff Young 3a003fd3d3 Move selection before deleting (KICAD-7BH).
(cherry picked from commit 221cc13c79)
2025-07-08 08:44:23 +01:00
Jeff Young c4847cf704 Formatting.
(cherry picked from commit 5a2bae207b)
2025-07-08 08:44:23 +01:00
Jeff Young 1ab64fa11c Don't pass a null sheetPath to GetValue() (KICAD-QPF).
(cherry picked from commit cccaeb3b29)
2025-07-08 08:44:23 +01:00
Jeff Young 5f2a758160 Make sure legacy colours always works.
Also, don't line wrap "Use PCB editor copper colors".
2025-07-08 08:44:23 +01:00
Jeff Young 55946d40ec Clear arcs before calling SHAPE_POLY_SET boolean ops (KICAD-9Z0). 2025-07-08 08:44:23 +01:00
Jeff Young ab5b2dd17b Update enabled layers when starting FP Editor. 2025-07-08 08:44:23 +01:00
Jeff Young 1d0dd0f60a Update enabled layers when starting FP Editor. 2025-07-08 08:44:23 +01:00
Jeff Young 8d24b4908c Nullptr safety (KICAD-AD).
(cherry picked from commit e0bfc220b4)
2025-07-08 08:44:23 +01:00
Jeff Young 9d9726ba6c Remove noisy assert (KICAD-KMP).
(cherry picked from commit c5dd17a415)
2025-07-08 08:44:23 +01:00
Jeff Young c72c7891c6 Don't force symbol to have a library (KICAD-74K).
(cherry picked from commit 233da7934d)
2025-07-08 08:44:23 +01:00
Jeff Young 416337ddbd Don't specify number of rows, wxWidgets will figure it out (KICAD-7HS)
(and likes to assert if you don't let it.)

(cherry picked from commit 21b294e204)
2025-07-08 08:44:23 +01:00
Jeff Young a296502041 Attempt to circumvent GetValue() getting called when there's no wxDataViewItem.
(cherry picked from commit 880ff60416)
2025-07-08 08:44:22 +01:00
Jeff Young 57c1aa8a75 Don't use wxFRAME_FLOAT_ON_PARENT if there's no parent (KICAD-GJS).
(cherry picked from commit 60869cc950)
2025-07-08 08:44:22 +01:00
Jeff Young b5da37b118 Formatting.
(cherry picked from commit 9a3c9d780f)
2025-07-08 08:44:22 +01:00
Jeff Young 10f5405d24 Don't choke on degenerate polygons.
It's a bit late to be asserting during drawing.
We'd need to know how the object was created to
do anything about it.

(cherry picked from commit 8dc62e1db5)
2025-07-08 08:44:22 +01:00
Jeff Young 4f11e1c548 This is also used for save as. (KICAD-81M)
(cherry picked from commit 04e38d3fcd)
2025-07-08 08:44:22 +01:00
Jeff Young a1cf7dac0a Respect "exclude DNP" setting for Gerber X3.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21201

(cherry picked from commit fa9a588683)
2025-07-08 08:44:22 +01:00
Jeff Young 7210cac0de Ensure algorithmic safety (KICAD-ARX).
(cherry picked from commit 5ab735eb93)
2025-07-08 08:44:22 +01:00
Jeff Young bd5b98cb46 Ensure algorithmic safety (potentially KICAD-9RN).
(cherry picked from commit 39f6b30ee7)
2025-07-08 08:44:22 +01:00
Jeff Young ccc25e4cc7 Make sure event has position before querying it (KICAD-796).
(cherry picked from commit f5f59e797d)
2025-07-08 08:44:22 +01:00
Jeff Young 33f3fb31ab Don't attempt to update temp lines when it will fail (KICAD-FWF).
(cherry picked from commit 5e907f864e)
2025-07-08 08:44:22 +01:00
Jeff Young 6ccf1804f4 Fix double-delete.
The JSON_SETTINGS stuff makes copies of the
JOBSET_DESTINATION.  That ends poorly when it
contains just a naked C++ pointer.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21227

(cherry picked from commit eafa1a7af0)
2025-07-08 08:44:22 +01:00
Jeff Young 8756294cfb ADDED: row height and column width property inspector properties.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21224

(cherry picked from commit 18d9e113a6)
2025-07-08 08:44:22 +01:00
Jeff Young 864f398789 Don't attempt to convert reference image to a SHAPE_POLY_SET.
Also make sure we render table thicknesses when they're
drawn on copper layers.

(cherry picked from commit bf6712d4f4)
2025-07-08 08:44:22 +01:00
Jeff Young 14c7c3f61f UNDEFINED_LAYER no longer copacetic for pads (KICAD-QOC).
(cherry picked from commit b04057498d)
2025-07-08 08:44:22 +01:00
Jeff Young ff7c50c739 Remove noisy assert.
(cherry picked from commit b3b5f6963f)
2025-07-08 08:44:22 +01:00
Jeff Young 05458e12b4 Allow pin autoplacer to run on symbol not yet in schematic (KICAD-JMA).
(cherry picked from commit 26f8f1cdd1)
2025-07-08 08:44:22 +01:00
Jeff Young d1a1624cbe Fix nullptr crash (KICAD-SPF).
(cherry picked from commit d47454bb66)
2025-07-08 08:44:22 +01:00
Jeff Young d88af6418a Nullptr safety (KICAD-1R8).
(cherry picked from commit a5ae1103e4)
2025-07-08 08:44:22 +01:00
Jeff Young 46c8f04ccb Fix CloseProject assertions (and potentially crashes).
(cherry picked from commit 24ae06a96f)
2025-07-08 08:44:22 +01:00
Jeff Young b5f808e6fb Clear selections before deleting grid rows (KICAD-J40).
(cherry picked from commit a2cf59cc89)
2025-07-08 08:44:22 +01:00
Jeff Young 10f4e340ba Check that library exists before checking read-only (KICAD-6Z8).
(cherry picked from commit 2052595dac)
2025-07-08 08:44:22 +01:00
Jeff Young 8a1cf01186 Don't try to select items that don't exist (KICAD-J0X).
(cherry picked from commit a75e0b126a)
2025-07-08 08:44:22 +01:00
Jeff Young ece360c835 Nullptr safety (KICAD-F5D).
(cherry picked from commit b179a6cac8)
2025-07-08 08:44:22 +01:00
Jeff Young 0a2abf38d0 Don't assert on autosave dir not writeable (KICAD-6ZA).
(cherry picked from commit 382ba0629e)
2025-07-08 08:44:22 +01:00
Jeff Young 2c4015c684 Embed fonts used in fields as well as text items.
(Also, don't presume a non-stroke font is an outline
font.  We may have more types in the future....)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20578

(cherry picked from commit 97a3a09c90)
2025-07-08 08:44:22 +01:00
Jeff Young d6241d7279 ClearArcs before calling SHAPE_POLY_SET boolean ops.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21209

(cherry picked from commit 21c9364063)
2025-07-08 08:44:22 +01:00
Jeff Young ca3e7b1e49 Allow move action when selection contains non-table-cells. 2025-07-08 08:44:22 +01:00
Jeff Young 6c6ef1cf5d Progress reporting for Run Jobs.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19629

(cherry picked from commit 0464cc18b1)
2025-07-08 08:44:22 +01:00
Jeff Young d38bd7e1a6 Don't presume symbol library still exists (KICAD-74C).
(cherry picked from commit d5eeef0f2c)
2025-07-08 08:44:22 +01:00
Jeff Young 0194694676 Don't try to keep netcodes in defaultZoneSettings (KICAD-7Z8).
(cherry picked from commit 4e174f2078)
2025-07-08 08:44:22 +01:00
Jeff Young b8a6852c9b Remove overzealous assert (KICAD-MH0).
(It is still called with no layer from SWIG.)

(cherry picked from commit 07b8291173)
2025-07-08 08:44:22 +01:00
Jeff Young d0cd902e22 Nullptr safety (KICAD-6K6).
(cherry picked from commit be120b4821)
2025-07-08 08:44:22 +01:00
Jeff Young 1cbbc6ae29 Overflow protection (KICAD-ARX).
(cherry picked from commit 2ce1107e62)
2025-07-08 08:44:22 +01:00
Jeff Young 31d1c15d25 Nullptr safety.
(Potentially KICAD-372.)

(cherry picked from commit 709c0f8c72)
2025-07-08 08:44:22 +01:00
Jeff Young a19b986b02 Garbage pointer safety.
(Potentially KICAD-K2F.)

(cherry picked from commit 21a1499911)
2025-07-08 08:44:22 +01:00
Jeff Young a29e7a365f Nullptr safety.
(cherry picked from commit 071bdbdaa7)
2025-07-08 08:44:22 +01:00
Jeff Young ade690d394 Clear the entire ID cache when deleting markers.
This probably doesn't fix anything, but it may be
faster when deleting large marker sets.

It also *might* impact KICAD-AX1, but that's less
likely.

(cherry picked from commit ce1ebddbe9)
2025-07-08 08:44:22 +01:00
Jeff Young 45c1dcdee8 Tighten isCoupledDiffPair test when we only have one item.
Improves https://gitlab.com/kicad/code/kicad/-/issues/19838

(cherry picked from commit 2564e5511f)
2025-07-08 08:44:22 +01:00
Jeff Young 1b09f6c224 Remove overzealous assert (KICAD-775).
Pasting text can paste junk.  Might as well just use align_center.

(cherry picked from commit a37af2b81b)
2025-07-08 08:44:22 +01:00
Jeff Young b072d4283b Remove overzealous assert (KICAD-6VK).
(cherry picked from commit 902ae353f6)
2025-07-08 08:44:22 +01:00
Jeff Young 60a8c43b29 Assertion reduction (KICAD-756).
(cherry picked from commit fa3d23a818)
2025-07-08 08:44:22 +01:00
Jeff Young d8003365d3 Fix presumptive cast (KICAD-J24).
(cherry picked from commit 3424f2bd4c)
2025-07-08 08:44:22 +01:00
Jeff Young 0b20c2990c Nullptr safety (KICAD-78).
(cherry picked from commit ed8605b9c1)
2025-07-08 08:44:22 +01:00
Jeff Young 9bfc3856ca Add undefined netclass to severities list.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20373

(cherry picked from commit 5d3279004f)
2025-07-08 08:44:22 +01:00
Jeff Young 51ec64fcc1 Must show a dialog for it to be useful.
(cherry picked from commit e48d746bbb)
2025-07-08 08:44:22 +01:00
Jeff Young 77ceba3c82 Must call SetPassEvent() for event to run in its own loop.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19805

(cherry picked from commit 9add4a39c8)
2025-07-08 08:44:22 +01:00
Jeff Young 0bec2a8838 Remove overzealous assert (KICAD-752).
(cherry picked from commit c5dd60aed9)
2025-07-08 08:44:22 +01:00
Jeff Young 4768e555e2 Set layerName before plotting drawing sheet.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20959

(cherry picked from commit 19a6669943)
2025-07-08 08:44:22 +01:00
Jeff Young a0536a0e75 Fix merge error. 2025-07-08 08:44:22 +01:00
Jeff Young 1befc4b651 Can't use EndModal() to cancel a modal dialog that hasn't been shown yet (KICAD-6YE).
(This particular case happens when the user cancels
the progress dialog while loading symbols before the
symbol picker has been displayed.  3.5K people have
done this 13K times on MSW.)

(cherry picked from commit 0a59ca7590)
2025-07-08 08:44:22 +01:00
Jeff Young aacfa5ab83 Attempt to fix destruction order crash (KICAD-6KC).
(cherry picked from commit a7fdea9b6f)
2025-07-08 08:44:22 +01:00
Jeff Young a65339b0ba Quiet noisy assert (KICAD-9D7).
(cherry picked from commit bb92b40364)
2025-07-08 08:44:22 +01:00
Jeff Young 70a8560888 Don't assume net navigator has root item (KICAD-7Q7).
(cherry picked from commit b58f5607cc)
2025-07-08 08:44:22 +01:00
Jeff Young 7364cd3026 Don't be pedantic about selection contents when exposing commands.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21112

(cherry picked from commit 100260ed59)
2025-07-08 08:44:22 +01:00
Jeff Young 8740748438 Iterator safety.
(cherry picked from commit 541ca43d9e)
2025-07-08 08:44:22 +01:00
Jeff Young 9306952037 Formatting.
(cherry picked from commit a382fd3064)
2025-07-08 08:44:22 +01:00
Jeff Young 2037b11d72 Smarten libeval missing units warning.
In particular, don't choke on multiplicative statements
including a scalar.

The new algo is not actually smart enough to eval the
whole parse tree and separate conditionals from multiplication
from addition; it just contents itself with reporting
the common case of a single value with no units.

See comments in code.

(cherry picked from commit 99076cfc5f)
2025-07-08 08:44:22 +01:00
Jeff Young 06ae603120 Formatting.
(cherry picked from commit 3284dc348a)
2025-07-08 08:44:22 +01:00
Jeff Young cb669d15e4 Escape/unescape symbol name in save as dialog.
SymbolNameInUse() also needed some help.
As did DIALOG_LIB_NEW_SYMBOL.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21170

(cherry picked from commit 8302b0d6bd)
2025-07-08 08:44:22 +01:00
Jeff Young f1a7a6d4dc Don't generate and integer result when we're expecting a double.
(cherry picked from commit 38f6fc496b)
2025-07-08 08:44:22 +01:00
Jeff Young 70e595acbf Formatting.
(cherry picked from commit 52f77864bc)
2025-07-08 08:44:22 +01:00
Jeff Young 74da384711 Fix merge conflict. 2025-07-08 08:44:21 +01:00
Jeff Young 9b7dfcc818 Clear child flags for items whose undo/redo is managed by parent.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21111

(cherry picked from commit 2e9987e722)
2025-07-08 08:44:21 +01:00
Jeff Young 61c32913e9 Formatting.
(cherry picked from commit b2025b7568)
2025-07-08 08:44:21 +01:00
Jeff Young ac8d8467c5 Ensure any mapped layers are enabled.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21138

(cherry picked from commit 6c5f682254)
2025-07-08 08:44:21 +01:00
Jeff Young b9bbf871c1 Formatting.
(cherry picked from commit a3ae173159)
2025-07-08 08:44:21 +01:00
Jeff Young fa3d04b8f7 Don't allow repeat command when one is already running.
Also, performa undo during move locally, and bar redo events.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21145

(cherry picked from commit bdc3129db3)
2025-07-08 08:44:21 +01:00
Jeff Young 98ad63f87c ADDED: check/uncheck all update option buttons.
Dialog is wide enough now not to require double lines for LIB_IDs.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21137

(cherry picked from commit edca1ee62d)
2025-07-08 08:44:21 +01:00
Jeff Young 2e3410f155 ADDED: Check/Uncheck All for Change Footprints.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21150

(cherry picked from commit e3baebd53a)
2025-07-08 08:44:21 +01:00
Jeff Young 9a58b53a4c Keep currently selected group items when rebuilding toolbars. 2025-07-08 08:44:21 +01:00
Jeff Young 13236e48fc Fix merge errors. 2025-07-08 08:44:21 +01:00
Jeff Young 5c60164bb5 Warp back from context menu before running command.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19560

(cherry picked from commit 74bf678d99)
2025-07-08 08:44:21 +01:00
Jeff Young 143bdbedd7 Nullptr safety.
(cherry picked from commit 27ac2beac5)
2025-07-08 08:44:21 +01:00
Jeff Young 3748df90e4 Fix typo.
(cherry picked from commit f6b814658e)
2025-07-08 08:44:21 +01:00
Jeff Young 7a695ada66 Don't overwrite return value.
(cherry picked from commit 5ed332771c)
2025-07-08 08:44:21 +01:00
Jeff Young 1277cdd570 There's no view when running tests.
(cherry picked from commit 9f7fa4df66)
2025-07-08 08:44:21 +01:00
Jeff Young 8202388aa8 Dirty clearance lines when rule areas change.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20734

(cherry picked from commit e2cf944915)
2025-07-08 08:44:21 +01:00
Jeff Young f21a801545 Use courtyards for DNP cross-out sizes.
(And failing that, just pads and edges, no text.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21115

(cherry picked from commit 2844674449)
2025-07-08 08:44:21 +01:00
Jeff Young 2c27c3c54d Reset m_drcRun when deleting all markers. 2025-07-08 08:44:21 +01:00
Jeff Young 62efa38229 Fix merge error. 2025-07-08 08:44:21 +01:00
Jeff Young 29475b6fb6 Use KiCad terminology and fix broken logic around locked footprints.
(And don't show users UUIDs.)

(Also fix broken logic around skipped numbers.)

(Also removes nag dialog.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19977

(cherry picked from commit 7258546084)
2025-07-08 08:44:21 +01:00
Jeff Young 51413cb564 Don't export negative layers to copper.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20949

(cherry picked from commit e4294aab85)
2025-07-08 08:44:21 +01:00
Jeff Young 2cb0771d42 Repair saved locking logic.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21090

(cherry picked from commit e6d94d5b09)
2025-07-08 08:44:21 +01:00
Jeff Young 9100f22d68 Nullptr safety.
(cherry picked from commit f76608c0da)
2025-07-08 08:44:21 +01:00
Jeff Young 388ba9b8a6 Iterator safety and shared code.
(cherry picked from commit c989fc17ac)
2025-07-08 08:44:21 +01:00
Jeff Young ddae7d5437 Don't leak design blocks.
(cherry picked from commit 9ef0e7fb01)
2025-07-08 08:44:21 +01:00
Jeff Young f7d1e7fc80 Don't remove ruler from view; just hide it.
(cherry picked from commit 28369ee4dd)
2025-07-08 08:44:21 +01:00
Jeff Young 0a946a3d23 Static cast safety.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20958

(cherry picked from commit 116bd924c2)
2025-07-08 08:44:21 +01:00
Jeff Young f3cbd8be9a Stale pointer safety.
(cherry picked from commit 46cb3f96a0)
2025-07-08 08:44:21 +01:00
Jeff Young 9a57945d30 Formatting.
(cherry picked from commit a6707a42d1)
2025-07-08 08:44:21 +01:00
Jeff Young d842dc20eb Prefer the active layer when picking tuning patterns.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20963

(cherry picked from commit 5b44312a10)
2025-07-08 08:44:21 +01:00
Jeff Young 0e50c2890a Add grammar for SkyWater .subckt parameters.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20220

(cherry picked from commit 0f9e858beb)
2025-07-08 08:44:21 +01:00
Jeff Young fc30a4eb3d Runtime cache for knockout text.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20711

(cherry picked from commit 80d24d4720)
2025-07-08 08:44:21 +01:00
Jeff Young 8dd10e11b4 Prefer const& to passing by value.
(cherry picked from commit 1968d67bf3)
2025-07-08 08:44:21 +01:00
Jeff Young 9d8f6fbd34 Remove dead code.
(cherry picked from commit b94f5a013a)
2025-07-08 08:44:21 +01:00
Jeff Young 0ecd5d86bc Performance optimizations.
(cherry picked from commit 31c6c28882)
2025-07-08 08:44:21 +01:00
Jeff Young 573e36b2d3 Iterator safety.
(cherry picked from commit 5117ecdf3d)
2025-07-08 08:44:21 +01:00
Jeff Young b682b39180 Initializer safety.
(cherry picked from commit adb535e649)
2025-07-08 08:44:21 +01:00
Jeff Young 5dbd0603a7 Formatting.
(cherry picked from commit 639b856ea9)
2025-07-08 08:44:21 +01:00
Jeff Young ad8209069d Negative number safety.
(cherry picked from commit 265d273f93)
2025-07-08 08:44:21 +01:00
Jeff Young 33f004c5a6 Lock safety.
We're going to grab the lock every time through anyway,
might as well have it for the reads as well as the
writes.

(cherry picked from commit 95ab9f0b50)
2025-07-08 08:44:21 +01:00
Jeff Young d4a30f8b16 Comments.
(cherry picked from commit 530b4d683c)
2025-07-08 08:44:21 +01:00
Jeff Young 3616f901d1 Don't assume a frame.
(cherry picked from commit ecd4d9d64a)
2025-07-08 08:44:21 +01:00
Jeff Young f417e5b0e5 Nullptr safety.
(cherry picked from commit 92b9997948)
2025-07-08 08:44:21 +01:00
Jeff Young 31af54d978 Cleanup.
(cherry picked from commit a66aff301f)
2025-07-08 08:44:21 +01:00
Jeff Young 88d9112257 Iterator safety.
(cherry picked from commit f5c48b3f34)
2025-07-08 08:44:21 +01:00
Jeff Young ea2fa12e8a Separate icon for Constraints Resolution.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21038

(cherry picked from commit ebe30355ce)
2025-07-08 08:44:21 +01:00
Jeff Young 70ede5a27c Nullptr safety.
(cherry picked from commit 3acdac525b)
2025-07-08 08:44:21 +01:00
Jeff Young 61a78cbc0f Fix uninitialized member variable.
(cherry picked from commit 68f1cd0a08)
2025-07-08 08:44:21 +01:00
Jeff Young 91b2afeaab Nullptr safety.
(cherry picked from commit 6609e79868)
2025-07-08 08:44:21 +01:00
Jeff Young 95925232a4 Nullptr safety.
(cherry picked from commit af1a246e12)
2025-07-08 08:44:21 +01:00
Seth Hillbrand 5586d3ef88 Fixup for cda127a9a3
Support for arbitrary layer count

(cherry picked from commit 51e36257e1)
2025-07-08 08:44:21 +01:00
Jeff Young 9e2df05050 Fix logic that's been broken for 11 years.
(And was doubly-broken when copper layers went to
even numbers only.)

(cherry picked from commit 863d3c3603)
2025-07-08 08:44:21 +01:00
Jeff Young 1c0d8805e9 Autocomplete for OUTPUT_TMP_PATH_VAR_NAME.
(Along with a list of other env vars in use.)

(cherry picked from commit dd39a50a14)
2025-07-08 08:44:21 +01:00
Mark Roszko ab23052bdc Unbind the onsize event from the parent while destructing the child
Fixes KICAD-RJA


(cherry picked from commit 5b599213f6)

Co-authored-by: Mark Roszko <mark.roszko@gmail.com>
2025-07-08 01:03:47 +00:00
Mark Roszko 4622506d7b Fix crash because the infobar button doesn't have a window yet (because the infobar was not shown yet on Windows), fixes sentry KICAD-X9Z
(cherry picked from commit 69e2c55291)

Co-authored-by: Mark Roszko <mark.roszko@gmail.com>
2025-07-08 01:03:33 +00:00
Mark Roszko 382f2ee302 Prevent invalid via layers due to property editor 2025-07-08 00:54:49 +00:00
Mark Roszko fde51f4c79 Bump vcpkg for newer opencascade port 2025-07-08 00:51:46 +00:00
Wayne Stambaugh 872b2a585c Begin version 9.0.4 development. 2025-07-07 19:12:51 -04:00
Wayne Stambaugh 21b6198547 Tag stable version 9.0.3 release. 2025-07-07 19:07:07 -04:00
Alex Shvartzkop 50e902c06b Update translations 2025-07-07 17:43:14 +03:00
dsa-t 7581502453 Translated using Weblate (Russian)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-07-07 16:41:40 +02:00
Sárkány Lőrinc 323d574991 Translated using Weblate (Hungarian)
Currently translated at 32.3% (3260 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-07-07 16:41:40 +02:00
Sárkány Lőrinc f2cd9c47ec Translated using Weblate (Hungarian)
Currently translated at 32.3% (3260 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-07-07 16:41:40 +02:00
Sárkány Lőrinc 897cad5c0b Translated using Weblate (Hungarian)
Currently translated at 32.3% (3260 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-07-07 16:41:40 +02:00
YÜKSEL AÇIKGÖZ fd6d942574 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-07 16:41:40 +02:00
YÜKSEL AÇIKGÖZ 3da7b5c930 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-07 16:41:40 +02:00
YÜKSEL AÇIKGÖZ 896c29f620 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-07 16:41:40 +02:00
YÜKSEL AÇIKGÖZ 616ce197c1 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-07 16:41:40 +02:00
YÜKSEL AÇIKGÖZ 33f6621ff8 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-07 16:41:39 +02:00
Johan Heikkilä 45e9486db0 Translated using Weblate (Swedish)
Currently translated at 99.9% (10056 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-07-07 16:41:39 +02:00
Sárkány Lőrinc 32d4750bbd Translated using Weblate (Hungarian)
Currently translated at 31.7% (3197 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-07-07 16:41:39 +02:00
YÜKSEL AÇIKGÖZ 08bb6368a0 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-07 16:41:39 +02:00
YÜKSEL AÇIKGÖZ b4053180ca Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-07 16:41:39 +02:00
YÜKSEL AÇIKGÖZ 81f6d3d084 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-07 16:41:39 +02:00
co8 j 248b2049e5 Translated using Weblate (Japanese)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-07-07 16:41:39 +02:00
Sárkány Lőrinc 9f6a32aee8 Translated using Weblate (Hungarian)
Currently translated at 31.4% (3164 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-07-07 16:41:39 +02:00
Sárkány Lőrinc ca80925e78 Translated using Weblate (Hungarian)
Currently translated at 31.4% (3164 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-07-07 16:41:39 +02:00
Sárkány Lőrinc 5d25ea693e Translated using Weblate (Hungarian)
Currently translated at 31.4% (3164 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-07-07 16:41:39 +02:00
Sárkány Lőrinc 674da30d37 Translated using Weblate (Hungarian)
Currently translated at 31.4% (3164 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-07-07 16:41:39 +02:00
Sárkány Lőrinc 5ee3b6f3b2 Translated using Weblate (Hungarian)
Currently translated at 31.4% (3164 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-07-07 16:41:38 +02:00
YÜKSEL AÇIKGÖZ 6a4efee944 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-07 16:41:38 +02:00
YÜKSEL AÇIKGÖZ 3604266037 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-07 16:41:38 +02:00
YÜKSEL AÇIKGÖZ 973bba7ba0 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-07 16:41:38 +02:00
dsa-t 68d88d0cd9 Translated using Weblate (Portuguese)
Currently translated at 91.6% (9221 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt/
2025-07-07 16:41:38 +02:00
Anonymous e46109196d Translated using Weblate (Portuguese)
Currently translated at 91.6% (9221 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt/
2025-07-07 16:41:38 +02:00
dsa-t 7b140480bb Translated using Weblate (Portuguese)
Currently translated at 91.6% (9221 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt/
2025-07-07 16:41:38 +02:00
dsa-t 5966b2eb15 Translated using Weblate (Portuguese)
Currently translated at 91.6% (9221 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt/
2025-07-07 16:41:38 +02:00
jean-pierre charras 992492e738 DIALOG_LABEL_PROPERTIES: enter key close it instead of open the drop down list
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21258

(cherry picked from commit c1eb69570d)
2025-07-06 17:00:37 +02:00
Jon Evans 9c28241e45 Make sure initial focus of label properties dialog is the text input 2025-07-06 09:28:24 -04:00
Alex Shvartzkop 0b19a1b6ec Update translations 2025-07-03 20:16:24 +03:00
Pferd O 14825e8996 Translated using Weblate (German)
Currently translated at 99.7% (10038 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-07-03 19:15:24 +02:00
Sárkány Lőrinc 7ca19de713 Translated using Weblate (Hungarian)
Currently translated at 30.3% (3051 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-07-03 19:15:24 +02:00
Pferd O 44a8ad79b7 Translated using Weblate (German)
Currently translated at 99.6% (10030 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-07-03 19:15:24 +02:00
dsa-t 26aac62a6a Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:24 +02:00
YÜKSEL AÇIKGÖZ 8d23daa067 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:24 +02:00
YÜKSEL AÇIKGÖZ 73f9990369 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:24 +02:00
YÜKSEL AÇIKGÖZ 2bb4c2438e Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:24 +02:00
YÜKSEL AÇIKGÖZ dbf79075c4 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:24 +02:00
YÜKSEL AÇIKGÖZ 39eff0a4f7 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:24 +02:00
YÜKSEL AÇIKGÖZ dd86187970 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:24 +02:00
YÜKSEL AÇIKGÖZ edfff51d67 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:24 +02:00
YÜKSEL AÇIKGÖZ 083be47819 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:24 +02:00
YÜKSEL AÇIKGÖZ 6ba759743f Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:24 +02:00
YÜKSEL AÇIKGÖZ b2668f70a2 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:24 +02:00
YÜKSEL AÇIKGÖZ 9faa139b5a Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:24 +02:00
YÜKSEL AÇIKGÖZ d7699ac826 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:23 +02:00
YÜKSEL AÇIKGÖZ 44589a11bb Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:23 +02:00
YÜKSEL AÇIKGÖZ 9ae89aa562 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:23 +02:00
YÜKSEL AÇIKGÖZ f6ae47b788 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:23 +02:00
YÜKSEL AÇIKGÖZ 24c0aec0ba Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:23 +02:00
YÜKSEL AÇIKGÖZ 1c7a5dd375 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:23 +02:00
YÜKSEL AÇIKGÖZ b8d9ff5eb5 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:23 +02:00
YÜKSEL AÇIKGÖZ 8ffa043266 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:23 +02:00
YÜKSEL AÇIKGÖZ 5301fa3360 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:23 +02:00
YÜKSEL AÇIKGÖZ f63ba2f615 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:23 +02:00
YÜKSEL AÇIKGÖZ 6869c6bbff Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:23 +02:00
YÜKSEL AÇIKGÖZ 4f3dc68f1d Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:23 +02:00
YÜKSEL AÇIKGÖZ 49311c2a4b Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:23 +02:00
YÜKSEL AÇIKGÖZ a978925939 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:23 +02:00
YÜKSEL AÇIKGÖZ abb10b925e Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:23 +02:00
YÜKSEL AÇIKGÖZ f45312bc3b Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:23 +02:00
Luka Borkovic da33b8705b Translated using Weblate (Serbian)
Currently translated at 18.8% (1895 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sr/
2025-07-03 19:15:23 +02:00
Luka Borkovic 5a5dc47418 Translated using Weblate (Serbian)
Currently translated at 18.8% (1895 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sr/
2025-07-03 19:15:23 +02:00
Luka Borkovic 84237b16bb Translated using Weblate (Serbian)
Currently translated at 18.8% (1895 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sr/
2025-07-03 19:15:23 +02:00
Luka Borkovic d147d7ffa0 Translated using Weblate (Serbian)
Currently translated at 18.8% (1895 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sr/
2025-07-03 19:15:23 +02:00
Luka Borkovic 837889ecf6 Translated using Weblate (Serbian)
Currently translated at 18.8% (1895 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sr/
2025-07-03 19:15:22 +02:00
Luka Borkovic 0a590bf8f0 Translated using Weblate (Serbian)
Currently translated at 18.8% (1895 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sr/
2025-07-03 19:15:22 +02:00
Luka Borkovic 90d615456a Translated using Weblate (Serbian)
Currently translated at 18.8% (1895 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sr/
2025-07-03 19:15:22 +02:00
Luka Borkovic fc84bf8c94 Translated using Weblate (Serbian)
Currently translated at 18.8% (1895 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sr/
2025-07-03 19:15:22 +02:00
Luka Borkovic cbd808f2e5 Translated using Weblate (Serbian)
Currently translated at 18.8% (1895 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sr/
2025-07-03 19:15:22 +02:00
Julio Dias 5d5fc59ce9 Translated using Weblate (Portuguese)
Currently translated at 91.6% (9221 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt/
2025-07-03 19:15:22 +02:00
CloverGit c488da358e Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-07-03 19:15:22 +02:00
YÜKSEL AÇIKGÖZ 4a1a82cb57 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:22 +02:00
YÜKSEL AÇIKGÖZ 26bb3386c6 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:22 +02:00
YÜKSEL AÇIKGÖZ 7fea1c7073 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:22 +02:00
YÜKSEL AÇIKGÖZ c8bf6dd55c Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:22 +02:00
CloverGit 96ef9d1287 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (10049 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-07-03 19:15:22 +02:00
CloverGit d8f76f324d Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (10049 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-07-03 19:15:22 +02:00
CloverGit 1e6eeda69e Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (10049 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-07-03 19:15:22 +02:00
CloverGit c415380de9 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (10049 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-07-03 19:15:22 +02:00
CloverGit 108ba39185 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (10049 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-07-03 19:15:21 +02:00
CloverGit e163001eef Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (10049 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-07-03 19:15:21 +02:00
CloverGit a51dfa93de Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.7% (10042 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-07-03 19:15:21 +02:00
CloverGit 6bc39db87d Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.7% (10042 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-07-03 19:15:21 +02:00
YÜKSEL AÇIKGÖZ b035f0f631 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:21 +02:00
YÜKSEL AÇIKGÖZ fee5710c2b Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-07-03 19:15:21 +02:00
தமிழ்நேரம் 0c221c55f1 Translated using Weblate (Tamil)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ta/
2025-07-03 19:15:21 +02:00
Temuri Doghonadze 32d5fb9e0c Translated using Weblate (Georgian)
Currently translated at 10.6% (1075 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ka/
2025-07-03 19:15:21 +02:00
Anonymous 636ca4c170 Translated using Weblate (Serbian)
Currently translated at 17.7% (1789 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sr/
2025-07-03 19:15:21 +02:00
ZbeeGin b2aa3cc154 Translated using Weblate (Polish)
Currently translated at 99.7% (10036 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-07-03 19:15:21 +02:00
Wayne Stambaugh 7182278200 Tag stable version 9.0.3 release candidate 1. 2025-07-02 11:27:34 -04:00
Alex Shvartzkop be9ce460f8 EasyEDA Std import: support multiple consecutive arc parameter sets.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21238

(cherry picked from commit 90f5cbf003)
2025-07-02 18:07:06 +03:00
Jeff Young adf8d6626f Further simplify scoring logic.
Do away with special cases for showing.
Do away with resetting the score separately.
All methods are subtractive (logical AND).

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21220

(cherry picked from commit 01a8d44bce)
2025-07-01 18:13:55 -06:00
Jeff Young f561c05dd5 Fix for new layer arch (copper on even numbers only).
(cherry picked from commit cda127a9a3)
2025-06-30 13:59:15 -06:00
Jeff Young 53b3c1c082 CHANGED: Use FILTER_COMBOBOX for label names.
Also pushes some of the implementation down a level
so that it can be shared between this and the
SYMBOL_FILTER_COMBOBOX.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20943

(cherry picked from commit ee2cf47f23)
2025-06-30 13:58:58 -06:00
Jeff Young b21ba7c2aa IncrementTimeStamp() lock safety.
Increment is only called once per op, so it's not
overly performance critical.  Better to have the
lock when reading the cache values.

(cherry picked from commit a7a83efc46)
2025-06-30 12:00:15 -06:00
jean-pierre charras e12748e669 DIALOG_PIN_PROPERTIES: fix incorrect initial size when info bar is shown.
FinishDialogSettings() must be called after the info bar is initialized.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16761

(cherry picked from commit 6d4cf65d5a)
2025-06-29 10:08:11 +02:00
Jon Evans eb3606bf57 Prevent crash when zooming to preset in footprint chooser
Partial cherry-pick of 0cf866d4

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21203
2025-06-28 19:46:42 -04:00
Alex Shvartzkop d3e5245606 Restore *_md.h files removed in 939659fb58 2025-06-28 15:47:50 +03:00
Jeff Young 632d23c6b0 Uninitialized variable.
(cherry picked from commit 4403c9b62f)
2025-06-28 13:57:14 +02:00
Tomasz Wlostowski d09523728d router: clean up shoved traces after aborting differential pair routing in shove mode
Note: the single-trace placer (LINE_PLACER) has moved to the FIXED_TAIL for tracking the interim placed routes (and reverting them if user pressed backspace). Unfortunately the DIFF_PAIR_PLACER didn't follow. The result was the dummy CommitPlacement() call at the end of aborted routing would commit the last shove state, even if FixRoute() was never called. For longer-term fix: fix ROUTER_TOOL logic to indicated aborted routing to the router/placer (AbortPlacement() is already there). Also implement FIXED_TAIL in diff pair placement mode.
(cherry picked from commit ed6440b782)
2025-06-28 13:57:07 +02:00
Tomasz Wlostowski 939659fb58 router: TOPOLOGY::SimplifyLine() should not try to merge segments of differing widths
Note to self: likely a regression after adding aAllowSegmentSizeMismatch parameter (default = true) to AssembleLine(). We need to improve the simplification algorithm to take differing widths into account.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21078

(cherry picked from commit 0256ccb6a6)
2025-06-28 13:57:02 +02:00
Alex Shvartzkop 37b9678de3 Update translations 2025-06-27 22:51:50 +03:00
YÜKSEL AÇIKGÖZ ed8d516e1f Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-06-27 21:50:43 +02:00
YÜKSEL AÇIKGÖZ 6c2d54eee3 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-06-27 21:50:43 +02:00
YÜKSEL AÇIKGÖZ 14af40cbfd Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-06-27 21:50:42 +02:00
YÜKSEL AÇIKGÖZ f525b4c4fb Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-06-27 21:50:42 +02:00
YÜKSEL AÇIKGÖZ f063eee491 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-06-27 21:50:42 +02:00
YÜKSEL AÇIKGÖZ a485294a4c Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-06-27 21:50:42 +02:00
YÜKSEL AÇIKGÖZ 53c59d78c8 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-06-27 21:50:42 +02:00
YÜKSEL AÇIKGÖZ a6d688c125 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-06-27 21:50:42 +02:00
YÜKSEL AÇIKGÖZ 2ff7c616d8 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-06-27 21:50:42 +02:00
YÜKSEL AÇIKGÖZ 2cdd9e48c6 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-06-27 21:50:42 +02:00
YÜKSEL AÇIKGÖZ 080ca23b66 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-06-27 21:50:42 +02:00
Luka Borkovic c8f8cbcd4c Translated using Weblate (Serbian)
Currently translated at 17.7% (1791 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sr/
2025-06-27 21:50:41 +02:00
pominglee d6ff54156a Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 98.7% (9934 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2025-06-27 21:50:41 +02:00
YÜKSEL AÇIKGÖZ 5ec07eb949 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-06-27 21:50:41 +02:00
Luka Borkovic fb762b7387 Translated using Weblate (Serbian)
Currently translated at 16.3% (1643 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sr/
2025-06-27 21:50:41 +02:00
Manuela Silva 7061c899aa Translated using Weblate (Portuguese)
Currently translated at 91.5% (9217 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt/
2025-06-27 21:50:41 +02:00
ZbeeGin ff5066b64d Translated using Weblate (Polish)
Currently translated at 99.7% (10035 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-06-27 21:50:41 +02:00
2tama3 4e62bd348c Translated using Weblate (Japanese)
Currently translated at 99.7% (10042 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-06-27 21:50:41 +02:00
Marco Ciampa 1cb463d329 Translated using Weblate (Italian)
Currently translated at 99.8% (10045 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-06-27 21:50:41 +02:00
YÜKSEL AÇIKGÖZ 4be25f09e2 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-06-27 21:50:41 +02:00
YÜKSEL AÇIKGÖZ 7c2db10051 Translated using Weblate (Turkish)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-06-27 21:50:40 +02:00
co8 j a6b3cd0bee Translated using Weblate (Japanese)
Currently translated at 99.7% (10042 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-06-27 21:50:40 +02:00
Miklós Márton bd9a0477a5 Translated using Weblate (Hungarian)
Currently translated at 30.3% (3050 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-06-27 21:50:40 +02:00
Pferd O 2b53544cad Translated using Weblate (German)
Currently translated at 99.6% (10029 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-06-27 21:50:40 +02:00
Jan Straka 7054f138c2 Translated using Weblate (Czech)
Currently translated at 78.5% (7902 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2025-06-27 21:50:40 +02:00
Anonymous 946de96a05 Translated using Weblate (Serbian)
Currently translated at 14.5% (1469 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sr/
2025-06-27 21:50:40 +02:00
Anonymous aae248e5bb Translated using Weblate (Hungarian)
Currently translated at 30.2% (3045 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-06-27 21:50:40 +02:00
Pferd O 9e8a33101c Translated using Weblate (German)
Currently translated at 99.6% (10027 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-06-27 21:50:39 +02:00
jean-pierre charras 386ef962e4 STEP export: ensure messages are immediately printed, and not stored in buffer.
The issue was mainly seen on Windows, in STEP export with msys2 build but also
with other builds when exported from Pcbnew dialog

(cherry picked from commit 0d013498ef)
2025-06-24 19:04:28 +02:00
Jeff Young 2ea89e967e Fix uninitialized variable.
(This is potentially #21016.)
2025-06-24 09:44:51 -06:00
Alex Shvartzkop b229eca899 Update translations 2025-06-20 23:57:27 +03:00
Peter B 2935e92c4a Translated using Weblate (Romanian)
Currently translated at 24.0% (2424 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ro/
2025-06-20 22:56:43 +02:00
Sárkány Lőrinc a00327ef4d Translated using Weblate (Hungarian)
Currently translated at 30.2% (3046 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-06-20 22:56:43 +02:00
Peter B 7f1cc16f32 Translated using Weblate (Romanian)
Currently translated at 23.9% (2412 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ro/
2025-06-20 22:56:43 +02:00
ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝) 21b1b4480e Translated using Weblate (Latvian)
Currently translated at 0.7% (78 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/lv/
2025-06-20 22:56:43 +02:00
Pferd O cbb3c68312 Translated using Weblate (German)
Currently translated at 99.6% (10028 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-06-20 22:56:43 +02:00
Luka Borkovic df3dc09373 Translated using Weblate (Serbian)
Currently translated at 14.6% (1470 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sr/
2025-06-20 22:56:43 +02:00
Sárkány Lőrinc 4b88cafda6 Translated using Weblate (Hungarian)
Currently translated at 30.2% (3045 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-06-20 22:56:43 +02:00
Luka Borkovic fd6e9a4674 Translated using Weblate (Serbian)
Currently translated at 14.4% (1454 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sr/
2025-06-20 22:56:42 +02:00
ZbeeGin 9b7c212a1d Translated using Weblate (Polish)
Currently translated at 99.7% (10035 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-06-20 22:56:42 +02:00
Sárkány Lőrinc 0ae604da2d Translated using Weblate (Hungarian)
Currently translated at 30.2% (3042 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-06-20 22:56:42 +02:00
Sárkány Lőrinc 114f99d195 Translated using Weblate (Hungarian)
Currently translated at 29.6% (2984 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-06-20 22:56:42 +02:00
Pferd O 68559469ac Translated using Weblate (German)
Currently translated at 99.4% (10012 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-06-20 22:56:42 +02:00
co8 j 6bec400271 Translated using Weblate (Japanese)
Currently translated at 99.7% (10039 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-06-20 22:56:42 +02:00
Pferd O 0a668b5b90 Translated using Weblate (German)
Currently translated at 99.4% (10011 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-06-20 22:56:42 +02:00
CloverGit ac35561ed8 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.7% (10041 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-06-20 22:56:42 +02:00
தமிழ்நேரம் b1b88a063d Translated using Weblate (Tamil)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ta/
2025-06-20 22:56:42 +02:00
Sárkány Lőrinc 94666d6efa Translated using Weblate (Hungarian)
Currently translated at 28.3% (2849 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-06-20 22:56:42 +02:00
Pferd O cc5afb4919 Translated using Weblate (German)
Currently translated at 99.3% (10000 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-06-20 22:56:42 +02:00
தமிழ்நேரம் 0d6adf987e Translated using Weblate (Tamil)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ta/
2025-06-20 22:56:42 +02:00
Henrik Kauhanen b860dc17ea Translated using Weblate (Swedish)
Currently translated at 99.9% (10057 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-06-20 22:56:42 +02:00
ZbeeGin 7e80958994 Translated using Weblate (Polish)
Currently translated at 99.6% (10033 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-06-20 22:56:41 +02:00
Pferd O f988e2093a Translated using Weblate (German)
Currently translated at 99.3% (9997 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-06-20 22:56:41 +02:00
dsa-t 90d264e80a router: possible fix for disappearing split-segments
https://gitlab.com/kicad/code/kicad/issues/21019


(cherry picked from commit e274307437)

Co-authored-by: Tomasz Wlostowski <tomasz.wlostowski@cern.ch>
2025-06-20 23:08:11 +03:00
Jeff Young 719512183d Eagle sheet descriptions are elements, not attributes.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20957

(cherry picked from commit aaa0e74311)
2025-06-18 12:10:59 +01:00
Jeff Young fde3087324 Hack to prevent single-line scintilla scrolling bug.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19708

(cherry picked from commit ef473c2b01)
2025-06-18 12:10:59 +01:00
Jeff Young 1a59309762 Accept empty "(fp)" statements.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20002

(cherry picked from commit 70dfc9215d)
2025-06-18 12:10:59 +01:00
Jeff Young b9b6ee41e6 Ensure any mapped layers are enabled.
Also fixes a missing mutex for parallel access to cache
in DRC_TEST_PROVIDER_COPPER_CLEARANCE::testGraphicClearances().

Also simplifies the logic for not show multiple errors.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21138

(cherry picked from commit 5e707acbdb)
2025-06-18 12:10:59 +01:00
Jon Evans b1649071e8 Hyperlynx: flip Y-axis coordinates
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18581
2025-06-17 17:43:46 -04:00
jean-pierre charras addd8d74b5 FP editor: use the footprint datasheet field value if it is not empty.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21149

cherry picked from commit c56d55b3 and fix for 9.0.x branch
2025-06-17 18:31:09 +02:00
Jon Evans c9668b81c8 API: Don't accidentally copy board's net info 2025-06-16 23:21:50 -04:00
Mark Roszko 016d937bc0 Rename JOBSET_OUTPUT_TMP_PATH to JOBSET_OUTPUT_WORK_PATH 2025-06-16 16:06:16 +00:00
jean-pierre charras b3c61d2dbc Pcbnew: fix position of rectangles after a Rotate command.
(cherry picked from commit b621e0ccf5)
2025-06-15 17:50:04 +02:00
Jon Evans 8b80853ad7 QA: Store SVGs, not PNGs
Different platforms/versions can result in very slight differences
when converting SVGs to PNGs for diffing them.
2025-06-14 16:56:47 -04:00
Seth Hillbrand 6bc7a5e35f Force grids to have entries.
If they don't in the file, reset to the default

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21060

(cherry picked from commit e957d10098)
2025-06-09 13:14:28 -07:00
Alex Shvartzkop 69ea0e523b Update translations 2025-06-08 17:03:31 +03:00
dsa-t 6bd0ec8c67 Translated using Weblate (Russian)
Currently translated at 100.0% (10064 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-06-08 16:01:51 +02:00
Sárkány Lőrinc 8b1750d480 Translated using Weblate (Hungarian)
Currently translated at 28.2% (2841 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-06-08 16:01:51 +02:00
CloverGit 9affff0d4c Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.7% (10035 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-06-08 16:01:51 +02:00
Sárkány Lőrinc d26f340e54 Translated using Weblate (Hungarian)
Currently translated at 28.1% (2833 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-06-08 16:01:51 +02:00
Sárkány Lőrinc 9d414e2695 Translated using Weblate (Hungarian)
Currently translated at 27.5% (2768 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-06-08 16:01:51 +02:00
ZbeeGin f69725305c Translated using Weblate (Polish)
Currently translated at 99.6% (10026 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-06-08 16:01:51 +02:00
김랑기 3300fdef45 Translated using Weblate (Korean)
Currently translated at 99.0% (9966 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ko/
2025-06-08 16:01:51 +02:00
Pferd O 02bd56d3ff Translated using Weblate (German)
Currently translated at 99.2% (9992 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-06-08 16:01:51 +02:00
DevAny 1db63355be Translated using Weblate (Korean)
Currently translated at 99.0% (9966 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ko/
2025-06-08 16:01:51 +02:00
CloverGit 42154e7911 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.7% (10035 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-06-08 16:01:50 +02:00
Henrik Kauhanen 1e2515c3f7 Translated using Weblate (Swedish)
Currently translated at 99.9% (10056 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-06-08 16:01:50 +02:00
ZbeeGin 054bd94935 Translated using Weblate (Polish)
Currently translated at 99.6% (10025 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-06-08 16:01:50 +02:00
DevAny 9c3411bc0e Translated using Weblate (Korean)
Currently translated at 98.9% (9962 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ko/
2025-06-08 16:01:50 +02:00
Pferd O e42b46a149 Translated using Weblate (German)
Currently translated at 99.2% (9987 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-06-08 16:01:50 +02:00
CloverGit b0ad51034e Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.5% (10021 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-06-08 16:01:50 +02:00
Frank Sonnenberg c02a4528c6 Translated using Weblate (German)
Currently translated at 99.2% (9986 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-06-08 16:01:50 +02:00
Pferd O 761edc19a2 Translated using Weblate (German)
Currently translated at 99.2% (9986 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-06-08 16:01:50 +02:00
Jon Evans 1bc11d0e77 Add prettifier support to ExportFootprint
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21071
2025-06-07 10:18:10 -04:00
Jon Evans d0453a89bc Restore ability for moves to be async
This is required for the API

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21047
2025-06-07 09:46:50 -04:00
Mark Roszko dad1c4ec86 Allow running jobsets in cli by description (and uuid)
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20033


(cherry picked from commit 2d327d9d73)

Co-authored-by: Marek Roszko <mark.roszko@gmail.com>
2025-06-06 23:04:51 +00:00
Seth Hillbrand d22f8a2e28 Fix small segment render
Small segments, not just zero-length ones need to be drawn as circles to
avoid being dropped

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21083

(cherry picked from commit 8e97a98fef)
2025-06-06 15:55:06 -07:00
Seth Hillbrand a5896e231a Don't blindly deref an optional
Since the optional might not have a value (and the wxVariant seems to
equate 0 with an empty string), we should check for the valid optional
first and fallback to 0 if not set

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21081
2025-06-06 13:52:38 -07:00
Mark Roszko 10413f778c Append python Scripts directory to PATH env on windows
(cherry picked from commit fe54a2ec0f)

Co-authored-by: Marek Roszko <mark.roszko@gmail.com>
2025-06-06 03:13:18 +00:00
Mark Roszko f48b1758e5 Set an env var when running jobs that points to the temp folder for the jobset output
(cherry picked from commit ba63b07a5e)

Co-authored-by: Marek Roszko <mark.roszko@gmail.com>
2025-06-06 02:52:00 +00:00
Seth Hillbrand 846425c638 Force PTH pads to exist on all layers
By definition the PTH will exist on all layers at the moment but some
corner case allowed the NPTH layer set to be saved in the layerset,
after which it was hard to reset

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20980
2025-06-05 17:11:40 -07:00
Wayne Stambaugh bbde5bead2 Revert "Fix simulation model dialog issues."
This reverts commit 3f5babd0c9.

Apparently there was another commit prior to this that has not yet been
cherry picked.
2025-06-05 16:18:40 -04:00
Seth Hillbrand 6f295db04a If we can't load the KiCad, don't crash
We already fail the test, so just continue instead of segfaulting the qa

(cherry picked from commit ed67d37480)
2025-06-05 11:41:27 -07:00
Seth Hillbrand 15b525852b Split bar check for fp/symbols
(cherry picked from commit fbaf480351)
2025-06-05 11:41:18 -07:00
Wayne Stambaugh 3f5babd0c9 Fix simulation model dialog issues.
At some point ".\" was added as the default file text control string
which triggered a SPICE model library load.  This would fail every
time the dialog was loaded for the first time.

Clear the model list box when the SPICE model library fails to load.
This way a container out of bounds exception will not get thrown when
the  library model list contains stale model indices.

Technically this does not fix issue #21063 because the crash was fixed
by catching the invalid index exception.  It does prevent an annoying
modal dialog that blocks all of KiCad.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21063

(cherry picked from commit 1eb76cb14d)
2025-06-05 14:07:22 -04:00
jean-pierre charras 2de6a4e0ab Eeschema: fix crash when trying to edit a non symbol field using U,V or F
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21072

(cherry picked from commit a04bead8b0)
2025-06-05 16:41:30 +02:00
jean-pierre charras 3645c6213a DSNLEXER: do not leave a member ( m_knowsBar ) uninitialized
It can break the footprint file parser and the embedded file parser

(cherry picked from commit c278deb9ef)
2025-06-05 13:22:43 +02:00
Seth Hillbrand 5eacca8b18 Handle unquoted strings that use the bar '|' character
We use this as part of the standard sexpr now.  But previously, if a
designer used the '|' character as part of a string with no spaces, it
would be entered unquoted into the file, which neccesitates special
handling

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21065
2025-06-04 10:54:06 -07:00
Seth Hillbrand b2bbee2375 Ensure text ${LAYER} resolves to text not fp layer
We were resolving the footprint variables first for text objects.  This
resulted in always seeing the footprint layer resolution instead of the
text object if the text object was in a footprint.  But this only
happened in the board, not the fp editor.  This harmonizes the display
2025-06-03 10:08:03 -07:00
Jeff Young 1a8d2017ee Differentiate between FP previews and FP editor for 3D viewer settings.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21053

(cherry picked from commit 2e87a04358)
2025-06-03 16:12:15 +01:00
Mark Roszko 2a3eae74c0 Edit vcpkg-configuration.json 2025-06-03 15:10:10 +00:00
Wayne Stambaugh 0382619fbb Coding policy fixes.
(cherry picked from commit fe20f685c2)
2025-06-03 09:28:39 -04:00
Wayne Stambaugh 9135236e57 Honor escape key policy for sheet pin synchronization dialog.
(cherry picked from commit 1cef61c34f)
2025-06-03 09:27:24 -04:00
Marek Roszko c88ec23177 Fix format string
Because the var is a int and %zu is for size_t
2025-06-03 07:44:47 -04:00
Mark Roszko 835c939153 Fix kicad-cli pcb export pdf --mode-multipage
So it generates one PDF instead of multiple PDFs


(cherry picked from commit c519a6b827)

Co-authored-by: Salvador E. Tropea <salvador@inti.gob.ar>
2025-06-03 11:42:09 +00:00
Seth Hillbrand 6988d48250 Fix crash when loading footprints with bezier
We don't have an m_board with design settings, so this can be null and
crash unless we protect it
2025-06-02 17:09:24 -07:00
Wayne Stambaugh 694812b8b3 Fix incorrect board editor text box bitmap button sizes.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21050

(cherry picked from commit 473ceb90cc)
2025-06-02 16:00:37 -04:00
Jeff Young bb83c74d67 Treat stacked pins as a single item in 4-way connection test.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20532
2025-06-02 12:51:27 +01:00
Jeff Young a109853392 Manually cherry-pick Altium importer performance fixes. 2025-06-01 21:25:19 +01:00
jean-pierre charras 88ad461514 Revert "SHAPE_ARC::GetCentralAngle(): better algo to calculate actual arc."
This reverts commit 8279276fe4.
This commit is probably good, but arc calculations are a mined field.
So revert until is is widely tested in master branch.
2025-06-01 20:14:37 +02:00
Alex Shvartzkop 89b8b37af2 Update translations 2025-06-01 20:43:07 +03:00
dsa-t 6f994eb052 Translated using Weblate (Russian)
Currently translated at 99.9% (10063 of 10064 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-06-01 19:42:02 +02:00
Alex Shvartzkop 69e2422524 Fix string. 2025-06-01 19:54:03 +03:00
Alex Shvartzkop 092b8086d3 Fix string. 2025-06-01 19:52:06 +03:00
Alex Shvartzkop 6493269012 Update translations 2025-06-01 19:42:28 +03:00
dsa-t 1873713b6d Translated using Weblate (Tamil)
Currently translated at 99.4% (10001 of 10060 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ta/
2025-06-01 18:41:06 +02:00
dsa-t 5340134a7a Translated using Weblate (Tamil)
Currently translated at 99.4% (10000 of 10060 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ta/
2025-06-01 18:39:24 +02:00
தமிழ்நேரம் b3a97cd387 Translated using Weblate (Tamil)
Currently translated at 99.4% (10001 of 10060 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ta/
2025-06-01 18:39:24 +02:00
co8 j 2a90bf84de Translated using Weblate (Japanese)
Currently translated at 99.7% (10039 of 10060 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-06-01 18:39:24 +02:00
Jan Straka 515b9c416d Translated using Weblate (Czech)
Currently translated at 77.9% (7842 of 10060 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2025-06-01 18:39:24 +02:00
Morad Tamer 39dee3bbaa Translated using Weblate (Arabic)
Currently translated at 1.1% (112 of 10060 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ar/
2025-06-01 18:39:24 +02:00
aris-kimi e013fe5c7a Translated using Weblate (Greek)
Currently translated at 85.9% (8647 of 10060 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/el/
2025-06-01 18:39:23 +02:00
Sárkány Lőrinc ba17ba2dd5 Translated using Weblate (Hungarian)
Currently translated at 27.4% (2757 of 10060 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-06-01 18:39:23 +02:00
Henrik Kauhanen 5c8256fdd4 Translated using Weblate (Swedish)
Currently translated at 99.9% (10052 of 10060 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-06-01 18:39:23 +02:00
dsa-t 471396ef5c Translated using Weblate (Russian)
Currently translated at 99.5% (10015 of 10060 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-06-01 18:39:23 +02:00
Hildo Guillardi Júnior 014ff5dab7 Translated using Weblate (Portuguese)
Currently translated at 91.4% (9199 of 10060 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt/
2025-06-01 18:39:23 +02:00
ZbeeGin 8719c8d050 Translated using Weblate (Polish)
Currently translated at 99.6% (10020 of 10060 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-06-01 18:39:23 +02:00
Anonymous 635cbe135c Translated using Weblate (Hungarian)
Currently translated at 27.3% (2756 of 10060 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-06-01 18:39:23 +02:00
jean-pierre charras 8279276fe4 SHAPE_ARC::GetCentralAngle(): better algo to calculate actual arc.
The old algo worked fine only if the arc "middle point" was on the middle
of the arc. This algo just needs a "middle point" on the arc, not necessary
exactly near the middle of the arc.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21035

(cherry picked from commit 2124f2b846)
2025-06-01 11:20:16 +02:00
Jeff Young 9efd04bb91 Retire old fix in favour of enlarged grid rows.
(This should prevent vertical scrolling which is
what makes it look like the text disappears.  the
problem with using a GRID_CELL_TEXT_EDITOR is that
it doesn't support auto-complete.)

(cherry picked from commit b5e7371275)
2025-06-01 09:47:52 +02:00
Jeff Young 2a1b02c154 Read Altium's showName property for fields.
Also fixes a potential crash bug in schematic
cleanup when breaking lines that are part of a
group.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20985

(cherry picked from commit 65dfee161b)
2025-05-31 22:15:42 +01:00
Jeff Young cab050609d ADDED: field options for Update PCB from Schematic
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21021

(cherry picked from commit 4a21da6b27)
2025-05-31 11:12:47 +01:00
Jeff Young ee62366607 Remove selection before notifying grid of deletion.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20747

(cherry picked from commit a1cc6403bd)
2025-05-31 11:03:59 +01:00
Jon Evans 0ff77bd332 API: Use net names, not codes, and allow creating new nets
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21027
2025-05-30 22:12:19 -04:00
JamesJCode 580da82c37 Further DRC net class and component class match improvements
- Implements wildcard matching for constituent component classes
- Implements wildcard matching for effective net and component class names

(cherry picked from commit 41601e9c2f)
2025-05-29 22:00:40 +01:00
Alex Shvartzkop 5b62160369 Update translations 2025-05-29 21:51:04 +03:00
CloverGit ba955c8716 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.6% (10007 of 10045 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-05-29 20:49:10 +02:00
Sárkány Lőrinc 84b1c5cec0 Translated using Weblate (Hungarian)
Currently translated at 27.4% (2757 of 10045 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-05-29 20:49:10 +02:00
Marco Ciampa a78716656d Translated using Weblate (Italian)
Currently translated at 99.8% (10033 of 10045 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-05-29 20:49:10 +02:00
Sárkány Lőrinc feb004b440 Translated using Weblate (Hungarian)
Currently translated at 27.3% (2752 of 10045 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-05-29 20:49:10 +02:00
Pferd O eb4b665a00 Translated using Weblate (German)
Currently translated at 99.3% (9976 of 10045 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-05-29 20:49:10 +02:00
weblateuser 428aaae1a9 Translated using Weblate (German)
Currently translated at 99.3% (9976 of 10045 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-05-29 20:49:10 +02:00
CloverGit 5c359f6e56 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.6% (10007 of 10045 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-05-29 20:49:10 +02:00
EdizonTN 305b8561c3 Translated using Weblate (Slovak)
Currently translated at 55.8% (5611 of 10045 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2025-05-29 20:49:10 +02:00
Marco Ciampa 2455dc2506 Translated using Weblate (Italian)
Currently translated at 99.7% (10018 of 10045 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-05-29 20:49:09 +02:00
Sárkány Lőrinc 0cf784f549 Translated using Weblate (Hungarian)
Currently translated at 27.1% (2724 of 10045 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-05-29 20:49:09 +02:00
EdizonTN 1114790f0d Translated using Weblate (Slovak)
Currently translated at 55.7% (5600 of 10045 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sk/
2025-05-29 20:49:09 +02:00
Sárkány Lőrinc 7e1f96779a Translated using Weblate (Hungarian)
Currently translated at 26.7% (2691 of 10045 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-05-29 20:49:09 +02:00
___davidpr 3b8efad151 Translated using Weblate (Serbian)
Currently translated at 8.8% (890 of 10045 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sr/
2025-05-29 20:49:09 +02:00
Sárkány Lőrinc 8f4f5e3c24 Translated using Weblate (Hungarian)
Currently translated at 26.5% (2668 of 10045 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-05-29 20:49:09 +02:00
ZbeeGin 6518a00b33 Translated using Weblate (Polish)
Currently translated at 99.6% (10010 of 10045 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-05-29 20:49:09 +02:00
Sárkány Lőrinc a11da42cb2 Translated using Weblate (Hungarian)
Currently translated at 26.4% (2655 of 10045 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-05-29 20:49:09 +02:00
Sárkány Lőrinc 386be3a3cf Translated using Weblate (Hungarian)
Currently translated at 23.0% (2318 of 10045 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-05-29 20:49:09 +02:00
Pferd O 22beab8224 Translated using Weblate (German)
Currently translated at 99.2% (9973 of 10045 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-05-29 20:49:09 +02:00
Henrik Kauhanen 3e4e318995 Translated using Weblate (Swedish)
Currently translated at 99.9% (10039 of 10045 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-05-29 20:49:08 +02:00
dsa-t 1d515a4609 Translated using Weblate (Russian)
Currently translated at 99.6% (10005 of 10045 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-05-29 20:49:08 +02:00
Sárkány Lőrinc 693c435473 Translated using Weblate (Hungarian)
Currently translated at 22.2% (2233 of 10045 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-05-29 20:49:08 +02:00
dsa-t 45b6ea1614 Remove outdated GTK hack.
It is no longer needed with wx 3.2, and causes problems on themes like Adapta.

See https://gitlab.com/kicad/code/kicad/-/issues/9019


(cherry picked from commit 8550394cca)

Co-authored-by: Alex Shvartzkop <dudesuchamazing@gmail.com>
2025-05-29 20:46:04 +03:00
Alex Shvartzkop 830b963b3a Fix wxStyledTextCtrl in field properties dialog on MSW.
The sunken border was included in the size calculation on Windows, causing the same visibility bug.

Use a panel with a border that wraps the control instead.
2025-05-29 12:28:29 +03:00
Alex Shvartzkop 6a003b94d6 Unset PCM button to avoid crash on close. 2025-05-29 12:28:29 +03:00
Jeff Young a92ac0ea99 Restore missing gutter between columns. 2025-05-29 09:23:05 +01:00
Tomasz Wlostowski fcd8419185 router: make sure we are not committing VIAs with non-unique IDs, fixes random disappearing via issue
Note to self:
LINE_PLACER::FixRoute used to silently reclaim the UID of the transient via (as used by the SHOVE's heads tracking logic).
Depending on the particular sequence of user events (the bug is next to impossible to reproduce on a touchpad), this would
result in freshly placed vias disappearing...

Fixes https://gitlab.com/kicad/code/kicad/issues/20999

(cherry picked from commit c5a4f9e747)
2025-05-28 21:34:12 -04:00
Alex Shvartzkop aeb124294e Protect against concurrent wxPlatformInfo access at startup.
wxPlatformInfo is not thread-safe.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21002
2025-05-28 21:26:53 +03:00
Alex Shvartzkop 11d1e50bfc Fix text disappearing in field properties dialog for Value.
Also keeps vertical alignment by increasing descent.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/14379
2025-05-28 20:36:51 +03:00
Jeff Young c4fdf9feeb Fix Scintilla vertical scrolling issue.
(At least on MacOS.  *May* also fix GTK.)

(cherry picked from commit c5947d8901)
2025-05-28 19:31:28 +03:00
Jeff Young c5fb2283b6 Fix ambigious cast build error on msvc 2025-05-27 14:09:32 +01:00
Marek Roszko 073a2e6769 Fix ambigious cast build error on msvc 2025-05-27 06:51:46 -04:00
Jon Evans 52e9cdde99 PNS: Fix early exit from followTrivialPath
Don't mark a segment as visited until the
start of the next loop.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20379
2025-05-26 22:46:51 -04:00
Jon Evans d1e4b03ec1 API: Add CheckPadstackPresenceOnLayers
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20587
2025-05-26 21:46:21 -04:00
Jon Evans 9466cab585 API: Don't set human-readable path that isn't actually 2025-05-26 20:05:16 -04:00
Jon Evans a63758e1e6 API: Add symbol path for footprint instances
See https://gitlab.com/kicad/code/kicad-python/-/issues/37


(cherry picked from commit 4dd39976a3)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-05-26 18:29:35 -04:00
Jeff Young faf6db6972 Fix faulty logic for setting range.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20982

(cherry picked from commit aa49b0319a)
2025-05-26 21:45:59 +01:00
Jeff Young d7a0555780 Fix a bunch more bugs in bezier approximation.
(cherry picked from commit e8e7282fe1)
2025-05-26 21:44:41 +01:00
Jeff Young 29d0cdb546 Use maxError when converting bezier to polyline.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20312

(cherry picked from commit e44c5a7fcd)
2025-05-26 21:44:41 +01:00
Graham Keeth 4634705f1c Sim: correctly netlist AM/SFFM current sources
AM and SFFM current sources were being netlisted as voltage sources due
to the wrong prefix being added.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20994

(cherry picked from commit 6bb3fc39df)
2025-05-26 21:44:41 +01:00
Jon Evans 81ea108d8c Don't bypass empty visibility recovery due to migration
In some situations, loading a project in 8.0 would wipe the
object visibility settings but the local settings also
require a format migration.  The migrator was adding visibility
for the shapes layer in this situation, bypassing the recovery
from having no objects visible.
2025-05-26 15:19:23 -04:00
JamesJCode d928a2a0e3 Re-implement wildcard matches for netclass constituents in DRC evaluation
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20955

(cherry picked from commit 7176dbe6dc)
2025-05-26 19:49:25 +01:00
jean-pierre charras 44543cf30c Fix a compil warning.
(cherry picked from commit 5f17a7b024)
2025-05-26 10:45:41 +02:00
jean-pierre charras 3aa4f8a1f1 Simulator fix error message or crash in user-defined signal dialog
It happens when deleting all chars using backspace key

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20991

(cherry picked from commit 134e3140ff)
2025-05-25 18:57:15 +02:00
Jeff Young b7a8da81a9 Better and more complete recursion guards.
(ie: ones that actually work.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20990

(cherry picked from commit ed1b4f6e5a)
2025-05-25 08:17:23 +01:00
Jeff Young e7fa890ccc Fix typo in comparator.
(cherry picked from commit 1c8f971789)
2025-05-24 22:44:10 +01:00
Jeff Young 9aa644d437 Fix recursion issues with text variables.
1) Pass aDepth down through those versions of
CreateModel() which expand text variables

2) Be aware that unresolved text variables look
just like unexpanded text variables.

(cherry picked from commit 61d36f9d29)
2025-05-24 22:44:02 +01:00
Jeff Young e017447151 Add autocomplete for OP:power.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20984

(cherry picked from commit aae4833c94)
2025-05-24 22:42:41 +01:00
Marek Roszko 9d07784835 Show [read-only] in the title bar based on the project's state 2025-05-24 16:10:52 -04:00
Marek Roszko 2d8c805107 Ensure symbol pins are sorted before infering spice pin mapping
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20590
2025-05-24 14:41:13 -04:00
Marek Roszko f35078cb29 Prevent crash on failure to load ngspice's dll
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20695
2025-05-24 00:16:40 -04:00
Marek Roszko 10c7796336 Prevent oob string access in SCH_REFERENCE::IsSplitNeeded
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20948
2025-05-24 00:01:16 -04:00
Marek Roszko 2bdc7d4872 Fix tuning patterns (generators) not being arrayed properly
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20617
2025-05-23 21:46:51 -04:00
Marek Roszko f7e851178e Add a simple hash for sch_tables to avoid too much reordering in the saved schematic file
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20918
2025-05-23 21:31:51 -04:00
Seth Hillbrand 6d1bf799ff Avoid deref on missing part
We do not always have the LIB_SYMBOL set in a SCH_SYMBOL, so avoid
trying to get the embedded files from it

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20986

(cherry picked from commit 9d32de5154)
2025-05-23 17:04:28 -07:00
Mark Roszko 74819babf1 Load the saved rule area uuid back in
Partial fix for https://gitlab.com/kicad/code/kicad/-/issues/20918


(cherry picked from commit 5e4ad048e2)

Co-authored-by: Marek Roszko <mark.roszko@gmail.com>
2025-05-23 23:51:50 +00:00
jean-pierre charras 7abfda2b4f 3D viewer: do not change anything in the board shared by the FP editor.
Especially, the BOARD managed by FP editor had is m_project member reinitialized
when creating the 3D viewer, thus creating issues in FP editor, and create
a crash when closing kicad

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20964

(cherry picked from commit 6a9b427562)
2025-05-23 15:58:54 +02:00
Mark Roszko 64b40c7f49 Update vcpkg dependencies 2025-05-23 00:11:07 +00:00
Jeff Young 324f5e1127 Timestamps for altium footprint libs.
(cherry picked from commit afce3eb2d9)
2025-05-22 10:20:35 -07:00
Zenn Geeraerts 75a8b35581 Use case insensitivity when loading Altium files
Altium is case insensitive, so our match for internal names should be also

(cherry picked from commit d31eeb5c1b)
2025-05-22 10:20:35 -07:00
Seth Hillbrand 13442a8f91 Import Altium Projects
Handle Altium project file format

Parse individual schematic files and layout files
Create top-level schematic file
Link imported UUIDs between schematic symbol and footprints based on
refdes
Create KiCad project
Map Altium layout layers between KiCad

Fixes https://gitlab.com/kicad/code/kicad/-/issues/2117

(cherry picked from commit e81956f292)
2025-05-22 10:09:02 -07:00
Wayne Stambaugh 55fbae6083 Make directive label text color behave like other labels.
Label text color will inherit from the assigned net class.  Apparently
this was overlooked when the directive labels were implemented.

(cherry picked from commit 19cb41722a)
2025-05-21 13:24:11 -04:00
Alex Shvartzkop 895ed8dd9e Update translations 2025-05-21 05:22:55 +03:00
Anonymous bd8b39260a Translated using Weblate (Tamil)
Currently translated at 99.3% (9951 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ta/
2025-05-21 03:54:26 +02:00
தமிழ்நேரம் 7cb5423cb9 Translated using Weblate (Tamil)
Currently translated at 99.3% (9952 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ta/
2025-05-21 03:54:10 +02:00
Sárkány Lőrinc 60fbfb7bf8 Translated using Weblate (Hungarian)
Currently translated at 21.4% (2152 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-05-21 03:54:10 +02:00
Pferd O c6c002bc5b Translated using Weblate (German)
Currently translated at 99.6% (9979 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-05-21 03:54:10 +02:00
தமிழ்நேரம் db5afbe9d4 Translated using Weblate (Tamil)
Currently translated at 90.6% (9077 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ta/
2025-05-21 03:54:10 +02:00
Jason Son 1236646ac0 Translated using Weblate (Korean)
Currently translated at 98.4% (9856 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ko/
2025-05-21 03:54:09 +02:00
Sárkány Lőrinc bc15fad57f Translated using Weblate (Hungarian)
Currently translated at 15.1% (1516 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-05-21 03:54:09 +02:00
தமிழ்நேரம் 7d85981f1a Translated using Weblate (Tamil)
Currently translated at 64.2% (6432 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ta/
2025-05-21 03:54:09 +02:00
Sárkány Lőrinc 38abbba4b5 Translated using Weblate (Hungarian)
Currently translated at 14.8% (1490 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-05-21 03:54:09 +02:00
தமிழ்நேரம் 636255faca Translated using Weblate (Tamil)
Currently translated at 53.9% (5408 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ta/
2025-05-21 03:54:09 +02:00
Sárkány Lőrinc 010f65fd32 Translated using Weblate (Hungarian)
Currently translated at 14.2% (1430 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-05-21 03:54:09 +02:00
CloverGit 01a3c22b37 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.9% (10011 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-05-21 03:54:09 +02:00
தமிழ்நேரம் 12f0dc48c7 Translated using Weblate (Tamil)
Currently translated at 48.4% (4848 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ta/
2025-05-21 03:54:09 +02:00
Sárkány Lőrinc 575c8490c7 Translated using Weblate (Hungarian)
Currently translated at 13.7% (1375 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-05-21 03:54:09 +02:00
Sárkány Lőrinc 9936e128a6 Translated using Weblate (Hungarian)
Currently translated at 10.4% (1044 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-05-21 03:54:09 +02:00
Tevfik Bagcivan 8e65595d54 Translated using Weblate (Turkish)
Currently translated at 65.1% (6521 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-05-21 03:54:09 +02:00
Pferd O 595a44d026 Translated using Weblate (German)
Currently translated at 99.6% (9977 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-05-21 03:54:09 +02:00
Jan Straka 47cc393908 Translated using Weblate (Czech)
Currently translated at 78.1% (7830 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2025-05-21 03:54:09 +02:00
Adolfo Jayme Barrientos 617519046c Translated using Weblate (Catalan)
Currently translated at 42.1% (4217 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ca/
2025-05-21 03:54:08 +02:00
Ivan Chuba 679bd9ece9 Translated using Weblate (Ukrainian)
Currently translated at 76.6% (7673 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2025-05-21 03:54:08 +02:00
2tama3 e7d2fd5029 Translated using Weblate (Japanese)
Currently translated at 100.0% (10016 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-05-21 03:54:08 +02:00
Adolfo Jayme Barrientos f1e478bd80 Translated using Weblate (Catalan)
Currently translated at 42.0% (4214 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ca/
2025-05-21 03:54:08 +02:00
Alex Shvartzkop 4d3ac103ad Improve performance of SEG::Contains.
(cherry picked from commit a82916f4db)
2025-05-20 15:14:10 -07:00
Seth Hillbrand b47bf99632 Safety valve for integer sqrt
If the value is negative, we have likely overflowed the available size
of the integer container.  In which case, rather than slowly counting
down, we return the largest logical square root size to allow processing
to continue

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20947
2025-05-20 15:14:07 -07:00
Seth Hillbrand de5f65d18e Dijkstra's only works with positive weights
Overlapping limits break the assumptions of the algorithm.  We limit the
weights here to only positive numbers and protect the actual alg should
any sneak past

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20827

(cherry picked from commit 0c23868ac2)
2025-05-19 17:57:29 -07:00
Alex Shvartzkop f1738069f9 Slightly optimize creepage DRC.
See https://gitlab.com/kicad/code/kicad/-/issues/20827

(cherry picked from commit 1fe5addafb)
2025-05-19 17:57:19 -07:00
Seth Hillbrand d6607146c4 Fix silk board edge collision case
First, fix the error limit check in drc_test_provider_edge_clearance.
Then, we rotate the final point incorrectly in SHAPE_ARC::Collide (need
negative angle).  We were not checking this result in the QA, so add the
proper tests

(cherry picked from commit 9bedb6eedb)
2025-05-19 17:49:18 -07:00
Wayne Stambaugh 8b44bc1344 Fix a cadre of symbol pin alternate issues.
Prevent the file formatter from writing and the file parser from loading
symbol pin alternates that have an empty name or when the alternate name
is the same as the default pin name.  Apparently at some point they were
able to be created and saved.

Do not allow SCH_PIN::SetAlt() to set an alternate name when the name
does not exist in the library symbol pin alternate list.  This required
fixing the associated QA test.

When updating or changing schematic symbols from library, reset the pin
alternate to the default when the alternate no longer exists in the
symbol.

Do not populate pin alternates context menu with duplicate default pin.

Clear orphaned pin alternates to the default when saving symbols from
symbol editor.

(cherry picked from commit d16d2f5a5b)
2025-05-18 07:18:44 -04:00
Wayne Stambaugh de0394bf38 Fix update symbol from library when alternate pins are in play.
ADDED: An option in the update symbol dialog to reset alternate pins to
       their default value.

Don't set the symbol alternate pin when the updated symbol no longer
contains the alternate pin name.

Clear the alternate pin name when it's set to the default pin name.  This
is caused by a bug somewhere which hasn't been resolved and it causes the
library symbol comparison to fail when it's set.

This also changes the change/update symbol dialog layout.  Adding another
option check box was making the dialog too tall.  The option check boxes
were split into two columns which made the dialog wider.  It might be
worth using another wxCheckListBox for the options as more are added.

(cherry picked from commit 46b24a5b68)
2025-05-18 07:18:15 -04:00
Seth Hillbrand 62e1169492 When cycling next/prev selection, keep only single
We want to have only the current item in the selection rather than all
of them
2025-05-16 09:25:04 -07:00
Seth Hillbrand 6c09957799 Properly use optional
By dereferencing first, we force a get() on the optional and try to pass
that to a routine that takes an optional parameter.  Just passing the
optional reference protects against accessing an invalid

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20934
2025-05-16 08:53:59 -07:00
dsa-t bdf459f19f Use ToCDouble in ValueStringCompare.
(cherry picked from commit d59ffdcaa3)

Co-authored-by: Alex Shvartzkop <dudesuchamazing@gmail.com>
2025-05-16 04:11:35 +03:00
Olliver Schinagl 0d88a985b7 export_vrml: Fix 3D model destination timestamp check
Not all hosts have `wxHAS_HUGE_FILES` enabled, which causes us to drop
millisecond resolution accuracy. In some cases, this can cause
race-conditions with externally generated components such as by KiBot
(which generates THT components with color bands on the fly), which runs
so fast, that we fall within a second resolution.

When setting the destination timestamp, there's only two valid options.
Either the destination file exists, and if it does, we use the
destination file's timestamp (current behavior) or it does not exist, in
which case we should use an 'invalid' (null, NaN, whatever).

Calling the constructor sets this up correctly and then only setting the
timestamp if the file exists. Nothing else.

Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/20877
(cherry picked from commit cf3dbfbbe6)
2025-05-15 11:30:59 -07:00
Seth Hillbrand 8993656e72 Do not insert newlines in single line controls
2d2f443aa4 allowed the use of shift-enter
when creating tables for newlines.  However, this should not be applied
to all text controls.  We split the ones by IsMultiLine to determine if
the shift-return is a newline or a dialog close

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20866

(cherry picked from commit 8a0e9bef5a)
2025-05-14 17:13:47 -07:00
Seth Hillbrand ac5de5e938 Revise hierarchical sorting
The lexicographical sort for hierarchical pages needs to satisfy the
following:
- Ensure a parent comes before all its children
- Ensure all children with the same parent are sorted by page number
- Ensure all of a parent's children come before the parent's next sibling

To do this, we need to compare at each path level before descending

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20701

(cherry picked from commit e06e60882d)
2025-05-14 16:46:15 -07:00
Seth Hillbrand f44157657c Fix how blind/buried vias are handle in IPC356
Code 307 is used for blind/buried vias.  Additionally, the access layer
is represented based on sequential layer numbers and needed to be
adjusted for new layer numbering

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20928

(cherry picked from commit 4a896f84f5)
2025-05-14 15:59:36 -07:00
Jeff Young 51b99e8f10 Only report single-file issues in single-file-mode.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20891

(cherry picked from commit 085af89381)
2025-05-14 16:31:11 +01:00
Maciej Suminski 84a0f22250 altium: do not reshape NPTH pads to match the holes
Resizing pads affects also their solder mask and solder paste patterns,
admittedly in some unusual footprints.

(cherry picked from commit 5147fd9829)
2025-05-14 16:30:53 +01:00
Jeff Young f21c9ea31c Don't report missing color theme in B&W mode.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20923
2025-05-14 15:39:16 +01:00
Jeff Young 4759b04667 CHANGED: exclude heatsink pads from courtyard collision checking.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20454

(cherry picked from commit d691a257b2)
2025-05-14 11:06:13 +01:00
Jeff Young 88700ba4cc Read/write chaining tolerance to job params.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20906

(cherry picked from commit f690b42b53)
2025-05-14 11:05:41 +01:00
Jeff Young e501181f2d Search board layer names when plotting Gerbers from CLI.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20904

(cherry picked from commit 420b253ac4)
2025-05-14 11:05:15 +01:00
Seth Hillbrand afec66d478 Fix usage of PCB_FIELD( PCB_TEXT& )
Passing a pointer to the CTOR invokes the PCB_FIELD( BOARD_ITEM* ) ctor,
which is not what is intended.  Passing just the reference is better but
still ends up creating a PCB_FIELD class with type PCB_TEXT because it
didn't correctly set the type.  So we need to properly set our type and
our parent, then copy the text attributes over.  We can't use the
default copy operator because this also copies the struct_id of PCB_TEXT

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20875

(cherry picked from commit 750dbe6336)
2025-05-13 17:51:08 -07:00
jean-pierre charras 8aff85d3ff Pcbnew, DIALOG_SHAPE_PROPERTIES: fix an issue noticeable with POLY shapes.
After editing a polygon, the pointers m_parent and m_group where cleared.
They are now restored (like for other shapes).

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20564

(cherry picked from commit 848a6b6930)
2025-05-13 11:32:20 -07:00
jean-pierre charras 0bf415a266 Footprint chooser: fix crash when closing the dialog with a large footprint.
The crash was perhaps due to use after delete of data in DTOR functions, when
a footprint with a **lot** of graphics was loaded and the view cleared.
The view is now cleared before any other deletion.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20915

(cherry picked from commit 63babb1a22)
2025-05-13 16:18:31 +02:00
Jeff Young 0dde037ab9 Update CLI gold files with higher arc definition. 2025-05-13 14:19:00 +01:00
Jeff Young 241959bca3 Slice() must also support aMaxError.
In some cases arcs are re-inserted.
2025-05-13 12:02:21 +01:00
Jeff Young bfa61dc8ad Third go at fixing the kimath test.
(cherry picked from commit 7f4853b8a5)
2025-05-13 10:10:46 +01:00
Jeff Young e4527bd1fe Another go at fixing the kimath test.
(cherry picked from commit acf1dca1e1)
2025-05-13 10:10:43 +01:00
Jeff Young 1520883182 Formatting.
(cherry picked from commit a95f5172c9)
2025-05-13 10:10:41 +01:00
Jeff Young 427d4173b1 Allow math tests to run with their own precision.
(cherry picked from commit 32cd142c39)
2025-05-13 10:10:34 +01:00
Jeff Young 19af8419b3 Update Cadstar gold file for increased precision.
(cherry picked from commit f54ae5246c)
2025-05-13 10:10:31 +01:00
Jeff Young 90c8c8b243 Formatting.
(cherry picked from commit c3a0621dfb)
2025-05-12 20:49:04 +01:00
Jeff Young 61f790df70 Use native arcs (not approximated ones) when converting circles to polygons.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20895

(cherry picked from commit b70d3586c9)
2025-05-12 20:48:59 +01:00
Jeff Young f334a9a3bd Use a high definition for display of arcs in SHAPE_LINE_CHAINs.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20895

(cherry picked from commit 3474e962d5)
2025-05-12 20:48:54 +01:00
Jeff Young 0ee2685ab6 Use consistent terminology and types.
(cherry picked from commit 6757ba8165)
2025-05-12 20:48:48 +01:00
Jeff Young 9e17baecbc Plot drill marks on mask layers if the pad exists there.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20859

(cherry picked from commit 5e6ef67fce)
2025-05-10 19:11:56 +01:00
jean-pierre charras 3900d8e231 Pcbnew: fix an issue that prevent to write the right layer type in brd files
In layers block, the file type for User.n was always written as "user" type.
However this type can be set to "front" or "back" by the board settings
dialog (Off-board, front or Off-board, back) and allowed in file.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20892

(cherry picked from commit db23ee481c)
2025-05-10 17:01:30 +02:00
Seth Hillbrand cd3fea196c Check for valid board before query
New items may not have a board set and will return nullptr

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20893
2025-05-09 13:45:13 -07:00
Seth Hillbrand 15a71319d6 Avoid assertion on invalid page
Not all version of the dialog have tabs, so -1 is stored for these,
which does not exist in the notebook and should not be restored
2025-05-09 13:45:04 -07:00
Seth Hillbrand e387635edf Don't overwrite explicit sizes unless needed
We already did this for single-ended, this extends to dp routes

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20889

(cherry picked from commit c06ddf966d)
2025-05-09 13:32:55 -07:00
Wayne Stambaugh 4b009b0698 Fix ERC QA failures caused by hierarchical label root sheet test.
(cherry picked from commit bebc9669ad)
2025-05-09 15:33:26 -04:00
Seth Hillbrand 0a9d29ee3b Prevent backspace from re-filtering nets
Makes adjusting autofilled nets more pleasant.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20786

(cherry picked from commit e0e1971bd6)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20894
2025-05-09 11:35:12 -07:00
Seth Hillbrand 75fa0ab0c9 Fix infinite loop in QuasiModal
Now that we use RAII nuller, we need to avoid the case where
m_qmodal_loop is nulled before it ends
2025-05-09 09:36:58 -07:00
Seth Hillbrand 914cf86d5e Make sure we re-hide hidden fields
Fields that are forced to be shown need to be re-hidden when the find
dialog closes.  While they are _also_ brightened, this flag may be
cleared by other processes, so we need to test for the forced visibility
as well.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20865

(cherry picked from commit fc6f1f41d2)
2025-05-08 16:48:18 -07:00
Seth Hillbrand c6914605ef Remove errant printf 2025-05-08 15:55:56 -07:00
Seth Hillbrand 5616b9c266 Prevent overriding existing track width
Avoids resizing existing tracks to match new track.  Adds new parameter
to AssembleLine to allow current behavior while only preventing width
overrides when creating new lines

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20031

(cherry picked from commit 4a41f4a525)
2025-05-08 12:44:19 -07:00
Seth Hillbrand e6b4c0c7a7 Don't show warning when avoiding frozen panel
The event is expected, so we just need to return without error
2025-05-08 12:44:19 -07:00
Seth Hillbrand 6a8e1b1135 Add ability to quickly move through nets
After highlighting a net (`), press Tab to quikcly move to the next item
on the net and Shift-Tab to move to the previous

Fixes https://gitlab.com/kicad/code/kicad/-/issues/10911

(cherry picked from commit 1e9cf4e3d7)
2025-05-08 12:44:19 -07:00
JamesJCode d29d5e77fe Fix broken placement of SCH_DIRECTIVE_LABELs
(cherry picked from commit c7cec5f21a)
2025-05-08 12:44:19 -07:00
Seth Hillbrand 1a7159bb09 Allow multi label input
This is a re-implementation of 39c2745f55
that was removed by e5089d783d

This implementation works in the tool, containing side effects
(hopefully) better than the initial implementation.  The multiple labels
are input as multiple lines instead of labels with spaces, allowing for
copy/paste between spreadsheets of labels

Fixes https://gitlab.com/kicad/code/kicad/-/issues/10950

(cherry picked from commit 6f6ca2a35f)
2025-05-08 12:44:19 -07:00
Seth Hillbrand 58461d5925 Update search dialog
Allow regular expression in search and replace
Allow searching netnames including nets contained in buses

Fixes https://gitlab.com/kicad/code/kicad/-/issues/12156

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17102

(cherry picked from commit aff0ad971f)
2025-05-08 12:44:19 -07:00
Wayne Stambaugh 5cb956f61b Test for hierarchical labels in root sheet when running ERC.
Hierarchical labels in the root sheet cannot be attached to a parent sheet
pin.  By definition they are unconnected.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20810.

(cherry picked from commit 6dcac5bded)
2025-05-08 14:45:23 -04:00
Wayne Stambaugh c1b9d5fd85 Fix broken select connection behavior.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19790

(cherry picked from commit 93cac7d0a5)
2025-05-08 14:38:44 -04:00
jean-pierre charras ae321bf186 Eeschema, Net Navigator: fix incorrect refresh of nets tree.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20648

(cherry picked from commit cc75b511ba)
2025-05-08 11:42:16 +02:00
Jon Evans 2fe7fa3b54 API: Use action wrapper for setting grid origin
Fixes https://gitlab.com/kicad/code/kicad-python/-/issues/47


(cherry picked from commit 71417fbe3b)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-05-07 23:29:36 -04:00
Seth Hillbrand a801b4ac8a Properly handle arc coupled items
When arcs do not share a center, the circle formed by the arc will be
closer on one side than the other.  When this happens, the NearestPoints
calculation was accidentally taking the distance from the wrong side of
the circle.

Note that this was likely due to the conventions for Rotate (positive =
reduce angle) being mixed up with angular addition

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20636

(cherry picked from commit 97296a3b08)
2025-05-07 14:56:26 -07:00
Jeff Young 1808cef013 Fix test failure. 2025-05-07 17:24:21 +01:00
Jeff Young 41ac949312 Skip same-net-checking for hole-to-hole collisions.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20547

(cherry picked from commit b14472e105)
2025-05-07 14:11:19 +01:00
Jeff Young 8e983d7147 Also trim board item layersets.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20063

(cherry picked from commit 8945bcc231)
2025-05-07 14:11:15 +01:00
Jeff Young e92c3a647f Trim library layers to instance board before comparing.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20552

(cherry picked from commit da242ec3f3)
2025-05-07 14:10:30 +01:00
Jeff Young 6f0e548bd6 Don't expect a B item when evaling DIFF_PAIR_GAP_CONSTRAINT.
The checker first builds a map with only the
A items.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19825

(cherry picked from commit ea8b0c0e8a)
2025-05-07 14:10:19 +01:00
Jeff Young f0b110bdb8 Formatting and reduced reliance on dyn_cast.
(cherry picked from commit 6307058ac8)
2025-05-07 14:10:16 +01:00
Jeff Young d4edee4897 Formatting.
(cherry picked from commit 6b08407bd5)
2025-05-07 14:10:03 +01:00
Jeff Young 8ac578c788 DRCEpsilon is generic. Zone knockouts need more specific values.
Each knockout can be approximated, and each knockout
will have m_ExtraClearance added.  If a neck is
between two knockouts, it will be 2X the above
values narrower than expected.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20361

(cherry picked from commit 96522c4113)
2025-05-07 14:09:05 +01:00
Jeff Young a6dec68444 Attempt to fix older OCC version compile issue.
(cherry picked from commit 76d05efe7a)
2025-05-07 13:43:52 +01:00
Jeff Young 00f92c2188 Patch for gcc stupidity.
(cherry picked from commit edd858a4d2)
2025-05-07 13:43:45 +01:00
Jeff Young 67debb8257 Move STEP exporter error reporting to REPORTER interface.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20738

(cherry picked from commit e69c80f09d)
2025-05-07 13:43:40 +01:00
Jeff Young d3ac86a0dd Fix presumed copy/pasta when ensuring circles are circles.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20567

(cherry picked from commit 75d9f708a8)
2025-05-07 13:42:19 +01:00
Jeff Young 00ba3e47f9 Ungroup before deleting items.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20699

(cherry picked from commit 3f25b36ff1)
2025-05-07 13:41:23 +01:00
Jeff Young a9ac2c03cc unit==0 means all-units only for symbol children
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20663

(cherry picked from commit 5f0856e5d2)
2025-05-07 13:39:05 +01:00
Jeff Young 86da6633f8 Support URLs in Symbol Chooser info panel.
Also adds support for sim library fields as URLs.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20811

(cherry picked from commit 34f2038a95)
2025-05-07 13:37:57 +01:00
Jeff Young f2ad3e66ac Formatting.
(cherry picked from commit a53a639523)
2025-05-07 13:34:49 +01:00
Jeff Young e0210d9b3a Fix various errors in intersecting zones test.
Also gives a clearer error message, and better
descriptions of named zones.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20718

(cherry picked from commit 5573dce448)
2025-05-07 13:34:17 +01:00
Mark Roszko 8ccc548628 Add missing numpy requirement to tests/requirements.txt
(cherry picked from commit 83f9dc56d0)

Co-authored-by: Marek Roszko <mark.roszko@gmail.com>
2025-05-07 00:13:44 +00:00
Mark Roszko 6eecfaf64e Swap windows path chars in FILENAME_RESOLVER::ResolvePath
This fixes the QA for issue13591 falsely passing on Linux.
It is actually failing this entire time.

But there is more wtfery going on, such as wxFFile::IsOpened returning True on a directory path.


(cherry picked from commit 157180e772)

Co-authored-by: Marek Roszko <mark.roszko@gmail.com>
2025-05-07 00:13:20 +00:00
Mark Roszko 6151a94f4e On Linux you can fopen (read) a directory for no reason, fix SafeReadFile to make it safer
TIL


(cherry picked from commit 883a1f8d97)

Co-authored-by: Marek Roszko <mark.roszko@gmail.com>
2025-05-07 00:12:56 +00:00
Wayne Stambaugh 82552059c0 Begin version 9.0.3 development. 2025-05-06 13:46:13 -04:00
Wayne Stambaugh 5526fba124 Tag stable version 9.0.2 release. 2025-05-06 13:42:59 -04:00
Alex Shvartzkop cceafd5e7d Update translations 2025-05-06 12:53:16 +03:00
dsa-t 4044ed65cd Translated using Weblate (Russian)
Currently translated at 100.0% (10016 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-05-06 11:51:58 +02:00
Pferd O a13dbf8cf4 Translated using Weblate (German)
Currently translated at 99.5% (9971 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-05-06 11:51:57 +02:00
Henrik Kauhanen 2f42a85724 Translated using Weblate (Swedish)
Currently translated at 99.9% (10006 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-05-06 11:51:57 +02:00
ZbeeGin 154c52defd Translated using Weblate (Polish)
Currently translated at 100.0% (10016 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-05-06 11:51:57 +02:00
2tama3 fc518c5584 Translated using Weblate (Japanese)
Currently translated at 100.0% (10016 of 10016 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-05-06 11:51:57 +02:00
Mike Williams a7a7e963c9 bom export: don't break column order on mismatched column counts
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/20520
2025-05-05 13:54:15 -04:00
Alex Shvartzkop 46e6eb163b Update translations 2025-05-03 18:13:31 +03:00
Joakim Lundborg 42429aff15 Translated using Weblate (Swedish)
Currently translated at 99.9% (10008 of 10015 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-05-03 17:10:00 +02:00
dsa-t f02c62971f Translated using Weblate (Russian)
Currently translated at 100.0% (10015 of 10015 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-05-03 17:10:00 +02:00
ZbeeGin 47aba551d1 Translated using Weblate (Polish)
Currently translated at 100.0% (10015 of 10015 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-05-03 17:10:00 +02:00
Henrik Kauhanen c9295d6f60 Translated using Weblate (Swedish)
Currently translated at 99.9% (10005 of 10015 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-05-03 17:09:59 +02:00
Toni Laiho 6505b996c9 Translated using Weblate (Finnish)
Currently translated at 98.1% (9831 of 10015 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/fi/
2025-05-03 17:09:59 +02:00
dsa-t ce134a1342 Translated using Weblate (Russian)
Currently translated at 99.9% (10014 of 10015 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-05-03 17:09:59 +02:00
Stian Kristensen 1f0530734e Translated using Weblate (Norwegian Bokmål)
Currently translated at 42.4% (4251 of 10015 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/nb_NO/
2025-05-03 17:09:59 +02:00
DevAny 22df27111f Translated using Weblate (Korean)
Currently translated at 98.3% (9853 of 10015 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ko/
2025-05-03 17:09:59 +02:00
Jeff Young 68ab95ad43 Fix merge error.
(9.0 still has overlapping field IDs so the parent
type also has to be checked.  10.0 field IDs are
unique.)
2025-05-02 11:20:03 +01:00
jean-pierre charras 32048d3b1e SCH_FIELD::Plot(): better test before trying to plot inter-sheet refs
inter-sheet refs exist only for global labels. It avoid an assert in debug mode.
2025-05-02 11:13:11 +02:00
Mark Roszko 7498f1b1a6 Protect s_ModelInfoMap against multithreading init
Encountered in QA tests on windows. Probably also a issue during kicad use if you trigger a spice netlist export without previously doing any spice model editing


(cherry picked from commit e14dfdf4b0)

Co-authored-by: Marek Roszko <mark.roszko@gmail.com>
2025-05-01 19:58:16 +00:00
jean-pierre charras c55d2c092e PDF plotter: fix a rare pen width issue when plotting many pages in one file.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20805

(cherry picked from commit a02f1f2411)
2025-05-01 20:04:19 +02:00
jean-pierre charras e13c414052 ltspice_schematic.cpp: fix missing initialization
(cherry picked from commit 3c9d696c68)
2025-05-01 11:20:17 +02:00
Jeff Young ee49cf555a Fix bad static cast.
Hypertext fields aren't always intersheet refs anymore.

(cherry picked from commit b772960717)
2025-04-30 17:59:12 +01:00
Alex Shvartzkop 3aded5da4b Don't write unused part of the buffer into image data.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20698
2025-04-30 16:36:16 +03:00
Alex Shvartzkop cbd55bc201 LTspice import: support 2+ dir levels deep symbol names. 2025-04-30 03:41:07 +03:00
Alex Shvartzkop 26674ceec3 GenCAD export: fix arcs winding and layers. 2025-04-30 01:51:09 +03:00
Alex Shvartzkop 71a6231bb8 LTspice import: add warning when the default library is not found.
Also allow to put the library into ./lib/
2025-04-30 00:29:49 +03:00
Wayne Stambaugh c4f9710f98 Fix crash in connection graph when loading a version 8.0 schematic.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20777
2025-04-29 17:15:08 -04:00
Alex Shvartzkop 4c561b3193 Update translations 2025-04-29 20:12:28 +03:00
Stian Kristensen 6193652e89 Translated using Weblate (Norwegian Bokmål)
Currently translated at 42.1% (4224 of 10013 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/nb_NO/
2025-04-29 19:11:19 +02:00
Marco Ciampa 8c980facb4 Translated using Weblate (Romanian)
Currently translated at 22.9% (2295 of 10013 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ro/
2025-04-29 19:11:19 +02:00
Marco Ciampa 12782a163b Translated using Weblate (Italian)
Currently translated at 99.9% (10012 of 10013 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-04-29 19:11:18 +02:00
Ivan Chuba 73d43a985f Translated using Weblate (Ukrainian)
Currently translated at 76.5% (7663 of 10013 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2025-04-29 19:11:18 +02:00
Ivan Chuba a9d1c87461 Translated using Weblate (Ukrainian)
Currently translated at 75.6% (7579 of 10013 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2025-04-29 19:11:18 +02:00
dsa-t 961588ef56 Translated using Weblate (Russian)
Currently translated at 100.0% (10013 of 10013 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-04-29 19:11:18 +02:00
ZbeeGin 23955965d1 Translated using Weblate (Polish)
Currently translated at 100.0% (10013 of 10013 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-04-29 19:11:18 +02:00
Ivan Chuba 7882505426 Translated using Weblate (Ukrainian)
Currently translated at 75.5% (7563 of 10013 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2025-04-29 19:11:18 +02:00
Ivan Chuba 707ec69916 Translated using Weblate (Estonian)
Currently translated at 3.5% (354 of 10013 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/et/
2025-04-29 19:11:18 +02:00
Ivan Chuba b788cb860a Translated using Weblate (Ukrainian)
Currently translated at 75.4% (7553 of 10013 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2025-04-29 19:11:18 +02:00
co8 j 372f6dd9d6 Translated using Weblate (Japanese)
Currently translated at 100.0% (10013 of 10013 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-04-29 19:11:18 +02:00
Ivan Chuba d4454bf3d2 Translated using Weblate (Ukrainian)
Currently translated at 75.3% (7545 of 10013 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2025-04-29 19:11:18 +02:00
Henrik Kauhanen ae05479dff Translated using Weblate (Swedish)
Currently translated at 99.9% (10003 of 10013 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-04-29 19:11:18 +02:00
co8 j 6727e4993c Translated using Weblate (Japanese)
Currently translated at 99.8% (9995 of 10013 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-04-29 19:11:17 +02:00
Ettore Atalan 6de07ce92b Translated using Weblate (German)
Currently translated at 99.5% (9969 of 10013 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-04-29 19:11:17 +02:00
Ivan Chuba 348fe1c49d Translated using Weblate (Ukrainian)
Currently translated at 75.1% (7527 of 10013 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2025-04-29 19:11:17 +02:00
dsa-t 55e0780887 Translated using Weblate (Russian)
Currently translated at 99.9% (10011 of 10013 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-04-29 19:11:17 +02:00
jean-pierre charras 6c30e4f90b Gerbview: fix a maximum number (50) of Error messages in report list.
Having a lot of errors can happen when trying to open a non gerber files
(this is easy when loading a zip archive).
With a *lot* of errors (if a large .step file is found) Gerbview can hang.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20799

(cherry picked from commit d5cf541974)
2025-04-28 17:59:17 +02:00
Jeff Young fb92923f82 Honour template fieldname vis flag when adding fields.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20575
2025-04-28 10:50:05 +01:00
JamesJCode c25264528c Add hasExactNetclass function to DRC condition language
Following changes to the `A.NetClass == '<netclass>'` semantics to
match on exact netclass name OR any constituent netclass names, we
can have conditions where constituent netclass constraints match
before the composite netclass constraints in the DRC engine. This
adds the functionality to match on the exact full netclass name, and
modifies the implicit netclass DRC rules to use this function in
their rule condition.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20797
2025-04-27 22:38:29 +01:00
Jeff Young e5e4d9b814 Fix merge error. 2025-04-27 18:17:19 +01:00
Alex Shvartzkop a8d04d0079 LTspice import: don't crash on missing symbols. 2025-04-27 19:30:28 +03:00
Alex Shvartzkop b345dac82b Eagle SCH import: fix arcs in symbols after v9 changes.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20793
2025-04-27 18:50:29 +03:00
John Beard dd2d8e1a62 Pcbnew: fix pad snaps on non-F.Cu in high constrast mode
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/20674

(cherry picked from commit e604ad9a3c)
2025-04-27 21:49:48 +08:00
John Beard 227c74f2ee PCB array tool: don't count array source pad as reserving its number
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/20722
2025-04-27 21:49:21 +08:00
JamesJCode 51557e5f66 Deduplicate resolved net classes
Dupliates were possible if the same net class was specified as an
explicit label, and as the result of a pattern assignment

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20794
2025-04-27 12:24:13 +01:00
jean-pierre charras e35bd84c07 FOOTPRINT_CHOOSER_FRAME: fix crash when the 3D view is opened
Commit 6bc96530 fixed an issue, but created an incompatibility with the
dummy board (used in 3D canvas) handling when updating views, especially
if 3D canvas is opened.

(cherry picked from commit ab8060fa63)
2025-04-27 08:37:05 +02:00
Jeff Young 308c632f44 Partial cherry-pick of b01fef5ca8 2025-04-26 18:01:52 +01:00
jean-pierre charras dba149447c Footprint chooser frame: fix crash in COMMON_TOOLS::ResetLocalCoords()
The crash was due to a null pointer thta can happens in Footprint chooser,
frame, when hit the space bar if the canvas showing the Fp has the focus.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20780

(cherry picked from commit 34e49758d0)
2025-04-26 18:24:17 +02:00
Roberto Fernandez Bautista 753a436183 Schematic: LTSpice importer add junctions
- Fixes up all junctions at the end of import
- Fixes https://gitlab.com/kicad/code/kicad/-/issues/20727


(cherry picked from commit e626799d67)

Co-authored-by: Lucas Gerads <lucas.gerads@aixcon.de>
2025-04-26 13:02:21 +00:00
jean-pierre charras 9e9870580b Gerbview: fix a few issues when loading zip files
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20779

(cherry picked from commit c7e4875505)
2025-04-26 10:38:45 +02:00
dsa-t f8bf5d2c38 Optimize via LOD calculations.
(cherry picked from commit 7d0a001831)

Co-authored-by: Alex Shvartzkop <dudesuchamazing@gmail.com>
2025-04-26 04:55:18 +03:00
Jeff Young af9cbdc4fb Chamfer corners when expanding teardrop masks.
(Otherwise the first outline-based fill is pointy.)
2025-04-25 17:02:15 +01:00
Jeff Young 32ebb1f3a2 Fix merge error. 2025-04-25 16:43:43 +01:00
Jeff Young 8650e5a063 Export textbox borders to STEP.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20763

(cherry picked from commit b2f3a2f8ba)
2025-04-25 16:28:46 +01:00
Jeff Young fe6fa68694 Account for aperture & track masks in plated copper calculations.
(cherry picked from commit c2be7fa3e6)
2025-04-25 16:18:12 +01:00
Jeff Young 6b1a415281 Solder masks for teardrops on tracks with solder masks.
Also moves teardrops away from the zone UI: they
are now always filled and their borders never
drawn.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20744

(cherry picked from commit 6873a75313)
2025-04-25 16:17:27 +01:00
jean-pierre charras 328f37cc3f JOB_EXPORT_PCB_3D: store export origin option without rely to coord origin value
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20752

(cherry picked from commit 481d282607)
2025-04-25 17:05:05 +02:00
Damjan 818d650ce2 Adds dedicated anchor points for table
Allows snapping and easier alignment first tables

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20184

(cherry picked from commit c4ff42cb54)
2025-04-25 09:34:59 +01:00
Jeff Young 648825127d Allow embedded files to come from components
as well as parent containers, part II.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20210
2025-04-25 09:34:58 +01:00
Wayne Stambaugh ad501536e8 Tag stable version 9.0.2 release candidate 1. 2025-04-24 15:20:45 -04:00
Alexander Boehm 13331d00bb multi-channel tool: do not duplicate uuids
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20665

(cherry picked from commit 70af60c930)
2025-04-24 13:32:37 -04:00
Alex Shvartzkop 2b2b7d2232 Disconnect EDA_DRAW_PANEL_GAL::onShowEvent handler in dtor.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20754
2025-04-24 19:32:22 +03:00
Andrej Valek a65fe79551 SCH_EDITOR_CONTROL(paste): fix wrong cut behaviour
There was a missing behaviour when explicit removed annotation via specialpaste was requested. Add there a variable to compare the paste options.

(cherry picked from commit 9364bcdc9e)
2025-04-24 07:47:09 -04:00
Andrej Valek 5b79ad7f6b SCH_EDITOR_CONTROL(paste): make the annotation working again
The pasteMode was enforced to UNIQUE_ANNOTATIONS and not respecting the
value in settings. Basically revert the old behavior with respecting the
KIID generation.

Fixes kicad/code/kicad#19828

(cherry picked from commit 069954fa31)
2025-04-24 07:45:20 -04:00
Dhineshkumar S 184863db1a Fix missing change that ensures text is auto-completed.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/13508

(cherry picked from commit fa517a0429)
2025-04-24 07:34:07 -04:00
Dhineshkumar S 3ed4eece94 Add autocomplete for label names in label properties dialog
Fixes https://gitlab.com/kicad/code/kicad/-/issues/13508

(cherry picked from commit 46db959074)
2025-04-24 07:24:32 -04:00
JamesJCode 38c0e50f13 Further chasing of non-standard std::char_traits implementations
(cherry picked from commit 1c8e20b61f)
2025-04-23 23:42:56 +01:00
JamesJCode 1215b0c304 Add char_traits<T> specialisations for wxUniChar and NANODBC_SQLCHAR
when building on Apple with Clang >= 17.

These specialisations are not strictly required by the C++ standard,
and have been removed from LLVM.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20631

(cherry picked from commit a5be581b1b)
2025-04-23 23:42:05 +01:00
Mike Williams 14a05de36a schematic editor: remove 10ms OnShow timer to reduce CPU load
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/20385
(cherry picked from commit a648fccbb3)
2025-04-23 17:41:45 -04:00
Damjan bb95659afb pcbnew: Drag-selecting while creating a Text breaks PCB editor tools
CHANGED: drawing_tool.cpp: DRAWING_TOOL::PlaceText method ignores events when mouse drag is detected.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20010

(cherry picked from commit 230a976742)
2025-04-23 17:32:28 -04:00
Matt Kosman 5edc846122 remove text angle reset when rotating multiple fields
The fields were properly rotated by field->rotate and don't need additional setting of the text angle.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19366

(cherry picked from commit 0890d3f1cb)
2025-04-23 17:24:54 -04:00
Alexander Boehm a12bcbb6ea repeat layout: fixup net names of copied vias
When replicating a layout with the multichannel tool
the net names of vias are now updated to reflect the
potentially different connections in the target area.

Fixes https://gitlab.com/kicad/code/kicad/issues/20334

(cherry picked from commit 4bc099429c)
2025-04-23 17:10:36 -04:00
Dmitry Rezvanov aa69aa63be pcbnew: Add sorting functionality for netclass assignments
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/18819
(cherry picked from commit a3fae053c4)
2025-04-23 16:48:59 -04:00
John Beard c9e35a59dc PCB_PICKER_TOOL: avoid popping a dismabiguation menu after point selection completes
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/20680
(cherry picked from commit 207199fd80)
2025-04-23 16:37:02 -04:00
wh201906 785be9bd59 Exclude brackets at the end of a URL in LinkifyHTML()
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/20347
(cherry picked from commit 6d2b728fb1)
2025-04-23 16:31:24 -04:00
Alex Shvartzkop 6cfd84993c Update translations 2025-04-23 21:24:20 +03:00
CloverGit 56082b5d60 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (10007 of 10007 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-04-23 20:23:19 +02:00
CloverGit e404e18c3d Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.9% (10002 of 10007 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-04-23 20:23:19 +02:00
Henrik Kauhanen 90df0c2d8b Translated using Weblate (Swedish)
Currently translated at 99.4% (9952 of 10007 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-04-23 20:23:19 +02:00
Pferd O ad26cec474 Translated using Weblate (German)
Currently translated at 99.6% (9968 of 10007 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-04-23 20:23:19 +02:00
Oliver0804 2982409887 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 99.2% (9936 of 10007 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2025-04-23 20:23:19 +02:00
Hubert Hu f357a55393 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.9% (10002 of 10007 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-04-23 20:23:19 +02:00
CloverGit 989e7c3779 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.9% (10002 of 10007 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-04-23 20:23:19 +02:00
Ivan Chuba b3b4d65982 Translated using Weblate (Ukrainian)
Currently translated at 75.1% (7519 of 10007 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2025-04-23 20:23:19 +02:00
dsa-t 215f2d8320 Translated using Weblate (Russian)
Currently translated at 100.0% (10007 of 10007 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-04-23 20:23:18 +02:00
ZbeeGin 4c6bbe21c0 Translated using Weblate (Polish)
Currently translated at 100.0% (10007 of 10007 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-04-23 20:23:18 +02:00
Jeff Young 55ffa472c6 Only add row separator between rows.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20494

(cherry picked from commit 4f83674b62)
2025-04-23 18:44:21 +01:00
Jeff Young 410f3f0f7b Allow embedded files to come from components
as well as parent containers.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20530
2025-04-23 15:12:03 +01:00
jean-pierre charras 01df75ed36 French translation update 2025-04-23 16:01:45 +02:00
Wayne Stambaugh be68120865 Add missing virtual file handler clean up when creating archive files.
This was due to an over zealous clean up of the PROJECT_ARCHIVER and
PROJECT_ARCHIVER_DIR_ZIP_TRAVERSER objects which seems to cause issues
on Windows builds.

(cherry picked from commit 7fb16260aa)
2025-04-23 07:58:16 -04:00
Jeff Young 1c0a6fd14f Fill in some missing 3D render code.
1) add footprint graphics and text to copper
polys when differentiating plated from non-plated
copper

2) simplify adding footprint graphics and text
for contour walls

3) add dimension text and shapes for contour walls

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20111

(cherry picked from commit 31100451c6)
2025-04-23 10:46:28 +01:00
jean-pierre charras 60fca542ec PCB_PAINTER, mirrored view, texts on non paired layers: keep position
Depending on their horizontal justification, the texts wee moved when
flipping the board view.

(cherry picked from commit 57102b87ce)
2025-04-22 09:34:18 +02:00
JamesJCode 072562eb1a PCB Calcs: Reset default units along with values
(cherry picked from commit bd1f6e505c)
2025-04-21 21:28:53 +01:00
JamesJCode 68b86e6817 Add calculation of unit propagation delay to PCB calculator
(cherry picked from commit 2483ab4d7a)
2025-04-21 20:16:46 +01:00
Mike Williams 491b451519 sch design blocks: block illegal characters before creation failure
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/20676
2025-04-21 15:10:18 -04:00
Sean Mollet d7eea3cf7b GENCAD export: Fixes to footprint hashing
(cherry picked from commit 380b5160d6)
2025-04-21 14:24:10 -04:00
Sean Mollet 4ba7cff25e GENCAD Export only produces a single pad - Fix
(cherry picked from commit 185491f2b8)
2025-04-21 14:24:10 -04:00
JamesJCode a4a3ee31e4 Fix compiler warning
(cherry picked from commit 983d14d371)
2025-04-21 19:23:17 +01:00
Ian McInerney 56345a4158 Mark ODB++ as export-only
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20493


(cherry picked from commit fd94488289)

Co-authored-by: Ian McInerney <ian.s.mcinerney@ieee.org>
2025-04-21 16:29:18 +01:00
Ian McInerney 8c26f4f10e Fedora 43 will need python 3.14 support
(cherry picked from commit 688448f9ab)

Co-authored-by: Steven A. Falco <stevenfalco@gmail.com>
2025-04-21 16:26:10 +01:00
Damjan ff02626f75 pcbnew and eeschema: Table and textbox rotation / text justification fix
(cherry picked from commit af11746cc4)
2025-04-21 14:45:08 +01:00
Alex Shvartzkop d6a6337a96 Update translations 2025-04-21 13:43:52 +03:00
dsa-t 42461e4a69 Translated using Weblate (Russian)
Currently translated at 98.9% (9949 of 10056 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-04-21 12:43:00 +02:00
ZbeeGin ab51588005 Translated using Weblate (Polish)
Currently translated at 100.0% (10056 of 10056 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-04-21 12:43:00 +02:00
ZbeeGin 3a4fdcd391 Translated using Weblate (Polish)
Currently translated at 99.1% (9970 of 10056 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-04-21 12:43:00 +02:00
Pferd O 6d431d1670 Translated using Weblate (German)
Currently translated at 99.6% (10019 of 10056 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-04-21 12:43:00 +02:00
Pferd O 398d6b4328 Translated using Weblate (German)
Currently translated at 99.5% (10013 of 10056 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-04-21 12:43:00 +02:00
Ivan Chuba f1d5093dfc Translated using Weblate (Ukrainian)
Currently translated at 74.7% (7521 of 10056 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/uk/
2025-04-21 12:43:00 +02:00
Henrik Kauhanen 67eff4e495 Translated using Weblate (Swedish)
Currently translated at 99.0% (9965 of 10056 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-04-21 12:42:59 +02:00
Ivan Chuba c829773a44 Translated using Weblate (Estonian)
Currently translated at 3.5% (356 of 10056 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/et/
2025-04-21 12:42:59 +02:00
Ettore Atalan eec89791d8 Translated using Weblate (German)
Currently translated at 99.5% (10013 of 10056 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-04-21 12:42:59 +02:00
Henrik Kauhanen a4a27f0956 Translated using Weblate (Swedish)
Currently translated at 99.0% (9962 of 10056 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-04-21 12:42:59 +02:00
Henrik Kauhanen 8458066468 Translated using Weblate (Swedish)
Currently translated at 99.0% (9956 of 10056 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-04-21 12:42:59 +02:00
Alex Shvartzkop 33fad39cf4 Un-translate layer names in 3D appearance panel. 2025-04-21 13:40:19 +03:00
Alex Shvartzkop c2d3c9b292 LTspice import: don't fail if some symbols are missing. 2025-04-21 04:51:45 +03:00
Alex Shvartzkop 37103c6e15 LTspice import: adapt label spin when multiple wires connected 2025-04-21 04:51:45 +03:00
Alex Shvartzkop 3b4111d3a2 LTspice import fixes:
- Support UTF-16 LE file encoding
- Support Invisible text justification
- Make added SCH_FIELD invisible by default, like in 8.0
- Adjust label orientations based on wire placements
- Fix arc windings in symbols
2025-04-21 04:51:45 +03:00
jean-pierre charras 906ef8bca7 Pad properties dlg: Clearing thermal relief override (gap/spoke) does not work
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20709

(cherry picked from commit 1af76a9bef)
2025-04-20 11:07:39 +02:00
Alex Shvartzkop aab730abc1 OCCT 3D model export: parallelize fusing shapes and subtracting holes. 2025-04-20 01:40:18 +03:00
Lucas Gerads 91602ee7ba Schematic: Fix Ltspice import with minor version number
- Files that contained a minor version number failed
- Now both works "Version X.X" and "Version X"

(cherry picked from commit 16b4ee92bb)
2025-04-19 22:50:45 +03:00
Alex Shvartzkop ee513f7a8b OCCT 3D model export: fix missing soldermask shape when there's no polygons. 2025-04-19 21:15:13 +03:00
Alex Shvartzkop 5adc6ee2f4 OCCT 3D model export: use per-net fusing to improve performance.
It's now possible to export bigger boards without running out of memory (and time).

STEP video -components +silk +mask +all copper:
- this commit: 9 minutes (most of it is STEP transfer)
- 9.0.0: 28 minutes
2025-04-19 21:15:13 +03:00
Wayne Stambaugh a4f71ae3ee Use schematic editor default font setting for plot job.
When the user does not define a font on the CLI or when plotting from a
job set, use the current schematic editor default font setting rather than
always defaulting to the "KiCad Font".

Set the --default-font CLI setting to an empty string so the the schematic
editor default font setting will be used.  Setting the --default-font CLI
option will override the schematic editor default font setting.

(cherry picked from commit f0f6b5a09b)
2025-04-19 13:06:31 -04:00
Jeff Young cc69f8b9ae Remove duplicate handling for grid checkboxes.
Also corrects logic of otherRow loop.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18843

(cherry picked from commit 544abedb0eeea86e6baab3370c6df7a9271fb93b)
2025-04-18 22:32:54 +01:00
Jeff Young ec17012c81 Update sample script.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20538
2025-04-18 17:21:58 +01:00
Jeff Young e93b05e413 Simplify libTree scoring algorithm.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20610

(cherry picked from commit 598d446a38)
2025-04-18 16:47:00 +01:00
Jeff Young f82760f6e3 Reset colors on Reset to Default Settings.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20624
2025-04-18 12:36:14 +01:00
Jeff Young 01a09e8a3f Don't conflate generated fields (${DNP}) and fields with variable references.
They're not quite the same thing as the later
can have un-applied values which require expanding.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20417

(cherry picked from commit 5a9ac23f2cd1922b497b19484aee8f26165bcf73)
2025-04-18 11:51:12 +01:00
Alex Shvartzkop fcc170f077 Update translations 2025-04-18 03:10:35 +03:00
ZbeeGin 03d80dd8d8 Translated using Weblate (Polish)
Currently translated at 100.0% (9967 of 9967 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-04-18 02:08:09 +02:00
Marco Ciampa f91afe1f49 Translated using Weblate (Italian)
Currently translated at 99.3% (9901 of 9967 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-04-18 02:08:09 +02:00
2tama3 1bba0d96ad Translated using Weblate (Japanese)
Currently translated at 100.0% (9967 of 9967 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-04-18 02:08:09 +02:00
Tokita, Hiroshi a107722eac Translated using Weblate (Japanese)
Currently translated at 99.9% (9958 of 9967 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-04-18 02:08:09 +02:00
CloverGit d9bba779fd Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (9967 of 9967 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-04-18 02:08:09 +02:00
rsr.private 49dc16fcb0 Translated using Weblate (Catalan)
Currently translated at 42.3% (4220 of 9967 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ca/
2025-04-18 02:08:09 +02:00
2tama3 fc82d8d19c Translated using Weblate (Japanese)
Currently translated at 99.8% (9954 of 9967 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-04-18 02:08:09 +02:00
Adolfo Jayme Barrientos ec061ebd2e Translated using Weblate (Spanish)
Currently translated at 87.1% (8682 of 9967 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es/
2025-04-18 02:08:09 +02:00
Adolfo Jayme Barrientos 65b509a225 Translated using Weblate (Catalan)
Currently translated at 42.1% (4205 of 9967 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ca/
2025-04-18 02:08:09 +02:00
Adolfo Jayme Barrientos 097cef1819 Translated using Weblate (Spanish)
Currently translated at 87.1% (8682 of 9967 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es/
2025-04-18 02:08:09 +02:00
Adolfo Jayme Barrientos 8bf538f529 Translated using Weblate (Catalan)
Currently translated at 42.1% (4199 of 9967 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ca/
2025-04-18 02:08:09 +02:00
pominglee 06fdb5e86c Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 99.9% (9965 of 9967 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2025-04-18 02:08:09 +02:00
ZbeeGin b4831a17a0 Translated using Weblate (Polish)
Currently translated at 100.0% (9967 of 9967 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-04-18 02:08:08 +02:00
Pferd O 32cef776da Translated using Weblate (German)
Currently translated at 99.8% (9949 of 9967 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-04-18 02:08:08 +02:00
co8 j ce314185fb Translated using Weblate (Japanese)
Currently translated at 99.8% (9953 of 9967 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-04-18 02:08:08 +02:00
pominglee 9bd43071ae Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 99.9% (9965 of 9967 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2025-04-18 02:08:08 +02:00
Henrik Kauhanen bfe895bfd5 Translated using Weblate (Swedish)
Currently translated at 99.9% (9961 of 9967 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-04-18 02:08:08 +02:00
ZbeeGin dc3a3ec597 Translated using Weblate (Polish)
Currently translated at 99.9% (9959 of 9967 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-04-18 02:08:08 +02:00
Pferd O 69e909dc76 Translated using Weblate (German)
Currently translated at 99.7% (9946 of 9967 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-04-18 02:08:08 +02:00
pominglee 446e7f3125 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 99.9% (9963 of 9967 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2025-04-18 02:08:08 +02:00
jean-pierre charras cf66d47b74 Fix kicad-cli pcb export gerbers --output argument type in help.
It is a directory name, not a filename

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20298

(cherry picked from commit e6240f9fbf)
2025-04-17 11:34:33 +02:00
Jeff Young 11f3bbdbcb Move Use45Limit processing to VIEWER_TOOLS.
(We need it for the ruler in footprint preview
widgets.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20668

(cherry picked from commit 194ee9ef25)
2025-04-16 18:13:29 +01:00
Jeff Young 6028cb3ec2 Make sure footprint chooser has correct board.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20669

(cherry picked from commit 6bc9653029)
2025-04-16 18:13:05 +01:00
Jeff Young f7cdd9eaa7 Use EDA_COMBINED_MATCHER more consistently.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20678

(cherry picked from commit 5279cc8767)
2025-04-16 18:12:18 +01:00
Jeff Young 3fadd20088 Rebuild connectivity after append board.
Append board reads the BOARD_ITEMs directly onto
the board and so pushes the commit with CHT_DONE
flags.  However, this means the added items aren't
added correctly to the connectivity system.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20314
2025-04-14 20:14:37 +01:00
Jeff Young 9db8765d52 Bounds-check unit and body style from prop inspector.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20649
2025-04-14 16:27:51 +01:00
Damjan 5644e6d517 pcbnew: Multi-line text in table cell
(cherry picked from commit 2d2f443aa4)
2025-04-14 15:50:25 +01:00
Damjan 9be41e97f7 pcbnew: flipping tables makes them walk
(cherry picked from commit f4107fa4d6)
2025-04-14 15:50:19 +01:00
Jeff Young 1c835fee75 Remove Help menu hacks which appear to no longer be necessary.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/10124
2025-04-14 11:11:38 +01:00
Jeff Young bae846c2cd Don't allow auto-conversion from double to EDA_ANGLE.
We have no idea if the double is in radians or
degrees.
2025-04-14 11:00:59 +01:00
Jeff Young afe3d2c43e Fix merge error. 2025-04-14 10:07:39 +01:00
Jeff Young e784b03f61 Revert part of name change that affects settings files.
(cherry picked from commit 8b19777d5d)
2025-04-14 10:07:39 +01:00
Jeff Young 9a0a4b8671 Update pads connected to any connected tracks.
(Not just those selected.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20628

(cherry picked from commit 2d69b6e8ba)
2025-04-14 10:07:39 +01:00
Alex Shvartzkop 6780cdb54c OCCT 3D model export: support different line styles for graphics.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18873
2025-04-14 07:01:55 +03:00
Alex Shvartzkop c5771d8874 Fix too small angle increment when stroking arcs.
The previous angle increment was about 0.0087 degrees.
Change it to 0.5 degrees.
2025-04-14 06:44:55 +03:00
Alex Shvartzkop 2cebea3b04 OCCT 3D model export: fix copper fusing issues on StickHub GND and #20515
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20515
2025-04-14 00:15:46 +03:00
Alex Shvartzkop dfb66e2fdb OCCT 3D model export: don't skip pads with duplicate pad numbers for pad points data. 2025-04-13 22:41:45 +03:00
jean-pierre charras 31a7048faf DRCE_DIFF_PAIR_GAP_OUT_OF_RANGE: use a better position for the marker.
It was put at arc center. Now put on arc middle.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20636

(cherry picked from commit 66a7abca09)
2025-04-13 19:55:45 +02:00
Alex Shvartzkop 58a76a2617 Remove annoying tooltips in DRC/ERC dialogs. 2025-04-13 20:32:05 +03:00
Jeff Young 4b137bbaea Handle ref & value proxies as if they were refs and values. 2025-04-13 15:06:14 +01:00
Jeff Young 4a533bfb07 "Other" refers to fields other than refdes and value.
It has nothing to do with text items.

Also fixes some breakage with the introduction of
a separate scope item for dimensions.

Also rearranges the dialog a bit to make it fit
on smaller screens.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20633

(cherry picked from commit e90a3112f8)
2025-04-13 14:26:24 +01:00
Jeff Young 1e11916975 Visibility control is for *filled* shapes.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20635

(cherry picked from commit ecb5c5e0d4)
2025-04-13 14:03:25 +01:00
Jeff Young df4435ed80 Remove redundant performance changes.
(Alex had already moved these to const char, which
avoids wxString's c'tor.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20506

(cherry picked from commit 7232a98b65)
2025-04-13 13:46:31 +01:00
Jeff Young ecf3697ad3 Performance.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20506

(cherry picked from commit 1d45de0d1d)
2025-04-13 13:46:27 +01:00
Jeff Young aab7701c17 Be explicit about table highlight colors.
(Unsurprisingly, the previous hack had side effects.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20606

(cherry picked from commit 45abc90885)
2025-04-13 13:44:43 +01:00
Alex Shvartzkop 09da370512 OCCT 3D model export: don't show fusing errors for non-copper pads. 2025-04-13 08:18:27 +03:00
Wayne Stambaugh 0fca70a0bc Fix broken label position algorithm in Eagle schematic importer.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20593

(cherry picked from commit aa1dbcba34)
2025-04-12 11:06:50 -04:00
Seth Hillbrand ff6bee400e Remove schematic view size limitation
We don't need to worry about scrollbar button sizes anymore, so we don't
need to limit the viewport size based on the page

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20594
2025-04-11 17:49:53 -07:00
Seth Hillbrand 2b99d3e2e6 Don't set board layers without board
When loading footprints, we may have undefined layers, they should not
be set unless we have a board

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20625

(cherry picked from commit 7d195b73b2)
2025-04-11 15:13:24 -07:00
Wayne Stambaugh 30f1c400e2 Code clean up of board GenCAD exporter.
(cherry picked from commit 9228369617)
2025-04-11 14:03:13 -04:00
Wayne Stambaugh fe162b2f3c Fix GenCAD arc track export when using board offset.
(cherry picked from commit 4ae07d1122)
2025-04-11 14:03:06 -04:00
Wayne Stambaugh 37f11379c3 Actually prevent recursion when building connection sub-graph.
Propagating to neighboring connections when not a net will cause an
infinite recursion crash.  Use the wxCHECK2 instead of wxASSERT to
prevent this.

Add a bunch of question comments where the use of wxASSERT is questionable.

(cherry picked from commit c810ef716d)
2025-04-10 16:50:52 -04:00
Jeff Young 9b253fbdd7 Resolve fonts for tablecells.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20605
2025-04-10 14:10:16 +01:00
Jeff Young 3068868f65 Remove redundant performance changes.
(Alex had already moved these to const char, which
avoids wxString's c'tor.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20506

(cherry picked from commit 7232a98b65)
2025-04-10 13:12:26 +01:00
Jeff Young 87de0ac806 Performance.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20506

(cherry picked from commit 1d45de0d1d)
2025-04-10 13:12:21 +01:00
jean-pierre charras 8334a83aaa DIALOG_SIM_MODEL: fix possible crash when no lib loaded (null pointer)
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20599

(cherry picked from commit e57bc3304f)
2025-04-10 13:26:40 +02:00
jean-pierre charras 5cba809a1e PANEL_FP_EDITOR_FIELD_DEFAULTS: Fix incorrect default layer when adding a field
When adding a default field, the associated defaut layer was the layer used by
the previous default field. But it does not work for the first added field.

(cherry picked from commit 065e9dbf46)
2025-04-10 09:36:36 +02:00
jean-pierre charras e23c2e30ee DIALOG_RULE_AREA_PROPERTIES: fix incorrect tool-tip
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20592

(cherry picked from commit f29c19ef02)
2025-04-10 09:35:54 +02:00
Jeff Young 6cd3a802a7 De-duplicate find results.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20569

(cherry picked from commit 43aa63c1ec)
2025-04-09 12:52:44 +01:00
Jeff Young a3fff6ea10 No requirement to UNGROUP when we're recording entire parent FP.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20589

(cherry picked from commit ec6bc85a29)
2025-04-09 12:52:44 +01:00
Dmitry Rezvanov dd468a916e Prevent overwriting alias members when adding new rows in panel setup.
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/20040
(cherry picked from commit 58d2b34304)
2025-04-08 13:03:30 -07:00
Wayne Stambaugh e2b976594a Use symbol line width schematic setting when printing and plotting.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20574

(cherry picked from commit 1176ff4a15)
2025-04-08 09:11:07 -04:00
Seth Hillbrand d8903534b7 Remove TreeControl call from thread
On Windows, this may use SendMessageW, forcing a wait for UI in the
thread

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20572

(cherry picked from commit 3d29fae7a9)
2025-04-07 17:06:22 -07:00
Alex Shvartzkop de1257abdf Altium PCB: fix 3D model opacity variable type.
See https://gitlab.com/kicad/code/kicad/-/issues/20507
2025-04-07 23:22:43 +03:00
Alex Shvartzkop 3d36d41ea7 Altium PCB: support 3D models import with duplicate filenames.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20507
2025-04-07 23:22:42 +03:00
Alex Shvartzkop 2c74d46d79 Altium PCB: fix padstack shapes import on F.Cu. 2025-04-07 23:22:42 +03:00
Seth Hillbrand 7bee2cf842 Isolate thread pool loops
Now that we are threading things in different frames, we need to watch
that we are not waiting for a process to complete in one frame while
working in another.  To accomplish this, we only wait for our own loop
results

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20572

(cherry picked from commit bccf365380)
2025-04-07 12:18:05 -07:00
Jeff Young 6446e01483 Nullptr crash. 2025-04-07 18:18:06 +01:00
Jeff Young f5adac9369 Don't assume existence of default FP text items. 2025-04-07 18:17:37 +01:00
Jeff Young 312b75291b ADDED: menu item to control searching of hidden fields.
Applies to both PCBNew & Eeschema search panels.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20370

(cherry picked from commit 3def4afaec)
2025-04-07 17:36:32 +01:00
Jeff Young c54b65fff7 Formatting.
(cherry picked from commit 7a9db0f8c1)
2025-04-07 17:36:32 +01:00
Jeff Young 766e48fb4f Restore visibility editing for fields.
(It got accidentally thrown out with visibility
for text items.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20560

(cherry picked from commit ac616b8c19)
2025-04-07 17:36:32 +01:00
Jeff Young 6ec1585c58 Performance. 2025-04-07 17:36:32 +01:00
Jeff Young c65d27dae1 Via needs a parent for formatting.
(cherry picked from commit d4cc91f17a)
2025-04-07 17:36:32 +01:00
Jeff Young 82d572df80 Fix thermal spokes for pad stacks.
(cherry picked from commit 2c9c607b95)
2025-04-07 17:36:32 +01:00
Wayne Stambaugh 32e9762230 GenCAD board exporter fixes.
Strip leading zeros from copper layer mask string so the unique pad and
pad stack names are not 128 characters long.

Try a different fix for broken arc track orientations.

(cherry picked from commit c5ff61ba9c)
2025-04-07 12:08:26 -04:00
Wayne Stambaugh f987688b6f Fix project archiving.
Use simplified file extension and name checks rather than a regular
expression to determine which files to archive.

Fix incorrect use of wxFileName which generates invalid paths when the
last folder in the path contains dots.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20431

(cherry picked from commit 598850b1f0)
2025-04-07 12:08:05 -04:00
Wayne Stambaugh 5544a315bd Use arc mid point for footprint library parity DRC testing.
The arc center is a pseudo coordinate which is calculated for drawing
purposes.  This mid point is fixed unless the arc is modified which
should result in more reliable arc parity footprint library DRC testing.

Also change EDA_SHAPE::Compare() to use the arc mid point.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/15917

(cherry picked from commit 11edaa6e4a)
2025-04-07 12:03:02 -04:00
Wayne Stambaugh 9d1344d707 Include arc tracks when exporting to GenCAD.
(cherry picked from commit 642e4d37bc)
2025-04-07 11:59:14 -04:00
Wayne Stambaugh e0db6d013b Fix assertions when exporting board to GenCAD.
Calling PCB_VIA::Width() without a layer will raise and assertion.  Check
if track is via when looping through a list of tracks and use the correct
width call.

(cherry picked from commit cf3dae0bb9)
2025-04-07 11:50:48 -04:00
jean-pierre charras 13cbdda586 kicad-cli export gerbers: avoid incorrect behavior with a broken layer list.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20555

(cherry picked from commit 91d9863cc3)
2025-04-05 12:51:16 +02:00
Alex Shvartzkop a6d81d019f Improve GetAppSettings performance.
There's no need to construct a wxString first.
2025-04-04 23:27:18 +03:00
Alex Shvartzkop fa10961d6c Remove leftovers. 2025-04-04 22:45:59 +03:00
Alex Shvartzkop a1a710dfed Improve pan performance when showing a large amount of TH pads.
See https://gitlab.com/kicad/code/kicad/-/issues/20506
2025-04-04 22:14:13 +03:00
jean-pierre charras 6efaa64908 Pcbnew, printing vias: always print the via hole, even for small holes.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20546

(cherry picked from commit 91dda80530)
2025-04-04 16:43:35 +02:00
jean-pierre charras e918f820f5 SCH_TEXTBOX: Do not plot twice the textbox shape.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20545

(cherry picked from commit 9eea670617)
2025-04-04 16:43:08 +02:00
Jeff Young 806f9ea5fd Be explicit about default anchor shape.
(Otherwise it doesn't work for padstack overrides.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20551

(cherry picked from commit 200c4a9eae)
2025-04-04 13:33:03 +01:00
Jeff Young 9c4a88a129 Performance optimisation.
Reduces board loading for #17820 from 15 seconds
to about 6.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17820

(cherry picked from commit 7151d21f0b)
2025-04-04 13:32:59 +01:00
Wayne Stambaugh 956a633d4d Merge PAD::addPadPrimitivesToPolygon() into PAD::MergePrimitivesAsPolygon().
It was only used in MergePrimitivesAsPolygon() and it was only a few lines
long.

(cherry picked from commit ef5cd6bb28)
2025-04-03 15:59:38 -04:00
Wayne Stambaugh 63a03734e9 Don't clobber SCH_SCREEN paths when adding new sheet from existing file.
The screen path will always be the correct absolute path.  Otherwise it
would not be possible to load it.

Don't reset the first sheet file path to relative if the user did not
request it.

Don't use results of a failed call to wxFileName::MakeRelative() to set
sub-sheet file paths.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20502

(cherry picked from commit d52d0d0aad)
2025-04-03 15:58:22 -04:00
Wayne Stambaugh 221f28eafc Move all PAD object methods to into PAD object source file.
No functional changes.  Just make it easier to find all of the PAD object
methods.

(cherry picked from commit 2b0d082df5)
2025-04-03 15:51:03 -04:00
jean-pierre charras d6406d1349 PANEL_DESIGN_BLOCK_CHOOSER: use the same draw engine type as in main frame.
This is not always the Opengl GAL_TYPE

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20386
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20544

(cherry picked from commit b7fd26e026)
2025-04-03 18:29:25 +02:00
jean-pierre charras 36b9c08793 WX_PT_ENTRY_DIALOG: enhancements: fix min size and add reset button.
It is used to enter a point position and a grid origin.
The new button (only in grid origin dialog) allows reset the position.

(cherry picked from commit f8ec23db00)
2025-04-03 13:21:20 +02:00
Jeff Young 6988e79714 Plot tables in footprints. 2025-04-03 10:55:01 +01:00
Jeff Young 147234ca68 Handle groups in footprints when filtering selection.
(cherry picked from commit 8ff0aafbb8)
2025-04-02 16:24:02 +01:00
Jeff Young 71659be29b When pulling children out of footprints don't format them wrong.
If we leave a footprint parent pointer then we'll
format as fp_line, fp_arc, etc. instead of gr_line,
gr_arc, etc.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20537

(cherry picked from commit a0ec7f59c4)
2025-04-02 16:23:59 +01:00
Jeff Young b685378efa Remove assert that fires when applying preset.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20467

(cherry picked from commit 901ad3064d)
2025-04-02 16:23:56 +01:00
Jeff Young 736044cd71 Improve debugging.
(cherry picked from commit db911c0d91)
2025-04-02 16:23:53 +01:00
Jeff Young de1a04d6b4 m_root is not guaranteed to be non-null.
(cherry picked from commit 967bf1d0a1)
2025-04-02 16:23:48 +01:00
jean-pierre charras 8149107e33 PCB_TEXTBOX:: Rotate: fix size change for rotation by not 90deg
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20529

(cherry picked from commit 76929808d3)
2025-04-01 20:24:32 +02:00
Jeff Young 36eb0c75d4 Remove unsafe C-style casts. 2025-04-01 17:36:13 +01:00
Jeff Young bc4fe1e05a Fix first tab having no effect after changing grid value.
(cherry picked from commit 0573a32f36)
2025-04-01 16:29:04 +01:00
Jeff Young 0c083e560c Don't process grid-change events when we're rebuilding the grid.
The selection has already changed and it's too
late to update any values.

Also regularises the event.Skip() handling from
8a1347d2c8.

(cherry picked from commit a1fe0f7faf)
2025-04-01 16:28:59 +01:00
Jeff Young 4ff1fc2f1b Reset status popup.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20489

(cherry picked from commit 6f6ef8e626)
2025-04-01 16:28:46 +01:00
jean-pierre charras 141a6291c9 DIALOG_SYMBOL_FIELDS_TABLE: fix a ugly look issue specific to wxMSW
The recent change use a two lines title in a widget. It works fine on Linux
and MAC, but is not supported on Windows.
So, on Windows, a one line title is used.

(cherry picked from commit c8b57c50dc)
2025-04-01 15:58:05 +02:00
Jeff Young 9043279301 Nullptr safety.
KICAD-7DX
2025-04-01 12:18:55 +01:00
Jeff Young 4003fdfe98 Move HasMessageOfSeverity to base class.
KICAD-HPP
2025-04-01 12:18:55 +01:00
Jeff Young 3f060a6107 Stack objects should not have parents or groups.
KICAD-KXY
2025-04-01 12:18:55 +01:00
Jeff Young ca284ebb4e Once the selection has changed, we can't commit changes.
KICAD-6Y9, among others.
2025-04-01 12:18:55 +01:00
JamesJCode b446e794b8 Fix net inspector thaw location to not break selection on MSW 2025-03-31 21:08:00 +01:00
JamesJCode 8c162ecbca Freeze net inspector data view when rebuilding the list of nets
Attempt to fix #20521 but it is very hard to reproduce

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20521
2025-03-31 20:44:39 +01:00
Jeff Young d05fe64d41 Remove shadowed type (DRILL_MARKS).
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20522

(cherry picked from commit 6e566b2819)
2025-03-31 20:00:47 +01:00
Jeff Young b2d3a602c5 Don't presume there are at least two footprint text
defaults.

Yes, we ship that way, but a user could delete one
or edit their json file.
2025-03-31 15:37:23 +01:00
Jeff Young 2546534056 Clearer column titles.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20509
2025-03-31 14:28:15 +01:00
Jeff Young 303c1bef7b Wait for wxWidgets to destroy window. 2025-03-31 14:28:15 +01:00
Jeff Young 9cbc1db2a1 Retire DIALOG_FOOTPRINT_CHOOSER.
(cherry picked from commit 7583c0e69d)
2025-03-31 14:31:41 +02:00
Jon Evans 2b8083920a Adjust OBJECT_DEPENDS for MacOS
It appears that MacOS only sees the last key/value for the
source_file_property whereas Linux/Windows see all depends.  This works
around the different by getting the value first, accumulating in the
loop and setting once at the end


(cherry picked from commit 074b511fab)

Co-authored-by: Seth Hillbrand <seth@kipro-pcb.com>
2025-03-30 21:52:05 -04:00
Jon Evans 69589840df API: Brute-force fix for footprint modifications
(cherry picked from commit 12861345d3)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-03-30 19:01:37 -04:00
Jon Evans 558488f874 API: Clear footprint caches when making changes
(cherry picked from commit 31f3c44520)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-03-30 19:01:26 -04:00
Jon Evans 73f77658bb More functional fix for IPC API item modifications
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20206


(cherry picked from commit dc9fa2e2ac)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-03-30 19:01:16 -04:00
Jon Evans 4d6bb9317b Revert "Switch to operator= for item updates"
This reverts commit d0b22d21bb.


(cherry picked from commit 3bac9344d2)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-03-30 19:01:07 -04:00
Jeff Young 4aeb2c58fb Don't assume a hypertext link is a cross-sheet reference.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20511

(cherry picked from commit 582aef0220)
2025-03-30 22:50:21 +01:00
Jeff Young 0087959bf5 Report global physical_clearance issues before moving on to layers.
Also fixes a bug in reading m_LayerSource.

Also simplifies Edge_Cuts handling to better match
actual DRC checks.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20498

(cherry picked from commit 9066ad3620)
2025-03-30 22:50:21 +01:00
jean-pierre charras efea324ee4 Eeschema, DIALOG_FIELD_PROPERTIES: fix a strange bug specific to wxMSW.
wxStyledTextCtrl, SetExtraAscent() + SetExtraDescent() methods, when set
to a value not 0 generate a strange bug: the text is not always shown
(when enter a char, once the text is shown, once the text is not shown)
(Perhaps a wxMSW bug) and this call is not needed on WXMSW

(cherry picked from commit d729b34986)
2025-03-30 17:32:49 +02:00
jean-pierre charras 3c6cb7b5b9 PANEL_FP_EDITOR_FIELD_DEFAULTS: fix incorrect behavior.
One could not change the default layers for new fp texts

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20505

(cherry picked from commit 97e1c107c9)
2025-03-30 17:31:52 +02:00
Wayne Stambaugh cae665cd76 Update default schematic when creating a new project.
Adding the missing default page number ("1") allows the CLI plotting and
printing by page number to work correctly even if the schematic hasn't been
saved in the schematic editor.

This also adds a default new schematic UUID and embedded font setting.

Use the fancy new file formatting style.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20448

(cherry picked from commit 1b40ddaba5)
2025-03-30 06:48:32 -04:00
Wayne Stambaugh 547997e1a6 Fix Coverity issue #542006.
https://scan8.scan.coverity.com/#/project-view/22886/10844?selectedIssue=542006
(cherry picked from commit 4cb234862c)
2025-03-30 06:46:01 -04:00
Wayne Stambaugh 6ad924ea45 Fix Coverity issue #545180.
https://scan8.scan.coverity.com/#/project-view/22886/10844?selectedIssue=545180
(cherry picked from commit cf4369a2ef)
2025-03-30 06:44:54 -04:00
Wayne Stambaugh 56d9d46a0b Fix Coverity issue #514495.
https://scan8.scan.coverity.com/#/project-view/22886/10844?selectedIssue=514495
(cherry picked from commit 8fa48c7be2)
2025-03-30 06:43:19 -04:00
Wayne Stambaugh b56ff24acd Fix Coverity issue #541995.
https://scan8.scan.coverity.com/#/project-view/22886/10844?selectedIssue=541995
(cherry picked from commit 62cb67d854)
2025-03-30 06:42:23 -04:00
Wayne Stambaugh cbeb6735e9 Fix Coverity issue #542006.
https://scan8.scan.coverity.com/#/project-view/22886/10844?selectedIssue=542006
(cherry picked from commit dd806aa902)
2025-03-30 06:39:38 -04:00
Seth Hillbrand 83b8bdf137 Ignore autogenerated files
(cherry picked from commit 36366e254d)
2025-03-30 08:23:32 +01:00
JamesJCode a21bcb4903 Add new DRC expression function isMemberOfSheetOrChildren
This allows the multichannel tool to search for footprints that are in nested
hierarchical sheets.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20339

(cherry picked from commit 4a99a3060d)
2025-03-30 08:20:36 +01:00
Wayne Stambaugh 4e064d5502 Coding policy house keeping.
(cherry picked from commit 47984b6793)
2025-03-29 20:12:16 -04:00
JamesJCode 8e48445a5b Net inspector groups should be case insensitive
(cherry picked from commit 7a4325e610)
2025-03-30 00:05:49 +00:00
Wayne Stambaugh 6b1505438d Fix Coverity issue #544154.
https://scan8.scan.coverity.com/#/project-view/22886/10844?selectedIssue=543084
(cherry picked from commit 4131089260)
2025-03-29 20:00:25 -04:00
Wayne Stambaugh 7f6136454a Properly prevent duplicate sheet names on paste.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20357

(cherry picked from commit b364f5dbde)
2025-03-29 19:58:50 -04:00
JamesJCode 548a33dace Ensure PNS length tuning calculation uses correct layer ID context
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20372

(cherry picked from commit 24a8c2a684)
2025-03-29 22:13:03 +00:00
JamesJCode 4ea36da4c3 Test symbol outline collisions for rule areas, not just bounding boxes
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20383

(cherry picked from commit 0f1f6b23a8)
2025-03-29 22:13:03 +00:00
Jon Evans 37fe0eca73 clear itemByIdCache in IncrementTimestamp
(cherry picked from commit 78b6ca8256)

Co-authored-by: Quentin Freimanis <quentinfreimanis@gmail.com>
2025-03-29 18:05:35 -04:00
Jeff Young 3b45663866 COMMIT lifetime safety.
If we pass a COMMIT to a posted action, the COMMIT
may no longer exist when the action is run.
Equally problematic, if another COMMIT is pushed
in between we'd probably also run into trouble.

We still allow the API to do this because we don't
have a better solution at present.  But we need
one.

(cherry picked from commit 60a26308ae)
2025-03-29 21:26:55 +00:00
Jeff Young 238b5fedc8 Fix format string.
(cherry picked from commit 4f115b12a4)
2025-03-29 21:26:52 +00:00
Jeff Young 8694c70237 Remove debug assert that's clogging up Sentry.
(cherry picked from commit b62f00912e)
2025-03-29 21:26:48 +00:00
Jeff Young 84adec02a7 Code clarity.
(cherry picked from commit 408d3a0170)
2025-03-29 21:26:45 +00:00
Jeff Young d61d66505f Remove debug assert.
Yes, it does indeed fire (a lot, as Sentry can
tell us).

(cherry picked from commit baaf341d0d)
2025-03-29 21:26:36 +00:00
Jeff Young beb4bb9007 Don't respond to net navigator events while we're updating the wxTreeCtrl.
(cherry picked from commit 4783bc4cfd)
2025-03-29 21:26:28 +00:00
Jeff Young b2c59f2359 Don't obliterate user data when syncing copper layer count.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20484

(cherry picked from commit 629a12ab2e)
2025-03-29 21:25:47 +00:00
Jeff Young a417afac8e Mirror pad numbers when appropriate.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20459

(cherry picked from commit 151cb01795)
2025-03-29 21:25:21 +00:00
Jeff Young 80e2153a14 Formatting.
(cherry picked from commit 88267c4a47)
2025-03-29 21:24:32 +00:00
Jeff Young 7208e6baf6 Formatting.
(cherry picked from commit 2ca09457b0)
2025-03-29 21:24:32 +00:00
Jeff Young 8e81d9ec73 Auto-enable user layers that have custom FPEditor names.
(cherry picked from commit 3380afd9fd)
2025-03-29 21:24:32 +00:00
Jeff Young a44c2d9a5c Fix being able to delete custom layer names.
(Or anything in a PARAM_MAP, but layer names appear
to be the only current use of it.)

(cherry picked from commit da05ad93ac)
2025-03-29 21:24:32 +00:00
Jeff Young 02688ce919 Process non-copper keepouts in footprints.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20405

(cherry picked from commit ab43c3c6b5)
2025-03-29 21:24:32 +00:00
Jeff Young 35e119c152 Don't assert (or crash) on shutdown.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20433

(cherry picked from commit 9c375581ff)
2025-03-29 21:24:32 +00:00
Jeff Young e09f4d79c9 Don't gate drill mark plotting on unenabled copper layers.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20460

(cherry picked from commit 79924b5dfd)
2025-03-29 21:24:31 +00:00
Jeff Young 0e8afc8243 Use std::optional to better flag presence of arguments.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20460

(cherry picked from commit 8076bfa3c7)
2025-03-29 21:24:31 +00:00
Jeff Young a2ca66d05b Job layersets come in already parsed.
Only CLI argments need parsing at the handler level.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20460

(cherry picked from commit 96835cbfcf)
2025-03-29 21:24:31 +00:00
Jeff Young c32639d6b5 Add support for mixed-state checkboxes in grids.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17730

(cherry picked from commit 0d6838b803)
2025-03-29 21:24:31 +00:00
Jeff Young f7572e254d Don't use net/netclass colors for label graphic shapes.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19589

(cherry picked from commit 59e77e977e)
2025-03-29 21:24:31 +00:00
Jeff Young 817dba3a57 Refresh search when showing pane.
(Events will have been ignored while it is
hidden.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20009

(cherry picked from commit 1b7f92f4c5)
2025-03-29 21:24:31 +00:00
Jeff Young daaee3f1b8 Handle home dir shortcut in jobset destinations.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20032

(cherry picked from commit b366204824)
2025-03-29 21:24:31 +00:00
Jeff Young ebef835852 Shorten opt-in text and improve Yes/No button labels.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20027

(cherry picked from commit 86e1d4c684)
2025-03-29 21:24:31 +00:00
Jeff Young 6073a32833 Don't write out empty footprint filters.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20394

(cherry picked from commit 5ec526fe4f)
2025-03-29 21:24:31 +00:00
Jeff Young 1723346524 Must assign extension to keep from stripping last '.' section.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20065

(cherry picked from commit d3f57fac5a)
2025-03-29 21:24:31 +00:00
Jeff Young 97982cd089 Fix accidental ingoring of rotation angle.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20271

(cherry picked from commit f0c81e972f)
2025-03-29 21:24:31 +00:00
Jeff Young 4e353c8366 Leave navigation controls active.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20378

(cherry picked from commit 8994f6abd7)
2025-03-29 21:24:31 +00:00
Jeff Young 772295c573 Don't leave dangling event handler.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20380

(cherry picked from commit 3328dc48be)
2025-03-29 21:24:31 +00:00
Jeff Young 88c4913f65 Search all fields, hidden or not.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20370

(cherry picked from commit b4640cdc55)
2025-03-29 21:24:31 +00:00
Jeff Young 1d80bd4043 Use board layer names when available.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20360

(cherry picked from commit 6307f0aee8)
2025-03-29 21:24:31 +00:00
Jeff Young 3085ec0a5d Simplify (and fix) plated copper differentiation.
Also a few fixes for 3D rendering textboxes and
tables.

(cherry picked from commit 142f8265c5)
2025-03-29 21:24:31 +00:00
Jeff Young 5622a9e295 Adjust GTK STC margins. Yes, again.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16685

(cherry picked from commit 5094f750df)
2025-03-29 21:24:31 +00:00
Jeff Young 81585f7a83 Adjust GTK STC margins.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16685

(cherry picked from commit 858f6b0fc2)
2025-03-29 21:24:31 +00:00
Jeff Young 7c953d11f7 Improve text alignment in grids and one-line Scintilla controls.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16685

(cherry picked from commit 17712ba321)
2025-03-29 21:24:31 +00:00
Jeff Young 5fa1d0eaeb Fix format string.
(cherry picked from commit 0aa4f11970)
2025-03-29 21:24:31 +00:00
Jeff Young a0baef9d12 Cleanup.
(cherry picked from commit dd921354fc)
2025-03-29 21:24:31 +00:00
Jeff Young b112ca3944 Collapse SCH_TABLE border drawing into shared code.
Also pushes GetCornersInSequence() into EDA_SHAPE
so it can be shared between SCH_TABLE and PCB_TABLE.

Also fixes bug in drawing column rulings over the
right external border.

Also fixes a bug with dialog control enabling.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20350

(cherry picked from commit 413d6747c5)
2025-03-29 21:24:31 +00:00
Jeff Young d271a47375 Update layer per page.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20352

(cherry picked from commit 1848401d5b)
2025-03-29 21:24:31 +00:00
Jeff Young a9adc64f3e Move layer arg parsing up so we can handle user-defined layer names.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18773

(cherry picked from commit 1333c4c305)
2025-03-29 21:24:31 +00:00
Jeff Young 65f9264531 Fix off-by-one error when dragging to the left.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20307

(cherry picked from commit 6708f7b10c)
2025-03-29 21:24:31 +00:00
Jeff Young d45fbaca96 Don't bleed settings between 3D viewer and 3D footprint preview.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17353

(cherry picked from commit 533551f014)
2025-03-29 21:24:31 +00:00
Jeff Young b007cb143d User-defined layers for 3D viewer.
(cherry picked from commit f33f10bb38)
2025-03-29 21:24:31 +00:00
Jeff Young 96bfa17469 Resolve variables in hrefs.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20340

(cherry picked from commit f4a5404e0a)
2025-03-29 21:24:31 +00:00
Jeff Young e7ea87f454 Fix is-same logic in updateFootprintParameters.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19988

(cherry picked from commit f9b19bbb5b)
2025-03-29 21:24:31 +00:00
Jeff Young e1c292e600 Check silk/soldermask collisions in FP checker.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19707

(cherry picked from commit 1ee3131e4a)
2025-03-29 21:24:31 +00:00
Jeff Young 537a8cc652 Allow context menus in footprint chooser when called from Eeschema.
Also moves several RAII utility classes (some of which
were duplicated in open code) to a common header file.

(cherry picked from commit b74c2791f4)
2025-03-29 21:24:30 +00:00
Jeff Young 62fa53ca96 Add tool framework to fp preview widget.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17107

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19651

(cherry picked from commit 9d051d096e)
2025-03-29 21:24:30 +00:00
Wayne Stambaugh c1575392e6 Begin version 9.0.2 development. 2025-03-29 13:33:59 -04:00
Wayne Stambaugh 4a3889f1fe Tag stable version 9.0.1 release. 2025-03-29 13:26:55 -04:00
jean-pierre charras afb5487fd5 French translation update 2025-03-29 12:50:25 +01:00
Seth Hillbrand 1d443ca74c Merge remote-tracking branch 'weblate/9.0' into 9.0 2025-03-28 16:55:27 -07:00
Anonymous 4ec80ee395 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 99.1% (9887 of 9968 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2025-03-29 00:29:28 +01:00
Seth Hillbrand a00726378b Update translations 2025-03-28 16:28:28 -07:00
pominglee 33d891de29 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 99.3% (9899 of 9968 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2025-03-29 00:27:51 +01:00
Adolfo Jayme Barrientos f875045b6a Translated using Weblate (Spanish)
Currently translated at 87.0% (8682 of 9968 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es/
2025-03-29 00:27:51 +01:00
pominglee 9f47704f04 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 98.6% (9837 of 9968 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2025-03-29 00:27:51 +01:00
Adolfo Jayme Barrientos 630f23c11f Translated using Weblate (Spanish)
Currently translated at 87.0% (8679 of 9968 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es/
2025-03-29 00:27:51 +01:00
CloverGit 32d29d1d1f Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (9968 of 9968 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-03-29 00:27:51 +01:00
Henrik Kauhanen d2a94de5d5 Translated using Weblate (Swedish)
Currently translated at 99.9% (9960 of 9968 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-03-29 00:27:51 +01:00
Wellington Terumi Uemura d72c23b602 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (9968 of 9968 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt_BR/
2025-03-29 00:27:51 +01:00
CloverGit 43bb8dcb2d Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.9% (9964 of 9968 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-03-29 00:27:51 +01:00
Adolfo Jayme Barrientos 2d365f4037 Translated using Weblate (Spanish)
Currently translated at 86.8% (8660 of 9968 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es/
2025-03-29 00:27:51 +01:00
Ettore Atalan 429eebad4b Translated using Weblate (German)
Currently translated at 99.7% (9943 of 9968 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-03-29 00:27:51 +01:00
yanzhen zhu 4b08c4ade8 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.7% (9940 of 9968 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-03-29 00:27:51 +01:00
Marco Ciampa a103af96d7 Translated using Weblate (Italian)
Currently translated at 99.3% (9902 of 9968 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-03-29 00:27:50 +01:00
lylythechosenone 3e0125628e Translated using Weblate (Spanish (Mexico))
Currently translated at 86.0% (8579 of 9968 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es_MX/
2025-03-29 00:27:50 +01:00
Pferd O 457db26576 Translated using Weblate (German)
Currently translated at 99.7% (9942 of 9968 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-03-29 00:27:50 +01:00
Henrik Kauhanen 96040df625 Translated using Weblate (Swedish)
Currently translated at 99.9% (9960 of 9968 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-03-29 00:27:50 +01:00
dsa-t 1bfeececa5 Translated using Weblate (Russian)
Currently translated at 100.0% (9968 of 9968 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-03-29 00:27:50 +01:00
Seth Hillbrand 8027348d8a Remove accident call to default SSHKey
The sshkey should not be reset when changing to https protocol.

(cherry picked from commit deb14110aa)
2025-03-28 16:26:43 -07:00
Michael712 6a834f8811 Don't use transform coordination for height/width property display of rectangles
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20468

(cherry picked from commit d59f624001)
2025-03-28 17:50:28 +01:00
Seth Hillbrand 81914c846f Remove requirement for name
Name is not needed for new git repos and is hidden, so can't be set

(cherry picked from commit 22e1f70a7e)
2025-03-26 13:11:21 -07:00
Seth Hillbrand 579c08155f Update tree based on elements not map
Rather than updating the tree with all elements in the map (some of
which may have changed), we iterate over the tree and set those elements
that we find in the map.  This ensures that all elements updated in the
tree exist there
2025-03-26 13:10:10 -07:00
jean-pierre charras cac3a140cc Pcbnew, plot F&B Fab: ensure the DNP mark is plotted only on the right layer.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20458

(cherry picked from commit 99e65afa1f)
2025-03-26 16:30:22 +01:00
jean-pierre charras c7f1d0a0ff Pcbnew, performance fix: rebuild the pad view only when mandatory.
The LAYER_PAD_HOLEWALLS shape needs a rebuild only when the zoom level changes.
So keep trace of the last GAL zoom level to rebuild the shape, and only rebuild
the view when needed

(cherry picked from commit 3e51b2c647)
(and from commit 3dfd164e2b)
2025-03-26 15:14:05 +01:00
Tomasz Wlostowski 56c05869dd router: don't try to lock the first vertex of a zero-vertex line. Might crash (sometimes).
Fixes https://gitlab.com/kicad/code/kicad/issues/20440

(cherry picked from commit 5f620f0fa1)
2025-03-26 07:47:56 -04:00
Tomasz Wlostowski b9f249226a KIGIT: fix crash when the repo has no remote set
(cherry picked from commit 1638322649)
2025-03-25 14:44:31 -04:00
Wayne Stambaugh 77588e0d0f Tag stable version 9.0.1 release candidate 2. 2025-03-24 15:21:48 -04:00
Seth Hillbrand 80e45b2f1d Update translations 2025-03-24 12:07:28 -07:00
Håvard Syslak dfea0b4dd5 Translated using Weblate (Norwegian Bokmål)
Currently translated at 41.0% (4092 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/nb_NO/
2025-03-24 20:00:30 +01:00
Viktor Döme b6b3245cfc Translated using Weblate (Hungarian)
Currently translated at 6.0% (603 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/hu/
2025-03-24 20:00:30 +01:00
Adolfo Jayme Barrientos aa4d019efb Translated using Weblate (Spanish)
Currently translated at 86.8% (8646 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es/
2025-03-24 20:00:30 +01:00
Adolfo Jayme Barrientos cbdad19566 Translated using Weblate (Catalan)
Currently translated at 41.9% (4173 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ca/
2025-03-24 20:00:30 +01:00
Adolfo Jayme Barrientos 299ed49de6 Translated using Weblate (Spanish)
Currently translated at 86.2% (8586 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es/
2025-03-24 20:00:30 +01:00
co8 j 8ecbdb4f3d Translated using Weblate (Japanese)
Currently translated at 99.9% (9954 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-03-24 20:00:30 +01:00
Adolfo Jayme Barrientos f8f905025d Translated using Weblate (Spanish)
Currently translated at 86.1% (8575 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es/
2025-03-24 20:00:30 +01:00
Adolfo Jayme Barrientos a14830b796 Translated using Weblate (Catalan)
Currently translated at 41.8% (4167 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ca/
2025-03-24 20:00:30 +01:00
ZbeeGin 537e3e625b Translated using Weblate (Polish)
Currently translated at 100.0% (9957 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-03-24 20:00:29 +01:00
Marco Ciampa 1d6a67d2b2 Translated using Weblate (Italian)
Currently translated at 99.3% (9890 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-03-24 20:00:29 +01:00
Marco Ciampa 285c549394 Translated using Weblate (Italian)
Currently translated at 98.6% (9827 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-03-24 20:00:29 +01:00
Marco Ciampa c2c915c98c Translated using Weblate (Italian)
Currently translated at 98.2% (9785 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-03-24 20:00:29 +01:00
Marco Ciampa 1c894f0e9a Translated using Weblate (Italian)
Currently translated at 98.0% (9765 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-03-24 20:00:29 +01:00
Marco Ciampa 4ea24a4d39 Translated using Weblate (Italian)
Currently translated at 97.5% (9709 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-03-24 20:00:29 +01:00
Adolfo Jayme Barrientos 817aa5670e Translated using Weblate (Spanish)
Currently translated at 85.3% (8498 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es/
2025-03-24 20:00:29 +01:00
Pferd O eddd925269 Translated using Weblate (German)
Currently translated at 99.8% (9942 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-03-24 20:00:29 +01:00
Adolfo Jayme Barrientos 61bcf85fb3 Translated using Weblate (Spanish)
Currently translated at 85.3% (8497 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es/
2025-03-24 20:00:29 +01:00
ZbeeGin 8c5e98ee03 Translated using Weblate (Polish)
Currently translated at 100.0% (9957 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-03-24 20:00:29 +01:00
Adolfo Jayme Barrientos 20138d20f9 Translated using Weblate (Spanish)
Currently translated at 85.1% (8477 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es/
2025-03-24 20:00:29 +01:00
Tokita, Hiroshi 57fc76cb22 Translated using Weblate (Japanese)
Currently translated at 99.9% (9952 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-03-24 20:00:29 +01:00
Adolfo Jayme Barrientos de9fa7bdb1 Translated using Weblate (Spanish)
Currently translated at 84.6% (8429 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/es/
2025-03-24 20:00:28 +01:00
Marco Ciampa 6b5525f946 Translated using Weblate (Italian)
Currently translated at 97.4% (9706 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-03-24 20:00:28 +01:00
Tokita, Hiroshi a9e29a957a Translated using Weblate (Japanese)
Currently translated at 99.8% (9943 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-03-24 20:00:28 +01:00
Marco Ciampa ee1951cd58 Translated using Weblate (Italian)
Currently translated at 96.7% (9638 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-03-24 20:00:28 +01:00
Niyazi d66879cafa Translated using Weblate (Turkish)
Currently translated at 65.6% (6538 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-03-24 20:00:28 +01:00
Wellington Terumi Uemura 3c6631bdb2 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (9957 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt_BR/
2025-03-24 20:00:28 +01:00
Henrik Kauhanen f40be70e07 Translated using Weblate (Swedish)
Currently translated at 99.9% (9956 of 9957 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-03-24 20:00:28 +01:00
Seth Hillbrand 151d745922 Enable/disable git tracking in user prefs
Don't require advanced config for people who want to disable

(cherry picked from commit f83e607e6e)
2025-03-24 11:58:57 -07:00
Jon Evans bd3cc02b18 Mark pad as dirty when changing layerset
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20435


(cherry picked from commit 8921824128)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-03-23 20:10:07 -04:00
Seth Hillbrand 8acf694129 Trying again to fix Mac build
(cherry picked from commit ea36110980)
2025-03-23 10:53:44 -07:00
Seth Hillbrand 348700eb1d Fix builds for newer libgit2 (1.8.0 and newer)
(cherry picked from commit b65ceb60b2)
2025-03-23 10:53:44 -07:00
Seth Hillbrand c0d20fce9e Fix build on Windows
(cherry picked from commit faf6243d1a)
2025-03-23 10:53:44 -07:00
Seth Hillbrand bf0bd05c75 Fix some regressions in git handling
Set default to rebase for pull
Update error string on auth failure
Improve trace logging

(cherry picked from commit b8225ba2d6)
2025-03-23 10:53:44 -07:00
Seth Hillbrand d2550138bc Don't re-read tokens on error
If the data were empty, there is no token, so curTok will represent the
right paren, not the next token

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20301
2025-03-20 13:12:12 -07:00
Jon Evans 029f72161b Handle duplicate entries in BOM presets
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20342

(cherry picked from commit 4ef0d3554e)
2025-03-17 18:45:15 -04:00
Jon Evans 87457cfdaf Code style
(cherry picked from commit 2ef123d9e1)
2025-03-17 18:45:02 -04:00
Alex Shvartzkop c258b99d2f Update translations 2025-03-17 18:43:29 +03:00
Marco Ciampa b436a4fd2a Translated using Weblate (Italian)
Currently translated at 96.4% (9606 of 9956 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-03-17 16:42:14 +01:00
ZbeeGin 98becb9814 Translated using Weblate (Polish)
Currently translated at 99.8% (9942 of 9956 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-03-17 16:42:14 +01:00
Jan Straka 49c352a95e Translated using Weblate (Czech)
Currently translated at 77.9% (7765 of 9956 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2025-03-17 16:42:14 +01:00
Marco Ciampa 96541f9ef7 Translated using Weblate (Italian)
Currently translated at 96.0% (9567 of 9956 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-03-17 16:42:14 +01:00
Ertuğrul Reisoğlu 0dfe8ce154 Translated using Weblate (Turkish)
Currently translated at 65.6% (6537 of 9956 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-03-17 16:42:14 +01:00
Marco Ciampa bcf992f22f Translated using Weblate (Italian)
Currently translated at 96.0% (9565 of 9956 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-03-17 16:42:14 +01:00
Henrik Kauhanen a8d79ec4be Translated using Weblate (Swedish)
Currently translated at 99.9% (9955 of 9956 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-03-17 16:42:14 +01:00
NAXSISFLYBY a38a76791f Translated using Weblate (Turkish)
Currently translated at 65.5% (6529 of 9956 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-03-17 16:42:14 +01:00
dsa-t 44c66225e7 Translated using Weblate (Russian)
Currently translated at 99.9% (9954 of 9956 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-03-17 16:42:13 +01:00
Jan Straka c973fa7ad0 Translated using Weblate (Czech)
Currently translated at 76.6% (7629 of 9956 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/cs/
2025-03-17 16:42:13 +01:00
Wayne Stambaugh 3993e6dcb0 Tag stable version 9.0.1 release candidate 1. 2025-03-17 08:25:45 -04:00
Seth Hillbrand e1436d3597 Fix inheritance for git_common
Avoids repo type pointer issues when casting from void

(cherry picked from commit 676dd4ceec)
2025-03-16 18:04:47 -07:00
aris-kimi 28ba36129a Fix a git2 related crash when closing KiCad
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/20202
(cherry picked from commit bb62444fe9)
2025-03-16 18:03:16 -07:00
Seth Hillbrand c6abc5fdd0 Add ability for git to negotiate with agents
Updates the git connection dialog to reflect default agentic behavior,
followed by default keys and only then reverting to a custom selection
if the user desires

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20204

(cherry picked from commit 2c52f98da4)
2025-03-16 18:03:16 -07:00
Seth Hillbrand 6104651613 Adjust git handling
- Utilize scoped deletion for individual git_*_free() calls
- Protect against multiple usage when updating icons
- Reduce frequency of git update calls

(cherry picked from commit 26c331a837)
2025-03-16 18:03:16 -07:00
Jon Evans 5b88f2509e Use stable sort ordering in ERC reports
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20333


(cherry picked from commit fe22166d9f)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-03-16 11:22:06 -04:00
Jon Evans 6768e34e0e Use UI order for drill report stackup
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20069


(cherry picked from commit 77747aa41e)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-03-16 11:13:37 -04:00
Alex Shvartzkop 372b704844 Update translations 2025-03-15 19:01:17 +03:00
Marco Ciampa 3648c8c31a Translated using Weblate (Italian)
Currently translated at 96.1% (9568 of 9955 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-03-15 16:58:36 +01:00
İclal Gör 2df3924ea0 Translated using Weblate (Turkish)
Currently translated at 65.5% (6529 of 9955 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-03-15 16:58:36 +01:00
Marco Ciampa 48d194a0fc Translated using Weblate (Italian)
Currently translated at 96.1% (9569 of 9955 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-03-15 16:58:36 +01:00
Shuwn Hsu 8a3d7d66a1 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 91.0% (9065 of 9955 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2025-03-15 16:58:36 +01:00
İclal Gör d7c9c8aeca Translated using Weblate (Turkish)
Currently translated at 65.5% (6524 of 9955 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-03-15 16:58:36 +01:00
Marco Ciampa 48d3b67686 Translated using Weblate (Italian)
Currently translated at 96.0% (9566 of 9955 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-03-15 16:58:35 +01:00
Henrik Kauhanen a4ac97d5de Translated using Weblate (Swedish)
Currently translated at 99.9% (9954 of 9955 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-03-15 16:58:35 +01:00
dsa-t bb525e3c68 Translated using Weblate (Russian)
Currently translated at 100.0% (9955 of 9955 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-03-15 16:58:35 +01:00
Wayne Stambaugh d4002b95d4 Revert "Tag stable version 9.0.1 release candidate 1."
This reverts commit ae4978502f.
2025-03-15 09:00:27 -04:00
Wayne Stambaugh ae4978502f Tag stable version 9.0.1 release candidate 1. 2025-03-15 07:25:25 -04:00
Seth Hillbrand c4ad3456f4 Fix mistake in arc circle collision
Need to test nearest point from the circle center to the arc.  Add QA to
prevent regression

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20336

(cherry picked from commit de09403b10)
2025-03-14 18:06:54 -07:00
Eli Hughes c521dabcf0 Seeding a simple python script to create a test server for http libs.
(cherry picked from commit e972fb42ee)
2025-03-14 16:55:49 -07:00
Graham Keeth b5716ef54b improve tooltips in sync sheet pins dialog
(cherry picked from commit 89a5fadcdc)
2025-03-14 16:55:24 -07:00
Graham Keeth 9515bf9038 Add ellipses for sheet/sheet pin actions
(cherry picked from commit c57088a60c)
2025-03-14 16:55:05 -07:00
Graham Keeth 38dcfdc350 capitalize Git in display strings
(cherry picked from commit 68869f6439)
2025-03-14 16:54:45 -07:00
Seth Hillbrand 55aeca477d Unify embedded file writing
For unknown reasons, one method of writing was not working on Windows.
This is an attempt to write using the common wxFFileOutputStream to see
if that results in better output for Windows clients

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20006

(cherry picked from commit 03af293683)
2025-03-14 16:52:12 -07:00
Seth Hillbrand 572fcdfa22 Update fp properties even when can't update fp
When updating the footprint, we may encounter a missing footprint.  We
should still modify the netlist against the existing footprint (if one
does exist) to match the netlist.  This matches the behavior of updating
the netlist when fp are not selected for update

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18249

(cherry picked from commit 72411af9de)
2025-03-14 16:51:26 -07:00
Eric 234994bf53 ODB++:Fix date format in misc/info file
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20103

(cherry picked from commit 92cdca69b3)
2025-03-14 16:51:18 -07:00
Seth Hillbrand 49d8fc900f Map a full hierarchy during PDF plotting
Re-create the schematic hierarchy in PDF plots to ease navigation
relative to the on screen schematic

Fixes https://gitlab.com/kicad/code/kicad/-/issues/12154

(cherry picked from commit 4a3b33df4e)
2025-03-14 16:51:18 -07:00
JamesJCode 27b55eb32f Include child SCH_PINs in SCH_RULE_AREA item caches
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20332

(cherry picked from commit 078a01976f)
2025-03-14 20:58:15 +00:00
jean-pierre charras cf118f142c plot mask layers: do not skip mask on track when solder mask min web is not 0
When solder mask min web is not 0, PlotSolderMaskLayer() uses GenerateLayerPoly(),
that skipped tracks (not updated since tracks can be on a mask layer)

(cherry picked from commit 7f1b412203)
2025-03-14 16:10:31 +01:00
Jeff Young be0c8c88e5 Don't modify selection in the middle of a move/drag.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20239
2025-03-14 14:52:04 +00:00
Jeff Young de953b0fdb Refresh preview after rotate/flip/mirror during move.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19561

(cherry picked from commit 3c32f4d31d)
2025-03-14 14:52:04 +00:00
Jeff Young 3ea0191954 Init checkboxes after reading prefs.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20309

(cherry picked from commit 521b411090)
2025-03-14 14:52:04 +00:00
Jon Evans f835591c8b Simulator: Fix line offset in intermediate ngspice file
- Fixes issue #20268
- Replace the hard coded line numbers
- Search for "Value:" string instead


(cherry picked from commit 313232c9f3)

Co-authored-by: Lucas Gerads <lucas.gerads@aixcon.de>
2025-03-13 18:30:24 -04:00
Jeff Young 12fcf31dc5 Fix failure to increment job number.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20034

(cherry picked from commit 2304d10879)
2025-03-13 16:55:32 +00:00
Jeff Young 31b65a241f Don't report non-meeting line-pairs.
We're called on each line pair, so a rect would otherwise
always report to failures for the two pairs of opposite
sides.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20326
2025-03-13 16:30:48 +00:00
Alex Shvartzkop 2bf369793c Fix Eagle PCB layers handling after v9 layer changes. 2025-03-13 17:48:29 +03:00
Jeff Young 12680cfecb Render tables & their borders to 3D view.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19981

(cherry picked from commit f3f9730f2c)
2025-03-13 14:04:50 +00:00
Jeff Young ff578d9866 De-duplicate table border drawing code.
Also cleans up a misconception about table header borders,
and renames the getter/setter to be clearer.

Also makes sure that table cells are updated when the table
layer changes.

And another bug where we were writing the grey color value
back to the cell for hidden cells.
2025-03-13 13:08:30 +00:00
Jeff Young 48e254fe4c EE -> SCH (no functional changes) 2025-03-13 12:28:25 +00:00
Alex Shvartzkop 222bfda5c3 Update translations 2025-03-13 15:26:42 +03:00
Marco Ciampa c93d8115cb Translated using Weblate (Italian)
Currently translated at 95.9% (9555 of 9954 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-03-13 13:23:35 +01:00
dsa-t 5c1d7f11d7 Translated using Weblate (Russian)
Currently translated at 100.0% (9954 of 9954 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-03-13 13:23:35 +01:00
İclal Gör 90d64e3eb1 Translated using Weblate (Turkish)
Currently translated at 60.3% (6010 of 9954 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-03-13 13:23:35 +01:00
İclal Gör 8cbd172c3c Translated using Weblate (Turkish)
Currently translated at 60.2% (5997 of 9954 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-03-13 13:23:35 +01:00
İclal Gör 69de87675a Translated using Weblate (Turkish)
Currently translated at 58.7% (5845 of 9954 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-03-13 13:23:35 +01:00
Argeolog 33492efb01 Translated using Weblate (Turkish)
Currently translated at 58.1% (5785 of 9954 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-03-13 13:23:35 +01:00
2tama3 e22e2c5109 Translated using Weblate (Japanese)
Currently translated at 99.9% (9950 of 9954 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-03-13 13:23:35 +01:00
Marc de Miguel 8937a7cc82 Translated using Weblate (Catalan)
Currently translated at 41.7% (4159 of 9954 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ca/
2025-03-13 13:23:35 +01:00
Ahmet Saygın ÖĞÜLMÜŞ 141eb9d1b7 Translated using Weblate (Turkish)
Currently translated at 58.1% (5786 of 9954 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-03-13 13:23:35 +01:00
Marc de Miguel f291629c64 Translated using Weblate (Catalan)
Currently translated at 41.6% (4141 of 9954 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ca/
2025-03-13 13:23:35 +01:00
İclal Gör b4dbba2f5f Translated using Weblate (Turkish)
Currently translated at 58.0% (5775 of 9954 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-03-13 13:23:35 +01:00
Marc de Miguel bafa055114 Translated using Weblate (Catalan)
Currently translated at 41.5% (4133 of 9954 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ca/
2025-03-13 13:23:35 +01:00
dsa-t 2ca4f60729 Translated using Weblate (Turkish)
Currently translated at 57.2% (5699 of 9954 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-03-13 13:23:35 +01:00
İclal Gör 9451214ecf Translated using Weblate (Turkish)
Currently translated at 57.2% (5699 of 9954 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-03-13 13:23:35 +01:00
Marc de Miguel 635974cfcc Translated using Weblate (Catalan)
Currently translated at 41.4% (4129 of 9954 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ca/
2025-03-13 13:23:35 +01:00
İclal Gör a40c4c68d1 Translated using Weblate (Turkish)
Currently translated at 55.1% (5488 of 9954 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-03-13 13:23:34 +01:00
CloverGit b422281eb8 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.9% (9946 of 9954 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-03-13 13:23:34 +01:00
Argeolog 5e3eda108f Translated using Weblate (Turkish)
Currently translated at 54.7% (5454 of 9954 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-03-13 13:23:34 +01:00
İclal Gör 5bd28c9569 Translated using Weblate (Turkish)
Currently translated at 54.7% (5454 of 9954 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-03-13 13:23:34 +01:00
CloverGit fc562ba229 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 91.0% (9063 of 9954 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hant/
2025-03-13 13:23:34 +01:00
CloverGit e3ab4b066c Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (9943 of 9954 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-03-13 13:23:34 +01:00
Ahmet Saygın ÖĞÜLMÜŞ edfba6ce84 Translated using Weblate (Turkish)
Currently translated at 54.6% (5442 of 9954 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-03-13 13:23:34 +01:00
Henrik Kauhanen 7f7b023c19 Translated using Weblate (Swedish)
Currently translated at 99.9% (9953 of 9954 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-03-13 13:23:33 +01:00
Ettore Atalan 2e9c197f09 Translated using Weblate (German)
Currently translated at 99.9% (9949 of 9954 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-03-13 13:23:33 +01:00
Ahmet Saygın ÖĞÜLMÜŞ f8db7a2aca Translated using Weblate (Turkish)
Currently translated at 54.4% (5423 of 9954 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-03-13 13:23:33 +01:00
dsa-t 34138ffc42 Translated using Weblate (Russian)
Currently translated at 100.0% (9954 of 9954 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-03-13 13:23:33 +01:00
jean-pierre charras 10d34f5b9b Eeschema printing: ensure the flag "is first page" is correctly set.
It is mainly used to draw page layouts having different objects drawn on
first page and other pages.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20318

(cherry picked from commit ddd27f2869)
2025-03-13 11:36:07 +01:00
Seth Hillbrand 7cb85e2dd1 Correct layerset calls
The Board layerset (because BOARD is a BOARD_ITEM) should return the
layers that the board contains instead of just the F.Cu.  This assigns
the common function to map to the board-specific functions

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20317

(cherry picked from commit 96794e94e3)
2025-03-12 11:49:11 -07:00
Seth Hillbrand 34906f0871 Be sure to clear hit cache
When re-running the DRC creepage check, we need to ensure that the
element-element hittest set is cleared to report the same errors again

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20048

(cherry picked from commit 1c245ad01e)
2025-03-12 11:49:08 -07:00
jean-pierre charras 2fa818b002 LISTBOX_TRICKS::listBoxDeleteSelected(): fix crash when trying to remove 0 entries.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20320

(cherry picked from commit dd604361d3)
2025-03-12 16:06:38 +01:00
Jeff Young 9e98bb68d7 Add textOnEdgeCuts to global DRC items list.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20308

(cherry picked from commit 6df9c90440)
2025-03-12 11:32:12 +00:00
Jeff Young 4b26e737c0 Don't wait for mouse move to draw selection shadows.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20309
2025-03-12 09:39:03 +00:00
jean-pierre charras bcb8c2097c BOARD::BulkRemoveStaleTeardrops(): fix bug that prevent removing a teardrop.
When a teardrop is the first zone (or the only one) in list (i.e. last tested)
it was ignored, and therefore not removed.

(cherry picked from commit ccc396a6c2)
2025-03-12 09:51:38 +01:00
Jon Evans 028721f3ed Don't use size events for persistence
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20060


(cherry picked from commit 95e6ca44c6)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-03-11 22:37:29 -04:00
Jon Evans b837dc1d3b Fix build with protobuf 30
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20300


(cherry picked from commit 5774338af2)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-03-11 17:33:47 -04:00
Jeff Young 3446dbbf27 Apply Damjan's rotated table fixes to PCB_TABLE::GetEffectiveShape().
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20143

(cherry picked from commit b7ef57a97d)
2025-03-11 20:17:47 +00:00
Jeff Young aee836d722 Don't disable first internal layer in footprint editor.
It's used as a proxy for all internal layers.

Also fixes LAYER_RANGE_ITERATOR so that it works with an odd
number of copper layers.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20246
2025-03-11 18:41:35 +00:00
Seth Hillbrand 5d9908647c Don't write empty data tags
Also avoid throwing if a data stream is empty so that you can still read
the schematic/pcb/library

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20301

(cherry picked from commit a6fbf4bbdb)
2025-03-11 09:45:17 -07:00
Jeff Young 631c5ec01d Tables support for router.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20295

(cherry picked from commit 567da3de91)
2025-03-11 16:39:59 +00:00
Jeff Young d92f42cdcb Check parent footprint as well for component class.
Also output more descriptive text when checking inherited
rules on parent footprint.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20281
2025-03-11 16:39:59 +00:00
Tomasz Wlostowski a4893523e4 router: simplify post-walkaround lines 2025-03-11 13:40:14 +01:00
Tomasz Wlostowski 4dc0a31071 multichannel: possible fix for ghosting footprints when using grouping
(cherry picked from commit c05cc345f3)
2025-03-11 13:40:14 +01:00
Tomasz Wlostowski c65a1139cb connectivity: treat empty FPIDs as matching in TOPO_MATCH
(cherry picked from commit b1bf5127fa)
2025-03-11 13:40:14 +01:00
Tomasz Wlostowski 71aae415a4 connectivity: TOPO_MATCH now orders reference components by the lowest matching candidate count.
This heuristic seems to make the algorithm reject non-isomorphic mappings much earlier on and converges faster on a solution for typical circuits.

(cherry picked from commit 8192ba73d9)
2025-03-11 13:40:14 +01:00
Tomasz Wlostowski 7061b64319 connectivity: TOPO_MATCH now prioritizes component candidates by the ratio of matching pad nets.
This improves cloning of circuits with numerous of matching component mappings (e.g. LED matrices) by
taking preference for mappings with same order of net connections.

(cherry picked from commit 91ee987cfe)
2025-03-11 13:40:14 +01:00
Tomasz Wlostowski 03da07767d router: refine the endpoint moving logic so that it doesn't block shoving
(cherry picked from commit b4d29a98f9)
2025-03-11 13:40:14 +01:00
Tomasz Wlostowski f3c5b21b1b router: fix regression in post-shove optimization
Note to self: we keep track of the formerly pushed vias in the line stack, but pruning one from the optimizer queue should not prune the lines attached to it.

(cherry picked from commit 78fc95fd6d)
2025-03-11 13:40:14 +01:00
Tomasz Wlostowski 69eb81196d router: prevent assertion fail in MULTI_DRAGGER
Fixes https://gitlab.com/kicad/code/kicad/issues/20075

(cherry picked from commit 9e4947ed36)
2025-03-11 13:40:14 +01:00
Tomasz Wlostowski f23b06de27 router: prevent disconencting via fanout traces when shoving
Note to self: move-endpoints fallback mode must check for vias connected at the obstacle LINE's ends - fallback is only applicable for unconnected ends.

(cherry picked from commit 29a4ec0fde)
2025-03-11 13:40:14 +01:00
Tomasz Wlostowski badaac9366 router: improved shove litter fix
Note to self: managing the shove stack is quite challenging and there were a few corner cases
where reverse via/segment collisions would cause a head segment (or a via) to have multiple clones in the stack.
As SHOVE::removeHeads() took only complete head lines, sometimes it resulted with stray vias/segments.

Fixes https://gitlab.com/kicad/code/kicad/issues/19045

(cherry picked from commit bfbdfcf872)
2025-03-11 13:40:14 +01:00
Jon Evans 215c3fdf77 Switch to operator= for item updates
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20206


(cherry picked from commit d0b22d21bb)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-03-10 19:19:55 -04:00
dsa-t b658031b8c Don't translate wxFileDialog "All Files" filter.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20297


(cherry picked from commit c4655da4e6)

Co-authored-by: Alex Shvartzkop <dudesuchamazing@gmail.com>
2025-03-10 16:07:01 +03:00
Jeff Young 02b756189b Formatting.
(cherry picked from commit e163c40e54)
2025-03-09 18:18:32 +00:00
Jeff Young d2af56597e DRC for tables. (And some fixes for dimensions.)
(cherry picked from commit a468c486eb)
2025-03-09 18:18:32 +00:00
Jeff Young f862eea1b9 Group members are still children of the board (not
the group).

(cherry picked from commit 4b38932129)
2025-03-09 18:18:32 +00:00
Alex Shvartzkop 73f495c67d Update translations 2025-03-09 19:05:14 +03:00
dsa-t b46780ad46 Translated using Weblate (Turkish)
Currently translated at 53.6% (5339 of 9953 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-03-09 17:03:59 +01:00
Argeolog 9762fb855d Translated using Weblate (Turkish)
Currently translated at 53.6% (5340 of 9953 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-03-09 17:01:51 +01:00
Argeolog 9d156891c6 Translated using Weblate (Turkish)
Currently translated at 53.4% (5324 of 9953 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-03-09 16:37:45 +01:00
Argeolog b73b154abc Translated using Weblate (Turkish)
Currently translated at 53.4% (5315 of 9953 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/tr/
2025-03-09 16:33:20 +01:00
Wellington Terumi Uemura 1d9a5c33ca Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (9953 of 9953 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt_BR/
2025-03-09 16:33:20 +01:00
ZbeeGin 12dac14ba6 Translated using Weblate (Polish)
Currently translated at 99.7% (9931 of 9953 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-03-09 01:47:31 +01:00
CloverGit 116aa3d344 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (9942 of 9953 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-03-09 01:47:31 +01:00
Rigo Ligo 7219a5dd77 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (9942 of 9953 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-03-09 01:47:31 +01:00
co8 j 729d14827e Translated using Weblate (Japanese)
Currently translated at 99.9% (9949 of 9953 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-03-09 01:47:31 +01:00
Henrik Kauhanen e8ec50e04c Translated using Weblate (Swedish)
Currently translated at 99.9% (9952 of 9953 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-03-09 01:47:30 +01:00
Marco Ciampa 8b2e70afb0 Translated using Weblate (Italian)
Currently translated at 96.0% (9557 of 9953 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-03-09 01:47:30 +01:00
Henrik Kauhanen 21384b64f7 Translated using Weblate (Finnish)
Currently translated at 99.1% (9870 of 9953 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/fi/
2025-03-09 01:47:30 +01:00
CloverGit 184798b770 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (9939 of 9953 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-03-09 01:47:30 +01:00
dsa-t f93a954c7b Translated using Weblate (Russian)
Currently translated at 100.0% (9953 of 9953 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-03-09 01:47:30 +01:00
JamesJCode a69d6a129a Mirror netclass DRC expression semantics for component classes
With this change, "A.Component_Class == 'SOME_CLASS'" will return
true if either SOME_CLASS exists in the list of component classes
attached o the footprint, or if SOME_CLASS is the full component
class name.

(cherry picked from commit 85e6978aa2)
2025-03-08 22:20:55 +00:00
Jeff Young 491af0df39 When following board or plot settings, write results to current config.
Also adds migration from older layer numbers to strings.
This may require users to dump their 9.0 settings files
(which will have the wrong layer numbers in them), but
those files are often useless anyway as they'll already
have messed up colours if they were migrated from 8.0.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18709
2025-03-08 19:10:39 +00:00
jean-pierre charras 34458cf738 Pcbnew: remove dead code.
The export SVG dialog was removed some time ago (merged with plot svg).
But some settings of this removed dialogs were not removed.

(cherry picked from commit 9a1cf81ca6)
2025-03-08 13:35:15 +01:00
jean-pierre charras 809948333e Fix compil warnings
(cherry picked from commit 9d1b320896)
2025-03-08 09:42:15 +01:00
Seth Hillbrand 1a6160b132 Removed shared_ptr circular references
When A references B and B references A, the shared pointer reference
count will never go to zero by just removing the parent container.  We
need to explicitly clear the shared pointer references when we are done

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20272

(cherry picked from commit 641e06e67c)
2025-03-07 17:31:32 -08:00
JamesJCode 51f588b55b Check for constituent netclasses in DRC netclass equality checks
This reverts previous behaviour whereby 'A.Netclass == x' compared
the full name of an effective netclass (e.g. 'Class1,Default'). This
was found to be unexpected behaviour to users, who were expecting
the equality to compare single netclasses. The equality check now
first checks for a constituent class with the given name, and then
falls back to a check of the full class name.

Inequality requires the netclass name being tested to not be a
constituent netclass and to not be the full class name.

(cherry picked from commit f0e287a87b)
2025-03-07 23:57:13 +00:00
Seth Hillbrand 1effbe5d01 Prevent ERC error with NC pin+NC marker
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20222

(cherry picked from commit 4f6a73d83c)
2025-03-07 15:26:06 -08:00
Seth Hillbrand 50711b1294 Revert "Allow a no-connect to connect to a single pin (but not multiple pins)."
This reverts commit ee4a6127c6.

(cherry picked from commit 2b557c5497)
2025-03-07 15:25:53 -08:00
Damjan b3ba8d78b5 pcbnew: table rotation: table jumps if rotation ends at 180°
(cherry picked from commit bded181ad0)
2025-03-07 20:39:59 +00:00
Jeff Young 11df4b32eb Fix merge mess-up.
(cherry picked from commit 727fc9bd06)
2025-03-07 19:00:46 +00:00
Jeff Young 1de9a83ff0 Printing is not zoom-specific.
(Some of these items don't currently get printed, but
there's no sense in leaving a latent bug around in case
we ever change our minds.)

(cherry picked from commit 877c6bce89)
2025-03-07 19:00:10 +00:00
Jeff Young 25de338bdd Support ctrl-delete for delete word forward.
(On non-Macs, anyway.  Mac doesn't appear to use this
paradigm.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20248

(cherry picked from commit ce5469b95e)
2025-03-07 19:00:05 +00:00
Seth Hillbrand 4df101b94e Ensure imported schematic sheet names are unique
Altium doesn't require sheet names to be unique but KiCad does, so we
disambiguate the names when importing

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19281

(cherry picked from commit ca51b0f37d)
2025-03-06 16:10:08 -08:00
Seth Hillbrand cf78215276 Fix multi-unit symbol import in Altium sch
Set the library symbol equal to total unit count so that we can assign
elements to the correct unit in the SCH_SYMBOL

(cherry picked from commit 81fcc16cc9)
2025-03-06 15:20:44 -08:00
JamesJCode ed5ec0f749 Don't dereference null COMPONENT_CLASS in testFootprintSelector
This can happen when running standalone, where component classes
have not been resolved.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20235

(cherry picked from commit 54540f9e82)
2025-03-06 21:45:38 +00:00
Seth Hillbrand 2da1294492 Fix IsEffectiveLine calculation
We sometimes represent circles as 360° arcs.  These are approximately
colinear but are definitely not a line

(cherry picked from commit c24832f72b)
2025-03-06 12:45:39 -08:00
Wayne Stambaugh 04733511fc Use case insensitive comparison in symbol footprint filter match DRC.
This keeps the DRC test in line with the ERC test which is also case
insensitive.

(cherry picked from commit a1b78d170d)
2025-03-06 15:42:03 -05:00
JamesJCode 1414e90ce9 Fix Specctra export for multiple netclasses
(cherry picked from commit 57952a7a86)
2025-03-06 20:25:58 +00:00
Seth Hillbrand 5c492429be Printing should never hide small elements
Since it is effectively infinite resolution, pass the vectors to the
printer and let it decide if there should be a dot there or not.  Hiding
based on perspective is a screen optimization

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20226

(cherry picked from commit 8e048d0c42)
2025-03-06 12:18:57 -08:00
jean-pierre charras e9e2c9399b French translation update 2025-03-06 18:12:27 +01:00
jean-pierre charras 58422f2c97 SCH_IO_MGR::GuessPluginTypeFromLibPath(): fix issue for new .kicad_sym files
GuessPluginTypeFromLibPath() was previously testing the type, but also the
existence of the lib file of *.kicad_sym filename, but when creating a new lib,
its existence obviously must not be tested

(cherry picked from commit e54c73b516)
2025-03-06 18:12:27 +01:00
Jeff Young 618077bbf2 Resolve hotkey conflicts.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18201
2025-03-06 16:15:23 +00:00
Jeff Young 6aa274bc0d Formatting.
(cherry picked from commit 52648497b2)
2025-03-06 16:15:23 +00:00
Jeff Young 12f460cc7a Don't treat version-bumped file as modified.
But do allow Save to still work.

(cherry picked from commit 5c91a7fa3a)
2025-03-06 16:15:23 +00:00
JamesJCode cbe22a23b8 Enable use of double properties in DRC rules expression parser
Also fixes name clash with Orientation property for footprints

(cherry picked from commit 671d84562b)
2025-03-06 15:41:40 +00:00
jean-pierre charras 0f8f9214b0 Fix compil issue on mingw (missing change from OUTPUT to DESTINATION)
(cherry picked from commit a32c0a8687)
2025-03-06 15:59:58 +01:00
Jeff Young 4f63cb6a26 Move arrow direction to more appropriate section.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20208

(cherry picked from commit 124eccb710)
2025-03-06 14:26:59 +00:00
Alex Shvartzkop 64d8bbd1d9 Update translations 2025-03-06 13:54:46 +03:00
Marco Ciampa f957dfa218 Translated using Weblate (Italian)
Currently translated at 95.8% (9540 of 9951 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-03-06 11:53:21 +01:00
CloverGit 0d18ad188b Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (9939 of 9951 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-03-06 11:53:21 +01:00
Henrik Kauhanen bf189855f8 Translated using Weblate (Swedish)
Currently translated at 99.9% (9950 of 9951 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-03-06 11:53:21 +01:00
Marco Ciampa 81658cb2c9 Translated using Weblate (Italian)
Currently translated at 95.6% (9523 of 9951 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-03-06 11:53:21 +01:00
Henrik Kauhanen 5e80f4bf32 Translated using Weblate (Finnish)
Currently translated at 99.1% (9870 of 9951 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/fi/
2025-03-06 11:53:21 +01:00
Kliment 684b92dfa6 Translated using Weblate (Finnish)
Currently translated at 99.1% (9870 of 9951 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/fi/
2025-03-06 11:53:20 +01:00
Henrik Kauhanen 22e2850cdc Translated using Weblate (German)
Currently translated at 99.9% (9949 of 9951 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-03-06 11:53:20 +01:00
Pferd O be7b69172f Translated using Weblate (German)
Currently translated at 99.9% (9949 of 9951 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-03-06 11:53:20 +01:00
Kliment 07f74ab56e Translated using Weblate (German)
Currently translated at 99.9% (9949 of 9951 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-03-06 11:53:20 +01:00
Henrik Kauhanen 89bbaa6d2e Translated using Weblate (Swedish)
Currently translated at 99.9% (9946 of 9951 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-03-06 11:53:20 +01:00
Kliment ce8737936e Translated using Weblate (Finnish)
Currently translated at 98.7% (9830 of 9951 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/fi/
2025-03-06 11:53:20 +01:00
Kliment 8c45d3621e Translated using Weblate (German)
Currently translated at 99.9% (9946 of 9951 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-03-06 11:53:20 +01:00
Wellington Terumi Uemura bae042b934 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (9951 of 9951 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt_BR/
2025-03-06 11:53:20 +01:00
CloverGit 5e724a2909 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (9939 of 9951 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-03-06 11:53:20 +01:00
Henrik Kauhanen 4810f50083 Translated using Weblate (Swedish)
Currently translated at 99.9% (9944 of 9951 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-03-06 11:53:20 +01:00
co8 j 771c6b21df Translated using Weblate (Japanese)
Currently translated at 99.9% (9946 of 9951 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-03-06 11:53:20 +01:00
Pferd O 5f1feb4532 Translated using Weblate (German)
Currently translated at 99.8% (9934 of 9951 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-03-06 11:53:20 +01:00
Jeff Young 759b279009 Allow a no-connect to connect to a single pin (but not multiple pins).
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20222
2025-03-06 10:26:30 +00:00
Jeff Young 456fc581f1 Don't flag double no-connect annotations.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20222
2025-03-06 10:26:30 +00:00
Jon Evans d18d47fbeb Fix accidental removal of properties pane
(cherry picked from commit 984041f57e)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-03-05 17:45:19 -05:00
JamesJCode efae811143 Fix incorrect inequality in component class expression evaluation
(cherry picked from commit a091b6c1c9)
2025-03-05 19:11:12 +00:00
Jeff Young f7eb925bfe An arbitrary layer flip can not be done without the board.
(User-defined layers can be sided or not.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20169

(cherry picked from commit 9856cb2210)
2025-03-05 18:01:09 +00:00
Jeff Young f92c46d585 User layer bug fixes.
1) Don't set user layer count right after we've
cleared the enabled user layers.  (It will
always be 0 by then.)

2) Allow un-enabled layers in some layer
selectors.  (Currently this is just the private
layers selector.

3) Reset the appearance panel layers each time a
footprint is loaded.  Also, auto-enable any user
layers that the footprint already has.

4) Footprint editor layer visibility is stored in
the view, not in the boars (as is usual).

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20022
2025-03-05 16:39:52 +00:00
Tomasz Wlostowski 648c3aec39 IO_BASE: don't try to modify the case of a temporary string in-place, work on a copy
(cherry picked from commit 6a0efe6883)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20228
2025-03-05 12:21:52 +00:00
Jeff Young 46ef12ff4d Implement severity checking for CLI_REPORTER.
(cherry picked from commit 699fd2b3ac)
2025-03-05 11:56:48 +00:00
Jon Evans 477f856e9a Fix pad edit fighting with active group
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20129


(cherry picked from commit 50507212fd)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-03-05 00:05:18 -05:00
Jon Evans 3a1cb402ad Improve 259e249a for macOS
(cherry picked from commit a6ef2d97fb)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-03-04 22:57:02 -05:00
Jon Evans 9c50f208af Improve default sizes of right panels
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19965


(cherry picked from commit 259e249aed)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-03-04 22:56:53 -05:00
Jeff Young 0d9daa372e Keep user-defined common layers order.
(And use it when plotting.)

(And don't shadow it with a second variable.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20214
2025-03-04 23:37:02 +00:00
Jeff Young 91a2edd16f Don't add CONSTRUCTION_GEOM to the selection.
We'll crash later after it gets freed.
2025-03-04 14:13:26 +00:00
Jeff Young 765c4ffce6 Report errors from jobset plotting.
Also fixes an out-of-scope smart-pointer access.
2025-03-04 13:26:04 +00:00
Wayne Stambaugh 50b8b797f7 Test full LIB_ID in symbol footprint filter match DRC.
Apparently newer symbol libraries are using the library nickname in the
footprint filter string.  The symbol footprint filter match DRC was only
checking the footprint name against the new filter which would always
fail.  A test against the full LIB_ID string is now performed when the
filter string contains the library separator character ':'.  The ERC test
already performed this check.

(cherry picked from commit 001d3dfd88)
2025-03-04 08:06:15 -05:00
Jeff Young 9025f04f20 Button margins.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20207
2025-03-04 12:39:33 +00:00
Damjan ce2b4a7b16 pcbnew: Plotting tables with non-90 degree rotation angles is not working
(cherry picked from commit b419058df3)
2025-03-04 12:11:05 +00:00
Jeff Young ed76b543a0 Don't render thickness walls of text we're not going to draw.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20200
2025-03-04 10:55:36 +00:00
Mark Roszko 622a3f5bad Restore the page size mode behavior
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20014


(cherry picked from commit b6743653f3)

Co-authored-by: Marek Roszko <mark.roszko@gmail.com>
2025-03-04 04:16:07 +00:00
Alex Shvartzkop f125ab95c9 Update translations 2025-03-04 06:36:48 +03:00
Arnau Llovet Vidal d52811d367 Translated using Weblate (Catalan)
Currently translated at 41.4% (4120 of 9941 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ca/
2025-03-04 04:36:01 +01:00
Henrik Kauhanen 549258a5cc Translated using Weblate (Swedish)
Currently translated at 99.9% (9934 of 9941 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-03-04 04:36:01 +01:00
Pferd O 2ae04b32b4 Translated using Weblate (German)
Currently translated at 99.9% (9935 of 9941 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-03-04 04:36:01 +01:00
Henrik Kauhanen ab0d02b322 Translated using Weblate (Swedish)
Currently translated at 99.9% (9933 of 9941 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-03-04 04:36:01 +01:00
Henrik Kauhanen 9e163b7480 Translated using Weblate (Swedish)
Currently translated at 99.8% (9930 of 9941 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-03-04 04:36:01 +01:00
dsa-t d69e7c579c Translated using Weblate (Russian)
Currently translated at 100.0% (9941 of 9941 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-03-04 04:36:00 +01:00
Pferd O 2a1de79916 Translated using Weblate (German)
Currently translated at 99.9% (9933 of 9941 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-03-04 04:36:00 +01:00
Jeff Young 7116be4ae0 Put non-sided layers on front, not back of board.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20201

(cherry picked from commit 7cfa826c9a)
2025-03-03 21:38:47 +00:00
Jeff Young 66bf97bc0f Fix SCH plot to PDF for jobsets.
(Fix for CLI bug #19522 broke it for jobsets.)
2025-03-03 20:39:06 +00:00
Jeff Young 42a18ad3b6 Fix job run-log sizing issues.
wxLIST_AUTOSIZE_USEHEADER doesn't work on
some
platforms, and using OnSize was having seizures
on Mac.
2025-03-03 20:19:50 +00:00
Jeff Young afd35001cb Fix job run log sizing issues.
wxLIST_AUTOSIZE_USEHEADER doesn't work on
several platforms, and dynamic sizing of the
list columns falls apart on Mac.
2025-03-03 19:23:38 +00:00
Jeff Young cbc964fb94 Jobset Output -> Destination.
(cherry picked from commit d8cdb69831)
2025-03-03 18:36:14 +00:00
Jeff Young d033859596 Handle exporting symbols into libraries already under LIB_MGR.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17840

(cherry picked from commit afa4ebcc84)
2025-03-03 16:13:40 +00:00
Jeff Young c7a6f3c63b Restore "Export Symbol".
The workflow turns out to be slightly different
than a Save As to a new library.

(We don't assume it goes in a library table; we
flatten the symbol; and we pre-load the library
name.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20070

(cherry picked from commit 6b146874c1)
2025-03-03 16:13:40 +00:00
Jeff Young 984b872c28 Formatting.
(cherry picked from commit 1c48e97cd7)
2025-03-03 16:13:40 +00:00
Jeff Young a246a96d18 Disable multi-via dragging.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20150

(cherry picked from commit d0e86cad7c)
2025-03-03 16:13:40 +00:00
Mark Roszko 12d3f54da4 Fix compilation on mingw
(cherry picked from commit c2685ef76f)

a3c14a6e Build: fix: allow compilation on mingw

Co-authored-by: Kreijstal <rainb@tfwno.gf>
2025-03-03 01:56:46 +00:00
Jeff Young 97b0e6d403 Persist some missing jobset arguments.
Also adds some missing CLI arguments.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20116

(cherry picked from commit b0eef3ee28)
2025-03-02 19:28:01 +00:00
Jeff Young 89226575c6 Deprecate (instead of remove) --plot-invisible-text
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20171

(cherry picked from commit 307798ac92)
2025-03-02 19:27:52 +00:00
Jeff Young 6febb9ddde Yet another static line issue. 2025-03-02 18:42:28 +00:00
Jeff Young 47150649b7 Yet another static line issue. 2025-03-02 18:20:42 +00:00
Jeff Young ae6c865a77 Handle circular holes with y==0.
(Because legacy code assumed this.)

(cherry picked from commit 164eff1a3b)
2025-03-02 17:55:22 +00:00
Jeff Young 154c89765f Remove extra divider from Pad Properties.
(cherry picked from commit 7d9dd50b08)
2025-03-02 17:55:19 +00:00
Jeff Young 341818306e Remove extra divider from Pad Properties.
(cherry picked from commit dc12fdfc33)
2025-03-02 17:55:15 +00:00
Jeff Young 87a0106c57 Compiler warnings. 2025-03-02 17:05:42 +00:00
jean-pierre charras 2504195e6e 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

(cherry picked from commit b0fe4df3c5)
(cherry picked from commit 0acdabd1eb)
(cherry picked from commit eaa1e6d594)
2025-03-02 16:13:11 +01:00
jean-pierre charras 3f5195de3d French translation update 2025-03-02 15:16:11 +01:00
Jeff Young 31fe178504 Don't generate -1 width non-filled splines.
They serve no purpose, and will get replaced with
default-line-width non-filled splines.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20138
2025-03-02 11:33:34 +00:00
Jeff Young e44e3ae25e Windows compiler doesn't like the trailing ','? 2025-03-02 10:49:59 +00:00
Jeff Young ae96cf1715 Provide easier on-ramp for jobsets.
1) Perform initial save of new jobset.
2) Add default output folder to new jobset.

(cherry picked from commit 26871b56f0)
2025-03-02 09:10:21 +00:00
Jeff Young 203ddb7b47 Code brevity.
(cherry picked from commit f951497a4f)
2025-03-01 22:23:30 +00:00
Jeff Young 0ec82b65be Formatting; code brevity.
(cherry picked from commit 481e467968)
2025-03-01 22:18:35 +00:00
Jeff Young 09c63ea1ec Consistent spacing.
(cherry picked from commit ef75f63f10)
2025-03-01 22:18:31 +00:00
Jeff Young 0c2edf8e5c Persist generate-gerber-job-file setting.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20158

(cherry picked from commit c0e4c6a865)
2025-03-01 22:17:36 +00:00
Jon Evans d9a779d8ce Make sure to fully repaint pads when loading a board
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19896


(cherry picked from commit 547a063981)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-03-01 21:54:55 +00:00
Jon Evans e56894ccc2 Fixup cherry-pick 9055821d for 9.0 2025-03-01 12:05:50 -05:00
Jon Evans 5c624dacd2 Fix SCH_SHEET field layer settings
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20128

(cherry picked from commit 10cb0592ee)
2025-03-01 11:32:04 -05:00
Jon Evans 3ad740c920 Remove unused CN_ITEM m_visited
Visited flag should not be stored in the item itself
since these items are used in parallelized code and
the visited state should remain local to the thread


(cherry picked from commit e44eed6e6b)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-03-01 15:43:27 +00:00
Jon Evans 9055821db6 Fix inadvertent logic bug in SearchClusters
The safety changes in 3d526edc introduced a subtle
bug where aExcludeZones was not actually excluding
zones anymore because its behavior depended on the
item visited flag being set to true by a previous
call to the function.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20090


(cherry picked from commit 51f56ab31c)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-03-01 15:39:57 +00:00
Alex Shvartzkop d08cb55d94 Update translations 2025-03-01 18:35:02 +03:00
Henrik Kauhanen 240a7bb238 Translated using Weblate (Swedish)
Currently translated at 99.9% (9935 of 9938 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/sv/
2025-03-01 16:32:51 +01:00
co8 j e453da97af Translated using Weblate (Japanese)
Currently translated at 99.9% (9936 of 9938 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ja/
2025-03-01 16:32:51 +01:00
Wellington Terumi Uemura 140f92b1d7 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (9938 of 9938 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pt_BR/
2025-03-01 16:32:51 +01:00
ZbeeGin 51ec75e565 Translated using Weblate (Polish)
Currently translated at 99.9% (9936 of 9938 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/pl/
2025-03-01 16:32:51 +01:00
Pferd O 4c13ca2bea Translated using Weblate (German)
Currently translated at 99.9% (9936 of 9938 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-03-01 16:32:51 +01:00
CloverGit a638ca22c2 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.9% (9934 of 9938 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/zh_Hans/
2025-03-01 16:32:51 +01:00
dsa-t 6526fe75ea Translated using Weblate (Russian)
Currently translated at 100.0% (9938 of 9938 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/ru/
2025-03-01 16:32:51 +01:00
Marco Ciampa 3c41c33e39 Translated using Weblate (Italian)
Currently translated at 95.8% (9527 of 9938 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/it/
2025-03-01 16:32:51 +01:00
Pferd O d267f46c21 Translated using Weblate (German)
Currently translated at 99.9% (9930 of 9938 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/de/
2025-03-01 16:32:51 +01:00
109247019824 a47298b72f Translated using Weblate (Bulgarian)
Currently translated at 8.2% (823 of 9938 strings)

Translation: KiCad EDA/v9
Translate-URL: https://hosted.weblate.org/projects/kicad/v9/bg/
2025-03-01 16:32:50 +01:00
Jon Evans 41c3607512 Fix 9.0 formatting of fields
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20166
2025-03-01 08:53:32 -05:00
Fabien Corona d7ba90c573 iec60664-1 : preferred values
(cherry picked from commit 81428e14a6)

Co-authored-by: Fabien Corona <f.corona@laposte.net>
2025-03-01 07:58:19 +00:00
Seth Hillbrand 3f984704be Prevent fetch without repo
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20152

(cherry picked from commit 18ac99d838)
2025-02-28 08:35:58 -08:00
jean-pierre charras 2bb2f1398c BRDITEMS_PLOTTER::PlotFootprintTextItems(): fix a typo about Value layer.
The typo was using the reference layer to plot the value field

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20144

(cherry picked from commit 75bed91789)
2025-02-28 10:02:09 +01:00
Mark Roszko 9b1b2c626a Fix MSVC build error for VC 17.13+
(cherry picked from commit 7eb07c00a2)

50171749 Fix MSVC build in 17.13.2

Co-authored-by: Jan Wichmann <j-wichmann@gmx.net>
2025-02-27 23:41:53 +00:00
Jon Evans ff74d7b24a More safety against corrupted visibility settings
(cherry picked from commit 1205464472)
2025-02-27 18:18:40 -05:00
Jeff Young 9a3ae62b70 Clarifying comments. 2025-02-27 17:51:34 +00:00
Jeff Young 2e17848d3f Don't use connectivity system for Track & Via Properties dialog.
It will propagate through zones, and since we haven't
yet done a refill it will pick up a bunch of false
stuff any time the track was widened more than the
clearance.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20084

(cherry picked from commit 888cbf8e7a)
2025-02-27 17:51:34 +00:00
Jeff Young 36b4bab5cc Cleanup.
(cherry picked from commit 931b1b0231)
2025-02-27 17:51:34 +00:00
Jeff Young 3a91fc8c2b Apply EEschema fixes to PCBNew and Footprint Editor.
(Symbol Editor doesn't have the issue of the properties
being overwritten.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20066

(cherry picked from commit 797de67c6c)
2025-02-27 17:51:34 +00:00
Jeff Young f4f92b0184 Treat changes in solder mask like a width change.
Also in theory keeps from losing tenting properties
on vias that are shoved, though I can't get via
shoving to work at all right now.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20085

(cherry picked from commit 144e660684)
2025-02-27 17:51:34 +00:00
Jeff Young 87532491e1 Formatting.
(cherry picked from commit 8e461941c0)
2025-02-27 17:51:34 +00:00
Wayne Stambaugh 5cdca70bf1 Show the correct footprint name on footprint filter mismatch ERC warning.
The lower case variant used for internal comparison was being used which
is confusing because it doesn't match the footprint name capitalization.

(cherry picked from commit a9cea9fbb7)
2025-02-27 09:54:06 -05:00
Wayne Stambaugh cb7ea2f117 Fix git clone project dialog layout issues.
Use enable/disable instead of show/hide to prevent large areas of blank
space in the dialog.

Set the minimum dialog size after the initial launch to prevent controls
from being cut off when resizing dialog to less than the initial size.

Fix static and dialog title bar string capitalization.

Add colons (:) to the end of description static text controls as is done
elsewhere in KiCad.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20045

(cherry picked from commit f538908f62)
2025-02-27 09:20:13 -05:00
jean-pierre charras 1c0769ce27 Eeschema: fix incorrect plot of SCH_TABLE items.
(cherry picked from commit ba85c54f81)
2025-02-27 14:12:08 +01:00
Seth Hillbrand c7afa8ce87 Fix windows build
(cherry picked from commit 9211136953)
2025-02-26 18:15:44 -08:00
Seth Hillbrand cc2ca441fa 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

(cherry picked from commit 5027a562e4)
2025-02-26 16:17:49 -08:00
Seth Hillbrand 8d1f1fd4f5 Fix git flicker on Windows
(cherry picked from commit aa1baec062)
2025-02-26 16:17:43 -08:00
Jon Evans 377476df1d Fix export SVG mode logic
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20089


(cherry picked from commit 52e86303c0)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-02-26 22:31:44 +00:00
jean-pierre charras 5465ff8143 PCB_DIM_XXX::updateGeometry(): protect against re-entrance.
After calling updateText(), updateGeometry() was sometimes re-run before the
current updateGeometry() was finished, thus creating a incorrect geometry
(duplicate items)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20076

(cherry picked from commit 7c067e25d9)
2025-02-26 21:07:06 +01:00
Jeff Young 969c28864f Apply List Hotkeys fix to Edit Hotkeys.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19989
2025-02-26 18:53:35 +00:00
Jeff Young fd202d7b8d Better alignment betweeen controls in Pad Properties. 2025-02-26 18:53:32 +00:00
Jeff Young 7e79a99cea There is no support (as yet) for layer-specific soldermask expansions.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20053
2025-02-26 18:53:29 +00:00
Jeff Young ad2c243220 Formatting. 2025-02-26 18:53:16 +00:00
Jeff Young fb02d02698 Don't exit DRC when one test passes.
Also adds handling for table cells.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20049

(cherry picked from commit fde4aac075)
2025-02-26 18:52:39 +00:00
Jeff Young a10ab54bf2 Formatting.
(cherry picked from commit 6ccacd232e)
2025-02-26 18:52:36 +00:00
Jeff Young 72454180c1 DRC_LAST is the last index, not the size.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20049

(cherry picked from commit 956875e2f4)
2025-02-26 18:51:34 +00:00
Alex Shvartzkop 5909fc1c8f Update translations 2025-02-26 20:15:45 +03:00
Wayne Stambaugh 82ead56d9a Fix zone manager dialog layout issues.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20046

(cherry picked from commit 4e4ebe536e)
2025-02-26 08:14:07 -05:00
Jon Evans 798e9999c2 Add missing change from previous commit
See b6aac93


(cherry picked from commit de160e4af6)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-02-26 04:42:19 +00:00
Jon Evans a752dd5105 Fix creation of Altium compound files from IntLibs
A previous change introduced an invalid cast from
base to derived class.  To clean this up, changed
DecodeIntLibStream to have an out param and allow
two-step initialization of ALTIUM_COMPOUND_FILE

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20099


(cherry picked from commit b6aac9369e)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-02-26 03:34:49 +00:00
Jon Evans da8dcab1de Fix logic in via high contrast LOD calculation
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20093


(cherry picked from commit 41f5750be7)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-02-26 01:59:51 +00:00
Jon Evans b707b305ac API: Add board origin setter/getter
See https://gitlab.com/kicad/code/kicad-python/-/issues/20


(cherry picked from commit 5cec2fac9d)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-02-26 01:14:01 +00:00
Seth Hillbrand 038b927cfa 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

(cherry picked from commit 2c54ab277b)
2025-02-25 16:09:56 -08:00
Alex Shvartzkop bdd4a88127 Simplify layer list update in PANEL_SETUP_LAYERS. 2025-02-25 23:43:48 +03:00
Alex Shvartzkop f60313367c Fix scrollbars not appearing in Appearance layers panel after board import. 2025-02-25 23:39:59 +03:00
Alex Shvartzkop a4e2d54221 Fix scrollbars not appearing initially in PANEL_SETUP_LAYERS. 2025-02-25 23:22:20 +03:00
Alex Shvartzkop 8ef8ca4d39 Auto-size PANEL_SETUP_LAYERS_BASE.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20106
2025-02-25 23:20:58 +03:00
Jon Evans ae0396ee3c API: Add new user layers
See https://gitlab.com/kicad/code/kicad-python/-/issues/23


(cherry picked from commit c4c1842bc4)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-02-25 00:30:37 +00:00
Damjan b97bd36b44 pcbnew: Table Rotation
(cherry picked from commit 5771467ca3)
2025-02-24 11:57:26 +00:00
Jon Evans f3523b6ad9 Re-add accidentally removed increment
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20069


(cherry picked from commit 4123f75d5a)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-02-24 03:42:04 +00:00
Jon Evans 0fccad7183 PCM: Prompt to enable IPC API when required
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20062


(cherry picked from commit 3525731a4e)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-02-23 23:07:30 +00:00
Damjan 337689a69e pcbnew: Table Cell Text Justification
(cherry picked from commit 9c6ebb44b6)
2025-02-23 22:15:40 +00:00
Jeff Young a3e3c0384e Mirror location of textbox.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20021
2025-02-23 22:08:48 +00:00
Jeff Young 36924926de Filled shapes can still have a border width. 2025-02-23 22:08:48 +00:00
Jeff Young ec1353168b Better namespacing.
Also fixes a bug with calculating eagle annular
ring sizes.
2025-02-23 22:08:48 +00:00
Jeff Young 1712f5f8e7 Cleanup stale comment. 2025-02-23 22:08:48 +00:00
Jeff Young 6485465301 Fix plot dialog layout. 2025-02-23 22:08:48 +00:00
Jon Evans 87f7ed7846 Clear render cache for hole walls on zoom change
(cherry picked from commit bacb6bf40f)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-02-23 18:04:27 +00:00
Jon Evans f8993933a9 Do not persist canvas type fallback due to OpenGL failure
If the user wants to always use fallback,
they can set this option explicitly


(cherry picked from commit 0e8934f887)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-02-23 18:04:16 +00:00
Seth Hillbrand b135491d35 Allow sim models to reference embedded files
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20024

(cherry picked from commit 157c7422b0)
2025-02-22 14:54:38 -08:00
Seth Hillbrand 2aa9d4851e Limit the size of the PTH hole walls
Should always be at least 2px thick but no larger than the minimum
thickness of the pad (walls do not extend beyond the pad itself)

(cherry picked from commit b02a449be8)
2025-02-22 14:54:38 -08:00
Jon Evans 4cd8833687 API: Refresh screen after changing selection
Required on Linux/Windows

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20008


(cherry picked from commit d29025ef78)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-02-22 21:01:52 +00:00
Connor Goss 870807fbad Add IPC-D-356 Export to kicad-cli
ADDED: Added IPC-D-356 exporting to kicad-cli.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/13951

(cherry picked from commit 5a5759c41a)
2025-02-22 13:01:22 -08:00
Seth Hillbrand a844554443 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.

(cherry picked from commit 878cf768d6)
2025-02-22 13:01:16 -08:00
Jon Evans d6f10f9f88 Remove accidentally-added tree
(cherry picked from commit 5abfdac639)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-02-22 19:44:16 +00:00
Jon Evans dcc09a9e77 Improvements to kicad-cli test repeatability
(cherry picked from commit ca21a35bfc)
2025-02-22 14:08:55 -05:00
jean-pierre charras 45bb1da77a pcb_calculator, STRIPLINE: fix incorrect formula for conductor loss.
(cherry picked from commit fc9795e95d)
2025-02-22 17:09:16 +01:00
Jon Evans a153e4fc63 Enhance library pinning functionality to support pin/unpin multiple libraries in the library editor
(cherry picked from commit c7aaf8b6e1)

Co-authored-by: Dmitry Rezvanov <26044988+Misaka0x2730@users.noreply.github.com>
2025-02-22 15:45:55 +00:00
JamesJCode f3371f9c21 Fix m_zoneLayerOverrides data race in pad.h
From Coverity issue 542093

(cherry picked from commit 1e84d1e496)
2025-02-22 14:59:39 +00:00
Jon Evans 8a3086652a Added enum COL_ORDER for jobset panel's columns
(cherry picked from commit ee614161d7)

Co-authored-by: Dmitry Rezvanov <dmitry.rezvanov@yandex.ru>
2025-02-22 14:07:51 +00:00
Jon Evans 2103f303b7 Fixed description column number in PANEL_JOBSET::OnGridCellChange.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20030


(cherry picked from commit 0c2a5b72ec)

Co-authored-by: Dmitry Rezvanov <dmitry.rezvanov@yandex.ru>
2025-02-22 14:07:42 +00:00
Jon Evans 17cac94c6a Make sure drill layer pairs are created in odb++
fixes #20039


(cherry picked from commit 255f4aee76)

Co-authored-by: Daniel Treffenstädt <d.treffenstaedt@gmail.com>
2025-02-22 13:35:14 +00:00
Seth Hillbrand c4c32aa7bb Prevent crash when importing over existing project
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

(cherry picked from commit 2e93fb7a24)
2025-02-21 10:34:53 -08:00
Graham Keeth 8162896bd5 Embedded files: standardize on "embedded reference"
(cherry picked from commit ac9f41baaa)
2025-02-21 10:16:21 -08:00
jean-pierre charras 92a605385b kicad-cli pcb export SVG: ensure the "C" locale is used.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20023

(cherry picked from commit aafe6157e2)
2025-02-21 17:55:15 +01:00
jean-pierre charras b948611c6f PANEL_FP_EDITOR_FIELD_DEFAULTS: fix hang when creating the panel (Windows only)
PANEL_FP_EDITOR_FIELD_DEFAULTS::loadFPSettings() was trying to add 0 rows to a
table which hang on Windows (but not on linux)

(cherry picked from commit 22a2cca312)
2025-02-21 17:10:17 +01:00
Jeff Young ba2156a0f1 parseMaybeAbsentBool's param is the naked token value, not the absent value.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20017
2025-02-21 11:17:03 +00:00
jean-pierre charras 966c7e40e5 PCB_TABLE: fix incorrect plot of tables rotated +-90 (missing segments).
This change was missing in commit 276029ee

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19985

(cherry picked from commit a9fb475cf2)
2025-02-21 09:52:02 +01:00
Jon Evans 89b4adc042 API: Add serialization of footprint mounting style
See https://gitlab.com/kicad/code/kicad-python/-/issues/19


(cherry picked from commit b932487f2e)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2025-02-20 23:16:55 +00:00
Jeff Young ff3687420f Write hide flag at 9.0 level (inside effects). 2025-02-20 18:10:23 +00:00
Jeff Young 7aafe9efe9 Make sure protobuf API stays consistent.
(cherry picked from commit a8a1b08013)
2025-02-20 17:48:09 +00:00
Jeff Young e6f6e7b2f0 Cleanup.
(cherry picked from commit 9ca9d7120a)
2025-02-20 17:48:06 +00:00
Jeff Young 68b590cadb Load actions from frame's actionmanager, not from singleton.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19989

(cherry picked from commit 6b3d01ead9)
2025-02-20 13:49:41 +00:00
Jeff Young 1ec7051f97 Fix comment.
(cherry picked from commit a00aeb7876)
2025-02-20 13:49:37 +00:00
Jeff Young 866a5722f6 Formatting.
(cherry picked from commit e018a33628)
2025-02-20 13:49:34 +00:00
Jeff Young 4e7da6169d Remove prohibition from clearing Value field in Symbol Fields Table.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19745

(cherry picked from commit fea659a002)
2025-02-20 13:49:23 +00:00
Jeff Young ebb8682dde Don't special case output directory label for jobsets.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19868

(cherry picked from commit be58dddcab)
2025-02-20 13:49:17 +00:00
Jeff Young 812bbe8919 Ignore negative layers when exporting Gerbers.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16871

(cherry picked from commit 6a3f52dbaf)
2025-02-20 13:47:55 +00:00
Jeff Young fd2932bc06 Better way of determining if we're reporting from the footprint editor.
(cherry picked from commit c136df247f)
2025-02-20 13:47:50 +00:00
Jeff Young 1b6621d898 Save copy of AUI config before applying it.
(It's going to do a bunch config saves, which
will otherwise overwrite all the user's preferences
with the defaults.)

(cherry picked from commit 006d8b290a)
2025-02-20 13:47:46 +00:00
Jeff Young 4aa11830e4 Write flipBoard boolean to JSON.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19852

(cherry picked from commit c8f56f24a8)
2025-02-20 13:47:14 +00:00
Jeff Young 91f5096ecc Improve control spacing.
(cherry picked from commit 4e08afd517)
2025-02-20 13:47:12 +00:00
Jeff Young 4dbf39743b No connections AND no-net is not an error
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19737

(cherry picked from commit 1ff0dfb052)
2025-02-20 13:46:31 +00:00
Jeff Young c7d62a23be Check for duplicate footprints.
Also fixes a bug where we were running Validate()
twice.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19857

(cherry picked from commit c28039556d)
2025-02-20 13:46:27 +00:00
Jeff Young b81f0b4377 Pretty-print cross references in Symbol Fields Table.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19941

(cherry picked from commit f65d260961)
2025-02-20 13:46:22 +00:00
Jeff Young f45e2b2252 Switch to using unit names in property inspector.
(cherry picked from commit d921a4e916)
2025-02-20 13:37:37 +00:00
Jeff Young db44690460 Update instance reference from property inspector.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19932

(cherry picked from commit 56b8fec74b)
2025-02-20 13:37:33 +00:00
Jeff Young f8c0109c6e Improve code clarity.
(No functional change.)

(cherry picked from commit 1c848bb9fb)
2025-02-20 13:37:29 +00:00
Jeff Young a60f0b3782 MOVED subtract-mask-from-silk to general section.
(Was Gerber-specific.)

(cherry picked from commit 80e7698131)
2025-02-20 13:37:25 +00:00
Jeff Young 7cc2b47d2e REMOVED force-plot-invisible-items.
It's dangerous as the router and DRC will have been
run without regard to invisible items.

(See #19420.)

(cherry picked from commit 4fa02690f8)
2025-02-20 13:37:22 +00:00
Jeff Young 71ebe394d5 Handle clipping silk to mask when there is more than one layer.
(cherry picked from commit b44261c2bd)
2025-02-20 13:18:38 +00:00
Jeff Young 9d27f5526c Cleanup stale comments.
(cherry picked from commit 4959b480c3)
2025-02-20 13:18:34 +00:00
Jeff Young bf1daeab64 Cleanup.
(cherry picked from commit 9c0214afc0)
2025-02-20 13:18:29 +00:00
Jeff Young 5693ba1432 Performance improvements for teardrop regeneration.
Avoid O(n^2) behaviour when deleting many
zones from the board zones list.

(cherry picked from commit 281aa74f30)
2025-02-20 13:18:26 +00:00
Jeff Young a60307340f Finish eradication of visibility flag on text items.
Import/read previously-hidden symbol/footprint
text items as hidden fields.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19875

(cherry picked from commit 5edae8250d)
2025-02-20 13:18:23 +00:00
Jeff Young 5a6793f9fb Formatting.
(cherry picked from commit cedb97c4c3)
2025-02-20 13:17:57 +00:00
Jeff Young b3463dce71 Don't allow creation of design blocks in recently used tree node.
(cherry picked from commit 759bfbca99)
2025-02-20 13:17:52 +00:00
Jeff Young 58b8e9736d Fix bugs in library existence checking, and add for symbol libs.
(cherry picked from commit 2a1b93a254)
2025-02-20 13:17:37 +00:00
Jeff Young a1dd583696 LIB_TREE_MODEL_ADAPTER is not symbol-specific.
(cherry picked from commit 4a35468301)
2025-02-20 13:17:31 +00:00
Jeff Young 6429246ce0 ADDED: 'Name' property for fields.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19706

(cherry picked from commit 426ac96bb7)
2025-02-20 13:15:58 +00:00
Jeff Young aaca5d820b Reduce cover types.
Also, don't use _ITEM for things that aren't EDA::ITEMs.

(cherry picked from commit bf34fe625c)
2025-02-20 13:15:52 +00:00
Jeff Young 2579165733 Resolve field references in symbol text items.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19983

(cherry picked from commit 61efe5be18)
2025-02-20 13:15:19 +00:00
Jeff Young 93fdd52d14 IPC-2581 has a hyphen in it.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19770

(cherry picked from commit 40daacbeeb)
2025-02-20 13:14:17 +00:00
Jeff Young 079636ad18 Fix inconsistent capitalisation.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19770

(cherry picked from commit 3fff89820d)
2025-02-20 13:14:13 +00:00
Jeff Young f6148f10e1 ADDED: support naked hyperlinks in tablecells and textboxes.
Also fix flickering due to IS_ROLLOVER flag getting
nuked.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18832

(cherry picked from commit 072d8d55fe)
2025-02-20 12:57:16 +00:00
Jeff Young 2a93af1348 Don't disable line styles on filled shapes.
It's too much trouble to figure out what the
user wants, and not always right even then.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19946

(cherry picked from commit 42acb62f6e)
2025-02-20 12:22:26 +00:00
Jeff Young ee2039b531 Auto-recognize URLs in SCH_FIELD and PCB_FIELD grids.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17066

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17745

(cherry picked from commit 3c71e7ab09)
2025-02-20 12:21:56 +00:00
dsa-t cc77cb4252 Vertically center text in cells in jobsets table.
(cherry picked from commit 0201e7286c)

Co-authored-by: Alex Shvartzkop <dudesuchamazing@gmail.com>
2025-02-20 11:39:00 +00:00
lucas 072a2b6305 Simulator: Bug fix quoting netnames for user defined signals
- Fixes issue: #18598
- Netnames that contained other netnames weren't quoted correctly
- E.g. /out1 and /out were in conflict in previous method
- Fixed formatting afted review

(cherry picked from commit 2559ac50a3)
2025-02-20 03:02:19 +00:00
Dmitry Rezvanov 3cae075945 Add "Route Selected From Other End" action to edit context menu
(cherry picked from commit 663f00da25)
2025-02-20 03:02:07 +00:00
Ian McInerney 900b6bfffb Ensure vme-wren demo is installed
(cherry picked from commit 0954f8ff76)
2025-02-20 03:01:28 +00:00
Andrej Valek 0c68ab4556 KiwayPlayer(FRAME_FOOTPRINT_CHOOSER): set window parent
The FRAME_FOOTPRINT_CHOOSER dialog is always a modal window, so it
requires to have an parent. Set parent in dialog_field_properties.

(cherry picked from commit 5e64f56d54)
2025-02-19 10:17:37 -08:00
Seth Hillbrand 1a41387a50 Properly handle Altium harnesses
Altium harnesses are imported as buses in KiCad, using bus aliases to
represent the harness elements

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16852

(cherry picked from commit cf2827c6ec)
2025-02-19 10:07:58 -08:00
Seth Hillbrand e602e0bdbd Speed up the time it takes to GeneratePaths
The loop processes nodes but skips those nodes that share the same
parent.  Because of this, we can get strong performance improvement from
caching gains by sorting the vector first by the parents so that the
inner loop is able to skip ahead without invalidating its cache

(cherry picked from commit 9781da51e1)
2025-02-19 10:05:45 -08:00
Seth Hillbrand f2e814c330 Prevent image duplication
Duplicate ancillary clipboard needs to be tested with the existence of
an image when pasting

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19973

(cherry picked from commit d2f780dfb4)
2025-02-19 10:04:44 -08:00
1612 changed files with 980607 additions and 534661 deletions
+1
View File
@@ -51,6 +51,7 @@ common/pcb_keywords.cpp
include/pcb_lexer.h
fp-info-cache
qa/tests/output/**
qa/tests/cli/output/**
# demo project auxiliary files
demos/**/*-bak
+4
View File
@@ -8,6 +8,7 @@ win64_build:
interruptible: false
image: registry.gitlab.com/kicad/kicad-ci/windows-build-image/ltsc2022-msvc:latest
variables:
VCPKG_BINARY_SOURCES: 'nuget,gitlab,readwrite'
# Switch the compressor to fastzip and reduce the compression level
FF_USE_FASTZIP: "true"
CACHE_COMPRESSION_LEVEL: "fast"
@@ -23,6 +24,7 @@ win64_build:
script:
- C:\builder\build.ps1 -Env -Arch x64
- $vcpkgCache=Join-Path -Path (Get-Location) -ChildPath ".vcpkgCache";$env:VCPKG_DEFAULT_BINARY_CACHE=$vcpkgCache;New-Item -ItemType Directory -Force -Path $vcpkgCache
- nuget.exe sources add -Name gitlab -Source "https://gitlab.com/api/v4/projects/27426693/packages/nuget/index.json" -UserName gitlab-ci-token -Password $env:CI_JOB_TOKEN
- mkdir -p build/windows -Force
- cd build/windows
- cmake `
@@ -34,6 +36,8 @@ win64_build:
-DKICAD_BUILD_PNS_DEBUG_TOOL=ON `
-DKICAD_USE_3DCONNEXION=ON `
-DVCPKG_BUILD_TYPE=debug `
-DVCPKG_INSTALL_OPTIONS="--x-abi-tools-use-exact-versions" `
-DVCPKG_OVERLAY_TRIPLETS="$Env:CI_PROJECT_DIR/tools/custom_vcpkg_triplets" `
../../
- cmake --build . 2>&1 | tee compilation_log.txt
- cd ../../
+2 -2
View File
@@ -1,7 +1,7 @@
build_doxygen_docker:
image: docker:stable
image: docker:24.0.5-cli
services:
- docker:dind
- docker:24.0.5-dind
stage: build
rules:
- if: $CI_PIPELINE_SOURCE == "schedule" && $SCHEDULED_JOB_NAME == "doxygen"
+7 -6
View File
@@ -141,12 +141,13 @@ S3D_CACHE::~S3D_CACHE()
SCENEGRAPH* S3D_CACHE::load( const wxString& aModelFile, const wxString& aBasePath,
S3D_CACHE_ENTRY** aCachePtr, const EMBEDDED_FILES* aEmbeddedFiles )
S3D_CACHE_ENTRY** aCachePtr,
std::vector<const EMBEDDED_FILES*> aEmbeddedFilesStack )
{
if( aCachePtr )
*aCachePtr = nullptr;
wxString full3Dpath = m_FNResolver->ResolvePath( aModelFile, aBasePath, aEmbeddedFiles );
wxString full3Dpath = m_FNResolver->ResolvePath( aModelFile, aBasePath, aEmbeddedFilesStack );
if( full3Dpath.empty() )
{
@@ -212,9 +213,9 @@ SCENEGRAPH* S3D_CACHE::load( const wxString& aModelFile, const wxString& aBasePa
SCENEGRAPH* S3D_CACHE::Load( const wxString& aModelFile, const wxString& aBasePath,
const EMBEDDED_FILES* aEmbeddedFiles )
std::vector<const EMBEDDED_FILES*> aEmbeddedFilesStack )
{
return load( aModelFile, aBasePath, nullptr, aEmbeddedFiles );
return load( aModelFile, aBasePath, nullptr, aEmbeddedFilesStack );
}
@@ -548,10 +549,10 @@ void S3D_CACHE::ClosePlugins()
S3DMODEL* S3D_CACHE::GetModel( const wxString& aModelFileName, const wxString& aBasePath,
const EMBEDDED_FILES* aEmbeddedFiles )
std::vector<const EMBEDDED_FILES*> aEmbeddedFilesStack )
{
S3D_CACHE_ENTRY* cp = nullptr;
SCENEGRAPH* sp = load( aModelFileName, aBasePath, &cp, aEmbeddedFiles );
SCENEGRAPH* sp = load( aModelFileName, aBasePath, &cp, aEmbeddedFilesStack );
if( !sp )
return nullptr;
+7 -5
View File
@@ -95,11 +95,12 @@ public:
*
* @param aModelFile is the partial or full path to the model to be loaded.
* @param aBasePath is the path to search for any relative files
* @param aEmbeddedFiles is a pointer to the embedded files list.
* @param aEmbeddedFilesStack is a list of pointers to the embedded files list. They will
* be searched from the front of the list.
* @return true if the model was successfully loaded, otherwise false.
*/
SCENEGRAPH* Load( const wxString& aModelFile, const wxString& aBasePath,
const EMBEDDED_FILES* aEmbeddedFiles );
std::vector<const EMBEDDED_FILES*> aEmbeddedFilesStack );
FILENAME_RESOLVER* GetResolver() noexcept;
@@ -128,11 +129,12 @@ public:
*
* @param aModelFileName is the full path to the model to be loaded.
* @param aBasePath is the path to search for any relative files.
* @param aEmbeddedFiles is a pointer to the embedded files list.
* @param aEmbeddedFilesStack is a stack of pointers to the embedded files lists. They will
* be searched from the bottom of the stack.
* @return is a pointer to the render data or NULL if not available.
*/
S3DMODEL* GetModel( const wxString& aModelFileName, const wxString& aBasePath,
const EMBEDDED_FILES* aEmbeddedFiles );
std::vector<const EMBEDDED_FILES*> aEmbeddedFilesStack );
/**
* Delete up old cache files in cache directory.
@@ -174,7 +176,7 @@ private:
// the real load function (can supply a cache entry pointer to member functions)
SCENEGRAPH* load( const wxString& aModelFile, const wxString& aBasePath,
S3D_CACHE_ENTRY** aCachePtr = nullptr,
const EMBEDDED_FILES* aEmbeddedFiles = nullptr );
std::vector<const EMBEDDED_FILES*> aEmbeddedFilesStack = {} );
/// Cache entries.
std::list< S3D_CACHE_ENTRY* > m_CacheList;
+113 -83
View File
@@ -91,7 +91,6 @@ BOARD_ADAPTER::BOARD_ADAPTER() :
m_IsPreviewer( false ),
m_board( nullptr ),
m_3dModelManager( nullptr ),
m_colors( nullptr ),
m_layerZcoordTop(),
m_layerZcoordBottom()
{
@@ -137,13 +136,14 @@ BOARD_ADAPTER::BOARD_ADAPTER() :
m_ECO1Color = SFVEC4F( 0.70, 0.10, 0.10, 1.0 );
m_ECO2Color = SFVEC4F( 0.70, 0.10, 0.10, 1.0 );
for( int ii = 0; ii < 45; ++ii )
m_UserDefinedLayerColor[ii] = SFVEC4F( 0.70, 0.10, 0.10, 1.0 );
m_platedPadsFront = nullptr;
m_platedPadsBack = nullptr;
m_offboardPadsFront = nullptr;
m_offboardPadsBack = nullptr;
m_frontPlatedPadAndGraphicPolys = nullptr;
m_backPlatedPadAndGraphicPolys = nullptr;
m_frontPlatedCopperPolys = nullptr;
m_backPlatedCopperPolys = nullptr;
@@ -229,11 +229,12 @@ void BOARD_ADAPTER::ReloadColorSettings() noexcept
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
PCBNEW_SETTINGS* cfg = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
COLOR_SETTINGS* colors = mgr.GetColorSettings( cfg ? cfg->m_ColorTheme : wxString( "" ) );
if( cfg )
if( colors )
{
m_colors = Pgm().GetSettingsManager().GetColorSettings( cfg->m_ColorTheme );
GetBoardEditorCopperLayerColors( cfg );
for( int layer = F_Cu; layer < PCB_LAYER_ID_COUNT; ++layer )
m_BoardEditorColors[ layer ] = colors->GetColor( layer );
}
}
@@ -262,7 +263,15 @@ bool BOARD_ADAPTER::Is3dLayerEnabled( PCB_LAYER_ID aLayer,
case Cmts_User: return aVisibilityFlags.test( LAYER_3D_USER_COMMENTS );
case Eco1_User: return aVisibilityFlags.test( LAYER_3D_USER_ECO1 );
case Eco2_User: return aVisibilityFlags.test( LAYER_3D_USER_ECO2 );
default: return m_board && m_board->IsLayerVisible( aLayer );
default:
{
int layer3D = MapPCBLayerTo3DLayer( aLayer );
if( layer3D != UNDEFINED_LAYER )
return aVisibilityFlags.test( layer3D );
return m_board && m_board->IsLayerVisible( aLayer );
}
}
}
@@ -465,39 +474,19 @@ void BOARD_ADAPTER::InitSettings( REPORTER* aStatusReporter, REPORTER* aWarningR
const float zpos_copperTop_back = m_layerZcoordTop[B_Cu];
const float zpos_copperTop_front = m_layerZcoordTop[F_Cu];
// Fill not copper layers zpos with a dummy position
// (m_layerZcoordTop[B_Cu]with a small margin)
// Some important layer position will be set later
for( int layer_id = 0; layer_id < PCB_LAYER_ID_COUNT; layer_id++ )
// Fill not copper layers zpos
for( int layer = 0; layer < PCB_LAYER_ID_COUNT; layer++ )
{
if( IsCopperLayer( (PCB_LAYER_ID)layer_id ) )
PCB_LAYER_ID layer_id = ToLAYER_ID( layer );
if( IsCopperLayer( layer_id ) )
continue;
m_layerZcoordBottom[(PCB_LAYER_ID)layer_id] = zpos_copperTop_back - 2.0f * zpos_offset;
m_layerZcoordTop[(PCB_LAYER_ID) layer_id] =
m_layerZcoordBottom[(PCB_LAYER_ID) layer_id] - m_backCopperThickness3DU;
}
// calculate z position for each technical layer
// Solder mask and Solder paste have the same Z position
for( PCB_LAYER_ID layer_id :
{ B_Adhes, B_Mask, B_Paste, F_Adhes, F_Mask, F_Paste, B_SilkS, F_SilkS } )
{
float zposTop = 0.0;
float zposBottom = 0.0;
float zposBottom;
float zposTop;
switch( layer_id )
{
case B_Adhes:
zposBottom = zpos_copperTop_back - 2.0f * zpos_offset;
zposTop = zposBottom - m_nonCopperLayerThickness3DU;
break;
case F_Adhes:
zposBottom = zpos_copperTop_front + 2.0f * zpos_offset;
zposTop = zposBottom + m_nonCopperLayerThickness3DU;
break;
case B_Mask:
zposBottom = zpos_copperTop_back;
zposTop = zpos_copperTop_back - m_nonCopperLayerThickness3DU;
@@ -529,6 +518,16 @@ void BOARD_ADAPTER::InitSettings( REPORTER* aStatusReporter, REPORTER* aWarningR
break;
default:
if( m_board->IsBackLayer( layer_id ) )
{
zposBottom = zpos_copperTop_back - 2.0f * zpos_offset;
zposTop = zposBottom - m_nonCopperLayerThickness3DU;
}
else
{
zposBottom = zpos_copperTop_front + 2.0f * zpos_offset;
zposTop = zposBottom + m_nonCopperLayerThickness3DU;
}
break;
}
@@ -580,6 +579,9 @@ void BOARD_ADAPTER::InitSettings( REPORTER* aStatusReporter, REPORTER* aWarningR
m_UserCommentsColor = to_SFVEC4F( colors[ LAYER_3D_USER_COMMENTS ] );
m_ECO1Color = to_SFVEC4F( colors[ LAYER_3D_USER_ECO1 ] );
m_ECO2Color = to_SFVEC4F( colors[ LAYER_3D_USER_ECO2 ] );
for( int layer = LAYER_3D_USER_1; layer <= LAYER_3D_USER_45; ++layer )
m_UserDefinedLayerColor[ layer - LAYER_3D_USER_1 ] = to_SFVEC4F( colors[ layer ] );
}
@@ -602,28 +604,15 @@ std::map<int, COLOR4D> BOARD_ADAPTER::GetDefaultColors() const
colors[ LAYER_3D_USER_ECO1 ] = BOARD_ADAPTER::g_DefaultECOs;
colors[ LAYER_3D_USER_ECO2 ] = BOARD_ADAPTER::g_DefaultECOs;
COLOR_SETTINGS* settings = Pgm().GetSettingsManager().GetColorSettings( wxEmptyString );
for( int layer = LAYER_3D_USER_1; layer <= LAYER_3D_USER_45; ++layer )
colors[ layer ] = settings->GetColor( layer );
return colors;
}
void BOARD_ADAPTER::GetBoardEditorCopperLayerColors( PCBNEW_SETTINGS* aCfg )
{
m_BoardEditorColors.clear();
if( m_copperLayersCount <= 0 )
return;
COLOR_SETTINGS* settings = Pgm().GetSettingsManager().GetColorSettings( aCfg->m_ColorTheme );
LSET copperLayers = LSET::AllCuMask();
for( auto layer : LAYER_RANGE( F_Cu, B_Cu, m_copperLayersCount ) )
{
m_BoardEditorColors[ layer ] = settings->GetColor( layer );
}
}
std::map<int, COLOR4D> BOARD_ADAPTER::GetLayerColors() const
{
std::map<int, COLOR4D> colors;
@@ -747,8 +736,13 @@ void BOARD_ADAPTER::SetLayerColors( const std::map<int, COLOR4D>& aColors )
COLOR_SETTINGS* settings = Pgm().GetSettingsManager().GetColorSettings();
for( const auto& [ layer, color ] : aColors )
{
settings->SetColor( layer, color );
if( layer >= LAYER_3D_USER_1 && layer <= LAYER_3D_USER_45 )
m_UserDefinedLayerColor[ layer - LAYER_3D_USER_1 ] = GetColor( color );
}
Pgm().GetSettingsManager().SaveColorSettings( settings, "3d_viewer" );
}
@@ -769,6 +763,9 @@ void BOARD_ADAPTER::SetVisibleLayers( const std::bitset<LAYER_3D_END>& aLayers )
m_Cfg->m_Render.show_eco1 = aLayers.test( LAYER_3D_USER_ECO1 );
m_Cfg->m_Render.show_eco2 = aLayers.test( LAYER_3D_USER_ECO2 );
for( int layer = LAYER_3D_USER_1; layer <= LAYER_3D_USER_45; ++layer )
m_Cfg->m_Render.show_user[ layer - LAYER_3D_USER_1 ] = aLayers.test( layer );
m_Cfg->m_Render.show_footprints_normal = aLayers.test( LAYER_3D_TH_MODELS );
m_Cfg->m_Render.show_footprints_insert = aLayers.test( LAYER_3D_SMD_MODELS );
m_Cfg->m_Render.show_footprints_virtual = aLayers.test( LAYER_3D_VIRTUAL_MODELS );
@@ -789,6 +786,46 @@ std::bitset<LAYER_3D_END> BOARD_ADAPTER::GetVisibleLayers() const
{
std::bitset<LAYER_3D_END> ret;
if( m_IsPreviewer )
{
if( m_Cfg->m_Render.preview_show_board_body )
{
ret.set( LAYER_3D_BOARD, m_Cfg->m_Render.show_board_body );
ret.set( LAYER_3D_SOLDERMASK_TOP, m_Cfg->m_Render.show_soldermask_top );
ret.set( LAYER_3D_SOLDERMASK_BOTTOM, m_Cfg->m_Render.show_soldermask_bottom );
ret.set( LAYER_3D_SOLDERPASTE, m_Cfg->m_Render.show_solderpaste );
ret.set( LAYER_3D_ADHESIVE, m_Cfg->m_Render.show_adhesive );
}
ret.set( LAYER_3D_COPPER_TOP, true );
ret.set( LAYER_3D_COPPER_BOTTOM, true );
ret.set( LAYER_3D_SILKSCREEN_TOP, true );
ret.set( LAYER_3D_SILKSCREEN_BOTTOM, true );
ret.set( LAYER_3D_USER_COMMENTS, true );
ret.set( LAYER_3D_USER_DRAWINGS, true );
ret.set( LAYER_3D_USER_ECO1, true );
ret.set( LAYER_3D_USER_ECO2, true );
for( int layer = LAYER_3D_USER_1; layer <= LAYER_3D_USER_45; ++layer )
ret.set( layer, true );
ret.set( LAYER_FP_REFERENCES, true );
ret.set( LAYER_FP_VALUES, true );
ret.set( LAYER_FP_TEXT, true );
ret.set( LAYER_3D_TH_MODELS, true );
ret.set( LAYER_3D_SMD_MODELS, true );
ret.set( LAYER_3D_VIRTUAL_MODELS, true );
ret.set( LAYER_3D_MODELS_NOT_IN_POS, true );
ret.set( LAYER_3D_MODELS_MARKED_DNP, true );
ret.set( LAYER_3D_BOUNDING_BOXES, m_Cfg->m_Render.show_model_bbox );
ret.set( LAYER_3D_OFF_BOARD_SILK, m_Cfg->m_Render.show_off_board_silk );
ret.set( LAYER_3D_AXES, m_Cfg->m_Render.show_axis );
return ret;
}
ret.set( LAYER_3D_BOARD, m_Cfg->m_Render.show_board_body );
ret.set( LAYER_3D_COPPER_TOP, m_Cfg->m_Render.show_copper_top );
ret.set( LAYER_3D_COPPER_BOTTOM, m_Cfg->m_Render.show_copper_bottom );
@@ -803,6 +840,9 @@ std::bitset<LAYER_3D_END> BOARD_ADAPTER::GetVisibleLayers() const
ret.set( LAYER_3D_USER_ECO1, m_Cfg->m_Render.show_eco1 );
ret.set( LAYER_3D_USER_ECO2, m_Cfg->m_Render.show_eco2 );
for( int layer = LAYER_3D_USER_1; layer <= LAYER_3D_USER_45; ++layer )
ret.set( layer, m_Cfg->m_Render.show_user[ layer - LAYER_3D_USER_1 ] );
ret.set( LAYER_FP_REFERENCES, m_Cfg->m_Render.show_fp_references );
ret.set( LAYER_FP_VALUES, m_Cfg->m_Render.show_fp_values );
ret.set( LAYER_FP_TEXT, m_Cfg->m_Render.show_fp_text );
@@ -845,7 +885,10 @@ std::bitset<LAYER_3D_END> BOARD_ADAPTER::GetVisibleLayers() const
return ret;
const PCB_PLOT_PARAMS& plotParams = m_board->GetPlotOptions();
LSET layers = plotParams.GetLayerSelection() | plotParams.GetPlotOnAllLayersSelection();
LSET layers = plotParams.GetLayerSelection();
for( PCB_LAYER_ID commonLayer : plotParams.GetPlotOnAllLayersSequence() )
layers.set( commonLayer );
ret.set( LAYER_3D_BOARD, true );
ret.set( LAYER_3D_COPPER_TOP, layers.test( F_Cu ) );
@@ -861,6 +904,9 @@ std::bitset<LAYER_3D_END> BOARD_ADAPTER::GetVisibleLayers() const
ret.set( LAYER_3D_USER_ECO1, layers.test( Eco1_User ) );
ret.set( LAYER_3D_USER_ECO2, layers.test( Eco2_User ) );
for( int layer = LAYER_3D_USER_1; layer <= LAYER_3D_USER_45; ++layer )
ret.set( layer, layers.test( Map3DLayerToPCBLayer( layer ) ) );
ret.set( LAYER_FP_REFERENCES, plotParams.GetPlotReference() );
ret.set( LAYER_FP_VALUES, plotParams.GetPlotValue() );
ret.set( LAYER_FP_TEXT, plotParams.GetPlotFPText() );
@@ -869,26 +915,6 @@ std::bitset<LAYER_3D_END> BOARD_ADAPTER::GetVisibleLayers() const
{
ret = preset->layers;
}
else
{
ret.set( LAYER_3D_BOARD, m_Cfg->m_Render.show_board_body );
ret.set( LAYER_3D_COPPER_TOP, m_Cfg->m_Render.show_copper_top );
ret.set( LAYER_3D_COPPER_BOTTOM, m_Cfg->m_Render.show_copper_bottom );
ret.set( LAYER_3D_SILKSCREEN_TOP, m_Cfg->m_Render.show_silkscreen_top );
ret.set( LAYER_3D_SILKSCREEN_BOTTOM, m_Cfg->m_Render.show_silkscreen_bottom );
ret.set( LAYER_3D_SOLDERMASK_TOP, m_Cfg->m_Render.show_soldermask_top );
ret.set( LAYER_3D_SOLDERMASK_BOTTOM, m_Cfg->m_Render.show_soldermask_bottom );
ret.set( LAYER_3D_SOLDERPASTE, m_Cfg->m_Render.show_solderpaste );
ret.set( LAYER_3D_ADHESIVE, m_Cfg->m_Render.show_adhesive );
ret.set( LAYER_3D_USER_COMMENTS, m_Cfg->m_Render.show_comments );
ret.set( LAYER_3D_USER_DRAWINGS, m_Cfg->m_Render.show_drawings );
ret.set( LAYER_3D_USER_ECO1, m_Cfg->m_Render.show_eco1 );
ret.set( LAYER_3D_USER_ECO2, m_Cfg->m_Render.show_eco2 );
ret.set( LAYER_FP_REFERENCES, m_Cfg->m_Render.show_fp_references );
ret.set( LAYER_FP_VALUES, m_Cfg->m_Render.show_fp_values );
ret.set( LAYER_FP_TEXT, m_Cfg->m_Render.show_fp_text );
}
return ret;
}
@@ -912,6 +938,9 @@ std::bitset<LAYER_3D_END> BOARD_ADAPTER::GetDefaultVisibleLayers() const
ret.set( LAYER_3D_USER_ECO1, false );
ret.set( LAYER_3D_USER_ECO2, false );
for( int layer = LAYER_3D_USER_1; layer <= LAYER_3D_USER_45; ++layer )
ret.set( layer, false );
ret.set( LAYER_FP_REFERENCES, true );
ret.set( LAYER_FP_VALUES, true );
ret.set( LAYER_FP_TEXT, true );
@@ -930,6 +959,12 @@ std::bitset<LAYER_3D_END> BOARD_ADAPTER::GetDefaultVisibleLayers() const
}
bool BOARD_ADAPTER::GetUseBoardEditorCopperLayerColors() const
{
return m_Cfg->m_Render.use_board_editor_copper_colors && !m_board->IsFootprintHolder();
}
bool BOARD_ADAPTER::createBoardPolygon( wxString* aErrorMsg )
{
m_board_poly.RemoveAllContours();
@@ -992,19 +1027,14 @@ float BOARD_ADAPTER::GetFootprintZPos( bool aIsFlipped ) const
}
SFVEC4F BOARD_ADAPTER::GetLayerColor( PCB_LAYER_ID aLayerId ) const
SFVEC4F BOARD_ADAPTER::GetLayerColor( int aLayerId ) const
{
if( aLayerId >= LAYER_3D_USER_1 && aLayerId <= LAYER_3D_USER_45 )
aLayerId = Map3DLayerToPCBLayer( aLayerId );
wxASSERT( aLayerId < PCB_LAYER_ID_COUNT );
const COLOR4D color = m_colors->GetColor( aLayerId );
return SFVEC4F( color.r, color.g, color.b, color.a );
}
SFVEC4F BOARD_ADAPTER::GetItemColor( int aItemId ) const
{
return GetColor( m_colors->GetColor( aItemId ) );
return GetColor( m_BoardEditorColors.at( aLayerId ) );
}
+9 -22
View File
@@ -112,11 +112,6 @@ public:
*/
std::map<int, COLOR4D> GetLayerColors() const;
/**
* Build the copper color list used by the board editor, and store it in m_BoardEditorColors
*/
void GetBoardEditorCopperLayerColors( PCBNEW_SETTINGS* aCfg );
std::map<int, COLOR4D> GetDefaultColors() const;
void SetLayerColors( const std::map<int, COLOR4D>& aColors );
@@ -124,6 +119,8 @@ public:
std::bitset<LAYER_3D_END> GetDefaultVisibleLayers() const;
void SetVisibleLayers( const std::bitset<LAYER_3D_END>& aLayers );
bool GetUseBoardEditorCopperLayerColors() const;
/**
* Function to be called by the render when it need to reload the settings for the board.
*
@@ -210,15 +207,7 @@ public:
* @param aLayerId the layer to get the color information.
* @return the color in SFVEC3F format.
*/
SFVEC4F GetLayerColor( PCB_LAYER_ID aLayerId ) const;
/**
* Get the technical color of a layer.
*
* @param aItemId the item id to get the color information.
* @return the color in SFVEC3F format.
*/
SFVEC4F GetItemColor( int aItemId ) const;
SFVEC4F GetLayerColor( int aLayerId ) const;
/**
* @param[in] aColor is the color mapped.
@@ -352,14 +341,14 @@ public:
*/
const MAP_POLY& GetPolyMap() const noexcept { return m_layers_poly; }
const SHAPE_POLY_SET* GetFrontPlatedPadAndGraphicPolys()
const SHAPE_POLY_SET* GetFrontPlatedCopperPolys()
{
return m_frontPlatedPadAndGraphicPolys;
return m_frontPlatedCopperPolys;
}
const SHAPE_POLY_SET* GetBackPlatedPadAndGraphicPolys()
const SHAPE_POLY_SET* GetBackPlatedCopperPolys()
{
return m_backPlatedPadAndGraphicPolys;
return m_backPlatedCopperPolys;
}
const MAP_POLY& GetHoleIdPolysMap() const noexcept { return m_layerHoleIdPolys; }
@@ -386,7 +375,7 @@ private:
int aInflateValue );
void addPads( const FOOTPRINT* aFootprint, CONTAINER_2D_BASE* aDstContainer,
PCB_LAYER_ID aLayerId, bool aSkipPlatedPads, bool aSkipNonPlatedPads );
PCB_LAYER_ID aLayerId );
void addFootprintShapes( const FOOTPRINT* aFootprint, CONTAINER_2D_BASE* aDstContainer,
PCB_LAYER_ID aLayerId,
@@ -455,6 +444,7 @@ public:
SFVEC4F m_UserCommentsColor;
SFVEC4F m_ECO1Color;
SFVEC4F m_ECO2Color;
SFVEC4F m_UserDefinedLayerColor[45];
std::map<int, COLOR4D> m_ColorOverrides; ///< allows to override color scheme colors
std::map<int, COLOR4D> m_BoardEditorColors; ///< list of colors used by the board editor
@@ -462,7 +452,6 @@ public:
private:
BOARD* m_board;
S3D_CACHE* m_3dModelManager;
COLOR_SETTINGS* m_colors;
VECTOR2I m_boardPos; ///< Board center position in board internal units.
VECTOR2I m_boardSize; ///< Board size in board internal units.
@@ -472,8 +461,6 @@ private:
MAP_POLY m_layers_poly; ///< Amalgamated polygon contours for various types
///< of items
SHAPE_POLY_SET* m_frontPlatedPadAndGraphicPolys;
SHAPE_POLY_SET* m_backPlatedPadAndGraphicPolys;
SHAPE_POLY_SET* m_frontPlatedCopperPolys;
SHAPE_POLY_SET* m_backPlatedCopperPolys;
@@ -188,23 +188,23 @@ void BOARD_ADAPTER::addShape( const PCB_DIMENSION_BASE* aDimension, CONTAINER_2D
void BOARD_ADAPTER::addFootprintShapes( const FOOTPRINT* aFootprint, CONTAINER_2D_BASE* aContainer,
PCB_LAYER_ID aLayerId,
const std::bitset<LAYER_3D_END>& aVisibilityFlags )
const std::bitset<LAYER_3D_END>& aFlags )
{
KIGFX::GAL_DISPLAY_OPTIONS empty_opts;
for( PCB_FIELD* field : aFootprint->GetFields() )
for( PCB_FIELD* field : aFootprint->GetFields( true /* visibleOnly */ ) )
{
if( field->GetLayer() == aLayerId && field->IsVisible() )
{
if( !aVisibilityFlags.test( LAYER_FP_TEXT ) )
continue;
else if( field->IsReference() && !aVisibilityFlags.test( LAYER_FP_REFERENCES ) )
continue;
else if( field->IsValue() && !aVisibilityFlags.test( LAYER_FP_VALUES ) )
continue;
if( !aFlags.test( LAYER_FP_TEXT ) )
continue;
if( field->IsReference() && !aFlags.test( LAYER_FP_REFERENCES ) )
continue;
if( field->IsValue() && !aFlags.test( LAYER_FP_VALUES ) )
continue;
if( field->GetLayer() == aLayerId )
addText( field, aContainer, field );
}
}
for( BOARD_ITEM* item : aFootprint->GraphicalItems() )
@@ -215,19 +215,17 @@ void BOARD_ADAPTER::addFootprintShapes( const FOOTPRINT* aFootprint, CONTAINER_2
{
PCB_TEXT* text = static_cast<PCB_TEXT*>( item );
if( text->GetLayer() == aLayerId && text->IsVisible() )
{
if( !aVisibilityFlags.test( LAYER_FP_TEXT ) )
continue;
else if( text->GetText() == wxT( "${REFERENCE}" )
&& !aVisibilityFlags.test( LAYER_FP_REFERENCES ) )
continue;
else if( text->GetText() == wxT( "${VALUE}" )
&& !aVisibilityFlags.test( LAYER_FP_VALUES ) )
continue;
if( !aFlags.test( LAYER_FP_TEXT ) )
continue;
if( text->GetText() == wxT( "${REFERENCE}" ) && !aFlags.test( LAYER_FP_REFERENCES ) )
continue;
if( text->GetText() == wxT( "${VALUE}" ) && !aFlags.test( LAYER_FP_VALUES ) )
continue;
if( text->GetLayer() == aLayerId )
addText( text, aContainer, text );
}
break;
}
@@ -283,7 +281,7 @@ void BOARD_ADAPTER::addFootprintShapes( const FOOTPRINT* aFootprint, CONTAINER_2
}
void BOARD_ADAPTER::createTrackWithMargin( const PCB_TRACK* aTrack,
void BOARD_ADAPTER::createTrackWithMargin( const PCB_TRACK* aTrack,
CONTAINER_2D_BASE* aDstContainer, PCB_LAYER_ID aLayer,
int aMargin )
{
@@ -505,7 +503,7 @@ void BOARD_ADAPTER::createPadWithHole( const PAD* aPad, CONTAINER_2D_BASE* aDstC
void BOARD_ADAPTER::addPads( const FOOTPRINT* aFootprint, CONTAINER_2D_BASE* aContainer,
PCB_LAYER_ID aLayerId, bool aSkipPlatedPads, bool aSkipNonPlatedPads )
PCB_LAYER_ID aLayerId )
{
for( PAD* pad : aFootprint->Pads() )
{
@@ -529,24 +527,6 @@ void BOARD_ADAPTER::addPads( const FOOTPRINT* aFootprint, CONTAINER_2D_BASE* aCo
switch( aLayerId )
{
case F_Cu:
if( aSkipPlatedPads && pad->FlashLayer( F_Mask ) )
continue;
if( aSkipNonPlatedPads && !pad->FlashLayer( F_Mask ) )
continue;
break;
case B_Cu:
if( aSkipPlatedPads && pad->FlashLayer( B_Mask ) )
continue;
if( aSkipNonPlatedPads && !pad->FlashLayer( B_Mask ) )
continue;
break;
case F_Mask:
case B_Mask:
margin.x += pad->GetSolderMaskExpansion( aLayerId );
@@ -793,11 +773,18 @@ void BOARD_ADAPTER::addShape( const PCB_TEXTBOX* aTextBox, CONTAINER_2D_BASE* aC
void BOARD_ADAPTER::addTable( const PCB_TABLE* aTable, CONTAINER_2D_BASE* aContainer,
const BOARD_ITEM* aOwner )
{
// JEY TODO: tables
// add borders
aTable->DrawBorders(
[&]( const VECTOR2I& ptA, const VECTOR2I& ptB, const STROKE_PARAMS& stroke )
{
addROUND_SEGMENT_2D( aContainer, TO_SFVEC2F( ptA ), TO_SFVEC2F( ptB ),
TO_3DU( stroke.GetWidth() ), *aOwner );
} );
for( PCB_TABLECELL* cell : aTable->GetCells() )
addText( cell, aContainer, aOwner );
{
if( cell->GetColSpan() > 0 && cell->GetRowSpan() > 0 )
addText( cell, aContainer, aOwner );
}
}
+247 -144
View File
@@ -103,6 +103,68 @@ void transformFPShapesToPolySet( const FOOTPRINT* aFootprint, PCB_LAYER_ID aLaye
}
void transformFPTextToPolySet( const FOOTPRINT* aFootprint, PCB_LAYER_ID aLayer,
const std::bitset<LAYER_3D_END>& aFlags, SHAPE_POLY_SET& aBuffer,
int aMaxError, ERROR_LOC aErrorLoc )
{
for( BOARD_ITEM* item : aFootprint->GraphicalItems() )
{
if( item->GetLayer() != aLayer )
continue;
if( item->Type() == PCB_TEXT_T )
{
PCB_TEXT* text = static_cast<PCB_TEXT*>( item );
if( !aFlags.test( LAYER_FP_TEXT ) )
continue;
if( text->GetText() == wxT( "${REFERENCE}" ) && !aFlags.test( LAYER_FP_REFERENCES ) )
continue;
if( text->GetText() == wxT( "${VALUE}" ) && !aFlags.test( LAYER_FP_VALUES ) )
continue;
if( aLayer != UNDEFINED_LAYER && text->GetLayer() == aLayer )
text->TransformTextToPolySet( aBuffer, 0, aMaxError, aErrorLoc );
}
if( item->Type() == PCB_TEXTBOX_T )
{
PCB_TEXTBOX* textbox = static_cast<PCB_TEXTBOX*>( item );
if( aLayer != UNDEFINED_LAYER && textbox->GetLayer() == aLayer )
{
// border
if( textbox->IsBorderEnabled() )
{
textbox->PCB_SHAPE::TransformShapeToPolygon( aBuffer, aLayer, 0, aMaxError,
aErrorLoc );
}
// text
textbox->TransformTextToPolySet( aBuffer, 0, aMaxError, aErrorLoc );
}
}
}
for( const PCB_FIELD* field : aFootprint->GetFields( true /* visibleOnly */ ) )
{
if( !aFlags.test( LAYER_FP_TEXT ) )
continue;
if( field->IsReference() && !aFlags.test( LAYER_FP_REFERENCES ) )
continue;
if( field->IsValue() && !aFlags.test( LAYER_FP_VALUES ) )
continue;
if( field && field->GetLayer() == aLayer )
field->TransformTextToPolySet( aBuffer, 0, aMaxError, aErrorLoc );
}
}
void BOARD_ADAPTER::destroyLayers()
{
#define DELETE_AND_FREE( ptr ) \
@@ -121,8 +183,6 @@ void BOARD_ADAPTER::destroyLayers()
DELETE_AND_FREE_MAP( m_layers_poly );
DELETE_AND_FREE( m_frontPlatedPadAndGraphicPolys )
DELETE_AND_FREE( m_backPlatedPadAndGraphicPolys )
DELETE_AND_FREE( m_frontPlatedCopperPolys )
DELETE_AND_FREE( m_backPlatedCopperPolys )
@@ -240,8 +300,6 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
if( cfg.DifferentiatePlatedCopper() )
{
m_frontPlatedPadAndGraphicPolys = new SHAPE_POLY_SET;
m_backPlatedPadAndGraphicPolys = new SHAPE_POLY_SET;
m_frontPlatedCopperPolys = new SHAPE_POLY_SET;
m_backPlatedCopperPolys = new SHAPE_POLY_SET;
@@ -272,11 +330,8 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
continue;
// Skip vias annulus when not flashed on this layer
if( track->Type() == PCB_VIA_T
&& !static_cast<const PCB_VIA*>( track )->FlashLayer( layer ) )
{
if( track->Type() == PCB_VIA_T && !static_cast<const PCB_VIA*>( track )->FlashLayer( layer ) )
continue;
}
// Add object item to layer container
createTrackWithMargin( track, layerContainer, layer );
@@ -332,8 +387,7 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
}
// Add a hole for this layer
layerHoleContainer->Add( new FILLED_CIRCLE_2D( via_center,
hole_inner_radius + thickness,
layerHoleContainer->Add( new FILLED_CIRCLE_2D( via_center, hole_inner_radius + thickness,
*track ) );
}
else if( layer == layer_ids[0] ) // it only adds once the THT holes
@@ -542,54 +596,38 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
}
}
// Add footprints PADs objects to containers
// Add footprints copper items (pads, shapes and text) to containers
for( PCB_LAYER_ID layer : layer_ids )
{
wxASSERT( m_layerMap.find( layer ) != m_layerMap.end() );
BVH_CONTAINER_2D *layerContainer = m_layerMap[layer];
// ADD PADS
for( FOOTPRINT* footprint : m_board->Footprints() )
for( FOOTPRINT* fp : m_board->Footprints() )
{
addPads( footprint, layerContainer, layer, cfg.DifferentiatePlatedCopper(), false );
addPads( fp, layerContainer, layer );
addFootprintShapes( fp, layerContainer, layer, visibilityFlags );
// Micro-wave footprints may have items on copper layers
addFootprintShapes( footprint, layerContainer, layer, visibilityFlags );
}
}
// Add footprints PADs poly contours (vertical outlines)
if( cfg.opengl_copper_thickness && cfg.engine == RENDER_ENGINE::OPENGL )
{
for( PCB_LAYER_ID layer : layer_ids )
{
wxASSERT( m_layers_poly.find( layer ) != m_layers_poly.end() );
SHAPE_POLY_SET *layerPoly = m_layers_poly[layer];
// Add pads to polygon list
for( FOOTPRINT* footprint : m_board->Footprints() )
// Add copper item to the plated copper polygon list if required
if( cfg.DifferentiatePlatedCopper() && ( layer == F_Cu || layer == B_Cu ) )
{
// Note: NPTH pads are not drawn on copper layers when the pad has same shape as
// its hole
footprint->TransformPadsToPolySet( *layerPoly, layer, 0, maxError, ERROR_INSIDE,
true, cfg.DifferentiatePlatedCopper(), false );
SHAPE_POLY_SET* layerPoly = layer == F_Cu ? m_frontPlatedCopperPolys : m_backPlatedCopperPolys;
transformFPShapesToPolySet( footprint, layer, *layerPoly, maxError, ERROR_INSIDE );
fp->TransformPadsToPolySet( *layerPoly, layer, 0, maxError, ERROR_INSIDE, true );
transformFPTextToPolySet( fp, layer, visibilityFlags, *layerPoly, maxError, ERROR_INSIDE );
transformFPShapesToPolySet( fp, layer, *layerPoly, maxError, ERROR_INSIDE );
}
}
if( cfg.DifferentiatePlatedCopper() )
{
// ADD PLATED PADS contours
for( FOOTPRINT* footprint : m_board->Footprints() )
// Add copper item to poly contours (vertical outlines) if required
if( cfg.opengl_copper_thickness && cfg.engine == RENDER_ENGINE::OPENGL )
{
footprint->TransformPadsToPolySet( *m_frontPlatedPadAndGraphicPolys, F_Cu, 0, maxError,
ERROR_INSIDE, true, false, true );
wxASSERT( m_layers_poly.contains( layer ) );
footprint->TransformPadsToPolySet( *m_backPlatedPadAndGraphicPolys, B_Cu, 0, maxError,
ERROR_INSIDE, true, false, true );
SHAPE_POLY_SET* layerPoly = m_layers_poly[layer];
fp->TransformPadsToPolySet( *layerPoly, layer, 0, maxError, ERROR_INSIDE, true );
transformFPTextToPolySet( fp, layer, visibilityFlags, *layerPoly, maxError, ERROR_INSIDE );
transformFPShapesToPolySet( fp, layer, *layerPoly, maxError, ERROR_INSIDE );
}
}
}
@@ -633,60 +671,46 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
addShape( static_cast<PCB_DIMENSION_BASE*>( item ), layerContainer, item );
break;
case PCB_REFERENCE_IMAGE_T: // ignore
break;
default:
wxLogTrace( m_logTrace, wxT( "createLayers: item type: %d not implemented" ),
item->Type() );
wxLogTrace( m_logTrace, wxT( "createLayers: item type: %d not implemented" ), item->Type() );
break;
}
// add also this shape to the plated copper polygon list if required
if( cfg.DifferentiatePlatedCopper() )
// Add copper item to the plated copper polygon list if required
if( cfg.DifferentiatePlatedCopper() && ( layer == F_Cu || layer == B_Cu ) )
{
SHAPE_POLY_SET* copperPolys = layer == F_Cu ? m_frontPlatedCopperPolys : m_backPlatedCopperPolys;
// Note: for TEXT and TEXTBOX, TransformShapeToPolygon returns the bounding
// box shape, not the exact text shape. So it is not used for these items
if( layer == F_Cu || layer == B_Cu )
if( item->Type() == PCB_TEXTBOX_T )
{
SHAPE_POLY_SET* platedCopperPolys = layer == F_Cu
? m_frontPlatedCopperPolys
: m_backPlatedCopperPolys;
if( item->Type() == PCB_TEXTBOX_T )
{
PCB_TEXTBOX* text_box = static_cast<PCB_TEXTBOX*>( item );
text_box->TransformTextToPolySet( *platedCopperPolys,
0, maxError, ERROR_INSIDE );
// Add box outlines
text_box->PCB_SHAPE::TransformShapeToPolygon( *platedCopperPolys, layer,
0, maxError, ERROR_INSIDE );
}
else if( item->Type() == PCB_TEXT_T )
{
static_cast<PCB_TEXT*>( item )->TransformTextToPolySet(
*platedCopperPolys,
0, maxError, ERROR_INSIDE );
}
else
item->TransformShapeToPolygon( *platedCopperPolys, layer,
0, maxError, ERROR_INSIDE );
PCB_TEXTBOX* text_box = static_cast<PCB_TEXTBOX*>( item );
text_box->TransformTextToPolySet( *copperPolys, 0, maxError, ERROR_INSIDE );
// Add box outlines
text_box->PCB_SHAPE::TransformShapeToPolygon( *copperPolys, layer, 0, maxError,
ERROR_INSIDE );
}
else if( item->Type() == PCB_TEXT_T )
{
PCB_TEXT* text = static_cast<PCB_TEXT*>( item );
text->TransformTextToPolySet( *copperPolys, 0, maxError, ERROR_INSIDE );
}
else if( item->Type() != PCB_REFERENCE_IMAGE_T )
{
item->TransformShapeToPolygon( *copperPolys, layer, 0, maxError, ERROR_INSIDE );
}
}
}
}
// Add graphic item on copper layers to poly contours (vertical outlines)
if( cfg.opengl_copper_thickness && cfg.engine == RENDER_ENGINE::OPENGL )
{
for( PCB_LAYER_ID layer : layer_ids )
{
wxASSERT( m_layers_poly.find( layer ) != m_layers_poly.end() );
SHAPE_POLY_SET *layerPoly = m_layers_poly[layer];
// Add graphic items on copper layers (texts and other )
for( BOARD_ITEM* item : m_board->Drawings() )
// Add copper item to poly contours (vertical outlines) if required
if( cfg.opengl_copper_thickness && cfg.engine == RENDER_ENGINE::OPENGL )
{
if( !item->IsOnLayer( layer ) )
continue;
wxASSERT( m_layers_poly.contains( layer ) );
SHAPE_POLY_SET *layerPoly = m_layers_poly[layer];
switch( item->Type() )
{
@@ -706,17 +730,54 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
{
PCB_TEXTBOX* textbox = static_cast<PCB_TEXTBOX*>( item );
if( textbox->IsBorderEnabled() )
{
textbox->PCB_SHAPE::TransformShapeToPolygon( *layerPoly, layer, 0,
maxError, ERROR_INSIDE );
}
textbox->TransformTextToPolySet( *layerPoly, 0, maxError, ERROR_INSIDE );
break;
}
case PCB_TABLE_T:
// JEY TODO: tables
{
PCB_TABLE* table = static_cast<PCB_TABLE*>( item );
for( PCB_TABLECELL* cell : table->GetCells() )
cell->TransformTextToPolySet( *layerPoly, 0, maxError, ERROR_INSIDE );
table->DrawBorders(
[&]( const VECTOR2I& ptA, const VECTOR2I& ptB,
const STROKE_PARAMS& stroke )
{
SHAPE_SEGMENT seg( ptA, ptB, stroke.GetWidth() );
seg.TransformToPolygon( *layerPoly, maxError, ERROR_INSIDE );
} );
break;
}
case PCB_DIM_ALIGNED_T:
case PCB_DIM_CENTER_T:
case PCB_DIM_RADIAL_T:
case PCB_DIM_ORTHOGONAL_T:
case PCB_DIM_LEADER_T:
{
PCB_DIMENSION_BASE* dimension = static_cast<PCB_DIMENSION_BASE*>( item );
dimension->TransformTextToPolySet( *layerPoly, 0, maxError, ERROR_INSIDE );
for( const std::shared_ptr<SHAPE>& shape : dimension->GetShapes() )
shape->TransformToPolygon( *layerPoly, maxError, ERROR_INSIDE );
break;
}
case PCB_REFERENCE_IMAGE_T: // ignore
break;
default:
wxLogTrace( m_logTrace, wxT( "createLayers: item type: %d not implemented" ),
item->Type() );
wxLogTrace( m_logTrace, wxT( "createLayers: item type: %d not implemented" ), item->Type() );
break;
}
}
@@ -738,15 +799,11 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
zones.emplace_back( std::make_pair( zone, layer ) );
layer_lock.emplace( layer, std::make_unique<std::mutex>() );
if( cfg.DifferentiatePlatedCopper() && layer == F_Cu )
if( cfg.DifferentiatePlatedCopper() && ( layer == F_Cu || layer == B_Cu ) )
{
zone->TransformShapeToPolygon( *m_frontPlatedCopperPolys, F_Cu, 0, maxError,
ERROR_INSIDE );
}
else if( cfg.DifferentiatePlatedCopper() && layer == B_Cu )
{
zone->TransformShapeToPolygon( *m_backPlatedCopperPolys, B_Cu, 0, maxError,
ERROR_INSIDE );
SHAPE_POLY_SET* copperPolys = layer == F_Cu ? m_frontPlatedCopperPolys : m_backPlatedCopperPolys;
zone->TransformShapeToPolygon( *copperPolys, layer, 0, maxError, ERROR_INSIDE );
}
}
}
@@ -828,7 +885,52 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
Dwgs_User,
Cmts_User,
Eco1_User,
Eco2_User
Eco2_User,
User_1,
User_2,
User_3,
User_4,
User_5,
User_6,
User_7,
User_8,
User_9,
User_10,
User_11,
User_12,
User_13,
User_14,
User_15,
User_16,
User_17,
User_18,
User_19,
User_20,
User_21,
User_22,
User_23,
User_24,
User_25,
User_26,
User_27,
User_28,
User_29,
User_30,
User_31,
User_32,
User_33,
User_34,
User_35,
User_36,
User_37,
User_38,
User_39,
User_40,
User_41,
User_42,
User_43,
User_44,
User_45,
} );
std::bitset<LAYER_3D_END> enabledFlags = visibilityFlags;
@@ -876,7 +978,7 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
break;
case PCB_TABLE_T:
// JEY TODO: tables
addTable( static_cast<PCB_TABLE*>( item ), layerContainer, item );
break;
case PCB_DIM_ALIGNED_T:
@@ -929,7 +1031,7 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
}
else
{
addPads( footprint, layerContainer, layer, false, false );
addPads( footprint, layerContainer, layer );
}
addFootprintShapes( footprint, layerContainer, layer, visibilityFlags );
@@ -975,13 +1077,33 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
{
PCB_TEXTBOX* textbox = static_cast<PCB_TEXTBOX*>( item );
if( textbox->IsBorderEnabled() )
{
textbox->PCB_SHAPE::TransformShapeToPolygon( *layerPoly, layer, 0,
maxError, ERROR_INSIDE );
}
textbox->TransformTextToPolySet( *layerPoly, 0, maxError, ERROR_INSIDE );
break;
}
case PCB_TABLE_T:
// JEY TODO: tables
{
PCB_TABLE* table = static_cast<PCB_TABLE*>( item );
for( PCB_TABLECELL* cell : table->GetCells() )
cell->TransformTextToPolySet( *layerPoly, 0, maxError, ERROR_INSIDE );
table->DrawBorders(
[&]( const VECTOR2I& ptA, const VECTOR2I& ptB,
const STROKE_PARAMS& stroke )
{
SHAPE_SEGMENT seg( ptA, ptB, stroke.GetWidth() );
seg.TransformToPolygon( *layerPoly, maxError, ERROR_INSIDE );
} );
break;
}
default:
break;
@@ -995,12 +1117,23 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
for( PCB_TRACK* track : m_board->Tracks() )
{
if( track->Type() == PCB_VIA_T
&& static_cast<const PCB_VIA*>( track )->FlashLayer( layer )
&& !static_cast<const PCB_VIA*>( track )->IsTented( layer ) )
if( track->Type() == PCB_VIA_T )
{
track->TransformShapeToPolygon( *layerPoly, layer, maskExpansion, maxError,
ERROR_INSIDE );
const PCB_VIA* via = static_cast<const PCB_VIA*>( track );
if( via->FlashLayer( layer ) && !via->IsTented( layer ) )
{
track->TransformShapeToPolygon( *layerPoly, layer, maskExpansion, maxError,
ERROR_INSIDE );
}
}
else
{
if( track->HasSolderMask() )
{
track->TransformShapeToPolygon( *layerPoly, layer, maskExpansion, maxError,
ERROR_INSIDE );
}
}
}
}
@@ -1023,14 +1156,14 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
}
else
{
footprint->TransformPadsToPolySet( *layerPoly, layer, 0, maxError, ERROR_INSIDE );
footprint->TransformPadsToPolySet( *layerPoly, layer, 0, maxError,
ERROR_INSIDE );
}
// On tech layers, use a poor circle approximation, only for texts (stroke font)
footprint->TransformFPTextToPolySet( *layerPoly, layer, 0, maxError, ERROR_INSIDE );
// Add the remaining things with dynamic seg count for circles
transformFPShapesToPolySet( footprint, layer, *layerPoly, maxError, ERROR_INSIDE );
transformFPTextToPolySet( footprint, layer, visibilityFlags, *layerPoly, maxError,
ERROR_INSIDE );
transformFPShapesToPolySet( footprint, layer, *layerPoly, maxError,
ERROR_INSIDE );
}
if( cfg.show_zones || layer == F_Mask || layer == B_Mask )
@@ -1059,9 +1192,9 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
if( !footprint->GetBoundingBox().Intersects( boardBBox ) )
{
if( footprint->IsFlipped() )
addPads( footprint, m_offboardPadsBack, B_Cu, false, false );
addPads( footprint, m_offboardPadsBack, B_Cu );
else
addPads( footprint, m_offboardPadsFront, F_Cu, false, false );
addPads( footprint, m_offboardPadsFront, F_Cu );
}
}
@@ -1091,41 +1224,11 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
}
// Subtract plated copper from unplated copper
bool hasF_Cu = false;
bool hasB_Cu = false;
if( m_layers_poly.find( F_Cu ) != m_layers_poly.end() )
{
m_layers_poly[F_Cu]->BooleanSubtract( *m_frontPlatedPadAndGraphicPolys );
m_layers_poly[F_Cu]->BooleanSubtract( *m_frontPlatedCopperPolys );
hasF_Cu = true;
}
if( m_layers_poly.find( B_Cu ) != m_layers_poly.end() )
{
m_layers_poly[B_Cu]->BooleanSubtract( *m_backPlatedPadAndGraphicPolys );
m_layers_poly[B_Cu]->BooleanSubtract( *m_backPlatedCopperPolys );
hasB_Cu = true;
}
// Add plated graphic items to build vertical walls
if( hasF_Cu && m_frontPlatedCopperPolys->OutlineCount() )
m_frontPlatedPadAndGraphicPolys->Append( *m_frontPlatedCopperPolys );
if( hasB_Cu && m_backPlatedCopperPolys->OutlineCount() )
m_backPlatedPadAndGraphicPolys->Append( *m_backPlatedCopperPolys );
m_frontPlatedPadAndGraphicPolys->Simplify();
m_backPlatedPadAndGraphicPolys->Simplify();
m_frontPlatedCopperPolys->Simplify();
m_backPlatedCopperPolys->Simplify();
// ADD PLATED PADS
for( FOOTPRINT* footprint : m_board->Footprints() )
{
addPads( footprint, m_platedPadsFront, F_Cu, false, true );
addPads( footprint, m_platedPadsBack, B_Cu, false, true );
}
// ADD PLATED COPPER
ConvertPolygonToTriangles( *m_frontPlatedCopperPolys, *m_platedPadsFront, m_biuTo3Dunits,
+2 -2
View File
@@ -451,7 +451,7 @@ void EDA_3D_CANVAS::DoRePaint()
return;
}
// Don't attend to ray trace if OpenGL doesn't support it.
// Don't attempt to ray trace if OpenGL doesn't support it.
if( !m_opengl_supports_raytracing )
{
m_3d_render = m_3d_render_opengl;
@@ -459,7 +459,7 @@ void EDA_3D_CANVAS::DoRePaint()
m_boardAdapter.m_Cfg->m_Render.engine = RENDER_ENGINE::OPENGL;
}
// Check if a raytacing was requested and need to switch to raytracing mode
// Check if a raytracing was requested and need to switch to raytracing mode
if( m_boardAdapter.m_Cfg->m_Render.engine == RENDER_ENGINE::OPENGL )
{
const bool was_camera_changed = m_camera.ParametersChanged();
@@ -157,7 +157,7 @@ void EDA_3D_MODEL_VIEWER::Set3DModel( const wxString& aModelPathName)
if( m_cacheManager )
{
const S3DMODEL* model = m_cacheManager->GetModel( aModelPathName, wxEmptyString, nullptr );
const S3DMODEL* model = m_cacheManager->GetModel( aModelPathName, wxEmptyString, {} );
if( model )
Set3DModel( (const S3DMODEL &)*model );
@@ -544,9 +544,7 @@ long NL_3D_VIEWER_PLUGIN_IMPL::SetHitSelectionOnly( bool onlySelection )
long NL_3D_VIEWER_PLUGIN_IMPL::SetActiveCommand( std::string commandId )
{
if( commandId.empty() )
{
return 0;
}
std::list<TOOL_ACTION*> actions = ACTION_MANAGER::GetActionList();
TOOL_ACTION* context = nullptr;
@@ -557,9 +555,7 @@ long NL_3D_VIEWER_PLUGIN_IMPL::SetActiveCommand( std::string commandId )
std::string nm = action->GetName();
if( commandId == nm )
{
context = action;
}
}
if( context != nullptr )
@@ -568,27 +564,21 @@ long NL_3D_VIEWER_PLUGIN_IMPL::SetActiveCommand( std::string commandId )
// Only allow command execution if the window is enabled. i.e. there is not a modal dialog
// currently active.
TOOLS_HOLDER* tools_holder = nullptr;
if( parent->IsEnabled() && ( tools_holder = dynamic_cast<TOOLS_HOLDER*>( parent ) ) )
if( parent && parent->IsEnabled() )
{
TOOL_MANAGER* tool_manager = tools_holder->GetToolManager();
TOOLS_HOLDER* tools_holder = dynamic_cast<TOOLS_HOLDER*>( parent );
TOOL_MANAGER* tool_manager = tools_holder ? tools_holder->GetToolManager() : nullptr;
if( tool_manager == nullptr )
{
if( !tool_manager )
return navlib::make_result_code( navlib::navlib_errc::invalid_operation );
}
// Get the selection to use to test if the action is enabled
SELECTION& sel = tool_manager->GetToolHolder()->GetCurrentSelection();
bool runAction = true;
if( const ACTION_CONDITIONS* aCond =
tool_manager->GetActionManager()->GetCondition( *context ) )
{
if( const ACTION_CONDITIONS* aCond = tool_manager->GetActionManager()->GetCondition( *context ) )
runAction = aCond->enableCondition( sel );
}
if( runAction )
{
+15 -14
View File
@@ -607,14 +607,12 @@ void RENDER_3D_OPENGL::reload( REPORTER* aStatusReporter, REPORTER* aWarningRepo
if( m_boardAdapter.m_Cfg->m_Render.DifferentiatePlatedCopper() )
{
const SHAPE_POLY_SET* frontPlatedPadAndGraphicPolys =
m_boardAdapter.GetFrontPlatedPadAndGraphicPolys();
const SHAPE_POLY_SET* backPlatedPadAndGraphicPolys =
m_boardAdapter.GetBackPlatedPadAndGraphicPolys();
const SHAPE_POLY_SET* frontPlatedCopperPolys = m_boardAdapter.GetFrontPlatedCopperPolys();
const SHAPE_POLY_SET* backPlatedCopperPolys = m_boardAdapter.GetBackPlatedCopperPolys();
if( frontPlatedPadAndGraphicPolys )
if( frontPlatedCopperPolys )
{
SHAPE_POLY_SET poly = frontPlatedPadAndGraphicPolys->CloneDropTriangulation();
SHAPE_POLY_SET poly = frontPlatedCopperPolys->CloneDropTriangulation();
poly.BooleanIntersection( m_boardAdapter.GetBoardPoly() );
poly.BooleanSubtract( m_boardAdapter.GetTH_ODPolys() );
poly.BooleanSubtract( m_boardAdapter.GetNPTH_ODPolys() );
@@ -627,9 +625,9 @@ void RENDER_3D_OPENGL::reload( REPORTER* aStatusReporter, REPORTER* aWarningRepo
m_layers[F_Cu] = generateEmptyLayerList( F_Cu );
}
if( backPlatedPadAndGraphicPolys )
if( backPlatedCopperPolys )
{
SHAPE_POLY_SET poly = backPlatedPadAndGraphicPolys->CloneDropTriangulation();
SHAPE_POLY_SET poly = backPlatedCopperPolys->CloneDropTriangulation();
poly.BooleanIntersection( m_boardAdapter.GetBoardPoly() );
poly.BooleanSubtract( m_boardAdapter.GetTH_ODPolys() );
poly.BooleanSubtract( m_boardAdapter.GetNPTH_ODPolys() );
@@ -928,8 +926,8 @@ void RENDER_3D_OPENGL::load3dModels( REPORTER* aStatusReporter )
// Go for all footprints
for( const FOOTPRINT* footprint : m_boardAdapter.GetBoard()->Footprints() )
{
wxString libraryName = footprint->GetFPID().GetLibNickname();
wxString footprintBasePath = wxEmptyString;
wxString libraryName = footprint->GetFPID().GetLibNickname();
wxString footprintBasePath = wxEmptyString;
if( m_boardAdapter.GetBoard()->GetProject() )
{
@@ -967,10 +965,13 @@ void RENDER_3D_OPENGL::load3dModels( REPORTER* aStatusReporter )
if( m_3dModelMap.find( fp_model.m_Filename ) == m_3dModelMap.end() )
{
// It is not present, try get it from cache
const S3DMODEL* modelPtr =
m_boardAdapter.Get3dCacheManager()->GetModel( fp_model.m_Filename,
footprintBasePath,
footprint );
std::vector<const EMBEDDED_FILES*> embeddedFilesStack;
embeddedFilesStack.push_back( footprint->GetEmbeddedFiles() );
embeddedFilesStack.push_back( m_boardAdapter.GetBoard()->GetEmbeddedFiles() );
const S3DMODEL* modelPtr = m_boardAdapter.Get3dCacheManager()->GetModel( fp_model.m_Filename,
footprintBasePath,
embeddedFilesStack );
// only add it if the return is not NULL
if( modelPtr )
@@ -271,9 +271,7 @@ void RENDER_3D_OPENGL::setupMaterials()
void RENDER_3D_OPENGL::setLayerMaterial( PCB_LAYER_ID aLayerID )
{
EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS& cfg = m_boardAdapter.m_Cfg->m_Render;
if( cfg.use_board_editor_copper_colors && IsCopperLayer( aLayerID ) )
if( m_boardAdapter.GetUseBoardEditorCopperLayerColors() && IsCopperLayer( aLayerID ) )
{
COLOR4D copper_color = m_boardAdapter.m_BoardEditorColors[aLayerID];
m_materials.m_Copper.m_Diffuse = SFVEC3F( copper_color.r, copper_color.g,
@@ -362,10 +360,34 @@ void RENDER_3D_OPENGL::setLayerMaterial( PCB_LAYER_ID aLayerID )
break;
default:
{
int layer3D = MapPCBLayerTo3DLayer( aLayerID );
// Note: MUST do this in LAYER_3D space; User_1..User_45 are NOT contiguous
if( layer3D >= LAYER_3D_USER_1 && layer3D <= LAYER_3D_USER_45 )
{
int user_idx = layer3D - LAYER_3D_USER_1;
m_materials.m_Plastic.m_Diffuse = m_boardAdapter.m_UserDefinedLayerColor[ user_idx ];
m_materials.m_Plastic.m_Ambient = SFVEC3F( m_materials.m_Plastic.m_Diffuse.r * 0.05f,
m_materials.m_Plastic.m_Diffuse.g * 0.05f,
m_materials.m_Plastic.m_Diffuse.b * 0.05f );
m_materials.m_Plastic.m_Specular = SFVEC3F( m_materials.m_Plastic.m_Diffuse.r * 0.7f,
m_materials.m_Plastic.m_Diffuse.g * 0.7f,
m_materials.m_Plastic.m_Diffuse.b * 0.7f );
m_materials.m_Plastic.m_Shininess = 0.078125f * 128.0f;
m_materials.m_Plastic.m_Emissive = SFVEC3F( 0.0f, 0.0f, 0.0f );
OglSetMaterial( m_materials.m_Plastic, 1.0f );
break;
}
m_materials.m_Copper.m_Diffuse = m_boardAdapter.m_CopperColor;
OglSetMaterial( m_materials.m_Copper, 1.0f );
break;
}
}
}
@@ -115,6 +115,11 @@ public:
~BVH_PBRT();
// We own at least one list of raw pointers. Don't let the compiler fill in copy c'tors that
// will only land us in trouble.
BVH_PBRT( const BVH_PBRT& ) = delete;
BVH_PBRT& operator=( const BVH_PBRT& ) = delete;
bool Intersect( const RAY& aRay, HITINFO& aHitInfo ) const override;
bool Intersect( const RAY& aRay, HITINFO& aHitInfo, unsigned int aAccNodeInfo ) const override;
bool Intersect( const RAYPACKET& aRayPacket, HITINFO_PACKET* aHitInfoPacket ) const override;
@@ -22,12 +22,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/**
* @file container_2d.h
*/
#ifndef _CONTAINER_2D_H_
#define _CONTAINER_2D_H_
#pragma once
#include "../shapes2D/object_2d.h"
#include <list>
@@ -71,8 +66,7 @@ public:
* @param aBBox The bounding box to test.
* @param aOutList The list of objects that intersects the bounding box.
*/
virtual void GetIntersectingObjects( const BBOX_2D& aBBox,
CONST_LIST_OBJECT2D& aOutList ) const = 0;
virtual void GetIntersectingObjects( const BBOX_2D& aBBox, CONST_LIST_OBJECT2D& aOutList ) const = 0;
/**
* Intersect and check if a segment ray hits a object or is inside it.
@@ -83,11 +77,11 @@ public:
virtual bool IntersectAny( const RAYSEG2D& aSegRay ) const = 0;
protected:
BBOX_2D m_bbox;
BBOX_2D m_bbox;
LIST_OBJECT2D m_objects;
private:
std::mutex m_lock;
std::mutex m_lock;
};
@@ -96,8 +90,7 @@ class CONTAINER_2D : public CONTAINER_2D_BASE
public:
CONTAINER_2D();
void GetIntersectingObjects( const BBOX_2D& aBBox,
CONST_LIST_OBJECT2D& aOutList ) const override;
void GetIntersectingObjects( const BBOX_2D& aBBox, CONST_LIST_OBJECT2D& aOutList ) const override;
bool IntersectAny( const RAYSEG2D& aSegRay ) const override;
};
@@ -119,28 +112,30 @@ public:
BVH_CONTAINER_2D();
~BVH_CONTAINER_2D();
// We own at least one list of raw pointers. Don't let the compiler fill in copy c'tors that
// will only land us in trouble.
BVH_CONTAINER_2D( const BVH_CONTAINER_2D& ) = delete;
BVH_CONTAINER_2D& operator=( const BVH_CONTAINER_2D& ) = delete;
void BuildBVH();
void Clear() override;
void GetIntersectingObjects( const BBOX_2D& aBBox,
CONST_LIST_OBJECT2D& aOutList ) const override;
void GetIntersectingObjects( const BBOX_2D& aBBox, CONST_LIST_OBJECT2D& aOutList ) const override;
bool IntersectAny( const RAYSEG2D& aSegRay ) const override;
private:
void destroy();
void recursiveBuild_MIDDLE_SPLIT( BVH_CONTAINER_NODE_2D* aNodeParent );
void recursiveGetListObjectsIntersects( const BVH_CONTAINER_NODE_2D* aNode,
const BBOX_2D& aBBox,
void recursiveGetListObjectsIntersects( const BVH_CONTAINER_NODE_2D* aNode, const BBOX_2D& aBBox,
CONST_LIST_OBJECT2D& aOutList ) const;
bool recursiveIntersectAny( const BVH_CONTAINER_NODE_2D* aNode,
const RAYSEG2D& aSegRay ) const;
bool recursiveIntersectAny( const BVH_CONTAINER_NODE_2D* aNode, const RAYSEG2D& aSegRay ) const;
bool m_isInitialized;
private:
bool m_isInitialized;
std::list<BVH_CONTAINER_NODE_2D*> m_elementsToDelete;
BVH_CONTAINER_NODE_2D* m_tree;
BVH_CONTAINER_NODE_2D* m_tree;
};
#endif // _CONTAINER_2D_H_
@@ -632,7 +632,15 @@ void RENDER_3D_RAYTRACE_BASE::Reload( REPORTER* aStatusReporter, REPORTER* aWarn
break;
default:
if( m_boardAdapter.m_Cfg->m_Render.differentiate_plated_copper )
{
int layer3D = MapPCBLayerTo3DLayer( layer_id );
// Note: MUST do this in LAYER_3D space; User_1..User_45 are NOT contiguous
if( layer3D >= LAYER_3D_USER_1 && layer3D <= LAYER_3D_USER_45 )
{
layerColor = m_boardAdapter.m_UserDefinedLayerColor[ layer3D - LAYER_3D_USER_1 ];
}
else if( m_boardAdapter.m_Cfg->m_Render.differentiate_plated_copper )
{
layerColor = SFVEC3F( 184.0f / 255.0f, 115.0f / 255.0f, 50.0f / 255.0f );
materialLayer = &m_materials.m_NonPlatedCopper;
@@ -645,6 +653,7 @@ void RENDER_3D_RAYTRACE_BASE::Reload( REPORTER* aStatusReporter, REPORTER* aWarn
break;
}
}
createItemsFromContainer( container2d, layer_id, materialLayer, layerColor, 0.0f );
} // for each layer on map
@@ -1282,8 +1291,12 @@ void RENDER_3D_RAYTRACE_BASE::load3DModels( CONTAINER_3D& aDstContainer,
continue;
// get it from cache
const S3DMODEL* modelPtr =
cacheMgr->GetModel( model.m_Filename, footprintBasePath, fp );
std::vector<const EMBEDDED_FILES*> embeddedFilesStack;
embeddedFilesStack.push_back( fp->GetEmbeddedFiles() );
embeddedFilesStack.push_back( m_boardAdapter.GetBoard()->GetEmbeddedFiles() );
const S3DMODEL* modelPtr = cacheMgr->GetModel( model.m_Filename, footprintBasePath,
embeddedFilesStack );
// only add it if the return is not NULL.
if( modelPtr )
@@ -274,10 +274,12 @@ void RENDER_3D_RAYTRACE_BASE::renderTracing( uint8_t* ptrPBO, REPORTER* aStatusR
}
};
for( size_t i = 0; i < tp.get_thread_count() + 1; ++i )
tp.push_task( processBlocks );
BS::multi_future<void> futures;
tp.wait_for_tasks();
for( size_t i = 0; i < tp.get_thread_count(); ++i )
futures.push_back( tp.submit( processBlocks ) );
futures.wait();
m_blockRenderProgressCount += numBlocksRendered;
@@ -484,9 +486,12 @@ void RENDER_3D_RAYTRACE_BASE::renderBlockTracing( uint8_t* ptrPBO, signed int iB
// Initialize ray packets
const SFVEC2UI& blockPos = m_blockPositions[iBlock];
const SFVEC2I blockPosI = SFVEC2I( blockPos.x + m_xoffset, blockPos.y + m_yoffset );
const SFVEC2F randDisp = ( m_camera.GetProjection() == PROJECTION_TYPE::ORTHO ) ?
SFVEC2F( 0.0f, 0.0f ) :
SFVEC2F( DISP_FACTOR, DISP_FACTOR );
RAYPACKET blockPacket( m_camera, (SFVEC2F) blockPosI + SFVEC2F( DISP_FACTOR, DISP_FACTOR ),
SFVEC2F( DISP_FACTOR, DISP_FACTOR ) /* Displacement random factor */ );
RAYPACKET blockPacket( m_camera, (SFVEC2F) blockPosI + randDisp,
randDisp /* Displacement random factor */ );
HITINFO_PACKET hitPacket_X0Y0[RAYPACKET_RAYS_PER_PACKET];
@@ -564,7 +569,7 @@ void RENDER_3D_RAYTRACE_BASE::renderBlockTracing( uint8_t* ptrPBO, signed int iB
HITINFO_PACKET_init( hitPacket_AA_X1Y1 );
RAYPACKET blockPacket_AA_X1Y1( m_camera, (SFVEC2F) blockPosI + SFVEC2F( 0.5f, 0.5f ),
SFVEC2F( DISP_FACTOR, DISP_FACTOR ) );
randDisp );
if( !m_accelerator->Intersect( blockPacket_AA_X1Y1, hitPacket_AA_X1Y1 ) )
{
@@ -601,16 +606,16 @@ void RENDER_3D_RAYTRACE_BASE::renderBlockTracing( uint8_t* ptrPBO, signed int iB
RAY blockRayPck_AA_X1Y1_half[RAYPACKET_RAYS_PER_PACKET];
RAYPACKET_InitRays_with2DDisplacement(
m_camera, (SFVEC2F) blockPosI + SFVEC2F( 0.5f - DISP_FACTOR, DISP_FACTOR ),
SFVEC2F( DISP_FACTOR, DISP_FACTOR ), blockRayPck_AA_X1Y0 );
m_camera, (SFVEC2F) blockPosI + SFVEC2F( 0.5f - randDisp.x, randDisp.y ),
randDisp, blockRayPck_AA_X1Y0 );
RAYPACKET_InitRays_with2DDisplacement(
m_camera, (SFVEC2F) blockPosI + SFVEC2F( DISP_FACTOR, 0.5f - DISP_FACTOR ),
SFVEC2F( DISP_FACTOR, DISP_FACTOR ), blockRayPck_AA_X0Y1 );
m_camera, (SFVEC2F) blockPosI + SFVEC2F( randDisp.x, 0.5f - randDisp.y ),
randDisp, blockRayPck_AA_X0Y1 );
RAYPACKET_InitRays_with2DDisplacement(
m_camera, (SFVEC2F) blockPosI + SFVEC2F( 0.25f - DISP_FACTOR, 0.25f - DISP_FACTOR ),
SFVEC2F( DISP_FACTOR, DISP_FACTOR ), blockRayPck_AA_X1Y1_half );
m_camera, (SFVEC2F) blockPosI + SFVEC2F( 0.25f - randDisp.x, 0.25f - randDisp.y ),
randDisp, blockRayPck_AA_X1Y1_half );
renderAntiAliasPackets( bgColor, hitPacket_X0Y0, hitPacket_AA_X1Y1, blockRayPck_AA_X1Y0,
hitColor_AA_X1Y0 );
@@ -23,12 +23,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/**
* @file layer_item_2d.h
*/
#ifndef _LAYER_ITEM_2D_H_
#define _LAYER_ITEM_2D_H_
#pragma once
#include "object_2d.h"
#include <vector>
@@ -84,6 +79,11 @@ public:
~LAYER_ITEM_2D();
// We own at least one list of raw pointers. Don't let the compiler fill in copy c'tors that
// will only land us in trouble.
LAYER_ITEM_2D( const LAYER_ITEM_2D& ) = delete;
LAYER_ITEM_2D& operator=( const LAYER_ITEM_2D& ) = delete;
// Imported from OBJECT_2D
bool Overlaps( const BBOX_2D& aBBox ) const override;
bool Intersects( const BBOX_2D& aBBox ) const override;
@@ -97,4 +97,3 @@ private:
const OBJECT_2D* m_objectC;
};
#endif // _LAYER_ITEM_2D_H_
+23 -13
View File
@@ -202,6 +202,10 @@ EDA_3D_VIEWER_FRAME::EDA_3D_VIEWER_FRAME( KIWAY* aKiway, PCB_BASE_FRAME* aParent
EDA_3D_VIEWER_FRAME::~EDA_3D_VIEWER_FRAME()
{
// Shutdown all running tools
if( m_toolManager )
m_toolManager->ShutdownAllTools();
Prj().GetProjectFile().m_Viewports3D = m_appearancePanel->GetUserViewports();
m_canvas->SetEventDispatcher( nullptr );
@@ -482,6 +486,8 @@ void EDA_3D_VIEWER_FRAME::Process_Special_Functions( wxCommandEvent &event )
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EDA_3D_VIEWER_SETTINGS* cfg = mgr.GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
m_boardAdapter.SetLayerColors( m_boardAdapter.GetDefaultColors() );
cfg->ResetToDefaults();
LoadSettings( cfg );
@@ -572,11 +578,25 @@ void EDA_3D_VIEWER_FRAME::LoadSettings( APP_SETTINGS_BASE *aCfg )
{
applySettings( cfg );
if( !GetBoard()->GetProject() )
GetBoard()->SetProject( &Prj() );
m_boardAdapter.SetBoard( GetBoard() );
wxString legacyColorsPresetName = _( "legacy colors" );
if( LAYER_PRESET_3D* preset = cfg->FindPreset( legacyColorsPresetName ) )
{
// Something corrupts the legacy colours in 9.0, so just make sure that it always
// has the correct values.
*preset = { legacyColorsPresetName,
GetAdapter().GetDefaultVisibleLayers(),
GetAdapter().GetDefaultColors() };
}
else
{
cfg->m_LayerPresets.emplace_back( legacyColorsPresetName,
GetAdapter().GetDefaultVisibleLayers(),
GetAdapter().GetDefaultColors() );
}
// When opening the 3D viewer, we use the OpenGL mode, never the ray tracing engine
// because the ray tracing is very time consuming, and can be seen as not working
// (freeze window) with large boards.
@@ -584,17 +604,7 @@ void EDA_3D_VIEWER_FRAME::LoadSettings( APP_SETTINGS_BASE *aCfg )
if( cfg->m_CurrentPreset == LEGACY_PRESET_FLAG )
{
wxString legacyColorsPresetName = _( "legacy colors" );
cfg->m_UseStackupColors = false;
if( !cfg->FindPreset( legacyColorsPresetName ) )
{
cfg->m_LayerPresets.emplace_back( legacyColorsPresetName,
GetAdapter().GetDefaultVisibleLayers(),
GetAdapter().GetDefaultColors() );
}
cfg->m_CurrentPreset = FOLLOW_PLOT_SETTINGS;
}
+112 -16
View File
@@ -19,6 +19,7 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <fmt/format.h>
#include <3d_enums.h>
#include <common_ogl/ogl_attr_list.h>
#include <settings/parameters.h>
@@ -81,6 +82,35 @@ PARAM_LAYER_PRESET_3D::PARAM_LAYER_PRESET_3D( const std::string& aPath,
m_presets( aPresetList )
{
wxASSERT( aPresetList );
#define LAYER( n, l ) m_layerToLayerNameMap[l] = n; m_layerNameToLayerMap[n] = l;
LAYER( "fp_values", LAYER_FP_VALUES );
LAYER( "fp_references", LAYER_FP_REFERENCES );
LAYER( "fp_text", LAYER_FP_TEXT );
LAYER( "background_bottom", LAYER_3D_BACKGROUND_BOTTOM );
LAYER( "background_top", LAYER_3D_BACKGROUND_TOP );
LAYER( "board", LAYER_3D_BOARD );
LAYER( "copper", LAYER_3D_COPPER_TOP );
LAYER( "copper_bottom", LAYER_3D_COPPER_BOTTOM );
LAYER( "silkscreen_bottom", LAYER_3D_SILKSCREEN_BOTTOM );
LAYER( "silkscreen_top", LAYER_3D_SILKSCREEN_TOP );
LAYER( "soldermask_bottom", LAYER_3D_SOLDERMASK_BOTTOM );
LAYER( "soldermask_top", LAYER_3D_SOLDERMASK_TOP );
LAYER( "solderpaste", LAYER_3D_SOLDERPASTE );
LAYER( "adhesive", LAYER_3D_ADHESIVE );
LAYER( "user_comments", LAYER_3D_USER_COMMENTS );
LAYER( "user_drawings", LAYER_3D_USER_DRAWINGS );
LAYER( "user_eco1", LAYER_3D_USER_ECO1 );
LAYER( "user_eco2", LAYER_3D_USER_ECO2 );
LAYER( "3d_axes", LAYER_3D_AXES );
LAYER( "th_models", LAYER_3D_TH_MODELS );
LAYER( "smd_models", LAYER_3D_SMD_MODELS );
LAYER( "virtual_models", LAYER_3D_VIRTUAL_MODELS );
LAYER( "non_pos_file_models", LAYER_3D_MODELS_NOT_IN_POS );
LAYER( "dnp_models", LAYER_3D_MODELS_MARKED_DNP );
LAYER( "bounding_boxes", LAYER_3D_BOUNDING_BOXES );
LAYER( "off_board_silk", LAYER_3D_OFF_BOARD_SILK );
}
@@ -99,7 +129,7 @@ nlohmann::json PARAM_LAYER_PRESET_3D::presetsToJson()
for( int layer = 0; layer < LAYER_3D_END; ++layer )
{
if( preset.layers.test( layer ) )
layers.push_back( layer );
layers.push_back( m_layerToLayerNameMap[layer] );
}
js["layers"] = layers;
@@ -109,7 +139,7 @@ nlohmann::json PARAM_LAYER_PRESET_3D::presetsToJson()
for( const auto& [ layer, color ] : preset.colors )
{
nlohmann::json layerColor = {
{ "layer", layer },
{ "layer", m_layerToLayerNameMap[layer] },
{ "color", color.ToCSSString() }
};
@@ -144,26 +174,20 @@ void PARAM_LAYER_PRESET_3D::jsonToPresets( const nlohmann::json& aJson )
for( const nlohmann::json& layer : preset.at( "layers" ) )
{
if( layer.is_number_integer() )
{
int layerNum = layer.get<int>();
if( layerNum >= 0 && layerNum < LAYER_3D_END )
p.layers.set( layerNum );
}
if( layer.is_string() )
p.layers.set( m_layerNameToLayerMap[layer.get<wxString>()] );
}
}
if( preset.contains( "colors" ) && preset.at( "colors" ).is_array() )
{
for( const nlohmann::json& layerColor : preset.at( "colors" ) )
for( const nlohmann::json& entry : preset.at( "colors" ) )
{
if( layerColor.contains( "layer" ) && layerColor.contains( "color" )
&& layerColor.at( "layer" ).is_number_integer() )
if( entry.contains( "layer" ) && entry.contains( "color" )
&& entry.at( "layer" ).is_string() )
{
int layerNum = layerColor.at( "layer" ).get<int>();
COLOR4D color = layerColor.at( "color" ).get<COLOR4D>();
p.colors[ layerNum ] = color;
int layerNum = m_layerNameToLayerMap[entry.at( "layer" ).get<wxString>()];
p.colors[ layerNum ] = entry.at( "color" ).get<COLOR4D>();
}
}
}
@@ -175,7 +199,7 @@ void PARAM_LAYER_PRESET_3D::jsonToPresets( const nlohmann::json& aJson )
///! Update the schema version whenever a migration is required
const int viewer3dSchemaVersion = 3;
const int viewer3dSchemaVersion = 4;
EDA_3D_VIEWER_SETTINGS::EDA_3D_VIEWER_SETTINGS() :
@@ -330,6 +354,13 @@ EDA_3D_VIEWER_SETTINGS::EDA_3D_VIEWER_SETTINGS() :
&m_Render.show_eco1, true ) );
m_params.emplace_back( new PARAM<bool>( "render.show_eco2",
&m_Render.show_eco2, true ) );
for( int layer = 0; layer < 45; ++layer )
{
m_params.emplace_back( new PARAM<bool>( fmt::format( "render.show_user{}", layer + 1 ),
&m_Render.show_user[layer], false ) );
}
m_params.emplace_back( new PARAM<bool>( "render.show_footprints_insert",
&m_Render.show_footprints_insert, true ) );
m_params.emplace_back( new PARAM<bool>( "render.show_footprints_normal",
@@ -370,6 +401,8 @@ EDA_3D_VIEWER_SETTINGS::EDA_3D_VIEWER_SETTINGS() :
&m_Render.differentiate_plated_copper, false ) );
m_params.emplace_back( new PARAM<bool>( "render.use_board_editor_copper_colors",
&m_Render.use_board_editor_copper_colors, false ) );
m_params.emplace_back( new PARAM<bool>( "render.preview_show_board_body",
&m_Render.preview_show_board_body, true ) );
m_params.emplace_back( new PARAM<bool>( "camera.animation_enabled",
&m_Camera.animation_enabled, true ) );
m_params.emplace_back( new PARAM<int>( "camera.moving_speed_multiplier",
@@ -425,6 +458,69 @@ EDA_3D_VIEWER_SETTINGS::EDA_3D_VIEWER_SETTINGS() :
Set( "render.show_eco2", *optval );
}
return true;
} );
registerMigration( 3, 4,
[&]() -> bool
{
std::map<int, wxString> legacyColorMap;
legacyColorMap[142] = "fp_values";
legacyColorMap[143] = "fp_references";
legacyColorMap[130] = "fp_text";
legacyColorMap[466] = "background_bottom";
legacyColorMap[467] = "background_top";
legacyColorMap[468] = "board";
legacyColorMap[469] = "copper";
legacyColorMap[470] = "copper_bottom";
legacyColorMap[471] = "silkscreen_bottom";
legacyColorMap[472] = "silkscreen_top";
legacyColorMap[473] = "soldermask_bottom";
legacyColorMap[474] = "soldermask_top";
legacyColorMap[475] = "solderpaste";
legacyColorMap[476] = "adhesive";
legacyColorMap[477] = "user_comments";
legacyColorMap[478] = "user_drawings";
legacyColorMap[479] = "user_eco1";
legacyColorMap[480] = "user_eco2";
legacyColorMap[481] = "th_models";
legacyColorMap[482] = "smd_models";
legacyColorMap[483] = "virtual_models";
legacyColorMap[484] = "non_pos_file_models";
legacyColorMap[485] = "dnp_models";
legacyColorMap[486] = "3d_axes";
legacyColorMap[487] = "bounding_boxes";
legacyColorMap[488] = "off_board_silk";
if( !Contains( "layer_presets" ) || !At( "layer_presets" ).is_array() )
return true;
for( nlohmann::json& preset : At( "layer_presets" ) )
{
if( preset.contains( "colors" ) && preset.at( "colors" ).is_array() )
{
for( nlohmann::json& color : preset.at( "colors" ) )
{
if( color.contains( "layer" ) && color.at( "layer" ).is_number_integer() )
color["layer"] = legacyColorMap[color["layer"].get<int>()];
}
}
if( preset.contains( "layers" ) && preset.at( "layers" ).is_array() )
{
nlohmann::json mappedLayers = nlohmann::json::array();
for( const nlohmann::json& layer : preset.at( "layers" ) )
{
if( layer.is_number_integer() )
mappedLayers.push_back( legacyColorMap[layer.get<int>()] );
}
preset["layers"] = mappedLayers;
}
}
return true;
} );
}
+11 -8
View File
@@ -64,7 +64,11 @@ private:
void jsonToPresets( const nlohmann::json& aJson );
private:
std::vector<LAYER_PRESET_3D>* m_presets;
std::map<int, wxString> m_layerToLayerNameMap;
std::map<wxString, int> m_layerNameToLayerMap;
};
@@ -128,6 +132,7 @@ public:
bool show_drawings;
bool show_eco1;
bool show_eco2;
bool show_user[45];
bool show_footprints_insert;
bool show_footprints_normal;
bool show_footprints_virtual;
@@ -147,21 +152,19 @@ public:
bool subtract_mask_from_silk;
bool clip_silk_on_via_annuli;
bool differentiate_plated_copper;
// Board editor copper colors are used only in OpenGL mode if
// use_board_editor_copper_colors is true
bool use_board_editor_copper_colors;
bool use_board_editor_copper_colors; // OpenGL only
bool preview_show_board_body;
/**
* return true if platted copper aeras and non platted copper areas must be drawn
* using a different color
* in OPENGL mode, if use_board_editor_copper_colors, always false
* in RAYTRACING mode, use_board_editor_copper_colors is ignored (board editor copper
* colors are ignored)
*/
bool DifferentiatePlatedCopper()
{
return engine == RENDER_ENGINE::RAYTRACING ? differentiate_plated_copper
: differentiate_plated_copper && !use_board_editor_copper_colors;
if( engine == RENDER_ENGINE::OPENGL && use_board_editor_copper_colors )
return false;
return differentiate_plated_copper;
}
};
+166 -78
View File
@@ -29,8 +29,7 @@
#include <eda_3d_viewer_frame.h>
#include <pcbnew_settings.h>
#include <project.h>
#include <settings/settings_manager.h>
#include <settings/color_settings.h>
#include <board.h>
#include <tool/tool_manager.h>
#include <tools/pcb_actions.h>
#include <tools/eda_3d_actions.h>
@@ -48,44 +47,87 @@
/// Render Row abbreviation to reduce source width.
#define RR APPEARANCE_CONTROLS_3D::APPEARANCE_SETTING_3D
// clang-format off
/// Template for object appearance settings
const APPEARANCE_CONTROLS_3D::APPEARANCE_SETTING_3D APPEARANCE_CONTROLS_3D::s_layerSettings[] = {
// text id tooltip
RR( _HKI( "Board Body" ), LAYER_3D_BOARD, _HKI( "Show board body" ) ),
RR( _HKI( "F.Cu" ), LAYER_3D_COPPER_TOP, _HKI( "Show front copper / surface finish color" ) ),
RR( _HKI( "B.Cu" ), LAYER_3D_COPPER_BOTTOM, _HKI( "Show back copper / surface finish color" ) ),
RR( _HKI( "Adhesive" ), LAYER_3D_ADHESIVE, _HKI( "Show adhesive" ) ),
RR( _HKI( "Solder Paste" ), LAYER_3D_SOLDERPASTE, _HKI( "Show solder paste" ) ),
RR( _HKI( "F.Silkscreen" ), LAYER_3D_SILKSCREEN_TOP, _HKI( "Show front silkscreen" ) ),
RR( _HKI( "B.Silkscreen" ), LAYER_3D_SILKSCREEN_BOTTOM, _HKI( "Show back silkscreen" ) ),
RR( _HKI( "F.Mask" ), LAYER_3D_SOLDERMASK_TOP, _HKI( "Show front solder mask" ) ),
RR( _HKI( "B.Mask" ), LAYER_3D_SOLDERMASK_BOTTOM, _HKI( "Show back solder mask" ) ),
RR( _HKI( "User.Drawings" ), LAYER_3D_USER_DRAWINGS, _HKI( "Show user drawings layer" ) ),
RR( _HKI( "User.Comments" ), LAYER_3D_USER_COMMENTS, _HKI( "Show user comments layer" ) ),
RR( _HKI( "User.Eco1" ), LAYER_3D_USER_ECO1, _HKI( "Show user ECO1 layer" ) ),
RR( _HKI( "User.Eco2" ), LAYER_3D_USER_ECO2, _HKI( "Show user ECO2 layer" ) ),
// text id tooltip
RR( _HKI( "Board Body" ), LAYER_3D_BOARD, _HKI( "Show board body" ) ),
RR( wxS( "F.Cu" ), LAYER_3D_COPPER_TOP, _HKI( "Show front copper / surface finish color" ) ),
RR( wxS( "B.Cu" ), LAYER_3D_COPPER_BOTTOM, _HKI( "Show back copper / surface finish color" ) ),
RR( _HKI( "Adhesive" ), LAYER_3D_ADHESIVE, _HKI( "Show adhesive" ) ),
RR( _HKI( "Solder Paste" ), LAYER_3D_SOLDERPASTE, _HKI( "Show solder paste" ) ),
RR( wxS( "F.Silkscreen" ), LAYER_3D_SILKSCREEN_TOP, _HKI( "Show front silkscreen" ) ),
RR( wxS( "B.Silkscreen" ), LAYER_3D_SILKSCREEN_BOTTOM, _HKI( "Show back silkscreen" ) ),
RR( wxS( "F.Mask" ), LAYER_3D_SOLDERMASK_TOP, _HKI( "Show front solder mask" ) ),
RR( wxS( "B.Mask" ), LAYER_3D_SOLDERMASK_BOTTOM, _HKI( "Show back solder mask" ) ),
RR( wxS( "User.Drawings" ), LAYER_3D_USER_DRAWINGS, _HKI( "Show user drawings layer" ) ),
RR( wxS( "User.Comments" ), LAYER_3D_USER_COMMENTS, _HKI( "Show user comments layer" ) ),
RR( wxS( "User.Eco1" ), LAYER_3D_USER_ECO1, _HKI( "Show user ECO1 layer" ) ),
RR( wxS( "User.Eco2" ), LAYER_3D_USER_ECO2, _HKI( "Show user ECO2 layer" ) ),
RR( wxS( "User.1" ), LAYER_3D_USER_1, _HKI( "Show user defined layer 1" ) ),
RR( wxS( "User.2" ), LAYER_3D_USER_2, _HKI( "Show user defined layer 2" ) ),
RR( wxS( "User.3" ), LAYER_3D_USER_3, _HKI( "Show user defined layer 3" ) ),
RR( wxS( "User.4" ), LAYER_3D_USER_4, _HKI( "Show user defined layer 4" ) ),
RR( wxS( "User.5" ), LAYER_3D_USER_5, _HKI( "Show user defined layer 5" ) ),
RR( wxS( "User.6" ), LAYER_3D_USER_6, _HKI( "Show user defined layer 6" ) ),
RR( wxS( "User.7" ), LAYER_3D_USER_7, _HKI( "Show user defined layer 7" ) ),
RR( wxS( "User.8" ), LAYER_3D_USER_8, _HKI( "Show user defined layer 8" ) ),
RR( wxS( "User.9" ), LAYER_3D_USER_9, _HKI( "Show user defined layer 9" ) ),
RR( wxS( "User.10" ), LAYER_3D_USER_10, _HKI( "Show user defined layer 10" ) ),
RR( wxS( "User.11" ), LAYER_3D_USER_11, _HKI( "Show user defined layer 11" ) ),
RR( wxS( "User.12" ), LAYER_3D_USER_12, _HKI( "Show user defined layer 12" ) ),
RR( wxS( "User.13" ), LAYER_3D_USER_13, _HKI( "Show user defined layer 13" ) ),
RR( wxS( "User.14" ), LAYER_3D_USER_14, _HKI( "Show user defined layer 14" ) ),
RR( wxS( "User.15" ), LAYER_3D_USER_15, _HKI( "Show user defined layer 15" ) ),
RR( wxS( "User.16" ), LAYER_3D_USER_16, _HKI( "Show user defined layer 16" ) ),
RR( wxS( "User.17" ), LAYER_3D_USER_17, _HKI( "Show user defined layer 17" ) ),
RR( wxS( "User.18" ), LAYER_3D_USER_18, _HKI( "Show user defined layer 18" ) ),
RR( wxS( "User.19" ), LAYER_3D_USER_19, _HKI( "Show user defined layer 19" ) ),
RR( wxS( "User.20" ), LAYER_3D_USER_20, _HKI( "Show user defined layer 20" ) ),
RR( wxS( "User.21" ), LAYER_3D_USER_21, _HKI( "Show user defined layer 21" ) ),
RR( wxS( "User.22" ), LAYER_3D_USER_22, _HKI( "Show user defined layer 22" ) ),
RR( wxS( "User.23" ), LAYER_3D_USER_23, _HKI( "Show user defined layer 23" ) ),
RR( wxS( "User.24" ), LAYER_3D_USER_24, _HKI( "Show user defined layer 24" ) ),
RR( wxS( "User.25" ), LAYER_3D_USER_25, _HKI( "Show user defined layer 25" ) ),
RR( wxS( "User.26" ), LAYER_3D_USER_26, _HKI( "Show user defined layer 26" ) ),
RR( wxS( "User.27" ), LAYER_3D_USER_27, _HKI( "Show user defined layer 27" ) ),
RR( wxS( "User.28" ), LAYER_3D_USER_28, _HKI( "Show user defined layer 28" ) ),
RR( wxS( "User.29" ), LAYER_3D_USER_29, _HKI( "Show user defined layer 29" ) ),
RR( wxS( "User.30" ), LAYER_3D_USER_30, _HKI( "Show user defined layer 30" ) ),
RR( wxS( "User.31" ), LAYER_3D_USER_31, _HKI( "Show user defined layer 31" ) ),
RR( wxS( "User.32" ), LAYER_3D_USER_32, _HKI( "Show user defined layer 32" ) ),
RR( wxS( "User.33" ), LAYER_3D_USER_33, _HKI( "Show user defined layer 33" ) ),
RR( wxS( "User.34" ), LAYER_3D_USER_34, _HKI( "Show user defined layer 34" ) ),
RR( wxS( "User.35" ), LAYER_3D_USER_35, _HKI( "Show user defined layer 35" ) ),
RR( wxS( "User.36" ), LAYER_3D_USER_36, _HKI( "Show user defined layer 36" ) ),
RR( wxS( "User.37" ), LAYER_3D_USER_37, _HKI( "Show user defined layer 37" ) ),
RR( wxS( "User.38" ), LAYER_3D_USER_38, _HKI( "Show user defined layer 38" ) ),
RR( wxS( "User.39" ), LAYER_3D_USER_39, _HKI( "Show user defined layer 39" ) ),
RR( wxS( "User.40" ), LAYER_3D_USER_40, _HKI( "Show user defined layer 40" ) ),
RR( wxS( "User.41" ), LAYER_3D_USER_41, _HKI( "Show user defined layer 41" ) ),
RR( wxS( "User.42" ), LAYER_3D_USER_42, _HKI( "Show user defined layer 42" ) ),
RR( wxS( "User.43" ), LAYER_3D_USER_43, _HKI( "Show user defined layer 43" ) ),
RR( wxS( "User.44" ), LAYER_3D_USER_44, _HKI( "Show user defined layer 44" ) ),
RR( wxS( "User.45" ), LAYER_3D_USER_45, _HKI( "Show user defined layer 45" ) ),
RR(),
RR( _HKI( "Through-hole Models" ), LAYER_3D_TH_MODELS, EDA_3D_ACTIONS::showTHT ),
RR( _HKI( "SMD Models" ), LAYER_3D_SMD_MODELS, EDA_3D_ACTIONS::showSMD ),
RR( _HKI( "Virtual Models" ), LAYER_3D_VIRTUAL_MODELS, EDA_3D_ACTIONS::showVirtual ),
RR( _HKI( "Models not in POS File" ), LAYER_3D_MODELS_NOT_IN_POS,
EDA_3D_ACTIONS::showNotInPosFile ),
RR( _HKI( "Models marked DNP" ), LAYER_3D_MODELS_MARKED_DNP, EDA_3D_ACTIONS::showDNP ),
RR( _HKI( "Model Bounding Boxes" ), LAYER_3D_BOUNDING_BOXES, EDA_3D_ACTIONS::showBBoxes ),
RR( _HKI( "Through-hole Models" ), LAYER_3D_TH_MODELS, EDA_3D_ACTIONS::showTHT ),
RR( _HKI( "SMD Models" ), LAYER_3D_SMD_MODELS, EDA_3D_ACTIONS::showSMD ),
RR( _HKI( "Virtual Models" ), LAYER_3D_VIRTUAL_MODELS, EDA_3D_ACTIONS::showVirtual ),
RR( _HKI( "Models not in POS File" ), LAYER_3D_MODELS_NOT_IN_POS, EDA_3D_ACTIONS::showNotInPosFile ),
RR( _HKI( "Models marked DNP" ), LAYER_3D_MODELS_MARKED_DNP, EDA_3D_ACTIONS::showDNP ),
RR( _HKI( "Model Bounding Boxes" ), LAYER_3D_BOUNDING_BOXES, EDA_3D_ACTIONS::showBBoxes ),
RR(),
RR( _HKI( "Values" ), LAYER_FP_VALUES, _HKI( "Show footprint values" ) ),
RR( _HKI( "References" ), LAYER_FP_REFERENCES, _HKI( "Show footprint references" ) ),
RR( _HKI( "Footprint Text" ), LAYER_FP_TEXT, _HKI( "Show all footprint text" ) ),
RR( _HKI( "Off-board Silkscreen" ), LAYER_3D_OFF_BOARD_SILK,
_HKI( "Do not clip silk layers to board outline" ) ),
RR( _HKI( "Values" ), LAYER_FP_VALUES, _HKI( "Show footprint values" ) ),
RR( _HKI( "References" ), LAYER_FP_REFERENCES, _HKI( "Show footprint references" ) ),
RR( _HKI( "Footprint Text" ), LAYER_FP_TEXT, _HKI( "Show all footprint text" ) ),
RR( _HKI( "Off-board Silkscreen" ), LAYER_3D_OFF_BOARD_SILK, _HKI( "Do not clip silk layers to board outline" ) ),
RR(),
RR( _HKI( "3D Axis" ), LAYER_3D_AXES, EDA_3D_ACTIONS::showAxis ),
RR( _HKI( "Background Start" ), LAYER_3D_BACKGROUND_TOP,
_HKI( "Background gradient start color" ) ),
RR( _HKI( "Background End" ), LAYER_3D_BACKGROUND_BOTTOM,
_HKI( "Background gradient end color" ) ),
RR( _HKI( "3D Axis" ), LAYER_3D_AXES, EDA_3D_ACTIONS::showAxis ),
RR( _HKI( "Background Start" ), LAYER_3D_BACKGROUND_TOP, _HKI( "Background gradient start color" ) ),
RR( _HKI( "Background End" ), LAYER_3D_BACKGROUND_BOTTOM, _HKI( "Background gradient end color" ) ),
};
// clang-format on
// The list of IDs that can have colors coming from the board stackup, and cannot be
// modified if use colors from stackup is activated
@@ -135,15 +177,14 @@ APPEARANCE_CONTROLS_3D::APPEARANCE_CONTROLS_3D( EDA_3D_VIEWER_FRAME* aParent,
cfg->m_UseStackupColors = aEvent.IsChecked();
UpdateLayerCtls();
syncLayerPresetSelection();
m_frame->NewDisplay( true );
} );
m_cbUseBoardEditorCopperColors = new wxCheckBox( m_panelLayers, wxID_ANY,
_( "Use board editor copper colors" ) );
_( "Use PCB editor copper colors" ) );
m_cbUseBoardEditorCopperColors->SetFont( infoFont );
m_cbUseBoardEditorCopperColors->SetToolTip(
_( "Use the board editor copper colors (openGL only)" ) );
m_cbUseBoardEditorCopperColors->SetToolTip( _( "Use the board editor layer colors for copper "
"layers (realtime renderer only)" ) );
m_cbUseBoardEditorCopperColors->Bind( wxEVT_CHECKBOX,
[this]( wxCommandEvent& aEvent )
@@ -152,14 +193,12 @@ APPEARANCE_CONTROLS_3D::APPEARANCE_CONTROLS_3D( EDA_3D_VIEWER_FRAME* aParent,
cfg->m_Render.use_board_editor_copper_colors = aEvent.IsChecked();
UpdateLayerCtls();
syncLayerPresetSelection();
m_frame->NewDisplay( true );
} );
m_panelLayersSizer->Add( m_cbUseBoardStackupColors, 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, 7 );
m_panelLayersSizer->Add( m_cbUseBoardStackupColors, 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, 5 );
m_panelLayersSizer->Add( m_cbUseBoardEditorCopperColors, 0,
wxEXPAND | wxTOP | wxLEFT | wxRIGHT, 7 );
wxEXPAND | wxALL, 5 );
m_cbLayerPresets->SetToolTip( wxString::Format( _( "Save and restore color and visibility "
"combinations.\n"
@@ -197,7 +236,7 @@ APPEARANCE_CONTROLS_3D::~APPEARANCE_CONTROLS_3D()
wxSize APPEARANCE_CONTROLS_3D::GetBestSize() const
{
DPI_SCALING_COMMON dpi( nullptr, m_frame );
wxSize size( 220 * dpi.GetScaleFactor(), 480 * dpi.GetScaleFactor() );
wxSize size( 228 * dpi.GetScaleFactor(), 480 * dpi.GetScaleFactor() );
return size;
}
@@ -273,22 +312,19 @@ void APPEARANCE_CONTROLS_3D::CommonSettingsChanged()
rebuildControls();
UpdateLayerCtls();
syncLayerPresetSelection();
const wxString& currentPreset = m_frame->GetAdapter().m_Cfg->m_CurrentPreset;
if( currentPreset == FOLLOW_PCB || currentPreset == FOLLOW_PLOT_SETTINGS )
updateLayerPresetWidget( currentPreset );
else
syncLayerPresetSelection();
}
void APPEARANCE_CONTROLS_3D::ApplyLayerPreset( const wxString& aPresetName )
{
if( aPresetName == FOLLOW_PCB || aPresetName == FOLLOW_PLOT_SETTINGS )
{
m_frame->GetAdapter().m_Cfg->m_CurrentPreset = aPresetName;
UpdateLayerCtls();
m_frame->NewDisplay( true );
}
else if( LAYER_PRESET_3D* preset = m_frame->GetAdapter().m_Cfg->FindPreset( aPresetName ) )
{
doApplyLayerPreset( *preset );
}
doApplyLayerPreset( aPresetName );
// Move to front of MRU list
if( m_presetMRU.Index( aPresetName ) != wxNOT_FOUND )
@@ -420,6 +456,10 @@ void APPEARANCE_CONTROLS_3D::OnLayerVisibilityChanged( int aLayer, bool isVisibl
default:
visibleLayers.set( aLayer, isVisible );
if( aLayer >= LAYER_3D_USER_1 && aLayer <= LAYER_3D_USER_45 )
killFollow = true;
break;
}
@@ -453,21 +493,42 @@ void APPEARANCE_CONTROLS_3D::onColorSwatchChanged( COLOR_SWATCH* aSwatch )
std::map<int, COLOR4D> colors = m_frame->GetAdapter().GetLayerColors();
m_frame->GetAdapter().SetVisibleLayers( visibleLayers );
m_frame->GetAdapter().SetLayerColors( colors );
int layer = aSwatch->GetId();
COLOR4D newColor = aSwatch->GetSwatchColor();
colors[ layer ] = newColor;
// The internals of the 3D viewer only supports a single color for copper, which must
// be applied to all copper layers.
COLOR_SWATCH* otherSwatch = nullptr;
if( layer == LAYER_3D_COPPER_TOP )
{
colors[ LAYER_3D_COPPER_BOTTOM ] = newColor;
otherSwatch = m_layerSettingsMap[LAYER_3D_COPPER_BOTTOM]->m_Ctl_color;
}
else if( layer == LAYER_3D_COPPER_BOTTOM )
{
colors[ LAYER_3D_COPPER_TOP ] = newColor;
otherSwatch = m_layerSettingsMap[LAYER_3D_COPPER_TOP]->m_Ctl_color;
}
if( otherSwatch )
{
// Don't send an event, because that will cause an event loop
otherSwatch->SetSwatchColor( newColor, false );
}
m_frame->GetAdapter().SetLayerColors( colors );
syncLayerPresetSelection();
const wxString& currentPreset = m_frame->GetAdapter().m_Cfg->m_CurrentPreset;
if( currentPreset == FOLLOW_PCB || currentPreset == FOLLOW_PLOT_SETTINGS )
updateLayerPresetWidget( currentPreset );
else
syncLayerPresetSelection();
m_frame->NewDisplay( true );
}
@@ -480,6 +541,7 @@ void APPEARANCE_CONTROLS_3D::rebuildLayers()
std::bitset<LAYER_3D_END> visibleLayers = m_frame->GetAdapter().GetVisibleLayers();
std::map<int, COLOR4D> colors = m_frame->GetAdapter().GetLayerColors();
std::map<int, COLOR4D> defaultColors = m_frame->GetAdapter().GetDefaultColors();
LSET enabled = m_frame->GetBoard()->GetEnabledLayers();
m_layerSettings.clear();
m_layersOuterSizer->Clear( true );
@@ -534,8 +596,13 @@ void APPEARANCE_CONTROLS_3D::rebuildLayers()
sizer->AddSpacer( 5 );
wxStaticText* label = new wxStaticText( m_windowLayers, layer,
aSetting->GetLabel() );
wxString layerName = aSetting->GetLabel();
PCB_LAYER_ID boardLayer = Map3DLayerToPCBLayer( layer );
if( boardLayer != UNDEFINED_LAYER )
layerName = m_frame->GetBoard()->GetLayerName( boardLayer );
wxStaticText* label = new wxStaticText( m_windowLayers, layer, layerName );
label->Wrap( -1 );
label->SetToolTip( aSetting->GetTooltip() );
@@ -580,9 +647,18 @@ void APPEARANCE_CONTROLS_3D::rebuildLayers()
std::unique_ptr<APPEARANCE_SETTING_3D>& setting = m_layerSettings.back();
if( setting->m_Spacer )
{
m_layersOuterSizer->AddSpacer( m_pointSize );
}
else if( setting->m_Id >= LAYER_3D_USER_1 && setting->m_Id <= LAYER_3D_USER_45 )
{
if( enabled.test( Map3DLayerToPCBLayer( setting->m_Id ) ) )
appendLayer( setting );
}
else
{
appendLayer( setting );
}
m_layerSettingsMap[setting->m_Id] = setting.get();
}
@@ -731,17 +807,11 @@ void APPEARANCE_CONTROLS_3D::onLayerPresetChanged( wxCommandEvent& aEvent )
if( index == 0 )
{
name = FOLLOW_PCB;
cfg->m_CurrentPreset = name;
UpdateLayerCtls();
m_frame->NewDisplay( true );
doApplyLayerPreset( FOLLOW_PCB );
}
else if( index == 1 )
{
name = FOLLOW_PLOT_SETTINGS;
cfg->m_CurrentPreset = name;
UpdateLayerCtls();
m_frame->NewDisplay( true );
doApplyLayerPreset( FOLLOW_PLOT_SETTINGS );
}
else if( index == count - 3 )
{
@@ -821,16 +891,16 @@ void APPEARANCE_CONTROLS_3D::onLayerPresetChanged( wxCommandEvent& aEvent )
if( cfg->m_CurrentPreset == name )
cfg->m_CurrentPreset = wxEmptyString;
m_presetMRU.Remove( name );
if( m_presetMRU.Index( name ) >= 0 )
m_presetMRU.Remove( name );
}
resetSelection();
return;
}
else if( LAYER_PRESET_3D* preset = cfg->FindPreset( m_cbLayerPresets->GetStringSelection() ) )
else
{
name = preset->name;
doApplyLayerPreset( *preset );
doApplyLayerPreset( m_cbLayerPresets->GetStringSelection() );
}
// Move to front of MRU list
@@ -843,16 +913,28 @@ void APPEARANCE_CONTROLS_3D::onLayerPresetChanged( wxCommandEvent& aEvent )
}
void APPEARANCE_CONTROLS_3D::doApplyLayerPreset( const LAYER_PRESET_3D& aPreset )
void APPEARANCE_CONTROLS_3D::doApplyLayerPreset( const wxString& aPresetName )
{
BOARD_ADAPTER& adapter = m_frame->GetAdapter();
adapter.m_Cfg->m_CurrentPreset = aPreset.name;
adapter.SetVisibleLayers( aPreset.layers );
adapter.SetLayerColors( aPreset.colors );
if( aPresetName == FOLLOW_PCB || aPresetName == FOLLOW_PLOT_SETTINGS )
{
adapter.m_Cfg->m_CurrentPreset = aPresetName;
adapter.SetVisibleLayers( adapter.GetVisibleLayers() );
}
else if( LAYER_PRESET_3D* preset = adapter.m_Cfg->FindPreset( aPresetName ) )
{
adapter.m_Cfg->m_CurrentPreset = aPresetName;
adapter.SetVisibleLayers( preset->layers );
adapter.SetLayerColors( preset->colors );
if( aPreset.name.Lower() == _( "legacy colors" ) )
adapter.m_Cfg->m_UseStackupColors = false;
if( preset->name.Lower() == _( "legacy colors" ) )
adapter.m_Cfg->m_UseStackupColors = false;
}
else
{
return;
}
UpdateLayerCtls();
m_frame->NewDisplay( true );
@@ -893,7 +975,9 @@ void APPEARANCE_CONTROLS_3D::onViewportChanged( wxCommandEvent& aEvent )
if( !viewport->name.IsEmpty() )
{
m_viewportMRU.Remove( viewport->name );
if( m_viewportMRU.Index( viewport->name ) != wxNOT_FOUND )
m_viewportMRU.Remove( viewport->name );
m_viewportMRU.Insert( viewport->name, 0 );
}
}
@@ -929,7 +1013,9 @@ void APPEARANCE_CONTROLS_3D::onViewportChanged( wxCommandEvent& aEvent )
{
m_viewports[name].matrix = m_frame->GetCurrentCamera().GetViewMatrix();
index = m_cbViewports->FindString( name );
m_viewportMRU.Remove( name );
if( m_viewportMRU.Index( name ) != wxNOT_FOUND )
m_viewportMRU.Remove( name );
}
m_cbViewports->SetSelection( index );
@@ -964,8 +1050,10 @@ void APPEARANCE_CONTROLS_3D::onViewportChanged( wxCommandEvent& aEvent )
{
m_viewports.erase( viewportName );
m_cbViewports->Delete( idx );
m_viewportMRU.Remove( viewportName );
}
if( m_viewportMRU.Index( viewportName ) != wxNOT_FOUND )
m_viewportMRU.Remove( viewportName );
}
if( m_lastSelectedViewport )
+7 -5
View File
@@ -18,8 +18,7 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef APPEARANCE_CONTROLS_3D_H
#define APPEARANCE_CONTROLS_3D_H
#pragma once
#include <vector>
@@ -113,6 +112,11 @@ public:
APPEARANCE_CONTROLS_3D( EDA_3D_VIEWER_FRAME* aParent, wxWindow* aFocusOwner );
~APPEARANCE_CONTROLS_3D();
// We own at least one list of raw pointers. Don't let the compiler fill in copy c'tors that
// will only land us in trouble.
APPEARANCE_CONTROLS_3D( const APPEARANCE_CONTROLS_3D& ) = delete;
APPEARANCE_CONTROLS_3D& operator=( const APPEARANCE_CONTROLS_3D& ) = delete;
wxSize GetBestSize() const;
void OnDarkModeToggle();
void OnLayerVisibilityChanged( int aLayer, bool isVisible );
@@ -157,7 +161,7 @@ private:
void onLayerPresetChanged( wxCommandEvent& aEvent ) override;
void doApplyLayerPreset( const LAYER_PRESET_3D& aPreset );
void doApplyLayerPreset( const wxString& aPresetName );
void onViewportChanged( wxCommandEvent& aEvent ) override;
void onUpdateViewportsCb( wxUpdateUIEvent& aEvent ) override;
@@ -189,5 +193,3 @@ private:
wxCheckBox* m_cbUseBoardStackupColors;
wxCheckBox* m_cbUseBoardEditorCopperColors;
};
#endif
@@ -11,7 +11,7 @@
APPEARANCE_CONTROLS_3D_BASE::APPEARANCE_CONTROLS_3D_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : WX_PANEL( parent, id, pos, size, style, name )
{
this->SetMinSize( wxSize( 200,360 ) );
this->SetMinSize( wxSize( 210,360 ) );
m_sizerOuter = new wxBoxSizer( wxVERTICAL );
@@ -45,7 +45,7 @@
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="maximum_size"></property>
<property name="minimum_size">200,360</property>
<property name="minimum_size">210,360</property>
<property name="name">APPEARANCE_CONTROLS_3D_BASE</property>
<property name="pos"></property>
<property name="size">-1,-1</property>
+35 -28
View File
@@ -27,6 +27,7 @@
#include "panel_preview_3d_model.h"
#include <dialogs/dialog_unit_entry.h>
#include <3d_canvas/eda_3d_canvas.h>
#include <3d_rendering/opengl/render_3d_opengl.h>
#include <tool/tool_manager.h>
#include <tool/tool_dispatcher.h>
#include <tools/eda_3d_actions.h>
@@ -64,12 +65,11 @@ PANEL_PREVIEW_3D_MODEL::PANEL_PREVIEW_3D_MODEL( wxWindow* aParent, PCB_BASE_FRAM
m_dummyBoard = new BOARD();
m_dummyBoard->SetProject( &aFrame->Prj(), true );
m_dummyBoard->SetEmbeddedFilesDelegate( aFrame->GetBoard() );
// This board will only be used to hold a footprint for viewing
m_dummyBoard->SetBoardUse( BOARD_USE::FPHOLDER );
m_bodyStyleShowAll = true;
BOARD_DESIGN_SETTINGS parent_bds = aFrame->GetDesignSettings();
BOARD_DESIGN_SETTINGS& dummy_bds = m_dummyBoard->GetDesignSettings();
dummy_bds.SetBoardThickness( parent_bds.GetBoardThickness() );
@@ -185,6 +185,10 @@ PANEL_PREVIEW_3D_MODEL::PANEL_PREVIEW_3D_MODEL( wxWindow* aParent, PCB_BASE_FRAM
PANEL_PREVIEW_3D_MODEL::~PANEL_PREVIEW_3D_MODEL()
{
// Shutdown all running tools
if( m_toolManager )
m_toolManager->ShutdownAllTools();
// Restore the 3D viewer Render settings, that can be modified by the panel tools
if( m_boardAdapter.m_Cfg )
m_boardAdapter.m_Cfg->m_Render = m_initialRender;
@@ -225,16 +229,6 @@ void PANEL_PREVIEW_3D_MODEL::loadSettings()
m_previewPane->SetAnimationEnabled( cfg->m_Camera.animation_enabled );
m_previewPane->SetMovingSpeedMultiplier( cfg->m_Camera.moving_speed_multiplier );
m_previewPane->SetProjectionMode( cfg->m_Camera.projection_mode );
// Ensure the board body is always shown, and do not use the settings of the 3D viewer
cfg->m_Render.show_copper_top = m_bodyStyleShowAll;
cfg->m_Render.show_copper_bottom = m_bodyStyleShowAll;
cfg->m_Render.show_soldermask_top = m_bodyStyleShowAll;
cfg->m_Render.show_soldermask_bottom = m_bodyStyleShowAll;
cfg->m_Render.show_solderpaste = m_bodyStyleShowAll;
cfg->m_Render.show_zones = m_bodyStyleShowAll;
cfg->m_Render.show_board_body = m_bodyStyleShowAll;
cfg->m_Render.use_board_editor_copper_colors = false;
}
}
@@ -286,7 +280,7 @@ wxString PANEL_PREVIEW_3D_MODEL::formatRotationValue( double aValue )
wxString PANEL_PREVIEW_3D_MODEL::formatOffsetValue( double aValue )
{
// Convert from internal units (mm) to user units
if( m_userUnits == EDA_UNITS::INCHES )
if( m_userUnits == EDA_UNITS::INCH )
aValue /= 25.4;
else if( m_userUnits == EDA_UNITS::MILS )
aValue /= 25.4 / 1e3;
@@ -405,13 +399,7 @@ void PANEL_PREVIEW_3D_MODEL::setBodyStyleView( wxCommandEvent& event )
if( !cfg )
return;
m_bodyStyleShowAll = !m_bodyStyleShowAll;
cfg->m_Render.show_soldermask_top = m_bodyStyleShowAll;
cfg->m_Render.show_soldermask_bottom = m_bodyStyleShowAll;
cfg->m_Render.show_solderpaste = m_bodyStyleShowAll;
cfg->m_Render.show_zones = m_bodyStyleShowAll;
cfg->m_Render.show_board_body = m_bodyStyleShowAll;
cfg->m_Render.preview_show_board_body = !cfg->m_Render.preview_show_board_body;
m_previewPane->ReloadRequest();
m_previewPane->Refresh();
@@ -444,7 +432,9 @@ void PANEL_PREVIEW_3D_MODEL::View3DSettings( wxCommandEvent& event )
void PANEL_PREVIEW_3D_MODEL::doIncrementScale( wxSpinEvent& event, double aSign )
{
wxSpinButton* spinCtrl = (wxSpinButton*) event.GetEventObject();
wxSpinButton* spinCtrl = dynamic_cast<wxSpinButton*>( event.GetEventObject() );
wxCHECK( spinCtrl, /* void */ );
wxTextCtrl * textCtrl = xscale;
@@ -471,7 +461,10 @@ void PANEL_PREVIEW_3D_MODEL::doIncrementScale( wxSpinEvent& event, double aSign
void PANEL_PREVIEW_3D_MODEL::doIncrementRotation( wxSpinEvent& aEvent, double aSign )
{
wxSpinButton* spinCtrl = (wxSpinButton*) aEvent.GetEventObject();
wxSpinButton* spinCtrl = dynamic_cast<wxSpinButton*>( aEvent.GetEventObject() );
wxCHECK( spinCtrl, /* void */ );
wxTextCtrl* textCtrl = xrot;
if( spinCtrl == m_spinYrot )
@@ -497,7 +490,9 @@ void PANEL_PREVIEW_3D_MODEL::doIncrementRotation( wxSpinEvent& aEvent, double aS
void PANEL_PREVIEW_3D_MODEL::doIncrementOffset( wxSpinEvent& event, double aSign )
{
wxSpinButton* spinCtrl = (wxSpinButton*) event.GetEventObject();
wxSpinButton* spinCtrl = dynamic_cast<wxSpinButton*>( event.GetEventObject() );
wxCHECK( spinCtrl, /* void */ );
wxTextCtrl * textCtrl = xoff;
@@ -511,7 +506,7 @@ void PANEL_PREVIEW_3D_MODEL::doIncrementOffset( wxSpinEvent& event, double aSign
if( wxGetMouseState().ShiftDown( ) )
step_mm = OFFSET_INCREMENT_MM_FINE;
if( m_userUnits == EDA_UNITS::MILS || m_userUnits == EDA_UNITS::INCHES )
if( m_userUnits == EDA_UNITS::MILS || m_userUnits == EDA_UNITS::INCH )
{
step_mm = 25.4*OFFSET_INCREMENT_MIL/1000;
@@ -533,7 +528,9 @@ void PANEL_PREVIEW_3D_MODEL::doIncrementOffset( wxSpinEvent& event, double aSign
void PANEL_PREVIEW_3D_MODEL::onMouseWheelScale( wxMouseEvent& event )
{
wxTextCtrl* textCtrl = (wxTextCtrl*) event.GetEventObject();
wxTextCtrl* textCtrl = dynamic_cast<wxTextCtrl*>( event.GetEventObject() );
wxCHECK( textCtrl, /* void */ );
double step = SCALE_INCREMENT;
@@ -556,7 +553,9 @@ void PANEL_PREVIEW_3D_MODEL::onMouseWheelScale( wxMouseEvent& event )
void PANEL_PREVIEW_3D_MODEL::onMouseWheelRot( wxMouseEvent& event )
{
wxTextCtrl* textCtrl = (wxTextCtrl*) event.GetEventObject();
wxTextCtrl* textCtrl = dynamic_cast<wxTextCtrl*>( event.GetEventObject() );
wxCHECK( textCtrl, /* void */ );
double step = ROTATION_INCREMENT;
@@ -579,14 +578,16 @@ void PANEL_PREVIEW_3D_MODEL::onMouseWheelRot( wxMouseEvent& event )
void PANEL_PREVIEW_3D_MODEL::onMouseWheelOffset( wxMouseEvent& event )
{
wxTextCtrl* textCtrl = (wxTextCtrl*) event.GetEventObject();
wxTextCtrl* textCtrl = dynamic_cast<wxTextCtrl*>( event.GetEventObject() );
wxCHECK( textCtrl, /* void */ );
double step_mm = OFFSET_INCREMENT_MM;
if( event.ShiftDown( ) )
step_mm = OFFSET_INCREMENT_MM_FINE;
if( m_userUnits == EDA_UNITS::MILS || m_userUnits == EDA_UNITS::INCHES )
if( m_userUnits == EDA_UNITS::MILS || m_userUnits == EDA_UNITS::INCH )
{
step_mm = 25.4*OFFSET_INCREMENT_MIL/1000.0;
@@ -660,6 +661,12 @@ void PANEL_PREVIEW_3D_MODEL::UpdateDummyFootprint( bool aReloadRequired )
}
void PANEL_PREVIEW_3D_MODEL::SetEmbeddedFilesDelegate( EMBEDDED_FILES* aDelegate )
{
m_dummyBoard->SetEmbeddedFilesDelegate( aDelegate );
}
void PANEL_PREVIEW_3D_MODEL::onModify()
{
KIWAY_HOLDER* kiwayHolder = dynamic_cast<KIWAY_HOLDER*>( wxGetTopLevelParent( this ) );
+7 -4
View File
@@ -59,6 +59,7 @@ wxDECLARE_EVENT( wxCUSTOM_PANEL_SHOWN_EVENT, wxCommandEvent );
class WX_INFOBAR;
class S3D_CACHE;
class FILENAME_RESOLVER;
class EMBEDDED_FILES;
class BOARD;
class BOARD_ADAPTER;
class FOOTPRINT;
@@ -97,6 +98,8 @@ public:
*/
void UpdateDummyFootprint( bool aRelaodRequired = true );
void SetEmbeddedFilesDelegate( EMBEDDED_FILES* aDelegate );
/**
* Get the dummy footprint that is used for previewing the 3D model.
* We use this to hold the temporary 3D model shapes.
@@ -222,11 +225,11 @@ private:
int m_selected; /// Index into m_parentInfoList
EDA_UNITS m_userUnits;
bool m_bodyStyleShowAll; /// true if the board body is show
/// The 3d viewer Render initial settings (must be saved and restored)
EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS m_initialRender;
std::unique_ptr<NL_FOOTPRINT_PROPERTIES_PLUGIN> m_spaceMouse;
/// The 3d viewer Render initial settings (must be saved and restored)
EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS m_initialRender;
std::unique_ptr<NL_FOOTPRINT_PROPERTIES_PLUGIN> m_spaceMouse;
};
#endif // PANEL_PREVIEW_3D_MODEL_H
+2 -1
View File
@@ -168,9 +168,9 @@
Thomas Gambier
Ashutosh Gangwar
Alessandro Gatti
Zenn Geeraerts
Alex Gellen
Robert Antoni Buj Gelonch
Robert Antoni Buj Genlonch
Hal Gentz
Lucas Gerads
Davide Gerhard
@@ -228,6 +228,7 @@
Mario Hros
Hubert Hu
Josue Huaroto
Eli Hughes
Huibean
Matt Huszagh
José Ignacio
+6 -1
View File
@@ -22,7 +22,12 @@
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
#
cmake_minimum_required( VERSION 3.21 FATAL_ERROR )
if( MSVC )
# CMake 3.28.1 or higher required for MSVC ARM builds for armasm64.exe support
cmake_minimum_required( VERSION 3.28.1 FATAL_ERROR )
else()
cmake_minimum_required( VERSION 3.21 FATAL_ERROR )
endif()
# Generate DEPFILES without transforming relative paths
cmake_policy( SET CMP0116 OLD )
+38 -3
View File
@@ -6,7 +6,12 @@
},
{
"environment": "vcpkg",
"VcPkgDir": "D:/vcpkg/"
"VcPkgDir": "D:/vcpkg/",
"VCPKG_BINARY_SOURCES": "nuget,kicad-gitlab,read"
},
{
"environment": "swig",
"SwigExePath": "D:/swigwin-4.1.1/swig.exe"
}
],
"configurations": [
@@ -14,7 +19,7 @@
"name": "x64-Debug",
"generator": "Ninja",
"configurationType": "Debug",
"inheritEnvironments": [ "msvc_x64_x64", "vcpkg" ],
"inheritEnvironments": [ "msvc_x64_x64", "vcpkg", "swig"],
"buildRoot": "${env.BuildDir}\\${name}",
"installRoot": "${env.InstallDir}\\${name}",
"cmakeCommandArgs": "",
@@ -30,6 +35,21 @@
"name": "KICAD_WIN32_DPI_AWARE",
"value": "ON",
"type": "BOOL"
},
{
"name": "SWIG_EXECUTABLE",
"value": "${env.SwigExePath}",
"type": "STRING"
},
{
"name": "VCPKG_OVERLAY_TRIPLETS",
"value": "${workspaceRoot}/tools/custom_vcpkg_triplets",
"type": "STRING"
},
{
"name": "VCPKG_INSTALL_OPTIONS",
"value": "--x-abi-tools-use-exact-versions",
"type": "STRING"
}
],
"cmakeToolchain": "${env.VcPkgDir}/scripts/buildsystems/vcpkg.cmake"
@@ -38,7 +58,7 @@
"name": "x64-Release",
"generator": "Ninja",
"configurationType": "RelWithDebInfo",
"inheritEnvironments": [ "msvc_x64_x64", "vcpkg" ],
"inheritEnvironments": [ "msvc_x64_x64", "vcpkg", "swig"],
"buildRoot": "${env.BuildDir}\\${name}",
"installRoot": "${env.InstallDir}\\${name}",
"cmakeCommandArgs": "",
@@ -54,6 +74,21 @@
"name": "KICAD_WIN32_DPI_AWARE",
"value": "ON",
"type": "BOOL"
},
{
"name": "SWIG_EXECUTABLE",
"value": "${env.SwigExePath}",
"type": "STRING"
},
{
"name": "VCPKG_OVERLAY_TRIPLETS",
"value": "${workspaceRoot}/tools/custom_vcpkg_triplets",
"type": "STRING"
},
{
"name": "VCPKG_INSTALL_OPTIONS",
"value": "--x-abi-tools-use-exact-versions",
"type": "STRING"
}
],
"cmakeToolchain": "${env.VcPkgDir}/scripts/buildsystems/vcpkg.cmake"
+107
View File
@@ -42,12 +42,45 @@ message BoardStackupResponse
kiapi.board.BoardStackup stackup = 1;
}
// Changes the stackup for the given board according to the contents of the message (**not yet implemented**)
// WARNING: any existing content on layers that are removed by this call is deleted. This operation cannot be undone.
// Returns BoardStackupResponse with the updated stackup, in normalized form
message UpdateBoardStackup
{
kiapi.common.types.DocumentSpecifier board = 1;
kiapi.board.BoardStackup stackup = 2;
}
message GetBoardEnabledLayers
{
kiapi.common.types.DocumentSpecifier board = 1;
}
message BoardEnabledLayersResponse
{
// The number of copper layers enabled in this board.
uint32 copper_layer_count = 1;
// A list of all layers enabled in this board, including copper layers and ones which cannot be disabled.
repeated kiapi.board.types.BoardLayer layers = 2;
}
// Changes which layers are enabled in the board stackup
// WARNING: any existing content on layers that are removed by this call is deleted. This operation cannot be undone.
// Returns BoardEnabledLayersResponse with the updated layer set.
message SetBoardEnabledLayers
{
kiapi.common.types.DocumentSpecifier board = 1;
// The number of copper layers to enable in the board. Currently, this must be an even number >= 2.
uint32 copper_layer_count = 2;
// The non-copper layers to enable. Note that any copper layers in this list are ignored; copper layers are enabled
// by setting copper_layer_count. Note that the F/B.Courtyard, Edge.Cuts, and Margin layers cannot be disabled and
// will be present in the board even if they are omitted from this list.
repeated kiapi.board.types.BoardLayer layers = 3;
}
message GetGraphicsDefaults
{
kiapi.common.types.DocumentSpecifier board = 1;
@@ -58,6 +91,44 @@ message GraphicsDefaultsResponse
kiapi.board.GraphicsDefaults defaults = 1;
}
enum BoardOriginType
{
BOT_UNKNOWN = 0;
BOT_GRID = 1;
BOT_DRILL = 2;
}
// Returns a Vector2 with the specified origin point
message GetBoardOrigin
{
kiapi.common.types.DocumentSpecifier board = 1;
BoardOriginType type = 2;
}
message SetBoardOrigin
{
kiapi.common.types.DocumentSpecifier board = 1;
BoardOriginType type = 2;
kiapi.common.types.Vector2 origin = 3;
}
message GetBoardLayerName
{
kiapi.common.types.DocumentSpecifier board = 1;
kiapi.board.types.BoardLayer layer = 2;
}
message BoardLayerNameResponse
{
// The name of the layer shown in the KiCad GUI, which may be a default value like "F.Cu" or may
// have been customized by the user.
string name = 1;
}
/*
* Net management
*/
@@ -165,6 +236,42 @@ message PadShapeAsPolygonResponse
repeated kiapi.common.types.PolygonWithHoles polygons = 2;
}
// Tests if the given set of items with padstacks (pads or vias) has content on the given set of layers.
// This is a dynamic call rather than a property of the padstack because pads and vias can be set to only include
// shapes on connected copper layers, and whether or not the pad is connected can't be determined in isolation.
// To optimize API call performance, multiple items and multiple layers to test may be passed in with this
// command message. The return will include the results for each valid item on each valid layer.
// Note that not all layers make sense for a given item (for example, testing against BL_UNDEFINED never makes
// sense). In general, the internal KiCad APIs will not return an error when testing non-sensical layers for a given
// item, and instead will return a default of "true" for any such layers.
message CheckPadstackPresenceOnLayers
{
kiapi.common.types.DocumentSpecifier board = 1;
repeated kiapi.common.types.KIID items = 2;
repeated kiapi.board.types.BoardLayer layers = 3;
}
enum PadstackPresence
{
PSP_UNKNOWN = 0;
PSP_PRESENT = 1; // The padstack has a shape on a given layer (is flashed)
PSP_NOT_PRESENT = 2; // The padstack has no shape on a given layer (is not flashed)
}
message PadstackPresenceEntry
{
kiapi.common.types.KIID item = 1;
kiapi.board.types.BoardLayer layer = 2;
PadstackPresence presence = 3;
}
message PadstackPresenceResponse
{
repeated PadstackPresenceEntry entries = 1;
}
// PCB editor commands
// returns BoardLayers
+79
View File
@@ -89,6 +89,42 @@ enum BoardLayer
BL_User_8 = 60;
BL_User_9 = 61;
BL_Rescue = 62;
BL_User_10 = 63;
BL_User_11 = 64;
BL_User_12 = 65;
BL_User_13 = 66;
BL_User_14 = 67;
BL_User_15 = 68;
BL_User_16 = 69;
BL_User_17 = 70;
BL_User_18 = 71;
BL_User_19 = 72;
BL_User_20 = 73;
BL_User_21 = 74;
BL_User_22 = 75;
BL_User_23 = 76;
BL_User_24 = 77;
BL_User_25 = 78;
BL_User_26 = 79;
BL_User_27 = 80;
BL_User_28 = 81;
BL_User_29 = 82;
BL_User_30 = 83;
BL_User_31 = 84;
BL_User_32 = 85;
BL_User_33 = 86;
BL_User_34 = 87;
BL_User_35 = 88;
BL_User_36 = 89;
BL_User_37 = 90;
BL_User_38 = 91;
BL_User_39 = 92;
BL_User_40 = 93;
BL_User_41 = 94;
BL_User_42 = 95;
BL_User_43 = 96;
BL_User_44 = 97;
BL_User_45 = 98;
}
message NetCode
@@ -428,6 +464,18 @@ message ThermalSpokeSettings
kiapi.common.types.Distance gap = 3;
}
message SymbolPinInfo
{
// The pin name for the associated symbol pin, if one exists
string name = 1;
// The electrical type of the associated symbol pin, if one exists (EPT_UNKNOWN if not)
kiapi.common.types.ElectricalPinType type = 2;
// True if the pin is attached to a no-connect marker in the schematic
bool no_connect = 3;
}
message Pad
{
kiapi.common.types.KIID id = 1;
@@ -442,6 +490,13 @@ message Pad
// Copper-to-copper clearance override
kiapi.common.types.Distance copper_clearance_override = 8;
// Since: 9.0.4
kiapi.common.types.Distance pad_to_die_length = 9;
// Information about the associated symbol pin, if one exists
// Since: 9.0.7
SymbolPinInfo symbol_pin = 10;
}
enum ZoneType
@@ -768,6 +823,9 @@ message Field
FieldId id = 1;
string name = 2;
BoardText text = 3;
// Since 9.0.1
bool visible = 4;
}
enum FootprintMountingStyle
@@ -788,6 +846,9 @@ message FootprintAttributes
bool exempt_from_courtyard_requirement = 6;
bool do_not_populate = 7;
FootprintMountingStyle mounting_style = 8;
// Since: 9.0.7
bool allow_soldermask_bridges = 9;
}
message NetTieDefinition
@@ -857,4 +918,22 @@ message FootprintInstance
FootprintAttributes attributes = 11;
FootprintDesignRuleOverrides overrides = 12;
// The sheet path to the associated symbol for this footprint instance, if one exists
kiapi.common.types.SheetPath symbol_path = 13;
// The name of the hierarchical sheet the associated symbol for this footprint exists on,
// or the empty string if there is no associated symbol
// Since: 9.0.7
string symbol_sheet_name = 14;
// The filename of the hierarchical sheet the associated symbol for this footprint exists on,
// or the empty string if there is no associated symbol
// Since: 9.0.7
string symbol_sheet_filename = 15;
// The the footprint filters given by the symbol this footprint is associated with,
// or the empty string if there is no associated symbol
// Since: 9.0.7
string symbol_footprint_filters = 16;
}
+27 -2
View File
@@ -291,7 +291,10 @@ message TextAttributes
bool italic = 7;
bool bold = 8;
bool underlined = 9;
// Deprecated since 9.0.1 (text items are now always visible, only Fields can be hidden)
bool visible = 10;
bool mirrored = 11;
bool multiline = 12;
bool keep_upright = 13;
@@ -305,7 +308,7 @@ message Text
kiapi.common.types.Vector2 position = 2;
kiapi.common.types.TextAttributes attributes = 3;
// Reserved for future use; base objects don't support locking right nos
// Reserved for future use; base objects don't support locking right now
//kiapi.common.types.LockedState locked = 4;
string text = 5;
@@ -318,7 +321,7 @@ message TextBox
kiapi.common.types.Vector2 bottom_right = 3;
kiapi.common.types.TextAttributes attributes = 4;
// Reserved for future use; base objects don't support locking right nos
// Reserved for future use; base objects don't support locking right now
//kiapi.common.types.LockedState locked = 5;
string text = 6;
@@ -448,3 +451,25 @@ enum MapMergeMode
// The existing map will be cleared and replaced with the incoming map
MMM_REPLACE = 2;
}
enum ElectricalPinType
{
EPT_UNKNOWN = 0;
EPT_INPUT = 1;
EPT_OUTPUT = 2;
EPT_BIDIRECTIONAL = 3;
EPT_TRISTATE = 4;
EPT_PASSIVE = 5;
// A free pin is not internally connected and may connect to any net (route-through)
EPT_FREE = 6;
EPT_UNSPECIFIED = 7;
EPT_POWER_INPUT = 8;
EPT_POWER_OUTPUT = 9;
EPT_OPEN_COLLECTOR = 10;
EPT_OPEN_EMITTER = 11;
// A no-connect pin should not be connected to any net
EPT_NO_CONNECT = 12;
}
+14 -9
View File
@@ -51,7 +51,7 @@ IMAGE_SIZE::IMAGE_SIZE()
m_outputSize = 0.0;
m_originalDPI = DEFAULT_DPI;
m_originalSizePixels = 0;
m_unit = EDA_UNITS::MILLIMETRES;
m_unit = EDA_UNITS::MM;
}
@@ -61,9 +61,9 @@ void IMAGE_SIZE::SetOutputSizeFromInitialImageSize()
m_originalDPI = std::max( 1, m_originalDPI );
// Set the m_outputSize value from the m_originalSizePixels and the selected unit
if( m_unit == EDA_UNITS::MILLIMETRES )
if( m_unit == EDA_UNITS::MM )
m_outputSize = (double)GetOriginalSizePixels() / m_originalDPI * 25.4;
else if( m_unit == EDA_UNITS::INCHES )
else if( m_unit == EDA_UNITS::INCH )
m_outputSize = (double)GetOriginalSizePixels() / m_originalDPI;
else
m_outputSize = m_originalDPI;
@@ -74,9 +74,9 @@ int IMAGE_SIZE::GetOutputDPI()
{
int outputDPI;
if( m_unit == EDA_UNITS::MILLIMETRES )
if( m_unit == EDA_UNITS::MM )
outputDPI = GetOriginalSizePixels() / ( m_outputSize / 25.4 );
else if( m_unit == EDA_UNITS::INCHES )
else if( m_unit == EDA_UNITS::INCH )
outputDPI = GetOriginalSizePixels() / m_outputSize;
else
outputDPI = KiROUND( m_outputSize );
@@ -98,11 +98,11 @@ void IMAGE_SIZE::SetUnit( EDA_UNITS aUnit )
// Convert m_outputSize to mm:
double size_mm;
if( m_unit == EDA_UNITS::MILLIMETRES )
if( m_unit == EDA_UNITS::MM )
{
size_mm = m_outputSize;
}
else if( m_unit == EDA_UNITS::INCHES )
else if( m_unit == EDA_UNITS::INCH )
{
size_mm = m_outputSize * 25.4;
}
@@ -117,11 +117,11 @@ void IMAGE_SIZE::SetUnit( EDA_UNITS aUnit )
}
// Convert m_outputSize to new value:
if( aUnit == EDA_UNITS::MILLIMETRES )
if( aUnit == EDA_UNITS::MM )
{
m_outputSize = size_mm;
}
else if( aUnit == EDA_UNITS::INCHES )
else if( aUnit == EDA_UNITS::INCH )
{
m_outputSize = size_mm / 25.4;
}
@@ -205,7 +205,12 @@ BITMAP2CMP_FRAME::BITMAP2CMP_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
BITMAP2CMP_FRAME::~BITMAP2CMP_FRAME()
{
// Shutdown all running tools
if( m_toolManager )
m_toolManager->ShutdownAllTools();
SaveSettings( config() );
/*
* This needed for OSX: avoids further OnDraw processing after this
* destructor and before the native window is destroyed
+42 -5
View File
@@ -30,11 +30,15 @@
#include <common.h>
#include <math/util.h> // for KiROUND
#include <potracelib.h>
#include <vector>
#include <wx/arrstr.h>
#include <wx/clipbrd.h>
#include <wx/dnd.h>
#include <wx/rawbmp.h>
#include <wx/msgdlg.h>
#include <wx/dcclient.h>
#include <wx/log.h>
#include <wx/string.h>
#define DEFAULT_DPI 300 // the image DPI used in formats that do not define a DPI
@@ -58,8 +62,11 @@ BITMAP2CMP_PANEL::BITMAP2CMP_PANEL( BITMAP2CMP_FRAME* aParent ) :
m_buttonExportFile->Enable( false );
m_buttonExportClipboard->Enable( false );
}
m_InitialPicturePanel->SetDropTarget( new DROP_FILE( this ) );
m_GreyscalePicturePanel->SetDropTarget( new DROP_FILE( this ) );
m_BNPicturePanel->SetDropTarget( new DROP_FILE( this ) );
}
wxWindow* BITMAP2CMP_PANEL::GetCurrentPage()
{
@@ -266,9 +273,9 @@ wxString BITMAP2CMP_PANEL::formatOutputSize( double aSize )
{
wxString text;
if( getUnitFromSelection() == EDA_UNITS::MILLIMETRES )
if( getUnitFromSelection() == EDA_UNITS::MM )
text.Printf( wxS( "%.1f" ), aSize );
else if( getUnitFromSelection() == EDA_UNITS::INCHES )
else if( getUnitFromSelection() == EDA_UNITS::INCH )
text.Printf( wxS( "%.2f" ), aSize );
else
text.Printf( wxT( "%d" ), KiROUND( aSize ) );
@@ -295,10 +302,10 @@ EDA_UNITS BITMAP2CMP_PANEL::getUnitFromSelection()
// return the EDA_UNITS from the m_PixelUnit choice
switch( m_PixelUnit->GetSelection() )
{
case 1: return EDA_UNITS::INCHES;
case 1: return EDA_UNITS::INCH;
case 2: return EDA_UNITS::UNSCALED;
case 0:
default: return EDA_UNITS::MILLIMETRES;
default: return EDA_UNITS::MM;
}
}
@@ -562,3 +569,33 @@ void BITMAP2CMP_PANEL::OnFormatChange( wxCommandEvent& event )
m_layerLabel->Enable( m_rbFootprint->GetValue() );
m_layerCtrl->Enable( m_rbFootprint->GetValue() );
}
DROP_FILE::DROP_FILE( BITMAP2CMP_PANEL* panel ) :
m_panel( panel )
{
}
bool DROP_FILE::OnDropFiles( wxCoord x, wxCoord y, const wxArrayString& filenames )
{
m_panel->SetFocus();
// If a file is already loaded
if( m_panel->GetOutputSizeX().GetOriginalSizePixels() != 0 )
{
wxString cap = _( "Replace Loaded File?" );
wxString msg = _( "There is already a file loaded. Do you want to replace it?" );
wxMessageDialog acceptFileDlg( m_panel, msg, cap, wxYES_NO | wxICON_QUESTION | wxYES_DEFAULT );
int replace = acceptFileDlg.ShowModal();
if( replace == wxID_NO )
return false;
}
std::vector<wxString> fNameVec;
fNameVec.insert( fNameVec.begin(), filenames.begin(), filenames.end() );
m_panel->OpenProjectFiles( fNameVec );
return true;
}
+15 -1
View File
@@ -25,7 +25,7 @@
#include <bitmap2cmp_panel_base.h>
#include <eda_units.h>
#include <wx/dnd.h>
class BITMAP2CMP_FRAME;
class BITMAP2CMP_SETTINGS;
@@ -134,4 +134,18 @@ private:
bool m_negative;
double m_aspectRatio;
};
class DROP_FILE : public wxFileDropTarget
{
public:
DROP_FILE( BITMAP2CMP_PANEL* panel );
DROP_FILE() = delete;
bool OnDropFiles( wxCoord x, wxCoord y, const wxArrayString& filenames ) override;
private:
BITMAP2CMP_PANEL* m_panel;
};
#endif// BITMAP2CMP_PANEL
+15 -29
View File
@@ -36,7 +36,13 @@ if( MSVC )
set( KICAD_HOST_ARCH "x64" )
set( KICAD_HOST_ARCH_X64 1 )
else()
message(FATAL_ERROR "Failed to determine the host architecture: ${CMAKE_SYSTEM_PROCESSOR}")
message(FATAL_ERROR "Failed to determine the host architecture: ${CMAKE_HOST_SYSTEM_PROCESSOR}")
endif()
if( NOT KICAD_BUILD_ARCH STREQUAL KICAD_HOST_ARCH )
set( CMAKE_CROSSCOMPILING TRUE )
string(TOUPPER ${KICAD_BUILD_ARCH} CMAKE_SYSTEM_PROCESSOR)
endif()
else()
if ( NOT CMAKE_SIZEOF_VOID_P EQUAL 8 )
@@ -58,38 +64,18 @@ if( MSVC )
# cmake release AND when MSVC ships said cmake release
if(KICAD_BUILD_ARCH_ARM)
message( "Configuring ARM assembler" )
# Explicitly specify the assembler to be used for Arm32 compile
file(TO_CMAKE_PATH "$ENV{VCToolsInstallDir}\\bin\\HostX86\\arm\\armasm.exe" CMAKE_ASM_COMPILER)
set(CMAKE_ASM_MASM_COMPILER ${CMAKE_ASM_COMPILER})
message("CMAKE_ASM_MASM_COMPILER explicitly set to: ${CMAKE_ASM_MASM_COMPILER}")
# Enable generic assembly compilation to avoid CMake generate VS proj files that explicitly
# use ml[64].exe as the assembler.
enable_language(ASM)
set(CMAKE_ASM_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreaded "")
set(CMAKE_ASM_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDLL "")
set(CMAKE_ASM_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebug "")
set(CMAKE_ASM_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebugDLL "")
set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> -g <INCLUDES> <FLAGS> -o <OBJECT> <SOURCE>")
enable_language(ASM_MARMASM)
# Bugfix for CMake < 29.1
set(ASM_DIALECT "_MARMASM")
set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OBJECT "<CMAKE_ASM${ASM_DIALECT}_COMPILER> <INCLUDES> <FLAGS> -o <OBJECT> <SOURCE>")
elseif(KICAD_BUILD_ARCH_ARM64)
message( "Configuring ARM64 assembler" )
# Explicitly specify the assembler to be used for Arm64 compile
file(TO_CMAKE_PATH "$ENV{VCToolsInstallDir}\\bin\\HostX86\\arm64\\armasm64.exe" CMAKE_ASM_COMPILER)
set(CMAKE_ASM_MASM_COMPILER ${CMAKE_ASM_COMPILER})
message("CMAKE_ASM_MASM_COMPILER explicitly set to: ${CMAKE_ASM_MASM_COMPILER}")
# Enable generic assembly compilation to avoid CMake generate VS proj files that explicitly
# use ml[64].exe as the assembler.
enable_language(ASM)
set(CMAKE_ASM_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreaded "")
set(CMAKE_ASM_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDLL "")
set(CMAKE_ASM_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebug "")
set(CMAKE_ASM_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebugDLL "")
set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> -g <INCLUDES> <FLAGS> -o <OBJECT> <SOURCE>")
enable_language(ASM_MARMASM)
# Bugfix for CMake < 29.1
set(ASM_DIALECT "_MARMASM")
set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OBJECT "<CMAKE_ASM${ASM_DIALECT}_COMPILER> <INCLUDES> <FLAGS> -o <OBJECT> <SOURCE>")
else()
message( "Configuring MASM assembler" )
if(KICAD_BUILD_ARCH_X86)
+1 -15
View File
@@ -28,18 +28,12 @@
# Set the needed libraries
set( OCC_LIBS_COMMON
TKBinL
TKBin
TKBinTObj
TKBinXCAF
TKBool
TKBO
TKBRep
TKCAF
TKCDF
TKernel
TKFeat
TKFillet
TKG2d
TKG3d
TKGeomAlgo
@@ -48,22 +42,13 @@ set( OCC_LIBS_COMMON
TKLCAF
TKMath
TKMesh
TKMeshVS
TKOffset
TKOpenGl
TKPrim
TKRWMesh
TKService
TKShHealing
TKTObj
TKTopAlgo
TKV3d
TKXCAF
TKXMesh
TKXmlL
TKXml
TKXmlTObj
TKXmlXCAF
TKXSBase
)
@@ -140,6 +125,7 @@ else(WIN32)
/usr
/usr/local
/usr/local/opencascade
/usr/opencascade
/opt/opencascade
/opt/opencascade/lin64/gcc
PATH_SUFFIXES lib
+1 -1
View File
@@ -37,7 +37,7 @@ unset(_Python_NAMES)
set(_PYTHON1_VERSIONS 1.6 1.5)
set(_PYTHON2_VERSIONS 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0)
set(_PYTHON3_VERSIONS 3.13 3.12 3.11 3.10 3.9 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
set(_PYTHON3_VERSIONS 3.14 3.13 3.12 3.11 3.10 3.9 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
# Disabling the "search every possible place" code for now
# see https://gitlab.com/kicad/code/kicad/-/issues/8553
+1 -1
View File
@@ -44,7 +44,7 @@ cmake_find_frameworks(Python)
set(_PYTHON1_VERSIONS 1.6 1.5)
set(_PYTHON2_VERSIONS 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0)
set(_PYTHON3_VERSIONS 3.13 3.12 3.11 3.10 3.9 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
set(_PYTHON3_VERSIONS 3.14 3.13 3.12 3.11 3.10 3.9 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
if(PythonLibs_FIND_VERSION)
if(PythonLibs_FIND_VERSION MATCHES "^[0-9]+\\.[0-9]+(\\.[0-9]+.*)?$")
+2 -2
View File
@@ -2,7 +2,7 @@
# This program source code file is part of KICAD, a free EDA CAD application.
#
# Copyright (C) 2016 Wayne Stambaugh <stambaughw@gmail.com>
# Copyright (C) 2016-2023, 2024 KiCad Developers, see AUTHORS.txt for contributors.
# Copyright (C) 2016-2023, 2024, 2025 KiCad Developers, see AUTHORS.txt for contributors.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -37,7 +37,7 @@
# KiCad.
#
# Note: This version string should follow the semantic versioning system
set( KICAD_SEMANTIC_VERSION "9.0.0-unknown" )
set( KICAD_SEMANTIC_VERSION "9.0.8" )
# Default the version to the semantic version.
# This is overridden by the git repository tag though (if using git)
-51
View File
@@ -1,51 +0,0 @@
# compile_asm(TARGET target ASM_FILES file1 [file2 ...] OUTPUT_OBJECTS [variableName])
# CMake does not support the ARM or ARM64 assemblers on Windows when using the
# MSBuild generator. When the MSBuild generator is in use, we manually compile the assembly files
# using this function.
#
# Borrowed from dotnet/runtime, licensed under MIT
# Copyright (c) .NET Foundation and Contributors
# https://github.com/dotnet/runtime/blob/main/eng/native/functions.cmake
function(compile_asm)
set(options "")
set(oneValueArgs TARGET OUTPUT_OBJECTS)
set(multiValueArgs ASM_FILES)
cmake_parse_arguments(COMPILE_ASM "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGV})
get_include_directories_asm(ASM_INCLUDE_DIRECTORIES)
set (ASSEMBLED_OBJECTS "")
foreach(ASM_FILE ${COMPILE_ASM_ASM_FILES})
get_filename_component(name ${ASM_FILE} NAME_WE)
# Produce object file where CMake would store .obj files for an OBJECT library.
# ex: artifacts\obj\coreclr\windows.arm64.Debug\src\vm\wks\cee_wks.dir\Debug\AsmHelpers.obj
set (OBJ_FILE "${CMAKE_CURRENT_BINARY_DIR}/${COMPILE_ASM_TARGET}.dir/${CMAKE_CFG_INTDIR}/${name}.obj")
# Need to compile asm file using custom command as include directories are not provided to asm compiler
add_custom_command(OUTPUT ${OBJ_FILE}
COMMAND "${CMAKE_ASM_COMPILER}" -g ${ASM_INCLUDE_DIRECTORIES} -o ${OBJ_FILE} ${ASM_FILE}
DEPENDS ${ASM_FILE}
COMMENT "Assembling ${ASM_FILE} ---> \"${CMAKE_ASM_COMPILER}\" -g ${ASM_INCLUDE_DIRECTORIES} -o ${OBJ_FILE} ${ASM_FILE}")
# mark obj as source that does not require compile
set_source_files_properties(${OBJ_FILE} PROPERTIES EXTERNAL_OBJECT TRUE)
# Add the generated OBJ in the dependency list so that it gets consumed during linkage
list(APPEND ASSEMBLED_OBJECTS ${OBJ_FILE})
endforeach()
set(${COMPILE_ASM_OUTPUT_OBJECTS} ${ASSEMBLED_OBJECTS} PARENT_SCOPE)
endfunction()
# Build a list of include directories for consumption by the assembler
function(get_include_directories_asm IncludeDirectories)
get_directory_property(dirs INCLUDE_DIRECTORIES)
foreach(dir IN LISTS dirs)
list(APPEND INC_DIRECTORIES -I${dir};)
endforeach()
set(${IncludeDirectories} ${INC_DIRECTORIES} PARENT_SCOPE)
endfunction(get_include_directories_asm)
+7
View File
@@ -184,6 +184,13 @@ if( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
set( HAVE_WIMPLICIT_FLOAT_CONVERSION true )
endif()
CHECK_CXX_COMPILER_FLAG( "-Wambiguous-conditional" COMPILER_SUPPORTS_WAMBIGUOUS_CONDITIONAL )
# Add this to match MSVC's warning about ambiguous conditionals
if( COMPILER_SUPPORTS_WAMBIGUOUS_CONDITIONAL )
set( WARN_FLAGS_CXX "${WARN_FLAGS_CXX} -Wambiguous-conditional" )
endif()
# See if the compiler will throw warnings on these conversions
CHECK_CXX_COMPILER_FLAG( "-Wunused-const-variable" COMPILER_SUPPORTS_WUNUSED_CONST_VARIABLE )
+5 -1
View File
@@ -11,6 +11,7 @@ include_directories(
./dialogs
./widgets
./dialog_about
${CMAKE_SOURCE_DIR}/libs/sexpr/include
${CMAKE_SOURCE_DIR}/resources/bitmaps_png
${CMAKE_SOURCE_DIR}/3d-viewer
${CMAKE_SOURCE_DIR}/pcbnew
@@ -72,6 +73,7 @@ set( KICOMMON_SRCS
jobs/job_export_pcb_gerber.cpp
jobs/job_export_pcb_gerbers.cpp
jobs/job_export_pcb_ipc2581.cpp
jobs/job_export_pcb_ipcd356.cpp
jobs/job_export_pcb_odb.cpp
jobs/job_export_pcb_pdf.cpp
jobs/job_export_pcb_plot.cpp
@@ -127,6 +129,7 @@ set( KICOMMON_SRCS
widgets/kistatusbar.cpp
widgets/number_badge.cpp
widgets/progress_reporter_base.cpp
widgets/report_severity.cpp
widgets/std_bitmap_button.cpp
widgets/ui_common.cpp
widgets/wx_html_report_panel.cpp
@@ -236,6 +239,7 @@ target_link_libraries( kicommon
fmt::fmt
CURL::libcurl
picosha2
sexpr
${ZSTD_LIBRARY}
${wxWidgets_LIBRARIES}
${LIBGIT2_LIBRARIES}
@@ -431,6 +435,7 @@ set( COMMON_WIDGET_SRCS
widgets/gal_options_panel_base.cpp
widgets/grid_bitmap_toggle.cpp
widgets/grid_button.cpp
widgets/grid_checkbox.cpp
widgets/grid_color_swatch_helpers.cpp
widgets/grid_combobox.cpp
widgets/grid_icon_text_helpers.cpp
@@ -810,7 +815,6 @@ set( PCB_COMMON_SRCS
${CMAKE_SOURCE_DIR}/pcbnew/netlist_reader/kicad_netlist_reader.cpp
${CMAKE_SOURCE_DIR}/pcbnew/netlist_reader/legacy_netlist_reader.cpp
${CMAKE_SOURCE_DIR}/pcbnew/netlist_reader/netlist_reader.cpp
${CMAKE_SOURCE_DIR}/pcbnew/pad_custom_shape_functions.cpp
${CMAKE_SOURCE_DIR}/pcbnew/pcb_draw_panel_gal.cpp
${CMAKE_SOURCE_DIR}/pcbnew/netlist_reader/pcb_netlist.cpp
${CMAKE_SOURCE_DIR}/pcbnew/pcb_origin_transforms.cpp
+49 -5
View File
@@ -100,9 +100,9 @@ static const wxChar V3DRT_BevelHeight_um[] = wxT( "V3DRT_BevelHeight_um" );
static const wxChar V3DRT_BevelExtentFactor[] = wxT( "V3DRT_BevelExtentFactor" );
static const wxChar EnableDesignBlocks[] = wxT( "EnableDesignBlocks" );
static const wxChar EnableGenerators[] = wxT( "EnableGenerators" );
static const wxChar EnableGit[] = wxT( "EnableGit" );
static const wxChar EnableLibWithText[] = wxT( "EnableLibWithText" );
static const wxChar EnableLibDir[] = wxT( "EnableLibDir" );
static const wxChar LibraryTableEditor[] = wxT( "LibraryTableEditor" );
static const wxChar EnableEeschemaPrintCairo[] = wxT( "EnableEeschemaPrintCairo" );
static const wxChar EnableEeschemaExportClipboardCairo[] = wxT( "EnableEeschemaExportClipboardCairo" );
static const wxChar DisambiguationTime[] = wxT( "DisambiguationTime" );
@@ -121,12 +121,19 @@ static const wxChar EnableExtensionSnaps[] = wxT( "EnableExtensionSnaps" );
static const wxChar ExtensionSnapTimeoutMs[] = wxT( "ExtensionSnapTimeoutMs" );
static const wxChar ExtensionSnapActivateOnHover[] = wxT( "ExtensionSnapActivateOnHover" );
static const wxChar EnableSnapAnchorsDebug[] = wxT( "EnableSnapAnchorsDebug" );
static const wxChar SnapHysteresis[] = wxT( "SnapHysteresis" );
static const wxChar SnapToAnchorMargin[] = wxT( "SnapToAnchorMargin" );
static const wxChar MinParallelAngle[] = wxT( "MinParallelAngle" );
static const wxChar HoleWallPaintingMultiplier[] = wxT( "HoleWallPaintingMultiplier" );
static const wxChar MsgPanelShowUuids[] = wxT( "MsgPanelShowUuids" );
static const wxChar MaximumThreads[] = wxT( "MaximumThreads" );
static const wxChar NetInspectorBulkUpdateOptimisationThreshold[] =
wxT( "NetInspectorBulkUpdateOptimisationThreshold" );
static const wxChar ExcludeFromSimulationLineWidth[] = wxT( "ExcludeFromSimulationLineWidth" );
static const wxChar GitIconRefreshInterval[] = wxT( "GitIconRefreshInterval" );
static const wxChar MaxPastedTextLength[] = wxT( "MaxPastedTextLength" );
static const wxChar PNSProcessClusterTimeout[] = wxT( "PNSProcessClusterTimeout" );
static const wxChar FollowBranchTimeout[] = wxT( "FollowBranchTimeoutMs" );
} // namespace KEYS
@@ -257,9 +264,9 @@ ADVANCED_CFG::ADVANCED_CFG()
m_ShowRepairSchematic = false;
m_EnableDesignBlocks = true;
m_EnableGenerators = false;
m_EnableGit = true;
m_EnableLibWithText = false;
m_EnableLibDir = false;
m_LibraryTableEditor = false;
m_EnableEeschemaPrintCairo = true;
m_EnableEeschemaExportClipboardCairo = true;
@@ -297,6 +304,8 @@ ADVANCED_CFG::ADVANCED_CFG()
m_ExtensionSnapTimeoutMs = 500;
m_ExtensionSnapActivateOnHover = true;
m_EnableSnapAnchorsDebug = false;
m_SnapHysteresis = 5;
m_SnapToAnchorMargin = 1.1;
m_MinParallelAngle = 0.001;
m_HoleWallPaintingMultiplier = 1.5;
@@ -307,6 +316,15 @@ ADVANCED_CFG::ADVANCED_CFG()
m_NetInspectorBulkUpdateOptimisationThreshold = 25;
m_ExcludeFromSimulationLineWidth = 25;
m_GitIconRefreshInterval = 10000;
m_MaxPastedTextLength = 100;
m_PNSProcessClusterTimeout = 100; // Default: 100 ms
m_FollowBranchTimeout = 500; // Default: 500 ms
loadFromConfigFile();
}
@@ -496,15 +514,15 @@ void ADVANCED_CFG::loadSettings( wxConfigBase& aCfg )
configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableAPILogging,
&m_EnableAPILogging, m_EnableAPILogging ) );
configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableGit,
&m_EnableGit, m_EnableGit ) );
configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableLibWithText,
&m_EnableLibWithText, m_EnableLibWithText ) );
configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableLibDir,
&m_EnableLibDir, m_EnableLibDir ) );
configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::LibraryTableEditor,
&m_LibraryTableEditor, m_LibraryTableEditor ) );
configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableEeschemaPrintCairo,
&m_EnableEeschemaPrintCairo,
m_EnableEeschemaPrintCairo ) );
@@ -570,6 +588,14 @@ void ADVANCED_CFG::loadSettings( wxConfigBase& aCfg )
&m_EnableSnapAnchorsDebug,
m_EnableSnapAnchorsDebug ) );
configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::SnapHysteresis,
&m_SnapHysteresis, m_SnapHysteresis,
0, 100 ) );
configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::SnapToAnchorMargin,
&m_SnapToAnchorMargin, m_SnapToAnchorMargin,
1.0, 2.0 ) );
configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::MinParallelAngle,
&m_MinParallelAngle, m_MinParallelAngle,
0.0, 45.0 ) );
@@ -592,6 +618,24 @@ void ADVANCED_CFG::loadSettings( wxConfigBase& aCfg )
&m_NetInspectorBulkUpdateOptimisationThreshold,
m_NetInspectorBulkUpdateOptimisationThreshold, 0, 1000 ) );
configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::ExcludeFromSimulationLineWidth,
&m_ExcludeFromSimulationLineWidth,
m_ExcludeFromSimulationLineWidth, 1, 100 ) );
configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::GitIconRefreshInterval,
&m_GitIconRefreshInterval,
m_GitIconRefreshInterval, 0, 100000 ) );
configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::MaxPastedTextLength,
&m_MaxPastedTextLength,
m_MaxPastedTextLength, 0, 100000 ) );
configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::PNSProcessClusterTimeout,
&m_PNSProcessClusterTimeout, 100, 10, 10000 ) );
configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::FollowBranchTimeout,
&m_FollowBranchTimeout, 500, 50, 5000 ) );
// Special case for trace mask setting...we just grab them and set them immediately
// Because we even use wxLogTrace inside of advanced config
wxString traceMasks;
+124
View File
@@ -26,6 +26,7 @@
#include <core/typeinfo.h>
#include <font/text_attributes.h>
#include <layer_ids.h>
#include <pin_type.h>
#include <stroke_params.h>
using namespace kiapi;
@@ -214,6 +215,42 @@ PCB_LAYER_ID FromProtoEnum( board::types::BoardLayer aValue )
case board::types::BoardLayer::BL_User_8: return User_8;
case board::types::BoardLayer::BL_User_9: return User_9;
case board::types::BoardLayer::BL_Rescue: return Rescue;
case board::types::BoardLayer::BL_User_10: return User_10;
case board::types::BoardLayer::BL_User_11: return User_11;
case board::types::BoardLayer::BL_User_12: return User_12;
case board::types::BoardLayer::BL_User_13: return User_13;
case board::types::BoardLayer::BL_User_14: return User_14;
case board::types::BoardLayer::BL_User_15: return User_15;
case board::types::BoardLayer::BL_User_16: return User_16;
case board::types::BoardLayer::BL_User_17: return User_17;
case board::types::BoardLayer::BL_User_18: return User_18;
case board::types::BoardLayer::BL_User_19: return User_19;
case board::types::BoardLayer::BL_User_20: return User_20;
case board::types::BoardLayer::BL_User_21: return User_21;
case board::types::BoardLayer::BL_User_22: return User_22;
case board::types::BoardLayer::BL_User_23: return User_23;
case board::types::BoardLayer::BL_User_24: return User_24;
case board::types::BoardLayer::BL_User_25: return User_25;
case board::types::BoardLayer::BL_User_26: return User_26;
case board::types::BoardLayer::BL_User_27: return User_27;
case board::types::BoardLayer::BL_User_28: return User_28;
case board::types::BoardLayer::BL_User_29: return User_29;
case board::types::BoardLayer::BL_User_30: return User_30;
case board::types::BoardLayer::BL_User_31: return User_31;
case board::types::BoardLayer::BL_User_32: return User_32;
case board::types::BoardLayer::BL_User_33: return User_33;
case board::types::BoardLayer::BL_User_34: return User_34;
case board::types::BoardLayer::BL_User_35: return User_35;
case board::types::BoardLayer::BL_User_36: return User_36;
case board::types::BoardLayer::BL_User_37: return User_37;
case board::types::BoardLayer::BL_User_38: return User_38;
case board::types::BoardLayer::BL_User_39: return User_39;
case board::types::BoardLayer::BL_User_40: return User_40;
case board::types::BoardLayer::BL_User_41: return User_41;
case board::types::BoardLayer::BL_User_42: return User_42;
case board::types::BoardLayer::BL_User_43: return User_43;
case board::types::BoardLayer::BL_User_44: return User_44;
case board::types::BoardLayer::BL_User_45: return User_45;
case board::types::BoardLayer::BL_UNKNOWN: return UNDEFINED_LAYER;
default:
@@ -290,6 +327,42 @@ board::types::BoardLayer ToProtoEnum( PCB_LAYER_ID aValue )
case User_8: return board::types::BoardLayer::BL_User_8;
case User_9: return board::types::BoardLayer::BL_User_9;
case Rescue: return board::types::BoardLayer::BL_Rescue;
case User_10: return board::types::BoardLayer::BL_User_10;
case User_11: return board::types::BoardLayer::BL_User_11;
case User_12: return board::types::BoardLayer::BL_User_12;
case User_13: return board::types::BoardLayer::BL_User_13;
case User_14: return board::types::BoardLayer::BL_User_14;
case User_15: return board::types::BoardLayer::BL_User_15;
case User_16: return board::types::BoardLayer::BL_User_16;
case User_17: return board::types::BoardLayer::BL_User_17;
case User_18: return board::types::BoardLayer::BL_User_18;
case User_19: return board::types::BoardLayer::BL_User_19;
case User_20: return board::types::BoardLayer::BL_User_20;
case User_21: return board::types::BoardLayer::BL_User_21;
case User_22: return board::types::BoardLayer::BL_User_22;
case User_23: return board::types::BoardLayer::BL_User_23;
case User_24: return board::types::BoardLayer::BL_User_24;
case User_25: return board::types::BoardLayer::BL_User_25;
case User_26: return board::types::BoardLayer::BL_User_26;
case User_27: return board::types::BoardLayer::BL_User_27;
case User_28: return board::types::BoardLayer::BL_User_28;
case User_29: return board::types::BoardLayer::BL_User_29;
case User_30: return board::types::BoardLayer::BL_User_30;
case User_31: return board::types::BoardLayer::BL_User_31;
case User_32: return board::types::BoardLayer::BL_User_32;
case User_33: return board::types::BoardLayer::BL_User_33;
case User_34: return board::types::BoardLayer::BL_User_34;
case User_35: return board::types::BoardLayer::BL_User_35;
case User_36: return board::types::BoardLayer::BL_User_36;
case User_37: return board::types::BoardLayer::BL_User_37;
case User_38: return board::types::BoardLayer::BL_User_38;
case User_39: return board::types::BoardLayer::BL_User_39;
case User_40: return board::types::BoardLayer::BL_User_40;
case User_41: return board::types::BoardLayer::BL_User_41;
case User_42: return board::types::BoardLayer::BL_User_42;
case User_43: return board::types::BoardLayer::BL_User_43;
case User_44: return board::types::BoardLayer::BL_User_44;
case User_45: return board::types::BoardLayer::BL_User_45;
default:
wxCHECK_MSG( false, board::types::BoardLayer::BL_UNKNOWN,
"Unhandled case in ToProtoEnum<PCB_LAYER_ID>");
@@ -426,3 +499,54 @@ types::StrokeLineStyle ToProtoEnum( LINE_STYLE aValue )
"Unhandled case in ToProtoEnum<LINE_STYLE>");
}
}
template<>
ELECTRICAL_PINTYPE FromProtoEnum( types::ElectricalPinType aValue )
{
switch( aValue )
{
case types::ElectricalPinType::EPT_INPUT: return ELECTRICAL_PINTYPE::PT_INPUT;
case types::ElectricalPinType::EPT_OUTPUT: return ELECTRICAL_PINTYPE::PT_OUTPUT;
case types::ElectricalPinType::EPT_BIDIRECTIONAL: return ELECTRICAL_PINTYPE::PT_BIDI;
case types::ElectricalPinType::EPT_TRISTATE: return ELECTRICAL_PINTYPE::PT_TRISTATE;
case types::ElectricalPinType::EPT_PASSIVE: return ELECTRICAL_PINTYPE::PT_PASSIVE;
case types::ElectricalPinType::EPT_FREE: return ELECTRICAL_PINTYPE::PT_NIC;
case types::ElectricalPinType::EPT_UNSPECIFIED: return ELECTRICAL_PINTYPE::PT_UNSPECIFIED;
case types::ElectricalPinType::EPT_POWER_INPUT: return ELECTRICAL_PINTYPE::PT_POWER_IN;
case types::ElectricalPinType::EPT_POWER_OUTPUT: return ELECTRICAL_PINTYPE::PT_POWER_OUT;
case types::ElectricalPinType::EPT_OPEN_COLLECTOR: return ELECTRICAL_PINTYPE::PT_OPENCOLLECTOR;
case types::ElectricalPinType::EPT_OPEN_EMITTER: return ELECTRICAL_PINTYPE::PT_OPENEMITTER;
case types::ElectricalPinType::EPT_NO_CONNECT: return ELECTRICAL_PINTYPE::PT_NC;
case types::ElectricalPinType::EPT_UNKNOWN:
default:
wxCHECK_MSG( false, ELECTRICAL_PINTYPE::PT_UNSPECIFIED,
"Unhandled case in FromProtoEnum<types::ElectricalPinType>" );
}
}
template<>
types::ElectricalPinType ToProtoEnum( ELECTRICAL_PINTYPE aValue )
{
switch( aValue )
{
case ELECTRICAL_PINTYPE::PT_INPUT: return types::ElectricalPinType::EPT_INPUT;
case ELECTRICAL_PINTYPE::PT_OUTPUT: return types::ElectricalPinType::EPT_OUTPUT;
case ELECTRICAL_PINTYPE::PT_BIDI: return types::ElectricalPinType::EPT_BIDIRECTIONAL;
case ELECTRICAL_PINTYPE::PT_TRISTATE: return types::ElectricalPinType::EPT_TRISTATE;
case ELECTRICAL_PINTYPE::PT_PASSIVE: return types::ElectricalPinType::EPT_PASSIVE;
case ELECTRICAL_PINTYPE::PT_NIC: return types::ElectricalPinType::EPT_FREE;
case ELECTRICAL_PINTYPE::PT_UNSPECIFIED: return types::ElectricalPinType::EPT_UNSPECIFIED;
case ELECTRICAL_PINTYPE::PT_POWER_IN: return types::ElectricalPinType::EPT_POWER_INPUT;
case ELECTRICAL_PINTYPE::PT_POWER_OUT: return types::ElectricalPinType::EPT_POWER_OUTPUT;
case ELECTRICAL_PINTYPE::PT_OPENCOLLECTOR: return types::ElectricalPinType::EPT_OPEN_COLLECTOR;
case ELECTRICAL_PINTYPE::PT_OPENEMITTER: return types::ElectricalPinType::EPT_OPEN_EMITTER;
case ELECTRICAL_PINTYPE::PT_NC: return types::ElectricalPinType::EPT_NO_CONNECT;
// Inherit shouldn't be serialized, it's an internal flag
case ELECTRICAL_PINTYPE::PT_INHERIT:
default:
wxCHECK_MSG( false, types::ElectricalPinType::EPT_UNKNOWN,
"Unhandled case in ToProtoEnum<ELECTRICAL_PINTYPE>");
}
}
+1 -1
View File
@@ -178,7 +178,7 @@ HANDLER_RESULT<types::Box2> API_HANDLER_COMMON::handleGetTextExtents(
types::Box2 response;
BOX2I bbox = text.GetTextBox();
BOX2I bbox = text.GetTextBox( nullptr );
EDA_ANGLE angle = text.GetTextAngle();
if( !angle.IsZero() )
+1 -1
View File
@@ -19,7 +19,7 @@
*/
#include <magic_enum.hpp>
#include <nlohmann/json.hpp>
#include <json_common.h>
#include <wx/log.h>
#include <wx/regex.h>
#include <wx/stdstream.h>
+23 -4
View File
@@ -21,6 +21,7 @@
#include <magic_enum.hpp>
#include <api/api_utils.h>
#include <geometry/shape_poly_set.h>
#include <kiid.h>
#include <wx/log.h>
const wxChar* const traceApi = wxT( "KICAD_API" );
@@ -121,10 +122,9 @@ KICOMMON_API void PackPolyLine( types::PolyLine& aOutput, const SHAPE_LINE_CHAIN
if( vertex < 0 )
break;
types::PolyLineNode* node = aOutput.mutable_nodes()->Add();
if( aSlc.IsPtOnArc( vertex ) )
if( aSlc.IsArcStart( vertex ) )
{
types::PolyLineNode* node = aOutput.mutable_nodes()->Add();
const SHAPE_ARC& arc = aSlc.Arc( aSlc.ArcIndex( vertex ) );
node->mutable_arc()->mutable_start()->set_x_nm( arc.GetP0().x );
node->mutable_arc()->mutable_start()->set_y_nm( arc.GetP0().y );
@@ -133,8 +133,9 @@ KICOMMON_API void PackPolyLine( types::PolyLine& aOutput, const SHAPE_LINE_CHAIN
node->mutable_arc()->mutable_end()->set_x_nm( arc.GetP1().x );
node->mutable_arc()->mutable_end()->set_y_nm( arc.GetP1().y );
}
else
else if( !aSlc.IsPtOnArc( vertex ) )
{
types::PolyLineNode* node = aOutput.mutable_nodes()->Add();
node->mutable_point()->set_x_nm( aSlc.CPoint( vertex ).x );
node->mutable_point()->set_y_nm( aSlc.CPoint( vertex ).y );
}
@@ -232,4 +233,22 @@ KICOMMON_API KIGFX::COLOR4D UnpackColor( const types::Color& aInput )
return KIGFX::COLOR4D( r, g, b, a );
}
KICOMMON_API void PackSheetPath( types::SheetPath& aOutput, const KIID_PATH& aInput )
{
aOutput.clear_path();
for( const KIID& entry : aInput )
aOutput.add_path()->set_value( entry.AsStdString() );
}
KICOMMON_API KIID_PATH UnpackSheetPath( const types::SheetPath& aInput )
{
KIID_PATH output;
for( const types::KIID& sheet : aInput.path() )
output.push_back( KIID( sheet.value() ) );
return output;
}
} // namespace kiapi::common
+32 -3
View File
@@ -37,7 +37,11 @@ static bool schemeNonUnitColsStartAt0( ARRAY_AXIS::NUMBERING_TYPE type )
}
ARRAY_AXIS::ARRAY_AXIS() : m_type( NUMBERING_TYPE::NUMBERING_NUMERIC ), m_offset( 0 ), m_step( 1 )
ARRAY_AXIS::ARRAY_AXIS() :
m_type( NUMBERING_TYPE::NUMBERING_NUMERIC ),
m_offset( 0 ),
m_step( 1 ),
m_useLowercase( false )
{
}
@@ -76,7 +80,14 @@ std::optional<int> ARRAY_AXIS::getNumberingOffset( const wxString& str ) const
for( unsigned i = 0; i < str.length(); i++ )
{
int chIndex = alphabet.Find( str[i], false );
wxUniChar ch = str[i];
// For alphabetic types, convert to uppercase for lookup since our alphabets
// are defined with uppercase letters. This allows users to enter lowercase.
if( !TypeIsNumeric( m_type ) && ch >= 'a' && ch <= 'z' )
ch = ch - 'a' + 'A';
int chIndex = alphabet.Find( ch, false );
if( chIndex == wxNOT_FOUND )
return std::optional<int>{};
@@ -109,6 +120,18 @@ bool ARRAY_AXIS::SetOffset( const wxString& aOffsetName )
if( !offset )
return false;
// For alphabetic types, check if the user entered lowercase letters.
// If so, we'll output lowercase letters as well.
if( !TypeIsNumeric( m_type ) && !aOffsetName.IsEmpty() )
{
wxUniChar firstChar = aOffsetName[0];
m_useLowercase = ( firstChar >= 'a' && firstChar <= 'z' );
}
else
{
m_useLowercase = false;
}
SetOffset( *offset );
return true;
}
@@ -140,5 +163,11 @@ wxString ARRAY_AXIS::GetItemNumber( int n ) const
n = m_offset + m_step * n;
return AlphabeticFromIndex( n, alphabet, nonUnitColsStartAt0 );
wxString result = AlphabeticFromIndex( n, alphabet, nonUnitColsStartAt0 );
// If the user entered a lowercase starting value, output lowercase letters
if( m_useLowercase )
result = result.Lower();
return result;
}
+3 -2
View File
@@ -208,7 +208,7 @@ bool BITMAP_BASE::SaveImageData( wxOutputStream& aOutStream ) const
else
{
// Write the contents of m_imageData to the stream.
aOutStream.Write( m_imageData.GetData(), m_imageData.GetBufSize() );
aOutStream.Write( m_imageData.GetData(), m_imageData.GetDataLen() );
}
return true;
@@ -450,7 +450,8 @@ void BITMAP_BASE::Rotate( bool aRotateCCW )
int resY = m_image->GetOptionInt( wxIMAGE_OPTION_RESOLUTIONY );
int unit = m_image->GetOptionInt( wxIMAGE_OPTION_RESOLUTIONUNIT );
*m_image = m_image->Rotate90( aRotateCCW );
// wxImage::Rotate90 parameter is "clockwise", so invert for CCW rotation
*m_image = m_image->Rotate90( !aRotateCCW );
m_image->SetOption( wxIMAGE_OPTION_RESOLUTIONUNIT, unit );
m_image->SetOption( wxIMAGE_OPTION_RESOLUTIONX, resX );
+28 -14
View File
@@ -31,6 +31,7 @@
#include <build_version.h>
#include <tuple>
#include <mutex>
// kicad_curl.h must be included before wx headers, to avoid
// conflicts for some defines, at least on Windows
@@ -51,6 +52,9 @@ extern std::string GetCurlLibVersion();
#include <kicad_build_version.h>
#undef INCLUDE_KICAD_VERSION
// Mutex for wxPlatformInfo
static std::recursive_mutex s_platformInfoMutex;
// Remember OpenGL info
static wxString s_glVendor;
static wxString s_glRenderer;
@@ -66,8 +70,10 @@ void SetOpenGLInfo( const char* aVendor, const char* aRenderer, const char* aVer
wxString GetPlatformGetBitnessName()
{
wxPlatformInfo platform;
return platform.GetBitnessName();
// wxPlatformInfo is not thread-safe, so protect it
std::unique_lock lock(s_platformInfoMutex);
return wxPlatformInfo().GetBitnessName();
}
@@ -157,7 +163,6 @@ wxString GetVersionInfoData( const wxString& aTitle, bool aHtml, bool aBrief )
#endif
<< " build";
wxPlatformInfo platform;
aMsg << "Application: " << aTitle;
aMsg << " " << wxGetCpuArchitectureName() << " on " << wxGetNativeCpuArchitectureName();
@@ -187,14 +192,19 @@ wxString GetVersionInfoData( const wxString& aTitle, bool aHtml, bool aBrief )
// Linux uses the lsb-release program to get the description of the OS, if lsb-release
// isn't installed, then the string will be empty and we fallback to the method used on
// the other platforms (to at least get the kernel/uname info).
if( osDescription.empty() )
osDescription = wxGetOsDescription();
if( osDescription.empty() )
osDescription = wxGetOsDescription();
aMsg << "Platform: "
<< osDescription << ", "
<< GetPlatformGetBitnessName() << ", "
<< platform.GetEndiannessName() << ", "
<< platform.GetPortIdName();
{
// wxPlatformInfo is not thread-safe, so protect it
std::unique_lock lock( s_platformInfoMutex );
aMsg << "Platform: "
<< osDescription << ", "
<< GetPlatformGetBitnessName() << ", "
<< wxPlatformInfo().GetEndiannessName() << ", "
<< wxPlatformInfo().GetPortIdName();
}
#ifdef __WXGTK__
if( wxTheApp && wxTheApp->IsGUI() )
@@ -240,11 +250,15 @@ wxString GetVersionInfoData( const wxString& aTitle, bool aHtml, bool aBrief )
// Get the GTK+ version where possible.
#ifdef __WXGTK__
int major, minor;
{
// wxPlatformInfo is not thread-safe, so protect it
std::unique_lock lock( s_platformInfoMutex );
int major, minor;
major = wxPlatformInfo().Get().GetToolkitMajorVersion();
minor = wxPlatformInfo().Get().GetToolkitMinorVersion();
aMsg << " GTK+ " << major << "." << minor;
major = wxPlatformInfo().GetToolkitMajorVersion();
minor = wxPlatformInfo().GetToolkitMinorVersion();
aMsg << " GTK+ " << major << "." << minor;
}
#endif
aMsg << eol;
+3 -2
View File
@@ -24,6 +24,7 @@
#include "clipboard.h"
#include <wx/clipbrd.h>
#include <wx/dataobj.h>
#include <wx/image.h>
#include <wx/log.h>
@@ -84,10 +85,10 @@ std::unique_ptr<wxImage> GetImageFromClipboard()
{
if( wxTheClipboard->IsSupported( wxDF_BITMAP ) )
{
wxImageDataObject data;
wxBitmapDataObject data;
if( wxTheClipboard->GetData( data ) )
{
image = std::make_unique<wxImage>( data.GetImage() );
image = std::make_unique<wxImage>( data.GetBitmap().ConvertToImage() );
}
}
else if( wxTheClipboard->IsSupported( wxDF_FILENAME ) )
+20
View File
@@ -127,6 +127,26 @@ COMMIT& COMMIT::Stage( const PICKED_ITEMS_LIST &aItems, UNDO_REDO aModFlag, BASE
}
void COMMIT::Unstage( EDA_ITEM* aItem, BASE_SCREEN* aScreen )
{
std::erase_if( m_changes,
[&]( COMMIT_LINE& line )
{
if( line.m_item == aItem && line.m_screen == aScreen )
{
// Only new items which have never been committed can be unstaged
wxASSERT( line.m_item->IsNew() );
delete line.m_item;
delete line.m_copy;
return true;
}
return false;
} );
}
int COMMIT::GetStatus( EDA_ITEM* aItem, BASE_SCREEN *aScreen )
{
COMMIT_LINE* entry = findEntry( parentObject( aItem ), aScreen );
+12 -8
View File
@@ -71,9 +71,8 @@ wxString ExpandTextVars( const wxString& aSource, const PROJECT* aProject, int a
wxString ExpandTextVars( const wxString& aSource,
const std::function<bool( wxString* )>* aResolver, int aFlags )
{
static wxRegEx userDefinedWarningError( wxS( "^(ERC|DRC)_(WARNING|ERROR).*$" ) );
wxString newbuf;
size_t sourceLen = aSource.length();
wxString newbuf;
size_t sourceLen = aSource.length();
newbuf.Alloc( sourceLen ); // best guess (improves performance)
@@ -94,7 +93,10 @@ wxString ExpandTextVars( const wxString& aSource,
if( token.IsEmpty() )
continue;
if( ( aFlags & FOR_ERC_DRC ) == 0 && userDefinedWarningError.Matches( token ) )
if( ( aFlags & FOR_ERC_DRC ) == 0 && ( token.StartsWith( wxS( "ERC_WARNING" ) )
|| token.StartsWith( wxS( "ERC_ERROR" ) )
|| token.StartsWith( wxS( "DRC_WARNING" ) )
|| token.StartsWith( wxS( "DRC_ERROR" ) ) ) )
{
// Only show user-defined warnings/errors during ERC/DRC
}
@@ -118,11 +120,12 @@ wxString ExpandTextVars( const wxString& aSource,
}
wxString GetTextVars( const wxString& aSource )
wxString GetGeneratedFieldDisplayName( const wxString& aSource )
{
std::function<bool( wxString* )> tokenExtractor =
[&]( wxString* token ) -> bool
{
*token = *token; // token value is the token name
return true;
};
@@ -130,9 +133,10 @@ wxString GetTextVars( const wxString& aSource )
}
bool IsTextVar( const wxString& aSource )
bool IsGeneratedField( const wxString& aSource )
{
return aSource.StartsWith( wxS( "${" ) );
static wxRegEx expr( wxS( "^\\$\\{\\w*\\}$" ) );
return expr.Matches( aSource );
}
@@ -431,7 +435,7 @@ wxString EnsureFileExtension( const wxString& aFilename, const wxString& aExtens
// extension, such as "Schematic_1.1".
if( newFilename.Lower().AfterLast( '.' ) != aExtension )
{
if( newFilename.Last() != '.' )
if( !newFilename.EndsWith( '.' ) )
newFilename.Append( '.' );
newFilename.Append( aExtension );
+14 -13
View File
@@ -161,7 +161,7 @@ bool DATABASE_CONNECTION::Connect()
m_conn = std::make_unique<nanodbc::connection>( cs, m_timeout );
}
}
catch( nanodbc::database_error& e )
catch( std::exception& e )
{
m_lastError = e.what();
return false;
@@ -188,7 +188,7 @@ bool DATABASE_CONNECTION::Disconnect()
{
m_conn->disconnect();
}
catch( boost::locale::conv::conversion_error& exc )
catch( std::exception& exc )
{
wxLogTrace( traceDatabase, wxT( "Disconnect() error \"%s\" occured." ), exc.what() );
return false;
@@ -250,7 +250,7 @@ bool DATABASE_CONNECTION::CacheTableInfo( const std::string& aTable,
return false;
}
}
catch( nanodbc::database_error& e )
catch( std::exception& e )
{
m_lastError = e.what();
wxLogTrace( traceDatabase, wxT( "Exception while caching table info: %s" ), m_lastError );
@@ -277,8 +277,9 @@ bool DATABASE_CONNECTION::getQuoteChar()
wxLogTrace( traceDatabase, wxT( "Quote char retrieved: %c" ), m_quoteChar );
}
catch( nanodbc::database_error& )
catch( std::exception& e )
{
m_lastError = e.what();
wxLogTrace( traceDatabase, wxT( "Exception while querying quote char: %s" ), m_lastError );
return false;
}
@@ -401,14 +402,14 @@ bool DATABASE_CONNECTION::SelectOne( const std::string& aTable,
statement.prepare( *m_conn, query );
statement.bind( 0, aWhere.second.c_str() );
}
catch( nanodbc::database_error& e )
catch( std::exception& e )
{
m_lastError = e.what();
wxLogTrace( traceDatabase, wxT( "Exception while preparing statement for SelectOne: %s" ),
m_lastError );
// Exception may be due to a connection error; nanodbc won't auto-reconnect
m_conn->disconnect();
Disconnect();
return false;
}
@@ -422,14 +423,14 @@ bool DATABASE_CONNECTION::SelectOne( const std::string& aTable,
{
results = nanodbc::execute( statement );
}
catch( nanodbc::database_error& e )
catch( std::exception& e )
{
m_lastError = e.what();
wxLogTrace( traceDatabase, wxT( "Exception while executing statement for SelectOne: %s" ),
m_lastError );
// Exception may be due to a connection error; nanodbc won't auto-reconnect
m_conn->disconnect();
Disconnect();
return false;
}
@@ -480,7 +481,7 @@ bool DATABASE_CONNECTION::SelectOne( const std::string& aTable,
}
}
}
catch( nanodbc::database_error& e )
catch( std::exception& e )
{
m_lastError = e.what();
wxLogTrace( traceDatabase, wxT( "Exception while parsing results from SelectOne: %s" ),
@@ -507,7 +508,7 @@ bool DATABASE_CONNECTION::selectAllAndCache( const std::string& aTable, const st
{
statement.prepare( query );
}
catch( nanodbc::database_error& e )
catch( std::exception& e )
{
m_lastError = e.what();
wxLogTrace( traceDatabase,
@@ -515,7 +516,7 @@ bool DATABASE_CONNECTION::selectAllAndCache( const std::string& aTable, const st
m_lastError );
// Exception may be due to a connection error; nanodbc won't auto-reconnect
m_conn->disconnect();
Disconnect();
return false;
}
@@ -526,7 +527,7 @@ bool DATABASE_CONNECTION::selectAllAndCache( const std::string& aTable, const st
{
results = nanodbc::execute( statement );
}
catch( nanodbc::database_error& e )
catch( std::exception& e )
{
m_lastError = e.what();
wxLogTrace( traceDatabase,
@@ -534,7 +535,7 @@ bool DATABASE_CONNECTION::selectAllAndCache( const std::string& aTable, const st
m_lastError );
// Exception may be due to a connection error; nanodbc won't auto-reconnect
m_conn->disconnect();
Disconnect();
return false;
}
+1 -1
View File
@@ -23,7 +23,7 @@
*/
#include <kicommon.h>
#include <lib_id.h>
#include <nlohmann/json.hpp>
#include <json_common.h>
class KICOMMON_API DESIGN_BLOCK
+3
View File
@@ -37,6 +37,7 @@
#include <utility>
#include <wx/tokenzr.h>
#include <kiface_base.h>
#include <locale_io.h>
DESIGN_BLOCK_INFO* DESIGN_BLOCK_LIST::GetDesignBlockInfo( const wxString& aLibNickname,
const wxString& aDesignBlockName )
@@ -72,7 +73,9 @@ std::vector<SEARCH_TERM> DESIGN_BLOCK_INFO::GetSearchTerms()
{
std::vector<SEARCH_TERM> terms;
terms.emplace_back( SEARCH_TERM( GetLibNickname(), 4 ) );
terms.emplace_back( SEARCH_TERM( GetName(), 8 ) );
terms.emplace_back( SEARCH_TERM( GetLIB_ID().Format(), 16 ) );
wxStringTokenizer keywordTokenizer( GetKeywords(), wxS( " " ), wxTOKEN_STRTOK );
+2 -1
View File
@@ -42,6 +42,7 @@ class DESIGN_BLOCK_LIST_IMPL;
class PROGRESS_REPORTER;
class wxTopLevelWindow;
class KIWAY;
class LOCALE_IO;
class wxTextFile;
@@ -113,7 +114,7 @@ protected:
}
/// lazily load stuff not filled in by constructor. This may throw IO_ERRORS.
virtual void load(){};
virtual void load( const LOCALE_IO* locale = nullptr ) {};
protected:
DESIGN_BLOCK_LIST* m_owner; ///< provides access to DESIGN_BLOCK_LIB_TABLE
+6 -9
View File
@@ -21,11 +21,9 @@
#include <design_block_info_impl.h>
#include <design_block.h>
#include <design_block_info.h>
#include <design_block_lib_table.h>
#include <kiway.h>
#include <locale_io.h>
#include <lib_id.h>
#include <progress_reporter.h>
#include <string_utils.h>
#include <thread_pool.h>
@@ -33,18 +31,18 @@
#include <kiplatform/io.h>
#include <wx/textfile.h>
#include <wx/txtstrm.h>
#include <wx/wfstream.h>
void DESIGN_BLOCK_INFO_IMPL::load()
void DESIGN_BLOCK_INFO_IMPL::load( const LOCALE_IO* locale )
{
DESIGN_BLOCK_LIB_TABLE* dbtable = m_owner->GetTable();
wxASSERT( dbtable );
const DESIGN_BLOCK* design_block = dbtable->GetEnumeratedDesignBlock( m_nickname, m_dbname );
std::unique_ptr<const DESIGN_BLOCK> design_block( dbtable->GetEnumeratedDesignBlock( m_nickname, m_dbname,
locale ) );
if( design_block )
{
@@ -128,7 +126,6 @@ bool DESIGN_BLOCK_LIST_IMPL::ReadDesignBlockFiles( DESIGN_BLOCK_LIB_TABLE* aTabl
m_queue.push( nickname );
}
if( m_progress_reporter )
{
m_progress_reporter->SetMaxProgress( (int) m_queue.size() );
@@ -167,7 +164,7 @@ void DESIGN_BLOCK_LIST_IMPL::loadDesignBlocks()
std::vector<std::future<size_t>> returns( num_elements );
auto db_thread =
[ this, &queue_parsed ]() -> size_t
[ this, &queue_parsed, &toggle_locale ]() -> size_t
{
wxString nickname;
@@ -179,7 +176,7 @@ void DESIGN_BLOCK_LIST_IMPL::loadDesignBlocks()
CatchErrors(
[&]()
{
m_lib_table->DesignBlockEnumerate( dbnames, nickname, false );
m_lib_table->DesignBlockEnumerate( dbnames, nickname, false, &toggle_locale );
} );
for( wxString dbname : dbnames )
@@ -187,7 +184,7 @@ void DESIGN_BLOCK_LIST_IMPL::loadDesignBlocks()
CatchErrors(
[&]()
{
auto* dbinfo = new DESIGN_BLOCK_INFO_IMPL( this, nickname, dbname );
auto* dbinfo = new DESIGN_BLOCK_INFO_IMPL( this, nickname, dbname, &toggle_locale );
queue_parsed.move_push( std::unique_ptr<DESIGN_BLOCK_INFO>( dbinfo ) );
} );
+3 -3
View File
@@ -36,7 +36,7 @@ class KICOMMON_API DESIGN_BLOCK_INFO_IMPL : public DESIGN_BLOCK_INFO
{
public:
DESIGN_BLOCK_INFO_IMPL( DESIGN_BLOCK_LIST* aOwner, const wxString& aNickname,
const wxString& aDesignBlockName )
const wxString& aDesignBlockName, const LOCALE_IO* aLocale )
{
m_nickname = aNickname;
m_dbname = aDesignBlockName;
@@ -44,7 +44,7 @@ public:
m_owner = aOwner;
m_loaded = false;
load();
load( aLocale );
}
// A constructor for cached items
@@ -73,7 +73,7 @@ public:
}
protected:
virtual void load() override;
virtual void load( const LOCALE_IO* aLocale = nullptr ) override;
};
+3 -1
View File
@@ -74,8 +74,10 @@ DESIGN_BLOCK_IO_MGR::DESIGN_BLOCK_FILE_T
DESIGN_BLOCK_IO_MGR::GuessPluginTypeFromLibPath( const wxString& aLibPath, int aCtl )
{
if( IO_RELEASER<DESIGN_BLOCK_IO>( FindPlugin( KICAD_SEXP ) )->CanReadLibrary( aLibPath )
&& aCtl != KICTL_NONKICAD_ONLY )
&& aCtl != KICTL_NONKICAD_ONLY )
{
return KICAD_SEXP;
}
return DESIGN_BLOCK_IO_MGR::FILE_TYPE_NONE;
}
+75 -35
View File
@@ -39,6 +39,7 @@
#include <wx/dir.h>
#include <wx/hash.h>
#include <locale_io.h>
#define OPT_SEP '|' ///< options separator character
@@ -205,7 +206,8 @@ void DESIGN_BLOCK_LIB_TABLE::Parse( LIB_TABLE_LEXER* in )
row->SetVisible();
break;
default: in->Unexpected( tok );
default:
in->Unexpected( tok );
}
in->NeedRIGHT();
@@ -253,7 +255,9 @@ bool DESIGN_BLOCK_LIB_TABLE::operator==( const DESIGN_BLOCK_LIB_TABLE& aDesignBl
{
if( (DESIGN_BLOCK_LIB_TABLE_ROW&) m_rows[i]
!= (DESIGN_BLOCK_LIB_TABLE_ROW&) aDesignBlockTable.m_rows[i] )
{
return false;
}
}
return true;
@@ -268,8 +272,8 @@ void DESIGN_BLOCK_LIB_TABLE::Format( OUTPUTFORMATTER* aOutput, int aIndentLevel
aOutput->Print( aIndentLevel, "(design_block_lib_table\n" );
aOutput->Print( aIndentLevel + 1, "(version %d)\n", m_version );
for( LIB_TABLE_ROWS_CITER it = m_rows.begin(); it != m_rows.end(); ++it )
it->Format( aOutput, aIndentLevel + 1 );
for( const LIB_TABLE_ROW& row : m_rows)
row.Format( aOutput, aIndentLevel + 1 );
aOutput->Print( aIndentLevel, ")\n" );
}
@@ -312,13 +316,24 @@ long long DESIGN_BLOCK_LIB_TABLE::GenerateTimestamp( const wxString* aNickname )
}
void DESIGN_BLOCK_LIB_TABLE::DesignBlockEnumerate( wxArrayString& aDesignBlockNames,
const wxString& aNickname, bool aBestEfforts )
void DESIGN_BLOCK_LIB_TABLE::DesignBlockEnumerate( wxArrayString& aDesignBlockNames, const wxString& aNickname,
bool aBestEfforts, const LOCALE_IO* aLocale )
{
const DESIGN_BLOCK_LIB_TABLE_ROW* row = FindRow( aNickname, true );
wxASSERT( row->plugin );
row->plugin->DesignBlockEnumerate( aDesignBlockNames, row->GetFullURI( true ), aBestEfforts,
row->GetProperties() );
if( !aLocale )
{
LOCALE_IO toggle_locale;
row->plugin->DesignBlockEnumerate( aDesignBlockNames, row->GetFullURI( true ), aBestEfforts,
row->GetProperties() );
}
else
{
row->plugin->DesignBlockEnumerate( aDesignBlockNames, row->GetFullURI( true ), aBestEfforts,
row->GetProperties() );
}
}
@@ -330,9 +345,9 @@ const DESIGN_BLOCK_LIB_TABLE_ROW* DESIGN_BLOCK_LIB_TABLE::FindRow( const wxStrin
if( !row )
{
wxString msg = wxString::Format(
_( "design-block-lib-table files contain no library named '%s'." ), aNickname );
THROW_IO_ERROR( msg );
THROW_IO_ERROR( wxString::Format( _( "design-block-lib-table files contain no library "
"named '%s'." ),
aNickname ) );
}
if( !row->plugin )
@@ -369,19 +384,34 @@ static void setLibNickname( DESIGN_BLOCK* aModule, const wxString& aNickname,
const DESIGN_BLOCK*
DESIGN_BLOCK_LIB_TABLE::GetEnumeratedDesignBlock( const wxString& aNickname,
const wxString& aDesignBlockName )
const wxString& aDesignBlockName,
const LOCALE_IO* aLocale )
{
const DESIGN_BLOCK_LIB_TABLE_ROW* row = FindRow( aNickname, true );
wxASSERT( row->plugin );
return row->plugin->GetEnumeratedDesignBlock( row->GetFullURI( true ), aDesignBlockName,
row->GetProperties() );
if( !aLocale )
{
LOCALE_IO toggle_locale;
return row->plugin->GetEnumeratedDesignBlock( row->GetFullURI( true ), aDesignBlockName,
row->GetProperties() );
}
else
{
return row->plugin->GetEnumeratedDesignBlock( row->GetFullURI( true ), aDesignBlockName,
row->GetProperties() );
}
}
bool DESIGN_BLOCK_LIB_TABLE::DesignBlockExists( const wxString& aNickname,
const wxString& aDesignBlockName )
{
// NOT THREAD-SAFE! LOCALE_IO is global!
LOCALE_IO toggle_locale;
try
{
const DESIGN_BLOCK_LIB_TABLE_ROW* row = FindRow( aNickname, true );
@@ -401,6 +431,10 @@ DESIGN_BLOCK* DESIGN_BLOCK_LIB_TABLE::DesignBlockLoad( const wxString& aNickname
const wxString& aDesignBlockName,
bool aKeepUUID )
{
// NOT THREAD-SAFE! LOCALE_IO is global!
LOCALE_IO toggle_locale;
const DESIGN_BLOCK_LIB_TABLE_ROW* row = FindRow( aNickname, true );
wxASSERT( row->plugin );
@@ -417,6 +451,10 @@ DESIGN_BLOCK_LIB_TABLE::SAVE_T
DESIGN_BLOCK_LIB_TABLE::DesignBlockSave( const wxString& aNickname,
const DESIGN_BLOCK* aDesignBlock, bool aOverwrite )
{
// NOT THREAD-SAFE! LOCALE_IO is global!
LOCALE_IO toggle_locale;
const DESIGN_BLOCK_LIB_TABLE_ROW* row = FindRow( aNickname, true );
wxASSERT( row->plugin );
@@ -430,7 +468,7 @@ DESIGN_BLOCK_LIB_TABLE::DesignBlockSave( const wxString& aNickname,
std::unique_ptr<DESIGN_BLOCK> design_block( row->plugin->DesignBlockLoad(
row->GetFullURI( true ), DesignBlockname, row->GetProperties() ) );
if( design_block.get() )
if( design_block )
return SAVE_SKIPPED;
}
@@ -490,14 +528,12 @@ DESIGN_BLOCK_LIB_TABLE::DesignBlockLoadWithOptionalNickname( const LIB_ID& aDesi
// nickname is empty, sequentially search (alphabetically) all libs/nicks for first match:
else
{
std::vector<wxString> nicks = GetLogicalLibs();
// Search each library going through libraries alphabetically.
for( unsigned i = 0; i < nicks.size(); ++i )
for( const wxString& library : GetLogicalLibs() )
{
// DesignBlockLoad() returns NULL on not found, does not throw exception
// unless there's an IO_ERROR.
DESIGN_BLOCK* ret = DesignBlockLoad( nicks[i], DesignBlockname, aKeepUUID );
DESIGN_BLOCK* ret = DesignBlockLoad( library, DesignBlockname, aKeepUUID );
if( ret )
return ret;
@@ -520,7 +556,8 @@ public:
explicit PCM_DESIGN_BLOCK_LIB_TRAVERSER( const wxString& aPath, DESIGN_BLOCK_LIB_TABLE& aTable,
const wxString& aPrefix ) :
m_lib_table( aTable ),
m_path_prefix( aPath ), m_lib_prefix( aPrefix )
m_path_prefix( aPath ),
m_lib_prefix( aPrefix )
{
wxFileName f( aPath, wxS( "" ) );
m_prefix_dir_count = f.GetDirCount();
@@ -535,12 +572,11 @@ public:
// consider a directory to be a lib if it's name ends with the design block lib dir
// extension it is under $KICADn_3RD_PARTY/design_blocks/<pkgid>/ i.e. has nested
// level of at least +3.
if( dirPath.EndsWith( wxString::Format( wxS( ".%s" ),
FILEEXT::KiCadDesignBlockLibPathExtension ) )
if( dirPath.EndsWith( wxString::Format( wxS( ".%s" ), FILEEXT::KiCadDesignBlockLibPathExtension ) )
&& dir.GetDirCount() >= m_prefix_dir_count + 3 )
{
wxString versionedPath = wxString::Format(
wxS( "${%s}" ), ENV_VAR::GetVersionedEnvVarName( wxS( "3RD_PARTY" ) ) );
wxString versionedPath;
versionedPath.Printf( wxS( "${%s}" ), ENV_VAR::GetVersionedEnvVarName( wxS( "3RD_PARTY" ) ) );
wxArrayString parts = dir.GetDirs();
parts.RemoveAt( 0, m_prefix_dir_count );
@@ -551,22 +587,27 @@ public:
if( !m_lib_table.HasLibraryWithPath( libPath ) )
{
wxString name = parts.Last().substr( 0, parts.Last().length() - 7 );
wxString nickname = wxString::Format( wxS( "%s%s" ), m_lib_prefix, name );
wxString nickname;
nickname.Printf( wxS( "%s%s" ),
m_lib_prefix,
name );
if( m_lib_table.HasLibrary( nickname ) )
{
int increment = 1;
do
{
nickname =
wxString::Format( wxS( "%s%s_%d" ), m_lib_prefix, name, increment );
increment++;
nickname.Printf( wxS( "%s%s_%d" ),
m_lib_prefix,
name,
increment++ );
} while( m_lib_table.HasLibrary( nickname ) );
}
m_lib_table.InsertRow( new DESIGN_BLOCK_LIB_TABLE_ROW(
nickname, libPath, wxT( "KiCad" ), wxEmptyString,
_( "Added by Plugin and Content Manager" ) ) );
m_lib_table.InsertRow( new DESIGN_BLOCK_LIB_TABLE_ROW( nickname, libPath, wxT( "KiCad" ),
wxEmptyString,
_( "Added by Plugin and Content Manager" ) ) );
}
}
@@ -590,7 +631,8 @@ bool DESIGN_BLOCK_LIB_TABLE::LoadGlobalTable( DESIGN_BLOCK_LIB_TABLE& aTable )
{
tableExists = false;
if( !fn.DirExists() && !fn.Mkdir( 0x777, wxPATH_MKDIR_FULL ) )
if( !wxFileName::DirExists( fn.GetPath() )
&& !wxFileName::Mkdir( fn.GetPath(), 0x777, wxPATH_MKDIR_FULL ) )
{
THROW_IO_ERROR( wxString::Format( _( "Cannot create global library table path '%s'." ),
fn.GetPath() ) );
@@ -603,8 +645,7 @@ bool DESIGN_BLOCK_LIB_TABLE::LoadGlobalTable( DESIGN_BLOCK_LIB_TABLE& aTable )
SystemDirsAppend( &ss );
const ENV_VAR_MAP& envVars = Pgm().GetLocalEnvVariables();
std::optional<wxString> v =
ENV_VAR::GetVersionedEnvVarValue( envVars, wxT( "TEMPLATE_DIR" ) );
std::optional<wxString> v = ENV_VAR::GetVersionedEnvVarValue( envVars, wxT( "TEMPLATE_DIR" ) );
if( v && !v->IsEmpty() )
ss.AddPaths( *v, 0 );
@@ -641,8 +682,7 @@ bool DESIGN_BLOCK_LIB_TABLE::LoadGlobalTable( DESIGN_BLOCK_LIB_TABLE& aTable )
if( d.DirExists() )
{
PCM_DESIGN_BLOCK_LIB_TRAVERSER traverser( packagesPath, aTable,
settings->m_PcmLibPrefix );
PCM_DESIGN_BLOCK_LIB_TRAVERSER traverser( packagesPath, aTable, settings->m_PcmLibPrefix );
wxDir dir( d.GetPath() );
dir.Traverse( traverser );
+8 -1
View File
@@ -622,6 +622,7 @@ static void buildKicadAboutBanner( EDA_BASE_FRAME* aParent, ABOUT_APP_INFO& aInf
ADD_DEV( wxT( "Nick Østergaard" ), CONTRIB_DEV );
ADD_DEV( wxT( "木 王" ), CONTRIB_DEV );
ADD_DEV( wxT( "wh201906" ), CONTRIB_DEV );
// The document writers
#define DOC_TEAM _( "Documentation Team" )
@@ -908,7 +909,13 @@ static void buildKicadAboutBanner( EDA_BASE_FRAME* aParent, ABOUT_APP_INFO& aInf
#define FOOTPRINT_LIB_CONTRIBUTION _( "Footprints" )
aInfo.AddLibrarian( new CONTRIBUTOR( wxS( "Scripts by Maui" ),
MODELS_3D_CONTRIBUTION,
wxS( "https://gitlab.com/kicad/libraries/kicad-footprint-generator" ) ) );
wxS( "https://github.com/easyw" ) ) );
aInfo.AddLibrarian( new CONTRIBUTOR( wxS( "Hasan Yavuz Özderya" ),
MODELS_3D_CONTRIBUTION,
wxS( "https://bitbucket.org/hyOzd/freecad-macros/src/master/" ) ) );
aInfo.AddLibrarian( new CONTRIBUTOR( wxS( "GitHub contributors" ),
MODELS_3D_CONTRIBUTION,
wxS( "https://github.com/easyw/kicad-3d-models-in-freecad/graphs/contributors" ) ) );
aInfo.AddLibrarian( new CONTRIBUTOR( wxS( "GitLab contributors" ),
MODELS_3D_CONTRIBUTION,
wxS( "https://gitlab.com/kicad/libraries/kicad-packages3D/-/graphs/master" ) ) );
+13 -2
View File
@@ -22,7 +22,6 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <build_version.h>
#include <eda_base_frame.h>
#include <wx/clipbrd.h>
@@ -108,8 +107,20 @@ DIALOG_ABOUT::DIALOG_ABOUT( EDA_BASE_FRAME *aParent, ABOUT_APP_INFO& aAppInfo )
m_titleName = aParent->GetAboutTitle();
m_untranslatedTitleName = aParent->GetUntranslatedAboutTitle();
m_staticTextAppTitle->SetLabel( m_titleName );
// On windows, display the number of GDI objects in use. Can be useful when some GDI objects
// are not displayed because the max count of GDI objects (usually 10000) is reached
// So displaying this number can help to diagnose strange display issues
wxString extraInfo;
#if defined( _WIN32 )
uint32_t gdi_count = GetGuiResources( GetCurrentProcess(), GR_GDIOBJECTS );
extraInfo.Printf( _( "GDI objects in use %u" ), gdi_count );
extraInfo.Prepend( wxT( "\n" ) );
#endif
m_staticTextBuildVersion->SetLabel( wxS( "Version: " ) + m_info.GetBuildVersion() );
m_staticTextLibVersion->SetLabel( m_info.GetLibVersion() );
m_staticTextLibVersion->SetLabel( m_info.GetLibVersion() + extraInfo );
SetTitle( wxString::Format( _( "About %s" ), m_titleName ) );
createNotebooks();
+134 -89
View File
@@ -42,43 +42,6 @@
#include <algorithm>
/// Toggle a window's "enable" status to disabled, then enabled on destruction.
class WDO_ENABLE_DISABLE
{
wxWindow* m_win;
public:
WDO_ENABLE_DISABLE( wxWindow* aWindow ) :
m_win( aWindow )
{
if( m_win )
m_win->Disable();
}
~WDO_ENABLE_DISABLE()
{
if( m_win )
{
m_win->Enable();
m_win->Raise(); // let's focus back on the parent window
}
}
void SuspendForTrueModal()
{
if( m_win )
m_win->Enable();
}
void ResumeAfterTrueModal()
{
if( m_win )
m_win->Disable();
}
};
BEGIN_EVENT_TABLE( DIALOG_SHIM, wxDialog )
EVT_CHAR_HOOK( DIALOG_SHIM::OnCharHook )
END_EVENT_TABLE()
@@ -87,17 +50,19 @@ END_EVENT_TABLE()
DIALOG_SHIM::DIALOG_SHIM( wxWindow* aParent, wxWindowID id, const wxString& title,
const wxPoint& pos, const wxSize& size, long style,
const wxString& name ) :
wxDialog( aParent, id, title, pos, size, style, name ),
KIWAY_HOLDER( nullptr, KIWAY_HOLDER::DIALOG ),
m_units( EDA_UNITS::MILLIMETRES ),
m_useCalculatedSize( false ),
m_firstPaintEvent( true ),
m_initialFocusTarget( nullptr ),
m_isClosing( false ),
m_qmodal_loop( nullptr ),
m_qmodal_showing( false ),
m_qmodal_parent_disabler( nullptr ),
m_parentFrame( nullptr )
wxDialog( aParent, id, title, pos, size, style, name ),
KIWAY_HOLDER( nullptr, KIWAY_HOLDER::DIALOG ),
m_units( EDA_UNITS::MM ),
m_useCalculatedSize( false ),
m_firstPaintEvent( true ),
m_initialFocusTarget( nullptr ),
m_isClosing( false ),
m_qmodal_loop( nullptr ),
m_qmodal_showing( false ),
m_qmodal_parent_disabler( nullptr ),
m_parentFrame( nullptr ),
m_userPositioned( false ),
m_userResized( false )
{
KIWAY_HOLDER* kiwayHolder = nullptr;
m_initialSize = size;
@@ -138,6 +103,8 @@ DIALOG_SHIM::DIALOG_SHIM( wxWindow* aParent, wxWindowID id, const wxString& titl
Bind( wxEVT_CLOSE_WINDOW, &DIALOG_SHIM::OnCloseWindow, this );
Bind( wxEVT_BUTTON, &DIALOG_SHIM::OnButton, this );
Bind( wxEVT_SIZE, &DIALOG_SHIM::OnSize, this );
Bind( wxEVT_MOVE, &DIALOG_SHIM::OnMove, this );
#ifdef __WINDOWS__
// On Windows, the app top windows can be brought to the foreground (at least temporarily)
@@ -158,29 +125,32 @@ DIALOG_SHIM::~DIALOG_SHIM()
Unbind( wxEVT_CLOSE_WINDOW, &DIALOG_SHIM::OnCloseWindow, this );
Unbind( wxEVT_BUTTON, &DIALOG_SHIM::OnButton, this );
Unbind( wxEVT_PAINT, &DIALOG_SHIM::OnPaint, this );
Unbind( wxEVT_SIZE, &DIALOG_SHIM::OnSize, this );
Unbind( wxEVT_MOVE, &DIALOG_SHIM::OnMove, this );
std::function<void( wxWindowList& )> disconnectFocusHandlers = [&]( wxWindowList& children )
{
for( wxWindow* child : children )
{
if( wxTextCtrl* textCtrl = dynamic_cast<wxTextCtrl*>( child ) )
std::function<void( wxWindowList& )> disconnectFocusHandlers =
[&]( wxWindowList& children )
{
textCtrl->Disconnect( wxEVT_SET_FOCUS,
wxFocusEventHandler( DIALOG_SHIM::onChildSetFocus ),
nullptr, this );
}
else if( wxStyledTextCtrl* scintilla = dynamic_cast<wxStyledTextCtrl*>( child ) )
{
scintilla->Disconnect( wxEVT_SET_FOCUS,
wxFocusEventHandler( DIALOG_SHIM::onChildSetFocus ),
nullptr, this );
}
else
{
disconnectFocusHandlers( child->GetChildren() );
}
}
};
for( wxWindow* child : children )
{
if( wxTextCtrl* textCtrl = dynamic_cast<wxTextCtrl*>( child ) )
{
textCtrl->Disconnect( wxEVT_SET_FOCUS,
wxFocusEventHandler( DIALOG_SHIM::onChildSetFocus ),
nullptr, this );
}
else if( wxStyledTextCtrl* scintilla = dynamic_cast<wxStyledTextCtrl*>( child ) )
{
scintilla->Disconnect( wxEVT_SET_FOCUS,
wxFocusEventHandler( DIALOG_SHIM::onChildSetFocus ),
nullptr, this );
}
else
{
disconnectFocusHandlers( child->GetChildren() );
}
}
};
disconnectFocusHandlers( GetChildren() );
@@ -324,11 +294,24 @@ bool DIALOG_SHIM::Show( bool show )
// shown on another display)
if( wxDisplay::GetFromWindow( this ) == wxNOT_FOUND )
Centre();
m_userPositioned = false;
m_userResized = false;
}
else
{
// Save the dialog's position & size before hiding, using classname as key
class_map[ hash_key ] = wxRect( wxDialog::GetPosition(), wxDialog::GetSize() );
// Save the dialog's position & size before hiding, using classname as key.
// Be careful of rounding errors: only re-save if the user modified the value or
// it has not yet been saved.
wxRect rect = class_map[ hash_key ];
if( m_userPositioned || rect.GetPosition() == wxPoint() )
rect.SetPosition( wxDialog::GetPosition() );
if( m_userResized || rect.GetSize() == wxSize() )
rect.SetSize( wxDialog::GetSize() );
class_map[ hash_key ] = rect;
#ifdef __WXMAC__
if ( m_eventLoop )
@@ -370,6 +353,20 @@ void DIALOG_SHIM::resetSize()
}
void DIALOG_SHIM::OnSize( wxSizeEvent& aEvent )
{
m_userResized = true;
aEvent.Skip();
}
void DIALOG_SHIM::OnMove( wxMoveEvent& aEvent )
{
m_userPositioned = true;
aEvent.Skip();
}
bool DIALOG_SHIM::Enable( bool enable )
{
// so we can do logging of this state change:
@@ -497,14 +494,17 @@ int DIALOG_SHIM::ShowModal()
}
/*
Quasi-Modal Mode Explained:
QuasiModal Mode Explained:
The gtk calls in wxDialog::ShowModal() cause event routing problems if that
modal dialog then tries to use KIWAY_PLAYER::ShowModal(). The latter shows up
and mostly works but does not respond to the window decoration close button.
There is no way to get around this without reversing the gtk calls temporarily.
Quasi-Modal mode is our own almost modal mode which disables only the parent
There are also issues with the Scintilla text editor putting up autocomplete
popups, which appear behind the dialog window if QuasiModal is not used.
QuasiModal mode is our own almost modal mode which disables only the parent
of the DIALOG_SHIM, leaving other frames operable and while staying captured in the
nested event loop. This avoids the gtk calls and leaves event routing pure
and sufficient to operate the KIWAY_PLAYER::ShowModal() properly. When using
@@ -521,15 +521,7 @@ int DIALOG_SHIM::ShowModal()
int DIALOG_SHIM::ShowQuasiModal()
{
// This is an exception safe way to zero a pointer before returning.
// Yes, even though DismissModal() clears this first normally, this is
// here in case there's an exception before the dialog is dismissed.
struct NULLER
{
void*& m_what;
NULLER( void*& aPtr ) : m_what( aPtr ) {}
~NULLER() { m_what = nullptr; } // indeed, set it to NULL on destruction
} clear_this( (void*&) m_qmodal_loop );
NULLER raii_nuller( (void*&) m_qmodal_loop );
// release the mouse if it's currently captured as the window having it
// will be disabled when this dialog is shown -- but will still keep the
@@ -545,7 +537,7 @@ int DIALOG_SHIM::ShowQuasiModal()
"window?" ) );
// quasi-modal: disable only my "optimal" parent
m_qmodal_parent_disabler = new WDO_ENABLE_DISABLE( parent );
m_qmodal_parent_disabler = new WINDOW_DISABLER( parent );
// Apple in its infinite wisdom will raise a disabled window before even passing
// us the event, so we have no way to stop it. Instead, we must set an order on
@@ -610,8 +602,6 @@ void DIALOG_SHIM::EndQuasiModal( int retCode )
m_qmodal_loop->Exit( 0 );
else
m_qmodal_loop->ScheduleExit( 0 );
m_qmodal_loop = nullptr;
}
delete m_qmodal_parent_disabler;
@@ -698,9 +688,50 @@ void DIALOG_SHIM::OnCharHook( wxKeyEvent& aEvt )
return;
}
}
// shift-return (Mac default) or Ctrl-Return (GTK) for OK
else if( ( aEvt.GetKeyCode() == WXK_RETURN || aEvt.GetKeyCode() == WXK_NUMPAD_ENTER )
&& ( aEvt.ShiftDown() || aEvt.ControlDown() ) )
// shift-return (Mac default) or Ctrl-Return (GTK) for new line input
else if( ( aEvt.GetKeyCode() == WXK_RETURN || aEvt.GetKeyCode() == WXK_NUMPAD_ENTER ) && aEvt.ShiftDown() )
{
wxObject* eventSource = aEvt.GetEventObject();
if( wxTextCtrl* textCtrl = dynamic_cast<wxTextCtrl*>( eventSource ) )
{
// If the text control is not multi-line, we want to close the dialog
if( !textCtrl->IsMultiLine() )
{
wxPostEvent( this, wxCommandEvent( wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK ) );
return;
}
#if defined( __WXMAC__ ) || defined( __WXMSW__ )
wxString eol = "\r\n";
#else
wxString eol = "\n";
#endif
long pos = textCtrl->GetInsertionPoint();
textCtrl->WriteText( eol );
textCtrl->SetInsertionPoint( pos + eol.length() );
return;
}
else if( wxStyledTextCtrl* scintilla = dynamic_cast<wxStyledTextCtrl*>( eventSource ) )
{
wxString eol = "\n";
switch( scintilla->GetEOLMode() )
{
case wxSTC_EOL_CRLF: eol = "\r\n"; break;
case wxSTC_EOL_CR: eol = "\r"; break;
case wxSTC_EOL_LF: eol = "\n"; break;
}
long pos = scintilla->GetCurrentPos();
scintilla->InsertText( pos, eol );
scintilla->GotoPos( pos + eol.length() );
return;
}
return;
}
// command-return (Mac default) or Ctrl-Return (GTK) for OK
else if( ( aEvt.GetKeyCode() == WXK_RETURN || aEvt.GetKeyCode() == WXK_NUMPAD_ENTER ) && aEvt.ControlDown() )
{
wxPostEvent( this, wxCommandEvent( wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK ) );
return;
@@ -721,7 +752,10 @@ void DIALOG_SHIM::OnCharHook( wxKeyEvent& aEvt )
for( size_t i = 0; i < m_tabOrder.size(); ++i )
{
if( m_tabOrder[i] == currentWindow )
// Check for exact match or if currentWindow is a child of the control
// (e.g., the text entry inside a wxComboBox)
if( m_tabOrder[i] == currentWindow
|| ( currentWindow && m_tabOrder[i]->IsDescendant( currentWindow ) ) )
{
currentIdx = (int) i;
break;
@@ -732,6 +766,17 @@ void DIALOG_SHIM::OnCharHook( wxKeyEvent& aEvt )
{
advance( currentIdx );
// Skip hidden or disabled controls
int startIdx = currentIdx;
while( !m_tabOrder[currentIdx]->IsShown() || !m_tabOrder[currentIdx]->IsEnabled() )
{
advance( currentIdx );
if( currentIdx == startIdx )
break; // Avoid infinite loop if all controls are hidden
}
//todo: We don't currently have non-textentry dialog boxes but this will break if
// we add them.
#ifdef __APPLE__
@@ -255,6 +255,9 @@ void DIALOG_CONFIGURE_PATHS::OnGridCellChanging( wxGridEvent& event )
int col = event.GetCol();
wxString text = event.GetString();
text.Trim( true ).Trim( false ); // Trim from both sides
grid->SetCellValue( row, col, text ); // Update the grid with trimmed value
if( text.IsEmpty() )
{
if( grid == m_EnvVars )
@@ -27,6 +27,8 @@
#include "design_block_lib_table.h"
#include <kiplatform/io.h>
DIALOG_GLOBAL_DESIGN_BLOCK_LIB_TABLE_CONFIG::DIALOG_GLOBAL_DESIGN_BLOCK_LIB_TABLE_CONFIG(
wxWindow* aParent ) :
@@ -106,8 +108,8 @@ bool DIALOG_GLOBAL_DESIGN_BLOCK_LIB_TABLE_CONFIG::TransferDataFromWindow()
// Create the config path if it doesn't already exist.
wxFileName designBlockTableFileName = DESIGN_BLOCK_LIB_TABLE::GetGlobalTableFileName();
if( !designBlockTableFileName.DirExists()
&& !designBlockTableFileName.Mkdir( 0x777, wxPATH_MKDIR_FULL ) )
if( !wxFileName::DirExists( designBlockTableFileName.GetPath() )
&& !wxFileName::Mkdir( designBlockTableFileName.GetPath(), 0x777, wxPATH_MKDIR_FULL ) )
{
DisplayError( this, wxString::Format( _( "Cannot create global library table '%s'." ),
designBlockTableFileName.GetPath() ) );
@@ -124,6 +126,9 @@ bool DIALOG_GLOBAL_DESIGN_BLOCK_LIB_TABLE_CONFIG::TransferDataFromWindow()
fn.GetFullPath(), designBlockTableFileName.GetFullPath() ) );
return false;
}
// Ensure the copied file is writable
KIPLATFORM::IO::MakeWriteable( designBlockTableFileName.GetFullPath() );
}
// Load the successfully copied design block library table file. This should not fail since the
+6 -6
View File
@@ -77,14 +77,14 @@ bool DIALOG_GRID_SETTINGS::TransferDataFromWindow()
{
double gridX = m_gridSizeX.GetDoubleValue();
if( !m_gridSizeX.Validate( 0.001, 1000.0, EDA_UNITS::MILLIMETRES ) )
if( !m_gridSizeX.Validate( 0.001, 1000.0, EDA_UNITS::MM ) )
{
wxMessageBox( _( "Grid size X out of range." ), _( "Error" ), wxOK | wxICON_ERROR );
return false;
}
if( !m_checkLinked->IsChecked()
&& !m_gridSizeY.Validate( 0.001, 1000.0, EDA_UNITS::MILLIMETRES ) )
&& !m_gridSizeY.Validate( 0.001, 1000.0, EDA_UNITS::MM ) )
{
wxMessageBox( _( "Grid size Y out of range." ), _( "Error" ), wxOK | wxICON_ERROR );
return false;
@@ -94,10 +94,10 @@ bool DIALOG_GRID_SETTINGS::TransferDataFromWindow()
m_grid.name = m_textName->GetValue();
// Grid X/Y are always stored in millimeters so we can compare them easily
m_grid.x = EDA_UNIT_UTILS::UI::StringFromValue( m_unitsProvider->GetIuScale(),
EDA_UNITS::MILLIMETRES, gridX );
m_grid.y = EDA_UNIT_UTILS::UI::StringFromValue( m_unitsProvider->GetIuScale(),
EDA_UNITS::MILLIMETRES, gridY );
m_grid.x = EDA_UNIT_UTILS::UI::StringFromValue( m_unitsProvider->GetIuScale(), EDA_UNITS::MM,
gridX );
m_grid.y = EDA_UNIT_UTILS::UI::StringFromValue( m_unitsProvider->GetIuScale(), EDA_UNITS::MM,
gridY );
return true;
}
+14 -2
View File
@@ -21,11 +21,13 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "kicad_manager_frame.h"
#include <dialogs/dialog_hotkey_list.h>
#include <kiface_base.h>
#include <eda_base_frame.h>
#include <panel_hotkeys_editor.h>
#include <widgets/ui_common.h>
#include <tool/tool_manager.h>
#include <wx/sizer.h>
#include <wx/button.h>
@@ -37,9 +39,18 @@ DIALOG_LIST_HOTKEYS::DIALOG_LIST_HOTKEYS( EDA_BASE_FRAME* aParent ):
wxBoxSizer* main_sizer = new wxBoxSizer( wxVERTICAL );
KIFACE* kiface = nullptr;
m_hk_list = new PANEL_HOTKEYS_EDITOR( aParent, this, true );
m_hk_list = new PANEL_HOTKEYS_EDITOR( aParent, this );
m_hk_list->SetIncludeGestures( true );
Kiway().GetActions( m_hk_list->ActionsList() );
wxWindow* kicadMgr_window = wxWindow::FindWindowByName( KICAD_MANAGER_FRAME_NAME );
if( KICAD_MANAGER_FRAME* kicadMgr = static_cast<KICAD_MANAGER_FRAME*>( kicadMgr_window ) )
{
ACTION_MANAGER* actionMgr = kicadMgr->GetToolManager()->GetActionManager();
for( const auto& [name, action] : actionMgr->GetActions() )
m_hk_list->ActionsList().push_back( action );
}
kiface = Kiway().KiFACE( KIWAY::FACE_SCH );
kiface->GetActions( m_hk_list->ActionsList() );
@@ -61,6 +72,7 @@ DIALOG_LIST_HOTKEYS::DIALOG_LIST_HOTKEYS( EDA_BASE_FRAME* aParent ):
wxStdDialogButtonSizer* sdb_sizer = new wxStdDialogButtonSizer;
sdb_sizer->AddButton( new wxButton( this, wxID_OK ) );
sdb_sizer->AddButton( new wxButton( this, wxID_CANCEL ) );
sdb_sizer->Realize();
main_sizer->Add( sdb_sizer, 0, wxEXPAND | wxALL, margin );
@@ -60,11 +60,17 @@ void DIALOG_LOCKED_ITEMS_QUERY::onOverrideLocks( wxCommandEvent& event )
int DIALOG_LOCKED_ITEMS_QUERY::ShowModal()
{
static int doNotShowValue = wxID_ANY;
if( doNotShowValue != wxID_ANY && m_lockingOptions.m_sessionSkipPrompts )
return doNotShowValue;
int ret = DIALOG_SHIM::ShowModal();
// Has the user asked not to show the dialog again this session?
if( m_doNotShowBtn->IsChecked() && ret != wxID_CANCEL )
{
doNotShowValue = ret;
m_lockingOptions.m_sessionSkipPrompts = true;
}
@@ -27,7 +27,7 @@ DIALOG_LOCKED_ITEMS_QUERY_BASE::DIALOG_LOCKED_ITEMS_QUERY_BASE( wxWindow* parent
wxBoxSizer* bSizer4;
bSizer4 = new wxBoxSizer( wxVERTICAL );
m_messageLine1 = new wxStaticText( this, wxID_ANY, _("The selection contains %lu locked items."), wxDefaultPosition, wxDefaultSize, 0 );
m_messageLine1 = new wxStaticText( this, wxID_ANY, _("The selection contains %zu locked items."), wxDefaultPosition, wxDefaultSize, 0 );
m_messageLine1->Wrap( -1 );
bSizer4->Add( m_messageLine1, 0, wxALL, 5 );
@@ -182,7 +182,7 @@
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">The selection contains %lu locked items.</property>
<property name="label">The selection contains %zu locked items.</property>
<property name="markup">0</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
+9 -16
View File
@@ -474,24 +474,17 @@ bool DIALOG_PAGES_SETTINGS::SavePageSettings()
wxString msg;
wxString fileName = GetWksFileName();
if( fileName != BASE_SCREEN::m_DrawingSheetFileName )
wxString fullFileName = m_filenameResolver->ResolvePath( fileName, m_projectPath, { m_embeddedFiles } );
BASE_SCREEN::m_DrawingSheetFileName = fileName;
if( !DS_DATA_MODEL::GetTheInstance().LoadDrawingSheet( fullFileName, &msg ) )
{
wxString fullFileName = m_filenameResolver->ResolvePath( fileName, m_projectPath,
m_embeddedFiles );
BASE_SCREEN::m_DrawingSheetFileName = fileName;
if( !DS_DATA_MODEL::GetTheInstance().LoadDrawingSheet( fullFileName, &msg ) )
{
DisplayErrorMessage( this,
wxString::Format( _( "Error loading drawing sheet '%s'." ),
fullFileName ),
msg );
}
m_localPrjConfigChanged = true;
DisplayErrorMessage( this, wxString::Format( _( "Error loading drawing sheet '%s'." ), fullFileName ), msg );
}
m_localPrjConfigChanged = true;
int idx = std::max( m_paperSizeComboBox->GetSelection(), 0 );
const wxString paperType = m_pageFmt[idx];
@@ -823,7 +816,7 @@ void DIALOG_PAGES_SETTINGS::OnWksFileSelection( wxCommandEvent& event )
if( m_embeddedFiles && customize.GetEmbed() )
{
fn.Assign( fileName );
EMBEDDED_FILES::EMBEDDED_FILE* result = m_embeddedFiles->AddFile( fn, false );
EMBEDDED_FILES::EMBEDDED_FILE* result = m_embeddedFiles->AddFile( fn, true );
shortFileName = result->GetLink();
fileName = m_embeddedFiles->GetTemporaryFileName( result->name ).GetFullPath();
}
+10 -3
View File
@@ -50,11 +50,13 @@ int WX_UNIT_ENTRY_DIALOG::GetValue()
WX_PT_ENTRY_DIALOG::WX_PT_ENTRY_DIALOG( EDA_DRAW_FRAME* aParent, const wxString& aCaption,
const wxString& aLabelX, const wxString& aLabelY,
const VECTOR2I& aDefaultValue ) :
const VECTOR2I& aDefaultValue, bool aShowResetButt ) :
WX_PT_ENTRY_DIALOG_BASE( ( wxWindow* ) aParent, wxID_ANY, aCaption ),
m_unit_binder_x( aParent, m_labelX, m_textCtrlX, m_unitsX, true ),
m_unit_binder_y( aParent, m_labelY, m_textCtrlY, m_unitsY, true )
{
m_ButtonReset->Show( aShowResetButt );
m_labelX->SetLabel( aLabelX );
m_labelY->SetLabel( aLabelY );
@@ -67,8 +69,7 @@ WX_PT_ENTRY_DIALOG::WX_PT_ENTRY_DIALOG( EDA_DRAW_FRAME* aParent, const wxString&
SetInitialFocus( m_textCtrlX );
SetupStandardButtons();
Layout();
bSizerMain->Fit( this );
finishDialogSettings();
}
@@ -76,3 +77,9 @@ VECTOR2I WX_PT_ENTRY_DIALOG::GetValue()
{
return VECTOR2I( m_unit_binder_x.GetIntValue(), m_unit_binder_y.GetIntValue() );
}
void WX_PT_ENTRY_DIALOG::ResetValues( wxCommandEvent& event )
{
m_unit_binder_x.SetValue( 0 );
m_unit_binder_y.SetValue( 0 );
}
+11 -2
View File
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b)
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@@ -102,8 +102,11 @@ WX_PT_ENTRY_DIALOG_BASE::WX_PT_ENTRY_DIALOG_BASE( wxWindow* parent, wxWindowID i
wxBoxSizer* bSizerButtons;
bSizerButtons = new wxBoxSizer( wxHORIZONTAL );
m_ButtonReset = new wxButton( this, wxID_ANY, _("Reset"), wxDefaultPosition, wxDefaultSize, 0 );
bSizerButtons->Add( m_ButtonReset, 0, wxALL|wxRESERVE_SPACE_EVEN_IF_HIDDEN, 5 );
bSizerButtons->Add( 100, 0, 1, wxALIGN_CENTER_VERTICAL, 5 );
bSizerButtons->Add( 30, 0, 1, wxALIGN_CENTER_VERTICAL, 5 );
m_sdbSizer1 = new wxStdDialogButtonSizer();
m_sdbSizer1OK = new wxButton( this, wxID_OK );
@@ -123,8 +126,14 @@ WX_PT_ENTRY_DIALOG_BASE::WX_PT_ENTRY_DIALOG_BASE( wxWindow* parent, wxWindowID i
bSizerMain->Fit( this );
this->Centre( wxBOTH );
// Connect Events
m_ButtonReset->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WX_PT_ENTRY_DIALOG_BASE::ResetValues ), NULL, this );
}
WX_PT_ENTRY_DIALOG_BASE::~WX_PT_ENTRY_DIALOG_BASE()
{
// Disconnect Events
m_ButtonReset->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WX_PT_ENTRY_DIALOG_BASE::ResetValues ), NULL, this );
}
File diff suppressed because it is too large Load Diff
+9 -2
View File
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b)
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@@ -21,10 +21,12 @@
#include <wx/sizer.h>
#include <wx/button.h>
#include <wx/dialog.h>
#include <wx/bitmap.h>
#include <wx/image.h>
#include <wx/icon.h>
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/// Class WX_UNIT_ENTRY_DIALOG_BASE
///////////////////////////////////////////////////////////////////////////////
@@ -64,10 +66,15 @@ class WX_PT_ENTRY_DIALOG_BASE : public DIALOG_SHIM
wxStaticText* m_labelY;
wxTextCtrl* m_textCtrlY;
wxStaticText* m_unitsY;
wxButton* m_ButtonReset;
wxStdDialogButtonSizer* m_sdbSizer1;
wxButton* m_sdbSizer1OK;
wxButton* m_sdbSizer1Cancel;
// Virtual event handlers, override them in your derived class
virtual void ResetValues( wxCommandEvent& event ) { event.Skip(); }
public:
WX_PT_ENTRY_DIALOG_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Move Point to Location"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
+2 -1
View File
@@ -36,7 +36,8 @@
EDA_VIEW_SWITCHER::EDA_VIEW_SWITCHER( wxWindow* aParent, const wxArrayString& aItems,
wxKeyCode aCtrlKey ) :
EDA_VIEW_SWITCHER_BASE( aParent ),
m_tabState( true ),
// Start with the tab marked as "up" so the initial ctrl-tab press advances selection.
m_tabState( false ),
m_receivingEvents( false ),
m_ctrlKey( aCtrlKey )
{
+56 -84
View File
@@ -25,6 +25,9 @@
#include <confirm.h>
#include <git2.h>
#include <git/kicad_git_memory.h>
#include <git/kicad_git_common.h>
#include <git/git_repo_mixin.h>
#include <gestfich.h>
#include <cerrno>
@@ -42,9 +45,6 @@ DIALOG_GIT_REPOSITORY::DIALOG_GIT_REPOSITORY( wxWindow* aParent, git_repository*
DIALOG_GIT_REPOSITORY_BASE( aParent ),
m_repository( aRepository ),
m_prevFile( wxEmptyString ),
m_tested( 0 ),
m_failedTest( false ),
m_testError( wxEmptyString ),
m_tempRepo( false )
{
m_txtURL->SetFocus();
@@ -68,13 +68,18 @@ DIALOG_GIT_REPOSITORY::DIALOG_GIT_REPOSITORY( wxWindow* aParent, git_repository*
if( !m_txtURL->GetValue().IsEmpty() )
updateURLData();
else
m_ConnType->SetSelection( static_cast<int>( KIGIT_COMMON::GIT_CONN_TYPE::GIT_CONN_LOCAL ) );
SetupStandardButtons();
updateAuthControls();
SetupStandardButtons( { { wxID_HELP, _( "Test Connection" ) } } );
Layout();
finishDialogSettings();
updateAuthControls();
}
DIALOG_GIT_REPOSITORY::~DIALOG_GIT_REPOSITORY()
{
if( m_tempRepo )
@@ -140,6 +145,13 @@ void DIALOG_GIT_REPOSITORY::setDefaultSSHKey()
}
void DIALOG_GIT_REPOSITORY::onCbCustom( wxCommandEvent& event )
{
updateAuthControls();
event.Skip();
}
void DIALOG_GIT_REPOSITORY::OnUpdateUI( wxUpdateUIEvent& event )
{
// event.Enable( !m_txtName->GetValue().IsEmpty() && !m_txtURL->GetValue().IsEmpty() );
@@ -161,6 +173,7 @@ void DIALOG_GIT_REPOSITORY::SetEncrypted( bool aEncrypted )
}
}
std::tuple<bool,wxString,wxString,wxString> DIALOG_GIT_REPOSITORY::isValidHTTPS( const wxString& url )
{
wxRegEx regex( R"((https?:\/\/)(([^:]+)(:([^@]+))?@)?([^\/]+\/[^\s]+))" );
@@ -228,6 +241,7 @@ void DIALOG_GIT_REPOSITORY::updateURLData()
if( valid )
{
m_fullURL = url;
m_ConnType->SetSelection( static_cast<int>( KIGIT_COMMON::GIT_CONN_TYPE::GIT_CONN_HTTPS ) );
SetUsername( username );
SetPassword( password );
@@ -235,7 +249,6 @@ void DIALOG_GIT_REPOSITORY::updateURLData()
if( m_txtName->GetValue().IsEmpty() )
m_txtName->SetValue( get_repo_name( repoAddress ) );
}
}
else if( url.Contains( "ssh://" ) || url.Contains( "git@" ) )
@@ -244,6 +257,7 @@ void DIALOG_GIT_REPOSITORY::updateURLData()
if( valid )
{
m_fullURL = url;
m_ConnType->SetSelection( static_cast<int>( KIGIT_COMMON::GIT_CONN_TYPE::GIT_CONN_SSH ) );
m_txtUsername->SetValue( username );
m_txtURL->SetValue( repoAddress );
@@ -259,6 +273,11 @@ void DIALOG_GIT_REPOSITORY::updateURLData()
void DIALOG_GIT_REPOSITORY::OnTestClick( wxCommandEvent& event )
{
if( m_txtURL->GetValue().Trim().Trim( false ).IsEmpty() )
return;
wxString error;
bool success = false;
git_remote* remote = nullptr;
git_remote_callbacks callbacks;
git_remote_init_callbacks( &callbacks, GIT_REMOTE_CALLBACKS_VERSION );
@@ -266,81 +285,40 @@ void DIALOG_GIT_REPOSITORY::OnTestClick( wxCommandEvent& event )
// We track if we have already tried to connect.
// If we have, the server may come back to offer another connection
// type, so we need to keep track of how many times we have tried.
m_tested = 0;
callbacks.credentials = []( git_cred** aOut, const char* aUrl, const char* aUsername,
unsigned int aAllowedTypes, void* aPayload ) -> int
{
DIALOG_GIT_REPOSITORY* dialog = static_cast<DIALOG_GIT_REPOSITORY*>( aPayload );
if( dialog->GetRepoType() == KIGIT_COMMON::GIT_CONN_TYPE::GIT_CONN_LOCAL )
return GIT_PASSTHROUGH;
if( aAllowedTypes & GIT_CREDTYPE_USERNAME
&& !( dialog->GetTested() & GIT_CREDTYPE_USERNAME ) )
{
wxString username = dialog->GetUsername().Trim().Trim( false );
git_cred_username_new( aOut, username.ToStdString().c_str() );
dialog->GetTested() |= GIT_CREDTYPE_USERNAME;
}
else if( dialog->GetRepoType() == KIGIT_COMMON::GIT_CONN_TYPE::GIT_CONN_HTTPS
&& ( aAllowedTypes & GIT_CREDTYPE_USERPASS_PLAINTEXT )
&& !( dialog->GetTested() & GIT_CREDTYPE_USERPASS_PLAINTEXT ) )
{
wxString username = dialog->GetUsername().Trim().Trim( false );
wxString password = dialog->GetPassword().Trim().Trim( false );
git_cred_userpass_plaintext_new( aOut, username.ToStdString().c_str(),
password.ToStdString().c_str() );
dialog->GetTested() |= GIT_CREDTYPE_USERPASS_PLAINTEXT;
}
else if( dialog->GetRepoType() == KIGIT_COMMON::GIT_CONN_TYPE::GIT_CONN_SSH
&& ( aAllowedTypes & GIT_CREDTYPE_SSH_KEY )
&& !( dialog->GetTested() & GIT_CREDTYPE_SSH_KEY ) )
{
// SSH key authentication
wxString sshKey = dialog->GetRepoSSHPath();
wxString sshPubKey = sshKey + ".pub";
wxString username = dialog->GetUsername().Trim().Trim( false );
wxString password = dialog->GetPassword().Trim().Trim( false );
git_cred_ssh_key_new( aOut, username.ToStdString().c_str(),
sshPubKey.ToStdString().c_str(), sshKey.ToStdString().c_str(),
password.ToStdString().c_str() );
dialog->GetTested() |= GIT_CREDTYPE_SSH_KEY;
}
else
{
return GIT_PASSTHROUGH;
}
return GIT_OK;
};
callbacks.payload = this;
KIGIT_COMMON common( m_repository );
common.SetRemote( m_txtURL->GetValue() );
callbacks.credentials = credentials_cb;
common.SetPassword( m_txtPassword->GetValue() );
common.SetUsername( m_txtUsername->GetValue() );
common.SetSSHKey( m_fpSSHKey->GetFileName().GetFullPath() );
KIGIT_REPO_MIXIN repoMixin( &common );
callbacks.payload = &repoMixin;
wxString txtURL = m_txtURL->GetValue();
git_remote_create_with_fetchspec( &remote, m_repository, "origin", txtURL.ToStdString().c_str(),
git_remote_create_with_fetchspec( &remote, m_repository, "origin", txtURL.mbc_str(),
"+refs/heads/*:refs/remotes/origin/*" );
KIGIT::GitRemotePtr remotePtr( remote );
if( git_remote_connect( remote, GIT_DIRECTION_FETCH, &callbacks, nullptr, nullptr ) != GIT_OK )
SetTestResult( true, git_error_last()->message );
if( git_remote_connect( remote, GIT_DIRECTION_FETCH, &callbacks, nullptr, nullptr ) == GIT_OK )
success = true;
else
SetTestResult( false, wxEmptyString );
error = KIGIT_COMMON::GetLastGitError();
git_remote_disconnect( remote );
git_remote_free( remote );
auto dlg = wxMessageDialog( this, wxEmptyString, _( "Test connection" ), wxOK | wxICON_INFORMATION );
auto dlg = wxMessageDialog( this, wxEmptyString, _( "Test Connection" ),
wxOK | wxICON_INFORMATION );
if( !m_failedTest )
if( success )
{
dlg.SetMessage( _( "Connection successful" ) );
}
else
{
dlg.SetMessage( wxString::Format( _( "Could not connect to '%s' " ), m_txtURL->GetValue() ) );
dlg.SetExtendedMessage( m_testError );
dlg.SetMessage( wxString::Format( _( "Could not connect to '%s' " ),
m_txtURL->GetValue() ) );
dlg.SetExtendedMessage( error );
}
dlg.ShowModal();
@@ -413,13 +391,6 @@ void DIALOG_GIT_REPOSITORY::OnOKClick( wxCommandEvent& event )
{
// Save the repository details
if( m_txtName->GetValue().IsEmpty() )
{
DisplayErrorMessage( this, _( "Missing information" ),
_( "Please enter a name for the repository" ) );
return;
}
if( m_txtURL->GetValue().IsEmpty() )
{
DisplayErrorMessage( this, _( "Missing information" ),
@@ -435,28 +406,29 @@ void DIALOG_GIT_REPOSITORY::updateAuthControls()
{
if( m_ConnType->GetSelection() == static_cast<int>( KIGIT_COMMON::GIT_CONN_TYPE::GIT_CONN_LOCAL ) )
{
m_panelAuth->Show( false );
m_panelAuth->Enable( false );
}
else
{
m_panelAuth->Show( true );
m_panelAuth->Enable( true );
if( m_ConnType->GetSelection() == static_cast<int>( KIGIT_COMMON::GIT_CONN_TYPE::GIT_CONN_SSH ) )
{
m_fpSSHKey->Show( true );
m_labelSSH->Show( true );
m_labelPass1->SetLabel( _( "SSH Key Password" ) );
m_cbCustom->Enable( true );
m_fpSSHKey->Enable( m_cbCustom->IsChecked() );
m_txtUsername->Enable( m_cbCustom->IsChecked() );
m_txtPassword->Enable( m_cbCustom->IsChecked() );
m_labelPass1->SetLabel( _( "SSH key password:" ) );
}
else
{
m_fpSSHKey->Show( false );
m_labelSSH->Show( false );
m_labelPass1->SetLabel( _( "Password" ) );
setDefaultSSHKey();
m_cbCustom->Enable( false );
m_fpSSHKey->Enable( false );
m_txtUsername->Enable( true );
m_txtPassword->Enable( true );
m_labelPass1->SetLabel( _( "Password:" ) );
}
}
Layout();
}
+4 -12
View File
@@ -36,12 +36,6 @@ public:
wxString aURL = wxEmptyString );
~DIALOG_GIT_REPOSITORY() override;
void SetTestResult( bool aFailed, const wxString& aError )
{
m_failedTest = aFailed;
m_testError = aError;
}
void SetRepoType( KIGIT_COMMON::GIT_CONN_TYPE aType )
{
m_ConnType->SetSelection( static_cast<int>( aType ) );
@@ -78,6 +72,8 @@ public:
return url;
}
const wxString& GetFullURL() const { return m_fullURL; }
void SetUsername( const wxString& aUsername ) { m_txtUsername->SetValue( aUsername ); }
wxString GetUsername() const { return m_txtUsername->GetValue(); }
@@ -87,8 +83,6 @@ public:
void SetRepoSSHPath( const wxString& aPath ) { m_fpSSHKey->SetFileName( aPath ); m_prevFile = aPath; }
wxString GetRepoSSHPath() const { return m_fpSSHKey->GetFileName().GetFullPath(); }
unsigned& GetTested() { return m_tested; }
void SetEncrypted( bool aEncrypted = true );
private:
@@ -100,6 +94,7 @@ private:
void OnTestClick( wxCommandEvent& event ) override;
void OnFileUpdated( wxFileDirPickerEvent& event ) override;
void onCbCustom( wxCommandEvent& event ) override;
void setDefaultSSHKey();
@@ -112,13 +107,10 @@ private:
private:
git_repository* m_repository;
wxString m_fullURL;
wxString m_prevFile;
unsigned m_tested;
bool m_failedTest;
wxString m_testError;
bool m_tempRepo;
wxString m_tempPath;
};
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.10.1-254-gc2ef7767)
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6a-dirty)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@@ -13,7 +13,6 @@ DIALOG_GIT_REPOSITORY_BASE::DIALOG_GIT_REPOSITORY_BASE( wxWindow* parent, wxWind
{
this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize );
wxBoxSizer* bSizerMain;
bSizerMain = new wxBoxSizer( wxVERTICAL );
m_staticText1 = new wxStaticText( this, wxID_ANY, _("Connection"), wxDefaultPosition, wxDefaultSize, 0 );
@@ -21,31 +20,37 @@ DIALOG_GIT_REPOSITORY_BASE::DIALOG_GIT_REPOSITORY_BASE( wxWindow* parent, wxWind
bSizerMain->Add( m_staticText1, 0, wxLEFT|wxTOP, 10 );
m_staticline1 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
bSizerMain->Add( m_staticline1, 0, wxEXPAND|wxTOP, 5 );
bSizerMain->Add( m_staticline1, 0, wxALL|wxEXPAND, 5 );
wxFlexGridSizer* fgSizer2;
fgSizer2 = new wxFlexGridSizer( 0, 2, 0, 0 );
fgSizer2 = new wxFlexGridSizer( 0, 2, 5, 0 );
fgSizer2->AddGrowableCol( 1 );
fgSizer2->SetFlexibleDirection( wxBOTH );
fgSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
m_staticText3 = new wxStaticText( this, wxID_ANY, _("Name"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText3 = new wxStaticText( this, wxID_ANY, _("Name:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText3->Wrap( -1 );
fgSizer2->Add( m_staticText3, 0, wxALL, 5 );
m_staticText3->Hide();
fgSizer2->Add( m_staticText3, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
m_txtName = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
fgSizer2->Add( m_txtName, 0, wxALL|wxEXPAND, 5 );
m_txtName->Hide();
m_staticText4 = new wxStaticText( this, wxID_ANY, _("Location"), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer2->Add( m_txtName, 0, wxEXPAND|wxRIGHT, 5 );
m_staticText4 = new wxStaticText( this, wxID_ANY, _("Location:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText4->Wrap( -1 );
fgSizer2->Add( m_staticText4, 0, wxALL, 5 );
fgSizer2->Add( m_staticText4, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
m_txtURL = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
fgSizer2->Add( m_txtURL, 0, wxALL|wxEXPAND, 5 );
fgSizer2->Add( m_txtURL, 0, wxEXPAND|wxRIGHT, 5 );
m_staticText9 = new wxStaticText( this, wxID_ANY, _("Connection Type"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText9 = new wxStaticText( this, wxID_ANY, _("Connection type:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText9->Wrap( -1 );
fgSizer2->Add( m_staticText9, 0, wxALL, 5 );
m_staticText9->Hide();
fgSizer2->Add( m_staticText9, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
wxBoxSizer* bSizer3;
bSizer3 = new wxBoxSizer( wxHORIZONTAL );
@@ -54,97 +59,84 @@ DIALOG_GIT_REPOSITORY_BASE::DIALOG_GIT_REPOSITORY_BASE( wxWindow* parent, wxWind
int m_ConnTypeNChoices = sizeof( m_ConnTypeChoices ) / sizeof( wxString );
m_ConnType = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_ConnTypeNChoices, m_ConnTypeChoices, 0 );
m_ConnType->SetSelection( 0 );
bSizer3->Add( m_ConnType, 1, wxEXPAND|wxLEFT|wxRIGHT, 5 );
m_ConnType->Hide();
bSizer3->Add( m_ConnType, 0, wxRIGHT, 5 );
bSizer3->Add( 0, 0, 1, wxEXPAND, 5 );
bSizer3->Add( 0, 0, 0, wxEXPAND, 5 );
fgSizer2->Add( bSizer3, 1, wxEXPAND, 5 );
bSizerMain->Add( fgSizer2, 1, wxEXPAND, 5 );
bSizerMain->Add( fgSizer2, 0, wxEXPAND, 5 );
m_panelAuth = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
wxBoxSizer* m_szAuth;
m_szAuth = new wxBoxSizer( wxVERTICAL );
m_szAuth->Add( 0, 0, 1, wxEXPAND, 5 );
wxBoxSizer* bSizer11;
bSizer11 = new wxBoxSizer( wxHORIZONTAL );
m_staticText2 = new wxStaticText( m_panelAuth, wxID_ANY, _("Authentication"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText2->Wrap( -1 );
bSizer11->Add( m_staticText2, 0, wxLEFT|wxTOP, 10 );
bSizer11->Add( 0, 0, 1, wxEXPAND, 5 );
m_szAuth->Add( bSizer11, 0, wxEXPAND, 5 );
m_szAuth->Add( m_staticText2, 0, wxLEFT|wxTOP, 10 );
m_staticline2 = new wxStaticLine( m_panelAuth, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
m_szAuth->Add( m_staticline2, 0, wxEXPAND | wxALL, 5 );
wxFlexGridSizer* fgSshSizer;
fgSshSizer = new wxFlexGridSizer( 0, 2, 0, 0 );
fgSshSizer->AddGrowableCol( 1 );
fgSshSizer->SetFlexibleDirection( wxBOTH );
fgSshSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
wxFlexGridSizer* fgSizer21;
fgSizer21 = new wxFlexGridSizer( 0, 2, 5, 0 );
fgSizer21->SetFlexibleDirection( wxBOTH );
fgSizer21->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
m_labelSSH = new wxStaticText( m_panelAuth, wxID_ANY, _("SSH Private Key"), wxDefaultPosition, wxDefaultSize, 0 );
m_labelSSH->Wrap( -1 );
fgSshSizer->Add( m_labelSSH, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxRESERVE_SPACE_EVEN_IF_HIDDEN, 5 );
wxBoxSizer* bSizer41;
bSizer41 = new wxBoxSizer( wxHORIZONTAL );
m_cbCustom = new wxCheckBox( m_panelAuth, wxID_ANY, _("SSH private key: "), wxDefaultPosition, wxDefaultSize, 0 );
fgSizer21->Add( m_cbCustom, 0, wxALL, 5 );
m_fpSSHKey = new wxFilePickerCtrl( m_panelAuth, wxID_ANY, wxEmptyString, _("Select SSH private key file"), _("*"), wxDefaultPosition, wxDefaultSize, wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN );
bSizer41->Add( m_fpSSHKey, 1, wxEXPAND|wxLEFT|wxRESERVE_SPACE_EVEN_IF_HIDDEN|wxRIGHT, 5 );
m_fpSSHKey->SetMinSize( wxSize( 250,-1 ) );
m_btnTest = new wxButton( m_panelAuth, wxID_ANY, _("Test"), wxDefaultPosition, wxDefaultSize, 0 );
bSizer41->Add( m_btnTest, 0, wxLEFT|wxRIGHT, 5 );
fgSizer21->Add( m_fpSSHKey, 0, wxEXPAND|wxRIGHT, 5 );
fgSshSizer->Add( bSizer41, 1, wxEXPAND, 5 );
m_staticText11 = new wxStaticText( m_panelAuth, wxID_ANY, _("Username"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText11 = new wxStaticText( m_panelAuth, wxID_ANY, _("User name:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText11->Wrap( -1 );
fgSshSizer->Add( m_staticText11, 0, wxALL, 5 );
fgSizer21->Add( m_staticText11, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
m_txtUsername = new wxTextCtrl( m_panelAuth, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
fgSshSizer->Add( m_txtUsername, 0, wxALL|wxEXPAND, 5 );
fgSizer21->Add( m_txtUsername, 0, wxEXPAND|wxRIGHT, 5 );
m_labelPass1 = new wxStaticText( m_panelAuth, wxID_ANY, _("SSH Key Password"), wxDefaultPosition, wxDefaultSize, 0 );
m_labelPass1 = new wxStaticText( m_panelAuth, wxID_ANY, _("SSH key password:"), wxDefaultPosition, wxDefaultSize, 0 );
m_labelPass1->Wrap( -1 );
fgSshSizer->Add( m_labelPass1, 0, wxALL, 5 );
fgSizer21->Add( m_labelPass1, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
m_txtPassword = new wxTextCtrl( m_panelAuth, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
fgSshSizer->Add( m_txtPassword, 0, wxALL|wxEXPAND, 5 );
fgSizer21->Add( m_txtPassword, 0, wxEXPAND|wxRIGHT, 5 );
m_szAuth->Add( fgSshSizer, 1, wxEXPAND, 5 );
m_szAuth->Add( fgSizer21, 1, wxBOTTOM|wxEXPAND, 5 );
m_panelAuth->SetSizer( m_szAuth );
m_panelAuth->Layout();
m_szAuth->Fit( m_panelAuth );
bSizerMain->Add( m_panelAuth, 1, wxALL|wxEXPAND|wxRESERVE_SPACE_EVEN_IF_HIDDEN, 0 );
bSizerMain->Add( m_panelAuth, 0, wxEXPAND|wxTOP, 5 );
bSizerMain->Add( 0, 0, 1, wxEXPAND, 5 );
m_sdbSizer = new wxStdDialogButtonSizer();
m_sdbSizerOK = new wxButton( this, wxID_OK );
m_sdbSizer->AddButton( m_sdbSizerOK );
m_sdbSizerCancel = new wxButton( this, wxID_CANCEL );
m_sdbSizer->AddButton( m_sdbSizerCancel );
m_sdbSizerHelp = new wxButton( this, wxID_HELP );
m_sdbSizer->AddButton( m_sdbSizerHelp );
m_sdbSizer->Realize();
bSizerMain->Add( m_sdbSizer, 0, wxALL|wxEXPAND, 5 );
bSizerMain->Add( m_sdbSizer, 0, wxBOTTOM|wxEXPAND|wxTOP, 5 );
this->SetSizer( bSizerMain );
this->Layout();
bSizerMain->Fit( this );
this->Centre( wxBOTH );
@@ -153,8 +145,9 @@ DIALOG_GIT_REPOSITORY_BASE::DIALOG_GIT_REPOSITORY_BASE( wxWindow* parent, wxWind
this->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_GIT_REPOSITORY_BASE::OnUpdateUI ) );
m_txtURL->Connect( wxEVT_KILL_FOCUS, wxFocusEventHandler( DIALOG_GIT_REPOSITORY_BASE::OnLocationExit ), NULL, this );
m_ConnType->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_GIT_REPOSITORY_BASE::OnSelectConnType ), NULL, this );
m_cbCustom->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_GIT_REPOSITORY_BASE::onCbCustom ), NULL, this );
m_fpSSHKey->Connect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( DIALOG_GIT_REPOSITORY_BASE::OnFileUpdated ), NULL, this );
m_btnTest->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_GIT_REPOSITORY_BASE::OnTestClick ), NULL, this );
m_sdbSizerHelp->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_GIT_REPOSITORY_BASE::OnTestClick ), NULL, this );
m_sdbSizerOK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_GIT_REPOSITORY_BASE::OnOKClick ), NULL, this );
}
@@ -165,8 +158,9 @@ DIALOG_GIT_REPOSITORY_BASE::~DIALOG_GIT_REPOSITORY_BASE()
this->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_GIT_REPOSITORY_BASE::OnUpdateUI ) );
m_txtURL->Disconnect( wxEVT_KILL_FOCUS, wxFocusEventHandler( DIALOG_GIT_REPOSITORY_BASE::OnLocationExit ), NULL, this );
m_ConnType->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_GIT_REPOSITORY_BASE::OnSelectConnType ), NULL, this );
m_cbCustom->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_GIT_REPOSITORY_BASE::onCbCustom ), NULL, this );
m_fpSSHKey->Disconnect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( DIALOG_GIT_REPOSITORY_BASE::OnFileUpdated ), NULL, this );
m_btnTest->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_GIT_REPOSITORY_BASE::OnTestClick ), NULL, this );
m_sdbSizerHelp->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_GIT_REPOSITORY_BASE::OnTestClick ), NULL, this );
m_sdbSizerOK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_GIT_REPOSITORY_BASE::OnOKClick ), NULL, this );
}
File diff suppressed because it is too large Load Diff
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.10.1-254-gc2ef7767)
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6a-dirty)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@@ -21,17 +21,14 @@
#include <wx/textctrl.h>
#include <wx/choice.h>
#include <wx/sizer.h>
#include <wx/checkbox.h>
#include <wx/filepicker.h>
#include <wx/button.h>
#include <wx/bitmap.h>
#include <wx/image.h>
#include <wx/icon.h>
#include <wx/panel.h>
#include <wx/button.h>
#include <wx/dialog.h>
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/// Class DIALOG_GIT_REPOSITORY_BASE
///////////////////////////////////////////////////////////////////////////////
@@ -40,6 +37,7 @@ class DIALOG_GIT_REPOSITORY_BASE : public DIALOG_SHIM
private:
protected:
wxBoxSizer* bSizerMain;
wxStaticText* m_staticText1;
wxStaticLine* m_staticline1;
wxStaticText* m_staticText3;
@@ -51,9 +49,8 @@ class DIALOG_GIT_REPOSITORY_BASE : public DIALOG_SHIM
wxPanel* m_panelAuth;
wxStaticText* m_staticText2;
wxStaticLine* m_staticline2;
wxStaticText* m_labelSSH;
wxCheckBox* m_cbCustom;
wxFilePickerCtrl* m_fpSSHKey;
wxButton* m_btnTest;
wxStaticText* m_staticText11;
wxTextCtrl* m_txtUsername;
wxStaticText* m_labelPass1;
@@ -61,12 +58,14 @@ class DIALOG_GIT_REPOSITORY_BASE : public DIALOG_SHIM
wxStdDialogButtonSizer* m_sdbSizer;
wxButton* m_sdbSizerOK;
wxButton* m_sdbSizerCancel;
wxButton* m_sdbSizerHelp;
// Virtual event handlers, override them in your derived class
virtual void OnClose( wxCloseEvent& event ) { event.Skip(); }
virtual void OnUpdateUI( wxUpdateUIEvent& event ) { event.Skip(); }
virtual void OnLocationExit( wxFocusEvent& event ) { event.Skip(); }
virtual void OnSelectConnType( wxCommandEvent& event ) { event.Skip(); }
virtual void onCbCustom( wxCommandEvent& event ) { event.Skip(); }
virtual void OnFileUpdated( wxFileDirPickerEvent& event ) { event.Skip(); }
virtual void OnTestClick( wxCommandEvent& event ) { event.Skip(); }
virtual void OnOKClick( wxCommandEvent& event ) { event.Skip(); }
@@ -74,7 +73,7 @@ class DIALOG_GIT_REPOSITORY_BASE : public DIALOG_SHIM
public:
DIALOG_GIT_REPOSITORY_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Git Repository"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 682,598 ), long style = wxCAPTION|wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
DIALOG_GIT_REPOSITORY_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Git Repository"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxCAPTION|wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
~DIALOG_GIT_REPOSITORY_BASE();
+15 -13
View File
@@ -24,9 +24,13 @@
#include "dialog_git_switch.h"
#include <git/kicad_git_memory.h>
#include <trace_helpers.h>
#include <wx/button.h>
#include <wx/checkbox.h>
#include <wx/listctrl.h>
#include <wx/log.h>
#include <wx/event.h>
#include <wx/sizer.h>
#include <wx/timer.h>
@@ -240,39 +244,42 @@ void DIALOG_GIT_SWITCH::GetBranches()
git_reference* currentBranchReference = nullptr;
git_repository_head( &currentBranchReference, m_repository );
// Get the current branch name
if( currentBranchReference )
if( !currentBranchReference )
{
m_currentBranch = git_reference_shorthand( currentBranchReference );
git_reference_free( currentBranchReference );
wxLogTrace( traceGit, "Failed to get current branch" );
return;
}
KIGIT::GitReferencePtr currentBranch( currentBranchReference );
m_currentBranch = git_reference_shorthand( currentBranchReference );
// Initialize branch iterator
git_branch_iterator_new( &branchIterator, m_repository, GIT_BRANCH_ALL );
KIGIT::GitBranchIteratorPtr branchIteratorPtr( branchIterator );
// Iterate over local branches
git_reference* branchReference = nullptr;
while( git_branch_next( &branchReference, &branchType, branchIterator ) == 0 )
{
KIGIT::GitReferencePtr branchReferencePtr( branchReference );
// Get the branch OID
const git_oid* branchOid = git_reference_target( branchReference );
// Skip this branch if it doesn't have an OID
if( !branchOid )
{
git_reference_free( branchReference );
continue;
}
git_commit* commit = nullptr;
if( git_commit_lookup( &commit, m_repository, branchOid ) )
{
// Skip this branch if it doesn't have a commit
git_reference_free( branchReference );
continue;
}
KIGIT::GitCommitPtr commitPtr( commit );
// Retrieve commit details
BranchData branchData;
branchData.commitString = git_commit_message( commit );
@@ -280,10 +287,5 @@ void DIALOG_GIT_SWITCH::GetBranches()
branchData.isRemote = branchType == GIT_BRANCH_REMOTE;
m_branches[git_reference_shorthand( branchReference )] = branchData;
git_commit_free( commit );
git_reference_free( branchReference );
}
git_branch_iterator_free( branchIterator );
}
+41 -274
View File
@@ -24,10 +24,12 @@
#include <kiplatform/secrets.h>
#include <pgm_base.h>
#include <settings/common_settings.h>
#include <trace_helpers.h>
#include <widgets/std_bitmap_button.h>
#include <widgets/wx_grid.h>
#include <git2.h>
#include <git/kicad_git_memory.h>
#include <wx/bmpbuttn.h>
#include <wx/button.h>
#include <wx/checkbox.h>
@@ -36,11 +38,6 @@
PANEL_GIT_REPOS::PANEL_GIT_REPOS( wxWindow* aParent ) : PANEL_GIT_REPOS_BASE( aParent)
{
m_btnAddRepo->SetBitmap( KiBitmapBundle( BITMAPS::small_plus ) );
m_btnEditRepo->SetBitmap( KiBitmapBundle( BITMAPS::small_edit ) );
m_btnDelete->SetBitmap( KiBitmapBundle( BITMAPS::small_trash ) );
}
PANEL_GIT_REPOS::~PANEL_GIT_REPOS()
@@ -50,7 +47,6 @@ PANEL_GIT_REPOS::~PANEL_GIT_REPOS()
void PANEL_GIT_REPOS::ResetPanel()
{
m_grid->ClearGrid();
m_cbDefault->SetValue( true );
m_author->SetValue( wxEmptyString );
m_authorEmail->SetValue( wxEmptyString );
@@ -67,56 +63,44 @@ static std::pair<wxString, wxString> getDefaultAuthorAndEmail()
if( git_config_open_default( &config ) != 0 )
{
printf( "Failed to open default Git config: %s\n", giterr_last()->message );
wxLogTrace( traceGit, "Failed to open default Git config: %s", KIGIT_COMMON::GetLastGitError() );
return std::make_pair( name, email );
}
KIGIT::GitConfigPtr configPtr( config );
if( git_config_get_entry( &name_c, config, "user.name" ) != 0 )
{
printf( "Failed to get user.name from Git config: %s\n", giterr_last()->message );
wxLogTrace( traceGit, "Failed to get user.name from Git config: %s", KIGIT_COMMON::GetLastGitError() );
return std::make_pair( name, email );
}
KIGIT::GitConfigEntryPtr namePtr( name_c );
if( git_config_get_entry( &email_c, config, "user.email" ) != 0 )
{
printf( "Failed to get user.email from Git config: %s\n", giterr_last()->message );
wxLogTrace( traceGit, "Failed to get user.email from Git config: %s", KIGIT_COMMON::GetLastGitError() );
return std::make_pair( name, email );
}
KIGIT::GitConfigEntryPtr emailPtr( email_c );
if( name_c )
name = name_c->value;
if( email_c )
email = email_c->value;
git_config_entry_free( name_c );
git_config_entry_free( email_c );
git_config_free( config );
return std::make_pair( name, email );
}
bool PANEL_GIT_REPOS::TransferDataFromWindow()
{
COMMON_SETTINGS* settings = Pgm().GetCommonSettings();
std::vector<COMMON_SETTINGS::GIT_REPOSITORY>& repos = settings->m_Git.repositories;
repos.clear();
for( int row = 0; row < m_grid->GetNumberRows(); row++ )
{
COMMON_SETTINGS::GIT_REPOSITORY repo;
repo.active = m_grid->GetCellValue( row, COL_ACTIVE ) == "1";
repo.name = m_grid->GetCellValue( row, COL_NAME );
repo.path = m_grid->GetCellValue( row, COL_PATH );
repo.authType = m_grid->GetCellValue( row, COL_AUTH_TYPE );
repo.username = m_grid->GetCellValue( row, COL_USERNAME );
KIPLATFORM::SECRETS::StoreSecret( repo.path, repo.username,
m_grid->GetCellValue( row, COL_PASSWORD ) );
repo.ssh_path = m_grid->GetCellValue( row, COL_SSH_PATH );
repo.checkValid = m_grid->GetCellValue( row, COL_STATUS ) == "1";
repos.push_back( repo );
}
COMMON_SETTINGS* settings = Pgm().GetCommonSettings();
settings->m_Git.enableGit = m_enableGit->GetValue();
settings->m_Git.updatInterval = m_updateInterval->GetValue();
settings->m_Git.useDefaultAuthor = m_cbDefault->GetValue();
settings->m_Git.authorName = m_author->GetValue();
settings->m_Git.authorEmail = m_authorEmail->GetValue();
@@ -124,153 +108,38 @@ bool PANEL_GIT_REPOS::TransferDataFromWindow()
return true;
}
static bool testRepositoryConnection( COMMON_SETTINGS::GIT_REPOSITORY& repository)
{
git_libgit2_init();
git_remote_callbacks callbacks;
callbacks.version = GIT_REMOTE_CALLBACKS_VERSION;
typedef struct
{
COMMON_SETTINGS::GIT_REPOSITORY* repo;
bool success;
} callbacksPayload;
callbacksPayload cb_data( { &repository, true } ); // If we don't need authentication, then,
// we are successful
callbacks.payload = &cb_data;
callbacks.credentials =
[](git_cred** out, const char* url, const char* username, unsigned int allowed_types,
void* payload) -> int
{
// If we are asking for credentials, then, we need authentication
callbacksPayload* data = static_cast<callbacksPayload*>(payload);
data->success = false;
if( allowed_types & GIT_CREDTYPE_USERNAME )
{
data->success = true;
}
else if( data->repo->authType == "ssh" && ( allowed_types & GIT_CREDTYPE_SSH_KEY ) )
{
wxString sshKeyPath = data->repo->ssh_path;
// Check if the SSH key exists and is readable
if( wxFileExists( sshKeyPath ) && wxFile::Access( sshKeyPath, wxFile::read ) )
data->success = true;
}
else if( data->repo->authType == "password" )
{
data->success = ( allowed_types & GIT_CREDTYPE_USERPASS_PLAINTEXT );
}
return 0;
};
// Create a temporary directory to initialize the Git repository
wxString tempDirPath = wxFileName::CreateTempFileName(wxT("kigit_temp"));
if( !wxFileName::Mkdir( tempDirPath, wxS_DIR_DEFAULT ) )
{
git_libgit2_shutdown();
wxLogError( "Failed to create temporary directory for Git repository (%s): %s", tempDirPath,
wxSysErrorMsg() );
return false;
}
// Initialize the Git repository
git_repository* repo = nullptr;
int result = git_repository_init( &repo, tempDirPath.mb_str( wxConvUTF8 ), 0 );
if (result != 0)
{
git_repository_free(repo);
git_libgit2_shutdown();
wxRmdir(tempDirPath);
return false;
}
git_remote* remote = nullptr;
result = git_remote_create_anonymous( &remote, repo, tempDirPath.mb_str( wxConvUTF8 ) );
if (result != 0)
{
git_remote_free(remote);
git_repository_free(repo);
git_libgit2_shutdown();
wxRmdir(tempDirPath);
return false;
}
// We don't really care about the result of this call, the authentication callback
// will set the return values we need
git_remote_connect(remote, GIT_DIRECTION_FETCH, &callbacks, nullptr, nullptr);
git_remote_disconnect(remote);
git_remote_free(remote);
git_repository_free(repo);
git_libgit2_shutdown();
// Clean up the temporary directory
wxRmdir(tempDirPath);
return cb_data.success;
}
bool PANEL_GIT_REPOS::TransferDataToWindow()
{
COMMON_SETTINGS* settings = Pgm().GetCommonSettings();
std::pair<wxString, wxString> defaultAuthor = getDefaultAuthorAndEmail();
m_grid->ClearGrid();
for( COMMON_SETTINGS::GIT_REPOSITORY& repo : settings->m_Git.repositories )
{
if( repo.name.IsEmpty() || repo.path.IsEmpty() )
continue;
int row = m_grid->GetNumberRows();
m_grid->AppendRows( 1 );
m_grid->SetCellRenderer( row, COL_ACTIVE, new wxGridCellBoolRenderer() );
m_grid->SetCellEditor( row, COL_ACTIVE, new wxGridCellBoolEditor() );
m_grid->SetCellValue( row, COL_ACTIVE, repo.active ? "1" : "0" );
m_grid->SetCellValue( row, COL_NAME, repo.name );
m_grid->SetCellValue( row, COL_PATH, repo.path );
m_grid->SetCellValue( row, COL_AUTH_TYPE, repo.authType );
m_grid->SetCellValue( row, COL_USERNAME, repo.username );
wxString password;
KIPLATFORM::SECRETS::GetSecret( repo.path, repo.username, password );
m_grid->SetCellValue( row, COL_PASSWORD, password );
m_grid->SetCellValue( row, COL_SSH_PATH, repo.ssh_path );
if( repo.active )
m_grid->SetCellValue( row, 3, testRepositoryConnection( repo ) ? "C" : "NC" );
}
m_enableGit->SetValue( settings->m_Git.enableGit );
m_updateInterval->SetValue( settings->m_Git.updatInterval );
m_cbDefault->SetValue( settings->m_Git.useDefaultAuthor );
if( settings->m_Git.useDefaultAuthor )
{
std::pair<wxString, wxString> defaultAuthor = getDefaultAuthorAndEmail();
m_author->SetValue( defaultAuthor.first );
m_authorEmail->SetValue( defaultAuthor.second );
m_author->Disable();
m_authorEmail->Disable();
}
else
{
m_author->SetValue( settings->m_Git.authorName );
m_authorEmail->SetValue( settings->m_Git.authorEmail );
if( settings->m_Git.authorName.IsEmpty() )
m_author->SetValue( defaultAuthor.first );
else
m_author->SetValue( settings->m_Git.authorName );
if( settings->m_Git.authorEmail.IsEmpty() )
m_authorEmail->SetValue( defaultAuthor.second );
else
m_authorEmail->SetValue( settings->m_Git.authorEmail );
}
wxCommandEvent event;
onDefaultClick( event );
onEnableGitClick( event );
return true;
}
@@ -282,115 +151,13 @@ void PANEL_GIT_REPOS::onDefaultClick( wxCommandEvent& event )
m_authorEmailLabel->Enable( !m_cbDefault->GetValue() );
}
void PANEL_GIT_REPOS::onGridDClick( wxGridEvent& event )
void PANEL_GIT_REPOS::onEnableGitClick( wxCommandEvent& aEvent )
{
if( m_grid->GetNumberRows() <= 0 )
{
wxCommandEvent evt;
onAddClick( evt );
return;
}
int row = event.GetRow();
if( row < 0 || row >= m_grid->GetNumberRows() )
return;
DIALOG_GIT_REPOSITORY dialog( this, nullptr );
dialog.SetRepoName( m_grid->GetCellValue( row, COL_NAME ) );
dialog.SetRepoURL( m_grid->GetCellValue( row, COL_PATH ) );
dialog.SetUsername( m_grid->GetCellValue( row, COL_USERNAME ) );
dialog.SetRepoSSHPath( m_grid->GetCellValue( row, COL_SSH_PATH ) );
dialog.SetPassword( m_grid->GetCellValue( row, COL_PASSWORD ) );
wxString type = m_grid->GetCellValue( row, COL_AUTH_TYPE );
if( type == "password" )
dialog.SetRepoType( KIGIT_COMMON::GIT_CONN_TYPE::GIT_CONN_HTTPS );
else if( type == "ssh" )
dialog.SetRepoType( KIGIT_COMMON::GIT_CONN_TYPE::GIT_CONN_SSH );
else
dialog.SetRepoType( KIGIT_COMMON::GIT_CONN_TYPE::GIT_CONN_LOCAL);
if( dialog.ShowModal() == wxID_OK )
{
m_grid->SetCellValue( row, COL_NAME, dialog.GetRepoName() );
m_grid->SetCellValue( row, COL_PATH, dialog.GetRepoURL() );
m_grid->SetCellValue( row, COL_USERNAME, dialog.GetUsername() );
m_grid->SetCellValue( row, COL_SSH_PATH, dialog.GetRepoSSHPath() );
m_grid->SetCellValue( row, COL_PASSWORD, dialog.GetPassword() );
if( dialog.GetRepoType() == KIGIT_COMMON::GIT_CONN_TYPE::GIT_CONN_HTTPS )
{
m_grid->SetCellValue( row, COL_AUTH_TYPE, "password" );
}
else if( dialog.GetRepoType() == KIGIT_COMMON::GIT_CONN_TYPE::GIT_CONN_SSH )
{
m_grid->SetCellValue( row, COL_AUTH_TYPE, "ssh" );
}
else
{
m_grid->SetCellValue( row, COL_AUTH_TYPE, "none" );
}
}
}
void PANEL_GIT_REPOS::onAddClick( wxCommandEvent& event )
{
DIALOG_GIT_REPOSITORY dialog( m_parent, nullptr );
if( dialog.ShowModal() == wxID_OK )
{
int row = m_grid->GetNumberRows();
m_grid->AppendRows( 1 );
m_grid->SetCellValue( row, COL_NAME, dialog.GetRepoName() );
m_grid->SetCellValue( row, COL_PATH, dialog.GetRepoURL() );
m_grid->SetCellValue( row, COL_USERNAME, dialog.GetUsername() );
m_grid->SetCellValue( row, COL_SSH_PATH, dialog.GetRepoSSHPath() );
m_grid->SetCellValue( row, COL_PASSWORD, dialog.GetPassword() );
if( dialog.GetRepoType() == KIGIT_COMMON::GIT_CONN_TYPE::GIT_CONN_HTTPS )
{
m_grid->SetCellValue( row, COL_AUTH_TYPE, "password" );
}
else if( dialog.GetRepoType() == KIGIT_COMMON::GIT_CONN_TYPE::GIT_CONN_SSH )
{
m_grid->SetCellValue( row, COL_AUTH_TYPE, "ssh" );
}
else
{
m_grid->SetCellValue( row, COL_AUTH_TYPE, "none" );
}
m_grid->MakeCellVisible( row, 0 );
}
}
void PANEL_GIT_REPOS::onEditClick( wxCommandEvent& event )
{
wxGridEvent evt( m_grid->GetId(), wxEVT_GRID_CELL_LEFT_DCLICK, m_grid,
m_grid->GetGridCursorRow(), m_grid->GetGridCursorCol() );
onGridDClick( evt );
}
void PANEL_GIT_REPOS::onDeleteClick( wxCommandEvent& event )
{
if( !m_grid->CommitPendingChanges() || m_grid->GetNumberRows() <= 0 )
return;
int curRow = m_grid->GetGridCursorRow();
m_grid->DeleteRows( curRow );
curRow = std::max( 0, curRow - 1 );
m_grid->MakeCellVisible( curRow, m_grid->GetGridCursorCol() );
m_grid->SetGridCursor( curRow, m_grid->GetGridCursorCol() );
bool enable = m_enableGit->GetValue();
m_updateInterval->Enable( enable );
m_cbDefault->Enable( enable );
m_author->Enable( enable && !m_cbDefault->GetValue() );
m_authorEmail->Enable( enable && !m_cbDefault->GetValue() );
m_authorLabel->Enable( enable && !m_cbDefault->GetValue() );
m_authorEmailLabel->Enable( enable && !m_cbDefault->GetValue() );
}
+1 -4
View File
@@ -49,10 +49,7 @@ public:
private:
void onDefaultClick( wxCommandEvent& event ) override;
void onGridDClick( wxGridEvent& event ) override;
void onAddClick( wxCommandEvent& event ) override;
void onEditClick( wxCommandEvent& event ) override;
void onDeleteClick( wxCommandEvent& event ) override;
void onEnableGitClick( wxCommandEvent& event ) override;
};
+55 -87
View File
@@ -1,13 +1,10 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.10.1-254-gc2ef7767)
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6a-dirty)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#include "widgets/std_bitmap_button.h"
#include "widgets/wx_grid.h"
#include "panel_git_repos_base.h"
///////////////////////////////////////////////////////////////////////////
@@ -20,9 +17,57 @@ PANEL_GIT_REPOS_BASE::PANEL_GIT_REPOS_BASE( wxWindow* parent, wxWindowID id, con
wxBoxSizer* bLeftSizer;
bLeftSizer = new wxBoxSizer( wxVERTICAL );
m_enableGit = new wxCheckBox( this, wxID_ANY, _("Enable Git tracking"), wxDefaultPosition, wxDefaultSize, 0 );
bLeftSizer->Add( m_enableGit, 0, wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 13 );
m_gitSizer = new wxBoxSizer( wxVERTICAL );
wxBoxSizer* bSizerUpdate;
bSizerUpdate = new wxBoxSizer( wxVERTICAL );
m_staticText6 = new wxStaticText( this, wxID_ANY, _("Remote Tracking"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText6->Wrap( -1 );
bSizerUpdate->Add( m_staticText6, 0, wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 13 );
m_staticline2 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
bSizerUpdate->Add( m_staticline2, 0, wxEXPAND | wxALL, 5 );
wxGridBagSizer* gbUpdate;
gbUpdate = new wxGridBagSizer( 4, 5 );
gbUpdate->SetFlexibleDirection( wxBOTH );
gbUpdate->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
gbUpdate->SetEmptyCellSize( wxSize( -1,2 ) );
m_updateLabel = new wxStaticText( this, wxID_ANY, _("Update interval:"), wxDefaultPosition, wxDefaultSize, 0 );
m_updateLabel->Wrap( -1 );
gbUpdate->Add( m_updateLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
m_updateInterval = new wxSpinCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 60, 5 );
m_updateInterval->SetToolTip( _("Number of minutes between remote update checks. Zero disables automatic checks.") );
gbUpdate->Add( m_updateInterval, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
m_staticText7 = new wxStaticText( this, wxID_ANY, _("minutes"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText7->Wrap( -1 );
gbUpdate->Add( m_staticText7, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
gbUpdate->AddGrowableCol( 2 );
bSizerUpdate->Add( gbUpdate, 0, wxEXPAND|wxLEFT, 13 );
m_gitSizer->Add( bSizerUpdate, 0, wxEXPAND, 5 );
wxBoxSizer* bSizerCommitData;
bSizerCommitData = new wxBoxSizer( wxVERTICAL );
m_staticText12 = new wxStaticText( this, wxID_ANY, _("Git Commit Data"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText12->Wrap( -1 );
bLeftSizer->Add( m_staticText12, 0, wxEXPAND|wxLEFT|wxTOP, 10 );
bSizerCommitData->Add( m_staticText12, 0, wxEXPAND|wxLEFT|wxTOP, 13 );
m_staticline31 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
bSizerCommitData->Add( m_staticline31, 0, wxEXPAND | wxALL, 5 );
wxFlexGridSizer* fgSizer1;
fgSizer1 = new wxFlexGridSizer( 0, 2, 0, 0 );
@@ -60,84 +105,13 @@ PANEL_GIT_REPOS_BASE::PANEL_GIT_REPOS_BASE( wxWindow* parent, wxWindowID id, con
fgSizer1->Add( m_authorEmail, 0, wxALL|wxEXPAND, 5 );
bLeftSizer->Add( fgSizer1, 1, wxBOTTOM|wxEXPAND|wxLEFT|wxTOP, 13 );
m_staticline3 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
bLeftSizer->Add( m_staticline3, 0, wxEXPAND|wxBOTTOM, 5 );
m_staticText20 = new wxStaticText( this, wxID_ANY, _("Git Repositories"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText20->Wrap( -1 );
bLeftSizer->Add( m_staticText20, 0, wxEXPAND|wxLEFT|wxRIGHT, 13 );
wxBoxSizer* bAntialiasingSizer;
bAntialiasingSizer = new wxBoxSizer( wxVERTICAL );
m_grid = new WX_GRID( this, wxID_ANY, wxDefaultPosition, wxSize( 820,200 ), 0 );
// Grid
m_grid->CreateGrid( 0, 10 );
m_grid->EnableEditing( false );
m_grid->EnableGridLines( true );
m_grid->EnableDragGridSize( false );
m_grid->SetMargins( 0, 0 );
// Columns
m_grid->SetColSize( 0, 60 );
m_grid->SetColSize( 1, 200 );
m_grid->SetColSize( 2, 500 );
m_grid->SetColSize( 3, 60 );
m_grid->SetColSize( 4, 0 );
m_grid->SetColSize( 5, 0 );
m_grid->SetColSize( 6, 0 );
m_grid->SetColSize( 7, 0 );
m_grid->SetColSize( 8, 0 );
m_grid->SetColSize( 9, 0 );
m_grid->EnableDragColMove( false );
m_grid->EnableDragColSize( true );
m_grid->SetColLabelValue( 0, _("Active") );
m_grid->SetColLabelValue( 1, _("Name") );
m_grid->SetColLabelValue( 2, _("Path") );
m_grid->SetColLabelValue( 3, _("Status") );
m_grid->SetColLabelSize( 22 );
m_grid->SetColLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
// Rows
m_grid->EnableDragRowSize( true );
m_grid->SetRowLabelSize( 0 );
m_grid->SetRowLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
// Label Appearance
// Cell Defaults
m_grid->SetDefaultCellAlignment( wxALIGN_LEFT, wxALIGN_TOP );
bAntialiasingSizer->Add( m_grid, 5, wxALL|wxEXPAND, 5 );
bSizerCommitData->Add( fgSizer1, 0, wxBOTTOM|wxEXPAND|wxLEFT, 8 );
bLeftSizer->Add( bAntialiasingSizer, 0, wxEXPAND|wxLEFT|wxTOP, 5 );
wxBoxSizer* bButtonsSizer;
bButtonsSizer = new wxBoxSizer( wxHORIZONTAL );
m_btnAddRepo = new STD_BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
m_btnAddRepo->SetToolTip( _("Add new repository") );
bButtonsSizer->Add( m_btnAddRepo, 0, wxALL, 5 );
m_btnEditRepo = new STD_BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
m_btnEditRepo->SetToolTip( _("Edit repository properties") );
bButtonsSizer->Add( m_btnEditRepo, 0, wxALL, 5 );
m_gitSizer->Add( bSizerCommitData, 1, wxEXPAND, 5 );
bButtonsSizer->Add( 0, 0, 1, wxEXPAND, 5 );
m_btnDelete = new STD_BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
m_btnDelete->SetToolTip( _("Remove Git Repository") );
bButtonsSizer->Add( m_btnDelete, 0, wxBOTTOM|wxRIGHT|wxTOP, 5 );
bLeftSizer->Add( bButtonsSizer, 1, wxALL|wxEXPAND, 5 );
bLeftSizer->Add( m_gitSizer, 0, wxEXPAND, 0 );
bPanelSizer->Add( bLeftSizer, 0, wxRIGHT, 20 );
@@ -148,20 +122,14 @@ PANEL_GIT_REPOS_BASE::PANEL_GIT_REPOS_BASE( wxWindow* parent, wxWindowID id, con
bPanelSizer->Fit( this );
// Connect Events
m_enableGit->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( PANEL_GIT_REPOS_BASE::onEnableGitClick ), NULL, this );
m_cbDefault->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( PANEL_GIT_REPOS_BASE::onDefaultClick ), NULL, this );
m_grid->Connect( wxEVT_GRID_CELL_LEFT_DCLICK, wxGridEventHandler( PANEL_GIT_REPOS_BASE::onGridDClick ), NULL, this );
m_btnAddRepo->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_GIT_REPOS_BASE::onAddClick ), NULL, this );
m_btnEditRepo->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_GIT_REPOS_BASE::onEditClick ), NULL, this );
m_btnDelete->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_GIT_REPOS_BASE::onDeleteClick ), NULL, this );
}
PANEL_GIT_REPOS_BASE::~PANEL_GIT_REPOS_BASE()
{
// Disconnect Events
m_enableGit->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( PANEL_GIT_REPOS_BASE::onEnableGitClick ), NULL, this );
m_cbDefault->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( PANEL_GIT_REPOS_BASE::onDefaultClick ), NULL, this );
m_grid->Disconnect( wxEVT_GRID_CELL_LEFT_DCLICK, wxGridEventHandler( PANEL_GIT_REPOS_BASE::onGridDClick ), NULL, this );
m_btnAddRepo->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_GIT_REPOS_BASE::onAddClick ), NULL, this );
m_btnEditRepo->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_GIT_REPOS_BASE::onEditClick ), NULL, this );
m_btnDelete->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_GIT_REPOS_BASE::onDeleteClick ), NULL, this );
}
+16 -24
View File
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.10.1-254-gc2ef7767)
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6a-dirty)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@@ -10,26 +10,19 @@
#include <wx/artprov.h>
#include <wx/xrc/xmlres.h>
#include <wx/intl.h>
class STD_BITMAP_BUTTON;
class WX_GRID;
#include "widgets/resettable_panel.h"
#include <wx/string.h>
#include <wx/stattext.h>
#include <wx/checkbox.h>
#include <wx/gdicmn.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/checkbox.h>
#include <wx/textctrl.h>
#include <wx/sizer.h>
#include <wx/stattext.h>
#include <wx/statline.h>
#include <wx/grid.h>
#include <wx/bmpbuttn.h>
#include <wx/bitmap.h>
#include <wx/image.h>
#include <wx/icon.h>
#include <wx/button.h>
#include <wx/spinctrl.h>
#include <wx/gbsizer.h>
#include <wx/sizer.h>
#include <wx/textctrl.h>
#include <wx/panel.h>
///////////////////////////////////////////////////////////////////////////
@@ -42,25 +35,24 @@ class PANEL_GIT_REPOS_BASE : public RESETTABLE_PANEL
private:
protected:
wxCheckBox* m_enableGit;
wxBoxSizer* m_gitSizer;
wxStaticText* m_staticText6;
wxStaticLine* m_staticline2;
wxStaticText* m_updateLabel;
wxSpinCtrl* m_updateInterval;
wxStaticText* m_staticText7;
wxStaticText* m_staticText12;
wxStaticLine* m_staticline31;
wxCheckBox* m_cbDefault;
wxStaticText* m_authorLabel;
wxTextCtrl* m_author;
wxStaticText* m_authorEmailLabel;
wxTextCtrl* m_authorEmail;
wxStaticLine* m_staticline3;
wxStaticText* m_staticText20;
WX_GRID* m_grid;
STD_BITMAP_BUTTON* m_btnAddRepo;
STD_BITMAP_BUTTON* m_btnEditRepo;
STD_BITMAP_BUTTON* m_btnDelete;
// Virtual event handlers, override them in your derived class
virtual void onEnableGitClick( wxCommandEvent& event ) { event.Skip(); }
virtual void onDefaultClick( wxCommandEvent& event ) { event.Skip(); }
virtual void onGridDClick( wxGridEvent& event ) { event.Skip(); }
virtual void onAddClick( wxCommandEvent& event ) { event.Skip(); }
virtual void onEditClick( wxCommandEvent& event ) { event.Skip(); }
virtual void onDeleteClick( wxCommandEvent& event ) { event.Skip(); }
public:
File diff suppressed because it is too large Load Diff
+44 -37
View File
@@ -92,14 +92,18 @@ bool PANEL_COLOR_SETTINGS::Show( bool show )
if( show )
{
// In case changes have been made to the current theme in another panel:
int idx = m_cbTheme->GetSelection();
COLOR_SETTINGS* settings = static_cast<COLOR_SETTINGS*>( m_cbTheme->GetClientData( idx ) );
int themeSel = m_cbTheme->GetSelection();
if( settings )
*m_currentSettings = *settings;
if( themeSel >= 0 )
{
COLOR_SETTINGS* settings = static_cast<COLOR_SETTINGS*>( m_cbTheme->GetClientData( themeSel ) );
onNewThemeSelected();
updateSwatches();
if( settings )
*m_currentSettings = *settings;
onNewThemeSelected();
updateSwatches();
}
}
return PANEL_COLOR_SETTINGS_BASE::Show( show );
@@ -282,49 +286,52 @@ void PANEL_COLOR_SETTINGS::createSwatch( int aLayer, const wxString& aName )
void PANEL_COLOR_SETTINGS::ShowColorContextMenu( wxMouseEvent& aEvent, int aLayer )
{
auto selected =
static_cast<COLOR_SETTINGS*>( m_cbTheme->GetClientData( m_cbTheme->GetSelection() ) );
int themeSel = m_cbTheme->GetSelection();
wxCHECK_RET( selected, wxT( "Invalid color theme selected" ) );
if( themeSel >= 0 )
{
COLOR_SETTINGS* selected = static_cast<COLOR_SETTINGS*>( m_cbTheme->GetClientData( themeSel ) );
COLOR4D current = m_currentSettings->GetColor( aLayer );
COLOR4D saved = selected->GetColor( aLayer );
bool readOnly = m_currentSettings->IsReadOnly();
wxCHECK_RET( selected, wxT( "Invalid color theme selected" ) );
wxMenu menu;
COLOR4D current = m_currentSettings->GetColor( aLayer );
COLOR4D saved = selected->GetColor( aLayer );
bool readOnly = m_currentSettings->IsReadOnly();
KIUI::AddMenuItem( &menu, ID_COPY, _( "Copy color" ), KiBitmap( BITMAPS::copy ) );
wxMenu menu;
if( !readOnly && m_copied != COLOR4D::UNSPECIFIED )
KIUI::AddMenuItem( &menu, ID_PASTE, _( "Paste color" ), KiBitmap( BITMAPS::paste ) );
KIUI::AddMenuItem( &menu, ID_COPY, _( "Copy color" ), KiBitmap( BITMAPS::copy ) );
if( !readOnly && current != saved )
KIUI::AddMenuItem( &menu, ID_REVERT, _( "Revert to saved color" ),
KiBitmap( BITMAPS::undo ) );
if( !readOnly && m_copied != COLOR4D::UNSPECIFIED )
KIUI::AddMenuItem( &menu, ID_PASTE, _( "Paste color" ), KiBitmap( BITMAPS::paste ) );
menu.Bind( wxEVT_COMMAND_MENU_SELECTED,
[&]( wxCommandEvent& aCmd )
{
switch( aCmd.GetId() )
if( !readOnly && current != saved )
KIUI::AddMenuItem( &menu, ID_REVERT, _( "Revert to saved color" ), KiBitmap( BITMAPS::undo ) );
menu.Bind( wxEVT_COMMAND_MENU_SELECTED,
[&]( wxCommandEvent& aCmd )
{
case ID_COPY:
m_copied = current;
break;
switch( aCmd.GetId() )
{
case ID_COPY:
m_copied = current;
break;
case ID_PASTE:
updateColor( aLayer, m_copied );
break;
case ID_PASTE:
updateColor( aLayer, m_copied );
break;
case ID_REVERT:
updateColor( aLayer, saved );
break;
case ID_REVERT:
updateColor( aLayer, saved );
break;
default:
aCmd.Skip();
}
} );
default:
aCmd.Skip();
}
} );
PopupMenu( &menu );
PopupMenu( &menu );
}
}
+14 -17
View File
@@ -461,16 +461,15 @@ PANEL_DESIGN_BLOCK_LIB_TABLE::PANEL_DESIGN_BLOCK_LIB_TABLE( DIALOG_EDIT_LIBRARY_
}
else if( !desc.m_IsFile && !desc.m_ExtensionsInDir.empty() )
{
wxString midPart = wxString::Format( _( "folder with %s files" ),
joinExts( desc.m_ExtensionsInDir ) );
wxString midPart = wxString::Format( _( "folder with %s files" ), joinExts( desc.m_ExtensionsInDir ) );
entryStr << wxString::Format( wxS( " (%s)" ), midPart );
}
browseMenu->Append( type, entryStr );
browseMenu->Bind( wxEVT_COMMAND_MENU_SELECTED,
&PANEL_DESIGN_BLOCK_LIB_TABLE::browseLibrariesHandler, this, type );
browseMenu->Bind( wxEVT_COMMAND_MENU_SELECTED, &PANEL_DESIGN_BLOCK_LIB_TABLE::browseLibrariesHandler,
this, type );
}
Layout();
@@ -487,11 +486,11 @@ PANEL_DESIGN_BLOCK_LIB_TABLE::~PANEL_DESIGN_BLOCK_LIB_TABLE()
for( auto& [type, desc] : m_supportedDesignBlockFiles )
{
browseMenu->Unbind( wxEVT_COMMAND_MENU_SELECTED,
&PANEL_DESIGN_BLOCK_LIB_TABLE::browseLibrariesHandler, this, type );
browseMenu->Unbind( wxEVT_COMMAND_MENU_SELECTED, &PANEL_DESIGN_BLOCK_LIB_TABLE::browseLibrariesHandler,
this, type );
}
m_browseButton->Unbind( wxEVT_BUTTON, &PANEL_DESIGN_BLOCK_LIB_TABLE::browseLibrariesHandler,
this );
m_browseButton->Unbind( wxEVT_BUTTON, &PANEL_DESIGN_BLOCK_LIB_TABLE::browseLibrariesHandler, this );
// Delete the GRID_TRICKS.
// Any additional event handlers should be popped before the window is deleted.
@@ -550,9 +549,8 @@ bool PANEL_DESIGN_BLOCK_LIB_TABLE::verifyTables()
wxYES_NO | wxCENTER | wxICON_QUESTION | wxYES_DEFAULT );
badCellDlg.SetExtendedMessage( _( "Empty cells will result in all rows that are "
"invalid to be removed from the table." ) );
badCellDlg.SetYesNoLabels(
wxMessageDialog::ButtonLabel( _( "Remove Invalid Cells" ) ),
wxMessageDialog::ButtonLabel( _( "Cancel Table Update" ) ) );
badCellDlg.SetYesNoLabels( wxMessageDialog::ButtonLabel( _( "Remove Invalid Cells" ) ),
wxMessageDialog::ButtonLabel( _( "Cancel Table Update" ) ) );
if( badCellDlg.ShowModal() == wxID_NO )
return false;
@@ -561,19 +559,19 @@ bool PANEL_DESIGN_BLOCK_LIB_TABLE::verifyTables()
// This also updates the UI which could be slow, but there should only be a few
// rows to delete, unless the user fell asleep on the Add Row
// button.
model->GetView()->ClearSelection();
model->DeleteRows( r, 1 );
}
else if( ( illegalCh = LIB_ID::FindIllegalLibraryNameChar( nick ) ) )
{
msg = wxString::Format( _( "Illegal character '%c' in nickname '%s'." ), illegalCh,
nick );
msg = wxString::Format( _( "Illegal character '%c' in nickname '%s'." ), illegalCh, nick );
// show the tabbed panel holding the grid we have flunked:
if( model != cur_model() )
m_notebook->SetSelection( model == global_model() ? 0 : 1 );
m_cur_grid->MakeCellVisible( r, 0 );
m_cur_grid->SetGridCursor( r, 1 );
model->GetView()->MakeCellVisible( r, 0 );
model->GetView()->SetGridCursor( r, 1 );
wxWindow* topLevelParent = wxGetTopLevelParent( this );
@@ -611,8 +609,7 @@ bool PANEL_DESIGN_BLOCK_LIB_TABLE::verifyTables()
if( nick1 == nick2 )
{
msg = wxString::Format( _( "Multiple libraries cannot share the same "
"nickname ('%s')." ),
msg = wxString::Format( _( "Multiple libraries cannot share the same nickname ('%s')." ),
nick1 );
// show the tabbed panel holding the grid we have flunked:
+92 -26
View File
@@ -21,6 +21,8 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <eda_item.h>
#include <confirm.h>
#include <bitmaps.h>
#include <dialogs/panel_embedded_files.h>
#include <embedded_files.h>
@@ -31,11 +33,12 @@
#include <wx/clipbrd.h>
#include <wx/dirdlg.h>
#include <wx/ffile.h>
#include <wx/filedlg.h>
#include <wx/filename.h>
#include <wx/log.h>
#include <wx/menu.h>
#include <wx/wfstream.h>
#include <wx/wupdlock.h>
/* ---------- GRID_TRICKS for embedded files grid ---------- */
@@ -87,8 +90,12 @@ void EMBEDDED_FILES_GRID_TRICKS::doPopupSelection( wxCommandEvent& event )
/* ---------- End of GRID_TRICKS for embedded files grid ---------- */
PANEL_EMBEDDED_FILES::PANEL_EMBEDDED_FILES( wxWindow* parent, EMBEDDED_FILES* aFiles ) :
PANEL_EMBEDDED_FILES_BASE( parent ), m_files( aFiles ), m_localFiles( new EMBEDDED_FILES() )
PANEL_EMBEDDED_FILES::PANEL_EMBEDDED_FILES( wxWindow* aParent, EMBEDDED_FILES* aFiles, int aFlags,
std::vector<const EMBEDDED_FILES*> aInheritedFiles ) :
PANEL_EMBEDDED_FILES_BASE( aParent ),
m_files( aFiles ),
m_localFiles( new EMBEDDED_FILES() ),
m_inheritedFiles( std::move( aInheritedFiles ) )
{
for( auto& [name, file] : m_files->EmbeddedFileMap() )
{
@@ -96,6 +103,19 @@ PANEL_EMBEDDED_FILES::PANEL_EMBEDDED_FILES( wxWindow* parent, EMBEDDED_FILES* aF
m_localFiles->AddFile( newFile );
}
for( const EMBEDDED_FILES* inheritedFiles : m_inheritedFiles )
{
for( auto& [name, file] : inheritedFiles->EmbeddedFileMap() )
{
if( m_localFiles->HasFile( name ) )
continue;
EMBEDDED_FILES::EMBEDDED_FILE* newFile = new EMBEDDED_FILES::EMBEDDED_FILE( *file );
m_localFiles->AddFile( newFile );
m_inheritedFileNames.insert( name );
}
}
// Set up the standard buttons
m_delete_button->SetBitmap( KiBitmapBundle( BITMAPS::small_trash ) );
m_browse_button->SetBitmap( KiBitmapBundle( BITMAPS::small_folder ) );
@@ -128,6 +148,7 @@ PANEL_EMBEDDED_FILES::~PANEL_EMBEDDED_FILES()
{
// Remove the GRID_TRICKS handler
m_files_grid->PopEventHandler( true );
delete m_localFiles;
}
@@ -160,9 +181,7 @@ void PANEL_EMBEDDED_FILES::resizeGrid()
bool PANEL_EMBEDDED_FILES::TransferDataToWindow()
{
m_files_grid->ClearGrid();
if( m_files_grid->GetNumberRows() > 0 )
m_files_grid->DeleteRows( 0, m_files_grid->GetNumberRows() );
m_files_grid->ClearRows();
int ii = 0;
for( auto& [name, file] : m_localFiles->EmbeddedFileMap() )
@@ -186,6 +205,51 @@ bool PANEL_EMBEDDED_FILES::TransferDataToWindow()
bool PANEL_EMBEDDED_FILES::TransferDataFromWindow()
{
std::optional<bool> deleteReferences;
auto confirmDelete =
[&]() -> bool
{
if( EDA_ITEM* parent = dynamic_cast<EDA_ITEM*>( m_files ) )
{
if( parent->Type() == PCB_T )
{
return IsOK( m_parent, _( "Deleted embedded files are also referenced in some footprints.\n"
"Delete from footprints as well?" ) );
}
else if( parent->Type() == SCHEMATIC_T )
{
return IsOK( m_parent, _( "Deleted embedded files are also referenced in some symbols.\n"
"Delete from symbols as well?" ) );
}
}
wxFAIL_MSG( wxT( "Unexpected embedded files owner" ) );
return false;
};
for( const auto& [name, file] : m_files->EmbeddedFileMap() )
{
if( !m_localFiles->HasFile( name ) )
{
m_files->RunOnNestedEmbeddedFiles(
[&]( EMBEDDED_FILES* nested_files )
{
if( nested_files->HasFile( name ) )
{
if( !deleteReferences.has_value() )
deleteReferences = confirmDelete();
if( deleteReferences.value() )
nested_files->RemoveFile( name, true );
}
} );
}
if( deleteReferences.has_value() && deleteReferences.value() == false )
break;
}
m_files->ClearEmbeddedFiles();
std::vector<EMBEDDED_FILES::EMBEDDED_FILE*> files;
@@ -196,6 +260,9 @@ bool PANEL_EMBEDDED_FILES::TransferDataFromWindow()
for( auto& file : files )
{
if( m_inheritedFileNames.count( file->name ) )
continue;
m_files->AddFile( file );
m_localFiles->RemoveFile( file->name, false );
}
@@ -208,7 +275,8 @@ bool PANEL_EMBEDDED_FILES::TransferDataFromWindow()
void PANEL_EMBEDDED_FILES::onFontEmbedClick( wxCommandEvent& event )
{
Freeze();
wxWindowUpdateLocker updateLock( this );
int row_pos = m_files_grid->GetGridCursorRow();
int col_pos = m_files_grid->GetGridCursorCol();
wxString row_name;
@@ -245,11 +313,6 @@ void PANEL_EMBEDDED_FILES::onFontEmbedClick( wxCommandEvent& event )
font->GetFileName() ) );
continue;
}
m_files_grid->AppendRows( 1 );
int ii = m_files_grid->GetNumberRows() - 1;
m_files_grid->SetCellValue( ii, 0, result->name );
m_files_grid->SetCellValue( ii, 1, result->GetLink() );
}
}
@@ -268,8 +331,6 @@ void PANEL_EMBEDDED_FILES::onFontEmbedClick( wxCommandEvent& event )
}
}
}
Thaw();
}
@@ -317,7 +378,7 @@ void PANEL_EMBEDDED_FILES::onAddEmbeddedFiles( wxCommandEvent& event )
{
// TODO: Update strings to reflect that multiple files can be selected.
wxFileDialog fileDialog( this, _( "Select a file to embed" ), wxEmptyString, wxEmptyString,
_( "All files|*.*" ),
_( "All Files" ) + wxT( " (*.*)|*.*" ),
wxFD_OPEN | wxFD_FILE_MUST_EXIST | wxFD_MULTIPLE );
if( fileDialog.ShowModal() == wxID_OK )
@@ -338,6 +399,14 @@ bool PANEL_EMBEDDED_FILES::RemoveEmbeddedFile( const wxString& aFileName )
if( name.StartsWith( FILEEXT::KiCadUriPrefix ) )
name = name.Mid( FILEEXT::KiCadUriPrefix.size() + 3 );
if( m_inheritedFileNames.count( name ) )
{
wxString msg = _( "Embedded files inherited from a parent symbol cannot be removed." );
DisplayErrorMessage( this, msg );
return false;
}
int row = std::max( 0, m_files_grid->GetGridCursorRow() );
for( int ii = 0; ii < m_files_grid->GetNumberRows(); ii++ )
@@ -369,14 +438,7 @@ void PANEL_EMBEDDED_FILES::onDeleteEmbeddedFile( wxCommandEvent& event )
wxString name = m_files_grid->GetCellValue( row, 0 );
m_localFiles->RemoveFile( name );
m_files_grid->DeleteRows( row );
if( row < m_files_grid->GetNumberRows() )
m_files_grid->SetGridCursor( row, 0 );
else if( m_files_grid->GetNumberRows() > 0 )
m_files_grid->SetGridCursor( m_files_grid->GetNumberRows() - 1, 0 );
RemoveEmbeddedFile( name );
}
@@ -445,9 +507,10 @@ void PANEL_EMBEDDED_FILES::onExportFiles( wxCommandEvent& event )
if( skip_file )
continue;
wxFFile ffile( fileName.GetFullPath(), wxT( "w" ) );
if( !ffile.IsOpened() )
wxFFileOutputStream out( fileName.GetFullPath() );
if( !out.IsOk() )
{
wxString msg = wxString::Format( _( "Failed to open file '%s'." ),
fileName.GetFullName() );
@@ -457,12 +520,15 @@ void PANEL_EMBEDDED_FILES::onExportFiles( wxCommandEvent& event )
continue;
}
if( !ffile.Write( file->decompressedData.data(), file->decompressedData.size() ) )
out.Write( file->decompressedData.data(), file->decompressedData.size() );
if( !out.IsOk() || ( out.LastWrite() != file->decompressedData.size() ) )
{
wxString msg = wxString::Format( _( "Failed to write file '%s'." ),
fileName.GetFullName() );
KIDIALOG errorDlg( m_parent, msg, _( "Error" ), wxOK | wxICON_ERROR );
errorDlg.ShowModal();
}
}
+7 -1
View File
@@ -24,6 +24,9 @@
#ifndef PANEL_EMBEDDED_FILES_H
#define PANEL_EMBEDDED_FILES_H
#include <set>
#include <vector>
#include <embedded_files.h>
#include "panel_embedded_files_base.h"
@@ -55,7 +58,8 @@ protected:
class PANEL_EMBEDDED_FILES : public PANEL_EMBEDDED_FILES_BASE
{
public:
PANEL_EMBEDDED_FILES( wxWindow* parent, EMBEDDED_FILES* aFiles );
PANEL_EMBEDDED_FILES( wxWindow* aParent, EMBEDDED_FILES* aFiles, int aFlags = 0,
std::vector<const EMBEDDED_FILES*> aInheritedFiles = {} );
~PANEL_EMBEDDED_FILES() override;
bool TransferDataFromWindow() override;
@@ -79,6 +83,8 @@ private:
EMBEDDED_FILES* m_files;
EMBEDDED_FILES* m_localFiles;
std::vector<const EMBEDDED_FILES*> m_inheritedFiles;
std::set<wxString> m_inheritedFileNames;
};
+1 -1
View File
@@ -35,7 +35,7 @@ PANEL_EMBEDDED_FILES_BASE::PANEL_EMBEDDED_FILES_BASE( wxWindow* parent, wxWindow
m_files_grid->EnableDragColMove( false );
m_files_grid->EnableDragColSize( true );
m_files_grid->SetColLabelValue( 0, _("Filename") );
m_files_grid->SetColLabelValue( 1, _("Internal Reference") );
m_files_grid->SetColLabelValue( 1, _("Embedded Reference") );
m_files_grid->SetColLabelSize( 22 );
m_files_grid->SetColLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
+1 -1
View File
@@ -98,7 +98,7 @@
<property name="close_button">1</property>
<property name="col_label_horiz_alignment">wxALIGN_CENTER</property>
<property name="col_label_size">22</property>
<property name="col_label_values">&quot;Filename&quot; &quot;Internal Reference&quot;</property>
<property name="col_label_values">&quot;Filename&quot; &quot;Embedded Reference&quot;</property>
<property name="col_label_vert_alignment">wxALIGN_CENTER</property>
<property name="cols">2</property>
<property name="column_sizes">440,180</property>
+5 -10
View File
@@ -65,11 +65,10 @@ static wxSearchCtrl* CreateTextFilterBox( wxWindow* aParent, const wxString& aDe
}
PANEL_HOTKEYS_EDITOR::PANEL_HOTKEYS_EDITOR( EDA_BASE_FRAME* aFrame, wxWindow* aWindow,
bool aReadOnly ) :
PANEL_HOTKEYS_EDITOR::PANEL_HOTKEYS_EDITOR( EDA_BASE_FRAME* aFrame, wxWindow* aWindow ) :
RESETTABLE_PANEL( aWindow, wxID_ANY, wxDefaultPosition, wxDefaultSize ),
m_frame( aFrame ),
m_readOnly( aReadOnly ),
m_includeGestures( false ),
m_hotkeyStore()
{
wxBoxSizer* mainSizer = new wxBoxSizer( wxVERTICAL );
@@ -78,11 +77,10 @@ PANEL_HOTKEYS_EDITOR::PANEL_HOTKEYS_EDITOR( EDA_BASE_FRAME* aFrame, wxWindow* aW
m_filterSearch = CreateTextFilterBox( this, _( "Type filter text" ) );
bMargins->Add( m_filterSearch, 0, wxEXPAND | wxTOP | wxRIGHT, 5 );
m_hotkeyListCtrl = new WIDGET_HOTKEY_LIST( this, m_hotkeyStore, m_readOnly );
m_hotkeyListCtrl = new WIDGET_HOTKEY_LIST( this, m_hotkeyStore );
bMargins->Add( m_hotkeyListCtrl, 1, wxEXPAND | wxTOP | wxRIGHT, 5 );
if( !m_readOnly )
installButtons( bMargins );
installButtons( bMargins );
mainSizer->Add( bMargins, 1, wxEXPAND, 0 );
@@ -166,7 +164,7 @@ void PANEL_HOTKEYS_EDITOR::installButtons( wxSizer* aSizer )
bool PANEL_HOTKEYS_EDITOR::TransferDataToWindow()
{
m_hotkeyStore.Init( m_actions, m_readOnly );
m_hotkeyStore.Init( m_actions, m_includeGestures );
if( !m_hotkeyListCtrl->TransferDataToControl() )
return false;
@@ -177,9 +175,6 @@ bool PANEL_HOTKEYS_EDITOR::TransferDataToWindow()
bool PANEL_HOTKEYS_EDITOR::TransferDataFromWindow()
{
if( m_readOnly )
return true;
if( !m_hotkeyListCtrl->TransferDataFromControl() )
return false;
+66 -4
View File
@@ -25,7 +25,7 @@
#include <algorithm>
#include <limits>
#include <wx/wupdlock.h>
#include <pgm_base.h>
#include <eda_draw_frame.h>
#include <bitmaps.h>
@@ -86,7 +86,9 @@ PANEL_SETUP_NETCLASSES::PANEL_SETUP_NETCLASSES( wxWindow* aParentWindow, EDA_DRA
m_netNames( aNetNames ),
m_lastCheckedTicker( 0 ),
m_hoveredCol( -1 ),
m_lastNetclassGridWidth( -1 )
m_lastNetclassGridWidth( -1 ),
m_sortAsc( false ),
m_sortCol( 0 )
{
// Clear and re-load each time. Language (or darkmode) might have changed.
g_lineStyleIcons.clear();
@@ -114,7 +116,8 @@ PANEL_SETUP_NETCLASSES::PANEL_SETUP_NETCLASSES( wxWindow* aParentWindow, EDA_DRA
m_membershipPane->SetBorders( true, false, false, false );
// Prevent Size events from firing before we are ready
Freeze();
wxWindowUpdateLocker updateLock( this );
m_netclassGrid->BeginBatch();
m_netclassGrid->SetUseNativeColLabels();
m_assignmentGrid->BeginBatch();
@@ -232,11 +235,15 @@ PANEL_SETUP_NETCLASSES::PANEL_SETUP_NETCLASSES( wxWindow* aParentWindow, EDA_DRA
&PANEL_SETUP_NETCLASSES::OnNetclassGridMouseEvent,
this );
// Allow sorting assignments by column
m_assignmentGrid->Connect(
wxEVT_GRID_LABEL_LEFT_CLICK,
wxGridEventHandler( PANEL_SETUP_NETCLASSES::OnNetclassAssignmentSort ), nullptr, this );
m_frame->Bind( EDA_EVT_UNITS_CHANGED, &PANEL_SETUP_NETCLASSES::onUnitsChanged, this );
m_netclassGrid->EndBatch();
m_assignmentGrid->EndBatch();
Thaw();
Bind( wxEVT_IDLE,
[this]( wxIdleEvent& aEvent )
@@ -275,6 +282,10 @@ PANEL_SETUP_NETCLASSES::~PANEL_SETUP_NETCLASSES()
wxGridEventHandler( PANEL_SETUP_NETCLASSES::OnNetclassGridCellChanging ),
nullptr, this );
m_assignmentGrid->Disconnect(
wxEVT_GRID_LABEL_LEFT_CLICK,
wxGridEventHandler( PANEL_SETUP_NETCLASSES::OnNetclassAssignmentSort ), nullptr, this );
m_frame->Unbind( EDA_EVT_UNITS_CHANGED, &PANEL_SETUP_NETCLASSES::onUnitsChanged, this );
}
@@ -617,6 +628,57 @@ void PANEL_SETUP_NETCLASSES::OnNetclassGridCellChanging( wxGridEvent& event )
}
}
void PANEL_SETUP_NETCLASSES::OnNetclassAssignmentSort( wxGridEvent& event )
{
event.Skip();
if( !m_assignmentGrid->CommitPendingChanges() )
return;
if( ( event.GetCol() < 0 ) || ( event.GetCol() >= m_assignmentGrid->GetNumberCols() ) )
return;
// Toggle sort order if the same column is clicked
if( event.GetCol() != m_sortCol )
{
m_sortCol = event.GetCol();
m_sortAsc = true;
}
else
{
m_sortAsc = !m_sortAsc;
}
std::vector<std::pair<wxString, wxString>> netclassesassignments;
netclassesassignments.reserve( m_assignmentGrid->GetNumberRows() );
for( int row = 0; row < m_assignmentGrid->GetNumberRows(); ++row )
{
netclassesassignments.emplace_back( m_assignmentGrid->GetCellValue( row, 0 ),
m_assignmentGrid->GetCellValue( row, 1 ) );
}
std::sort( netclassesassignments.begin(), netclassesassignments.end(),
[this]( const std::pair<wxString, wxString>& assign1,
const std::pair<wxString, wxString>& assign2 )
{
const wxString& str1 = ( m_sortCol == 0 ) ? assign1.first : assign1.second;
const wxString& str2 = ( m_sortCol == 0 ) ? assign2.first : assign2.second;
return m_sortAsc ? ( str1 < str2 ) : ( str1 > str2 );
} );
m_assignmentGrid->ClearRows();
m_assignmentGrid->AppendRows( netclassesassignments.size() );
int row = 0;
for( const auto& [pattern, netclassName] : netclassesassignments )
{
m_assignmentGrid->SetCellValue( row, 0, pattern );
m_assignmentGrid->SetCellValue( row, 1, netclassName );
row++;
}
}
void PANEL_SETUP_NETCLASSES::OnNetclassGridMouseEvent( wxMouseEvent& aEvent )
{
+10 -7
View File
@@ -160,11 +160,7 @@ EDA_DRAW_PANEL_GAL::EDA_DRAW_PANEL_GAL( wxWindow* aParentWindow, wxWindowID aWin
Connect( m_refreshTimer.GetId(), wxEVT_TIMER,
wxTimerEventHandler( EDA_DRAW_PANEL_GAL::onRefreshTimer ), nullptr, this );
// Set up timer to execute OnShow() method when the window appears on the screen
m_onShowTimer.SetOwner( this );
Connect( m_onShowTimer.GetId(), wxEVT_TIMER,
wxTimerEventHandler( EDA_DRAW_PANEL_GAL::onShowTimer ), nullptr, this );
m_onShowTimer.Start( 10 );
Connect( wxEVT_SHOW, wxShowEventHandler( EDA_DRAW_PANEL_GAL::onShowEvent ), nullptr, this );
}
@@ -443,6 +439,8 @@ void EDA_DRAW_PANEL_GAL::StopDrawing()
m_refreshTimer.Stop();
m_drawingEnabled = false;
Disconnect( wxEVT_SHOW, wxShowEventHandler( EDA_DRAW_PANEL_GAL::onShowEvent ), nullptr, this );
Disconnect( wxEVT_PAINT, wxPaintEventHandler( EDA_DRAW_PANEL_GAL::onPaint ), nullptr, this );
Disconnect( wxEVT_IDLE, wxIdleEventHandler( EDA_DRAW_PANEL_GAL::onIdle ), nullptr, this );
@@ -628,6 +626,12 @@ void EDA_DRAW_PANEL_GAL::onLostFocus( wxFocusEvent& aEvent )
m_viewControls->CancelDrag();
// Reset the tool dispatcher's button state when focus is lost. This prevents
// the dispatcher from thinking the button is still pressed when focus returns,
// which can cause selection and drag operations to stop working.
if( m_eventDispatcher )
m_eventDispatcher->ResetState();
aEvent.Skip();
}
@@ -650,11 +654,10 @@ void EDA_DRAW_PANEL_GAL::onRefreshTimer( wxTimerEvent& aEvent )
}
void EDA_DRAW_PANEL_GAL::onShowTimer( wxTimerEvent& aEvent )
void EDA_DRAW_PANEL_GAL::onShowEvent( wxShowEvent& aEvent )
{
if( m_gal && m_gal->IsInitialized() && m_gal->IsVisible() )
{
m_onShowTimer.Stop();
OnShow();
}
}

Some files were not shown because too many files have changed in this diff Show More