Compare commits

...

3277 Commits

Author SHA1 Message Date
Marek Roszko fa7fb115df Initial jobset creation and running within the CLI and GUI.
Incomplete, just pushing this before feature freeze, much fixing left
2024-09-30 20:03:18 -04:00
Jeff Young 6255586d5b Clean up some layout issues. 2024-09-30 20:13:27 +01:00
jean-pierre charras 66e24daa8e kicad-cli: ensure plotted layers in gerber export are restricted to enabled layers
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18811
2024-09-30 19:05:17 +02:00
jean-pierre charras 395027869d Pcbnew: add icons to actions generatePlacementRuleAreas and repeatLayout. 2024-09-30 19:01:34 +02:00
Seth Hillbrand c471dddd4c Add Hebrew translation element 2024-09-30 08:46:45 -07:00
Seth Hillbrand c2ec941f57 Update translations 2024-09-30 08:43:09 -07:00
Pferd O ccc6c38a64 Translated using Weblate (German)
Currently translated at 99.4% (9540 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-09-30 17:42:00 +02:00
boonchai k 1cdf44614c Translated using Weblate (Thai)
Currently translated at 65.8% (6319 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/th/
2024-09-30 17:42:00 +02:00
Pferd O ffb62d437b Translated using Weblate (German)
Currently translated at 99.2% (9517 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-09-30 17:42:00 +02:00
CloverGit adeae03bca Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (9579 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-09-30 17:42:00 +02:00
Pferd O 4635faac3e Translated using Weblate (German)
Currently translated at 98.8% (9482 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-09-30 17:42:00 +02:00
ssantos 9e8b805dff Translated using Weblate (Portuguese)
Currently translated at 99.9% (9589 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt/
2024-09-30 17:42:00 +02:00
co8 j 60b1c16ae2 Translated using Weblate (Japanese)
Currently translated at 98.5% (9454 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-09-30 17:41:59 +02:00
co8 j 4624e54950 Translated using Weblate (Japanese)
Currently translated at 98.0% (9405 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-09-30 17:41:59 +02:00
Pferd O be03dd1feb Translated using Weblate (German)
Currently translated at 98.1% (9413 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-09-30 17:41:59 +02:00
Frank Sonnenberg 53c001077d Translated using Weblate (German)
Currently translated at 98.1% (9413 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-09-30 17:41:59 +02:00
CloverGit bffc715bd3 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (9579 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-09-30 17:41:59 +02:00
Pferd O 9644dd5910 Translated using Weblate (German)
Currently translated at 97.5% (9353 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-09-30 17:41:59 +02:00
co8 j 072fbe855d Translated using Weblate (Japanese)
Currently translated at 97.6% (9361 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-09-30 17:41:59 +02:00
Pferd O 708969f2bd Translated using Weblate (German)
Currently translated at 97.4% (9346 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-09-30 17:41:59 +02:00
CloverGit 235a51ff8f Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (9576 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-09-30 17:41:59 +02:00
co8 j 1faf9bcbec Translated using Weblate (Japanese)
Currently translated at 95.2% (9130 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-09-30 17:41:59 +02:00
Toni Laiho 50b0c798ef Translated using Weblate (Finnish)
Currently translated at 99.9% (9586 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/fi/
2024-09-30 17:41:59 +02:00
Frank Sonnenberg fc4df25e7d Translated using Weblate (German)
Currently translated at 97.2% (9323 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-09-30 17:41:59 +02:00
Wang d47549378a Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (9576 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-09-30 17:41:59 +02:00
CloverGit 251b17381e Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (9574 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-09-30 17:41:59 +02:00
Trần Phi Hải 12d564940e Translated using Weblate (Vietnamese)
Currently translated at 25.4% (2436 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/vi/
2024-09-30 17:41:58 +02:00
김랑기 a5502ff7d2 Translated using Weblate (Korean)
Currently translated at 100.0% (9590 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-09-30 17:41:58 +02:00
Trần Phi Hải 2d23542d51 Translated using Weblate (Vietnamese)
Currently translated at 23.7% (2281 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/vi/
2024-09-30 17:41:58 +02:00
Henrik Kauhanen 3d3f713d09 Translated using Weblate (Swedish)
Currently translated at 99.8% (9574 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-09-30 17:41:58 +02:00
ZbeeGin 0527e65221 Translated using Weblate (Polish)
Currently translated at 100.0% (9590 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-09-30 17:41:58 +02:00
김랑기 71ef141880 Translated using Weblate (Korean)
Currently translated at 99.7% (9568 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-09-30 17:41:58 +02:00
co8 j 12198c8d41 Translated using Weblate (Japanese)
Currently translated at 94.4% (9060 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-09-30 17:41:58 +02:00
Trần Phi Hải 1afa211599 Translated using Weblate (Vietnamese)
Currently translated at 22.6% (2169 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/vi/
2024-09-30 17:41:58 +02:00
CloverGit 15bfd9fbff Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (9574 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-09-30 17:41:58 +02:00
Wellington Terumi Uemura ef3e6d959a Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (9590 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt_BR/
2024-09-30 17:41:58 +02:00
CloverGit dcc645cc22 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.6% (9560 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-09-30 17:41:58 +02:00
Tokita, Hiroshi 55540a0a88 Translated using Weblate (Japanese)
Currently translated at 92.2% (8847 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-09-30 17:41:58 +02:00
CloverGit c9270b2779 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.0% (9497 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-09-30 17:41:58 +02:00
Henrik Kauhanen 8b8b3226f7 Translated using Weblate (Swedish)
Currently translated at 98.9% (9492 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-09-30 17:41:57 +02:00
jeong-sangwon 632ec08e43 Translated using Weblate (Korean)
Currently translated at 99.2% (9514 of 9590 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-09-30 17:41:57 +02:00
John Beard 76c328db84 SCH_PIN: Fix missing alt assign in copy ctor 2024-09-30 16:22:43 +01:00
jean-pierre charras dadd324d40 PCB_IO_EAGLE: ensure a created footprint has a valid FPID.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18796
2024-09-30 12:57:41 +02:00
John Beard 5df2fa2921 Eeschema: fix typo in min image size 2024-09-30 11:44:01 +01:00
John Beard 460e575457 Use REFERENCE_IMAGE for SCH_BITMAP
Also wire in the transform origin handling to the point editor
and the properties panel in eeschema.
2024-09-30 10:20:20 +01:00
John Beard 3f131e2011 Abstract REFERENCE_IMAGE to a separate class
Break the non-PCB-specfic parts of PCB_REFERENCE_IMAGE out
to a common REFERENCE_IMAGE class, which is then composed into
the PCB_REFERENCE_IMAGE. This will make it easier to bring the
transform origin logic to eeschema without repetition.
2024-09-30 10:20:20 +01:00
jean-pierre charras 4a0f111fd6 Eeschema: add bitmap to tool Increment Annotations From... 2024-09-30 11:00:43 +02:00
Jeff Young 4a82690887 Potential fix for Eagle -> Kicad -> Freerouter -> Kicad issue.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18796
2024-09-30 09:38:45 +01:00
i404788 330150a6a6 Add ERROR_LOC to exports 2024-09-29 12:14:03 +00:00
jean-pierre charras 3671342933 Fix missing change in commit 6cfff715 in QA PNS tool 2024-09-29 12:05:27 +02:00
jean-pierre charras 6cfff7156a PNS router: rename IsCopperLayer( int aLayer ) to avoid a collision.
IsCopperLayer( int aLayer ) can be ::IsCopperLayer( int aLayer ) or
PNS_KICAD_IFACE_BASE::IsCopperLayer( int aLayer ) in pns_kicad_iface.cpp
This is error prone.
So, to avoid mistakes,  PNS_KICAD_IFACE_BASE uses now 2 functions:
- IsPNSCopperLayer( int aPNSLayer )
- IsKicadCopperLayer( PCB_LAYER_ID aPcbnewLayer )

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18800
2024-09-29 09:35:02 +02:00
John Beard e923d6307c .gitignore: add demo lock files 2024-09-28 22:45:01 +01:00
jean-pierre charras 9979b4849e Pcbnew: Fix issue when flipping a graphic segment (SHAPE_T::SEGMENT).
PCB_SHAPE::Normalize() normalized a graphic segment by (sometimes) swapping
start and end points. But it creates an issue when flipping a segment: the
reference point can be changed.
This normalization was made for DRC purpose when comparing 2 footprints.
Now, PCB_SHAPE::Normalize() does not change end points of a segment, and a
specific PCB_SHAPE::NormalizeForCompare() normalize fct is used for DRC compare.
2024-09-28 17:40:08 +02:00
jean-pierre charras 016b9deec2 Pcbnew: better fix than commit 50d5c6a4 2024-09-28 15:57:46 +02:00
Wayne Stambaugh b9f11971ad Add test to determine if schematic is a complex hierarchy.
This test was added to the SCHEMATIC object along with QA tests to verify
the test works as expected.
2024-09-28 09:21:20 -04:00
John Beard 5305953de8 Pcbnew: Allow create corner/split on arcs 2024-09-28 13:27:38 +01:00
John Beard 7ba772bc4c Pad.h doesn't need geometry_utils.h
Saves 200+ files from a rebuild if you touch it.
2024-09-28 13:24:26 +01:00
John Beard 889e24988b Reference image: avoid overflow on large scales
This has always been possible (especially through the properties
panel with large scales), but it's even easier if the transform
origin is near a manipulated corner.

Check and reject scales that result in an overflowed image box.
2024-09-28 13:24:26 +01:00
JamesJCode 0e11c9cb8c Remove debug output from KICAD_NETLIST_PARSER 2024-09-28 11:58:53 +01:00
jean-pierre charras 50d5c6a437 Pcbnew, Flip rectangle shape: Keep its anchor position after flipping.
Previously, it was flipped using the shape anchor position. But for this
shape, the anchor (top left corner)) is reinitialized after flipping, so
flipping twice moves the shape.
Now the rectangle center is used as reference position to flip the shape

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18797
2024-09-28 10:14:25 +02:00
John Beard 164ff0b870 Pcbnew: catch some preview item oveflows at low zooms 2024-09-27 23:06:32 +01:00
John Beard 114e86a7ed Reference image: also account for origin via prop mgr
When scaling via the properties panel, also keep the
transform origin fixed in the same way as when
drag-editing.
2024-09-27 23:05:45 +01:00
Seth Hillbrand 532dd0d4d9 Remove extra char 2024-09-27 12:19:18 -07:00
Seth Hillbrand a8dc101010 Fix layer translation in setting start item
Need to be very careful when translating between PNS layers and board
layers.  PNS layers are linear while board layers are not, so reaching
into the view will return a board layer (maybe we should proxy this
through the iface?)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18708
2024-09-27 11:08:19 -07:00
Wayne Stambaugh d8f71e6754 Add missing QA test source file. 2024-09-27 13:26:53 -04:00
Wayne Stambaugh be72f22f54 Add check for schematic files shared by multiple projects.
This test was added to the SCHEMATIC object along with QA tests to verify
the test works as expected.
2024-09-27 13:09:50 -04:00
John Beard ebfe9df8f9 Reference image: add a transform origin
This is stored as an offset from the image position,
which is the centre of the image.  When interactively edited, the
transform origin stays in place. This makes it easier to scale an image
around some fixed feature in the image.

For now this is not saved out to the format, so it
reinitialises to (0, 0) each time. This means scale around
the midpoint, which is the current behaviour.
2024-09-27 17:14:08 +01:00
John Beard 215533f31a Unify flip direction handling
There was a gentle mish-mash of booleans, some with
true being left/right and some up/down, and some functions that
can flip in both axes (which is never actually done, and doesn't
really make geometric sense).

Replace all this with the FLIP_DIRECTION enum class, which makes
the intention completely unambiguous.

This also then allows a small scattering of simplifications,
because everything takes the same type and you don't have to
fiddle booleans to fit.
2024-09-27 17:13:13 +01:00
Astropeak 3066ad2088 Pcbnew: make 'Flip board items' option more clear
CHANGED: The 'Filp board items' checkbox in the 'PCB Editing Options'
was changed to a radio box.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/16652
2024-09-27 17:13:13 +01:00
John Beard 4e2162fc97 Bezier: add the function to get point at t
Not of huge practical use on its own, but other maths will
need this.
2024-09-27 17:13:13 +01:00
jean-pierre charras 98830577eb Pcbnew, DIALOG_SWAP_LAYERS: Use UI layer order to display copper layers list. 2024-09-27 17:55:43 +02:00
jean-pierre charras 5255a09dfa Pcbnew, DIALOG_SWAP_LAYERS: fix crash when opening the dialog. 2024-09-27 16:56:17 +02:00
jean-pierre charras e2282a4af8 Minor cosmetic enhancement: add icon to Revert and Generate Legacy BOM tools 2024-09-27 13:34:20 +02:00
John Beard 7dfac8d1ab Bezier: Correct bounding box calculation
Beziers can extend outside the control point hull,
and can also be far inside the hull. Especially the latter
interferes with selection.

So use the approximated segments to determine.
2024-09-27 06:23:04 +01:00
John Beard 717847cc31 UNIT_BINDER: Fix typo affecting transformed points
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/18788
2024-09-27 10:53:50 +01:00
Mike Williams 953bc2d4bd design blocks: implement properties window
Also adds support for default fields when placing design blocks as a
sheet.
2024-09-26 15:48:39 -04:00
jean-pierre charras 51d615d30d Minor cosmetic enhancement: add icon to "Create Outsets from Selection" tool 2024-09-26 20:13:43 +02:00
JamesJCode 903c743a60 Fix deep cloning and RunOnDescendants for groups containing generators
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17710
2024-09-26 18:58:44 +01:00
Wayne Stambaugh 21dd41eeb2 Fix annotation issue loading legacy schematics.
Commit 83de056de9 broke loading legacy schematics that are not shared.
Legacy schematics do not contain instance data "AR Path=" entries when
the schematic file was not shared.  The reference and unit information
was only stored in the symbol reference field and unit entries in the
symbol definition.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18779
2024-09-26 12:22:57 -04:00
John Beard 0e788f97ca Bezier: add fill to properties panel 2024-09-25 22:20:58 +01:00
John Beard e2370c6e45 BEZIER: Avoid some copying in the ctor 2024-09-25 22:17:33 +01:00
John Beard 5c6f334f8f POLYGON_BOOLEAN_ROUTINE: Copy filled attribute from the source 2024-09-25 22:15:45 +01:00
John Beard 79bb095a29 POLYGON_BOOLEAN_ROUTINE: init some variables
These should be inited later on, but it's clearer to
make it explicit.
2024-09-25 22:13:18 +01:00
John Beard 109675f39e Eeschema: add bezier tool
This is a little more primitive than the pcbnew tool,
in the same way that the arc tool is also more primitive
(no interactive manager).

It works just about well enough to get the curves drawn,
but all these tools could do with some interactivity
in esschema and symbol editor.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/8828
2024-09-25 22:09:32 +01:00
John Beard b3248095e8 Pcbnew: add bezier editing tool
Adds the initial implementation of bezier overlay
(assistant) and geometry manager. This is only
implemented in Pcbnew - the code is common, but
eeschema doesn't currently use it for any shape.

Relates-To: https://gitlab.com/kicad/code/kicad/-/issues/8828
2024-09-25 21:41:32 +01:00
John Beard 336c87b4c0 Bezier: harmonise icons with other graphical icons
Use grey for the main item, remove the endpoint circles.
Keep the blue highlight for the control handle line
(which is technically not where it goes on a single
bezier, but it is simpler that way).

Relates-To: https://gitlab.com/kicad/code/kicad/-/issues/8828
2024-09-26 10:17:23 +01:00
John Beard 30e51f7d1a Pcbnew: Show some helper lines in point editor
Some shapes, like arcs and beziers have "lines" that
can be useful to see when editing, but aren't directly
editable and may not overlap the object's own lines.

So make it possible to, indepedently:

 - Turn off the centre-point drag handle affordance
 - Show the actual line segment on screen.
2024-09-26 10:17:23 +01:00
jean-pierre charras 730ff633a8 PCM, Fix hanging in m_schema_validator.set_root_schema() on MINGW+UCRT.
For some obscure reason on MINGW, using UCRT compiler version,
m_schema_validator.set_root_schema() hangs in French language.
So, on MINGW+UCRT (specific) switch to a LOCALE_IO before calling set_root_schema().
2024-09-26 10:58:40 +02:00
John Beard aea42a5cdf Pcbnew: handle connected copper circle points
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/18774
2024-09-25 12:28:43 +01:00
jean-pierre charras 8128f4ebd9 SCH_MARKER::SerializeToString): protect against null pointer 2024-09-24 16:59:58 +02:00
jean-pierre charras d8dc7a15e5 altium_pcb.cpp: do not clear enabled layers after copper layers are built. 2024-09-24 13:37:38 +02:00
jean-pierre charras eee98383b7 DIALOG_MAP_LAYERS: list Pcbnew layers using the UI order, not the layer ID order 2024-09-24 11:50:44 +02:00
Mike Williams 53022ab347 mouse settings: add reverse zoom option
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/18583
2024-09-23 17:09:44 +00:00
jean-pierre charras 1db63ef36f Pcbnew: copy/paste vias: fix some issues:
- better fix for PCB_VIA::SetLayerSet() than commit 0c959075.
- Ensure saved via from a board and pasted to another board have a layer pair
compatible with this board copper layer count (if not, skip it)
- workaround in PCB_VIA::GetLayerSet() that hang when a LAYER_RANGE has start
and end layers id not compatible with the copper layer count (bug in LAYER_RANGE?)
2024-09-23 17:35:11 +02:00
John Beard 9eeab7a7a2 Dogbone: add test change missed in commit 2024-09-23 10:35:09 +01:00
John Beard 95beedb612 Dogbones: add slots for acute angles
It's actually not as hard as I thought, though
surely has wierd edge cases which users might need to
handle manually.
2024-09-22 13:45:19 +01:00
John Beard 17143e252f Update available dialog: add some padding
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/18751
2024-09-22 15:04:22 +01:00
jean-pierre charras 0c95907532 PCB_VIA::SetLayerSet(): fix incorrect calculation of top and bottom layer pair.
Vias use a top/bottom layer pair.
A layer set is used only to calculate this pair.
Recent changes in layer renumbering broke this calculation.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18759
2024-09-23 10:10:13 +02:00
jean-pierre charras 024ab7afc7 PANEL_SETUP_BOARD_STACKUP: fix issue when changing copper layer count.
The code is now updated after layer renumbering.
2024-09-22 15:19:28 +02:00
jean-pierre charras 0d406bde75 French translation update 2024-09-22 10:39:31 +02:00
jean-pierre charras 16f0ebc96e ODB++: do not translate error messages not really intended for users 2024-09-22 10:33:22 +02:00
Jon Evans a007cc438f Update {fmt} to 11.0.2 2024-09-21 17:44:10 -04:00
Jon Evans 1199488ce2 Prevent assertion in color settings panel 2024-09-21 14:34:12 -04:00
Jon Evans 1964ab476a Fix Altium layer mapping after LAYER_ID changes 2024-09-21 14:16:38 -04:00
jean-pierre charras f737d8f2db Gerbview: make my fix about MINGW specific to MINGW (commit b5cb0087 broke QA build) 2024-09-21 17:38:31 +02:00
jean-pierre charras b5cb008734 Gerbview: fix a link issue (symbol not found) on MINGW/MSYS2
It was due to a link order with libgerbview_navlib
2024-09-21 16:37:23 +02:00
jean-pierre charras b6bf7d6f44 Revert "Gerbview: Add build option do enable/disable the 3Dconnexion support."
This reverts commit 336532303e.
A better fix for the link issue on MSYS2 will be committed
2024-09-21 16:28:05 +02:00
jean-pierre charras 336532303e Gerbview: Add build option do enable/disable the 3Dconnexion support.
On msys2 a link issue (3 undefined symbols) prevent Gerbview to be built.
So I added this option (KICAD_ENABLE_3DMOUSE_GERBVIEW, enabled by default)
to disable 3Dconnexion support on request.
2024-09-21 13:24:43 +02:00
Kamil Galik 2068ed31a4 ADDED: 3D Mouse support in Gerber Viewer and Drawing Sheet Editor
Fixes https://gitlab.com/kicad/code/kicad/-/issues/13306
2024-09-21 08:22:19 +00:00
Uli Köhler 7187f1b705 Fix empty BOM preset fields leading to crash when opening Edit Fields Dialog 2024-09-21 00:42:23 +00:00
jean-pierre charras e71fabf640 DIALOG_MULTICHANNEL_GENERATE_RULE_AREAS_BASE: fix minor issues. Rename fbp file.
Mark some strings as translatable.
2024-09-20 20:13:39 +02:00
JamesJCode 68196ad3f3 Don't add default netclass for missing PCB or schematic colors
We don't allow these to be set on the default netclass, so we
don't need to resolve it if they are missing in a custom netclass.
The renderer will use the colors specified in the application
color scheme.
2024-09-20 18:46:39 +01:00
John Beard a6f00a395c Polygon operation: fix typo 2024-09-20 17:20:20 +01:00
jean-pierre charras 7992fc1e36 Simulator, TUNER_SLIDER: fix (minor) issues
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18746
2024-09-20 14:37:14 +02:00
John Beard 5ddbfd6fcd Dogbone: update tests
Need to use bigger numbers to avoid excessive rounding issues.
2024-09-20 11:27:19 +01:00
John Beard a5e6f70122 Dogbone: handle small mouths even better
Including floating point roundoff, which can bite
for rectangles.
2024-09-20 10:57:07 +01:00
John Beard 671ecdf13c Dogbone: correct small mouth warning
It has to fit the cutter diameter, not the radius!

Also you can use SHAPE_ARC as a generic arc object.
2024-09-20 10:37:29 +01:00
jean-pierre charras 2a333475cd Symbol Editor, align items on grid: do not modify shape of arcs and circles.
Previously, start and end points were moved, and therefore the shape itself was
modified. It was probably unexpected.
Now just align the arc start point or the circle center point on grid.
2024-09-20 09:33:20 +02:00
John Beard 8609632fc4 Polygon operations: fix merging of disjoint shapes
Don't enforce that every merge result has to be
non-disjoint. Sometimes it will merge in the end
when gaps are filled in by other shapes. Even if
not, at the end, just create a new polygon for
each disjoint polygon.
2024-09-19 23:14:42 +01:00
Mike Williams 867cb58175 feature removal: remove Show Hidden Text
Does not work properly since 8.0 introduction of footprint fields.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/18656
2024-09-19 15:41:44 -04:00
jean-pierre charras 32f84da9a2 DIALOG_TEMPLATE_SELECTOR: minor cosmetic fixes.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18736
2024-09-19 19:04:18 +02:00
John Beard 8fdb6d6e88 Feature: Exact item offset tool
This is a little bit like the bounding hull tool, but the
output is "exact" and it only supports the most common
source items.

By 'exact', this means that rounded corners are real arc
segments rather than polygonal approximations. Obviously,
this is rather tricky in the general case, and especially
for any concave shape or anything with a bezier in it.

Envisioned main uses:

* Creating courtyard and silkscreen offsets in footprints
* Making slots around line or arcs.

The one thing that it does not currently do, but which it might
plausibly do without reimplementing Clipper is convex polygons,
which would bring trapezoidal pad outsets for free. But that
is a stretch goal, and bounding hull can be used.
2024-09-19 06:35:43 +01:00
John Beard 46e7228945 UNIT_BINDER: Handle binding of combo-box option lists
This is useful if you want to give some preset options
to a user (e.g. recently used value) but stil have them
controlled and presented using the UNIT_BINDER logic.
2024-09-19 06:35:43 +01:00
John Beard 0d2371c9c3 IBIS: Constness and skipping copies
Lot of things can be const which makes the interface
a bit more legible and safe to use - lots of things are
accessing pointers that if they changed, would have wierd
and unpredicatable effects.

Probably of minor concern in practice, but a lot of strings
and vectors are being copied when they don't have to be.
Very crude profiling indicates this could save 30-50% of the time in
KIBIS::KIBIS after ParseFile, but this is incidental to
clarifying the API of the classes.

Report is const as it doesn't change the logical state of the
IBIS_ANY object (if m_reporter were a ref, it'd be mutable).

If a T* isn't null-checked inside a function, pass as ref
to show that the function expects and requires non-nullity.
2024-09-19 06:35:43 +01:00
John Beard a08a78a285 IBIS: Fix broken polarity parsing
A copy-paste-o meant that this wasn't working and
was also trashing the enable variable.

Add a test that loads an IBS file in the QA directory
that demonstrates this is fixed.
2024-09-19 06:35:43 +01:00
John Beard 2a158c192e IBIS: Avoid assigning an uninitialised variable
This would be OK if m_reporter were overwritten in the
derived ctor after being filled with junk in the base
ctor. But this is not always true - the null ctor doesn't
do it. So it can stick about and fool the null check.

Rather than just doing that, push the reponsibility for
maintaining the m_reporter invariant contract (if it isn't null,
you may use it) to the base class ctor.

And get rid of the shadowing m_reporter in KIBIS.
2024-09-19 06:35:43 +01:00
John Beard 9d4e7e359b SYMBOL_LIBRARY_MANAGER: SaveBuffer doesn't need ownership
This function just uses the buffer, it doesn't retain
part-ownership, so it doesn't need to get a copy of the
shared_ptr (or even know that the shared_ptr exists).

A reference count of the buffers is safely held by the caller
in SaveLibrary while this function executes.
2024-09-19 06:35:43 +01:00
John Beard a8f4dfd47d SYMBOL_BUFFER: Enforce non-null returns
SYMBOL_BUFFER GetSymbol and GetOriginal cannot return null,
as the SYMBOL_BUFFER class internally ensures that the
original and current symbol pointers are always filled
through checks in the ctor and setters.

This means that clients don't need to null-check the returns,
which is good because they mostly already do not.

Return references instead, to formalise the non-nullity of
these pointers and absolve the calling code of having to
consider if they might be null.
2024-09-19 06:35:43 +01:00
John Beard 06eab304e5 SYMBOL_LIBRARY_MANAGER: Formalise ownership when creating SYMBOL_BUFFERs
Previously, SYMBOL_BUFFER took plain pointers and took ownership
of it (plus the ownership of an internal new'd pointer).
Use unique_ptr to express this relationship more clearly and
safely.

Add a non-null assert in SYMBOL_BUFFER's ctor.

Use more restricted-scope variables in a couple of places where
a re-used variable was not required.

There are still memory-leak opportunities in here, for example
SaveBuffer new's things and can return without handing them over
or deleting.
2024-09-19 06:35:43 +01:00
John Beard 49a0318fe5 SYMBOL_LIBRARY_MANAGER: Clarify UpdateBuffer ownership
Again, this doesn't retain part-ownership of the pointer
and null is a wxCHECK failure. So hoist the null check
and then handle it as a ref (=non null, caller owns).

Also fixes a trivial mem leak in test_symbol_library_manager.cpp.
2024-09-19 06:35:43 +01:00
John Beard a756b058ae SYMBOL_LIBRARY_MANAGER: Clarify ownership semantics
DeleteBuffer took a std::shared_ptr by value. This means
it claims to take (and keep) part-ownership of the pointed-to
item. However, this function does not take any ownership or
change the item, it just refers to it. It also does not null-check
the pointer. So it should be a const reference to the item.
Ownership semantics are then: the caller retains ownership
while the function executes.

(It also saves a shared_ptr ref count, but that won't be
important here).
2024-09-19 06:35:43 +01:00
John Beard 69889eff7c SYMBOL_LIBRARY_MANAGER: Enforce non-null via reference
All code paths in CreateLibrary and AddLibrary check that
the LIB_TABLE is non-null first.
2024-09-19 06:35:43 +01:00
John Beard 653d85f9fc Abstract LIB_TABLE IO to allow non-file-based tables
Mostly intended right now for allowing testing of library tables
to help with testing chained loading, but it also decouples the
idea of a library table from on-disk files in general.

All current (real) lib table implementations continue to use the
file-based IO.

This could be made more general (not just for tables) if really
needed.
2024-09-19 06:35:43 +01:00
John Beard 1d2fb3ec82 Geom: add a simple OVAL type
Makes it easier to reason about oval shapes in geometric terms.

For now, this isn't a SHAPE, but it could be (and it's a
fairly common primitive, so it could be useful, though the
obvious use (clearance) is equivalent to a SEG with a clearance,
which is already a function that exists.
2024-09-19 06:35:43 +01:00
John Beard 32b824e3cd Clarify track/via snapping in dialog
Very minor tweaks:

* "When creating tracks" -> "When routing tracks"
  This setting affects the router tool, but not, say,
  copy/paste or other non-router ways to create tracks.
* The 'Snap to tracks' setting also toggles snapping to
  vias, so say so.

Relates-To: https://gitlab.com/kicad/code/kicad/-/issues/18508
2024-09-19 06:35:43 +01:00
Mike Williams 586a327e4a import sheet: fix doubled sheets when placing existing sheet file
Also fix a toolstack issue with entering sheets with the sheet tool.
2024-09-19 11:15:45 -04:00
Mike Williams 93b9607e6a sheets: respect annotation when adding existing sheet
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/17807
2024-09-19 11:15:45 -04:00
jean-pierre charras c736c24a15 EAGLE importer: do not stop the import at the first issue in a lib symbol.
A library, during importation, can have a issue in a specific symbol during
conversion. Just skip this symbol, and do not stop import.
2024-09-19 16:13:38 +02:00
Alex Shvartzkop 68ca80d876 Fix copper Z positioning for OCCT export.
https://gitlab.com/kicad/code/kicad/-/issues/18741
2024-09-19 11:27:08 +05:00
Alex Shvartzkop 05b4aace38 Fix an issue causing "zbot < ztop" assert in 3D viewer on multilayer boards. 2024-09-19 10:07:32 +05:00
Alex Shvartzkop 4002058774 Fix loading pre-v6 boards with custom copper layer names.
They didn't have a separate user name field, so LSET::NameToLayer woudn't work.
if( i < 0 ) condition was also incorrect.
2024-09-19 10:04:50 +05:00
Jon Evans 1895ec58a0 Fix various compile warnings 2024-09-18 18:51:02 -04:00
Jon Evans 8647da613f Fix typo'd comparison in 4e7fcb3b 2024-09-18 18:37:32 -04:00
Jon Evans 4e7fcb3b67 Temporary patches around LSET and negative layers
Probably this should be replaced with a less error-prone
approach.  Right now the LSET -> BASE_SET system is risky
because it is converting a signed enum (PCB_LAYER_ID) to
a size_t in all the underlying operations.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18738
2024-09-18 18:36:17 -04:00
Mike Williams 01e6b6a9f9 hotkeys: fix overlapping use of S
Partially fixes https://gitlab.com/kicad/code/kicad/-/issues/18201
2024-09-18 12:16:25 -04:00
Mike Williams 5ed80a08b8 schematic: fix missing actions strings and hotkey conflict
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/17694
2024-09-18 12:06:59 -04:00
jean-pierre charras b2e4e9be9c Update outdated comments. No code change 2024-09-18 17:25:30 +02:00
Mike Williams 87aaf924b3 schematic bitmap: add properties 2024-09-18 11:10:53 -04:00
Mike Williams 87a66d4df1 grids: make settings panel correctly implement cancel
Before we edited the grid settings directly so cancel would keep your
changes.

Also includes numerous QoL improvements borrowed from Ian's patch,
and a few other small fixes.
2024-09-18 10:49:12 -04:00
jean-pierre charras 06b1dd7bd8 GERBER_JOBFILE_WRITER: fix issues with layer names after layer renumbering. 2024-09-18 15:37:10 +02:00
jean-pierre charras 22af8628ed DIALOG_FOOTPRINT_CHOOSER: ensure the display is always updated on footprint change. 2024-09-18 15:35:11 +02:00
Wayne Stambaugh af914c2603 Fix library symbol circle position when importing Eagle schematics. 2024-09-18 08:38:56 -04:00
John Beard 99e1869987 Fix build: use same signature for alg::lexicographical_compare_three_way as std::
This makes it clearer that it is a polyfill-type affair
and make it easier to swap for the std:: one when the
compiler support is guaranteed.

Also avoid double underscores in parameter names,
as well as underscore-capital latter as they are reserved.
2024-09-18 06:56:03 +01:00
Seth Hillbrand f978fd4436 Fix build for MacOS
Accidentally removed our patch to allow three-way compare on MacOS
2024-09-17 22:25:44 -05:00
JamesJCode df869036e5 Enable 'exclude_from_sim' property for DB libraries 2024-09-17 18:20:33 +01:00
jean-pierre charras d4909f59fa PANEL_SETUP_LAYERS: fix issues for VIAs when reducing the copper layer count. 2024-09-17 17:52:52 +02:00
jean-pierre charras 9b6d167236 Convert graphic to polygon or zone: fix some issues:
- fix gap added twice
- add missing gap setting in DIALOG_COPPER_ZONE and DIALOG_NON_COPPER_ZONES_EDITOR

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18724
2024-09-17 13:26:33 +02:00
jean-pierre charras 3534546ef7 fix compil warnings 2024-09-17 09:37:23 +02:00
Julie Vairai 06eb7fa588 Added GenCad export within kicad-cli
Available options:

 "--flip-bottom-pads"
 "--unique-pins"
 "--unique-footprints"
 "--use-drill-origin"
 "--store-origin-coord"
2024-09-16 22:31:52 +00:00
Dhinesh 2a153599d5 Remove Context Menu in Empty Space of Hierarchy Navigator
Previously, a single RMB-click at empty space had no effect, while a
double-click opened the context menu. As per the @sethhillbrand suggestion,
instead of fixing this, no context menus should appear in empty space, as
it is not necessary. To address this, the wxEVT_RIGHT_UP event binding has
been removed by unbinding it from both the constructor and destructor.
Additionally, the onRightClick(wxMouseEvent& aEvent) method has been
removed, as it is linked to wxEVT_RIGHT_UP and is no longer necessary.

Fixes #17962
2024-09-16 22:26:06 +00:00
Wayne Stambaugh d9d984d2c8 Warn user when template field names contain trailing/leading white space.
When loading a schematic that contains fields with trailing/leading white
space, show an infobar message.  When editing the template field names,
prompt the user to keep or remove any trailing or leading white space
characters from field names.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18601
2024-09-16 15:37:33 -04:00
jean-pierre charras fb0384d761 PCB_SHAPE item: do not control the selection by the LAYER_SHAPES visibility.
the GAL LAYER_SHAPES controls the opacity of filled shapes, not the visibility
a opacity = 0.0 disable the PCB_SHAPE selection of the item, but this is not
optimal, because only filled areas have a opacity control.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18719
2024-09-16 19:07:18 +02:00
jean-pierre charras 4c33d39c3a 3D viewer: fix incorrect Z position of some back layers. 2024-09-16 13:02:37 +02:00
jean-pierre charras eafe5b5130 Fix python plugin qfn_wizard.py after recent changes in LSET
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18715
2024-09-16 10:34:46 +02:00
jean-pierre charras 2f0077eb00 Pcbnew, PCB_VIA::IsOnLayer() fix an issue for mask layers in blind/buried vias
Such vias not on a external copper layer cannot be on the corresponding mask layer,
regardless the tented options.
2024-09-16 10:07:46 +02:00
John Beard 81c1cd9af1 Pcbnew: convert to lines should take the width of polygons if it can
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/18713
2024-09-15 21:08:04 +01:00
jean-pierre charras c45938d50b 3D viewer: fix incorrectb rendering of mask layers with blind/buried vias
Blind/buried vias not on a external copper layer are also not on the mask layer.
2024-09-15 10:00:34 +02:00
jean-pierre charras 1bc63c8013 Fix compil warnings (missing override) 2024-09-15 09:14:18 +02:00
Jon Evans d501afdbaf Fix ODB++ build on clang 2024-09-14 17:26:14 -04:00
Eric 1506beecbc Implement ODB++ export
ADDED: Add support in Pcbnew for exporting ODB++ files under Fabrication
       Outputs, base on ODB++Design Format Specification (Release v8.1
       Update 3 February 2021).

Note: There is still a lot of work to do if we will make the feature as
      complete as the ODB++ spec.  However, the current functionality's
      completeness is already sufficient to cover general production
      scenarios. I have compared the output results with Gerber files by
      DFM tool and the accuracy at the graphic level should be able to
      cover most usage scenarios.  Additionally, I am very grateful to
      the great open-source project Horizon EDA for giving me a lot of
      inspiration in terms of ideas.

The feature can be enabled by adding "EnableODB=1" to the kicad_advanced
configuration file.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/2019
2024-09-14 15:34:51 +00:00
jean-pierre charras d2cb868829 Pcb editor and 3d viewer: fix some issues:
- Fix incorrect values of displayed layers of blind/buried vias
- Fix possible incorrect layer order in PCB_VIA::SanitizeLayers()
- fix some display issues in 3D viewer.
- fix issue in LAYER_RANGE::Contains(): sometimes the test was incorrect.
2024-09-14 15:57:56 +02:00
Dhinesh 3f4257139e Prevent continuous panel resizing
When resizing the panel, it retrieves the last defined pane size
instead of the current one.  To fix this, we need to trigger the event a
second time after the pane size has been defined. This avoid calling
m_AuiPanels.Update() that crashes windows if called directly

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17835
2024-09-13 17:17:41 -07:00
Seth Hillbrand c736904e39 Use arrow not pencil when selecting image
The arrow cursor makes better syntactic sense for placing existing items
rather than drawing as is the case for other tools

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17588
2024-09-13 16:52:18 -07:00
Seth Hillbrand 89b9b13e21 Handle error when we don't have Eagle Board
This can also occur in libraries, so ensure we're not dereferencing a
null board pointer

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18702
2024-09-13 16:04:44 -07:00
Seth Hillbrand 1a6b309ad6 Some extra cleanup for layer interface
PNS<->Board layer interface needs clear boundaries about where we are
using board layers (with the alternating numbers) and PNS layers which
are sequential and all copper
2024-09-13 15:50:12 -07:00
Seth Hillbrand f4bec843d4 Preserve pin numbering when duplicating
We renumber duplicated pins but the previous order was essentially
random.  This keeps the numeric order of the pins on the screen, falling
back to position if they are not numbered
2024-09-13 11:01:42 -07:00
jean-pierre charras 02ec8acdb3 3D viewer: fix some issues after layer numbering changes (round 2). 2024-09-13 10:09:18 +02:00
Seth Hillbrand 977d9e4e72 Fix compile issue on Clang/Linux
Overloaded operator couldn't figure out if it wanted to check 32 or 64
bit ints
2024-09-12 15:10:29 -07:00
Mike Williams 337211adea grids: allow editing existing grids
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/16870
2024-09-12 15:19:34 -04:00
jean-pierre charras c0c8ce087c Fix a QA test after the issue fixed by commit c8279dd4. 2024-09-12 20:45:17 +02:00
Mike Williams 9647170413 pcb editor: add Zone Manager to Zones context menu
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/17344
2024-09-12 14:31:24 -04:00
Mike Williams 9f6ffbb156 schematic editor: update View menu label for consistency
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/16472
2024-09-12 14:22:06 -04:00
Mike Williams 0592b7273b schematic: fix dangling pins after a non-move
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/18404
2024-09-12 14:07:47 -04:00
jean-pierre charras c8279dd458 PCB_VIA::IsOnLayer(): fix issue after layer numbering changes
PCB_VIA::IsOnLayer() returned incorrect result.
2024-09-12 19:01:20 +02:00
Seth Hillbrand caa63b11da Fix missing conversion from board layer to PNS layer 2024-09-12 09:13:16 -07:00
Mike Williams 04ff715945 pcb: fix crash on routing many traces
Further improvements could be made to the behavior of the autoroute
functionality in this case, but not crashing is a good start.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/18328
2024-09-12 10:20:48 -04:00
Mike Williams bf7742b8fb schematic: grid/movement tweaks for repeat and duplicate symbols
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/18521
2024-09-12 10:03:48 -04:00
John Beard e5aa82224d Pcbnew snaps: don't require activation when extension snaps not enabled
Can be removed when the extension snaps aren't ADVANCED_CFG.
2024-09-12 09:26:51 +01:00
jean-pierre charras 36b6720feb 3D viewer: fix some issues after layer numbering changes.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18684
2024-09-12 09:50:00 +02:00
John Beard a182e64e4e Pcbnew snap: add snap mode toggle to picker context menu
Relates-To: https://gitlab.com/kicad/code/kicad/-/issues/18687
2024-09-11 22:36:13 +01:00
John Beard 4676baf46f Pcbnew snaps: honour the active layer selection when picking points
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/18687
2024-09-11 22:36:11 +01:00
John Beard f6a693475f BOX2: Add a KiROUND specialisation for BOX2D -> BOX2I 2024-09-11 22:35:35 +01:00
John Beard 5e9aba5555 Remove commented-out VECTOR2 dtor
It's been commented out for 11 years, so take the
opportunity while the header is being touched.
2024-09-11 22:35:35 +01:00
John Beard 49b8a5ce74 VECTOR2, BOX2: Add constexpr to many functions
In the core geometric types, this can provide some
useful optimisation opportunites.

As most trig functions and std::sqrt aren't constexpr
until C++26, anything that involves a vector length
can't be constexpr yet. But std::clamp and, importantly,
KiROUND are, which does allow quite a bit. And squared
sizes do work, as they are just multiplies, so size
comparisons work too.

The floating point equals-with-epsilon function can't
be directly made constexpr until C++23 (unless std::abs
is replaced with manual code, but that may then forgo
the use of intrinsics at runtime). And they're probably
not important to have at compile-time.

Add a few tests with static_asserts to show/prove that
some non-trivial operations can be done at compile time,
for example BOX2 merging.
2024-09-11 22:35:35 +01:00
John Beard f4eb173c43 BOX2: By-value GetInflated method
This allows better value-semantics and const correctness.

This is a common method, as the Inflate method is
in-place:

  BOX2I inflated = other;
  // 'Inflated' is not inflated yet
  inflated.Inflate( delta );
  // Now it is inflated, but it's not const

This is annoying, as the 'inflated' box cannot easily
be made const. Instead:

  const BOX2I inflated = other.GetInflated( delta );
2024-09-11 22:35:35 +01:00
John Beard 7fe5caffa6 BOX2: Fix Inflate parameter type
If this is just 'int', BOX2D will not Inflate
as you might expect if given an non-integer parameter,
but will instead do a conversion.

Use coord_type, like the two-parameter Inflate method.

Add a test for this.
2024-09-11 22:35:35 +01:00
John Beard ebef24b6b0 Debug: graphical snap anchor debug mode
When working near snap anchors, which come and go
rapidly, it's often useful to see what snaps have been
calculated. Add an advanced config to show these
(EnableSnapAnchorsDebug) on an overlay layer.

With more polish this could be a hotkey or something.
2024-09-11 22:35:35 +01:00
John Beard 6bad4bb1a2 Put extension snaps behind an advanced config
This can be backed out when the snapping bevaviour is
considered good enough to be on by default.
2024-09-11 22:35:35 +01:00
John Beard b2be0d39bd Snapping: Add construction geometry snapping
This is a pretty major rework of the snapping system.
The GRID_HELPERs now have a separate CONSTRUCTION_MANAGER
which handles some of the state involving "construction
geometry".

This is fed with 'extended' geometry (e.g. "infinite" lines from
segments) for use in generating things like intersection points.
It also handles adding this geoemtry to a GAL view item
(CONSTRUCTION_GEOM) for display to the user.

The process is:

* A TOOL creates a GRID_HELPER
* Optionally, it pre-loads a "persistent" batch of construction
  geometry (e.g. for an item's original position)
* The grid helper finds useful snap 'anchors' as before, including
  those involving the construction items.
* Other items on the board can be 'activated' by snapping to one
  of their main points. Then, if it has construction geometry,
  it will be added to the display. At most 2 items of this kind of
  geometry are shown, plus the original item, to reduce avoid
  too much clutter.

The dashed snap lines state machine is also handled in the
CONSTRUCTION_MANAGER and displayed in the CONSTRUCTION_GEOM item.
2024-09-11 22:35:35 +01:00
John Beard 72e48aed52 Trigo: Add a GetRotated function to get a rotated VECTOR2I
This makes it easier to use value semantics and consts when
constructing geometry.
2024-09-11 22:08:36 +01:00
John Beard a3a3f7648e Break ERROR_LOC out to its own header
Having this in geometry_utils.h means that touching
that header affects nearly every file, as this type is used
in EDA_SHAPE, BOARD_ITEM and SHAPE.
2024-09-11 22:08:36 +01:00
John Beard 5925f9c374 Break out some geom functions from dimension text adjustment
Put these in a separate header - they don't need to be available
whenever VECTOR2 is, but they are generic, reusable functions that
can have the corner cases defined and tested.
2024-09-11 22:08:36 +01:00
John Beard 80abdee90d Make hash constexpr
Probably doesn't add much directly, but it documents and
enforces the implied contract that the hash is fixed,
and could be used for, say, compile time hash tables.
2024-09-11 22:08:36 +01:00
John Beard 2815c99a2a Use our own hash function rather than boost::hash
I just wanted to get a fairly chonky Boost include out of a header, but
then I noticed this doesn't need to use Boost at all.
2024-09-11 22:08:36 +01:00
Ian McInerney 4388df6c25 Move Fedora CI container defition back to global scopt
It appears to be working on the runners now, so redo this to make future
maintenance easy.

This reverts commit ebbb12f6be.
2024-09-11 20:28:20 +01:00
Jan Wichmann 79271ca865 CHANGED: pcbnew - Refilling of zones before and after cleanup. 2024-09-11 19:18:41 +00:00
Mike Williams 284c52845d net navigator: add sheet changes to navigation history
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/18616
2024-09-11 15:03:53 -04:00
Wayne Stambaugh 64d4dbb2e8 Fix incorrect warning coordinates when updating board from schematic.
Use the X and Y axis inversion preference settings in the "PCB Editor"
"Origin & Axes" panel to invert the internal coordinates to display to
the user.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18662
2024-09-11 12:03:48 -04:00
Ian McInerney ebbb12f6be Partially revert 0f7e6112d2
For some reason, our hosted runner doesn't seem to pick up the jobs
with this configuration. This needs further debugging in the thunderdome
to fix.
2024-09-11 14:26:39 +01:00
Ian McInerney 0f7e6112d2 Unify location for defining default Fedora image 2024-09-11 13:43:06 +01:00
Ian McInerney f27ab3ceff Also bump metadata CI job to Fedora 40 2024-09-11 12:59:31 +01:00
Ian McInerney 5c689f9c30 Move CI to Fedora 40 containers (Fedora 38 is EOL) 2024-09-11 12:55:34 +01:00
jean-pierre charras 3ac29eba83 PANEL_SETUP_LAYERS: ensure testLayerNames() test only layers that exist in dialog
Previously, all possible layers were tested, but some are not existing in dialog.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18680
2024-09-11 11:40:26 +02:00
Seth Hillbrand e01246a9d3 Limit where type overrides can happen
IBIS requires the ability to override types but this is explicitly
forbidden to SPICE subcircuits.
2024-09-10 15:55:56 -07:00
Mike Williams 5222b89ffd design blocks: don't attempt to get file access times on dir
Causes errors on Windows
2024-09-10 15:50:03 -04:00
Mike Williams 895c977dd3 design blocks: move all loading out the main kicad frame
This lets standalone eeschema at least use the global table if a project
is not loaded, similar to how symbols/footprints work.
2024-09-10 15:50:03 -04:00
Mike Williams 2eec2489ea design blocks: move globals behind accessor functions
Prepare for lazy loading
2024-09-10 15:50:03 -04:00
Mike Williams b2dda11fae design blocks: move table manager to common dialogs
Also add to schematic editor preferences.
2024-09-10 15:50:03 -04:00
Mike Williams 0a5de3510d design blocks: use correct global library path in dialog 2024-09-10 15:50:03 -04:00
Seth Hillbrand b175c0fc39 Handle field types missing
If we do not have both a device and type for the sim model, return none
because we cannot parse it.  This is handled by the calling routines.
Otherwise, we would return raw spice type erroneously.

(cherry picked from commit 76e50881fb)
2024-09-10 12:26:30 -07:00
Seth Hillbrand f3b51b8fbf Fix layer display in stackup dialog panel
The layers need to iterate using the copper iterator, not incrementing
integers
2024-09-10 09:06:55 -07:00
Jeff Young 6ff79ae78a Fix typo. 2024-09-10 11:27:32 +01:00
Jan Wichmann 59575c19d8 CHANGED: pcbnew - Enable grid override by default.
As is the case with eeschema. So that the feature is easier to use.
2024-09-09 23:37:33 +00:00
jean-pierre charras a4e6c2cfe7 PCB_DRAW_PANEL_GAL: Use TARGET_OVERLAY for LAYER_CONFLICTS_SHADOW.
This is a better option than TARGET_NON_CACHED, and giving better look.
2024-09-09 17:07:28 +02:00
jean-pierre charras f0b92b0c5d PCB_EDIT_FRAME::HardRedraw(): also refresh message panel and ratsnest. 2024-09-09 17:01:55 +02:00
jean-pierre charras f2c8ef9f93 Fix a compil warning (shadowed var) 2024-09-09 16:59:38 +02:00
jean-pierre charras c8b113870a Pcbnew: Preferences/Fp editor/Default values: allow to remove defaut text items.
These texts/fields are not mandatory, so allow remove them from default texts list.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18663
2024-09-09 16:54:16 +02:00
Marek Roszko b2f07a9947 Split DIALOG_EXPORT_NETLIST to have a header 2024-09-09 00:09:00 -04:00
John Beard f47d9edf2e KIID: add test that the hashes do change 2024-09-08 22:42:30 +01:00
John Beard 9a3ebfba40 KIID: Use Boost uuids own hash function (fix Boost 1.86)
Not only is this simpler, but it should be compatible
with all Boost versions (the cast is a problem in 1.86)
and it was also 'improved' in 1.86 for better mixing.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/18651
2024-09-08 22:42:30 +01:00
Marek Roszko aceca713d8 Fix kicommon exports 2024-09-08 08:00:47 -04:00
Marek Roszko 00f2e56e51 IO_BASE must be dllexport/dllimport specified as a base class 2024-09-07 22:37:05 -04:00
Marek Roszko bca77cf54b split legacy DIALOG_BOM to have a header 2024-09-07 22:24:31 -04:00
Marek Roszko fd09ad2a75 Split header for DIALOG_EXPORT_IDF3 2024-09-07 20:01:17 -04:00
Marek Roszko f1fdb5a1d5 Split off header for DIALOG_EXPORT_VRML and rename it from DIALOG_EXPORT_3DFILE 2024-09-07 19:57:19 -04:00
Marek Roszko b8a967441c Split DIALOG_EXPORT_STEP's class def to a header 2024-09-07 19:51:21 -04:00
Marek Roszko fa8d6b7ff2 Split out DIALOG_EXPORT_SVG to a header 2024-09-07 18:29:45 -04:00
Marek Roszko b84ea68086 Split out DIALOG_GEN_FOOTPRINT_POSITION to its own header for re-use 2024-09-07 17:56:44 -04:00
Jeff Young ed268c5701 Report implicit rule minimums as being from the board setup.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18642
2024-09-07 20:52:23 +01:00
Alex Shvartzkop e0291133f2 Import POURED items as zone fills from EasyEDA/LCEDA Pro v2.2+ PCBs.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18664

(cherry picked from commit 6b199c52a1)
2024-09-07 12:24:53 +03:00
Seth Hillbrand 5e0abadb23 Reorganize layer numbering
F_Cu = 0
B_Cu = 2
Remaining internal copper layers are even and incrementing

Non-copper layers are odd and incrementing.

This means that we can no longer do things like:
for( PCB_LAYER_ID layer = F_Cu; layer <= B_Cu; ++layer)
Instead, we have the class LAYER_RANGE:
for( PCB_LAYER_ID layer : LAYER_RANGE( F_Cu, B_Cu) )

Similarly, gt/lt tests should not refer to the integer value of the
layer.  We have functions such as IsCopperLayer to test whether a layer
is copper or not.

When using the connectivity RTree, the third dimension is layer, so we
provide B_Cu with the special INT_MAX value, ensuring that elements
between F_Cu and B_Cu will be identified.  There is a new, special
function GetBoardLayer() for interfacing with CN_ITEMS

Similarly, PNS layers remain unchanged and sequential.  A set of
interface functions is provided to map PNS layers to Board layers and
back.  This allows the PNS_LAYER_RANGE to function as expected
2024-09-06 23:07:58 +00:00
Seth Hillbrand b99a43bec2 Make 3d raytracing a bit more pleasing to watch
The circle out render is a bit tedious
2024-09-06 16:00:49 -07:00
Seth Hillbrand be2a52dd2b Avoid GL ctx deadlock
Allow non-drawing routines to access error messages without dealocking
the load
2024-09-06 16:00:49 -07:00
John Beard 304d9e0006 Pcbnew: Fix aligned dimension flipping
https://gitlab.com/kicad/code/kicad/-/issues/16317
2024-09-06 21:41:40 +01:00
John Beard 9fac24fa0f Pcbnew: set mirrored when creating on back layer
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/18643
2024-09-06 20:56:33 +01:00
John Beard 45bc23a8a5 Pcbnew: keep dimension text aligned when dragging points
This is quite fiddly to do in a way that doesn't have wierd
effects, and is shared between ALIGNED and ORTHOGONAL dimensions,
so break it out to a little helper class that handles the
stored state and fiddling with the geometry.
2024-09-06 20:33:08 +01:00
John Beard 78cb6c1189 SEG: Correct sign in LineDistance 2024-09-06 19:26:58 +01:00
John Beard 537613df22 Pcbnew: Allow lambdas with capture to be used for a selection filter
Using a function pointer limits to only lambdas without captures.
2024-09-06 19:26:57 +01:00
Seth Hillbrand d4d39d3c8b Expunge some boost libs from 3d cache
Boost keeps changing their interface and we don't need to use that SHA
routine anyway.  This replaces it with the murmur3 hash that should be
faster and is kept in-tree

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18653
2024-09-06 10:32:50 -07:00
Seth Hillbrand 538b055c98 Remove ambiguity in MM3_HASH ctor 2024-09-06 10:31:16 -07:00
Seth Hillbrand 5ba50c26a9 Update embedded files hash to use Murmur3
SHA256 is fine for one-offs but for large libraries where we might be
running the hash on hundreds of files, the speed difference is
appreciable.  We don't require crytographic hashing, just a check that
the original file hasn't been corrupted so Murmur3 satisfies our basic
requirement.
2024-09-06 09:57:23 -07:00
Seth Hillbrand 89849ccff1 Catch JSON errors when migrating
Any parsing of the json files can throw, so be sure we are catching the
errors and not crashing

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18655
2024-09-06 09:31:05 -07:00
Seth Hillbrand 3cb9dcb52b Update translations 2024-09-06 09:08:44 -07:00
Hanna Breisand f7a758b825 Translated using Weblate (Swedish)
Currently translated at 99.8% (9511 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-09-06 18:02:14 +02:00
김랑기 d683da536b Translated using Weblate (Korean)
Currently translated at 99.9% (9520 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-09-06 18:02:14 +02:00
Hanna Breisand d8cae0e3f1 Translated using Weblate (Swedish)
Currently translated at 99.8% (9511 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-09-06 18:02:14 +02:00
Wellington Terumi Uemura 84596a09e0 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (9524 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt_BR/
2024-09-06 18:02:14 +02:00
Allan Nordhøy cd37cfa289 Translated using Weblate (Norwegian Bokmål)
Currently translated at 44.8% (4271 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nb_NO/
2024-09-06 18:02:14 +02:00
Hanna Breisand 7d935e8d21 Translated using Weblate (Swedish)
Currently translated at 99.8% (9506 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-09-06 18:02:14 +02:00
Julio Dias 2a1a40266b Translated using Weblate (Portuguese)
Currently translated at 93.5% (8913 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt/
2024-09-06 18:02:14 +02:00
김랑기 02f409fa3d Translated using Weblate (Korean)
Currently translated at 99.9% (9519 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-09-06 18:02:14 +02:00
Hanna Breisand 52fcfef058 Translated using Weblate (Swedish)
Currently translated at 99.6% (9495 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-09-06 18:02:13 +02:00
김랑기 63d5603bd5 Translated using Weblate (Korean)
Currently translated at 96.3% (9179 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-09-06 18:02:13 +02:00
Tokita, Hiroshi a83bf65177 Translated using Weblate (Japanese)
Currently translated at 93.0% (8861 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-09-06 18:02:13 +02:00
Toni Laiho d0944a9a8c Translated using Weblate (Finnish)
Currently translated at 99.9% (9520 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/fi/
2024-09-06 18:02:13 +02:00
Wellington Terumi Uemura 729879acfa Translated using Weblate (Portuguese (Brazil))
Currently translated at 98.7% (9402 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt_BR/
2024-09-06 18:02:13 +02:00
dsa-t 951892c8a5 Translated using Weblate (Russian)
Currently translated at 97.5% (9290 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-09-06 18:02:13 +02:00
Toni Laiho 79e19fdcb8 Translated using Weblate (Finnish)
Currently translated at 99.7% (9500 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/fi/
2024-09-06 18:02:13 +02:00
Jan Straka b0788f16cc Translated using Weblate (Czech)
Currently translated at 79.6% (7586 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/cs/
2024-09-06 18:02:13 +02:00
Henrik Kauhanen 49ec4c4609 Translated using Weblate (Swedish)
Currently translated at 99.6% (9495 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-09-06 18:02:13 +02:00
Pedro Moreira d1df08c4c3 Translated using Weblate (Korean)
Currently translated at 95.5% (9103 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-09-06 18:02:13 +02:00
CloverGit 49a8641708 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.8% (9513 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-09-06 18:02:13 +02:00
Henrik Kauhanen 38639924fa Translated using Weblate (Swedish)
Currently translated at 98.2% (9359 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-09-06 18:02:13 +02:00
Hanna Breisand 1b3d5e22f6 Translated using Weblate (Swedish)
Currently translated at 98.2% (9359 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-09-06 18:02:13 +02:00
Andrej Valek 2a7d25511c Translated using Weblate (Slovak)
Currently translated at 60.3% (5744 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sk/
2024-09-06 18:02:13 +02:00
ZbeeGin 2207926335 Translated using Weblate (Polish)
Currently translated at 100.0% (9524 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-09-06 18:02:12 +02:00
Grzegorz Szymaszek db76f71e06 Translated using Weblate (Polish)
Currently translated at 100.0% (9524 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-09-06 18:02:12 +02:00
Ivan Chuba 7275532eae Translated using Weblate (Ukrainian)
Currently translated at 81.0% (7715 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/uk/
2024-09-06 18:02:12 +02:00
Peter B 2a8d9d6e18 Translated using Weblate (Romanian)
Currently translated at 25.0% (2388 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ro/
2024-09-06 18:02:12 +02:00
CloverGit ac7e144b16 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.8% (9513 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-09-06 18:02:12 +02:00
Hanna Breisand e0c6692fb4 Translated using Weblate (Swedish)
Currently translated at 98.0% (9339 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-09-06 18:02:12 +02:00
Henrik Kauhanen f2dbed99c4 Translated using Weblate (Swedish)
Currently translated at 98.0% (9339 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-09-06 18:02:12 +02:00
Dmitry Mikhirev 7e4d327891 Translated using Weblate (Russian)
Currently translated at 97.5% (9290 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-09-06 18:02:12 +02:00
ZbeeGin 59992737cf Translated using Weblate (Polish)
Currently translated at 98.5% (9389 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-09-06 18:02:12 +02:00
CJ van der Hoeven d9c2277edf Translated using Weblate (Dutch)
Currently translated at 96.9% (9233 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-09-06 18:02:12 +02:00
Karl SCHUH 29d4ca8c68 Translated using Weblate (German)
Currently translated at 98.0% (9342 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-09-06 18:02:12 +02:00
Pferd O fa672c811a Translated using Weblate (German)
Currently translated at 98.0% (9342 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-09-06 18:02:12 +02:00
Ulices b12ccd070c Translated using Weblate (Spanish (Mexico))
Currently translated at 93.3% (8890 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-09-06 18:02:12 +02:00
Wellington Terumi Uemura ebb765b597 Translated using Weblate (Portuguese (Brazil))
Currently translated at 98.0% (9339 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt_BR/
2024-09-06 18:02:12 +02:00
Peter B 88d5f55ddc Translated using Weblate (Romanian)
Currently translated at 25.0% (2387 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ro/
2024-09-06 18:02:11 +02:00
CloverGit f8bfbaadab Translated using Weblate (Chinese (Simplified))
Currently translated at 98.0% (9338 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-09-06 18:02:11 +02:00
Hanna Breisand a2fd13a1ba Translated using Weblate (Swedish)
Currently translated at 98.0% (9338 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-09-06 18:02:11 +02:00
Henrik Kauhanen 1f02533985 Translated using Weblate (Swedish)
Currently translated at 98.0% (9338 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-09-06 18:02:11 +02:00
Marek eb2a0df118 Translated using Weblate (Polish)
Currently translated at 98.0% (9338 of 9524 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-09-06 18:02:11 +02:00
John Beard e024f1695b Fix warning (signed vs unsigned) 2024-09-05 23:29:19 +01:00
Marek Roszko 1cc11bc589 Move the editors launcher to a notebook for future expansion 2024-09-05 20:49:19 -04:00
Jeff Young ca5fb08f62 Ensure thread safety with EDA_PATTERN_MATCH_RELATIONAL. 2024-09-05 17:37:49 +01:00
jean-pierre charras b2be5798cd Fix a typo probably due to a paste command. 2024-09-05 15:59:30 +02:00
Jeff Young a573ecc20e Try plainNumber detection without regEx. 2024-09-05 14:54:46 +01:00
Mike Williams 2c99bc6c6d new feature: Schematic Design Blocks
Added to advanced config, default to off.
EnableDesignBlocks=1 in kicad_advanced to test

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/2263
2024-09-05 08:35:49 -04:00
Jeff Young 43177b7554 More test debug output. 2024-09-05 13:24:55 +01:00
Jeff Young 58954afc41 Fix dumb-ass error in regex. 2024-09-05 12:01:27 +01:00
Jeff Young 8178469182 Fix slightly over-zealous optimisation.
(Also prunes double-matching against plainNumber regex.)
2024-09-05 10:42:56 +01:00
Alex Shvartzkop c1e255c4fe Fix unreachable code warnings on non-OSX. 2024-09-05 06:17:16 +03:00
Alex Shvartzkop 36019314e9 Make simulation reporter warnings non-fatal.
Adds REPORTER::HasMessageOfSeverity for WX_STRING_REPORTER,
which allows us to show simulation warnings and fail only if there's errors.

Also fixes a crash when SPICE_GENERATOR_KIBIS throws an IO_ERROR.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18143
2024-09-05 05:59:35 +03:00
Alex Shvartzkop 16d9fa7f25 Fix compatibility with EasyEDA/LCEDA Pro v2.2.26
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18620
2024-09-05 05:59:35 +03:00
Alex Shvartzkop 660d26e572 Altium PCB import: fix textbox and text placement.
Especially when rotated and/or mirrored.

It's not perfect but it's close enough to being correct.

See https://gitlab.com/kicad/code/kicad/-/issues/18417

(cherry picked from commit bdc371f057)
2024-09-05 05:59:35 +03:00
Alex Shvartzkop 5d8323b69b Altium PCB import: don't add stroke width to text height.
For stroke fonts, KiCad's metrics are very similar to Altium's,
so there's no need to add more height.

(cherry picked from commit dc2dd20ec7)
2024-09-05 05:59:35 +03:00
Alex Shvartzkop 873d56e867 Altium PCB import: don't override text alignment in ConvertTexts6ToEdaTextSettings.
It is set already at callsite, no need to override.

(cherry picked from commit 057174caa0)
2024-09-05 05:59:34 +03:00
Alex Shvartzkop a27475853a Altium PCB import: convert arcs with very small angle to segments.
See mb1791_bdp.zip for example.
2024-09-05 05:59:34 +03:00
Seth Hillbrand 92187e8f7d Import missing checkboxes in board setup
The style checkboxes are stored in the project file but accessible
through BDS.  Be sure to import all displayed fields at once
2024-09-04 13:09:28 -07:00
Seth Hillbrand 6c9980fca0 Leave full path in WS Editor draw list
Truncating the path leads to differences between viewing ${FILEPATH} and
printing/plotting ${FILEPATH}.  The variable does not appear to be used
elsewhere
2024-09-04 12:58:01 -07:00
Jeff Young 94f995c49e Reduce dependency on dynamic_cast.
(Especially where it is no-worky on MacOS.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17245
2024-09-04 17:24:49 +01:00
jean-pierre charras 43ea0d0adb DRC and flipped footprints: better fix than ugly commit 6bc51781
The sorting function used by DRC now also normalize segments.
2024-09-04 09:50:19 +02:00
Seth Hillbrand 3e5ca2ee7a Modify SHAPE_LINE_CHAIN::Simplify() to fix PNS
Issue raised by TomW, points included in new QA test where Simplify was
not properly removing colinear points.

Also removed TestSegmentHitFast() as the speed gains were minimal when
testing against the revised SEG::SquaredDistance routine in
TestSegmentHit()
2024-09-03 17:23:07 -07:00
jean-pierre charras 6bc51781b8 Fix a side effect of commit 513d659c (master) or 55fafe34 (8.0 branch)
This commit modify the order of end points of flipped graphic lines, and
create a DRC issue for flipped footprints (if flipped before this commit).
For segments inside a footprint, the "old" way to flip a segment is now
reused.
Expecting this ugly fix is only temporary.
2024-09-03 16:52:20 +02:00
Marek Roszko 89a3b7baa5 Move some things starting from reporter to kicommon 2024-09-02 21:15:14 -04:00
Jeff Young d2b36cc38d Remove special-case for heat-sink pads.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18453
2024-09-02 12:41:23 +01:00
Jeff Young c7859e7ed7 Clean up (and better comment) referential model handling. 2024-09-02 09:50:31 +01:00
Jeff Young ee77d06be7 Turn off LTspiceXVII/lib/cmp hack.
Now that performance has improved and we process models
one-by-one there's no need to create fallback models for
the (copiously buggy) standard LTspice libs.
2024-09-01 22:14:15 +01:00
Jeff Young baf7c592b9 Select model when loading library. 2024-09-01 22:14:15 +01:00
jean-pierre charras edbe6e997d DIALOG_SELECT_3DMODEL: do not select the first 3D shape on root dir change.
It was especially annoying when selection the project dir: if a 3D step file
was existing, it was loaded just on this dir selection, and could take a while.
2024-09-01 17:03:39 +02:00
Jeff Young 33efd9e0ef Revert single parsing because we use different parsers
for different model types.

Alos fix AKO & SUBCKT model handling, which can't be done
in parallel because they refer to other models.
2024-09-01 10:56:05 +01:00
Jeff Young 1959bacf08 Performance.
Don't parse PEGTL twice, once for modelType and once for
model itself.

Also don't do O(n^2) searches on parameter names when
reading libraries.

And, because it's still too slow, multi-thread it.
2024-08-31 18:51:28 +01:00
jean-pierre charras 8f348820f3 EEschema: fix crash when repeat an item (ins key), due to a null parent
A recent change set the parent member of a item put in the repeat list to
nullptr (this is OK) but the code to copy an item from this list did not
update this parent member.
2024-08-31 18:04:41 +02:00
jean-pierre charras 87cf37c847 wip 2024-08-31 11:38:51 +02:00
jean-pierre charras 19ee73e7f7 STEP exporter: fix some issues:
* do not try to load vrml files for file formats that do not use them
* more tolerant test for step file: search header using up to 3 first lines
instead of only the first line
* dialog export: ensure the file ext is synchronized with the file format
the first time the dialog is opened
* more info messages: now a message is printed if the actual file format of
a 3D file is not recognized
2024-08-31 11:12:12 +02:00
Jeff Young c22eac2fbf Performance.
Saves about 30% of the time to open the sim model
dialog.  Pretty much all the remaining time is in PEGTL,
and that's even with short-circuiting it for most param
values.
2024-08-30 22:49:29 +01:00
Jeff Young ab1c179fa3 ADDED: ease selection of sim model from large libraries.
Replaces drop-down with a filter and a listbox.
2024-08-30 22:49:29 +01:00
JamesJCode e80c595954 Deduplicate hierarchical pins in sync pins dialog
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18623
2024-08-30 19:28:34 +01:00
jean-pierre charras c403b91ab3 PANEL_SETUP_LAYERS_BASE: remove a useless leading space in translatable string 2024-08-30 11:19:28 +02:00
jean-pierre charras b3b7cbcab2 Fix a compil issue on msys2.
atoi() want a string, not a wxString.
2024-08-29 09:20:48 +02:00
Alex Shvartzkop 88272a59b7 Fix MSVC build. 2024-08-29 04:57:13 +03:00
Alex Shvartzkop ebb418f22b Avoid some potential integer overflows in circle.cpp. 2024-08-29 00:35:38 +03:00
Jeff Young 3441861988 Make arrow keys respect grid overrides. 2024-08-28 19:54:23 +01:00
Jeff Young 94f7f073f2 Sort model names so that type-ahead is more useful. 2024-08-28 19:54:23 +01:00
Jeff Young cfb93920ed ADDED: increment annotation.
Pushes the ref des numbers for matching prefixes starting
at a particular annotation.
2024-08-28 19:54:23 +01:00
Jeff Young 4601503660 Even the orphaned net must obey the min board clearance.
(And other Default netclass constraints.)
2024-08-28 19:54:23 +01:00
Seth Hillbrand 86c0aec468 Move zone connection filler out of AC
New algorithm to prevent zone fills that are smaller than the minimum
copper width.
2024-08-28 09:04:51 -07:00
John Beard 00f7ae2a20 Find dialog: 'Words' -> 'Whole words only'
This is the wording used, for example, in LibreOffice.

And add some Alt-hotkeys for the options, in particular:

* Alt-W: word only mode
* Alt-C: case sensitivity

Which (in English at least) is consistent with VS Code and Firefox,
which also allow Alt-hotkey toggling (Kate and Writer don't).
2024-08-28 13:49:36 +01:00
John Beard b043f334de Update font when needed on italic/bold change
When the italic or bold nature is changed, text using outline fonts may
need to change its font. Add this to the SetItalic/SetBold functions.

Also add a counterpart SetItalicFlag function (following SetBoldFlag)
when you only need to set the flag (e.g. when importing or changing
everything in the text properties dialog).

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/18592
2024-08-28 13:49:36 +01:00
John Beard 6167be1e98 QA: Remove duplicate function that exists in qa_utils 2024-08-28 13:49:36 +01:00
John Beard 1fb2d7fe26 Pcbnew: Snap to graphic/track intersections
Relates-To: https://gitlab.com/kicad/code/kicad/-/issues/2329
2024-08-28 13:49:36 +01:00
John Beard 6c5c9fe89a Add a center snap point to rectangles 2024-08-28 13:49:36 +01:00
John Beard 0818ee1770 Pcbnew/FPedit: Add snap anchor type indicators
This allows to see what the current snap point is, which is useful when
zoomed in, or the point is like the corner of a rounded pad where it's
"in free space" and might not be immediately obvious.
2024-08-28 13:49:36 +01:00
John Beard 410e200f80 Newstroke: neaten some Chinese characters.
Many characters have doubled-up or broken
strokes. There are thousands, but fix a few of the most
common ones (e.g. numbers, colours, a few electronic
terms)
2024-08-28 13:49:35 +01:00
John Beard 18aa74a33b Newstroke: Add readable glyphs to character names
This means you don't have to keep referring to a Unicode
table to know which character is where - you can see it in the
list and use the symbol search system.

No change to generated output (such suffixes are stripped by the
fontconv.py script).
2024-08-28 13:49:35 +01:00
John Beard 38daf2e2fa Newstroke: Upgrade symbol library files
This results in much re-ordering and reformatting of the libraries due
to cosmetic changes in the output filter. But there is no graphical
changes.
2024-08-28 13:49:34 +01:00
jean-pierre charras 57ce2ef0bc DIALOG_RULE_AREA_PROPERTIES: cosmetic enhancement: reduce the min dialog size.
Due to some useless sizer constraints, a few empty areas were shown.
2024-08-28 14:44:20 +02:00
Mark Roszko c19aa8170b Revert "Move some things starting from reporter to kicommon"
This reverts commit 3d893254e9
2024-08-28 01:21:40 +00:00
Marek Roszko 3d893254e9 Move some things starting from reporter to kicommon 2024-08-27 20:33:08 -04:00
JamesJCode 222d48d639 Traverse to parent symbol when editing symbol-relevant fields on a pin 2024-08-27 21:36:51 +01:00
Ian McInerney a9e115925a Fix compilation with Boost 1.86
Boost 1.86 removed the boost::random dependency from boost::uuid, so
we need to include those headers on our own now to use the random
mersenne twister implementation.
2024-08-27 11:49:28 +01:00
Seth Hillbrand a22d1c447d Update translations 2024-08-26 14:05:03 -07:00
Ulices fbe067965f Translated using Weblate (Spanish (Mexico))
Currently translated at 94.5% (9018 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-08-26 23:03:46 +02:00
Oliver0804 84cac2e597 Translated using Weblate (Chinese (Traditional))
Currently translated at 97.5% (9305 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-08-26 23:03:45 +02:00
Hanna Breisand 0e04cbf390 Translated using Weblate (Swedish)
Currently translated at 99.9% (9531 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-08-26 23:03:45 +02:00
Balázs Meskó ca7d9a1b4c Translated using Weblate (Hungarian)
Currently translated at 3.5% (339 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/hu/
2024-08-26 23:03:45 +02:00
Lauritz Tieste cc3a24b3ad Translated using Weblate (German)
Currently translated at 100.0% (9539 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-08-26 23:03:45 +02:00
CloverGit f2c980acb1 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (9538 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-08-26 23:03:45 +02:00
YÜKSEL AÇIKGÖZ 92047316e5 Translated using Weblate (Turkish)
Currently translated at 58.6% (5596 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/tr/
2024-08-26 23:03:45 +02:00
CloverGit 376a54071e Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (9538 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-08-26 23:03:45 +02:00
CloverGit 48fcbb299f Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (9538 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-08-26 23:03:45 +02:00
Jan Straka 5e651b3cf7 Translated using Weblate (Czech)
Currently translated at 80.9% (7726 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/cs/
2024-08-26 23:03:45 +02:00
CloverGit 7dcf28d113 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (9538 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-08-26 23:03:45 +02:00
109247019824 1913e0ba9f Translated using Weblate (Bulgarian)
Currently translated at 7.3% (704 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/bg/
2024-08-26 23:03:45 +02:00
Henrik Kauhanen 2b5f43e177 Translated using Weblate (Swedish)
Currently translated at 99.9% (9531 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-08-26 23:03:45 +02:00
Free_squire 2eac432203 Translated using Weblate (Russian)
Currently translated at 99.4% (9490 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-08-26 23:03:45 +02:00
Tokita, Hiroshi ede8d253f0 Translated using Weblate (Japanese)
Currently translated at 94.7% (9040 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-08-26 23:03:45 +02:00
ivit VT d57c533097 Translated using Weblate (Czech)
Currently translated at 80.0% (7639 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/cs/
2024-08-26 23:03:45 +02:00
Ricky From Hong Kong e2e8bd1bd5 Translated using Weblate (Chinese (Traditional))
Currently translated at 97.5% (9304 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-08-26 23:03:44 +02:00
CloverGit 7b17d2ce57 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (9538 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-08-26 23:03:44 +02:00
Ulices cff51b9561 Translated using Weblate (Spanish (Mexico))
Currently translated at 94.2% (8994 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-08-26 23:03:44 +02:00
CloverGit 701b6ec7d4 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (9538 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-08-26 23:03:44 +02:00
Laurens Holst 46d37a24c7 Translated using Weblate (Dutch)
Currently translated at 98.5% (9404 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-08-26 23:03:44 +02:00
Wellington Terumi Uemura 5070794e69 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (9539 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt_BR/
2024-08-26 23:03:44 +02:00
YÜKSEL AÇIKGÖZ 502e92a400 Translated using Weblate (Turkish)
Currently translated at 58.5% (5582 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/tr/
2024-08-26 23:03:44 +02:00
Pferd O 5a56f84d5e Translated using Weblate (German)
Currently translated at 100.0% (9539 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-08-26 23:03:44 +02:00
YÜKSEL AÇIKGÖZ 09a04e1fe8 Translated using Weblate (Turkish)
Currently translated at 56.8% (5423 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/tr/
2024-08-26 23:03:44 +02:00
dsa-t d257bcf165 Translated using Weblate (Russian)
Currently translated at 99.4% (9490 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-08-26 23:03:44 +02:00
Ignas Brašiškis 7aa9bc9cb3 Translated using Weblate (Lithuanian)
Currently translated at 48.0% (4587 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/lt/
2024-08-26 23:03:44 +02:00
Toni Laiho 48b58b98c6 Translated using Weblate (Finnish)
Currently translated at 99.9% (9532 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/fi/
2024-08-26 23:03:44 +02:00
Pferd O 35ef127061 Translated using Weblate (German)
Currently translated at 99.3% (9474 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-08-26 23:03:44 +02:00
ZbeeGin 38b4405411 Translated using Weblate (Polish)
Currently translated at 100.0% (9539 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-08-26 23:03:43 +02:00
Pferd O 827a6caf1b Translated using Weblate (German)
Currently translated at 98.3% (9380 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-08-26 23:03:43 +02:00
CloverGit 07934dcbb7 Translated using Weblate (Chinese (Traditional))
Currently translated at 97.5% (9304 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-08-26 23:03:43 +02:00
Alex Life 46641782ff Translated using Weblate (Russian)
Currently translated at 99.4% (9490 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-08-26 23:03:43 +02:00
tct123 f6283d93fd Translated using Weblate (German)
Currently translated at 98.0% (9356 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-08-26 23:03:43 +02:00
Pferd O 50ab98eabc Translated using Weblate (German)
Currently translated at 98.0% (9356 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-08-26 23:03:43 +02:00
CloverGit 781f248b8e Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (9538 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-08-26 23:03:43 +02:00
CloverGit 89d0c9c764 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (9538 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-08-26 23:03:43 +02:00
gallegonovato 99fad54576 Translated using Weblate (Spanish)
Currently translated at 93.0% (8877 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es/
2024-08-26 23:03:43 +02:00
Pferd O 89f2827278 Translated using Weblate (German)
Currently translated at 98.0% (9352 of 9539 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-08-26 23:03:43 +02:00
jean-pierre charras 513d659ce8 Fix incorrect flip for graphic segments.
For some obscure reason, the end points of segments were swapped.
Note graphic RECTANGLE shapes have still an issue when flipped, but this
is a very different issue.
2024-08-26 19:37:23 +02:00
Dhinesh 11e749ad2b Fixed issue where the final segment of the dashed style was not finishing properly
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18335
2024-08-26 06:54:36 -07:00
Seth Hillbrand 6f3e16382e Protect dynamic_cast dereference 2024-08-26 06:50:44 -07:00
jean-pierre charras ae001d7e19 RENDER_SETTINGS: try a slightly modified dot calculation. 2024-08-25 16:30:08 +02:00
jean-pierre charras 22e39c97fb Fix a compil issue (worked on msys2, but not on other compils) 2024-08-25 15:40:58 +02:00
jean-pierre charras 33647d9c21 EEschema, print: fix incorrect sheet order and uninitialized sheet number
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18594
2024-08-25 15:01:19 +02:00
jean-pierre charras 04a6dca960 RENDER_SETTINGS: fix issue when using dotted lines.
At some levels, these lines (drawn as dots) were not visible.
They are now drawn as short lines.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16757
2024-08-24 20:45:20 +02:00
jean-pierre charras 1f608ec2b0 3D viewer: add option to use board editor copper colors for copper layers.
This is useful to analyze multilayers boards
2024-08-24 10:16:18 +02:00
Jeff Young 5d656e3c8d Even the orphaned net must obey the min board clearance.
(And other Default netclass constraints.)
2024-08-23 21:24:54 -06:00
Jeff Young 53a713a525 Fix typo in boolean logic.
(And we might as well make the intent clearer while we're here.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18574
2024-08-23 20:51:31 -06:00
Jeff Young 64002548a1 Improve default version handling for Custom Rules.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18591
2024-08-23 20:33:06 -06:00
hasecilu b735d25c68 Fix typo: trapazoid -> trapezoid 2024-08-23 11:07:22 -06:00
jean-pierre charras 4ce9648d34 Fix a few minor Coverity and compil warnings. 2024-08-23 09:54:29 +02:00
Jeff Young e5321f7401 Fix broken logic.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18580
2024-08-22 18:57:44 -06:00
Jeff Young 0ec445e7cb Formatting. 2024-08-22 13:44:27 -06:00
Jeff Young b549c4feec Drawing sheet can't share glyph cache entries with editors.
(They use different internal units.)

Also fixes a fialure of CAIRO_GAL to reset the fill
and stroke after drawing outline glyphs.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18579
2024-08-22 12:23:21 -06:00
jean-pierre charras 55e1b6a80e Gerbview: fix arc to segment approximation when drawing Regions (polygons)
The approx was 36 segments per 360 deg. But this is not good for arcs having
A small arc angle and a large radius.
The fix uses a max error (currently 5 microns) to calculate the approximation.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18587
2024-08-22 18:29:43 +02:00
jean-pierre charras 9973f1b306 BOARD::GetBoardPolygonOutlines(): Protect against malformed NPTH pads
In some cases, when modifying a pad (SMD -> NPTH from properties panel, one
can generate a NPTH pad with a zero sized hole. Pcbnew can crash with such a pad,
especially if the 3D viewer is shown during modification.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18585
2024-08-22 11:10:05 +02:00
Seth Hillbrand e0fc7b2b88 Some fixes for DXF import
In order to find elements, we need to have bbox correctly set.  ::min()
for doubles, just gives the smallest positive value.  So negative placed
graphics don't trigger the right bbox and they get nopped out of
existence.

Similarly, following the advice from @msteinbeck, we elevate the degree
of the spline before converting it to beziers in order to properly
represent in KiCad

Fixes https://gitlab.com/kicad/code/kicad/-/issues/11153
2024-08-21 16:24:13 -07:00
Seth Hillbrand bbc3d21a2a Fix some altium library model issues
Altium Circuitmaker doesn't always put a file name with the footprint,
so we take the model file name if the footprint model filename is blank.

Also adjust the correct rotation for the models when embedded into
footprints

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16976
2024-08-21 15:31:57 -07:00
Seth Hillbrand 8516cf6fe0 Prevent assertion on invalid opacities.
Instead, just clamp the value
2024-08-21 15:30:06 -07:00
Dhinesh d9cf5e8278 Draw closer approx to dashed circles/arcs
Segments divided into smaller parts to achieve the curve

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18335
2024-08-21 14:43:46 -07:00
Seth Hillbrand 758a7cbeee Repairs to Altium import
- Correct total layer count in automap function
- Adjust rotation source when mapping embedded models
2024-08-21 14:33:12 -07:00
jean-pierre charras e6f9907246 STEP exporter: fix Z position of 3D shapes.
Previously the Z pos was the position of dielectric body. Now it is the position
of top of copper layers, like in the 3D viewer.
2024-08-21 18:42:15 +02:00
Kamil Galik 0d990932c7 ADDED: Support for 3D Mouse in Footprint Properties 3D Model tab
Fixed https://gitlab.com/kicad/code/kicad/issues/14002
2024-08-21 00:24:08 +00:00
Seth Hillbrand 3478492db3 Optimize library migration
We don't need to re-validate the cache before saving each footprint.
This add a large time sink.  Instead, we only validate to ensure it
exists and then skip future validations while migrating

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18529
2024-08-19 11:51:13 -07:00
Seth Hillbrand 7214ef1f14 Remove basic masking class map_string_utf8
This is just std::map<std::string, UTF8>, using the class just masks
what it is and adds unclear functions.
2024-08-19 11:51:13 -07:00
Jeff Young 424ffa9fc8 More consistency in strings. 2024-08-19 10:44:19 -06:00
Ian McInerney 2190c37cd6 Use appropriate tunning pattern icon in menus for tunning pattern generators 2024-08-19 16:58:05 +01:00
Marek Roszko 9eae3330ca Use std::array for rstring and elems 2024-08-18 22:04:00 -04:00
Marek Roszko b101c1a0c3 Enum class ELEM. 2024-08-18 21:09:37 -04:00
Marek Roszko 58e3c5bb6b Rename Type() to ProjectElementType() for _ELEM children 2024-08-18 20:30:45 -04:00
Jeff Young 7b076482c9 Don't collect footprint shapes twice.
(They're now PCB_SHAPE, so they get collected in the
board's collector.  No need to fetch them again from
their parent footprints.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17027
2024-08-18 17:28:55 -06:00
Jeff Young 535aca7a8d Remove redundant tooltips.
Also fixes grammar and capitalisation in a few tooltips.

Also standardises some terminology, such as
"Add" vs "Draw"/"Place" and "Assignment" vs "Association".

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17694
2024-08-18 17:18:07 -06:00
Jeff Young e6a5669d02 Use ORIGIN_TRANSFORMS in Mover Corner To... dialog.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18479
2024-08-18 13:01:38 -06:00
Jeff Young 01332a2cb5 ADDED: plotting options for DNP footprints
Also removes the plot-fp-refs, plot-fp-values and
plot fp-text overrides from the GUI, but leaves
them as job arguments.

(Note that the job arguments also separate out
sketching DNP graphics and plotting the 'X', which
the GUI does not.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18056
2024-08-18 10:02:14 -06:00
Jon Evans d18d3ea6f4 Silence test debug output by default 2024-08-17 21:14:25 -04:00
Jon Evans 5d5d1210e4 Code style 2024-08-17 21:08:41 -04:00
Marek Roszko eb10d478f2 Fix build conflict with new jobs system 2024-08-17 17:29:45 -04:00
Seth Hillbrand b6c1a3ba63 Move SetLayerSet to const reference
Avoids potential performance inefficiencies
2024-08-17 07:56:30 -07:00
Seth Hillbrand 54a34b2e7d Remove unused cruft 2024-08-17 07:56:30 -07:00
jean-pierre charras f33559ff22 KICAD_MANAGER_FRAME: rename RecreateBaseHToolbar to RecreateBaseLeftToolbar
Since kicad V6, the horizontal toolbar was changed to a vertical toolbar
Calling it HToolbar is going to create mistakes.
No actual code change.
2024-08-17 16:42:45 +02:00
Seth Hillbrand 9f4f3deec5 Don't use std::signbit for ints 2024-08-17 07:39:26 -07:00
Seth Hillbrand fba2b7a04a Modify previous commit to correct logic
We are calculating the same value in two different ways.  If there is an
off-by-one issue in our calculation along axis, this still means that it
was a direct hit on the line as seen in the unit test cases
2024-08-16 17:05:39 -07:00
Lucas Dumont f3bbf2b7bd Kimath: Squared distance can't be negative
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18473
2024-08-16 17:05:39 -07:00
Jeff Young 00bbe4dbc6 ADDED: ERC & DRC checks for footprint matching footprint filters.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6401
2024-08-16 16:31:53 -06:00
Seth Hillbrand ecd27883b6 Update Altium importer to use textbox flag
Textboxes in Altium might have intrinsic borders that don't count in
their text width, so we need to buffer this in KiCad

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18417
2024-08-16 15:03:15 -07:00
Jeff Young a8a4de029e ADDED: filters for Cleanup Tracks and Vias.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9052
2024-08-16 11:56:56 -06:00
jean-pierre charras bcdd4ffea4 pagelayout_editor, properties_frame.cpp: add missing event.Skip()
wxFocusEvent code **must** skip the event after processing it.
2024-08-16 13:14:08 +02:00
jean-pierre charras b7f3842b0e DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS_BASE: add a tool-tip to a wxCheckbox. 2024-08-16 13:14:08 +02:00
Mark Roszko f389390c0c Disconnect events in ~ACTION_TOOLBAR 2024-08-16 11:11:20 +00:00
John Beard f78329e2af Pcbnew: Ensure items are rescued to an enabled layer 2024-08-16 08:30:52 +01:00
John Beard 2befd31fd6 Pcbnew: handle all zone layers when rescuing items 2024-08-16 08:30:52 +01:00
John Beard 1662d7f546 Pcbnew: don't assume zones are in the UiOrder list
This can be false, for example when zones are being rescued,
even if the LSET is non-zero-sized.
2024-08-16 08:30:52 +01:00
Jeff Young 781cb0fb8e Get rid of Drawing Sheet Editor's Apply buttons.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18367
2024-08-15 22:12:11 -06:00
Jeff Young 6b22f86a54 Set current screen's sheet number before rendering.
Any first-page-only items in the drawing sheet will need
the number to be correct.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18317
2024-08-15 21:09:54 -06:00
Jeff Young a484ac0249 Cleanup. 2024-08-15 20:37:08 -06:00
Mark Roszko 869a3ee21f Unbind events in KISTATUSBAR destructor 2024-08-16 02:21:37 +00:00
Mark Roszko 2f7f6c48ca Add missing unbinds to STD_BITMAP_BUTTON 2024-08-16 02:15:31 +00:00
Mark Roszko b34284b110 Add missing unbind to PANEL_KICAD_LAUNCHER 2024-08-16 02:13:13 +00:00
Mark Roszko 62cb5e3130 Disconnect events used in EDA_BASE_FRAME 2024-08-16 02:06:18 +00:00
Mark Roszko 1dd5dd2289 Don't see horizontal layout on the vertical toolbar
Wild glitching on arm64 Windows revealed this was set, lol.
2024-08-16 02:02:44 +00:00
Jon Evans 0a816ce079 Fix PNS log viewer after c39551b032 2024-08-15 22:02:01 -04:00
Mark Roszko 6641183d09 Undo errant bind removal 2024-08-16 01:55:54 +00:00
Mark Roszko 46771a2470 Unbind the char events in KICAD_MANAGER_FRAME destructor 2024-08-16 01:51:27 +00:00
Mark Roszko d783e0d4c0 unbind/disconnect in PROJECT_TREE_PANE destructor 2024-08-16 01:44:45 +00:00
Mark Roszko 64977cbcc8 Unbind BITMAP_BUTTON events during destruct 2024-08-16 01:40:54 +00:00
Jeff Young cbfd6ec9ea CHANGED: remove single layer restriction for uvias.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18501
2024-08-15 16:42:57 -06:00
JamesJCode 3f2b6f7ae0 PNS: Update track widths during routing
This allows routing through, for example, neck downs defined
based on courtyard DRC rules
2024-08-15 21:59:22 +01:00
JamesJCode c39551b032 PNS: Check for nearest segment anchor for initial track constraints 2024-08-15 21:45:34 +01:00
JamesJCode 364f6d4213 PNS: Use correct diff pair width / gap settings when starting route 2024-08-15 19:50:48 +01:00
Jeff Young e3d4137521 Fix some contrast and update issues with sim cursors.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18390
2024-08-15 12:29:59 -06:00
Jeff Young 15d266f9a8 Cleanup and formatting. 2024-08-15 12:29:59 -06:00
JamesJCode 67b9170146 PNS: Include net when querying DRC for initial track width 2024-08-15 09:07:56 +01:00
Jeff Young 67a0253c66 m_filter is subtractive, and so must be run for each term
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18181
2024-08-14 21:22:39 -06:00
Jeff Young 5894aeebb8 Fix inversion of Y axis.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18505
2024-08-14 21:22:16 -06:00
Seth Hillbrand e683d21829 Actually search for power fields
Need to process search strings in the power tab, not just find the power
symbols

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18494
2024-08-14 15:15:58 -07:00
Jeff Young 79ec93da4c Ensure that EDA_PATTERN_MATCH_RELATIONAL is thread-safe.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18548
2024-08-14 15:46:25 -06:00
JamesJCode 013fa4824b Report track clearance constraint from DRC rule if >= board minimum 2024-08-14 22:10:39 +01:00
JamesJCode a6a62b1be5 Use correct track width constraint when starting PNS from footprint 2024-08-14 22:04:26 +01:00
Jeff Young 8cc9f766d6 Report when we don't know what a file is.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18467
2024-08-14 15:03:18 -06:00
JamesJCode 72a0c41e3d Correctly handle track clearance constraints in router 2024-08-14 21:21:19 +01:00
Seth Hillbrand a724b3d8b1 Handle DXF files with out of bounds values
First, ensure that we calculate the bbox of the imported elements.

If the total BBOX is outside our allowed value, refused to import.  This
needs to be scaled or addressed in an external editor

If the bbox fits, then make sure that we clamp it such that the largest
element is still within our bounds

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18523
2024-08-14 13:06:18 -07:00
JamesJCode 41ff744f1e Update message panel when placing a via with interactive router 2024-08-14 17:37:11 +01:00
John Beard c7fa61cd94 GTK: Enable IME cancellation on canvas focus
This means that it doesn't start consuming hotkeys for
IME composition in the main canvas on Linux.

Text boxes in dialogs and the property manager, for example,
still receive IME composition.

Relates-To: https://gitlab.com/kicad/code/kicad/-/issues/9882
2024-08-14 14:28:54 +01:00
John Beard 889aee3b1a Newstroke: add CMake targets to manage the files 2024-08-14 14:28:54 +01:00
John Beard 1ea5671228 Newstroke: replace font.pro with a new project that shows all codepoints
It also has all the libraries as project libraries for easier opening.
2024-08-14 14:28:54 +01:00
Kacper Słomiński e6bcc6d0a6 Fix build issue with experimental GCC version 15.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18539
2024-08-14 07:34:18 -04:00
jean-pierre charras 2500d5066a Fp chooser: fix filter by pin count (incorrect count) with multi unit part
Previously, the pin count was the unit pin count, that is incorrect to select
a footprint. the symbol pin count is now used.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/
2024-08-14 13:13:29 +02:00
John Beard 5b772dde13 QA: Use modern Boost test print customisation point
Since Boost 1.64, you can use the boost_test_print_type
customisation point to provide test printing for types.
Move all test printing functions to this, and scrap the
fiddly Boost version handling to deal with older Boosts
(KiCad is now at minver 1.71).
2024-08-14 11:24:26 +01:00
John Beard 27c0c7e0e9 QA: Remove old Boost testing polyfills (<1.64)
These are all now provided by the current KiCad minimum Boost version
of 1.71.
2024-08-14 11:24:26 +01:00
Jeff Young 7c4fe35589 Don't presume CreatePin/RepeatPin() return something.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18540
2024-08-13 20:13:01 -06:00
Jeff Young 417f3638a3 Don't mess up current zoom when switching sheets. 2024-08-13 20:13:01 -06:00
Jeff Young 22d37f6c34 Set sheetpath for ERCE_MISSING_UNIT errors.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18445
2024-08-13 20:13:01 -06:00
Alex Shvartzkop 7e281eebdf Fix build errors and warnings related to multichannel tool. 2024-08-14 04:44:08 +03:00
Alex Shvartzkop 881d0184bb Parse more Altium data related to Text6. 2024-08-14 04:16:41 +03:00
JamesJCode 00f89ae28e Respect system dark / light theme if common settings not available 2024-08-14 01:15:46 +01:00
Tomasz Wlostowski bec7148593 pcbnew: remove debugging printf() 2024-08-14 00:09:32 +02:00
Tomasz Wlostowski ca8d5df9f6 multichannel: allow selecting entire groups as RAs + throw an error in Repeat Layout when there's single RA in the project 2024-08-14 00:09:32 +02:00
Tomasz Wlostowski 8ba0d7d193 multichannel: wx UI fixes 2024-08-14 00:09:32 +02:00
Tomasz Wlostowski 792845b550 multichannel: added unrouted version of the demo project 2024-08-14 00:09:32 +02:00
Tomasz Wlostowski 1a503a1d91 MULTICHANNEL_TOOL: post-rebase fixes 2024-08-14 00:09:32 +02:00
Tomasz Wlostowski 882ac4f3b5 qa: refactor MC tests to use new topo_match 2024-08-14 00:09:32 +02:00
Tomasz Wlostowski 6c5d5075a4 pcbnew: MC tool shalt not commit twice 2024-08-14 00:09:32 +02:00
Tomasz Wlostowski c3e621bb69 qa: added test layout for the MULTICHANNEL_TOOL 2024-08-14 00:09:31 +02:00
Tomasz Wlostowski e8711fb06d pcbnew: fix backtracking & net cluster integrity check in the topological matching algorighm 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski f942a43d74 pcbnew: fix compile error in ZONES_CONTAINER::OnUserConfirmChange() 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski d29babfafe multichannel: fix grouping 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski 54e5632a42 multichannel: put MC tool behind an ADVANCED_CFG flag 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski b84da7be02 multichannel: conditional rule area expression property 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski ae44a7ed3c multichannel: move to wxLogTrace, grouping wip 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski 37399fba42 multichannel: fix dialog sizing 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski 72912f1013 qa: basic testsuite for the MULTICHANNEL_TOOL 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski 0057e8b1d3 pcbnew: refactor topology matching algorithm and move it to the connectivity subsystem 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski 9963b9dd9f TOOL_INTERACTIVE: only create the context menu when we are running in GUI mode
TOOL_MENU::m_menu was unconditionally created by the TOOL_INTERACTIVE constructor, resulting in crashes if
we wanted to run the TOOLs in headless  mode, e.g. in unit tests. This commits makes
the creation of the menu object dependent on Pgm::IsGui().
2024-08-13 22:50:26 +02:00
Tomasz Wlostowski 145f26dd1e pcbnew: fix post-rebase errors 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski a4936964e2 pcbnew: fix rebase issue in BOARD_COMMIT 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski 60ba72ad5c pcbnew: distinguish between KEEPOUT and PLACEMENT rule areas in the DRC (ignore PLACEMENT for the moment) 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski c4d5c99b42 pcbnew: more checks for rule area type (keepout/placement) in various zone-related code 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski ebc9bd62bc pcbnew: first flip, then rotate (flip seems to reset orientation) the footprints in multichannel tool 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski f60017903f demos: demo project for the MULTICHANNEL_TOOL 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski 6e84d665ed pcbnew: clean-up and partial de-auto-ization of MULTICHANNEL_TOOL 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski d37bdfbfe8 pcbnew: default arguments for the constructor of PCBEXPR_CONTEXT 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski ad66ea60df pcbnew: moved the multichannel tools into Tools menu 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski 99d53647e8 pcbnew: improvements in the heuristics of the MULTICHANNEL_TOOL topology matching algo. 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski 7315d8e47b common: COMMIT now throws an assertion if an item is added/deleted multiple times 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski 628d4d3fdb pcbnew: weeding out bugs in the MULTICHANNEL_TOOL... 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski c790a17aae pcbnew: add rule area type as an introspectable property 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski a27d529cbc pcbnew: performance improvements & grouping bugfixes in multichannel tool 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski 49f470f0a6 pcbnew: fixes in the logic of multichannel tool dialogs 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski 9b671d3448 pcbnew: first working version of the Repeat Layout feature (MULTICHANNEL_TOOL) 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski c617b0d3b1 pcbnew: implement logic of Repeat Layout dialog 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski 048bbcb02b BOARD_COMMIT: allow to make PCB-editor specific commits outside the actual pcbnew
Useful for testing pcbnew's tools without building the actual pcbnew.
2024-08-13 22:50:26 +02:00
Tomasz Wlostowski c3b57f9f02 pcbnew: add MULTICHANNEL_TOOL files to CMakeLists 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski b236e3a9ab pcbnew: menu entries for the MULTICHANNEL_TOOL 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski 689ba39581 pcbnew: register the MULTICHANNEL_TOOL in the tool manager. 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski 4347ae1270 router: ignore the newly introduced placement rule areas, just focus on keepouts for the moment. 2024-08-13 22:50:26 +02:00
Tomasz Wlostowski d34bcc8f08 PCB_ACTIONS: add actions for MULTICHANNEL_TOOL 2024-08-13 22:50:25 +02:00
Tomasz Wlostowski 43c8ecd77f PCB_TOOL_BASE: allow casting the frame to types other than PCB_BASE_DRAW_FRAME.
This is useful when testing pcbnew's TOOLs outside the real pcbnew window (example: P&S log viewer/playground), as
with the default cast, all of pcbnew UI would have to be linked in for the tests to build.
2024-08-13 22:50:25 +02:00
Tomasz Wlostowski 31111b2652 pcbnew: initial implementation of MULTICHANNEL_TOOL. Ugly and buggy. 2024-08-13 22:50:25 +02:00
Tomasz Wlostowski 1105ab755c pcbnew: initial versions of dialogs for the MULTICHANNEL_TOOL 2024-08-13 22:50:25 +02:00
Tomasz Wlostowski 8f25491a1d DIALOG_RULE_AREA_PROPERTIES: support for placement rule areas:
- radio box for selecting between "Keepout" and "Placement" rule type
- optional scintilla control for inputting the Placement query/filter expression
2024-08-13 22:50:25 +02:00
Tomasz Wlostowski e35f64c3cf pcbnew: parse also the human readable hierarchical sheet paths for footprints when reading the netlist
We've had so far the chain of UUIDs, but for the ease of use in the DRC language (i.e. memberOfSheet),
a human-readable path is also useful. No file format changes.
2024-08-13 22:50:25 +02:00
Tomasz Wlostowski 46b54da139 pcbnew: BuildConnectivity() must remove any dangling RN_NET pointers when rebuilding connectivity data from scratch to avoid use-after-free crashes 2024-08-13 22:50:25 +02:00
Tomasz Wlostowski 7b784a5986 common: update PCB file format keyword with placement rule areas 2024-08-13 22:50:25 +02:00
Tomasz Wlostowski 64afa302c9 pcbnew: improve handling of trailing '/' in hierarchical sheet paths in DRC memberOfSheet() function 2024-08-13 22:50:25 +02:00
Tomasz Wlostowski cb4b26b39b pcbnew: file format support for placement rule areas
Added:
- "placement" tag to denote placement Rule Areas
- "expr" tag for providing the filtering expression
2024-08-13 22:50:25 +02:00
Tomasz Wlostowski 05fc8199dc pcbnew: added Placement Rule Area properties to class ZONE:
- RuleAreaType: distinction between Keepout and Placement rule areas
- RuleAreaExpression: custom DRC language expression for assigning components for Placement rules
2024-08-13 22:50:25 +02:00
Tomasz Wlostowski 8bb4dce288 pcbnew: initial commit for MULTICHANNEL_TOOL, wip in dialogs & tool actions 2024-08-13 22:50:25 +02:00
JamesJCode ca2f96fc07 Add configurable thickness and opacity for net color highlighting 2024-08-13 21:15:15 +01:00
jean-pierre charras 8d53090581 Pcbnew: fix 2 issues after removing a track, especially ending on a teardrop
- Message panel display not always correctly updated (shows an old data)
- Incorrect updated ratsnest is some cases when removing a track ending on
a teardrop.
2024-08-13 19:54:09 +02:00
John Beard 67b6ba33d3 Pcbnew/FPedit: Make orthogonal dimensions the default
Aligned (free-angle) dimensions are much less common than
H/V ones in most PCB fab drawings and footprint drawings.
2024-08-13 08:36:10 +01:00
John Beard f2d2e953f7 Fix clang warning (need virtual dtor) 2024-08-13 08:36:10 +01:00
Jeff Young 8a487c2c86 Fix missing parameter.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18530
2024-08-12 20:31:46 -06:00
JamesJCode 19d5d21f23 Move netclass highlighting style to application-level setting
Also includes bugfix whereby wires, junctions, and bus entries
were not subject to override of local colors.
2024-08-12 23:52:01 +01:00
JamesJCode 8b412e5df4 Fix exception when opening application schematic color settings panel 2024-08-12 22:52:16 +01:00
JamesJCode ea482e8d15 Revert NET_SETTING schema increment 2024-08-12 22:40:12 +01:00
Jeff Young 528b74db7f Improve PIN_TRICKS to handle pins with no names.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18535
2024-08-12 15:18:59 -06:00
JamesJCode 6371b15aa4 Implement highlighting style for netclass colors 2024-08-12 21:39:07 +01:00
JamesJCode d95901d981 Fix import netclass colors to PCB for new default netclass position 2024-08-12 19:53:36 +01:00
JamesJCode 0aa82b9a04 Correctly handle read-only fields for default netclass 2024-08-12 18:13:02 +01:00
Jon Evans 4332618e68 Fix uninitialized member 2024-08-12 08:27:24 -04:00
Jeff Young 522c2b9e7e Only update UnusedPads properties when it matters.
(Note that this is only for the Remove Unused Pads dialog, not the property inspector or pad properties or via properties dialogs.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18454
2024-08-11 22:16:23 -06:00
Jeff Young f89ba38b66 ADDED: importing text vars from Schematic Setup.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18465
2024-08-11 19:33:15 -06:00
Jeff Young a6eec63688 ADDED: importing bus aliases from Schematic Setup.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18465
2024-08-11 19:33:15 -06:00
Jon Evans bd946313dc ADDED: Position items relative to arbitrary reference point
Fixes https://gitlab.com/kicad/code/kicad/-/issues/4756
2024-08-11 18:59:26 -04:00
Jon Evans c9af2f318f Ensure constraints when changing pad hole properties
Also expose hole shape to properties system

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17575
2024-08-11 18:10:15 -04:00
Jeff Young 014a2a49e1 Make dialog modified state work in Pad Properties. 2024-08-11 12:45:36 -06:00
Jeff Young f4b635e551 ADDED: annular rings setting to Edit Track & Via Properties. 2024-08-11 12:45:36 -06:00
Jeff Young 04d3779a5a Minor fixes to dialog layout. 2024-08-11 12:45:36 -06:00
Jeff Young 5ad8f0e387 Better OnModify() handling for Symbol Fields Table. 2024-08-11 12:45:36 -06:00
Jeff Young 0e536663a6 Elide common prefixes of displayed netnames.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18438
2024-08-11 12:45:36 -06:00
Jeff Young 3b6a33c59a Fill in a lot more calls to DIALOG_SHIM::OnModify().
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18443
2024-08-11 12:45:36 -06:00
Jon Evans 960a9ef7d5 Fixes for snapping in free via placer
Support snapping to graphics at all
Don't skip snapping to pads with no net
Treat placing vias as placing tracks for magnetic settings

Fixes https://gitlab.com/kicad/code/kicad/-/issues/9024
2024-08-11 08:52:18 -04:00
Wayne Stambaugh aace2271df Add '?' to list of forbidden file name characters. 2024-08-11 07:09:28 -04:00
jean-pierre charras ffe6abb836 string_utils.cpp: add missing char * in illegalFileNameChars list. 2024-08-11 09:33:12 +02:00
Jon Evans 2b126bbfad Add net name defaults to classic theme 2024-08-10 21:48:37 -04:00
Jon Evans 94c094b3cc ADDED: support for net name labels in color themes
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16873
2024-08-10 21:46:06 -04:00
Alex Shvartzkop 35c5c0c4d7 Fix an off-by-one error in DXF unicode control code parsing.
See https://gitlab.com/kicad/code/kicad/-/issues/18524
2024-08-10 02:50:33 +03:00
Alex Shvartzkop 37fb792411 DXF import: scale text size too inside scaled blocks.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18525
2024-08-10 02:39:12 +03:00
Alex Shvartzkop c3bf894d81 Use wide char to satisfy macOS build. 2024-08-10 02:15:27 +03:00
Alex Shvartzkop 7d7ddcf3a1 Support \U control code in DXF MText content.
See https://gitlab.com/kicad/code/kicad/-/issues/18524
2024-08-10 02:10:57 +03:00
Wayne Stambaugh 0cf1110367 Fix missing schematic symbol instance data.
This fix adds missing symbol instance data that defaults the instance
data to no annotation which will will trigger a annotation request on
any operations that require a fully annotated schematic.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18486
2024-08-09 18:55:23 -04:00
Alex Shvartzkop 55b3ef2ff2 Improve DXF MText content import.
Support more than 250 characters, improve control codes conversion.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18524
2024-08-10 01:26:04 +03:00
Alex Shvartzkop 8e4f6889d5 Use standard types instead of GL types in 3D raytracing renderer. 2024-08-09 21:26:37 +03:00
Seth Hillbrand 094d265313 Re-enable grid snap line
This was accidentally disabled by 4039b7da6b
2024-08-08 14:29:27 -07:00
John Beard 7fc367e688 Pcbnew: Add dogbone corner tool
This adds circular arcs in corners to allow for the router
cutter radius when routing a slot or corner that receives
a sharp corner.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/18512
2024-08-07 23:01:32 -06:00
Wayne Stambaugh b6734c42f0 Fix CLI PCB drill export when output path does not end with path separator.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/14438
2024-08-07 15:37:40 -04:00
jean-pierre charras 6c083b9ee2 DIALOG_LIB_SYMBOL_PROPERTIES: minor fix: ensure it is set as modified when
the Symbol Name field is modified
2024-08-07 21:15:30 +02:00
John Beard d933ed964e Move LAYER_PRESENTATION to widgets/
Since this is code used by widgets for UI presentation purposes.

Also saves some unnexessary includes in headers.
2024-08-07 06:49:53 +08:00
John Beard 0c3ac40bb6 LAYER_PAIR doesn't need a comparison
This upsets the Windows build and isn't needed as there's no
container used that needs the operator.
2024-08-07 06:13:24 +08:00
Alex Shvartzkop 371a1b711f Fix some warnings. 2024-08-07 00:51:24 +03:00
John Beard c989a7ba83 Don't use layer pair in common code 2024-08-07 05:42:18 +08:00
Wayne Stambaugh d75c3d5791 Fix a build error on Linux.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18503
2024-08-06 16:20:40 -04:00
John Beard 24c3102638 Add layer pair cycle action
This is the second piece of the layer pair preset quick
switcher that allows a action (i.e. hotkey) to cycle between
the enabled preset layer pairs.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/15227
2024-08-06 23:45:55 +08:00
John Beard edf13bdfd0 Add a layer pair preset list
This will later be used for a quick switcher UI. This commit
adds the data structures, set-up UI and project file persistance.

Relates-To: https://gitlab.com/kicad/code/kicad/-/issues/15227
2024-08-06 23:45:55 +08:00
John Beard db457f52fa Move layer presentation logic to a separate class
The separates it from the LAYER_SELECTOR class - deciding
what color a layer is (say) is separate to managing the
actual selection of the layer. For example, sel_layer.cpp
only needs the presentation logic. This also makes it eaiser
to compose rather than inherit.

Additonally, break out the layer pair swatch function
to this class.

This will also be needed by the layer pair manager UI.

Relates-To: https://gitlab.com/kicad/code/kicad/-/issues/15227
2024-08-06 23:45:55 +08:00
John Beard 15924958d9 Add wxGrid autosizer helper
This moves a fiddly little bit of logic used by a few UI
classes into a central location.

Also means that the paths dialog learns to expand the
first cell when it needs to (like the text variable
panel).
2024-08-06 23:45:55 +08:00
jean-pierre charras a4ba7ec6ec 3E viewer: fix incorrect custom pad shape in some cases.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18495
2024-08-06 13:48:56 +02:00
jean-pierre charras 91ad3d2a08 Pcbnew, Migrate libraries: do not stop migration when a footprint cannot be converted.
- Especially, in altium library migration, just skip not exportable footprints
- Display a list of skipped footprints (using a HTML Reporter)
2024-08-05 20:19:07 +02:00
jean-pierre charras 3eb18d5434 PCB_IO_GEDA: fix broken function GetEnumeratedFootprint().
The code was old and not updated to actual io code.
Just removed to use the generic code.
2024-08-05 20:19:07 +02:00
Wayne Stambaugh 73bcaec10a Respect default schematic text size setting when creating text box.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18484
2024-08-05 14:00:19 -04:00
jean-pierre charras b20b7abc54 pcb_io_eagle.cpp: try to fix incorrect position of imported mirrored texts.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18489
2024-08-04 11:07:51 +02:00
JamesJCode 03e388be80 Hold weak reference to NET_SETTINGS in CONNECTIVITY_DATA 2024-08-04 09:03:03 +01:00
Jon Evans 3c799875d8 Remember new STEP export settings across dialog openings 2024-08-03 22:08:57 -04:00
Jon Evans 7349d79096 ADDED: Component filter for STEP export
Also refactor to avoid duplication of settings

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18290
2024-08-03 21:56:48 -04:00
jean-pierre charras 4091eda7dc Gerbview: minor fix: Show a warning if the deprecated %IPNEG% is found in file.
%IPNEG% is deprecated since 2012 and ignored by Gerbview. However it is better
to warn the user this command is found and ignored.
2024-08-03 18:19:58 +02:00
qu1ck ff15506d53 Fix LSEQ exports in swig
Need to keep it correctly inherited from BASE_SEQ to
be able to iterate over it and have index access
2024-08-03 16:13:59 +00:00
jean-pierre charras bf45a91c6f DIALOG_TEXT_PROPERTIES: minor enhancement.
Do not show the "Update thickness" button for fonts having no thickness param.
2024-08-03 16:42:17 +02:00
jean-pierre charras 430f1d6a2a DIALOG_TEXT_PROPERTIES: enhancement: add button to set text thickness to best value
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18483
2024-08-01 20:03:44 +02:00
jean-pierre charras efc9db55e8 Demos update 2024-08-01 18:50:04 +02:00
Jeff Young 937854c577 Make target length sticky within a session.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18109
2024-08-01 14:34:59 +01:00
Mark Roszko a7d493a6a5 Fix python find directly on arm64 windows 2024-07-31 17:45:25 -04:00
jean-pierre charras 8a7451c674 DIALOG_SIM_MODEL: fix a focus issue. Update to lastest wxFormBuilder version. 2024-07-31 16:07:42 +02:00
jean-pierre charras 2b81d3a93c PANEL_SETUP_MASK_AND_PASTE_BASE: add tool tips and cosmetic enhancements
No actual code change.
2024-07-30 18:24:40 +02:00
jean-pierre charras dde1b31ef7 DIALOG_BOARD_STATISTICS: do not take in account edge.Cuts items thickness
To define the physical board size, graphic items thickness has no matter.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18470
2024-07-30 16:35:19 +02:00
JamesJCode 3a007b8dd7 Remove group_matched token from DRC skew rule
This is the default behaviour anyway
2024-07-30 14:41:06 +01:00
jean-pierre charras 5705400094 DRC test: Fix missing filter of DRCE_OVERLAPPING_FOOTPRINTS test.
When the DRCE_OVERLAPPING_FOOTPRINTS tests were disabled, the markers were
still created, because the code that created them did not test if the
DRCE_OVERLAPPING_FOOTPRINTS drc test is enabled or not.
2024-07-30 12:44:58 +02:00
jean-pierre charras e130780238 Demo update 2024-07-29 18:37:13 +02:00
JamesJCode 5187ea721d Implement within_diff_pairs and group_matched DRC skew arguments
Enables DRC to calculate skew based on new arguments to skew
constraint DRC clauses:

Using (group_matched): calculate skew across all matching nets
Using (within_diff_pairs): calculate skew within every diff pair
   found within the matching nets

Additionally fixes DRC skew calculation to calculate skew relative
to the longest net in the skew check set (in line with PNS meander
placer calculations).
2024-07-29 15:28:39 +01:00
jean-pierre charras a7634e57b5 pcbnew: fix a bug when pasting a footprint (after a copy command)
The paste code removed items managed by the footprint when they are not on
an enabled layer.
This is a bug: all items must be kept in the parent footprint.
This is the only one command that tried to remove such items.
Other commands (Ctrl+D, load Footprint and read netlist) do not delete any item
2024-07-28 19:58:28 +02:00
jean-pierre charras 393f1c1ad2 DIALOG_FOOTPRINT_CHOOSER: fix some min sizes to avoid not visible widgets. 2024-07-28 12:28:27 +02:00
Alex Shvartzkop 377b9aa859 Fix warning: 'const' qualifier on return type has no effect. 2024-07-28 03:34:17 +03:00
James J 7ce00e511b Multi-netclass support 2024-07-26 20:49:29 +00:00
Seth Hillbrand 483d8cd084 Second try to fix MacOS build 2024-07-26 15:52:50 +02:00
Seth Hillbrand c0d8d87364 Cleanup GetClampedCoords
Previous function would drop some KiROUND calls due to inability to
parse the () operator.  Using the _v template gets the constexpr check,
allowing us to avoid the conditional while running
2024-07-25 21:06:04 +02:00
Seth Hillbrand 368d98ef9e Add optional quiet param to KiRound 2024-07-25 21:05:49 +02:00
Seth Hillbrand 69849ba3ca Replace custom Clamp with std::clamp
Fixes bug in parser that had the elements in the wrong order due to our
custom version not matching the standard order
2024-07-25 19:17:17 +02:00
Seth Hillbrand 3f3505570a Additional fixes for MacOS clang
Apparently they do not support the double reference capture, so we just
pass the pointer reference by value
2024-07-25 16:08:55 +02:00
Seth Hillbrand 1be2d7f8b7 Optimize SEG::SquaredDistance
We don't actually need the closest point to figure out the distance.
Since this calculation is used everywhere, we see some non-negligible
gains by picking the length along the projection
2024-07-25 05:21:06 +02:00
jean-pierre charras 329efdb2e7 French translation update 2024-07-24 20:40:09 +02:00
Mark Roszko 94a28346d2 Update macOS-CI.yml 2024-07-24 16:57:05 +00:00
Mark Roszko 775c5b9f35 Update Windows-CI.yml 2024-07-24 16:56:48 +00:00
Seth Hillbrand 433677fc21 Replace std::lexicographical_compare_three_way
On platforms that don't yet support the std:: version, we implement our
own, possibly slower, version of the 3-way compare
2024-07-24 18:03:29 +02:00
Mark Roszko 6bdafca1f0 Remove nuget from windows ci 2024-07-24 15:35:08 +00:00
Jeff Young f6c723ba37 Text is a single-click-place.
Also, don't run normal undo code when in the middle of
placing an item.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18366
2024-07-24 13:51:09 +01:00
Lucas Dumont 1e663268ac Don't copy filled zone from Zone Manager
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18362
2024-07-23 19:02:17 +00:00
Alex Shvartzkop 5f5e54f3d8 Fix QA for 60-bit LSET. 2024-07-23 21:50:04 +03:00
Jeff Young 431087fc7c Don't deadlock when adding rows. 2024-07-23 17:49:34 +01:00
Jeff Young 51792fc5ea ERCE_UNRESOLVE_VARIABLE also needs child-of-symbol handling.
(If it's generated in a SCH_FIELD or SCH_TEXT of a symbol,
we won't have a persistent KIID to store in the exclusion
record.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18319
2024-07-23 10:53:40 +01:00
Jeff Young 0f099ac65e Use lock when clearing and loading libTables.
Also make sure it's re-indexed after loading.
2024-07-23 09:53:01 +00:00
Alex Shvartzkop e2bd76bdce Fix OOB access in LSET when opening a PCB file or updating from schematic.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18422
2024-07-23 01:41:01 +03:00
JamesJCode 559854ec0f Add ERC check for dangling wire endpoints 2024-07-22 23:16:08 +01:00
JamesJCode b4c365b464 Fix build error due to incomplete case statement 2024-07-22 22:27:19 +01:00
Jeff Young 87ee56b582 Allow deleting text item out of parent footprint in PCB editor.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18425
2024-07-22 20:22:00 +01:00
Jeff Young 7ca84091b6 Formatting. 2024-07-22 20:06:47 +01:00
Jeff Young dab3972165 Clear fields when flag is set.
Also make sure we set aUpdated when deleting extra
text items or fields, and when updating fabrication
attributes or 3D models.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17756
2024-07-22 17:15:21 +01:00
Jeff Young 1f0ce80f49 Don't commit properties if we're in a drawing operation.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18018
2024-07-22 16:28:25 +01:00
Jeff Young 32808b6cb7 Don't snap to anchors if they're turned off.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18158
2024-07-22 13:21:29 +01:00
Jeff Young b8c1305ec4 Don't renumber pads from invisible or dimmed layers.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18354
2024-07-22 13:21:29 +01:00
Jeff Young 30be2d3fd5 Don't fetch anchors from invisible or dimmed layers. 2024-07-22 13:21:29 +01:00
Jeff Young 5686600192 Formatting. 2024-07-22 13:21:29 +01:00
Jeff Young fcb104694b Avoid cover types. 2024-07-22 13:21:29 +01:00
Jeff Young 6053113a8b Fix some lingering usages of old "Module" terminology. 2024-07-22 13:21:29 +01:00
dsa-t fbdf3dafaa Hide notification panel on focus loss.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17295


(cherry picked from commit 7e115249af)

Co-authored-by: Alex Shvartzkop <dudesuchamazing@gmail.com>
2024-07-22 10:35:19 +00:00
JamesJCode 96977d44d9 Add ERC check for local and global labels with same name
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9461
2024-07-21 23:45:02 +01:00
Jon Evans 5120a3bd82 Fix incorrect lambda capture 2024-07-21 17:29:24 -04:00
Jeff Young 4480b6c512 ADDED: textvar for reference without unit.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18426
2024-07-21 21:35:00 +01:00
Jeff Young 958df855eb Secondary commit for "fixes" statement.
Fixes KICAD-6S1
2024-07-21 21:27:23 +01:00
Jeff Young c378e6f690 Remove asserts for valid states.
(A pin won't have a connection until after the connection
graph has been rebuilt.)

KICAD-6S1
2024-07-21 19:00:41 +01:00
Jeff Young ae777bf0d5 Fix logic error. 2024-07-21 19:00:41 +01:00
Jon Evans 53cade3661 Move via width storage into PADSTACK 2024-07-21 13:55:03 -04:00
Jeff Young 4352d45386 Fix compiler warning. 2024-07-21 17:44:07 +01:00
Jeff Young 9f041a21e9 De-obfuscate code. 2024-07-21 17:44:07 +01:00
Jeff Young d5c7ac5065 Fix scoping of lock. 2024-07-21 17:44:07 +01:00
John Beard 1325de3d0d Pcbnew: allow escaping from viewport/layer preset switcher
This allows the user to hit escape while the control key is
still pressed to cancel the switch (e.g. if they realise there
isn't a preset they actually want), rahter than having to go
back to the original entry, or select one they didn't want
and then switch again.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/18423
2024-07-21 22:41:36 +08:00
Seth Hillbrand 21900ad3e1 Maintain std::move to avoid copy penalty
Caching lib models is a slow point when loading libraries when many
footprints have embedded models.  We want to speed this by not copying
data unneccesarily.  Some compilers will invalidate the models structure
right-to-left in the function call (the order is unspecified by the
standard), leading to broken model names unless we cache the name before
hand.
2024-07-21 07:23:00 -07:00
Jon Evans d89af1118e Try again at fixing CacheLibModels 2024-07-21 09:56:10 -04:00
John Beard 634b54cf8e SCH_FIELD: handle rotation of centre-justified fields
The case of centre-justified fields was just not handled
in SCH_FIELD::Rotate.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/18421
2024-07-21 21:27:59 +08:00
Jeff Young c8e8545e47 Slight increase to round-off error tolerance.
(It's now 2nm, which is still significantly below the
clearance DRC epsilon of 500nm.  It's also what we
already use in EDA_SHAPE.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18399
2024-07-21 13:14:47 +01:00
Jeff Young 1833330e5c Fix uninitialized variable. 2024-07-21 13:14:47 +01:00
Jeff Young 6c698a06f2 Commenting. 2024-07-21 13:14:47 +01:00
Jeff Young 17415772cd Fix potential buffer overruns due to mis-sized constant. 2024-07-21 13:14:47 +01:00
Jon Evans 96ab76c6ea Make sure map key stays valid after a move 2024-07-21 00:27:33 -04:00
Mark Roszko 4448c98918 Update 2 files
- /vcpkg.json
- /vcpkg-configuration.json
2024-07-21 01:18:43 +00:00
Jeff Young 22321c93f0 Save visible columns to correct settings.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18352
2024-07-20 23:25:36 +01:00
Jeff Young 8ae111bd82 Formatting. 2024-07-20 23:25:36 +01:00
Jon Evans 284a760af7 Move more properties into PADSTACK 2024-07-20 17:48:20 -04:00
Seth Hillbrand 6ed537753c Avoid losing the last point when simplifying
line chains that are not closed should avoid simplifying between
beginning and end points.  Make sure that we keep the finishing point
for these chains

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

(cherry picked from commit b71eb1186f)
2024-07-20 13:03:44 -07:00
Jeff Young 756445dd19 Fix missing From_UTF8().
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18406
2024-07-20 20:46:15 +01:00
Jeff Young 3833922c35 Support Body Style changes in context menus.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18416
2024-07-20 20:39:45 +01:00
Jeff Young 80168b9d6b Sync other unit props when updating from prop manager.
Also removes the Exclude from Simulation property from
the list of things we sync.  Someone may not want to sim
a triode's heaters unit, for instance.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18415
2024-07-20 16:02:51 +01:00
Jeff Young b8819b4636 Another reduction in asserts. 2024-07-19 22:11:56 +01:00
jean-pierre charras 7cad4f5639 DIALOG_CLEANUP_TRACKS_AND_VIAS: add option to skip zone refilling 2024-07-19 20:29:47 +02:00
Alex Shvartzkop 63eac0382c Add bounds checking when slicing SHAPE_LINE_CHAIN from the middle of the last arc.
(and said arc is the last shape in the chain)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18391
2024-07-19 01:56:44 +03:00
Alex Shvartzkop 0e4ed5a032 QA: add another test case for SHAPE_LINE_CHAIN::Slice.
This causes it to break on MSVC Release as well.

See https://gitlab.com/kicad/code/kicad/-/issues/18391
2024-07-19 01:13:49 +03:00
Alex Shvartzkop 0b06ed987e QA: add two more tests for SHAPE_LINE_CHAIN::Slice.
"Case 9: Start at middle of a 2nd arc, finish at end" should throw a fatal assert in Debug.

See https://gitlab.com/kicad/code/kicad/-/issues/18391
2024-07-19 00:06:38 +03:00
Mark Roszko 723fa57b84 Add swig4.2 for linux platforms find 2024-07-18 18:01:38 +00:00
Jeff Young 9fcbd4e6d0 Slight reduction in asserts. 2024-07-18 18:01:05 +01:00
Jon Evans 58a2159fa9 Support SWIG 4.1 2024-07-18 08:56:43 -04:00
jean-pierre charras 35650d3573 Eeschema: fix De Morgan attribute not preserved in schematics after reload
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18395
2024-07-18 10:45:12 +02:00
jean-pierre charras 5ce6060012 Demos update 2024-07-18 08:07:16 +02:00
Seth Hillbrand a13df1ec28 Fix broken rebase 2024-07-17 15:20:29 -07:00
Jon Evans 1d307d4429 Fix build on Ubuntu 22 2024-07-17 15:19:33 -07:00
Seth Hillbrand 6182069c0c Fix shadowing 2024-07-17 15:19:32 -07:00
Jon Evans c66f862a39 Quiet a warning 2024-07-17 18:17:17 -04:00
Jon Evans 3437a2f497 Fix Ubuntu 22, again 2024-07-17 18:17:09 -04:00
Alex Shvartzkop 17f44c0dc1 Fix some warnings and improve memory layout. 2024-07-17 23:20:32 +03:00
Seth Hillbrand d0292c39fc Fixes for MSVC 2024-07-17 11:41:13 -07:00
Seth Hillbrand 7ecde84a94 Move LSET to new BASE_SET class
Next step in large layer refactoring.  Added multiple unit tests as well
to check behavior
2024-07-17 10:32:09 -07:00
Seth Hillbrand ae458d0421 Decrease error severity for Altium imports
These are not errors that end users can do anything about.  Keep them
around for developer debugging if we want to see more imformation but
don't pop up error messages on the user's screen
2024-07-17 10:32:09 -07:00
jean-pierre charras 10085941fc layer_ids.i: fix a missing include that broke footprint wizards. 2024-07-17 14:16:28 +02:00
Mark Roszko 5f63e1dec5 Fix build error on windows 2024-07-17 11:50:41 +00:00
Seth Hillbrand 5db4d10c86 Add some LSET QA 2024-07-16 18:11:29 -07:00
Seth Hillbrand 535ed165a6 Add BASE_SET class 2024-07-16 17:52:32 -07:00
Seth Hillbrand 16f41a832c Fix issue with model parsing
Sometimes we don't get the data elements in order.  Use the stream name
to ensure we have the correct model.

Also give the parser a bit more memory to work with, avoiding unneeded
resizes
2024-07-16 17:39:49 -07:00
Seth Hillbrand c093fe1355 Simplify LSEQ
Remove unneeded operators and index
2024-07-16 14:48:33 -07:00
Seth Hillbrand b38357a5ea Fix potentially incorrect libid when using save as
If you use save as into a different library and change the symbol name
while overwriting an existing symbol, the libid didn't get updated,
leading to an error message when trying to load the newly saved symbol.
2024-07-16 11:30:48 -07:00
Seth Hillbrand 8219ccf721 Update translations 2024-07-16 11:01:14 -07:00
boromyr 5ce48e4c21 Translated using Weblate (Italian)
Currently translated at 93.5% (8893 of 9509 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/it/
2024-07-16 20:00:01 +02:00
Pferd O aaa9b41392 Translated using Weblate (German)
Currently translated at 98.3% (9352 of 9509 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-07-16 20:00:01 +02:00
CloverGit 0aac1aeaee Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (9508 of 9509 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-07-16 20:00:00 +02:00
Jan Straka f4133dd1ed Translated using Weblate (Czech)
Currently translated at 79.6% (7573 of 9509 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/cs/
2024-07-16 20:00:00 +02:00
CloverGit b31282e1af Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (9508 of 9509 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-07-16 20:00:00 +02:00
Toni Laiho 92d3994d28 Translated using Weblate (Finnish)
Currently translated at 99.4% (9456 of 9509 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/fi/
2024-07-16 20:00:00 +02:00
Wellington Terumi Uemura bee81db8b9 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (9509 of 9509 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt_BR/
2024-07-16 20:00:00 +02:00
CloverGit 0dfb823729 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (9504 of 9509 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-07-16 20:00:00 +02:00
dsa-t 6eee95b98e Translated using Weblate (Russian)
Currently translated at 99.8% (9493 of 9509 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-07-16 20:00:00 +02:00
JamesJCode 90304e0639 Remove unnecessary erase of netclasses from netclass map
We start from an empty map now, so no need to delete entries
individually
2024-07-16 18:43:49 +01:00
JamesJCode 84c0453ca9 Check for >= 2 filenames when comparing backup archives on close
Fixes a vector out-of-bounds error
2024-07-16 18:33:14 +01:00
Seth Hillbrand 0f84ddaf39 Avoid throwing a spurious substitution warnings
If the original font is a bold singleton (not a mod on a face), then we
need to avoid the mismatch between the bold marker and the asked-for
boldness.

At the end, if the font name is the same within case differences, then
it is the same font and we should not warn
2024-07-16 09:28:07 -07:00
Seth Hillbrand aa01eebac4 Fix paste for schematic editor
When pasting text in the schematic editor, the sheet does not have a
valid schematic parent but the screen does. This is required to properly
assign fonts to the text
2024-07-16 08:23:08 -07:00
Jon Evans 062db51f24 Fix build on Ubuntu 22 2024-07-15 21:58:48 -04:00
Marek Roszko c16d078b8c Fix conflict with windows header define thats leaking in
GetTempFileName is a windows header define unforunately and the big boi header is leaking in somehow
2024-07-15 20:22:33 -04:00
Marek Roszko 3097798a95 Use ${ZSTD_LIBRARY} instead of zstd as link target.
The find module is old school
2024-07-15 20:19:02 -04:00
Marek Roszko c1315b164e Bump vcpkg for patched wx 3.2.5 for gdi leak 2024-07-15 20:04:02 -04:00
Mark Roszko ad2e98111b Update file vcpkg.json 2024-07-15 23:46:43 +00:00
Seth Hillbrand 77797103f7 Add ability to embed files in various elements
Schematics, symbols, boards and footprints all get the ability to store
files inside their file structures.  File lookups now have a
kicad-embed:// URI to allow various parts of KiCad to refer to files
stored in this manner.

kicad-embed://datasheet.pdf references the file named "datasheet.pdf"
embedded in the document.  Embeds are allowed in schematics, boards,
symbols and footprints.  Currently supported embeddings are Datasheets,
3D Models and drawingsheets

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

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

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17827
2024-07-15 16:06:55 -07:00
Seth Hillbrand 8d0c629f37 Fix inches/mm confusion in idf export 2024-07-15 15:54:40 -07:00
JamesJCode 924b027503 Resolve netclasses on vector buses embedded in buses
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16545
2024-07-15 20:40:46 +01:00
Alex Shvartzkop 77eb197a21 Fix build on GCC 14.1.1. 2024-07-15 13:38:34 +03:00
Alex Shvartzkop 349f3cc064 Pin protobuf in vcpkg due to incompatibility with libabseil_dll.dll in Release. 2024-07-14 21:54:08 +03:00
jean-pierre charras 3bacfacf95 Ensure non handled text properties are never written in .kicad_pcb files
ctl_flags.h: fix two duplicate flag values.
2024-07-14 20:45:40 +02:00
jean-pierre charras a075a80b3c Move all CTL_OMIT_xxx flags definitions into a new file ctl_flags.h
Previously, they were defined in different files, and sometimes redefined.
This change should not create an actual code change.
However, this move shows there are the same value used for different flags,
so another fix should be made later.
2024-07-14 18:10:37 +02:00
jean-pierre charras f2d32b64d6 Pcbnew, Properties panel: mask 2 properties irrelevant for pcb fields.
Color and Hyperlink properties have no meaning for pcb fields, but if set
created unreadable .kicad_pcb files.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18368
2024-07-14 11:49:27 +02:00
jean-pierre charras bff81a3d40 SCH_IO_KICAD_SEXPR_PARSER::parseSchRuleArea() ensure the outline area is closed
When a poly-line is actually a closed shape (a polygon) the SetClosed(true) property
must be called for this poly-line.
2024-07-14 10:38:00 +02:00
jean-pierre charras d933a8d6a9 Fix minor compil warnings 2024-07-12 12:43:49 +02:00
jean-pierre charras eb5530eadf Demos update. 2024-07-12 08:52:19 +02:00
Mark Roszko fb0d927022 Move vcpkg baseline forwards 2024-07-11 23:37:44 +00:00
CraftedNightmare ee78f3bf5b Changed ERC Label caps check to check Power Symbols
Power symbols are implicit labels in KiCad, so we should check for their
caps difference against other power symbols as well as against other
labels

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16897
2024-07-11 18:45:35 +00:00
Seth Hillbrand ffe496abf3 Cleanup !1322 for Project Backup
Do conservative check for time offset before making the expensive
backup.  Don't clear and re-check the file list for a single file change
2024-07-11 10:48:13 -07:00
Harry Best cc5fb60d93 CHANGED: Backup project only when different
Makes a test backup file and compares to the existing zip file backup to
see if the files have changed since it was made.  If so, the new file is
kept.  If not, we discard the new file and continue

Fixes https://gitlab.com/kicad/code/kicad/-/issues/12453
2024-07-11 10:48:13 -07:00
Alexander Rauth 9177e62718 correct polygon area calculation
When calculating a part of the polygon area and thus ending the polygon
at the specified vertex aEnd we  need to calculate and add the area below
the needed additional line from "aEnd" to "this" to close the resulting
partial polygon. As in this case VERTEX* p references "aEnd" after exiting
the do-while loop the correction  term in the if-statement was always
evaluated to zero. Change "aEnd" to "this" in the correction term.
2024-07-11 10:09:54 -07:00
Seth Hillbrand cb0c4a830c Update translations 2024-07-11 09:41:44 -07:00
dsa-t 1835053767 Translated using Weblate (Russian)
Currently translated at 100.0% (9495 of 9495 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-07-11 18:40:38 +02:00
CloverGit 29efaed765 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (9494 of 9495 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-07-11 18:40:38 +02:00
alevtina-karashokova 0ff5f5ef86 Translated using Weblate (Russian)
Currently translated at 100.0% (9495 of 9495 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-07-11 18:40:38 +02:00
Toni Laiho 92a0febdd9 Translated using Weblate (Finnish)
Currently translated at 99.5% (9457 of 9495 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/fi/
2024-07-11 18:40:38 +02:00
Pferd O b75fede769 Translated using Weblate (German)
Currently translated at 98.4% (9350 of 9495 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-07-11 18:40:38 +02:00
alevtina-karashokova 1aa03b7ba2 Translated using Weblate (Russian)
Currently translated at 99.6% (9461 of 9495 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-07-11 18:40:38 +02:00
alevtina-karashokova 103df08b05 Translated using Weblate (Russian)
Currently translated at 99.6% (9461 of 9495 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-07-11 18:40:38 +02:00
dsa-t 1cd49273b5 Translated using Weblate (Russian)
Currently translated at 99.6% (9461 of 9495 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-07-11 18:40:38 +02:00
aris-kimi 07267aaa64 Translated using Weblate (Greek)
Currently translated at 96.3% (9152 of 9495 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/el/
2024-07-11 18:40:38 +02:00
Pferd O 35a6390d99 Translated using Weblate (German)
Currently translated at 98.4% (9350 of 9495 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-07-11 18:40:38 +02:00
Seth Hillbrand a99bf7a9b4 Translated using Weblate (German)
Currently translated at 98.4% (9350 of 9495 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-07-11 18:40:38 +02:00
Seth Hillbrand 77b1d367df Fixup copper connection wires
Use better check for ears, avoiding fracture points.
Be careful when insterting spikes to avoid changing indices for future
polys
2024-07-10 21:48:37 -07:00
Seth Hillbrand 845130ba9e ADDED: pcbnew fill avoids kissing fills
Previously, fills could end up just barely touching, leading to DRC
errors even if there was enough room to fill the remaining space.  This
was due to how we shrink/expand the zones to remove small features.  By
adding a zero-width line between points that should be connected, we
expand back to the correct width.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/14130
2024-07-10 18:34:41 -07:00
Seth Hillbrand 17b0dabec3 Remove the now unused curve-point count
With the refactor of the bezier lib, we no longer base the curve on the
number of points but rather on the error allowed.  The parameter was
vestigal and had no effect on output
2024-07-10 11:19:09 -07:00
Jeff Young 080761c85e Fix side-effect from algo change.
(I also discovered that we were computing the intersection
twice, so I fixed that too.)
2024-07-10 18:55:07 +01:00
Seth Hillbrand 3df7b1baa3 Update max recursiondepth default per @jeffyoung 2024-07-10 08:29:55 -07:00
Seth Hillbrand e8f3545423 Update max recursiondepth default per @jeffyoung 2024-07-10 08:29:15 -07:00
Jeff Young c3dfa672e1 Apply a bit more tension to teardrop shapes.
This also simplifies the algorithm a bit.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17017
2024-07-10 15:02:25 +01:00
Jeff Young 05d77c6a7d Minor readability improvement. 2024-07-10 15:02:25 +01:00
Jeff Young 62fc18d22e Allow teardrops on custom-shaped pads.
They work OK in a lot of circumstances.  Where the don't
work, the user can turn them off.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17565
2024-07-10 15:02:25 +01:00
John Beard bb100994a7 Eeschema: swap label rotations (and include fields)
This means that labels keep the position relative
to what they are connected to after the swap.

An attempt is made to map the fields of a label
into the position of a matching field (i.e. same name)
on the swapped-to label.

Move the SCH_FIELD rotation justification
handling to the SCH_FIELD class, so it's not just
SCH_LABEL that handles it.

https://gitlab.com/kicad/code/kicad/-/issues/18303
2024-07-10 21:37:27 +08:00
aris-kimi 6969b9d64f Open library file preselected in the file explorer for both symbol and footprint editors. 2024-07-10 06:14:04 +00:00
Seth Hillbrand 3ebca155a6 Fix missing copperCount dec
Was accidentally removed in LSET cleanup
2024-07-09 21:10:01 -07:00
Seth Hillbrand fba3b36f04 Correct pad connections for 45° circular
When calculating the pad bbox, we need to only account for deflation of
zone min width.  Additionally, when calculating spokes for roughly
circular elements, we don't need to go to the bbox corners, so special
case it to rotate after the fact

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18329
2024-07-09 17:08:00 -07:00
JamesJCode c05dd18613 Don't reset sheet / screen file names if cancelling repeat insert
in recursive state

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18199
2024-07-09 20:27:01 +01:00
Seth Hillbrand 3a8a5bb378 Convert courtyards with error allowance
We convert arcs/circles to polygons with an allowable error.  This means
that the segments might end up being closer than we expect and we should
allow for this deviation when checking courtyards

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18347
2024-07-09 12:10:53 -07:00
Seth Hillbrand 6f285066e4 Simplify spoke generation
Sin/Cos are pre-caclulated for all multiples of 45° so we don't need to
short circuit them here.  Calculating the bbox intersection point allows
us to pick spoke sizes that are not overly large so as to miss the hit
point testing in the associated fill areas.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18329
2024-07-09 17:44:03 +00:00
Jeff Young 556efd836b Fix RecombinePad when pad is rotated.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18348
2024-07-09 18:14:14 +01:00
Seth Hillbrand f05698202a Add multiple wires ERC to panel 2024-07-09 10:09:57 -07:00
Seth Hillbrand 4431246cbe ADDED: ERC Test for labels on multiple wires
When a label overlaps two or more wires, it is not clear which one it
should connect to.  This is an ERC warning

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18346
2024-07-09 10:06:27 -07:00
Jeff Young bfecb7891c ADDED: --use-drill-origin arg to export DXF. 2024-07-09 17:41:34 +01:00
Mathieu Pilato c8aa3f21aa Fix measurement format not saved when modified
Always update stored measurements name / format when updating measurement
2024-07-09 16:39:36 +00:00
Mathieu Pilato 75141da53a Move default format inside SPICE_VALUE_FORMAT
This ensures that the default format is the same, however the measurements are added
2024-07-09 16:39:36 +00:00
Mathieu Pilato a5b7c65d7a Fix spice errors when rerunning a simulation with measurements
Mark the simulation as not finished before starting it, preventing measurements from being requested
from spice right before simulation starts
2024-07-09 16:39:36 +00:00
Mathieu Pilato 98b4a58059 Clear measurement grid while changing tab
Prevent a tab change while editing measurement from impacting measurements of target tab
2024-07-09 16:39:36 +00:00
Mathieu Pilato c6e8838178 Fix measurements not being loaded with workbook
onPlotChanging() was overwriting loaded measurements. Do not read grid from onPlotChanging().

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18326
2024-07-09 16:39:36 +00:00
Mathieu Pilato 414ac2b83c Increase default measurement precision to 3 digits 2024-07-09 16:39:36 +00:00
Seth Hillbrand 0e1f7bceb4 Fix some copy-pasta 2024-07-09 09:35:55 -07:00
Seth Hillbrand dab9580acd Fix a crash when adding wires in Schematic Editor
Not all UNDO_REDO items have screens associated with them.  We only care
about items that are added, changed or removed.  The others are
modifications to libedit, origins, page settings, groupings or the
repeat flag
2024-07-09 09:30:50 -07:00
jean-pierre charras b29ee85b4a DIALOG_ZONE_MANAGER_BASE: update code to last wxFormbuilder version.
- remove specific windows IDs (use wxID_ANY everywhere) to avoid any conflict
- add tool-tips
- update also PANEL_ZONE_PROPERTIES_BASE
- should not create any actual change.
2024-07-09 14:02:51 +02:00
JamesJCode 230c297691 Fix tuning pattern moves and undo / redo 2024-07-09 12:09:31 +01:00
Lucas Dumont 535a270e19 Add preview for zone in Zone Manager
Rename the "Apply" button into "Update displayed zones" and prevent
some segfault when cancelling the changes made in the zone manager.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17418
2024-07-09 08:28:54 +00:00
Lucas Dumont 0420930d0d Revert "Save change made in zone manager when apply"
This reverts commit 4f9d0daeef.
2024-07-09 08:28:54 +00:00
Seth Hillbrand e0453d9bcc Further cleanup of LSET
Remove duplicative functions.  Standardize on C++ stdlib formatting
2024-07-08 22:00:53 -07:00
Seth Hillbrand 0c99f77158 Fix overzealous replace 2024-07-08 21:59:54 -07:00
Seth Hillbrand cc850d0da0 Split out LSEQ/LSET from LAYER_ID
Separate the layer grouping classes for easier modification
2024-07-08 20:59:46 -07:00
Seth Hillbrand 293075426b Clean up some LSEQ functions
We are derived from std::vector now.  We don't need our own prima donna
increment and dereference overload as these just create bloat and
non-standard coding practices
2024-07-08 20:59:46 -07:00
Maciej Suminski 5ad5be0924 Text variable resolving in footprint text boxes
Mostly a code copy from PCB_TEXT::GetShownText() to
PCB_TEXTBOX::GetShownText().
2024-07-08 23:47:16 +00:00
Seth Hillbrand b1093f1daf Fix some signed/unsigned comparisons 2024-07-08 13:38:11 -07:00
Seth Hillbrand 14ccadd2a9 Handled unconnected nets
These nets may have only a single element in them (no connections), so
be sure to leave the node even without Features

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18293
2024-07-08 13:15:14 -07:00
Jeff Young 02a08bf9b1 ADDED: RMB > Copy item for HTML_WINDOW.
(Used at least in Footprint and Symbol Chooser details
panes.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17904
2024-07-08 20:55:08 +01:00
Jeff Young b9ebd3304b Fix copy/pasta. 2024-07-08 19:42:52 +01:00
Jeff Young dccd3d9c43 Fix CLion rename screw-up. 2024-07-08 19:40:53 +01:00
Seth Hillbrand c899556534 Update translations 2024-07-08 09:55:43 -07:00
Wellington Terumi Uemura ef911c9dcd Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (9500 of 9500 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt_BR/
2024-07-08 18:53:27 +02:00
alevtina-karashokova 77082af567 Translated using Weblate (Russian)
Currently translated at 100.0% (9500 of 9500 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-07-08 18:53:27 +02:00
aris-kimi 49f4f4830c Translated using Weblate (Greek)
Currently translated at 96.6% (9177 of 9500 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/el/
2024-07-08 18:53:27 +02:00
Ulices 1269cb87eb Translated using Weblate (Spanish (Mexico))
Currently translated at 94.8% (9006 of 9500 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-07-08 18:53:27 +02:00
CloverGit b715bdf5b3 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (9499 of 9500 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-07-08 18:53:27 +02:00
Henrik Kauhanen 8f8bb62a78 Translated using Weblate (Swedish)
Currently translated at 99.8% (9488 of 9500 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-07-08 18:53:27 +02:00
alevtina-karashokova 69947d7eb3 Translated using Weblate (Russian)
Currently translated at 98.9% (9402 of 9500 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-07-08 18:53:27 +02:00
CloverGit 1d26d47540 Translated using Weblate (Chinese (Simplified))
Currently translated at 98.8% (9388 of 9500 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-07-08 18:53:27 +02:00
ZbeeGin 41e362aadd Translated using Weblate (Polish)
Currently translated at 100.0% (9500 of 9500 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-07-08 18:53:27 +02:00
Laurens Holst 59795eee03 Translated using Weblate (Dutch)
Currently translated at 99.2% (9427 of 9500 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-07-08 18:53:27 +02:00
Seth Hillbrand ab2a9e3b90 Translated using Weblate (German)
Currently translated at 98.5% (9361 of 9500 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-07-08 18:53:27 +02:00
Marco Ciampa a0759a4d30 Translated using Weblate (Italian)
Currently translated at 93.7% (8907 of 9500 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/it/
2024-07-08 18:53:27 +02:00
Bahtiyar Bayram 21bba173e8 Translated using Weblate (Turkish)
Currently translated at 55.0% (5230 of 9500 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/tr/
2024-07-08 18:53:27 +02:00
dsa-t 2b7f25200c Translated using Weblate (Russian)
Currently translated at 95.1% (9035 of 9500 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-07-08 18:53:27 +02:00
ZbeeGin d1474b728d Translated using Weblate (Polish)
Currently translated at 99.0% (9409 of 9500 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-07-08 18:53:27 +02:00
Arnau Llovet Vidal bf266f1c52 Translated using Weblate (Catalan)
Currently translated at 45.2% (4294 of 9500 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ca/
2024-07-08 18:53:26 +02:00
Jeff Young 5c22162d85 EEschema polylines aren't closed.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18262
2024-07-08 14:27:25 +01:00
Jeff Young 0682987eb9 Cleanup atrophied code. 2024-07-08 14:27:25 +01:00
JamesJCode 36c33e1ad4 Call board listeners after updating connectivity
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18277
(for v9)
2024-07-07 22:46:37 +01:00
Jeff Young f6031da58c ADDED: RMB-menu for Copy in inspectors.
Includes Inspect > Resolve Clearance, Inspect > Resolve
Constraints and everything else that uses WX_HTML_REPORT_BOX.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18321
2024-07-07 22:41:15 +01:00
Jeff Young 86a8bc3a1f Improved error message. 2024-07-07 22:21:22 +01:00
Jeff Young 22947c840d Start with origin for a single-item selection.
(For better or worse, that's what the dialog says it will do.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/15945
2024-07-07 18:02:58 +01:00
Jeff Young 5c71d26b25 Regularise spacing with number badges. 2024-07-07 14:34:24 +01:00
Jeff Young 8b948e7b9c Give padstack warning violation a name.
Also regularises capitalisation & parens in some error
messages.

Also de-duplicates hole testing for PTH pads, and SMD
rationality testing.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18334
2024-07-07 14:04:34 +01:00
Jeff Young e9d376c912 Don't attempt to rename field more than once.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18330
2024-07-07 11:55:45 +01:00
jean-pierre charras 1f18cc8e0e FOOTPRINT_EDITOR_CONTROL::OpenWithTextEditor() fix issues (crash)
Can be see only if kicad_advanced contains EnableLibWithText=1
- Capture table->FindRow() IO_ERROR exception. Especially, a exception is
thrown when the selected footprint is managed by the project Table
- Ensure unicode chars are handled.
2024-07-06 18:40:48 +02:00
Lucas Dumont 4f9d0daeef Save change made in zone manager when apply
When clicking on "apply" in the zone manager, the change made should be saved the same way that it's saved when clicking on the "ok" button.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17159
2024-07-06 15:06:20 +00:00
jean-pierre charras 01a0f80dfb sch_io/kicad_legacy/sch_io_kicad_legacy_lib_cache.cpp: fix broken lib file.
SCH_IO_KICAD_LEGACY_LIB_CACHE::savePin() created a broken string due to changes
in code (pin_type.h) in commit 352463df

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18342
2024-07-06 10:32:14 +02:00
jean-pierre charras 5a96eb979a Fix a minor compil warning 2024-07-06 10:24:37 +02:00
Seth Hillbrand 5332d44bad Fix some textbox imports
We still don't know why some Altiums seem to save 0s for the textbox
size when dealing with text strings and some still save values.  There
must be another flag to differentiate between text strings and text
boxes but we haven't found it yet.  But until then, we still need to
link the correct string with the textbox that we generate and suppress
the border
2024-07-05 22:11:26 -07:00
Seth Hillbrand 92dd986ba2 Avoid overflow 2024-07-05 22:09:53 -07:00
Seth Hillbrand c0bf866c58 Speed up shutdown
When shutting down, we shouldn't need to do a lot of things like
resyncing the PNS world multiple times that can really slow down the
process
2024-07-05 11:16:20 -07:00
Seth Hillbrand ae5678f3f6 Allow recovery after error in asan 2024-07-05 11:16:20 -07:00
Alex Shvartzkop a1b4e09cec Don't limit ngspice netlist lines to 1024 bytes.
Otherwise the loop just makes infinite 1-byte allocations
and keeps appending \n.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18338
2024-07-05 06:55:46 +03:00
Alex Shvartzkop cabf7d4878 IPC_API: fix crash in PLUGIN_AVAILABILITY_CHANGED event handler (schematic)
Re-opening SCH while the PCB is open leads to crash.

Same as 441b2686d3, but for schematic editor.
2024-07-05 02:26:57 +03:00
Jeff Young b2aee0bf74 Test for GTK layers panel layout. 2024-07-04 23:55:52 +01:00
Alex Shvartzkop cc96de29e6 Add mutex include. 2024-07-04 23:08:22 +03:00
Alex Shvartzkop 0a53fc41a7 Shut down curl operations before global cleanup.
Fixes KICAD-7DP
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17103
2024-07-04 22:33:59 +03:00
Jeff Young 5b81c60b9e Improve user-layer-side-matching algorithm. 2024-07-04 15:06:28 +01:00
Jeff Young 994094b726 Fix spacing on GTK. 2024-07-04 13:32:30 +01:00
Alex Shvartzkop 5b2ea411f8 Improve alignment of KiCad 16/24/32 px icons. 2024-07-03 23:02:36 +03:00
Alex Shvartzkop 70296107b4 Use std::set::contains instead of alg::contains in UpdateTeardrops.
(-356 ms on https://gitlab.com/kicad/code/kicad/-/issues/18148 when placing)
2024-07-03 21:24:49 +03:00
Alex Shvartzkop e2b5f4559e Send data to correct sch port when changing selection in PCB editor.
Not that cross-probing works like this though.
But this prevents the UpdateAllLayersColor call.
(-356 ms in https://gitlab.com/kicad/code/kicad/-/issues/18148)
2024-07-03 21:07:49 +03:00
jean-pierre charras 2ec9383c6c DIALOG_USER_DEFINED_SIGNALS: workaround to solve an issue on Windows.
See: https://gitlab.com/kicad/code/kicad/-/issues/15837
This is not a fix, but a workaround to make this dialog usable on Windows.
Without this workaround, it is barely possible to edit a user signal name.
The root cause needs to be fixed.
2024-07-03 19:53:25 +02:00
Alex Shvartzkop a866c46d3b Store VIEW_ITEM index to avoid std::find in removal.
-280 ms on https://gitlab.com/kicad/code/kicad/-/issues/18148
2024-07-03 20:32:37 +03:00
Alex Shvartzkop 45a447060f Fix crash on Undo in schematic editor. 2024-07-03 20:20:51 +03:00
Alex Shvartzkop 340c84c54a Allow leaving nullptr values in VIEW::m_allItems, then defragmenting later when removing items.
Gives -1 s performance boost when reverting a commit.
2024-07-03 16:27:03 +00:00
Alex Shvartzkop 8532e1f9ec Optimize optimizeZoneToZoneAnchors.
Only do tests between 3 polygon pairs with closest bbox centers.
Only do tests between 5 parts of line chain pairs with closest bbox centers.

Gets OptimizeRNEdges down to 350 ms

See https://gitlab.com/kicad/code/kicad/-/issues/18148
2024-07-03 16:27:03 +00:00
Alex Shvartzkop e9ece8266b Checking flags instead of copying is faster in RN_NET::NearestBicoloredPair.
Partially reverts 87171f53c7
2024-07-03 16:27:03 +00:00
Alex Shvartzkop 8d7c60eb3e Create STATUS_TEXT_POPUP on demand when moving PCB items.
So we don't have to spend 115 ms destroying it.
2024-07-03 16:27:03 +00:00
Jeff Young b719f9e89e Fix spelling. 2024-07-03 17:20:26 +01:00
Alex Shvartzkop a0bc8283d3 Show/hide scrollbars earlier to reduce flickering. 2024-07-03 16:57:21 +03:00
Jeff Young 9d03a92738 Get rid of C++20 compiler warnings. 2024-07-03 13:32:44 +01:00
Jeff Young aa5a370b3a ADDED: user layer types.
This allows a user to define user layers to be front
or back (and therefore to flip with the board view).

Fixes https://gitlab.com/kicad/code/kicad/-/issues/8455
2024-07-03 13:32:44 +01:00
Jeff Young 7f6ab7043b Clean up more exception processing in simulation GUI.
This allows us to more correctly report errors without
dialog issues, logs popping up, etc.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18259
2024-07-03 13:32:44 +01:00
aris-kimi e59417aff3 Fixes a crash when ctrl+x a kicad var from the field
and leave as a starting char '/'

Also fixes a typo and updates the wxFormBuilder file
2024-07-03 13:32:44 +01:00
Seth Hillbrand cd3e85b0b3 Prevent field loops
If the field text is ${FIELD}, then we want to avoid the obvious loop.
This doesn't stop a larger loop FIELD1->FIELD2->FIELD1 but that will be
caught by the depth count.
2024-07-02 12:38:20 -07:00
Seth Hillbrand b4760b9b2c Add ADVANCED_CFG variable for recursion depth of variables
At 10, a strict recursion shows a noticable lag in schematics with
larger numbers of fields.  2 may be a sweet spot unless we find a
schematic where this does not work
2024-07-02 11:37:21 -07:00
Seth Hillbrand 7608be0bc0 Update translations 2024-07-01 10:52:35 -07:00
Seth Hillbrand 183ad166e4 Translated using Weblate (Italian)
Currently translated at 93.7% (8904 of 9499 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/it/
2024-07-01 19:21:08 +02:00
Pferd O e26625cd26 Translated using Weblate (German)
Currently translated at 98.4% (9353 of 9499 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-07-01 19:21:08 +02:00
Henrik Kauhanen 6cf1522b86 Translated using Weblate (Swedish)
Currently translated at 99.8% (9487 of 9499 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-07-01 19:21:08 +02:00
dsa-t 16d8d61754 Translated using Weblate (Russian)
Currently translated at 95.1% (9034 of 9499 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-07-01 19:21:08 +02:00
Laurens Holst f4eb5c8c81 Translated using Weblate (Dutch)
Currently translated at 98.8% (9389 of 9499 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-07-01 19:21:08 +02:00
Toni Laiho 29d1f64167 Translated using Weblate (Finnish)
Currently translated at 99.5% (9452 of 9499 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/fi/
2024-07-01 19:21:08 +02:00
Alex Shvartzkop e5a5b59ac1 Don't try to clear empty bitmap cache.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18310
2024-07-01 18:23:19 +03:00
jean-pierre charras 21ead15872 French translation update 2024-06-30 20:13:25 +02:00
Alex Shvartzkop 10b8580657 Reduce freezing every 2 seconds due to git status updates.
With pathspec specified, only the project dir is queried now.

Still bad if you're in the root of a big repository.
2024-06-30 19:44:31 +03:00
jean-pierre charras e2e95ec461 SIMULATOR_FRAME_UI: catch all nlohmann::json::xxx errors.
Previously, only nlohmann::json::type_error was captured, and other errors
were not handled, creating unhandled exception issue when reading broken
*.wks files.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18309
2024-06-30 18:39:59 +02:00
jean-pierre charras 30dd8224be Fp editor, DIALOG_PAD_PROPERTIES: fix crash if no footprint loaded.
Fix also a incorrect pad stack for SMD pad in some cases.
2024-06-30 10:43:10 +02:00
Alex Shvartzkop cec378b70d HiDPI: use logical icon size when changing indicator state. 2024-06-30 00:18:48 +03:00
Jeff Young 3f9eb0e18d Must do a two-step default for legacy colours. 2024-06-29 22:00:14 +01:00
Seth Hillbrand d80caeb844 Update translations 2024-06-29 12:51:15 -07:00
Jan Straka c4ddcc633a Translated using Weblate (Czech)
Currently translated at 80.6% (7611 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/cs/
2024-06-29 12:50:28 -07:00
김랑기 9b3bfc241a Translated using Weblate (Korean)
Currently translated at 99.9% (9436 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-06-29 12:50:27 -07:00
김랑기 37058b9f90 Translated using Weblate (Korean)
Currently translated at 99.9% (9436 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-06-29 12:50:27 -07:00
김랑기 611574a4c5 Translated using Weblate (Korean)
Currently translated at 99.4% (9382 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-06-29 12:50:27 -07:00
김랑기 870c770437 Translated using Weblate (Korean)
Currently translated at 99.4% (9381 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-06-29 12:50:27 -07:00
Pferd O 33944cc404 Translated using Weblate (German)
Currently translated at 99.9% (9433 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-06-29 12:50:27 -07:00
aris-kimi 42afc43376 Translated using Weblate (Greek)
Currently translated at 97.6% (9212 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/el/
2024-06-29 12:50:27 -07:00
dsa-t afb0ed69fb Translated using Weblate (Russian)
Currently translated at 95.9% (9059 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-06-29 12:50:27 -07:00
Jan Straka 76ee1386f8 Translated using Weblate (Czech)
Currently translated at 80.0% (7550 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/cs/
2024-06-29 12:50:27 -07:00
pominglee 3e080d99c9 Translated using Weblate (Chinese (Traditional))
Currently translated at 99.4% (9386 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-06-29 12:50:27 -07:00
ivit VT de7627e777 Translated using Weblate (Czech)
Currently translated at 79.4% (7498 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/cs/
2024-06-29 12:50:27 -07:00
ivit VT 9e067c75b4 Translated using Weblate (Czech)
Currently translated at 78.7% (7430 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/cs/
2024-06-29 12:50:27 -07:00
Pferd O 0285beed5b Translated using Weblate (German)
Currently translated at 99.8% (9423 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-06-29 12:50:27 -07:00
ivit VT 2d42ca882e Translated using Weblate (Czech)
Currently translated at 78.2% (7386 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/cs/
2024-06-29 12:50:26 -07:00
pominglee a738932274 Translated using Weblate (Chinese (Traditional))
Currently translated at 99.4% (9385 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-06-29 12:50:26 -07:00
CloverGit 5f6dd8a7e8 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (9436 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-06-29 12:50:26 -07:00
Pferd O 5041846453 Translated using Weblate (German)
Currently translated at 99.6% (9401 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-06-29 12:50:26 -07:00
Laurens Holst d72665b5ba Translated using Weblate (Dutch)
Currently translated at 100.0% (9437 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-06-29 12:50:26 -07:00
Toni Laiho b080bdb003 Translated using Weblate (Finnish)
Currently translated at 99.9% (9435 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/fi/
2024-06-29 12:50:26 -07:00
Nguyễn Ngọc Khánh 79c40e54db Translated using Weblate (Vietnamese)
Currently translated at 21.1% (2000 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/vi/
2024-06-29 12:50:26 -07:00
Henrik Kauhanen 91575e0ccc Translated using Weblate (Swedish)
Currently translated at 99.9% (9434 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-06-29 12:50:26 -07:00
Jan Straka aee0276090 Translated using Weblate (Czech)
Currently translated at 78.0% (7363 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/cs/
2024-06-29 12:50:26 -07:00
Nguyen Van Dien 69182679aa Translated using Weblate (Vietnamese)
Currently translated at 21.1% (1994 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/vi/
2024-06-29 12:50:26 -07:00
Lucas DUMONT 312fc8bdbe Differentiate between Line and Area corner
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18263
2024-06-29 15:52:19 +01:00
Jeff Young 2c40aa6278 Revert part of previous commit so user-supplied MR will apply cleanly. 2024-06-29 15:52:19 +01:00
Jeff Young 4ee0bb15c5 Give polylines & rule areas different minimum point counts.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18263
2024-06-29 15:52:19 +01:00
Ian McInerney 10988478da Take footprint edge cuts into account in the board statistics
Reported in https://gitlab.com/kicad/code/kicad/-/issues/18245
2024-06-29 03:11:54 +01:00
Ian McInerney c8ebcc8e0f Only modify visibility checkboxes for layers with them 2024-06-29 03:05:57 +01:00
Seth Hillbrand f2ab07c8b4 Don't spam the event processor with SelectedEvents
If we are appending a sheet, this can be hundres of new elements.  We
don't want to pass multiple selected events or we'll do the repeated
processing, slowing down our update
2024-06-28 15:02:07 -07:00
Jeff Young 7962ab07e7 Improve consistency of clearance line painting.
Showing the clearance area is not obvious as the clearance
extends from the pad on flashed copper layers and from the
hole on non-flashed copper layers.  Because of this, we
choose to not display clearance lines at all on non-copper
active layers as it's not clear which we'd be displaying.

We follow the same rule for tracks for consistency (even
though they don't have the same issue).

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18287
2024-06-28 22:10:22 +01:00
Jeff Young a68b3a7778 Size conversion warning reduction. 2024-06-28 22:10:22 +01:00
Jeff Young 9e6884f656 ADDED: support for ERC & DRC errors and warnings in text variables.
Also fixes some bugs in storing exclusions in
symbol fields and children.

Also fixes some bugs in checking for resolved text
variables in symbol children.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18279
2024-06-28 22:10:22 +01:00
Jeff Young 16340e6cf4 Support both short and long item descriptions. 2024-06-28 22:10:22 +01:00
Jeff Young c4f61c2eaf Check for unresolved fields in labels. 2024-06-28 22:10:22 +01:00
Alex Shvartzkop 0acc4dc286 If we didn't use all reserved vertices in OpenGL GAL, show the error to user.
It will cause graphical artifacts, and it's not clear to what's happening if the message is never shown.

See https://gitlab.com/kicad/code/kicad/-/issues/18298
2024-06-28 23:15:47 +03:00
Seth Hillbrand 9e82d7c93c Decrease font error allowance
This is activated when changing bezier into segments and sets the
minimum allowance in 1/16 of the font's internal units.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18300
2024-06-28 12:11:49 -07:00
Seth Hillbrand f48a105357 Modify some int32 ops to avoid potential overflow 2024-06-28 08:04:07 -07:00
Seth Hillbrand d033f93d89 Fixup Altium import rectangle handling
Ensure we have positive sizes
Keep rectangles when rotating by multiples of 90
2024-06-27 16:40:25 -07:00
Seth Hillbrand 234230801f Fixup Altium QA.
Apparently, Footprint export does not export the internal rule area
layers.  Saving directly does
2024-06-27 16:38:58 -07:00
Seth Hillbrand 51eb7aa5b5 Fixup for Altium pad/fill importer
The previous commit merged pads with copper areas.  This was appealing
but broke when the pad and the area were meant to have different
size/shape technical layers.  Small pads = Small paste.  Instead, we do
not merge the pads but we assign them to have the appropriate nets in
KiCad, allowing the same effective result but keeping the technical
layers correct
2024-06-27 13:49:16 -07:00
Ian McInerney cc81ccf79a Display unit name in symbol context menu
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18285
2024-06-27 19:57:14 +01:00
Ian McInerney bdf70ec869 Fix init ordering 2024-06-27 19:43:58 +01:00
jean-pierre charras 8737c6eb3c footprint selector in symbol properties: fix footprint selection issue.
When using the button to select a footprint using the footprint chooser
dialog, the new footprint was not always taken in account (perhaps MSW specific).
It was due to the code to update the footprint name was between Disable() and
Enable, thus creating a loss of some events in the complex grid edition stuff.
This is now replaced by a lock flag to protect this code to be executed when
it should not.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18270
2024-06-27 19:56:57 +02:00
Seth Hillbrand 64c36e8bda Fix via layer test for DXF plotting
Vias might have their primary layer set to a single layer but cross
multiple layers that should be included when plotting

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18282
2024-06-27 09:59:37 -07:00
Alex Shvartzkop dc2a63d146 STEP export: don't put copper on non-flashed pad layers.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18267
2024-06-27 06:40:11 +03:00
Jon Evans c70ef36739 ADDED: Opacity control for filled graphic shapes
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18253
2024-06-26 22:29:58 -04:00
Seth Hillbrand 7102d9f72a Altium import: handle polygons on copper
In Altium, copper polys will be connected automatically to their
associated pads.  In KiCad, we need to do the equivalent when parsing,
which is to combine the joining copper into the underlying pad.  We also
don't want to treat copper polys as proxy pads without the original
anymore.
2024-06-26 17:27:08 -07:00
Seth Hillbrand f97ac5ce73 C++-ify output using ToString 2024-06-25 18:35:12 -07:00
Seth Hillbrand 0a55ca5e96 Add standard ToString representation of hash 2024-06-25 18:34:57 -07:00
Seth Hillbrand a9d9d7ac06 Rearrange VERTEX and VERTEX_SET to please MSW/Apple 2024-06-25 18:04:53 -07:00
Seth Hillbrand 4fff28220e Extract common code into VERTEX_SET mixin
The VERTEX_SET is useful when we need to quickly find elements that are
close to each other.  Extracting to a mixin keeps the code from
diverging between implementations and simplifies that maintenance.
2024-06-25 12:19:56 -07:00
Seth Hillbrand 3c88b1ebc7 Suppress fallthrough warnings 2024-06-25 12:18:44 -07:00
Seth Hillbrand 6aaaaad37f Properly count multiple Altium version settings
There is a fair amount of gradation in different Altium products

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18276
2024-06-25 10:18:55 -07:00
Seth Hillbrand 3725ae781d Quiet a warning on linux
Linux uint64 is unsigned long, windows is unsigned long long.  Rather
than split hairs, we can just use the stringstream to format this
2024-06-25 08:58:37 -07:00
Alex Shvartzkop fa5b6d7929 If there's a single shape in fuseShapesOrCompound input, just return it. 2024-06-25 14:56:33 +03:00
Jeff Young a2f7edde2e Import PCB into existing project.
Or, to be more direct: don't pull the project rug
out from under EESchema when importing in non-
stand-alone mode.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18241
2024-06-25 11:49:02 +01:00
Jeff Young 14a55facf2 Clearer naming and commenting.
Also some const& hygiene and some formatting.
2024-06-25 11:07:14 +01:00
jean-pierre charras 0a5784fc9e Gerber plots: Ensure reserved chars are not used in Gerber field strings.
In gerber fields, reserved chars (,*%) must be replaced, because they are separators.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18275
2024-06-25 10:49:41 +02:00
jean-pierre charras 1ddac57748 DIALOG_SYNC_SHEET_PINS: minor fix (min size set) 2024-06-25 10:44:48 +02:00
Alex Shvartzkop 4ec738f58f Fix macOS build. 2024-06-25 03:02:17 +03:00
Alex Shvartzkop 43be7491ff Add default constructor to MMH3_HASH. 2024-06-25 01:19:55 +03:00
Alex Shvartzkop bee70bca7f Fix redefinition error in mmh3_hash.h. 2024-06-25 01:15:47 +03:00
Jeff Young 441da8dfb6 Don't overload error dialog.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18195
2024-06-24 22:50:14 +01:00
dsa-t cb41b53ab7 Use MurmurHash3_x64_128 (MMH3_HASH) for polygon checksum.
Improves performance when moving footprints.

See https://gitlab.com/kicad/code/kicad/-/issues/18148
2024-06-24 21:19:43 +00:00
Kuba Sunderland-Ober 8f02944437 Optimize the newstroke font representation
Remove redundant strokes that start where the last stroke ended.
2024-06-24 19:44:06 +00:00
Jan Wichmann 8507ffa338 pcb_calculator: Shows the first page at the first start. 2024-06-24 19:39:40 +00:00
Jeff Young 080cbbe0dd Error reporting for drawing sheet loading. 2024-06-24 20:22:29 +01:00
Jeff Young 26b86b3922 Don't use wxLogMessage/wxLogError for messages not meant for user.
They are particularly damaging when our event loop
gets tied up in knots with the log message window
behind a modal window -- thereby locking up KiCad.
2024-06-24 20:22:29 +01:00
Seth Hillbrand 11c6164934 Silence font replace warnings for libs
When loading schematics/pcbs, notification of font replacements might be
warranted but in libraries, this warning is not helpful and intrusive
2024-06-24 09:55:10 -07:00
Jeff Young 92c8ddfddb Prefer infobar to logged warnings/messages.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18242
2024-06-24 16:26:40 +01:00
Jeff Young b227bae2c6 Commit strings are user-visible menu strings. 2024-06-24 14:16:05 +01:00
Jeff Young 561106bd01 Formatting. 2024-06-24 14:14:03 +01:00
Jeff Young 968ef0082d Handle undo of a Repeat Draw Item.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18261
2024-06-24 13:59:05 +01:00
Jeff Young 0b4d0bcb6c Undo for Repeat Pin.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18261
2024-06-24 13:59:05 +01:00
Alex Shvartzkop 4bf8ed32cd Optimize testCourtyardClearances when moving footprints (33%->0.69%)
Check bounding boxes without hidden text first before trying to check courtyards.

See https://gitlab.com/kicad/code/kicad/-/issues/18148
2024-06-24 06:43:58 +03:00
Alex Shvartzkop dc56364cf2 Optimize testCourtyardClearances when moving a board.
CPU usage: 86% -> 33%

See https://gitlab.com/kicad/code/kicad/-/issues/18148
2024-06-24 02:00:34 +03:00
Alex Shvartzkop 69ee94f289 Fix crash when trying to draw a schematic polygon with no segments.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18246
2024-06-23 07:02:43 +03:00
Jeff Young 0040c290ed Don't flip alignment of non-side-specific text.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18235
2024-06-22 23:54:57 +01:00
Jeff Young aaf5c454ff Mask new shape properties from textboxes. 2024-06-22 23:54:57 +01:00
Jeff Young 5fba8289aa Formatting. 2024-06-22 23:54:57 +01:00
Alex Shvartzkop 0a75053e9d Revert "Handle degenerate arcs"
It is not needed anymore, and could cause problems
for legitimate arcs.

This reverts commit ff188450e6.
2024-06-22 22:13:18 +03:00
Jeff Young e450258c0f Show footprint change/update immediately.
Also, don't deselect selected footprints.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18248
2024-06-22 19:47:40 +01:00
dsa-t 3e480b6f6e Improve error message when trying to Open non-KiCad schematic files.
See https://gitlab.com/kicad/code/kicad/-/issues/18241


(cherry picked from commit d319cd4b89)

Co-authored-by: Alex Shvartzkop <dudesuchamazing@gmail.com>
2024-06-22 17:35:57 +00:00
Wayne Stambaugh 4ee1415164 Fix Eagle schematic importer incorrect symbol value field and visibility.
Also fix a crash if an XML_PARSER_ERROR exception is thrown when importing
Eagle symbol libraries.

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

(cherry picked from commit 566fefafc5)
2024-06-22 12:32:47 -04:00
Alex Shvartzkop 4e3488c2e0 Altium schematic import: fix power port styles.
Need to use the symbol name with style, like "VCC_CIRCLE", not "VCC".

Issue was introduced in d939004bbd

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18209
2024-06-22 06:45:26 +03:00
Alex Shvartzkop f6994702aa Fix arc edit points ordering in schematic.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18254
2024-06-22 06:17:00 +03:00
Wayne Stambaugh 0ed72fb47a Fix broken rectangles in Eagle schematic importer. 2024-06-21 16:18:42 -04:00
Alex Shvartzkop 1613816e77 Fix EasyEDA/JLCEDA Pro 2.2 footprint/symbol library import.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18250
2024-06-21 22:20:54 +03:00
Alex Shvartzkop 84091b163e Fix warning: moving a temporary object prevents copy elision [-Wpessimizing-move] 2024-06-21 21:31:14 +03:00
Jeff Young c549a214c9 Performance: don't alloc std::vector in critical areas.
For some history, see also aa2ad3b44c
2024-06-21 19:07:46 +01:00
Wayne Stambaugh b494166b10 Fix empty label names when importing Eagle schematic. 2024-06-21 12:07:06 -04:00
Alex Shvartzkop ece46223c9 Fix shadowed/conflicting enum values. 2024-06-21 16:16:29 +03:00
Alex Shvartzkop 904055912b Fix attribute display comparison in EAGLE schematic import. 2024-06-21 16:16:24 +03:00
Marek Roszko acec5552c0 Don't use message as part of the assert dedup
kimath overflow can generate thousands of unique messages in one run lolol
2024-06-21 07:19:53 -04:00
Wayne Stambaugh 8df28d4f5f Fix crash in symbol editor when importing Eagle symbol library.
https://gitlab.com/kicad/code/kicad/-/issues/18221
2024-06-21 01:07:01 -04:00
Wayne Stambaugh 3df2109c43 Fix issues with the new Eagle schematic parser. 2024-06-20 23:07:59 -04:00
Ian McInerney 672d2c6af8 Always include footprint edgecuts in board edge bounding box
The footprint edgecuts should always be part of the board edge bounding
box, even if the layer the footprint is on is hidden from view.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18245
2024-06-20 23:17:54 +01:00
Alex Shvartzkop 1bb507e3c4 Reduce VERTEX_ITEM size by removing vfptr.
24 -> 16 bytes.
2024-06-20 19:08:07 +03:00
Alex Shvartzkop 7eb600e5a6 Fix typo. 2024-06-20 15:47:36 +03:00
Alex Shvartzkop 386651153b Improve EDA_ITEM memory layout slightly. 2024-06-20 15:33:56 +03:00
Alex Shvartzkop c40708c051 Optimize TEARDROP_PARAMETERS memory layout.
56 -> 40 bytes.
2024-06-20 15:05:45 +03:00
Alex Shvartzkop b143ffb797 Reduce KIID size from 20 to 16 bytes.
Removes separate legacy timestamp value.
2024-06-20 13:59:15 +03:00
Alex Shvartzkop f5be388acd Don't call GetSide in FOOTPRINT::GetBoundingBox when not needed.
CPU usage: -13% when moving a board.
2024-06-20 06:02:11 +03:00
Alex Shvartzkop 48f6f837a1 Optimize BOARD_ITEM::GetParentFootprint.
CPU -8% when panning a board.
2024-06-20 04:25:33 +03:00
Alex Shvartzkop ec271c20db Slightly optimize SEG::NearestPoint. 2024-06-20 04:25:33 +03:00
Alex Shvartzkop 62fb5697b4 Optimize redrawNetnames.
Using RTree is slower in this case.

RTree: 25 ms when moving cursor
This method: 5 ms when panning/zooming
2024-06-19 20:55:33 +03:00
Jeff Young 31ab276aaf Ease-of-use for un-commented ERC/DRC exclusions.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18220
2024-06-19 17:07:50 +01:00
Jeff Young 8e349eedf0 Bug fixes for PCB_TABLES.
In particular, rotated tables and tables in rotated
footprints.
2024-06-19 12:39:22 +01:00
Jeff Young 251ed2ee54 Formatting and "auto" reduction. 2024-06-19 12:39:22 +01:00
Marek Roszko 7c35139505 std::sqrt is not constexpr until C++26 2024-06-19 07:34:58 -04:00
Seth Hillbrand cde153c75f Avoid some overflows in KiROUND 2024-06-18 21:37:00 -07:00
Seth Hillbrand 9aba808366 Altium import
- Handle intermediate Altium version with some fields but not others
- Ensure that we are properly moving text that is not a box and not a
  field
2024-06-18 21:35:41 -07:00
Seth Hillbrand bf68b11ff9 Cleanup unused vars 2024-06-18 21:35:32 -07:00
Seth Hillbrand bcf6b620a8 Large rework of BEZIER_POLY
Add direct handling of quadratic beziers to save compute time and number
of points.  Update cubic interpolation to reduce number of points
generated for a given smoothness

Cache data on open and used cached data to avoid multiple re-calcs

Remove minimum line length and number of segments and replace with
standard max error level.  Allows us to specify the tolerance of bezier
interpolation
2024-06-18 17:55:41 -07:00
Seth Hillbrand 0d2c4c91fd Properly initialize fonttype for older Altium files 2024-06-18 17:55:31 -07:00
Jon Evans 81a1e9e83e Don't write out non-explicit tenting
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18230
2024-06-18 17:52:42 -04:00
Jon Evans 1a1083def6 Revert "Tented usually means that there is no soldermask"
This reverts commit 021f251efd.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18230
2024-06-18 17:52:42 -04:00
dsa-t c5056beeb3 Fix crash in wxSocketBase when the event handler has been destroyed.
Fixes KICAD-37B
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18234


(cherry picked from commit ebdfeb4c0a)

Co-authored-by: Alex Shvartzkop <dudesuchamazing@gmail.com>
2024-06-18 21:50:18 +00:00
Jon Evans 02502342a5 Try harder to keep searchable text hidden in SVG exports 2024-06-18 12:01:15 -04:00
Seth Hillbrand 7e561acf53 Altium: Handle textboxes
Also, corrects a minor issue with the text width calculation where
Altium calculates centerline to centerline but KiCad text heights are to
the edge of the stroke font.  Need to still do better adjustments for
the various altium stroke fonts

Fixes https://gitlab.com/kicad/code/kicad/-/issues/9468
2024-06-16 17:20:59 -07:00
Seth Hillbrand b11e030f8f Cleanup Altium text import
Handle inverted text
Correct location for flags
Add mechanics to detect inverted_rect (like text boxes)
2024-06-16 17:20:59 -07:00
Seth Hillbrand 5c699e3c1e Handle not found fonts reliably
Check if the font isn't found when selecting (we seem to always have a
selection even if we fail on GTK) and properly set the index of the
final <not found> font name
2024-06-16 17:20:58 -07:00
Jeff Young 90cd3286fa Remove cover types. 2024-06-16 10:47:48 +01:00
Jeff Young 5a9b681009 Clear timestamp when clearing cache.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17913
2024-06-16 10:46:36 +01:00
Seth Hillbrand e3231e6996 Rework VECTOR2D promotion rules
VECTOR + scalar = vector type (KiROUND when VECTOR is integral and
scalar is float)
VECTOR + VECTOR = common type vector

Implemented with concepts in template rules - SWIG compatible
2024-06-15 13:41:07 -07:00
Jeff Young 5ba2896968 enclosedByArea test for zone needs to be outline-based.
(Otherwise it's order-specific when filling, which
is pretty unpredictable.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18202
2024-06-15 17:52:15 +01:00
Jeff Young eae85742cc Don't report reasonable solder mask bridges in a net-tie footprint. 2024-06-15 15:57:13 +01:00
Jon Evans fa235116f7 Import Altium via tenting settings 2024-06-15 09:36:25 -04:00
jean-pierre charras 16e708a0e7 Fix minor compil and Coverity warnings. 2024-06-15 11:20:21 +02:00
Seth Hillbrand 3e16359b4f Update golden master for Altium import
The altium footprint being imported has vias that were ignored before,
so now we need to have the correct golden master with vias
2024-06-14 17:41:44 -07:00
Seth Hillbrand f7450e5b37 Fix SWIG compile
SWIG doesn't like a lot of the new C++20 elements, so fall back to basic
cast that should get almost every case
2024-06-14 17:41:05 -07:00
Seth Hillbrand 6df16d053e Add specialization for unsigned scalar add/sub
Adding/subtracting an unsigned scalar to a signed vector should maintain
the same signed vector

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18212
2024-06-14 17:27:59 -07:00
Seth Hillbrand 7ea013b96c Altium: Handle footprint vias
These are treated as pads in KiCad

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18194
2024-06-14 16:49:56 -07:00
Seth Hillbrand 021f251efd Tented usually means that there is no soldermask
Probably was a typo
2024-06-14 16:49:56 -07:00
Seth Hillbrand d21eba4021 Unselected tree before syncing
On GTK, the selected item is checked for its parent when being
unselected.  This breaks if the parent has been removed by the Sync()
call, so we need to ensure that the unselect all call happens prior
2024-06-14 16:49:56 -07:00
Seth Hillbrand 9f4dfe77cb Freeze the adapter to avoid invalid deref
GTK tries to get the parent item of selected elements when unselecting.
If we don't freeze, we run the risk of crashing if a selected item is
removed before being unselected.  This causes a wx warning but a) this
is suppressed in release and b) warning message is better than crash.
See next commit for fix to avoid common case of the error
2024-06-14 16:49:56 -07:00
Jeff Young db9f0a0358 Report footprint parent of shape when in board editor.
While the user can't select these, we do report them
in DRC messages and the like, where it's handy to
know what they're from.
2024-06-14 23:19:26 +01:00
Jeff Young 8cddd40fc9 Check mask apertures on the mask layer.
(Otherwise testing A:B and B:A will add items to the
m_maskApertureNetMap cache on different layers.)
2024-06-14 22:55:40 +01:00
Jeff Young b2588e0bbf Footprint Editor doesn't have nets.
(Copper shapes, on the other hand, can.  Since we use
GetItemDescription() to report DRC errors and the like,
it's better to have it report the net even when it's
<no net>.)
2024-06-14 22:46:29 +01:00
Jeff Young 0f8d543172 Consistent capitalization. 2024-06-14 22:02:08 +01:00
Jeff Young ac576d7e0a Normalize phase angles. 2024-06-14 19:03:55 +01:00
jean-pierre charras a2cbd1ff21 Fix QA tests compatibility 2024-06-14 19:14:09 +02:00
Jeff Young c633ac26eb Don't lose value of cursor checkboxes when running sim.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18205
2024-06-14 16:37:49 +01:00
Jeff Young 4eb048bba2 Don't assume AC gains will always be voltages.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18205
2024-06-14 16:37:49 +01:00
Jeff Young 300313ce73 Correctly write phase/gain signals to workbook.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18205
2024-06-14 16:37:49 +01:00
Jeff Young 5a3bad51d0 Don't use SI prefixes with degrees when auto-ranging.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18205
2024-06-14 16:37:49 +01:00
Jeff Young 7b63429fe1 Current gain is the first Y axis, not the second.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18205
2024-06-14 16:37:49 +01:00
jean-pierre charras d778cb6647 Schematic editor: fix some issues that can crash the editor on closing.
- Add a test to be sure a SCHEMATIC exists before trying to use it
- Delete items in Repeat list and undo/redo list before deleting the schematic
- Delete also these items when loading a new schematic (the repeat list was
not cleaned previously)
Before these fixes I see a use after delete issue due to dangling pointers
stored in Repeat list.
2024-06-14 16:57:57 +02:00
Jeff Young 7fef6e8d83 Use view's RTree for redrawing netnames. 2024-06-14 00:20:37 +01:00
Jeff Young c9ddcd618d Make sure to reset the cached viewport. 2024-06-12 23:35:06 +01:00
Jon Evans ccc76aad2f Fix typo loading legacy tenting setting 2024-06-12 17:42:44 -04:00
Alex Shvartzkop 44a33eedf4 Update only visible track segments in redrawNetnames.
RequestRefresh doesn't seem to be needed.
2024-06-13 00:28:37 +03:00
Alex Shvartzkop f0e9f9f15a Optimize PAD LoD calculation. 2024-06-12 23:05:33 +03:00
Alex Shvartzkop 52daf14c78 Optimize VIA LoD calculation. 2024-06-12 23:05:33 +03:00
Alex Shvartzkop 9d0ee029bc Add a upper >= lower check to Clamp.
Similar to std::clamp.
2024-06-12 23:05:33 +03:00
Alex Shvartzkop e49d233923 Move BOX2I_MINMAX to separate header. 2024-06-12 23:05:33 +03:00
Mike Williams a5e2615251 Revert "SCH/LIB SYMBOL: never allow null LIB_SYMBOLs in SCH_SYMBOL"
This reverts commit 0b187e7122.
2024-06-12 13:30:29 -04:00
Mike Williams 0c45f85bc0 Revert "sch_symbol: use fail message fall back to dummy symbol when passed null"
This reverts commit e0e837189d.
2024-06-12 13:30:29 -04:00
Jeff Young 0ca7a81181 Deferred redraw for netnames. 2024-06-12 17:20:20 +01:00
Jeff Young b7161181e8 Hidden footprint libraries are not yet supported.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18183
2024-06-12 16:59:20 +01:00
Alex Shvartzkop 73a3b880a6 Slightly optimize GPU_CACHED_MANAGER::DrawIndices. 2024-06-12 16:04:47 +03:00
Jeff Young 694a7db457 Performance improvements.
Don't construct a wxString or a LSEQ when you don't
have to.  They're both more expensive than you might
think.
2024-06-12 11:06:10 +01:00
Jon Evans 63cd110720 Make verbiage more clear 2024-06-11 22:19:33 -04:00
Jon Evans 896f56772f Fix warnings 2024-06-11 22:01:06 -04:00
Jon Evans 5fc0f1f51e ADDED: Independent control of front/back via tenting 2024-06-11 21:50:25 -04:00
Jon Evans 4aab9f59aa ADDED: Support tenting control of individual vias
REMOVED: Tenting option from plot dialog (tenting is now
         controlled from Board Setup and via properties)

See https://gitlab.com/kicad/code/kicad/-/issues/2402
2024-06-11 21:25:02 -04:00
jean-pierre charras 2a37580839 Symbol editor: ensure the left panel is correctly refreshed when hiding a pane. 2024-06-11 17:48:25 +02:00
Jeff Young d865bda4f2 Cache display netnames.
Also changes the redraw behaviour to not try and redraw
only when things entered the view (this didn't work
because it may be the netname that's entering the view,
not the whole track).  Instead we only process a finite
number of tracks on each idle event (in order to avoid
#12436).

Note that we don't need the timer at all anymore as the
netnames are in fixed locations on the track and never
make the track look like it's being dragged.

Also improves performance by avoiding sqrt.
2024-06-11 16:30:52 +01:00
Wayne Stambaugh 74070afbc6 Fix a bunch of GCC build warnings compiling the schematic editor.
Apparently GCC does not like competing definitions of the == operator.
The recent refactoring away of all LIB_ITEM objects created a conflict
with the SCH_ITEM == operator definition.  This change required some
rather ugly comparison changes.  There were no unit test failures but
that doesn't mean something didn't get broken.
2024-06-11 08:07:32 -04:00
jean-pierre charras 9bf0b479ed fix a compil issue on msys2 2024-06-11 10:58:21 +02:00
Alex Shvartzkop 44fd13af47 Slight optimization for PCB_PAINTER when drawing vias/tracks. 2024-06-11 05:30:02 +03:00
Seth Hillbrand 8dd93501cf Add additional VECTOR2 tests
Check overflow, addition using alternate value representations and
clamping
2024-06-10 15:21:44 -07:00
Seth Hillbrand 37191720ca Add common VECTOR2 test cases 2024-06-10 15:12:57 -07:00
Seth Hillbrand 439c25fca9 Altium schematic parser: Add fraction pin placement
In the schematic libaries, pin positions that are off 10mil spacing need
fractional elements stored in a different location
2024-06-10 15:02:18 -07:00
Alex Shvartzkop 35d60598d5 Fix build error on MSVC. 2024-06-11 00:06:32 +03:00
Seth Hillbrand 9d9028c979 Handle unsigned VECTOR2 casts
The previous overflow handling code casted the int_min value into an
unsigned, meaning that the min value and max value were almost the same,
clamping the output to unreasonable values.

Updated code handles floating points first, then does integer casting
through int64_t
2024-06-10 12:40:01 -07:00
Seth Hillbrand 1325701956 Altium SCH Lib updates
- Use pin-compatible line widths for symbols
- Handle circular arcs as circles, not elliptical arcs
2024-06-10 12:40:01 -07:00
Jeff Young de2fbbd11a Fix stack address escaping routine. 2024-06-10 20:23:36 +01:00
Jeff Young 4e133ae83b Cleanup. 2024-06-10 20:23:36 +01:00
Jeff Young a02cb75656 Cleanup. 2024-06-10 20:23:36 +01:00
JamesJCode 0826c10a20 Don't re-add deleted netclass assignments in incremental connectivity
Ensures that if moving or deleting a netclass directive label, the
netclass on the previously-assigned net doesn't have the stale
netclass re-applied.
2024-06-10 20:19:07 +01:00
Alex Shvartzkop d40bbed591 Cairo GAL: improve alignment between arcs and segments and of odd-width lines.
(cherry picked from commit f60b76696a)
2024-06-10 21:26:17 +03:00
Wayne Stambaugh 5e048bc64c Fix several Eagle schematic import issues.
Fix broken arc angle polarity due to library symbol changes.

Fix broken wire and text Y axis coordinate polarity due to library symbol
changes.

Fix broken field visibility and position on library symbols with multiple
units that have fields with different visibility and positions.  Because
KiCad does not support this, when parsing the Eagle schematic file, the
last library symbol unit parsed ends up being the field visibility and
position for all units in the symbol.
2024-06-10 11:28:20 -04:00
Wayne Stambaugh 889931505b Eagle schematic importer improvements.
Change Eagle file importer to use a two pass import.  The first pass
parses the entire Eagle file into an associated E* object.  The second
pass converts the parsed E* objects into the appropriate KiCad objects.

Improve handling of Eagle versioned libraries.

Add helpers to IO_BASE to ease handling of PROGRESS_REPORTER and REPORTER
objects.

ADDED: Support for importing Eagle schematic modules.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/1813
2024-06-10 11:28:20 -04:00
Mike Williams e0e837189d sch_symbol: use fail message fall back to dummy symbol when passed null 2024-06-10 11:24:58 -04:00
Wayne Stambaugh 012d3f098f Fix build error caused by commit 82c2bda52b. 2024-06-10 10:56:02 -04:00
Jeff Young 2e38fa84bf Don't allow writing "//" to spice netlist.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18161
2024-06-10 15:36:20 +01:00
Alex Shvartzkop 0d2838518b Altium PCB import: don't add thickness to Solid style fills.
(cherry picked from commit b34dbf58c5)
2024-06-10 17:33:26 +03:00
Alex Shvartzkop 82c2bda52b Altium PCB import: make sure Polygon fill is contained within the outline. 2024-06-10 17:21:41 +03:00
Mike Williams 0b187e7122 SCH/LIB SYMBOL: never allow null LIB_SYMBOLs in SCH_SYMBOL
Also always always flatten incoming lib symbols.
2024-06-10 08:36:42 -04:00
Jeff Young aa1fb0604a Fix KeepUpright settings in Eagle gold files. 2024-06-09 23:38:54 +01:00
Alex Shvartzkop 43dab2a8b5 Altium PCB import: avoid integer overflows when rotating rectangular fills.
Fixes artifacts seen in https://gitlab.com/kicad/code/kicad/-/issues/18156

(cherry picked from commit 3ea314cb9f)
2024-06-10 01:01:32 +03:00
Jeff Young ca54eb422b Don't default KeepUpright to true in Eagle importer.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18175
2024-06-09 22:19:26 +01:00
Alex Shvartzkop ee8b74d688 QA: update golden data for Altium "Tracks" PcbLib.
(cherry picked from commit c6b483acb9)
2024-06-09 23:03:33 +03:00
Jon Evans 74517856ca Make touchscreen events Windows-only
They break things on macOS and probably also on GTK
according to the wxWidgets documentation.
2024-06-09 13:18:32 -04:00
Alex Shvartzkop 76b2741a92 Make sure to add start points to arcs in TransformOvalToPolygon.
Otherwise the long line segments can be non-parallel to the centerline.

This was the root cause of the slowdown in https://gitlab.com/kicad/code/kicad/-/issues/18156

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18156
2024-06-09 20:04:27 +03:00
Alex Shvartzkop 80b7f5fcbf Revert "Pcbnew, Altium import: Fix issues with hatched zones."
This removed the hatch fill import functionality,
and is no longer needed now that the root cause was found.

This reverts commit 616510aca2.
2024-06-09 20:04:27 +03:00
Alex Shvartzkop 7bca6cdea7 Make crosshair follow view movement when using pan/zoom gestures. 2024-06-09 18:46:42 +03:00
jean-pierre charras fb3730a9c0 STEP export: fix missing zones (they were added too late in code)
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18177
2024-06-09 17:32:34 +02:00
Jon Evans 3bb7b3722c Fix MSVC not understanding operator== anymore 2024-06-08 17:27:34 -04:00
Jon Evans f5e7c705db Move custom shapes to PADSTACK; support in API 2024-06-08 14:26:36 -04:00
jean-pierre charras b20a32f2fd bitmap_info.xxx: add comments to try to avoid issues like 8b1e971f
No actual code change
2024-06-08 20:18:11 +02:00
Alex Shvartzkop 4b96bb5d8f Support touchscreen gestures (zoom/pan/rotate) in 3D viewer.
Though rotate doesn't work yet on MSW due to a wxWidgets bug.
2024-06-08 21:13:16 +03:00
Jeff Young ed0869aa0c Share more library tree code. 2024-06-08 19:06:10 +01:00
Alex Shvartzkop 832393b07c Remove debug line. 2024-06-08 17:25:49 +03:00
Alex Shvartzkop 8f8a68229c Handle touchscreen gesture events for zoom/pan. 2024-06-08 16:00:34 +03:00
Alex Shvartzkop 8e90063258 Support hidpi in Cairo GAL canvas; performance improvements.
We now draw onto wxBitmap directly, reducing the amount of copying.
Also moves the bitmap blit into paint event handler.
Modifies ClearScreen to work universally between Cairo/OpenGL backends.
2024-06-08 12:51:27 +03:00
Seth Hillbrand 31a0652c58 Force VECTOR2 templates to use standard promotion rules
This forces the operators -, +, * to use standard promotion rules when
operating on vectors of two different types.  Previously, this depended
on the order in which the operator was called, so subtracting a VECTOR2D
from a VECTOR2I could have a different result than negating the result
of subtracting the same vectors in the opposite order
2024-06-07 15:32:07 -07:00
Jeff Young 90652a741d Don't generate thermal reliefs for pads that don't intersect zone.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18174
2024-06-07 23:08:15 +01:00
Seth Hillbrand ff188450e6 Handle degenerate arcs
Arcs with their centers too far away are effectively straight lines, so
draw them as such

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18170
2024-06-07 11:28:34 -07:00
jean-pierre charras d7b743a896 MAINTAIN_PNGS option: fix missing entries in CMakeLists.txt.
The commit 16de0a66 should have added these icons in list, but unfortunately
they are missing, thus creating a broken (missing entries) auto-generated file
bitmap_info.cpp when rebuilding png icons.
2024-06-07 16:15:48 +02:00
Jeff Young cb7d51dbe4 Formatting. 2024-06-07 12:10:41 +01:00
Jeff Young d8c2929163 SCH_SHEET_PATH::IsContainedWithin() didn't do what I thought it did.... 2024-06-07 12:09:58 +01:00
Jeff Young c0ee987e8b Fix typo. 2024-06-07 10:52:11 +01:00
jean-pierre charras dc6b211227 better tool tips 2024-06-07 11:19:56 +02:00
jean-pierre charras 8b1e971f29 bitmap_info.cpp: fix a crash when opening the simulator frame.
It was due to missing bitmaps, used in simulator frame horizontal toolbar.
They were removed probably by mistake in commit 0e66adbc
2024-06-07 11:13:58 +02:00
Wayne Stambaugh 360d185e3b Clear parent symbol references when flattening derived library symbols.
Broken parent symbols could lead to invalid return values and flattened
library symbols cannot be derived from a parent symbol.
2024-06-06 18:53:27 -04:00
Seth Hillbrand 6dcb9bb664 Do not allow trailing/leading whitespace in mandatory fields
Reference, Value, Footprint and Datasheet all reference elements that
should not use trailing/leading whitespace or similar hidden charaters.
Other fields may utilize leading/trailing whitespace for obscure
purposes but won't break functionality as they are display only
2024-06-06 11:48:20 -07:00
Jeff Young edc7603d2a Make it clear that GetSheets() is heavy.
Also removes the side-effect that SCH_SHEET_LIST's
c'tor would sort the list (and write virtual page
numbers) anytime the starting sheet was the root.

Also, definitely don't build a SHEET_LIST (sorted or
otherwise) if you're not even going to use it.

Also don't build SCH_SHEET_LISTs on idle events.  Better
to just always have the Next Sheet button enabled (we
already beep if you click it and there's no next sheet).

Also, use a SCREEN_LIST when you can.  It's much cheaper
to create.
2024-06-06 18:00:59 +01:00
jean-pierre charras 616510aca2 Pcbnew, Altium import: Fix issues with hatched zones.
- Filled zones using the hatch pattern cannot use the primitives from Altium.
the filled shapes must be rebuilt.
_ Filled zones using the hatch pattern with a very small gap are now converted
to a polygon pattern. Otherwise the calculation time can be very big.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18156
2024-06-06 16:37:28 +02:00
Jeff Young cbfc692e24 Performance for large hierarchies: symbol fields table
Don't bother to sort sheet list when we're going to
sort the symbols anyway.
2024-06-06 11:53:01 +01:00
Jeff Young 758974f5aa Performance for large hierarchies: sorting
Cache page numbers during sort.
Don't construct SCH_SHEET_PATH when reference will do.
Don't construct SCH_SHEET_PATH when KIID_PATH will do.
2024-06-06 11:53:01 +01:00
Jeff Young a6e8cfe35f Performance for large hierarchies: avoid sorting
Don't sort SCH_SHEET_LISTs if we're just scanning the doc.
2024-06-06 11:53:01 +01:00
Jeff Young 44c588f122 Performance for large hierarchies: lazy eval
Don't create SCH_SHEET_LISTs until we have to, and then
only create them once.
2024-06-06 11:53:01 +01:00
Jeff Young e543ff0578 Performance for large hierarchies: lookups
Don't bother to sort sheet lists when we're just looking
up a UUID, sheet count, other symbol units, etc.
2024-06-06 11:52:57 +01:00
Jeff Young 68fbe98b1d Performance for large hierarchies: ERC
Share constructs between ERC tests.

Large SCH_SHEET_LISTs, in particular, can be very
expensive to construct.
2024-06-06 11:41:37 +01:00
Jeff Young 9b8f1109e6 Formatting. 2024-06-06 11:41:37 +01:00
Jon Evans 10922a194c Remove extraneous cache fill per row
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18159


(cherry picked from commit 64da49f22e)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2024-06-05 16:08:45 +00:00
Mike Williams f3d2f4af01 PCB: add fields checkbox to Edit Text and Graphics
Also add missing saves for dimensions checkboxes.
2024-06-05 11:50:17 -04:00
Wayne Stambaugh 82b310f666 Do not update schematic editor net navigator when it's not shown.
Since the addition of all nets to the net navigator, performance on very
complex designs is unacceptable.  Not updating the net navigator is a
cheap and dirty short term fix.  Users with complex designs will not be
able to use the net navigator.  A better fix to resolve the performance
issues needs to be implemented.
2024-06-05 11:46:19 -04:00
Jeff Young 9fb07d886e PCB_GENERATOR_Ts are PCB_GROUP_Ts too.
Also, an item must already be in a commit to add it to a group.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17595
2024-06-05 10:51:24 +01:00
Marek Roszko 944835eefc Add PCB_VIA equality operator overload 2024-06-04 21:34:14 -04:00
dsa-t 34f0fb8f21 Revert "Don't reset the view controls state just because we are setting the already active tool state again"
This reverts commit e914c0c1a0

(cherry picked from commit 6b7b6fa3e3)

Co-authored-by: Mark Roszko <mark.roszko@gmail.com>
2024-06-04 18:03:41 +00:00
Jeff Young 8e855156c8 Import child sheets relative to project, not parent.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17785
2024-06-04 17:47:55 +01:00
Seth Hillbrand 08f181115b Use KiROUND for consistency
Ensure that it is clear we are rounding to nearest point
2024-06-04 08:55:42 -07:00
Mike Williams 7679f40b2b SCH_REFERENCE: drop separate pointer to LIB_SYMBOL
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/18115
2024-06-04 10:03:00 -04:00
Jon Evans 0b0a37aaf7 Move padstack serialization to PADSTACK
Also move a few more things from pad/via
2024-06-04 09:28:24 -04:00
Jeff Young 4f4311ba57 Use consistent positive rotation direction.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17580
2024-06-04 13:25:57 +01:00
Jeff Young 42caceb799 Tidy incorrect column width (and fix some formatting). 2024-06-04 13:00:02 +01:00
Jeff Young e5bad195b6 Fix a bunch of failures to resolve text variables. 2024-06-04 12:46:34 +01:00
Jeff Young 26fc2bd071 Reduce compiler warnings. 2024-06-04 11:18:45 +01:00
Jeff Young a74e834b33 Formatting. 2024-06-04 11:16:11 +01:00
Jeff Young 855c972156 Add regression test and example rule.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18142
2024-06-04 10:58:52 +01:00
dsa-t bc3ae8ca51 Don't construct an arc if we won't need it in pcbnew gfx importer.
(cherry picked from commit d34df3e951)

Co-authored-by: Alex Shvartzkop <dudesuchamazing@gmail.com>
2024-06-04 04:21:06 +00:00
dsa-t ca18112041 Fix ellipse angles when importing DXF.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18121


(cherry picked from commit 044a2305e3)

Co-authored-by: Alex Shvartzkop <dudesuchamazing@gmail.com>
2024-06-04 04:19:51 +00:00
Seth Hillbrand 590bd6237d Fix off-by-one error in distance check for arcs 2024-06-03 16:29:06 -07:00
Jeff Young 18e33a0957 Check drilled holes against other holes, even if laser burned.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18142
2024-06-03 21:53:37 +01:00
Seth Hillbrand 9f2c9636f0 Update conn minor check to use Advanced Config 2024-06-03 11:56:37 -07:00
Seth Hillbrand 74998790e8 Turn off incremental connectivity for small schematics
The benefit of incremental connectivity is only for larger
schematics.  For smaller schematics, the downside of larger bug surface
outweighs the current benefits
2024-06-03 11:33:29 -07:00
Seth Hillbrand d44bf89b98 Update wayland file location
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18141
2024-06-03 10:57:08 -07:00
Mike Williams 32289ffce7 schematic: fix broken undo of sheets, new and changed
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/11855
2024-06-03 13:45:52 -04:00
Seth Hillbrand 549ea93be2 Fix typo 2024-06-03 10:41:37 -07:00
xx 4dffa6f9e8 Fix equal comparison in BOM_PRESET
Fixes #18097.
2024-06-03 16:33:34 +00:00
Jeff Young ec0fdfffff ADDED: markers for excluded-from-sim items.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15382
2024-06-03 17:12:15 +01:00
Jeff Young 5e1a16e821 Regularize DNP printing & plotting with painting. 2024-06-03 12:53:37 +01:00
Jeff Young aca73b699c Fix uninitialized variables. 2024-06-03 11:44:10 +01:00
Jeff Young 6aab0d66c2 Fix uninitialized variables. 2024-06-03 11:44:10 +01:00
Jeff Young 900c7e0257 Centralize exclude-from-sim processing. 2024-06-03 11:44:10 +01:00
Jeff Young 40854cec0e Remove cover types. 2024-06-03 11:44:10 +01:00
Frank Muenstermann 63d828d5ff kicad-cli: The --precision parameter was not recognized, if unit was inch, the export crashed 2024-06-03 09:03:57 +00:00
Jeff Young aee7680a6c ADDED: support for DNP & friends at the sheet level.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/14387
2024-06-02 22:41:22 +01:00
Jeff Young 1f69680d91 Expose global Field Name Templates to symbol editor.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/2382
2024-06-02 19:31:27 +01:00
Jeff Young efd3cb115b Update Zone Manager for look & feel and coding stds. 2024-06-02 17:41:54 +01:00
charrasjp d163a72d49 French translation update 2024-06-02 15:09:08 +02:00
Jeff Young 14f3a22f3d ADDED: support editing unit in Reference Field Properties.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17362
2024-06-02 13:42:34 +01:00
Jeff Young 86d7cf5d96 Formatting. 2024-06-02 10:52:18 +01:00
Sven Pauli c7ad5efbed Implemented flip for tuning patterns. 2024-06-02 09:49:41 +00:00
Jeff Young 4a01f322ff Special-case hit-testing of filled schematic rule areas.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17879
2024-06-01 22:48:02 +01:00
Jeff Young dc8fd0996d Don't attempt to plot rule areas.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18133
2024-06-01 19:17:05 +01:00
Jeff Young 53ec5d2c19 Retain UUIDs where possible when updating footprints.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17451
2024-06-01 13:45:15 +01:00
Jeff Young 11193d2cda Make sure ERC pin-to-pin checks are always in same order.
Comparing U1.pin1 : U2.pin1 will return the same
results as U2.pin1 : U1.pin1, but will result in a
different serialization of any exclusions.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17004
2024-06-01 11:37:34 +01:00
Jeff Young 878a795be1 Formatting. 2024-06-01 11:37:34 +01:00
Alex Shvartzkop 5742ba2ef1 Remove gdk header from unix environment.cpp. 2024-06-01 11:37:37 +03:00
Alex Shvartzkop e1a8e53d07 Some CMake fixups for kiplatform. 2024-06-01 07:13:17 +03:00
Alex Shvartzkop 2bc6e5a856 kiplatform: Separate operating systems and wxWidgets ports. 2024-06-01 07:05:19 +03:00
Alex Shvartzkop 5b70983692 Detect wxWidgets port in CMake (KICAD_WX_PORT). 2024-06-01 06:49:52 +03:00
Alex Shvartzkop 6d6f6f384e Fix MSVC warning C4355: 'this': used in base member initializer list. 2024-06-01 06:49:30 +03:00
Alex Shvartzkop cf7ad330e9 Fix some platform ifdef checks. 2024-06-01 06:49:11 +03:00
Alex Shvartzkop 0336fdbd54 Update path finding in FindwxWidgets.cmake (from upstream CMake). 2024-06-01 06:48:56 +03:00
Alex Shvartzkop bc07efc076 Fix a build issue on MSVC with wx 3.3. 2024-06-01 06:48:47 +03:00
Seth Hillbrand b6f1748bb3 Update translations 2024-05-31 17:41:49 -07:00
Mark Hämmerling 3335ab3918 Translated using Weblate (German)
Currently translated at 99.0% (9347 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-06-01 02:40:43 +02:00
Wellington Terumi Uemura 4dece7334e Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (9437 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt_BR/
2024-06-01 02:40:43 +02:00
Nguyễn Ngọc Khánh d66f7da2d7 Translated using Weblate (Vietnamese)
Currently translated at 21.0% (1987 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/vi/
2024-06-01 02:40:42 +02:00
Nguyễn Ngọc Khánh 2205149034 Translated using Weblate (Vietnamese)
Currently translated at 20.8% (1969 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/vi/
2024-06-01 02:40:42 +02:00
pominglee e685e5ac14 Translated using Weblate (Chinese (Traditional))
Currently translated at 99.4% (9385 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-06-01 02:40:42 +02:00
CloverGit c9e751d896 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.7% (9411 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-06-01 02:40:42 +02:00
Henrik Kauhanen 6704e1a87f Translated using Weblate (Swedish)
Currently translated at 99.9% (9429 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-06-01 02:40:42 +02:00
Henrik Kauhanen 9377241c58 Translated using Weblate (Finnish)
Currently translated at 99.9% (9434 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/fi/
2024-06-01 02:40:42 +02:00
CloverGit e704e71ede Translated using Weblate (Chinese (Simplified))
Currently translated at 99.4% (9385 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-06-01 02:40:42 +02:00
Henrik Kauhanen 490d6359b9 Translated using Weblate (Swedish)
Currently translated at 99.4% (9384 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-06-01 02:40:42 +02:00
Jan Straka 2086add8e1 Translated using Weblate (Czech)
Currently translated at 77.9% (7352 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/cs/
2024-06-01 02:40:42 +02:00
dsa-t 1ae43f5485 Translated using Weblate (Russian)
Currently translated at 95.9% (9053 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-06-01 02:40:42 +02:00
ZbeeGin dfea8b306c Translated using Weblate (Polish)
Currently translated at 100.0% (9437 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-06-01 02:40:42 +02:00
Wellington Terumi Uemura 9ea2c4182a Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (9437 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt_BR/
2024-06-01 02:40:42 +02:00
Henrik Kauhanen d686d608c1 Translated using Weblate (Swedish)
Currently translated at 99.4% (9382 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-06-01 02:40:41 +02:00
ZbeeGin 83f32f390c Translated using Weblate (Polish)
Currently translated at 99.9% (9436 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-06-01 02:40:41 +02:00
Laurens Holst 352b73d307 Translated using Weblate (Dutch)
Currently translated at 100.0% (9437 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-06-01 02:40:41 +02:00
ZbeeGin e7526f9a87 Translated using Weblate (Polish)
Currently translated at 99.5% (9398 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-06-01 02:40:41 +02:00
Henrik Kauhanen 5f17993a9f Translated using Weblate (Swedish)
Currently translated at 99.4% (9381 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-06-01 02:40:41 +02:00
Toni Laiho eced442053 Translated using Weblate (Finnish)
Currently translated at 99.9% (9434 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/fi/
2024-06-01 02:40:41 +02:00
Pferd O cc80649014 Translated using Weblate (German)
Currently translated at 99.0% (9345 of 9437 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-06-01 02:40:41 +02:00
Seth Hillbrand ae232054f7 Revert "Remove unneeded != operator"
MSVC errors when we don't keep this operator.

This reverts commit c6499cf5db.
2024-05-31 17:38:45 -07:00
Seth Hillbrand e8c96a8a20 Fixups for a9ae86ee
Correcting a couple mistakes and clarifying rounding
2024-05-31 17:31:50 -07:00
Seth Hillbrand 382477c622 Fix sin/cos fixed values 2024-05-31 17:10:36 -07:00
Marek Roszko 8b4253cda4 Drop the first point of an arc when building an outline when there's a previous point that's being changed
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18125
2024-05-31 18:40:16 -04:00
Seth Hillbrand 2f9b10e379 Revert "Add additional 45° shortcuts for sin/cos"
Needs more testing

This reverts commit e83ca5e91d.
2024-05-31 14:40:10 -07:00
Jeff Young 5d62345cbd ADDED checkbox to turn Margin layer on/off.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/12493
2024-05-31 22:08:40 +01:00
Seth Hillbrand 79a354bf0e Unify SCH_PIN ambiguity in equality operator
Remove != operator that is not used for C++20 and reworked
SCH_PIN==SCH_ITEM operator that was not reciprocal
2024-05-31 13:42:36 -07:00
Seth Hillbrand c6499cf5db Remove unneeded != operator
C++20 defines these implicitly
2024-05-31 13:29:34 -07:00
Seth Hillbrand e83ca5e91d Add additional 45° shortcuts for sin/cos 2024-05-31 13:27:52 -07:00
Seth Hillbrand a9ae86eefd Cleanup geometry functions
Added Distance(VECTOR2) function that returns a double.  Removed
superfluous EuclideanNorm, GetLineLength, integer constructor for
EDA_ANGLE (this promotes to double in the CTOR), DistanceLinePoint and
HitTestPoints

Also extended the size for arc calculations that get distances to center
points to avoid overflow
2024-05-31 12:26:37 -07:00
Jeff Young 931de12072 Use wxWidgets to track DPI.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17981
2024-05-31 17:08:43 +01:00
Jeff Young e3f77cd410 Handle DPI_CHANGED events for 3D canvases.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17981
2024-05-31 17:08:43 +01:00
jean-pierre charras 1322e0bc73 symbol editor: allows rotation of fields in derived symbols.
Fields in derived symbols are editable, so the context menu must allow rotations.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18003
2024-05-31 17:32:31 +02:00
Jeff Young 3cc653b6ff Revert DPI-change fix.
(Jon has a better one coming.)
2024-05-31 15:46:01 +01:00
Jeff Young f907b58d17 Handle DPI-change for footprint 3D-previews in Footprint Chooser. 2024-05-31 13:48:44 +01:00
Jeff Young 2681461992 Formatting. 2024-05-31 13:35:44 +01:00
Jeff Young f3d5d4afdd Formatting. 2024-05-31 12:35:17 +01:00
Jeff Young 3be6d5c5de Setup 3D canvas for Footprint Chooser previews.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17910
2024-05-31 12:33:32 +01:00
Jeff Young 6f0a1ade01 Don't add things to the selection that aren't in the commit.
Don't process line-pairs when one has already been deleted.

Clean up created line segments when operation is cancelled.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18122
2024-05-31 11:49:24 +01:00
Jeff Young b567e4d521 Silently interpret 0 as cancel.
No need to interrupt the user's workflow.
2024-05-31 10:54:07 +01:00
Jeff Young c60796aa4f Formatting. 2024-05-31 10:46:34 +01:00
Jeff Young 7151f9a131 Formatting. 2024-05-31 10:36:51 +01:00
Jeff Young 1eb26b439a REMOVED new footprint dialog.
We now just create an "Untitled" footprint.

Also fixes a bug where the preview of new footprints
would zoom in too far.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17573
2024-05-31 10:36:51 +01:00
Seth Hillbrand 015b93b474 Fixup arc check in dp coupled
Handle arcs starting at candidate end point.
Fix total arc size

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17967
2024-05-30 22:45:33 -07:00
Marek Roszko 0354345963 Fix another spot the logger for boost test is hardcoded 2024-05-30 20:17:55 -04:00
Seth Hillbrand 75ab3d9e8b Handle arcs dp coupling
Calculate coupled arcs and spacing

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17967
2024-05-30 16:11:12 -07:00
Seth Hillbrand bffbdad9c0 Cleanup track comps 2024-05-30 14:21:51 -07:00
Seth Hillbrand 429625e311 Unify SHAPE_ARC clockwise calc.
We don't really need the extra angle calculations
2024-05-30 14:19:57 -07:00
jean-pierre charras 1c9e96c89a do not flag an empty string as translatable. 2024-05-30 15:50:32 +02:00
Jeff Young f84b66b985 Change 3D Viewer default to follow-plot-settings.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17060
2024-05-30 14:30:56 +01:00
Jeff Young 652c1d4006 Formatting. 2024-05-30 13:12:53 +01:00
Jeff Young c0635f222d Apply ExportPdf fix to remaining jobs.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17863
2024-05-30 09:19:23 +01:00
Marek Roszko 16ae81abb3 Change log level for boost test text log to message 2024-05-29 22:23:59 -04:00
Marek Roszko 4c5b4cd99f Add BOOST_TEST_CONTEXT wrap in one function 2024-05-29 22:23:59 -04:00
Alex Shvartzkop 7a0d75a5c4 Improve GRID_CELL_ICON_TEXT_RENDERER rendering on hidpi monitors. 2024-05-30 03:56:30 +03:00
Jeff Young 3cf424d929 Make sure var overrides get synced to board properties.
Also allow the board properties to override title-block properties.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17863
2024-05-30 00:09:43 +01:00
Jeff Young ac59a65d8d Resolve variables in LIB_SYMBOLs.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18099
2024-05-29 22:52:55 +01:00
Jeff Young d82522304c Improve clarity. 2024-05-29 19:53:20 +01:00
Jeff Young c828deee35 Sorting is not implemented on LIB_TREE columns.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18101
2024-05-29 18:49:11 +01:00
Jeff Young ec89d2c22e Formatting. 2024-05-29 17:56:15 +01:00
Jeff Young 15d4e114e0 Move pad checking to Footprint Checker.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18102
2024-05-29 15:25:49 +01:00
Mike Williams cc350cf279 symbol fields table: remember includeExcludedFromBOm correctly 2024-05-29 08:41:25 -04:00
Mike Williams a8daa38e83 pcb: grab unconnected needs to ignore same-footprint ratsnets items 2024-05-28 16:46:53 -04:00
jean-pierre charras 8165ec66e9 FOOTPRINT::CheckPads(): better check for hole in PHT pad.
Hole not fully inside the pad copper area is now tested.
2024-05-28 20:00:08 +02:00
Jeff Young f7b971ecb7 Setup Footprint-Editor-specific severities.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18102
2024-05-28 18:11:25 +01:00
Alex Shvartzkop 139d356065 Fix scale factors of layer box selectors. 2024-05-28 18:52:03 +03:00
Jeff Young 51004e42f4 Improve comments. 2024-05-28 15:37:11 +01:00
Jeff Young bab97f91cc Tidy up string find API usages. 2024-05-28 15:30:29 +01:00
Jeff Young 11b72c294b ADDED: expose plot-pad-numbers in plot dialog. 2024-05-28 15:30:29 +01:00
Seth Hillbrand 43a622cadf Ensure we are checking all ERC errors
Also, handle the possiblity that we return NULL when calling
DeserializeFromString in the case where we don't handle all cases or the
file is corrupted
2024-05-28 06:55:34 -07:00
Alex Shvartzkop e3e63fb1b8 Disable hidpi cursors on GTK and OSX.
wxCursor scale factors won't be supported before wx 3.3.
MSW doesn't scale cursors, so it works as expected there.
2024-05-28 16:25:01 +03:00
jean-pierre charras 68fa45dea0 Pcbnew, plot drill marks: fix incorrect plot drill mark in some cases.
If a non copper layers is added to a copper layer for plot with drill marks,
the drill mark was not visible (covered by shapes plotted from non copper layer).

Now copper layers are plotted after the non copper layers.
2024-05-28 09:52:30 +02:00
Jeff Young b88d3b13ac ADDED: sketch-pads-on-fab-layers to CLI PDF & SVG export.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18091
2024-05-27 20:59:11 +01:00
Seth Hillbrand 0881fc8aa9 Don't try to convert non-UTF8 strings in plugin
This gives asan fits as the strlen overruns.  These are not UTF-8
strings anyways
2024-05-27 11:30:43 -07:00
Seth Hillbrand 54efd32f7a Ensure nets are referenced to main board
We set new elements to the temporary board's netlist.  These need to be
updated when moving the fooprint to the main board

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17242
2024-05-27 11:30:43 -07:00
xx 5ff61ae561 Add rectangle height and width to properties
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17181
2024-05-27 17:28:32 +00:00
Jeff Young 513e68a04a Trim punctuation from end of URLs. 2024-05-27 17:06:09 +01:00
Jeff Young 4901ffd935 Formatting. 2024-05-27 17:06:09 +01:00
Seth Hillbrand 9c24a39156 Handle 2581 knockout text with multiple outlines
Previous commit removed the handling of multiple outlines.  This
restores Jeff's initial, correct handling, only minus the "UserSpecial"
nest

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18042
2024-05-27 07:29:52 -07:00
Jeff Young f3b57c20af Trim trailing punctionation from doc URLs.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18089
2024-05-27 14:17:13 +01:00
Jeff Young bc14a841cb Check for drilled hole errors in Footprint Checker.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18093
2024-05-27 13:51:21 +01:00
Jeff Young 2925d63c44 Formatting. 2024-05-27 13:04:20 +01:00
Jeff Young e9a1c3032d Update commenting following a bit of research into commit history. 2024-05-27 12:23:56 +01:00
Jeff Young 233ebb3e09 Add commenting regarding double-output of text.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18090
2024-05-27 12:14:08 +01:00
Alex Shvartzkop 20e2dddc0b Make project manager text aligned with icons, also make it scrollable. 2024-05-27 11:49:16 +03:00
Alex Shvartzkop 41b30e6ac6 Use logical size to center the bitmap in bitmap button. 2024-05-27 11:25:55 +03:00
Alex Shvartzkop d451d2f548 Make board stackup page usable on hidpi. 2024-05-27 01:44:42 +03:00
Alex Shvartzkop b6aa01a572 Accept bitmap bundles for menu items (but don't use it yet). 2024-05-27 01:02:12 +03:00
Alex Shvartzkop 284cda1fca Improve copper zone dialog layer list checkbox alignment on hidpi. 2024-05-27 01:02:12 +03:00
Alex Shvartzkop 07470efc0b Autosize bitmap buttons in wxFB. 2024-05-27 00:12:55 +03:00
Alex Shvartzkop c401e3d24b Prefer wxFB sizes in bitmap buttons. 2024-05-27 00:12:55 +03:00
Alex Shvartzkop 2c73f74112 Use bitmap bundles in 3D viewer toolbar. 2024-05-27 00:12:55 +03:00
Alex Shvartzkop 5e64bd6256 Center bitmaps in bitmap buttons by default. 2024-05-27 00:12:55 +03:00
Alex Shvartzkop 2a5903cd9b More universal way of scaling indicator icon bitmaps. 2024-05-26 22:14:52 +03:00
Jeff Young df3eaf0e03 Trim before sorting.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17046
2024-05-26 19:28:24 +01:00
Jeff Young e400d49af6 Trim covered region to bounding hull.
Otherwise a long track crossing a footprint will look
like it covers most of it.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17299
2024-05-26 18:45:58 +01:00
Jeff Young 8204577fba Throw duplicate pin error as it prevents other checks.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/14761
2024-05-26 16:18:54 +01:00
Seth Hillbrand becc0232b4 Fixup IPC2581 knockout text
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18042
2024-05-26 08:04:06 -07:00
Seth Hillbrand ab0426d620 Detect if HiDPI cursors are needed
HiDPI cursors are twice as large as regular cursors, allowing them to be
more easily seen on a HiDPI system

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16231
2024-05-26 07:51:15 -07:00
Seth Hillbrand b2e0c2606f Avoid referencing parents after deletion
We look at the parent when deleting EDA_ITEMs but when clearing the test
sheet, we delete the sheet before the pin, causing a use-after-free.
Avoid this by setting parents to null in this case

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17961
2024-05-26 07:35:46 -07:00
Jeff Young aeadec40b7 Select starting track items before expanding selection.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17432
2024-05-26 15:23:31 +01:00
Jeff Young 30b5adde17 Fix spacing/scaling of indicators on MacOS.
Also pushes indicator scaling improvements to GerbView.
2024-05-26 14:37:05 +01:00
Alex Shvartzkop 7774a43762 Fix project tree icons on Windows. 2024-05-26 13:54:12 +03:00
Alex Shvartzkop b64a30f44b Fix color swatches and color picker dialog on GTK with window scaling. 2024-05-26 13:02:37 +03:00
Alex Shvartzkop 296630d484 Allow using higher resolution bitmaps in bitmap buttons on GTK. 2024-05-26 09:23:43 +03:00
Alex Shvartzkop 72bd0c583f Fix project tree icons on GTK with 2x scaling. 2024-05-26 09:15:54 +03:00
Alex Shvartzkop e55da55e04 Remove debugging code from STEP exporter. 2024-05-26 08:05:25 +03:00
Alex Shvartzkop eff4b899bb Use bitmap bundles in launcher panel. 2024-05-26 08:05:25 +03:00
Alex Shvartzkop 1afbcb04db Improve WX_GRID col label height to avoid clipping on hidpi. 2024-05-26 08:05:25 +03:00
Alex Shvartzkop 696b86ab7d Show higher resolution icons on hidpi in project tree. 2024-05-26 08:05:25 +03:00
Alex Shvartzkop 6eb8bf3d39 Add hidpi PCM icons for launcher panel. 2024-05-26 08:05:25 +03:00
Alex Shvartzkop 0e66adbca1 Generate hidpi variants for mid size (_24) application icons. 2024-05-26 08:05:25 +03:00
Alex Shvartzkop 1ae9749429 Use bitmap bundle for auto track width button. 2024-05-26 03:56:58 +03:00
Alex Shvartzkop 067e9c308d Improve sizing in color picker dialog. 2024-05-26 03:56:58 +03:00
Alex Shvartzkop 0b4ff7b859 Improve indicator icons in hidpi monitors. 2024-05-26 01:16:47 +03:00
Jeff Young f1aea810cb Add knockout text support to IPC2581.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18042
2024-05-25 22:30:41 +01:00
Jeff Young b0dddb6d95 Formatting. 2024-05-25 22:06:38 +01:00
Jeff Young 34dbee0693 Show text item anchor locations in schematic.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17668
2024-05-25 21:40:37 +01:00
dsa-t 9a1b3471fd Revert "Improve toolbar bitmap redraw performance on Windows."
This reverts commit 6170151cbc
2024-05-25 20:32:48 +00:00
Alex Shvartzkop b89d4a7f20 3D model export improvements:
- Option to export pads separately from tracks+vias
- Options export silkscreen and soldermask as flat faces
- Improve 3D model export dialog layout
- Use VisMaterialTool to specify metallic-roughness for glTF.
- Less OCCT boolean operations (faster, less bugs)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/2072
2024-05-25 22:27:01 +03:00
Alex Shvartzkop 6170151cbc Improve toolbar bitmap redraw performance on Windows.
Especially noticeable on high dpi.
2024-05-25 21:47:51 +03:00
Marek Roszko 7dee29f70a Hackfix some cases the IME on windows locks up
Asking the IME to cancel when the canvas takes focus fixes the case where:

- Windows input lang set to Chinese
- Input mode set to english instead of chinese
- You spam the M key while launching a sch/pcb from the kicad.exe until the editor opens
- The windows would then normally be frozen
2024-05-25 13:25:10 -04:00
jean-pierre charras 3065ae1f01 PANEL_EESCHEMA_COLOR_SETTINGS: fix incorrect symbol drawing.
Graphics items were not modified when the LIB_SYMBOL Y axis orientation was
modified, making the symbol body not visible in panel canvas.
2024-05-25 18:01:51 +02:00
Marek Roszko 808517dd74 Remove no longer needed hack on msw with wx 3.2.5
wxButton::GetDefaultSize was fixed and returns the correct size now
2024-05-25 10:45:27 -04:00
Marek Roszko ba65231f6b Move vcpkg to wx 3.2.5 2024-05-25 10:29:02 -04:00
Jeff Young 1c77e087a7 Add a sprinkling of GetPixelScaleFactor() for MacOs. 2024-05-25 14:26:43 +01:00
Jeff Young 17308e821f Formatting. 2024-05-25 12:05:13 +01:00
Jeff Young 26fe4c05e1 CmpNoCase() returns 0 for a match (which evals to false as a bool).
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18087
2024-05-25 12:05:13 +01:00
Jeff Young 89fa83bcc2 Formatting. 2024-05-25 12:05:13 +01:00
Alex Shvartzkop 894bf45480 Make color picker dialog usable on hidpi monitors.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17860
2024-05-25 04:13:13 +03:00
Marek Roszko e9fde0051f Don't let CaptureCursor fight modal dialog 2024-05-24 18:57:24 -04:00
Alex Shvartzkop 1971faa81e Fix very tall Plot dialog on GTK.
Some scrollable controls need wxFIXED_MINSIZE, on some platforms, apparently.

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

8.0 commit: f9a9db6503
2024-05-24 23:42:10 +03:00
Jeff Young bda0a73c63 Set swatch background colors.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17564
2024-05-24 21:26:20 +01:00
Jeff Young a678d0d710 Delete tuning patterns in Unroute Selected.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18065
2024-05-24 19:24:09 +01:00
Jeff Young ecb7cd6b84 Fix color-swatch sizing on MacOS.
Also fixes BITMAP_BUTTON sizing.
2024-05-24 18:27:15 +01:00
dsa-t 6baceedea4 Switch length tuner settings action scope to global to make the hotkey work.
(cherry picked from commit 8d001a8031)

Co-authored-by: Alex Shvartzkop <dudesuchamazing@gmail.com>
2024-05-24 14:47:48 +00:00
Jeff Young 397ae3bafd Support wildcards and regEx's in Net Inspector.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18071
2024-05-24 12:24:05 +01:00
Marek Roszko 132ecee665 Don't reset the view controls state just because we are setting the already active tool state again 2024-05-23 22:23:34 -04:00
Jeff Young 032b5a6d65 Fetch board finish before exporting stackup to clipboard.
Also fixes some backward logic in setting modified flag.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17089
2024-05-23 18:30:58 +01:00
Alex Shvartzkop 884051fae1 Update status bar widths on DPI change. 2024-05-23 20:22:13 +03:00
Jeff Young f7c7791b6c Honour shift-key for spin buttons in 3D preview.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17541
2024-05-23 17:01:27 +01:00
Jeff Young 98496dfa60 Formatting. 2024-05-23 16:31:53 +01:00
Jeff Young d5c3a4036c Process clearance rules for plated holes in router.
Also makes sure the clearance is shown for a collision,
even if the preference for showing clearances is off.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18078
2024-05-23 16:26:43 +01:00
Jon Evans 81efc7778a Fix bad clearance logic in cecc1a2f
(cherry picked from commit a1cd73e730)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2024-05-23 15:21:40 +00:00
Mike Williams 3f4c82b39b annotate: cleanup Annote event name to match button 2024-05-23 09:47:30 -04:00
Mike Williams 8d8fa155f7 annotate: remove dead code
Never gets called as we will always have a message.
2024-05-23 09:47:30 -04:00
Mike Williams 39f355e71d annotation: also report cleared annotations 2024-05-23 09:47:30 -04:00
Jon Evans 5b3b0ff836 Use true arc collision for segment<>arc
Using an approximation here results in different collision
results for segment<>arc than point<>arc, which
can cause odd behavior in the router.
2024-05-23 08:56:10 -04:00
Wayne Stambaugh 795a9eea60 Coding policy fixes.
This is primarily to change all instances of wxLogDebug with wxLogTrace
so developers do not have to sift through debugging output that is always
dumped.  The only exception is for code blocks built in debug builds and
called on demand for dumping object states.
2024-05-23 07:59:45 -04:00
Jeff Young edae328ca6 Push multi-sweep traces down into MathPlot.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17215
2024-05-23 12:24:56 +01:00
John Beard 0bcd5e5795 Eeschema: Also make 'note' backgrounds translucent on selection
For the same reason as device backgrounds - it obscures everything
else while moving a filled shape.
2024-05-23 16:51:06 +08:00
John Beard 5a69b163a3 Fix translucency when selecting a filled shape in the symbol editor
Overriding the color in draw() throws away the alpha that was set
due to aItem->IsSelected() in getRenderColor().

Instead, get the layer BG fill color in getRenderColor() before
the translucency is applied.
2024-05-23 16:51:06 +08:00
Alex Shvartzkop e817f68f8e Remove unused header. 2024-05-23 08:30:55 +03:00
Alex Shvartzkop ef148d372d Set current scale factor for generated bitmaps in color swatch.
Therefore, the bitmaps will be drawn as-is.
2024-05-23 08:30:55 +03:00
John Beard fd4c15517f Eeschema: Fix selection of items inside filled shapes
The selection heuristic broke down when one item was a filled
shape. Because all hit tests would succeed with distance 0 for
these shapes, they would always be considered the closest item
to the exclusion of all else, which made it very hard to
click on a graphic inside a filled shape.

Now, recognise when an item would be "dominating" and
decline to promote it to the "closet" spot. It will still
be selectable if there are no other items nearby, or if
there are multiple shapes.
2024-05-23 12:53:09 +08:00
Alex Shvartzkop cd83666b72 Draw x2 and x3 swatch bitmaps in layer selectors. 2024-05-23 05:09:39 +03:00
Alex Shvartzkop c2a80092d7 Draw fp grid layer swatch in proper scaling on hidpi. 2024-05-23 05:09:39 +03:00
Seth Hillbrand f74d1060d4 Ensure that the copper conn check re-adds epsilon
When checking if the particular rule is what is being checked, we rely
on the value of the minimum width.  Since we modified that to allow
width checking, this re-adds it for the comparison
2024-05-22 16:30:09 -07:00
Seth Hillbrand bce560d05f Include DRC Epsilon in connection width checker
Avoids rounding errors flagging connections too small by nanometers
2024-05-22 16:15:51 -07:00
Alex Shvartzkop 85f5b8849e Invalidate control sizes in ACTION_TOOLBAR. 2024-05-23 00:40:47 +03:00
Alex Shvartzkop 492ce600a4 Improve message panel alignment on hidpi monitors. 2024-05-23 00:40:47 +03:00
Alex Shvartzkop 77b285c8ce Improve BITMAP_BUTTON behaviour when changing DPI. 2024-05-23 00:40:47 +03:00
Jeff Young 856d03dbe2 Create signals from .save directives (as well as .probe directives).
(Also fixes a bug where we only looked for a single
token after .probe.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18057
2024-05-22 22:37:57 +01:00
Jeff Young 3944d8abc9 Formatting. 2024-05-22 22:37:57 +01:00
JamesJCode f88f6a053b Cleanup: Remove unused variable 2024-05-22 22:08:07 +01:00
JamesJCode 76cb7cf54a Clear all dirty connectivity flags on symbols
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17984

When moving / deleting a power symbol, in some instances the
symbol is marked dirty, and sometimes the pin (depending on
whether the symbol is the primary edited item, or whether
the pin is identified through an edited item subgraph). If
the pin and the symbol are marked dirty, the pin dirty flag
was not being cleared.

Additionally, not all extracted items were being deleted
from subgraphs correctly.

Both resulted in dirty state and duplicated items in the
subgraphs during incremental connectivity, which resulted
in essentially corrupted subgraph states.
2024-05-22 21:51:02 +01:00
Seth Hillbrand 47e4ebb32a Re-enable moving of all footprint text in board
Seems like a lot of people really like to be able to modify the text
positions/content of their footprints

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18024
2024-05-22 10:36:12 -07:00
Jeff Young debc94ff49 Rewrite Eagle rotated text algorithm.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18019
2024-05-22 18:18:47 +01:00
jean-pierre charras 6fc662188f Gerbview: fix a minor issue.
When the option "always hide all layers but active" is set, the active layer
changed using hotkeys or Toolbar layer selector did not update the visible
selection.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18059
2024-05-22 17:25:01 +02:00
John Beard 882c766493 Always update geometry on dimension property change
Anything that changes the text may also need to change the geometry,
as the text might cause knockouts of the dimension lines.

Resolves several avenues for the property manager to make changes
that 'forget' to update aspects of dimensions.
2024-05-22 22:08:51 +08:00
John Beard af74d2a746 Pcbnew: Fix context menu when moving
The EDIT_TOOL is actually 'co-operating' with the SELECTION_TOOL
by putting its tools into the SELECTION_TOOL's menu. This means
the EDIT_TOOL::m_menu is sad and empty inside, and if you show it,
it either doesn't show at all, or a tiny stub is shown.
2024-05-22 11:15:52 +08:00
Jeff Young f4f3f52fd4 Improve Eagle rotated text importing.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18019
2024-05-22 01:16:06 +01:00
Jeff Young 560f6f87e5 Silkscreen clearance tests are run across layer pairs.
(So any rule areas must pretend they're on all the
given side's layers to get expected results.)
2024-05-22 01:16:06 +01:00
Jeff Young ab2fdfb9cc Formatting. 2024-05-22 01:16:06 +01:00
Seth Hillbrand 819bdf4372 Fix qa failure 2024-05-21 16:26:00 -07:00
Roberto Fernandez Bautista ee3533baeb kicad-cli sym export svg: Ensure bounding box is correctly calculated
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18062


(cherry picked from commit 3e5ceaa319)

Co-authored-by: Roberto Fernandez Bautista <roberto.fer.bau@gmail.com>
2024-05-21 20:00:35 +00:00
jean-pierre charras a53dd998b9 Clipper2: fix a compil warning with gcc 14 (already fixed in Clipper2 repo) 2024-05-21 19:56:49 +02:00
Seth Hillbrand 3aa5c1885f Update translations 2024-05-21 09:38:53 -07:00
Ivan Chuba dbf74a4be1 Translated using Weblate (Ukrainian)
Currently translated at 84.5% (7951 of 9405 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/uk/
2024-05-21 18:36:29 +02:00
CloverGit 930c6acb33 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (9399 of 9405 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-05-21 18:36:29 +02:00
Henrik Kauhanen 30a5c8bb55 Translated using Weblate (Swedish)
Currently translated at 99.9% (9400 of 9405 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-05-21 18:36:28 +02:00
pominglee c249ac0506 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (9405 of 9405 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-05-21 18:36:28 +02:00
pominglee 3406915b51 Translated using Weblate (Chinese (Traditional))
Currently translated at 99.9% (9404 of 9405 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-05-21 18:36:28 +02:00
pominglee 5087244ca6 Translated using Weblate (Chinese (Traditional))
Currently translated at 99.9% (9404 of 9405 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-05-21 18:36:28 +02:00
pominglee 08a9d66ab3 Translated using Weblate (Chinese (Traditional))
Currently translated at 99.9% (9404 of 9405 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-05-21 18:36:28 +02:00
pominglee 91a71b45a7 Translated using Weblate (Chinese (Traditional))
Currently translated at 99.9% (9404 of 9405 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-05-21 18:36:28 +02:00
Toni Laiho 81705edb0f Translated using Weblate (Finnish)
Currently translated at 99.9% (9404 of 9405 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/fi/
2024-05-21 18:36:28 +02:00
Ulices bebdc54d24 Translated using Weblate (Spanish (Mexico))
Currently translated at 96.5% (9082 of 9405 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-05-21 18:36:28 +02:00
Nguyễn Ngọc Khánh 3c0d050e97 Translated using Weblate (Vietnamese)
Currently translated at 20.5% (1937 of 9405 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/vi/
2024-05-21 18:36:28 +02:00
2tama3 3fe8851e29 Translated using Weblate (Japanese)
Currently translated at 97.1% (9141 of 9405 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-05-21 18:36:28 +02:00
Pferd O cbd39e65e2 Translated using Weblate (German)
Currently translated at 99.6% (9371 of 9405 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-05-21 18:36:28 +02:00
2tama3 44e9a173e6 Translated using Weblate (Japanese)
Currently translated at 97.1% (9141 of 9405 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-05-21 18:36:28 +02:00
Tokita, Hiroshi c697aa450b Translated using Weblate (Japanese)
Currently translated at 97.1% (9141 of 9405 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-05-21 18:36:28 +02:00
Ettore Atalan f9871a21ad Translated using Weblate (German)
Currently translated at 99.5% (9360 of 9405 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-05-21 18:36:28 +02:00
Tokita, Hiroshi 975034486c Translated using Weblate (Japanese)
Currently translated at 96.9% (9118 of 9405 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-05-21 18:36:28 +02:00
Yutaro Urata2 f865a0ae23 Translated using Weblate (Japanese)
Currently translated at 96.9% (9118 of 9405 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-05-21 18:36:27 +02:00
Tokita, Hiroshi 99e8eac2c1 Translated using Weblate (Japanese)
Currently translated at 96.9% (9118 of 9405 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-05-21 18:36:27 +02:00
Toni Laiho 1c9a7250a4 Translated using Weblate (Finnish)
Currently translated at 99.9% (9403 of 9405 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/fi/
2024-05-21 18:36:27 +02:00
pominglee 528f59e188 Translated using Weblate (Chinese (Traditional))
Currently translated at 99.5% (9361 of 9405 strings)

Co-authored-by: pominglee <pominglee@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
Translation: KiCad EDA/master source
2024-05-21 18:36:27 +02:00
Andrew a70ed9c644 Translated using Weblate (Chinese (Traditional))
Currently translated at 99.5% (9361 of 9405 strings)

Co-authored-by: Andrew <yenchang.lin@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
Translation: KiCad EDA/master source
2024-05-21 18:36:27 +02:00
zly20129 6952016bf9 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.7% (9384 of 9405 strings)

Co-authored-by: zly20129 <zly20129@icloud.com>
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
Translation: KiCad EDA/master source
2024-05-21 18:36:27 +02:00
Laurens Holst 024c4d357a Translated using Weblate (Dutch)
Currently translated at 99.1% (9328 of 9405 strings)

Co-authored-by: Laurens Holst <laurens@grauw.nl>
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
Translation: KiCad EDA/master source
2024-05-21 18:36:27 +02:00
Tokita, Hiroshi 35f9b79f87 Translated using Weblate (Japanese)
Currently translated at 96.9% (9117 of 9405 strings)

Co-authored-by: Tokita, Hiroshi <tokita.hiroshi@fujitsu.com>
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
Translation: KiCad EDA/master source
2024-05-21 18:36:27 +02:00
Henrik Kauhanen 1ecb58058a Translated using Weblate (Finnish)
Currently translated at 97.9% (9212 of 9405 strings)

Translated using Weblate (Swedish)

Currently translated at 99.9% (9399 of 9405 strings)

Translated using Weblate (Finnish)

Currently translated at 97.9% (9211 of 9405 strings)

Co-authored-by: Henrik Kauhanen <henrik@kauhanen.se>
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/fi/
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
Translation: KiCad EDA/master source
2024-05-21 18:36:27 +02:00
Wellington Terumi Uemura b1c2833b5d Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (9405 of 9405 strings)

Co-authored-by: Wellington Terumi Uemura <wellingtonuemura@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt_BR/
Translation: KiCad EDA/master source
2024-05-21 18:36:27 +02:00
ZbeeGin 5d1a2ed968 Translated using Weblate (Polish)
Currently translated at 100.0% (9405 of 9405 strings)

Translated using Weblate (Polish)

Currently translated at 99.8% (9394 of 9405 strings)

Co-authored-by: ZbeeGin <zbeegin@op.pl>
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
Translation: KiCad EDA/master source
2024-05-21 18:36:27 +02:00
Seth Hillbrand e097f88d56 Avoid snapping to edge cuts when routing
Snapping happens to elements on copper layers but edge cuts is only
_virtually_ on copper layers.  We need to set its routable flag off to
ensure we don't force-snap to the snap points

(cherry picked from commit c248993a84)
2024-05-21 09:34:45 -07:00
Seth Hillbrand 4a800adffc Avoid int overflow in collisions
When calculating arc collisions, avoid overflowing the integer distance,
which gives a false nearest point

(cherry picked from commit 0a227ea916)
2024-05-21 09:34:45 -07:00
Seth Hillbrand 64e3e17143 Reserve shift for grid modification
(cherry picked from commit f75e6dae84)
2024-05-21 09:34:45 -07:00
Seth Hillbrand f22c904352 Ensure that arc closest positions are matched
We switch from squared to absolute calcualtion when calling into the arc
collision so be sure to catch the new positions and distances

(cherry picked from commit 160a493885)
2024-05-21 09:34:45 -07:00
Seth Hillbrand 8147527437 Optimize SHAPE_ARC collisions
Handle arcs that are actually circles

Ensure that we get a good clearance value even inside arcs
2024-05-21 09:34:45 -07:00
Seth Hillbrand be0e058807 Optimize ARC hulls in PNS
If we can't route through the arc opening, then it is effectively a
circle and we can treat it as such.
2024-05-21 09:34:45 -07:00
Seth Hillbrand 83ad0d5fad Honor Ctrl+Shift combo when starting routing
We want to be able to start routing at an arbitrary point if we
explicitly disable the snapping and grid together
2024-05-21 09:34:45 -07:00
Seth Hillbrand 57c0953c39 Return closest point on line-circle intersection
Don't only look for the segment endpoints when asking the closest point.
If we have a collision, we need to get the collision point
2024-05-21 09:34:45 -07:00
Jeff Young a5436c92d1 Fix build issue. 2024-05-21 17:16:21 +01:00
John Beard ee81d1d880 Temporarily disable dimension angle property access to fix build 2024-05-21 22:11:28 +08:00
John Beard c36efec4b2 Remove evil const that breaks non-Windows compilers 2024-05-21 21:49:49 +08:00
Jeff Young e332320108 Handle font when reading render cache.
(Also fixes a bug where the cache's triangulation wasn't
cached.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17666
2024-05-21 11:31:35 +01:00
Alex Shvartzkop 4cc29184c2 Improve Layer field spacing in footprint properties. 2024-05-21 04:11:59 +03:00
Alex Shvartzkop ba5e4b613f Don't show hotkeys in grid layer selector. 2024-05-21 04:11:59 +03:00
John Beard f941123519 Fix dimension orientation properties
Move text orientation to the text properties section (the
dimension IS an EDA_TEXT, but the user doesn't know that!)

Add the "keep aligned" checkbox, and make sure knockouts and
alignments are recomputed correctly.
2024-05-21 08:56:28 +08:00
Alex Shvartzkop 73e0498768 Improve hidpi color swatch sizes in layer selectors on MSW. 2024-05-21 03:46:09 +03:00
Alex Shvartzkop 5f153eef7f Vertically center the color swatch in grid layer selector. 2024-05-21 03:46:09 +03:00
Alex Shvartzkop 4e306a7d76 Remove useless method (ResyncBitmapOnly) 2024-05-21 03:46:09 +03:00
Jeff Young cb76ad3206 Add unit & body style property access.
(It had gotten lost in SCH_ITEM/LIB_ITEM collapse, but
then again the old version didn't work right
anyway.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18049
2024-05-20 23:37:59 +01:00
jean-pierre charras 59a2de7408 Dialog Export step: fix an issue when exorting a modified board file.
the DIALOG_EXPORT_STEP uses a auto saved copy of the current board to
create the step file (using kicad_cli).
But this file is not associated to a corresponding .kicad_pro file, and
this can create some issues (like the KIPRJMOD not defined)
So create a copy of the current board to export associated to the auto saved board file.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16973
2024-05-20 21:04:33 +02:00
Jeff Young 0ff59bc60e We can only knockout a pad if we're plotting the pad shape.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17166
2024-05-20 19:48:06 +01:00
Jeff Young 826b72c499 Don't suppress hole plotting for utility layers.
Also simplifies the handling of DXF outline plotting.

Also removes some comments which were no longer accurate.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17166
2024-05-20 19:48:06 +01:00
Mike Williams 52f9060b3b Symbol Fields Table: make sure power symbols don't get added by commits
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/17544
2024-05-20 14:11:38 -04:00
Mike Williams a81891053e Schematic: add Power tab to searcher 2024-05-20 13:59:42 -04:00
Mike Williams 8e286d44fc Update Footprint: add checkbox for text content
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/17935
2024-05-20 09:16:04 -04:00
Mike Williams 21022b4fa4 Symbol Fields Table: better handle variable fields with attributes
Attributes need to be checked first since we do some internally hackery
to make the checkboxes work.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/18005
2024-05-20 08:52:00 -04:00
John Beard ce758adca3 Enable horizontal scroll panning
Allow a horizontal scroll event to fall through to the panning branch.

This still restricts zooming to use only the vertical axis, but it
(re-?)enables the horizontal pan function that currently doesn't work
even if the user has set "allow horizontal panning", as the horizontal
scroll doesn't have a modifier, which is the default for vertical scroll
zoom, and thus it skips over the whole panning branch.

If the user has not set horizontal panning, the earlier early return
means that there is no handling of any horizontal scroll event, so this
won't change anything for these users.
2024-05-20 19:23:23 +08:00
John Beard caee430761 No longer auto-set the Footprint field when setting the FPID
This avoids forcing the field to the footprint name in the
library editor, which gets in the way. This doesn't specifically
inhibit the use of the field, and doesn't interfere with fields
users may have set manually (it can be cleared manually if
wished).

Removing the footprint field entirely either from all footprints
or from footprints in fpedit is quite a bit more invasive to
existing designs.

(cherry picked from commit 44b0ef64e8)

Cherry-picking forward to master to at least keep things consistent
for the time being.

Relates-To: https://gitlab.com/kicad/code/kicad/-/issues/17998
2024-05-20 17:32:02 +08:00
John Beard 6992afeb38 Consider a bus entry hitting a wire corner or tee to be dot-worthy
This doesn't change the connectivity, it just makes putting the
dot more closely match what the connectivity already does.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/18046
2024-05-20 12:40:29 +08:00
John Beard 6313b58ad6 Break out junction analysis so it can be tested in isolation
There are some corner cases with bus entries that could do with
care and it's a bit tricky to keep all the cases in mind at once!
2024-05-20 12:40:29 +08:00
John Beard d3e03c51bf Bus unfold: snap the entry to the bus, even if the cursor isn't right on the bus
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/18011
2024-05-20 12:40:06 +08:00
Alex Shvartzkop 615f216ef6 STEP export: don't double-check the wire. 2024-05-19 04:08:43 +03:00
Alex Shvartzkop 1a0ce67155 STEP export: reverse Wire when adding it to Face as a hole.
Better fix for https://gitlab.com/kicad/code/kicad/-/issues/17446

(cherry picked from commit 1264230973)
2024-05-19 04:02:35 +03:00
Alex Shvartzkop 6dd5c7d733 Make IBIS errors visible / more obvious.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18041

(cherry picked from commit 6dfd417767)
2024-05-19 01:44:56 +03:00
Jon Evans 90ee5e097a Clear undo/redo lists when removing board layers
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17613
2024-05-18 18:16:07 -04:00
Jon Evans 7a3db2d176 Don't drag multiple coincident vias
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17915
2024-05-18 17:50:52 -04:00
Alex Shvartzkop 3f704cb1f1 Fix an assert in isCopperOutside.
(cherry picked from commit dfd8aa402d)
2024-05-18 22:52:41 +03:00
Alex Shvartzkop e00219f459 STEP export: allow closing (and constructing) the wire with 1nm edges.
This is ok (and required) because we don't mess with BRepBuilderAPI::Precision nowadays.

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

(cherry picked from commit 5b1c84b5dd)
2024-05-18 22:52:41 +03:00
Jon Evans aaf3142e9a Fix broken hit test for arcs in via placer
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17844
2024-05-18 13:12:12 -04:00
Jeff Young d82b149f29 Make hole-to-hole report tag match constraint name.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18040
2024-05-18 15:44:03 +01:00
Jon Evans 4f3117aea0 Altium: avoid crash when imported zone has no fill
Fix https://gitlab.com/kicad/code/kicad/-/issues/18025
2024-05-17 20:16:01 -04:00
Jeff Young af5ed5a118 Reset zone offsets when exporting footprints.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17794
2024-05-17 21:28:30 +01:00
Jeff Young ea72beb2f7 Remove & then re-add undo items to parent group.
Removing the item from the board will also remove it
from any parent group, which then wasn't getting
restored.  This makes it more clear that we need to
remove and then re-add.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18017
2024-05-17 19:34:21 +01:00
Jon Evans 7f03666f96 Support LIB_ID queries in searchFootprints too
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18039


(cherry picked from commit fee0028ee9)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2024-05-17 17:57:42 +00:00
Jeff Young 25bb3f77fa Fix keep-upright algo for footprint text.
Also removes PCB_FIELDs from rotation centre calc in
footprint editor if there is other stuff selected.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16896
2024-05-17 18:34:44 +01:00
Alex Shvartzkop 0772739cf1 3D model export: Improve 3D layer placement calculation algorithm.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18035
2024-05-17 18:20:24 +03:00
Jon Evans 4c42f5dae0 Remove extra NeedRIGHT in textbox parser
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18033
2024-05-17 09:05:04 -04:00
Jeff Young 26906f383c Expose violation severity for co-located holes.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18028
2024-05-17 11:15:44 +01:00
Jeff Young c5162f5483 Fix PEGTL flagParam grammar.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16393
2024-05-17 11:15:44 +01:00
John Beard 7e02f1254e Remember the bus unfold label orientation between invocations 2024-05-17 09:55:40 +08:00
Jon Evans 2836025402 Clear field listener when quitting
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18016
2024-05-16 20:49:27 -04:00
Alex Shvartzkop fd438cb8e0 VRML to XCAFDoc reader is only available in OCCT 7.7.0+ 2024-05-16 22:52:19 +03:00
Alex Shvartzkop 8fd12d8b7e Allow reading VRML models for glTF export.
Note that some VRML 2.0 models fill fail until our patches are integrated into OCCT 7.9.0.
2024-05-16 21:57:48 +03:00
Seth Hillbrand 5e5741edd3 Minor optimizations
Most of the lines in KiCad are on 45° angles.  We can avoid sqrts by
recognizing that this implies the x/y values are the same.  Therefore,
the length of the hypotenuse is sqrt(2) * x.
2024-05-16 11:50:48 -07:00
Seth Hillbrand 9fbda137cb Free item memory when closing schematic window
This fires the dtor for each item on the screen, allowing us to properly
close and remove them from the connection graph

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17961
2024-05-16 09:59:10 -07:00
Seth Hillbrand f61ee3ff4b Remove unused code generation path
After 11 years, I doubt we're making this file format
2024-05-16 09:19:06 -07:00
Jeff Young f7bef5e09b Generalize EnhanceAttr() function.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17735
2024-05-16 16:28:13 +01:00
jean-pierre charras 87d3d38552 Eeschema, Pin helpers: fix wrong label orientation if the symbol is rotated
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18012
2024-05-16 17:15:06 +02:00
Jeff Young ea013f3ca3 Fill device colour on foreground layer.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18002
2024-05-16 15:24:11 +01:00
Alex Shvartzkop 2179685dd2 STEP export: Use TDocStd_XLinkTool to copy model with colors instead of our DIY routine.
Now supports older OCCT versions.
Also puts components at a higher level in the hierarchy.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17549
2024-05-16 13:01:40 +03:00
Jeff Young a4583fdbc1 Separate out selection processing for dragging footprints.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18010
2024-05-16 10:27:54 +01:00
dsa-t e2294a769a Revert "STEP export: Use TDocStd_XLinkTool to copy model with colors instead of our DIY routine."
This reverts commit f735c9bdc2
2024-05-15 22:55:19 +00:00
Jeff Young 98f4e60b90 Contour cache must be sensitive to size.
(While we scale the contours afterwards, font hint
data is size-sensitive so the contours are already
size-specific.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18014
2024-05-15 23:36:57 +01:00
Alex Shvartzkop f735c9bdc2 STEP export: Use TDocStd_XLinkTool to copy model with colors instead of our DIY routine.
Also puts components at a higher level in the hierarchy.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17549
2024-05-16 01:33:06 +03:00
jean-pierre charras f17b13655b DIALOG_SYMBOL_FIELDS_TABLE::syncBomPresetSelection(): fix not working comparison
for non English languages.

The main issue was the function compared a English string to a translated string.
However, even with this fix, the code, although working, is not very good:
It compare 2 members (BOM_PRESET .sortField string) that are not very significant
and can be or not translated.
2024-05-15 16:25:05 +02:00
Jeff Young 498d2c9db1 Lazily re-evaluate worst-clearance cache.
This prevents crashes when trying to re-evaluate
during destruction, etc. and is a cleaner solution
than trying to keep a flag updated.

It should also be a performance win for very large
documents.

Also implements proper threadlocking for the cache.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17950
2024-05-15 14:11:11 +01:00
Jeff Young e0e9321ea9 Consistency in command names.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17314
2024-05-15 13:50:42 +01:00
Alex Shvartzkop 18fde2b9cb Fix background transparency option in kicad-cli pcb render.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17865
2024-05-15 14:46:53 +03:00
Jeff Young 20b2e11f21 Only toggle net selection when coming from hotkey.
(The context menu has separate commands for highlight
and clear highlight.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17709
2024-05-15 12:44:33 +01:00
Jeff Young 02bc093b55 Use consistent sorting for footprint libs.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17731
2024-05-15 10:56:09 +01:00
Jeff Young 9e1330184c Patch another dynamic_cast-across-compile-unit-boundaries issue. 2024-05-15 10:55:51 +01:00
Jeff Young fa78c24a16 Formatting. 2024-05-15 10:55:51 +01:00
Jon Evans ea4ade7350 Fix broken setter 2024-05-14 23:13:31 -04:00
Jon Evans e16130a02c Move pad and via properties into PADSTACK 2024-05-14 20:57:56 -04:00
Jon Evans c800fb790d Start unifying padstack properties 2024-05-14 20:57:56 -04:00
Alex Shvartzkop 0e58f1bad4 Improve approximateLineChainWithArcs algorithm. 2024-05-14 18:07:53 +03:00
Alex Shvartzkop e71789bab0 Minor alignment fixes in Plot dialog and Common settings. 2024-05-14 17:44:16 +03:00
Wayne Stambaugh c3360d8c43 Fix Eagle schematic arc orientation and field visibility issues.
This does not fix all field visibility and position issues.  This is due
to LIB_SYMBOL objects not supporting per unit field properties.  The
current Eagle importer sets multiple unit symbol field properties to the
last unit parsed in the Eagle schematic file.  The upcoming two pass
importer will resolve this issue.
2024-05-14 10:13:08 -04:00
Alex Shvartzkop 798db3b5c7 Improve "Selected file contains multiple footprints" string. 2024-05-14 16:04:05 +03:00
Jeff Young 8aaca0509c More PEGTL tomfoolery. 2024-05-13 21:41:58 +01:00
Petri Hodju 4920c6b00b remove item from schematic's connection graph on destruction
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/17961
2024-05-13 20:41:31 +00:00
Jeff Young 086e609c3d Reimplement bracedExpr and token lists for CPL models only.
This prevents the incompatibility between token lists
and single-token param-value pairs.
2024-05-13 21:28:24 +01:00
Jeff Young 2921d47fb3 Tighter control over braced-expression list separators. 2024-05-13 21:19:23 +01:00
Jeff Young 8bb807f170 Remove support for multiple token values for CPL models.
It breaks param lists which contain single-token params
(ie: those without the "=<value>" part).
2024-05-13 21:10:02 +01:00
Jeff Young 3e0c598500 Honour LAYER, SHEETNAME and SHEETPATH variable overrides on CLI.
Also allows the LAYER variable to work automatically
if you're plotting/exporting a single layer.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17680
2024-05-13 20:04:00 +01:00
Jeff Young c659b46d5e Formatting. 2024-05-13 19:21:20 +01:00
Jeff Young 255a7d6f06 ADDED: ability to remove ignored tests from ERC/DRC list.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17681
2024-05-13 17:09:54 +01:00
Jeff Young b934914c59 Allow .ends to be preceeded by whitespace.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16560
2024-05-13 13:36:35 +01:00
jean-pierre charras cae3be6bac Fix minor compil warnings 2024-05-13 11:50:35 +02:00
Jeff Young d9a6b2aec2 Use display titles for axes in CSV output.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17324
2024-05-13 00:36:18 +01:00
Jeff Young 667fedd9a9 Formatting; include cleanup. 2024-05-12 23:56:59 +01:00
Jeff Young c8d1c1f1a4 Repair variable resolution recursion guard. 2024-05-12 23:47:44 +01:00
Jeff Young 662a6d24e7 Improve robustness. 2024-05-12 23:30:29 +01:00
Jeff Young 6cc534182a Simplify rotation code. 2024-05-12 23:22:13 +01:00
Jeff Young 20cde51b43 Fix numerous bugs in schematic item rotation.
(This will probably introduce some new ones too, but
it was so broken it's hard to know where to start.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17921
2024-05-12 20:43:08 +01:00
Jeff Young e73d2a32dc ADDED checkbox for saving SPICE digital event data.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17828
2024-05-12 18:24:53 +01:00
Jeff Young 0008991f02 Support multiple brace-expressions for CPL model lines.
(Nested brace-expressions, on the other hand, are *not*
an ngspice thing.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17824
2024-05-12 18:24:53 +01:00
Thomas Pointhuber a44c106f62 Migrate Altium pcblib test to BOOST_DATA_TEST_CASE and use FootprintNeedsUpdate for equality checking 2024-05-12 18:41:31 +02:00
Thomas Pointhuber 21b6b5efbb Do not rely on the existence of a BOARD* object in padNeedsUpdate
This allows us to use this check in unit-tests without a board attached
2024-05-12 18:30:49 +02:00
Thomas Pointhuber 3ade85bc8d Fix compilation error caused by trying to include boost/test/data/test_case.hpp by default 2024-05-12 17:29:40 +02:00
Thomas Pointhuber 0890594f75 Altium: migrate test_altium_parser_utils.cpp to use BOOST_DATA_TEST_CASE 2024-05-12 17:10:45 +02:00
Thomas Pointhuber 01892ab98f Altium: extend tests to handle new cases introduced with commit b7460f29b4 2024-05-12 17:01:30 +02:00
Thomas Pointhuber 4aca6ba294 Change test_altium_parser.cpp to use BOOST_DATA_TEST_CASE for parameterized tests 2024-05-12 16:58:25 +02:00
Mark Roszko 3a2b960f62 Update file doxygen.yml 2024-05-12 02:53:42 +00:00
Mark Roszko 03459723b3 Use our docker runner for doxygen
docker tag for shared gitlab runners was removed by gitlab
2024-05-12 01:09:26 +00:00
Jeff Young d9ff3c4485 Maintain selection when sorting.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17983
2024-05-11 16:20:34 +01:00
Jeff Young 5ba4900170 Fix typo. 2024-05-11 13:01:43 +01:00
jean-pierre charras e51316a932 Fix a 100% CPU core usage is some editing cases.
In commit 7cb754dd a call to wxMilliSleep(50) was removed (because it created
lag in editing) but this removal created a 100% CPU core usage.
Using a much small sleep time (1ms) fixes these issues.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17979
2024-05-11 12:53:04 +02:00
jean-pierre charras 814e54af9b Fix minor compil warnings 2024-05-11 08:07:11 +02:00
Jeff Young 05ee635420 Implement mirror for groups.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17644
2024-05-10 21:44:15 +01:00
Jeff Young 29360b1aef Raw spice models don't have pin names. 2024-05-10 20:58:13 +01:00
Seth Hillbrand 6537f9fa15 Hookup footprint reload to redraw icon
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7195
2024-05-10 08:42:28 -07:00
Jeff Young a0a368f47b Fix bogus value field in spice test source. 2024-05-10 15:58:48 +01:00
Jeff Young d9f0c8e1f3 Remove accidentally committed lines. 2024-05-10 15:58:48 +01:00
jean-pierre charras 93bd2c73ff Gerbview: rename diff mode by forced opacity display mode and make opacity adjustable.
The diff mode (option in left toolbar) was never a differential display mode.
It is actually an option to force the alpha channel (opacity) of layer colors
to a given value.
So change the name and tool tips to force opacity mode, and make the opacity
parameter adjustable in preferences.

Gerbview: cleanup: remove a old and dead code.
2024-05-10 16:22:55 +02:00
Jeff Young 55b2c4dbf4 Update signals & measurements when netlist might have changed.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17616
2024-05-10 12:02:56 +01:00
Jeff Young 737a4ce925 Don't double up ac and ph params.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17970
2024-05-10 11:35:49 +01:00
Jeff Young a20a6e0787 Don't add duplicate SIM fields.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17970
2024-05-10 11:35:49 +01:00
Seth Hillbrand 7aa3892ba3 Move log into UNIX ifdef 2024-05-09 19:29:01 -07:00
Mark Roszko 695493fc3d Remove the kicad-vcpkg xz override 2024-05-10 01:42:24 +00:00
Seth Hillbrand 42ebf0eca5 Limit FSWatcher
Library watches only need a single directory or immediate children.  The
project watcher should have a sensible limit to the total number of
files it tries to track.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/15717
2024-05-09 15:42:25 -07:00
jean-pierre charras 68c0be1097 Gerbview: cleanup: remove a old and dead code. 2024-05-09 17:54:05 +02:00
Wayne Stambaugh 7acd057c86 Fix broken library symbol links when importing CADSTAR schematics.
Under certain circumstances, the library symbol links were missing
the library nickname causing the schematic symbols to appear as if
the library symbol was missing.

Added a helper function to create the symbol library name to avoid
code duplication.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17143
2024-05-09 10:23:28 -04:00
Seth Hillbrand 3024a7c569 Add layer remapping ability to Altium imports
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17987
2024-05-08 15:36:33 -07:00
Seth Hillbrand 4218664d88 Cleanup on 2581 header 2024-05-08 15:36:33 -07:00
Alex Shvartzkop 81281f7e74 Send project path to ngspice for code model input files.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16527

(cherry picked from commit eb7e781bec)
2024-05-08 23:41:05 +03:00
Jeff Young a99377c1ec The user can cancel the opening of many editors.
Don't play dice with the devil.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17989
2024-05-08 18:21:42 +01:00
Alex Shvartzkop dc8822b421 Don't hide symbol/footprint preview widgets on scroll. 2024-05-08 19:40:01 +03:00
Alex Shvartzkop 0f06d9c9e8 Fix arcs in legacy symbol libs. 2024-05-08 19:39:02 +03:00
Alex Shvartzkop 8d13e0ea78 Fix arcs in legacy symbol libs. 2024-05-08 18:25:54 +03:00
Alex Shvartzkop 1bde100ff7 Fix symbol field positions in legacy schematics. 2024-05-08 18:06:05 +03:00
Mike Williams 482cf659a7 IDFv3: control whether DNP/unspecified components are exported 2024-05-08 10:24:50 -04:00
Alex Shvartzkop d22d32697f Some fixes for legacy schematic/symbol import after symbol Y inversion. 2024-05-08 15:57:58 +03:00
Alex Shvartzkop 546b2e3b91 Fix text justification in Altium schematic importer. 2024-05-08 15:13:15 +03:00
Jeff Young 20bb82a011 Remove vestigial coord flip code. 2024-05-08 11:27:57 +01:00
Marek Roszko 25ebf99b9a Add note about armasm64 workaround 2024-05-07 21:36:49 -04:00
Seth Hillbrand 72eee002aa Add effective display for fields 2024-05-07 17:59:13 -07:00
Marek Roszko f87bd91d61 Move libeval to kicommon 2024-05-07 20:44:19 -04:00
Wayne Stambaugh f1e8495dc9 Fix QA DRC regression test issue. 2024-05-07 16:22:09 -04:00
JamesJCode 9e1a5eb1bd Eeschema: Only assign nets with resolved netclasses to the label map
Also fixes a bug where the pattern assignment cache was not cleared
if all pattern assignments were deleted in the setup netclasses
panel.
2024-05-07 20:16:17 +01:00
Mark Roszko d3f69a11f2 Add policy for CMAKE_MSVC_DEBUG_INFORMATION_FORMAT 2024-05-07 18:35:30 +00:00
Jon Evans e1f6d82a34 Fix lifetime of markers in DRCFalseNegativeRegressions 2024-05-07 12:21:06 -04:00
Maciej Suminski 67f717b56a Fix pin rotation parsing in the legacy symbol library plugin
Commit 352463df removes char values for PIN_ORIENTATION, so
magic_enum::enum_cast can no longer do its magic.
2024-05-07 15:39:43 +00:00
Mark Roszko 87ba1e18bf Prepend ccache as it should be first 2024-05-07 15:14:54 +00:00
Jeff Young 8aab764c33 Handle m_alternates in operator= and copy c'tor.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17966
2024-05-07 15:07:33 +01:00
Jeff Young b425c54071 Default parameters for Python. 2024-05-07 14:45:57 +01:00
Mark Roszko ebbfaeaeb7 Alter the pdb mode for ccache 2024-05-07 13:24:11 +00:00
Mark Roszko eda65f5fa8 Fix ccache and distcc setup
RULE_LAUNCH_COMPILE is not meant for use. It's meant for internal ctest use only per the documentation.
2024-05-07 13:08:11 +00:00
Wayne Stambaugh 0402c03468 Do not test for effective annular width when it's already within limits. 2024-05-07 08:04:17 -04:00
Wayne Stambaugh a508f2e716 Fix false annular ring width DRC test failure.
The DRC annular ring width test failed to take into account that a pad
could be contained inside another pad having the same number (thermal
vias for example) which changes the effective annular width of the pad
contained within another pad.  A test was added to calculate the effective
annular ring width in this case.

Added some PNS log viewer helper and test code to the PNS playground QA
utility for testing the effective pad annular width code.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17485
2024-05-07 08:04:17 -04:00
jean-pierre charras 59e34dcbec Fix a compil issue on Windows (missing closing brace) 2024-05-07 12:48:41 +02:00
Seth Hillbrand b9b19cb5fb Quiet the warnings when overloaded on file watches 2024-05-06 17:36:50 -07:00
Jon Evans 6c41354da5 DbLib: Prevent uncaught exception creating statement
Defer telling the statement about the connection until the
try block, because otherwise it can connect immediately and
potentially throw an exception if the connection fails.


(cherry picked from commit ddd7c35586)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2024-05-06 21:00:13 +00:00
Jeff Young 8184ed64e7 Explicit control over hidden text in bounding boxes.
In particular, don't consider hidden text when plotting,
and only when AsItemCheckboxes is checked for printing.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17958
2024-05-06 21:36:19 +01:00
Seth Hillbrand 24f02e72d0 Fallback to scientific notation when fixed-point is long
Fixed point output can create arbitrarily long string representations of
floating points.  When this happens, we would like to just represent the
scientific notation to a limited precision

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17890
2024-05-06 13:00:27 -07:00
Seth Hillbrand 91f6c534b9 Subtract all holes in board area calc
When we say "Subtract holes from board area", we should also subtract
those holes in pads and vias

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17905
2024-05-06 12:41:15 -07:00
Seth Hillbrand c8375c151c Launch default URI handler if exists
Otherwise, handle as a normal file

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17902
2024-05-06 12:22:40 -07:00
Jeff Young 73681d08c5 Update names to match current nomenclature.
(Footprints now have PCB_FIELDs, not FP_TEXTs.)
2024-05-06 19:03:20 +01:00
Seth Hillbrand 3620887a22 Optionally use electrical type when shown.
We also need to consider electrical type as an exact hit when we are
showing it.  Otherwise, we get the pin added to our consideration list
but not selected without hitting close neighbors

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16183
2024-05-06 10:37:23 -07:00
Seth Hillbrand 5156229da7 Fixup previous edit 2024-05-06 10:36:07 -07:00
Seth Hillbrand 8a306eecb6 Cleanup libgit init calls 2024-05-06 10:18:38 -07:00
Seth Hillbrand ba5ad70b68 Add default rotation format 2024-05-06 10:00:19 -07:00
Seth Hillbrand cb71f2f207 Avoid arbitrary string limits
Placing a limit on the number of values that a field is allowed to hold
makes it blank when we set more than this number.  There's not a good
reason to limit the number of digits we allow at the field level (we
round to 4 decimal points in the backend)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17473
2024-05-06 09:59:36 -07:00
Mike Williams 1db236c7fd Legacy Libraries: fix Description field clobbering user field
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/17943
2024-05-06 12:54:31 -04:00
Jeff Young 0f3d14df38 Add mirrored column to fields grid table.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17956
2024-05-06 15:54:13 +01:00
Stefan 030a251090 Fix help for kicad-cli pcb export pos --side
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15815
2024-05-06 13:36:42 +00:00
dsa-t 05b2b3c26e Fix polygon fill flag in pcbnew graphics (SVG) importer.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17957


(cherry picked from commit 35c788a332)

Co-authored-by: Alex Shvartzkop <dudesuchamazing@gmail.com>
2024-05-06 11:17:40 +00:00
Jeff Young 0e9b547f94 Don't leak output file path between projects.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17846
2024-05-06 11:28:02 +01:00
Jeff Young 39835fe82a Formatting. 2024-05-06 10:58:32 +01:00
jean-pierre charras f6d0e17c8b PCB_IO_KICAD_SEXPR_PARSER::parseEDA_TEXT(): ensure texts are not mirrored
When not specified as mirrored, texts must be not mirrored.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17955
2024-05-06 10:53:39 +02:00
Alex Shvartzkop 5475359d00 More build time optimizations. 2024-05-06 04:39:28 +03:00
Alex Shvartzkop 4ecca01392 Improve build times by not leaking <filesystem> everywhere. 2024-05-06 02:26:16 +03:00
Marek Roszko 03fa632526 Try and fix ifdef again 2024-05-05 18:51:51 -04:00
Seth Hillbrand a835ba0715 Add "Mechanical" pad property
Prevents mechanical support pads from being used to check pad types.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16747
2024-05-05 21:57:10 +00:00
Marek Roszko e0b0fb27b0 Fix compile errors 2024-05-05 17:44:44 -04:00
Jeff Young 2ad05e34ea Fix symbol editor drawing tool coord system. 2024-05-05 22:21:12 +01:00
Marek Roszko 8e40482451 Fix ifdefs 2024-05-05 16:06:19 -04:00
Marek Roszko a9e4b1c56a Throw "sysinfo" functions into kiplatform for windows. 2024-05-05 15:14:05 -04:00
Jeff Young 1290228fbf Don't modify radius when editing center.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17192
2024-05-05 19:58:01 +01:00
Alex Shvartzkop 5e14ae9698 Add OpenGL info to About. 2024-05-05 21:30:25 +03:00
JamesJCode 658eb1d338 Assert if NESTED_SETTINGS migration is missing for an intermediate version
- Fixes early load during NESTED_SETTINGS construction within
  SCHEMATIC_SETTINGS, now failing due to missing migrations at that
  object construction point
- Adds missing (NOOP) migration for NET_SETTINGS schema versions 1 -> 2
2024-05-05 19:12:01 +01:00
Jeff Young 89433afb47 Handle delete-table undo in Footprint Editor.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17689
2024-05-05 19:08:16 +01:00
Jeff Young 62d4bd7c1d Exercise more care when comparing doubles.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17249
2024-05-05 17:32:48 +01:00
Seth Hillbrand 5bd94f118d ADDED: Handle PIECHART in Altium import
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16895
2024-05-05 08:39:30 -07:00
Seth Hillbrand 4c0fd6e791 Re-initialize conversion settings on failure
When the conversion fails, it may be the result of the settings values,
so reset them to their original values afterward

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17886
2024-05-05 07:45:30 -07:00
Seth Hillbrand 0476b6c72d Ensure irreflexive property in LIB_TREE_NODE 2024-05-05 07:33:00 -07:00
Jeff Young 0e0432d194 Don't abort on failure to backup file if it was never saved.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17810
2024-05-05 14:58:23 +01:00
JamesJCode 39d9aba576 Don't stop migrating JSON_SETTINGS if intermediate migrator missing 2024-05-05 14:22:53 +01:00
Jeff Young 10aec91075 lint reduction 2024-05-05 12:55:38 +01:00
Jeff Young afcdfd85a7 Fix power symbol value field placement. 2024-05-04 23:49:43 +01:00
Jeff Young c2fae3768c Fix knock-on effects from b7f035964f.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17924
2024-05-04 23:49:43 +01:00
John Beard 4dd049ee8f Add action to focus tree searches
The default hotkey is Ctrl+L, as this is not bound by
default in the FP or symbol editor, and it is the hotkey
that is used to focus the address bar in web browsers,
which is a similar kind of action.
2024-05-05 04:18:36 +08:00
John Beard f73c190da8 Menu condition: distribute requires at least three items 2024-05-05 03:35:09 +08:00
John Beard fa7e842c8c Rework item distribution
This splits the tool into two separate tools: by center and
by even gaps. Previously, this was automatically decided, based on
if the items could have any gaps between them. This was unintuitive
as it would appear to arrange by centre point sometimes but not others.
When items aren't all the same width, the results can then be very
different, based only on the starting positions.

The new behaviour is to have a dedicated tool for each, which echos
how graphical programs like Inkscape manage this.

The by-gaps method is then extended to work for overlapping items
(when items overlap, the overlaps are made equal). The logic is
centralised in kimath/geometry, and some QA is added. This should
make it easier to extend to eeschema, for example.

This also (attempts to) address some rounding issues which could
cause minor, but compounding, errors to build up along the list
of items.

Also, fix bugs in the collection filtering - previously items
like markers were filtered out only after the selection size
was used to compute the gaps between items.
2024-05-05 03:35:09 +08:00
Stefan ce32dfd077 Altium pcbimport: handle various dimension items, fix dimension_kind enum 2024-05-04 16:34:36 +00:00
Jon Evans 6b145b2830 Add optional reporting of non-KiCad design issues
Also add HTML reporter to PCB side to match schematic


(cherry picked from commit b8fa10ab2b)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2024-05-04 15:27:52 +00:00
Jeff Young 2d1bcbd222 Repair import of Altium arcs. 2024-05-04 15:47:43 +01:00
Jeff Young 8ec1016ccf Repair Altium importer for coord system change. 2024-05-04 14:19:12 +01:00
Thomas Pointhuber e82b8f6fda Fix small memleak in test_lib_part.cpp 2024-05-04 13:12:25 +02:00
Jeff Young 691c492d1e Revert attempted Altium import fix.
(Like Eagle, Altium's coord system is "upside down" to
start with.)
2024-05-04 11:16:44 +01:00
Jon Evans 0c835b7c30 Get rid of relative position in pad properties dialog
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17246


(cherry picked from commit 09736ebf2c)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2024-05-04 03:32:29 +00:00
Jeff Young c998234dec Restore accidentally deleted text size constraint algo.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17284
2024-05-03 22:12:34 +01:00
Jeff Young 65554943e0 lint reduction 2024-05-03 22:12:34 +01:00
Jon Evans 3351da9906 DbLib: Fill entire table if cache is empty when loading one part
The "already placed parts" feature causes a situation where many
single-part queries are placed before the cache is even filled.

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


(cherry picked from commit 3c99a3797e)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2024-05-03 21:04:13 +00:00
Jeff Young 94223ca794 Handle orientation when pasting footprint items.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17518
2024-05-03 21:31:27 +01:00
Seth Hillbrand ba4974749c Fix renaming sheet check
If we are renaming a sheet that exists only once in the schematic, then
we don't need to warn about case sensitivity.  If the sheet exists
multiple times, we do.  We can't check this using SCREENS because the
screens don't maintain full state information about where they are used.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17901
2024-05-03 13:23:03 -07:00
Jeff Young 44717f927c Fix rotation of selection in schematic.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17921
2024-05-03 21:14:26 +01:00
Seth Hillbrand 8463bd59b7 ADDED: Optional check for four way junctions
Defaults to off because this is likely contentious

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17870
2024-05-03 12:06:24 -07:00
Seth Hillbrand 2139789c4c Move ERC items to their own directory 2024-05-03 12:06:24 -07:00
Seth Hillbrand 71b020eb14 Special-case copy/paste of footprint fields on board
When editing the board, footprint fields _look_ like text items, so copy
and paste of these items should logically result in a text item, not a
footprint copy.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17937
2024-05-03 10:57:08 -07:00
Jeff Young eb13dec265 pruneItemLayers() is not the right place to filter refdes & value.
(And we already filter all mandatory fields in
pasteFootprintItemsToFootprintEditor() anyway.)

Also, don't nuke a footprint which contains only fields
during a paste.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17937
2024-05-03 18:38:32 +01:00
Seth Hillbrand e3d2f338de DRC: special case circles for annular width check
Circles only use one dimension and we tend to ignore the other in our UI
but it is kept and reflects the previous second dimensional value.  When
checking DRC, we should only be concerned with the single value used
unless the pad has two dimensions

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17944
2024-05-03 10:07:02 -07:00
Jeff Young aeb029ea6e const& performance improvements. 2024-05-03 18:03:51 +01:00
Jeff Young 651cc5c838 Improve bounding hull error message.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17886
2024-05-03 18:03:51 +01:00
Seth Hillbrand b8ccaae403 Respect schematic settings for hidden pins
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17941
2024-05-03 09:58:33 -07:00
Jeff Young 053a764cf2 Adjust LTSPICE parser for inverted coords. 2024-05-03 17:48:22 +01:00
Jeff Young fd44ee6aa6 Adjust CADSTAR importer for coord system flip. 2024-05-03 17:43:11 +01:00
Jeff Young 893d178439 Formatting and minor const& performance enhancements. 2024-05-03 17:43:11 +01:00
Seth Hillbrand 13735050da Use StandardPrimitive library for vias
Some 2581 parsers don't like to consider UserPrimitive even though they
are essentially the same thing and required by the standard.  ¯\_(ツ)_/¯

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16661
2024-05-03 09:11:49 -07:00
Jon Evans eb0708d48d Fix broken cherry-pick 2024-05-03 11:49:58 -04:00
Jon Evans ac8bd587dc Fix deduplication of already-placed symbols
The comparison function was failing to properly
de-duplicate by LIB_ID, especially for parts
from database libraries, causing the list to grow
with the size of the design.

(cherry picked from commit 2ef18ad4ca)
2024-05-03 11:47:21 -04:00
Jon Evans 639f59839e Make sure database library has updated pointer to library table
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17903


(cherry picked from commit 1a76fce255)

Co-authored-by: Jon Evans <jon@craftyjon.com>
2024-05-03 15:39:33 +00:00
Jeff Young 09c5b9df1d Fix some breakage in Altium parser due to Symbol Editor Y-axis inversion. 2024-05-03 14:52:50 +01:00
Jeff Young e7f4e29dd1 Eagle's coord system matched the old Symbol Editor.
So now we need to invert the Y axis for symbol items
(as well as all the schematic items which we have always done).
2024-05-03 14:48:06 +01:00
Jeff Young 6b0a20eac0 Mostly formatting, but also include shapes with nets when selecting connection. 2024-05-03 13:31:15 +01:00
Jeff Young 3781682a89 We don't need to flip Y of fields anymore. 2024-05-03 13:31:15 +01:00
Jeff Young ce1404df79 Formatting and performance.
(wxString construction is surprisingly expensive.)
2024-05-03 13:31:15 +01:00
Mark Roszko f00a1ab517 Use the new kmb toolchain file for vars 2024-05-03 02:11:54 +00:00
Jeff Young 9f87598772 Fix copy-pasta. 2024-05-03 00:09:38 +01:00
Alex Shvartzkop b5b65d0846 Fix some breakage due to symbol Y axis inversion in EasyEDA parsers. 2024-05-03 01:44:50 +03:00
Marek Roszko 1a1be2d542 Update vcpkg wxpython 2024-05-02 18:31:33 -04:00
Marek Roszko cb81de5a74 Add updated tooltips on update dialog 2024-05-02 18:30:54 -04:00
Seth Hillbrand 022dce2d1b Fix out of bounds access opportunity 2024-05-02 15:12:43 -07:00
Alex Shvartzkop 2a889f03fc EasyEDA Std/Pro: import (some) component metadata for symbols.
Also fixes Reference numbering.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17806
2024-05-03 00:37:59 +03:00
Seth Hillbrand ae610bbe85 ADDED: Reset option for Library tables
This re-shows the option to reset the global library table to its
default, empty or specified state

Fixes https://gitlab.com/kicad/code/kicad/-/issues/2309
2024-05-02 21:31:59 +00:00
Steven A. Falco f8c8dcde13 The upcoming Fedora 41 will use python 3.13
The Fedora folks are currently working on updating python to version
3.13 in Fedora 41.
2024-05-02 20:50:05 +00:00
Seth Hillbrand 60f59ae851 Keep FP chooser on top of KiCad but not system
We don't need to float the window over other programs, so setting to
parental floating keeps it focused just the right amount

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16840
2024-05-02 13:12:00 -07:00
Seth Hillbrand b649932dbf Re-allow moving footprint text
This is a temporary solution until we modify loading to convert existing
text to fields

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17899
2024-05-02 13:00:17 -07:00
Seth Hillbrand b0c9df3ff4 Update QA mock for new PCB_SELECTION 2024-05-02 12:49:56 -07:00
Seth Hillbrand b211625e53 Remove faulty tooltip
Copy-pasta error

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17927
2024-05-02 12:45:49 -07:00
Seth Hillbrand 5bede7bddb Update QA to reflect current correct output
Previously, (v7), the NPTH had a too-large clearance.  This affected the
fill so that there was no island.  In v8, at some point, NPTH had zero
clearance, which was definitely incorrect but also did not create an
island.

Correcting this to have the appropriate clearance between copper and
NPTH results in one almost island that has a neck and is appropriately
caught by the copper connection check.
2024-05-02 12:16:05 -07:00
Seth Hillbrand 416033e8e5 Ignore hidden text fields when cross-probing
Zoom-to-selection should only show the elements that we can see, so
avoiding hidden fields in footprints keeps the zoom window appropriately
sized

Fixes https://gitlab.com/kicad/code/kicad/-/issues/15245
2024-05-02 10:57:25 -07:00
Thomas Gambier 1882445b40 Add syntax check for duplicate 'layer' keyword 2024-05-02 04:51:48 +00:00
Jon Evans a95a3fa5c9 Altium: apply power filter to symbol libraries
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17922
2024-05-01 22:47:45 -04:00
Jon Evans d6a54a98b2 Support ortho dragging labels off sheet pins 2024-05-01 21:53:22 -04:00
Jon Evans dffb2c1994 Pin helpers can help sheet pins also
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17923
2024-05-01 21:53:14 -04:00
Marek Roszko 62936b7e01 Remove the disabling of UseNativeColHeader now that we fixed our wx fork 2024-05-01 20:56:27 -04:00
Seth Hillbrand cd74ebe9cc Fix extra tokens 2024-05-01 12:22:42 -07:00
Jeff Young 9a6efd43e1 Don't assume that a SMD pad has copper layers. 2024-05-01 18:16:09 +01:00
John Beard 1280b3d379 Add bash completion for kicad-cli, kicad, pcbnew, eeschema 2024-05-01 23:33:29 +08:00
John Beard 129c61a742 SELECTION::GetItemsSortedByTypeAndXY - minor tweaks
Simplify a little by keeping the positions of A and B in
variables.

Also remove const when returning by value - all that does is
inhibit a (possible, NRVO) move if you assign the result to
a non-const vector.
2024-05-01 23:33:25 +08:00
John Beard 2f3196c18c Fix docset generation 2024-05-01 23:31:21 +08:00
Jeff Young 678a64f97c Update auto-generated file. 2024-05-01 14:42:37 +01:00
Jeff Young 6b797420d5 ADDED allow physical_clearance between courtyards & zone fills.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6966
2024-05-01 13:49:41 +01:00
Jeff Young 58ddffe3dd Improve consistency in free-via ambiguity tests.
Also removes a magic number.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17671
2024-05-01 10:24:34 +01:00
Marek Roszko aaf776db9e Point BEGIN_EVENT_TABLE at the correct base class, fix current lang indication
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17825
2024-04-30 22:47:53 -04:00
Jon Evans e973c15087 Move ALTIUM_PCB to use REPORTER for logging
Change not-yet-supported messages to debug level
2024-04-30 21:21:48 -04:00
Seth Hillbrand 339cf3f2e2 Fix simplify routine for last segment
The last segment of a track could be removed when the iterator does not
correctly loop.  Keeping the ll within bounds and checking for
equivalency instead of comparison works for last point
2024-04-30 16:11:20 -07:00
JamesJ d92db68597 Fix corner editing for schematic rule areas
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17909
2024-04-30 16:58:14 +00:00
jean-pierre charras 966051ff4a DIALOG_EXPORT_2581:fix incorrect size of widgets when a very long field name exists
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17911
2024-04-30 18:16:05 +02:00
Rosy 17891f7a1d HTTP Libraries: Add support for descriptions of sublibraries 2024-04-30 11:57:00 +00:00
Stefan 7ed755ac61 Handle piechart case for Altium lib import
This doesn't parse the data but it will let the user know what wasn't properly parsed.
2024-04-30 03:07:14 +00:00
Marek Roszko 2f0ff4e557 Update sentry-native to 0.7.2 2024-04-29 22:05:05 -04:00
Seth Hillbrand 7fdb5e98a2 ADDED: Polygon simplify
Simplifies the polygon for graphical shape, zones and rule areas,
removing duplicate points and making the outline easier to handle

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17883
2024-04-29 17:48:32 -07:00
Seth Hillbrand 8b5564629a Optimize TestSegmentHitFast
Check for co-linear points (common occurence) before using expensive
EuclideanNorm
2024-04-29 17:48:32 -07:00
Seth Hillbrand 9e83a7bcb3 Update SHAPE_LINE_CHAIN::Simplify to better handle small diff
When simplifying, a small difference in successive points would allow a
larger difference than aMaxError to be removed.  This change checks the
intermediate points during removal to ensure we don't get overzelous
2024-04-29 17:48:32 -07:00
dsa-t 10c0bba9cc Fix internal simulation errors when using some IBIS models.
Usage of GC_PWR0 looked like a copy/paste.

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


(cherry picked from commit cff58bae7f)

Co-authored-by: Alex Shvartzkop <dudesuchamazing@gmail.com>
2024-04-29 20:24:58 +00:00
Jeff Young 85a9d9e9ec Don't push commit in DIALOG_TABLE_PROPERTIES if table is new.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17688
2024-04-29 17:10:29 +01:00
jean-pierre charras 15e5eabb91 DIALOG_ZONE_MANAGER: refresh zone display when resizing the dialog.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17892
2024-04-29 13:44:28 +02:00
Jeff Young e5a17b96a3 Fix more bugs from collapsing LIB_* to SCH_*.
The transform can always be used: it will be the identiy
transform when in the schematic.

Also fixes a bug where textbox borders didn't get
plotted, and a couple others where things were still
expecting an upside-down coordinate system.
2024-04-29 12:19:13 +01:00
Marek Roszko 3d56494652 Add weirdly missing header for msvc 2024-04-28 22:22:24 -04:00
Marek Roszko 9ffa5db667 Delete m_locale in the pgm_base destructor instead of manual destroy method
We need the object in m_locale for a bit more things during program cleanup,
especially on macOS

The destructor of PGM_BASE is sufficient allowance of lifetime.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17369
2024-04-28 22:15:37 -04:00
Alex Shvartzkop 4a60c3b71e 3D viewer: apply OCC colors in order: XCAFDoc_ColorSurf > XCAFDoc_ColorCurv > XCAFDoc_ColorGen
Fixes https://gitlab.com/kicad/code/kicad/-/issues/14906

(cherry picked from commit f15551a6b5)
2024-04-29 01:27:03 +03:00
Jeff Young 43e6006306 Separate Compare Footprints from DRC.
(We want to ignore some of the flags for DRC.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17819
2024-04-28 23:05:54 +01:00
Jeff Young b5fb7b7ace Get rid of Export Symbol.
It can be done with the "New Library" button when doing
a Save copy as (which doesn't lead the user down the
wrong path as Export Symbol can).

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17840
2024-04-28 22:05:59 +01:00
Jeff Young a5bd97da11 Improve clarity of Visibility setting.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17843
2024-04-28 21:57:55 +01:00
Alex Shvartzkop 7d37cebfdf Fix orientations of some footprint STEP models.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17631
2024-04-28 23:11:26 +03:00
Jeff Young b12043a612 Separate fields from text for boundingBoxes & hit-testing.
We used to have special cases to keep fields from bloating
a footprint's bounding box or being used for hit-testing.
However, now that we can distinguish PCB_FIELD_T from
PCB_TEXT_T, we should not apply these special cases to
PCB_TEXT_T.  Text in footprints should act like graphics.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17854
2024-04-28 18:47:11 +01:00
JamesJ 6c5ac9e269 Check in fbp file for netclass setup panel
Was not added to commit 5f4c7a5
2024-04-28 18:18:42 +01:00
Jeff Young c45c80f083 Fix clang includes. 2024-04-28 16:00:54 +01:00
Jeff Young 352463dfeb Fix pin drawing after removal of upside-down coords. 2024-04-28 15:24:19 +01:00
Jeff Young 67737ea0b2 Restore view_controls include for clang. 2024-04-28 14:03:45 +01:00
Jeff Young a24eada8b1 Cleanup. 2024-04-28 13:52:41 +01:00
Jeff Young 1db8b322da Make pin name/number visibility architecture more clear. 2024-04-28 13:23:24 +01:00
Alex Shvartzkop 6fdeca7c56 Fix build on Linux. 2024-04-28 02:06:12 +03:00
Alex Shvartzkop 16e3692e71 Build time optimizations. 2024-04-27 23:49:13 +03:00
dsa-t 16f3237983 QA: update Altium footprint library golden file.
(cherry picked from commit dd2f15c96d)

Co-authored-by: Alex Shvartzkop <dudesuchamazing@gmail.com>
2024-04-27 20:35:00 +00:00
Alex Shvartzkop 11ba59b690 Altium PCB import: pad thermal spoke angle is 90 deg by default. 2024-04-27 20:25:50 +03:00
Marek Roszko a565db58c5 Hackfix crash in configure paths using non-ascii chars in column headers
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17743
2024-04-27 10:16:37 -04:00
Jeff Young d8d816236c Save project settings after Schematic Setup.
This prevents data from getting lost if we later crash.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17859
2024-04-27 14:50:47 +01:00
Alex Shvartzkop e26778c599 Require Wayland 1.20 libraries.
KiCad doesn't build with older versions due to missing definitions.
2024-04-27 16:48:49 +03:00
Jeff Young c59ed0bbb7 Flip symbol editor's Y axis to match other editors. 2024-04-27 13:47:56 +01:00
Jeff Young 3b3de58e5e Make sure color settings are saved when modified.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17864
2024-04-27 13:30:45 +01:00
Jeff Young e478c4db2e Allow resetting of pin visibility overrides.
Also fixes a bug where the .fbp file didn't get checked
in for the "Reset custom power symbols" checkbox addition.

Also adds disabled checkboxes to act as hints for what
is always updated.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17868
2024-04-27 13:30:45 +01:00
Seth Hillbrand 4ad48c79dd Update translations 2024-04-26 19:51:48 -07:00
CloverGit cba8c95c83 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (9376 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-04-27 04:50:39 +02:00
Tokita, Hiroshi dda71df996 Translated using Weblate (Japanese)
Currently translated at 97.3% (9127 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-04-27 04:50:39 +02:00
2tama3 1edc1e163e Translated using Weblate (Japanese)
Currently translated at 97.3% (9126 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-04-27 04:50:39 +02:00
Ulices 65b1371e5d Translated using Weblate (Spanish (Mexico))
Currently translated at 96.8% (9082 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-04-27 04:50:39 +02:00
Tokita, Hiroshi 958d8a0327 Translated using Weblate (Japanese)
Currently translated at 97.3% (9126 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-04-27 04:50:39 +02:00
Yutaro Urata2 8fb550893d Translated using Weblate (Japanese)
Currently translated at 97.3% (9126 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-04-27 04:50:39 +02:00
co8 j df61c99b74 Translated using Weblate (Japanese)
Currently translated at 97.3% (9126 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-04-27 04:50:39 +02:00
CloverGit 8a6c4887fe Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (9376 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-04-27 04:50:39 +02:00
Henrik Kauhanen 6b63c3bf8c Translated using Weblate (Swedish)
Currently translated at 99.9% (9372 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-04-27 04:50:39 +02:00
Tokita, Hiroshi a556ec328a Translated using Weblate (Japanese)
Currently translated at 97.0% (9099 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-04-27 04:50:39 +02:00
Henrik Kauhanen 5f0982a345 Translated using Weblate (Finnish)
Currently translated at 98.4% (9226 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/fi/
2024-04-27 04:50:39 +02:00
Jan Straka 4da1dd67eb Translated using Weblate (Czech)
Currently translated at 78.4% (7360 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/cs/
2024-04-27 04:50:38 +02:00
Pferd O 7acc21e397 Translated using Weblate (German)
Currently translated at 99.9% (9374 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-04-27 04:50:38 +02:00
Nicoara Alex 5888292e42 Translated using Weblate (Romanian)
Currently translated at 26.2% (2462 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ro/
2024-04-27 04:50:38 +02:00
CloverGit d6fad425c3 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (9376 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-04-27 04:50:38 +02:00
dsa-t 7583f305fc Translated using Weblate (Russian)
Currently translated at 96.8% (9081 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-04-27 04:50:38 +02:00
ZbeeGin 9f8de0df01 Translated using Weblate (Polish)
Currently translated at 100.0% (9376 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-04-27 04:50:38 +02:00
Laurens Holst edb5d5df47 Translated using Weblate (Dutch)
Currently translated at 99.6% (9343 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-04-27 04:50:38 +02:00
taotieren 9dcd1c7d64 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (9376 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-04-27 04:50:38 +02:00
taotieren b63fab46b4 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (9376 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-04-27 04:50:38 +02:00
ZbeeGin 0f5c561afd Translated using Weblate (Polish)
Currently translated at 99.2% (9305 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-04-27 04:50:38 +02:00
Pferd O 86e0315feb Translated using Weblate (German)
Currently translated at 99.7% (9351 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-04-27 04:50:38 +02:00
Henrik Kauhanen ec83776256 Translated using Weblate (Swedish)
Currently translated at 98.5% (9236 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-04-27 04:50:38 +02:00
Tokita, Hiroshi 2e5a6123bb Translated using Weblate (Japanese)
Currently translated at 96.9% (9086 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-04-27 04:50:37 +02:00
Pferd O a8ca5d8e19 Translated using Weblate (German)
Currently translated at 99.2% (9308 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-04-27 04:50:37 +02:00
CloverGit 43feb1d2fd Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (9369 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-04-27 04:50:37 +02:00
dsa-t 94894b1e30 Translated using Weblate (Russian)
Currently translated at 96.8% (9080 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-04-27 04:50:37 +02:00
Pferd O d8ec8bd506 Translated using Weblate (German)
Currently translated at 99.0% (9287 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-04-27 04:50:37 +02:00
Wellington Terumi Uemura 3e21d887c1 Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.5% (9331 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt_BR/
2024-04-27 04:50:37 +02:00
Tokita, Hiroshi 7caa9eb9da Translated using Weblate (Japanese)
Currently translated at 96.7% (9067 of 9376 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-04-27 04:50:37 +02:00
Jeff Young 615f84e567 SCH_PINs define their own sorting order.
Don't use SCH_ITEM's compare function.

This is required so that SCH_PINs sort in the same
order as their LIB_PIN equivalents in the library.
2024-04-26 23:10:19 +01:00
Jeff Young 02c1eef3be Simplify parsing of alt pin definitions. 2024-04-26 20:11:33 +01:00
Jeff Young 9be60cb45d Gracefully handle DNP & Excl-from-brd components in nets list.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17146
2024-04-26 20:11:33 +01:00
Alex Shvartzkop 4596a11da2 Raytracing 3D renderer: don't reflect sky background when reflections are on.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17690
2024-04-26 16:01:36 +03:00
Alex Shvartzkop b3bc352c57 Use default stackup if stackup is not defined in STEP/BREP/XAO export. 2024-04-26 15:25:48 +03:00
Alex Shvartzkop 01ce6111ff Fix warning. 2024-04-26 15:25:48 +03:00
jean-pierre charras 28f48cbec1 Eeschema: fix issues related to ERC tests after changes by commit d77eae3e
It also fixes a bug in SCH_FIELD::compare()
2024-04-26 07:23:07 +02:00
Marek Roszko b22bc2737e Hackfix macOS to keep erc/drc on top
Fixes https://gitlab.com/kicad/code/kicad/-/issues/14356
2024-04-26 00:49:22 -04:00
Marek Roszko 60d5780c1c Fix win32 proxy parsing when the old IE options for scheme based configuration was set
If you uncheck in the old IE options "Use the same proxy server for all protocols", then it returns an annoying string
like http=blah:1232;https=blah:1232;ftp=blah:2321 which we have to parse.
2024-04-25 21:24:58 -04:00
Alex Shvartzkop c8db8d087e Remove debug line. 2024-04-26 02:40:22 +03:00
Alex Shvartzkop 9e673bb891 Polyfill GetOneShape from OCCT. 2024-04-26 02:36:17 +03:00
Alex Shvartzkop 1ae9e9b676 ADDED: XAO export for SALOME / Gmsh workflows.
Pad surfaces are assigned as face groups.
2024-04-26 01:53:43 +03:00
Alex Shvartzkop 22c4fa29f1 STEP/BREP export: expose Net Filter option in the UI. 2024-04-25 21:10:34 +03:00
Seth Hillbrand ef62b01dd1 Make import/export flags explicit
IO plugins can import/export or both.  This sets an explicit boolean for
controlling which options are available.
2024-04-25 09:21:15 -07:00
Seth Hillbrand eeee63186d Don't list IPC-2581 import
We don't currently support importing 2581 files.  We need to clear
IO_FILE_DESC to prevent this from accidentally showing

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17866
2024-04-25 09:02:38 -07:00
James J be8744176c Add SCH_RULE_AREA shapes to eeschema
Includes:
 - Fix GAL to draw closed polygons in eeschema
 - Add functionality to eeschema to draw arbitary polygons
 - Update polygon item previews to have customisable edge colour
 - Add new SCH_RULE_AREA class, derived from a poly SCH_SHAPE
 - Add SCH_RULE_AREA to paint and plot methods
 - Add new rule area color preference to themes
2024-04-25 14:24:46 +00:00
Alex Shvartzkop da1926d723 STEP/BREP export: ensure pad surface is a separate face.
Useful for FEM simulation.
2024-04-25 15:34:52 +03:00
Ethan Chien d058e12cb5 Fix: Unable to select other items after syncing hierarchical sheet pins
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17800
2024-04-25 10:49:07 +00:00
Jeff Young cd64630661 Remember shown columns in netclass setup.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17852
2024-04-25 08:34:36 +01:00
Rosy 0984af1676 HTTP library reload cache, if the cache is empty, when picking a part
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17569
2024-04-25 00:42:13 +00:00
RosyDev 058b337b00 HTTP library users will now see the generic fields in the components' properties in the correct order as submitted by the API.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17584
2024-04-25 00:23:51 +00:00
Seth Hillbrand 315ad0e071 Replace stale pin references with UNDO copy
When we replace a symbol with one that has fewer pins, the old pins
are released, which leaves points to them in the connection graph
dangling.  This updates the pointer to use the cloned copy in the undo
stack until the connection graph is rebuilt with the new data

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17851
2024-04-24 12:55:02 -07:00
Alex Shvartzkop 5f81e01f43 ADDED: --net-filter option to STEP/BREP export CLI. 2024-04-24 18:28:53 +03:00
Wayne Stambaugh 33869dbb61 Symbol chooser dialog layout improvements. 2024-04-24 11:08:04 -04:00
Miklós Márton 61be2ea048 eeschema: Add option for renaming sheets in the Hierarchy tree view 2024-04-24 12:36:34 +00:00
Wayne Stambaugh 8a1347d2c8 Property grid navigation improvements.
* Do not handle tab key event when committing property changes so the
  property grid tab navigation works correctly.
* Do not call commit property changes on tab key when no changes are
  pending.
* Skip event handling in the base object value change and changing event
  handlers in case they do not get overloaded in derived objects.
* Do not force focus to canvas on property change so arrow and tab key
  grid navigation work properly.  Forcing the user to click the property
  grid control to edit a single property doesn't make sense.
* Pass properties panel show event up the event stack.
* Do not set focus to canvas in tool dispatcher if it already has the
  focus.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16957
2024-04-24 07:25:19 -04:00
Jeff Young 978ef352d0 Support legacy Length Tuning Settings workflow.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17748
2024-04-24 10:51:25 +01:00
Marek Roszko a8972f54c4 Put idf tools behind a cmake flag that can be turned off 2024-04-23 22:43:10 -04:00
Seth Hillbrand 0cd3e17db7 Ensure that missing pins are added to extraction
When changing from a larger part to a smaller part, the previously
existing pins may be removed from the screen but still linked to
elements in the connection graph because we don't set them dirty unless
the changed element overlaps

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17851
2024-04-23 19:37:27 -07:00
Alex Shvartzkop 1c1bdb4f4a Make mold slightly happier. 2024-04-24 00:43:06 +03:00
Alex Shvartzkop 045f65608a Add VECTOR2L to Swig. 2024-04-23 23:37:45 +03:00
Alex Shvartzkop cf6d30706b More clang build fixes. 2024-04-23 21:50:22 +03:00
Alex Shvartzkop 124b511037 Fix build on clang. 2024-04-23 21:44:55 +03:00
Seth Hillbrand fc93c63a19 Revert "Remove trailing zeros from all values"
This reverts commit abd0388794.
2024-04-23 11:08:14 -07:00
Alex Shvartzkop b1180d9377 Fix some warnings. 2024-04-23 16:34:07 +00:00
Alex Shvartzkop 865e3a9f3c Improvements when working closer to 32-bit integer limits.
- Changes BOX2 size to extended coordinates.
- Adds BOX2ISafe to construct a BOX2I that will fit in int32.
- Adds more checks.
- Safer computations.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17670
2024-04-23 16:34:07 +00:00
Alex Shvartzkop 3f32f0c2d8 STEP/BREP export: approximate zone polygons with arcs.
- Speeds up processing significantly
- STEP file size reduction to 30%
2024-04-23 19:25:23 +03:00
Alex Shvartzkop 5e70883ef6 Add self-intersection check algo for arcs in SHAPE_LINE_CHAIN. 2024-04-23 19:25:23 +03:00
Alex Shvartzkop fcdaa4a59e Cache center point and radius along with BBox in SHAPE_ARC. 2024-04-23 19:25:23 +03:00
Jeff Young 9dab855f8d Layer column should be shown by default, not italic.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17758
2024-04-22 17:48:21 +01:00
Jeff Young 53a9bdb3af Formatting. 2024-04-22 17:44:59 +01:00
Jeff Young f51d227dc7 Default to target lib when no lib tree sel exists.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17808
2024-04-22 17:36:38 +01:00
Jeff Young e8be782687 Mostly clean-up, but also bug fixes with bounding boxes. 2024-04-22 11:16:14 +01:00
Alex Shvartzkop bbab5a979a STEP export: Remove autosave prefix from label names.
The autosave file is used if the board was modified.
2024-04-22 04:06:04 +03:00
Alex Shvartzkop 2babd574be Refactor autosave prefix into FILEEXT. 2024-04-22 04:06:04 +03:00
Alex Shvartzkop c68e3ceb44 ADDED: Export inner PCB copper layers to STEP / BREP / GLTF.
Also adds options to exclude board body and components.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16855
2024-04-22 03:39:46 +03:00
Seth Hillbrand 6a73c7ffb3 Remove cover type in link holder 2024-04-21 11:11:48 -07:00
Seth Hillbrand 7dc7268146 output helpful net information in PNS debug 2024-04-21 11:11:21 -07:00
jean-pierre charras 1dc8585d04 Footprint Editor: Fix crash when no footprint loaded and try to select something 2024-04-21 17:51:14 +02:00
Wayne Stambaugh ca18dc8ec8 Do not show click to start wire cursor for hidden pins.
Selecting show hidden pins will allow users to connect to hidden pins.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17145
2024-04-21 10:54:52 -04:00
Jeff Young 7d8215401a Fix message panel for pins, take 2. 2024-04-21 15:14:10 +01:00
Jeff Young b4239b3ee4 Fix message panel for pins. 2024-04-21 14:51:07 +01:00
Jeff Young 320f531110 Improve inheritance processing; simplify hidden flag. 2024-04-21 12:19:22 +01:00
Jeff Young c0f480eea8 Lint reduction. 2024-04-21 12:19:22 +01:00
jean-pierre charras 2d614898a8 pad.cpp: fix possible incorrect layer mask in PAD::ImportSettingsFrom() after import
ImportSettingsFrom() calls SetAttribute() that can change the layer set.
2024-04-21 13:01:21 +02:00
jean-pierre charras 3fb521755b Revert "pad.cpp: fix incorrect layer mask in PAD::SetAttribute() for aperture pad"
This reverts commit 03e2b3c42e.
2024-04-21 11:58:56 +02:00
jean-pierre charras 03e2b3c42e pad.cpp: fix incorrect layer mask in PAD::SetAttribute() for aperture pad
A aperture pad is not on copper layer, so do not force a copper layer for this pad
2024-04-21 11:48:01 +02:00
Seth Hillbrand 6540c3ec9f Resolve worksheet variables in SCH_FIELD
Sheet fields should also resolve the worksheet of that sheet and not the
parent sheet

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17723
2024-04-20 13:39:35 -07:00
Jeff Young 9f691d063c Fix default pen width for pin text. 2024-04-20 18:25:17 +01:00
Alex Shvartzkop 7215613b13 Fix warning in PCBNEW_JOBS_HANDLER. 2024-04-20 20:11:18 +03:00
Alex Shvartzkop 1e1aecfd28 Fix warning in SYMBOL_LIBS. 2024-04-20 20:10:23 +03:00
Alex Shvartzkop 41c4bd58ba Fix warnings. 2024-04-20 20:09:17 +03:00
jean-pierre charras c2e9b687c1 simulation: DIALOG_SIM_COMMAND_BASE: avoid text truncation in checkboxes. 2024-04-20 16:53:11 +02:00
jean-pierre charras 65c3fe03fb Re-add a line deleted by mistake in my commit c04cd812
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17814
2024-04-20 15:35:57 +02:00
Wayne Stambaugh a86a258f66 Improve symbol instance data file save ordering.
Use the root schematic UUID to order projects and sort symbol instance
data by KIID_PATH.  This will ensure file changes to instance data are
more consistent by using a fixed ordering.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17737
2024-04-20 08:57:00 -04:00
Jeff Young 95136494b3 RIP LIB_PIN. 2024-04-20 12:10:31 +01:00
Jeff Young 6d11c85cad Initialize all member variables. 2024-04-20 12:10:31 +01:00
Seth Hillbrand 586fddeec1 Avoid case where whole line is new head
If the whole line shifts, we may have no points of the old tail in the
new line.  In this case, we may not only not find the split point but we
may also have fewer points in the new line than were in the old head.
Clamping to the maximum potential point count prevents creating invalid
lines

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16591
2024-04-19 17:54:29 -07:00
Seth Hillbrand 3435c6ebee Prevent double-entry into footprint load
Avoids double-clicking on the footprint library symbol crashing due to
overwriting the global footprint table by multiple instances

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17040
2024-04-19 17:21:18 -07:00
Seth Hillbrand b346cde30b Show disambiguated netname when needed
When using subsheets with nets that end in the same netname, it can be
confusing in pcbnew to know which net you are dealing with.  In these
cases, we show the full netname including path to assist when routing

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16187
2024-04-19 16:31:05 -07:00
Seth Hillbrand 4e6a3a50fc Flip labels to match orientation
When changing from local to hierarchical or global, the label style is
typically flipped so that global/hierarchical labels hang off the line
while local labels are set on top.  To make this more intuitive we flip
the initial orientation when changing

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17739
2024-04-19 16:09:30 -07:00
Maciej Suminski 5da3dd1788 Restore parsing order in the legacy symbol library plugin 2024-04-19 22:33:28 +00:00
Wayne Stambaugh 5d99aaf0a4 Use correct project name when adding new symbol instances.
When adding a sheet using a schematic from another project, set the
project name for the new symbol instance data to the current project
rather than the project name from the copied instance data.
2024-04-19 14:33:22 -04:00
Seth Hillbrand b1dcd7ecf8 Remove Shift as a force-finish modifier
This was originally added to facilitate
https://bugs.launchpad.net/kicad/+bug/1777688 but the concern there was
that the layer kept changing when stopping on a via.  We currently have
double-click as the force-finish option and the layer reverts to the
original layer on which you were routing.  This should handle the
operation concern while still preserving shift as the modifier for grid
options

Fixes https://gitlab.com/kicad/code/kicad/-/issues/15828
2024-04-19 08:53:27 -07:00
Alex Shvartzkop 909d43492b Fix warning. 2024-04-19 18:26:20 +03:00
jean-pierre charras c04cd81231 Eeschema: fix color issues in symbol body graphic items drawings.
- fix incorrect colors (outlines and filled shapes)
- fix issues in DIALOG_SHAPE_PROPERTIES (incorrect colors)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17799
2024-04-19 15:26:15 +02:00
Seth Hillbrand 5f16c5892c Handle hierarchical sheets in incremental change
The drivers need to get passed up and down the hierarchical sheets.  In
order to do this, both the sheet pin and the hierarchical pin need to
be in the changed items.  However, we only get sheets in the screen
items list while the pins are the elements that get set dirty

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17797
2024-04-18 21:18:27 -07:00
Seth Hillbrand 1bc34f7bd7 Always refresh the navigator when changing units
Units are displayed even if the net is not selected
2024-04-18 18:21:13 -07:00
Seth Hillbrand abd0388794 Remove trailing zeros from all values
If we are showing a value to the end user, we should avoid unneeded
precision
2024-04-18 18:21:13 -07:00
Seth Hillbrand d8b6e28890 Excise the remaining unused ifdef EESCHEMA
Common units are now shared between programs, so we need a different way
other than compile definitions to choose how many digits to display.
2024-04-18 18:21:13 -07:00
Seth Hillbrand 00538548f5 Handle net directive in navigator 2024-04-18 18:21:13 -07:00
Alex Shvartzkop cd2925d3d7 ADDED: Fuse Shapes option for STEP/BREP/GLTF export.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17777
2024-04-19 03:43:26 +03:00
JamesJ f8434b1c07 Fix deletion of items in pcbnew
Ensures the fallthrough generic deletion code path increments
the deleted items counter.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17798
2024-04-18 23:37:37 +01:00
Wayne Stambaugh 17bcc27ff6 Fix missing instance data when reusing an already loaded schematic.
Remove duplicate sheet instance page numbering.  It's already done when
the sheet is loaded from an exiting file or an already loaded schematic.
Remove the unnecessary page update code from the drawing tool.
2024-04-18 15:47:47 -04:00
Seth Hillbrand 2ca8abd7f1 Add locale information to the Version Info 2024-04-18 12:41:31 -07:00
aris-kimi d00cda3b2f Fix build with OCC 7.5.x 2024-04-18 18:09:42 +00:00
Seth Hillbrand f8a25d20f8 Remember to set the root sheet before loading
This is done in the frame for GUI loading so we need to explicitly set
this when loading files in the cli

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17790
2024-04-18 10:47:49 -07:00
Seth Hillbrand 8d1b1598db Add missing file mod 2024-04-18 09:48:30 -07:00
Seth Hillbrand 0ea02fa2ff Be a little more careful about courtyard caches
Rather than utilizing the board timestamp, we check cached hash of the
courtyard results before rebuilding
2024-04-18 09:32:00 -07:00
Seth Hillbrand df5dd15c6f Protect courtyard cache regen
The courtyards are referenced by multiple calls and will be rebuilt on
command.  If this happens during zone fill (because the board timestamp
has incremented since the start) multiple threads may generate the cache
at the same time, leaving one with an invalid pointer

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17791
2024-04-18 08:41:18 -07:00
Jeff Young b394d7eb96 Fix build breakage. 2024-04-18 15:20:58 +01:00
jean-pierre charras 3da5616939 step/step_pcb_model.cpp: add missing includes. 2024-04-18 13:55:49 +02:00
jean-pierre charras af8d80d91f Plot pads: Do not use pad offset twice when plotting chamfered rect pads
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17793
2024-04-18 12:53:38 +02:00
Alex Shvartzkop 55fb70ae65 STEP export: use fused shapes for pads instead of polygon approximations. 2024-04-18 13:44:14 +03:00
Alex Shvartzkop b50a1c967f Report errors and warnings when using BRep cutting algorithm. 2024-04-18 13:44:14 +03:00
Jeff Young d2c512f422 Don't double-save transform for plotting DNP. 2024-04-18 11:03:37 +01:00
Jeff Young cc78196f81 Remove shadowed member variables. 2024-04-18 10:58:39 +01:00
Jeff Young e5cdf3785b Make SCH_SHAPE::Normalize() upside-down-coords-aware.
Also fixes some typos in EE_POINT_EDITOR.
2024-04-18 10:27:36 +01:00
Seth Hillbrand 79166510e9 Fully expand all text variables in 3d output
We were doing half of the job but we need to get the board variables as
well

Fixes https://gitlab.com/kicad/code/kicad/issues/17768
2024-04-18 02:58:21 +02:00
Seth Hillbrand f088b0d18a Calculate and show pad area in footprint editor
When selecting an SMD pad, show the area of the pad in the msg panel

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17788
2024-04-17 15:31:56 -07:00
Seth Hillbrand 2f7cc5fa2b Be sure that we are getting the SCH_SYMBOL values
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17782
2024-04-17 13:53:01 -07:00
Seth Hillbrand d2701323a8 Don't sort on lost references
The arraystring reference is lost when we don't keep the wxFileName
variable in scope.

This also adds removing invalid paths and checking for correct version
before sorting

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17749
2024-04-17 11:35:50 -07:00
Wayne Stambaugh d79619edd1 Minor net navigator improvements.
Ignore bus member connection subgraphs.  They do not have a valid net
name nor do they contain schematic items.  This prevents empty nodes
from being added to the tree.  They can be reintroduced in the future
if someone wants to pursue it.

Freeze the wxTreeCtrl while populating it and thaw when done to prevent
any unnecessary repainting.

Add profiling to test how long it takes to rebuild the net navigator.
The recently added populate the navigator with all nets when no net
is highlighted has exposed some potential performances issues with some
versions of wxWidgets on certain platforms.  Namely wxWidgets 3.2.4 on
Linux GTK.

Fix an issue where a sheet name change would not update the highlighted
net navigator resulting in a stale human readable sheet path.

Prevent the highlighted net navigator from being rebuilt twice when
loading a schematic.  SCH_EDIT_FRAME::RefreshNetNavigator() was being
called from both SCH_EDIT_FRAME::UpdateHierarchyNavigator() and
SCH_EDIT_FRAME::RecalculateConnectivity().

Add a new trace helper "KICAD_UI_PROFILE" to show trace output when
profiling user interface performance.  It's used in the net navigator
profiling mentioned above.

Reuse PROF_TIMER::Show() to generate string for PROF_TIMER::to_string().
2024-04-17 14:31:50 -04:00
Jeff Young a4073c2ace Provide some user hints on editing fields.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17781
2024-04-17 18:30:37 +01:00
Seth Hillbrand 0e0ada8e4e Allow NIC pins to be stacked
Previously, we only allowed pins of the same time as well as passive
pins to be stacked.  This change allows NIC pins as well since they are
not internally connected, there is no reason that they cannot be tied to
another pin electrically
2024-04-17 10:00:00 -07:00
Alex Shvartzkop 01fedb86e2 Fix shadowed variable. 2024-04-17 18:22:22 +03:00
Alex Shvartzkop d97ac47509 Try to use parallel processing in BRep cutting algorithm. 2024-04-17 18:15:17 +03:00
Alex Shvartzkop d98d7f9017 ADDED: Support 3D shape export in BREP format.
BREP doesn't support colors or label names,
but is much faster to write/read compared to STEP.
2024-04-17 17:31:10 +03:00
Alex Shvartzkop bf16f757ed STEP export: disable history to speed up hole cutting. 2024-04-17 16:09:03 +03:00
Jeff Young dee45a491e Readability. 2024-04-17 11:03:07 +01:00
Jeff Young c842de24b9 HitTesting is the wrong place to do visibility checks. 2024-04-17 10:53:49 +01:00
Seth Hillbrand caa18568e0 Handle DRC rules that limit PTH/NPTH in courtyards
Allows custom rules that explicitly allow holes from one footprint to
overlap the courtyard from another
2024-04-16 22:46:38 +00:00
Jeff Young 657fe6e091 Fix background colour bug. 2024-04-16 23:41:48 +01:00
dsa-t 822409225a STEP export: don't fail when can't construct a wire.
This can happen with very small shapes.

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


(cherry picked from commit 481c1592ae)

Co-authored-by: Alex Shvartzkop <dudesuchamazing@gmail.com>
2024-04-16 22:36:34 +00:00
Seth Hillbrand 374fb0f5f2 IPC2581 fixes
- Component name ref comes before pin ref
- OtherSideView is at the end of the package
- BOM defines the dictionary so we need all items in the BOM even if
  marked "Exlude from BOM"
- Fix unique REFDES indicator to increment number rather than appending
  additional numbers
2024-04-16 13:25:09 -07:00
Jeff Young 3958d1bf14 Clean up selection logic.
Don't try to do too many things at once.  Separate
out fooptrint-children handling, visibility-handling,
and footprintEditor vs boardEditor differences.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17562
2024-04-16 18:12:47 +01:00
Jeff Young d761b4f22f RIP LIB_TEXTBOX and LIB_SHAPE. 2024-04-16 16:31:16 +01:00
Jeff Young 3efe504dcc Collapse LIB_TEXT into SCH_TEXT. 2024-04-16 16:31:16 +01:00
Mark Roszko 5d7e96841b Close bom file earlier
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17779
2024-04-16 12:39:03 +00:00
aris-kimi 66bb49e2da Silence some GCC warnings 2024-04-16 11:11:50 +00:00
jean-pierre charras 6b7852c2bb BOARD::DeleteMARKERs fix bug: missing m_itemByIdCache handling.
When deleting markers, the m_itemByIdCache corresponding entry must be
also removed.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/11750
2024-04-16 12:00:40 +02:00
Seth Hillbrand f61d400d88 Allow non-identical schematic/pcb nets
The schematic net names are fully unique but if we have multiple pads
that are mapped to a NC pin, they need to have unique net names so that
they do not get connected to each other in the ratsnest.  This breaks
the schematic parity check as we have modified the netname for some
pads.  To work around this, we first maintain the zero-th net without
suffix and then add an additional check in DRC to ensure that we allow
unconnected nets as long as the share a common prefix with the schematic
netname.
2024-04-15 17:54:44 -07:00
Mike Williams ea904c9fb1 Symbol Fields Table: configurable excluded from BOM filtering
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/17747
2024-04-15 13:08:04 -04:00
jean-pierre charras b7f035964f Fields in symbols: Ensure visibility is correctly set when reading a file
Also ensure default fields visibility is correctly set when creating a symbol
Change default field visibility to true in SCH_FIELD Ctor

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17767
2024-04-15 18:19:19 +02:00
jean-pierre charras ac36feda41 EEschema: fix incorrect (missing) init of main layer of SCH_SHEET fields
These fields were not drawn when drawing a hierarchical sheet.
2024-04-15 09:56:19 +02:00
Seth Hillbrand d13100e7f2 Update translations 2024-04-14 14:22:59 -07:00
Henrik Kauhanen 82d125f0af Translated using Weblate (Swedish)
Currently translated at 99.9% (9261 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-04-14 23:19:45 +02:00
pominglee a2d5033654 Translated using Weblate (Chinese (Traditional))
Currently translated at 92.2% (8549 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-04-14 23:19:45 +02:00
pominglee 660f983592 Translated using Weblate (Chinese (Traditional))
Currently translated at 92.2% (8547 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-04-14 23:19:45 +02:00
pominglee fdb129b976 Translated using Weblate (Chinese (Traditional))
Currently translated at 92.0% (8532 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-04-14 23:19:45 +02:00
Ulices 568b7b7884 Translated using Weblate (Spanish (Mexico))
Currently translated at 98.2% (9110 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-04-14 23:19:45 +02:00
Marek d3e3e74dae Translated using Weblate (Polish)
Currently translated at 100.0% (9268 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-04-14 23:19:45 +02:00
Ulices d55a0b7afb Translated using Weblate (Spanish)
Currently translated at 97.3% (9026 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es/
2024-04-14 23:19:45 +02:00
Tokita, Hiroshi 338d5bd253 Translated using Weblate (Japanese)
Currently translated at 97.9% (9080 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-04-14 23:19:45 +02:00
Alex Gellen f452591548 Translated using Weblate (Romanian)
Currently translated at 26.6% (2473 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ro/
2024-04-14 23:19:44 +02:00
Henrik Kauhanen 97e97e9ff9 Translated using Weblate (Swedish)
Currently translated at 99.9% (9261 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-04-14 23:19:44 +02:00
김랑기 b240a1fbae Translated using Weblate (Korean)
Currently translated at 100.0% (9268 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-04-14 23:19:44 +02:00
j.Kolod 2521493e28 Translated using Weblate (Polish)
Currently translated at 100.0% (9268 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-04-14 23:19:44 +02:00
김랑기 308c977501 Translated using Weblate (Korean)
Currently translated at 100.0% (9268 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-04-14 23:19:44 +02:00
CloverGit 2269240130 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (9267 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-04-14 23:19:44 +02:00
ssantos fd2cb7794d Translated using Weblate (Portuguese)
Currently translated at 99.9% (9267 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt/
2024-04-14 23:19:44 +02:00
co8 j 5f1e78d408 Translated using Weblate (Japanese)
Currently translated at 97.8% (9068 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-04-14 23:19:44 +02:00
Jan Straka 41e1596680 Translated using Weblate (Czech)
Currently translated at 79.2% (7347 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/cs/
2024-04-14 23:19:44 +02:00
Laurens Holst 296439f2ea Translated using Weblate (Dutch)
Currently translated at 100.0% (9268 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-04-14 23:19:44 +02:00
aris-kimi 28a07045a0 Translated using Weblate (Greek)
Currently translated at 99.7% (9248 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/el/
2024-04-14 23:19:44 +02:00
Ulices 833ce36118 Translated using Weblate (Spanish (Mexico))
Currently translated at 98.0% (9088 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-04-14 23:19:44 +02:00
pondahai b5e816faa1 Translated using Weblate (Chinese (Traditional))
Currently translated at 91.8% (8515 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-04-14 23:19:43 +02:00
김랑기 09387ccb66 Translated using Weblate (Korean)
Currently translated at 100.0% (9268 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-04-14 23:19:43 +02:00
Ulices 5c6c17ece7 Translated using Weblate (Spanish (Mexico))
Currently translated at 98.0% (9085 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-04-14 23:19:43 +02:00
Pferd O 416884351c Translated using Weblate (German)
Currently translated at 100.0% (9268 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-04-14 23:19:43 +02:00
aris-kimi 2e1e258086 Translated using Weblate (Greek)
Currently translated at 99.6% (9239 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/el/
2024-04-14 23:19:43 +02:00
Jan Straka e86eaba8f2 Translated using Weblate (Czech)
Currently translated at 78.8% (7306 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/cs/
2024-04-14 23:19:43 +02:00
Dmitry Mikhirev 4416faf1fd Translated using Weblate (Russian)
Currently translated at 98.1% (9096 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-04-14 23:19:43 +02:00
simmon 91f32051c6 Translated using Weblate (Korean)
Currently translated at 100.0% (9268 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-04-14 23:19:43 +02:00
CloverGit 3cdb60d4a8 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (9267 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-04-14 23:19:43 +02:00
CloverGit ef12f043aa Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (9267 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-04-14 23:19:43 +02:00
Laurens Holst f55955d326 Translated using Weblate (Dutch)
Currently translated at 100.0% (9268 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-04-14 23:19:43 +02:00
CloverGit 6b59d7c8ee Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (9267 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-04-14 23:19:43 +02:00
dsa-t 8155386cf3 Translated using Weblate (Russian)
Currently translated at 98.1% (9096 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-04-14 23:19:43 +02:00
Laurens Holst c21eba9be2 Translated using Weblate (Dutch)
Currently translated at 100.0% (9268 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-04-14 23:19:42 +02:00
Ulices 027771e39b Translated using Weblate (Spanish (Mexico))
Currently translated at 97.8% (9072 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-04-14 23:19:42 +02:00
pominglee 05009392c7 Translated using Weblate (Chinese (Traditional))
Currently translated at 91.8% (8515 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-04-14 23:19:42 +02:00
Andrej Valek 7cb69a48f0 Translated using Weblate (Slovak)
Currently translated at 64.1% (5945 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sk/
2024-04-14 23:19:42 +02:00
Laurens Holst ed575571a6 Translated using Weblate (Dutch)
Currently translated at 100.0% (9268 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-04-14 23:19:42 +02:00
Wellington Terumi Uemura f418722081 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (9268 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt_BR/
2024-04-14 23:19:42 +02:00
pominglee 7dbbfdf3a7 Translated using Weblate (Chinese (Traditional))
Currently translated at 91.8% (8510 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-04-14 23:19:42 +02:00
CloverGit 2b2a48bbf5 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (9267 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-04-14 23:19:42 +02:00
Laurens Holst 4819e53ba6 Translated using Weblate (Dutch)
Currently translated at 100.0% (9268 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-04-14 23:19:42 +02:00
Ulices 7e488de78e Translated using Weblate (Spanish (Mexico))
Currently translated at 97.6% (9054 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-04-14 23:19:42 +02:00
CloverGit 196c10f481 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (9267 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-04-14 23:19:42 +02:00
dsa-t 09ffdd7029 Translated using Weblate (Russian)
Currently translated at 98.1% (9096 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-04-14 23:19:42 +02:00
ZbeeGin b43c1a0319 Translated using Weblate (Polish)
Currently translated at 100.0% (9268 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-04-14 23:19:42 +02:00
Toni Laiho 62b9c56733 Translated using Weblate (Finnish)
Currently translated at 99.9% (9263 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/fi/
2024-04-14 23:19:42 +02:00
aris-kimi 5767589d17 Translated using Weblate (Greek)
Currently translated at 99.1% (9189 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/el/
2024-04-14 23:19:41 +02:00
Pedro Moreira a39cdac704 Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.8% (9255 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt_BR/
2024-04-14 23:19:41 +02:00
CloverGit fa8b90ff7e Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (9267 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-04-14 23:19:41 +02:00
Henrik Kauhanen 665c322029 Translated using Weblate (Swedish)
Currently translated at 99.9% (9261 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-04-14 23:19:41 +02:00
Marcel Hecko 3582f4e60f Translated using Weblate (Slovak)
Currently translated at 63.7% (5911 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sk/
2024-04-14 23:19:41 +02:00
dsa-t 351dbad80f Translated using Weblate (Russian)
Currently translated at 98.1% (9094 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-04-14 23:19:41 +02:00
Laurens Holst a451518dce Translated using Weblate (Dutch)
Currently translated at 100.0% (9268 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-04-14 23:19:41 +02:00
김랑기 7c7a1b6ca6 Translated using Weblate (Korean)
Currently translated at 100.0% (9268 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-04-14 23:19:41 +02:00
Pferd O d604e5bdf6 Translated using Weblate (German)
Currently translated at 99.8% (9256 of 9268 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-04-14 23:19:40 +02:00
Seth Hillbrand 8760519a87 Ensure that we are not calculating self-collision
Ratsnest may have connections from a zone to two different items.  This
should be avoided as we never want to draw the ratsnest line with the
same element as start and finish

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17763
2024-04-14 13:50:01 -07:00
Marek Roszko 2a3b597ab9 Strip out no longer needed links on the top executables
Not needed due to kicommon
2024-04-14 07:52:02 -04:00
jean-pierre charras c6f4157689 msys2: fix a link issue in Eeschema after changes from 89dd8e1. 2024-04-14 09:18:32 +02:00
Alex Shvartzkop ab531a33d9 Tweak GRID_CELL_STC_EDITOR offset on GTK. 2024-04-14 01:19:55 +03:00
Alex Shvartzkop affcfed677 Fix some warnings. 2024-04-14 01:19:39 +03:00
Alex Shvartzkop c1dc4e1d47 Fix build error on Linux/clang. 2024-04-14 00:37:44 +03:00
Alex Shvartzkop 76b7cdd128 Improve grid cell editors appearance. 2024-04-13 23:26:01 +03:00
Marek Roszko 94847e89c3 Static cast some more enum usage 2024-04-13 15:15:39 -04:00
Marek Roszko 7d68e19afa enum * double is deprecated 2024-04-13 15:14:39 -04:00
Marek Roszko d7685a40ee More lambda updates to explicit capture 2024-04-13 15:09:34 -04:00
Marek Roszko c1afade6f9 Silence the assert in NUMERIC_EVALUATOR on windows due to unicode
The reality is we parsing potentially unicode strings, char by char with the ascii functions like isdigit.
It's kind of broken already but at least I can make the assert go away lol
2024-04-13 15:05:09 -04:00
Jon Evans 02ec894b83 Remove LIB types from API for now
All with the possible exception of LIB_SYMBOL are going away
2024-04-13 15:03:34 -04:00
Jeff Young 14762e3d54 Handle layers for label fields. 2024-04-13 19:53:58 +01:00
Jeff Young d77eae3e7e Collapse LIB_FIELD into SCH_FIELD. 2024-04-13 15:42:13 +01:00
Jeff Young c241796968 Minor improvements to readability. 2024-04-13 15:40:08 +01:00
Marek Roszko aa8f449d48 Remove extraneous struct keyword 2024-04-13 09:56:25 -04:00
Marek Roszko 0ce227fa92 Can't use forward declare with std::vector
Not allowed per C++ standard

See https://github.com/llvm/llvm-project/issues/57700
2024-04-13 08:22:20 -04:00
Marek Roszko 89dd8e1166 Move the PARAM_LIST<> specializations for BOM to bom_settings 2024-04-13 07:59:25 -04:00
Marek Roszko eb38932d26 Fix capture lambda
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17757
2024-04-13 07:47:02 -04:00
Marek Roszko c05ae0b32e Fix another lambda capture 2024-04-12 23:37:38 -04:00
Marek Roszko 262d94964f Lets try C++20 2024-04-12 23:32:18 -04:00
Marek Roszko af2c52cf0a Remove wxT() that gets fed to ostream in boost and causes compile error 2024-04-12 23:06:23 -04:00
Marek Roszko 96cdfc7fa7 Update equality overloads for C++20
C++20 added new reverse and rewritten candidates. This can confuse the compiler because it'll test both A==B and B==A for overloads.
Because we were defining parent class equality overloads, A==B and B==A was considered ambigious due to both being compatible in casting.

So we needed to add explicit child class equality operator overloads
2024-04-12 23:05:58 -04:00
Marek Roszko 7a67151a22 Update lamba capture 2024-04-12 23:03:29 -04:00
Marek Roszko 1607729cf7 Silence deprecation warning about enum * fp type 2024-04-12 22:55:43 -04:00
Marek Roszko dbd98f1ce0 Explicit lambda capture 2024-04-12 22:54:59 -04:00
Marek Roszko e3777758d9 Silence enum operation warning 2024-04-12 22:54:42 -04:00
Marek Roszko 8fb4901d4b Fix more utf8 comparisons 2024-04-12 22:53:25 -04:00
Marek Roszko c042b51be9 Fix another deprecated lambda capture 2024-04-12 22:49:50 -04:00
Marek Roszko 161cfbacd4 constexpr the let user{} format string 2024-04-12 22:48:34 -04:00
Marek Roszko 0675c62a24 Update two more lambda capture 2024-04-12 22:42:31 -04:00
Marek Roszko e6be29daa0 Fix another UTF8 to wxString comparison 2024-04-12 22:38:38 -04:00
Marek Roszko 5e3396561d Fix some layer id enum colliding warnings
C++20 under MSVC does not like seeing enum values between two enums getting operated on.
static cast to int fixes it for what we are trying to do anyway
2024-04-12 21:55:19 -04:00
Marek Roszko b2115445cc Make screenCenter a VECTOR2D for now to silence c++ 20 build error 2024-04-12 21:55:19 -04:00
Alex Shvartzkop 1516aaf163 Improve custom grid cell editors' margins on MSW. 2024-04-13 03:54:04 +03:00
Alex Shvartzkop aa51cc5167 Remove macOS size tweak in custom grid cell editors.
Since the text field now has the no-border flag, it shouldn't be needed.
2024-04-13 03:54:04 +03:00
Marek Roszko 953c285ff0 fmt::format wants an actual constexpr format string under c++20 2024-04-12 20:04:52 -04:00
Marek Roszko 41fc1411eb Use explicit this capture in COLLECTOR m_inspector lambda 2024-04-12 20:03:07 -04:00
Marek Roszko 9e3865ed01 Remove wchar mixed into ostream output 2024-04-12 20:00:38 -04:00
Marek Roszko cd886a19d3 Partially update the json validator 2024-04-12 20:00:12 -04:00
Marek Roszko d8343a97dd explicit wx_str comparison 2024-04-12 19:59:43 -04:00
Marek Roszko 4a3018615b Be explicit with lazy_ctor captures 2024-04-12 19:56:02 -04:00
Marek Roszko 24a790a7dc Don't compare against the wrong type
Technically this is still wrong because of doubles..
2024-04-12 19:53:26 -04:00
Marek Roszko 5087c076c1 Lambda capture this for a callafter 2024-04-12 19:52:42 -04:00
Seth Hillbrand 6c17e275fb Revert "Re-enforce ordering"
This reverts commit b22fcf70cd.
2024-04-12 14:14:06 -07:00
Seth Hillbrand 531a8b9db9 Revert "Compare function should return int"
This reverts commit 7727982478.
2024-04-12 14:13:55 -07:00
Seth Hillbrand b22fcf70cd Re-enforce ordering
Instances, pins and graphics have started to wander around the files.
Sorts instances before writing.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17737
2024-04-12 11:58:30 -07:00
Seth Hillbrand 7727982478 Compare function should return int
Returning boolean is promoted to int and confuses false with '0'
indicating that the elements are identical
2024-04-12 11:30:16 -07:00
Seth Hillbrand f08cacb30f Revert "Re-enforce ordering"
Unexpected element loss after save.  Reverting to fix

This reverts commit f2f4890342.
2024-04-12 10:34:11 -07:00
Seth Hillbrand f2f4890342 Re-enforce ordering
Instances, pins and graphics have started to wander around the files.
Sorts instances before writing.  Uses compare with std::set (not
std::multiset) to enfore lib item ordering

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17737
2024-04-12 10:08:46 -07:00
Seth Hillbrand e14e956c1d Fully order schematic saves 2024-04-11 16:54:30 -07:00
Seth Hillbrand e538b98286 Incremental updates should not clear globals
Netclass assignments are stored in the project level but
CONNECTION_GRAPH updates would clear the assignments.  This keeps
existing netname->netclass assignments but updates any netnames that
were changed by the incremental updates.  Absolute updates are not
affected and fully recreate the net name to netclass map

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17720
2024-04-11 15:57:49 -07:00
Seth Hillbrand ac5fab190e Check for valid shared pointer before locking
We don't neccesarily have a valid pointer to the parent lib symbol when
checking if it is a power symbol, so fall back to the local flag if this
is the case

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

(cherry picked from commit 4481fcc75e)
2024-04-11 14:43:27 -07:00
Mike Williams cbef6d1cbf BOM Export: default to ${PROJECTNAME}.csv for convenience
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/17049
2024-04-11 15:46:50 -04:00
Mike Williams 9c058503d9 BOM Export: remember filename per project
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/17704
2024-04-11 15:05:59 -04:00
Seth Hillbrand d0fe2e06aa Do not set optional defaults
In the file format, the 'mirror' tag is optional (not written unless on)
so we cannot default the new text to 'mirror' on just because the
footprint is on the back layer as it won't be turned off by the
footprint loader.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17546
2024-04-11 09:43:12 -07:00
Alex Shvartzkop e7ac68d409 Support alternating table row colors in SCH_PIN_TABLE_DATA_MODEL.
See https://gitlab.com/kicad/code/kicad/-/issues/17482
2024-04-11 19:37:31 +03:00
Mike Williams 067ef9657e net navigator: handle no-connects 2024-04-11 10:21:18 -04:00
Mike Williams faca7ee05b net navigator: show all nets when none are highlighted 2024-04-11 10:21:17 -04:00
Wayne Stambaugh ec310ac3ed Update hierarchy navigator when undoing or redoing sheet name changes.
Use new schematic commit object in the edit sheet properties dialog.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17721
2024-04-11 10:11:02 -04:00
Alex Shvartzkop 9c1ece71a3 Show actual IO_ERROR message at VRML import.
https://gitlab.com/kicad/code/kicad/-/issues/17727


(cherry picked from commit 97b15a1708)
2024-04-11 11:38:40 +00:00
Seth Hillbrand a9f35ba42e Fix incremental connectivity
The connectivity routine would consider symbols, overwriting unused
subgraphs for pins that were not in the change list.  This is resolved
by updating the full connectivity to only use pins in the graph since
symbols are not connected independently.

In the process of adding QA tests for this change, additional issues
with the schematic QA were discovered.  Specifically, we were not
properly setting the root sheet UUID.  This was partially masked by a
const_cast setting of the RefDes in sch_symbol when called the RefDes
getter.  This exposed the fact that our QA ERC numbers did not match the
schematic editor stand alone ERC numbers.  So the test value for one
check needed to be updated

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17528
2024-04-10 17:25:58 -07:00
Seth Hillbrand 59f99d9a6a Re-add routine to remove duplicate points
The router needs to elimitate duplicate points but keep colinear
segments.  This re-creates the partial routine from the old Simplify()
function

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17582
2024-04-10 17:25:58 -07:00
Alex Shvartzkop 49dcd5f4fc Fix default cell alignment and FBP file for Configure Paths dialog. 2024-04-11 00:48:48 +03:00
Alex Shvartzkop 5d22c1adee Make grid cell editors with extra button consistent with normal text cell editors. 2024-04-11 00:47:27 +03:00
Alex Shvartzkop cae631d7b7 Fix build error in API handler.
(cherry picked from commit 46e183920385f5a040df948e35ecc8dcf80cd2ee)
2024-04-10 19:09:12 +00:00
Jeff Young 3b66f64c19 Cleanup. 2024-04-10 10:26:59 +01:00
Jeff Young 0d6822be0d Remove shadowed member variables. 2024-04-10 10:26:59 +01:00
Alex Shvartzkop 7b935f7673 EasyEDA Pro: import Colorful Image as Reference Image. 2024-04-10 03:21:46 +03:00
afkiwers d45911f54b add support to update an already existing field 2024-04-09 23:37:20 +00:00
Mike Williams e2f1da60d9 PCB Fields: fix v7 imported board hidden description field pos
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/17684
2024-04-09 15:23:44 -04:00
Jeff Young 1aa59b806c Allow selection promotion when editing wrong field type.
Also fixes a bug where a CHT_MODIFY on a parent symbol with a
selected child doesn't trigger a selection modified event.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17696
2024-04-09 13:40:18 +01:00
Jeff Young 56f6f44b3d Formatting, type-cast and auto cleanup. 2024-04-09 12:55:44 +01:00
Jeff Young e7493c7851 Fix SCH_SYMBOL's operator=.
Also cleans up a few loose ends from LIB_ITEM collapse.
2024-04-08 21:24:32 +01:00
Jeff Young 6c7946012c Turn off hidden pins/fields for plot jobs handler.
(We only have CLI settings for them when plotting symbols.)
2024-04-08 16:56:36 +01:00
Jeff Young 3ade857c7b Honour parent symbol's transform when over-plotting pins. 2024-04-08 14:26:48 +01:00
Jeff Young 1d753e0850 Respect showHiddenPins and showHiddenFields flags when plotting. 2024-04-08 13:32:11 +01:00
Jeff Young 9c94967b52 Tidy renderSettings / jobsHandler APIs. 2024-04-08 12:26:56 +01:00
Jeff Young 5abc7145da Fold LIB_ITEM into SCH_ITEM. 2024-04-08 10:24:50 +01:00
Jeff Young 494001ed4c Harmonize more APIs. 2024-04-08 10:10:24 +01:00
Jeff Young 968ca7c5c3 SNR 2024-04-08 10:10:24 +01:00
Huang Rui 1cbf6a1872 libgit2-1.8.0 compatibility: adjusted parent pointer type
- Adjusted parent pointer type in git_commit_create call for compatibility
  with libgit2 1.8.0 and above.
- Included preprocessor checks to maintain support for versions older than
  1.8.0.
- Ensures consistent function behavior across different libgit2 versions.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17536
Signed-off-by: Huang Rui <vowstar@gmail.com>
2024-04-07 15:43:52 +00:00
JamesJ 13038038d9 Remove unused method declaration in SCH_LINE
This is a tidy-up following on from b01796cb
2024-04-07 15:41:54 +00:00
Jon Evans ce846f5c22 Check for bus no-connects in ERC
Fixes https://gitlab.com/kicad/code/kicad/-/issues/13285
2024-04-07 08:50:28 -04:00
Jon Evans b36312ff24 Disable lazy-loading of 3D models on macOS
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17198
2024-04-07 08:20:34 -04:00
Mark Roszko fba868295c Use newer docker image for doxygen 2024-04-07 00:52:34 +00:00
Seth Hillbrand a12bc3a410 Don't knock out anti-text box
Knockout text should only prevent filling directly around the text
itself, not the larger anti-text fill around it.  This prevents minimum
width provisions from kicking in unneccesarily

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17665
2024-04-06 14:28:49 -07:00
JamesJ 9853b300d7 Check a SHAPE_POLY_SET outline exists before attempting to get it by index
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17687
2024-04-06 18:45:39 +01:00
Jon Evans d77d31b663 Fix running pytest tests in macOS 2024-04-06 12:15:35 -04:00
Jon Evans c9b6be2243 Load 3D plugins when running from build dir on macOS 2024-04-06 08:52:17 -04:00
Jeff Young 1028a76e4a Harmonize print/plot APIs. 2024-04-06 09:34:56 +01:00
Jeff Young 5dd8747ecb Harmonize mirroring APIs. 2024-04-06 09:34:56 +01:00
Jeff Young c5ed80af52 Harmonize rotate APIs. 2024-04-06 09:34:56 +01:00
qu1ck 441b2686d3 IPC_API: fix crash in PLUGIN_AVAILABILITY_CHANGED event handler 2024-04-05 18:11:52 -07:00
Jon Evans c6e784dae3 Fix order of install targets for macOS 2024-04-05 11:39:52 -04:00
Jon Evans 7baccba01c Coverity fixes 2024-04-05 08:16:29 -04:00
Jon Evans c1e7668d80 Fix SWIG wrapper for AddPrimitive
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17676
2024-04-04 23:09:05 -04:00
Jon Evans aff2d5c0d3 Factor out SHAPE_LINE_CHAIN utilities 2024-04-04 18:55:58 -04:00
JamesJ a321a86f38 Update net inspector after connectivity update when loading board
Fixes issue where if the net inspector was open when a board was
loaded, the track data would not be updated until a board edit
action triggered an update.
2024-04-04 22:29:47 +00:00
JamesJ 951065390e Add composite update callback to BOARD_LISTENER
Required for net inspector otherwise composite operations (such
as undo / redo, and length tuning) can result in multiple add /
remove events firing which results in inconsistent length state.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17527
(for 9.0)
2024-04-04 22:29:47 +00:00
Jon Evans ca5ca2858c Fix installation packaging of kiapi on macOS 2024-04-04 17:55:32 -04:00
Mike Williams e83a82594e net navigator: check for removal from net as well 2024-04-04 15:25:54 -04:00
Mike Williams e1548c0f9a schematic: update highlighting when net changed 2024-04-04 14:10:18 -04:00
Jeff Young 92910d5d0f Factor common parts of SCH_ & LIB_SYMBOL into SYMBOL. 2024-04-04 13:18:55 +01:00
Jeff Young bf2b3b0b0f Deconflict some LIB_TREE_ITEM APIs so they can remain non-const.
(The non-const is required by FOOTPRINT_INFO, which must load
footrpints to get some of the data.)
2024-04-04 13:18:55 +01:00
jean-pierre charras 59142a10d7 DIALOG_CREATE_ARRAY: better messages and better comments
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17642
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17656
2024-04-04 09:54:47 +02:00
jean-pierre charras 3f24e0eb09 minor compil warning (unused var) 2024-04-04 09:52:28 +02:00
Jon Evans 9c113b25a4 Allow turning the API server on/off at runtime 2024-04-03 22:04:11 -04:00
Marek Roszko e0b913cc65 Get rid of code path that has been unreachable for many years 2024-04-03 19:54:07 -04:00
Jon Evans 6a203fb289 Set SOVERSION for kiapi 2024-04-03 18:13:41 -04:00
Jon Evans 2b1f56ebc8 Disable a MSVC warning seen in protobuf generated code
This warning is not very useful and is disabled
by default when not using /Wall
2024-04-03 18:10:21 -04:00
Seth Hillbrand c9b1134417 Move FindProtobuf to default on for Linux 2024-04-03 10:41:14 -07:00
Seth Hillbrand 6c73e70dad Force installation of protobuf-compiler at configure step 2024-04-03 10:30:09 -07:00
Mike Williams 2acf928723 PCB: fix net inspector assert on column show/hide menu
Also handle 0-width columns coming in from settings. GTK seems to have
an issue where these columns are impossible to resize even if they are
made visible.
2024-04-03 13:15:47 -04:00
Jon Evans bab6913e14 Add api to the CI tests 2024-04-03 07:56:43 -04:00
Jon Evans 499b24e025 Add kiapi to Fedora CI artifacts 2024-04-02 23:33:55 -04:00
Jon Evans 220cf1287f Turn on CMake FindProtobuf for CI 2024-04-02 23:02:14 -04:00
Marek Roszko 279732e89e Add boost bimap to vcpkg 2024-04-02 21:18:58 -04:00
Marek Roszko 58913a0616 Add missing gltf find in occ 7.8 2024-04-02 21:06:48 -04:00
Marek Roszko 02325169d0 Bump vcpkg for occt 7.8.1 2024-04-02 21:06:47 -04:00
Jon Evans 493ca7a0f5 Fix unhandled case warnings 2024-04-02 20:56:48 -04:00
Jon Evans 75b61956e9 Fix Windows name collision 2024-04-02 20:06:36 -04:00
Jon Evans 1dbe78c68b Add QA tests and expand serialization for API 2024-04-02 19:51:18 -04:00
Jon Evans 6bd02cae6d Refactor; add user control over API server 2024-04-02 19:51:18 -04:00
Jon Evans a3b6ab48a4 Add a new plugin system for the new API 2024-04-02 19:51:16 -04:00
Jon Evans f613cd1cb4 ADDED: A new IPC API based on protobuf and nng
Details, documentation, and language bindings are works in
progress and will be evolving over the course of KiCad 9
development.
2024-04-02 19:34:36 -04:00
Jon Evans 77eaa75db1 Show all library children if library name matches search
(cherry picked from commit a042d1aab4)
2024-04-02 22:51:41 +00:00
Jon Evans e5d4f58d65 Fix parsing of legacy text hide token
(cherry picked from commit 53c2543474)
2024-04-02 22:26:57 +00:00
Marek Roszko 6ac1f39e62 Use kicad-vcpkg fork of liblzma to fix builds 2024-04-02 18:04:51 -04:00
Alex Shvartzkop b905b4eac8 Improve moving, rendering and plotting of very small angle arcs.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17110
2024-04-03 00:40:18 +03:00
Seth Hillbrand 8260c174e9 Prevent OOB access in polygon split
Check for vertex placement against original size.  Since we are
potentially adding vertices that are out of order with the original
polygon, we only want to check against the first set of vertices when
checking for polygon collision

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17664
2024-04-02 11:22:59 -07:00
Seth Hillbrand 2123e2ca9c Add some corrections to IPC2581 export syntax
Outline fonts need lineDesc
Padstack def need the location for the pad relative to the padstack
2024-04-01 22:57:25 -07:00
Marek Roszko 303bc19ce8 Use macro not function for the occ lib find 2024-04-01 21:54:43 -04:00
Marek Roszko c8e41dcfe8 Fix cmake find of opencascade libraries for occt 7.8
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17654
2024-04-01 20:49:33 -04:00
Seth Hillbrand d82e8ee41a Map nets in pasted data
Add missing nets to the existing board and use any existing nets of the
same name.

Adds option to clear all nets in Paste Special

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17626
2024-04-01 16:56:44 -07:00
Ian McInerney c7d280dfa1 Always use black text in PCB calculator E-series table
The white text in dark mode is too washed out on the cell colors to be
visible. Since we already purposely subdue the colors in dark mode, the
easiest fix is to just always use black text.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17033
2024-04-01 22:00:10 +01:00
Ian McInerney 90ace0fcaf Ensure model file output stream is valid before writing to it
Fixes KICAD-74V
2024-04-01 22:00:05 +01:00
Ian McInerney e67eae90e9 Check for read permissions before trying to import schematic file
This will display a better error message to the user, instead of saying
that no plugins to load the file are found (because the plugin tests
will also fail due to being unable to read the file).
2024-04-01 22:00:00 +01:00
Ian McInerney 87a8235831 Remove group from dummy track before deletion
The dummy track in the merge colinear segments is used to overwrite the
original segment with the changes at the end, so the group must be
removed before leaving the function, and can't be removed at creation.

Fixes KICAD-74M
2024-04-01 21:59:55 +01:00
Ian McInerney 9456f35491 Properly cleanup git repos and memory on project/frame deletion
* Ensure the git backend is deleted when the project tree is deleted.
* Unload the git repo for a project when the project is unloaded from
  the tree.
2024-04-01 21:59:50 +01:00
Ian McInerney 921358b096 Make instance checker path globally writable
On Linux, this directory is shared between users, so a multi-user
machine needs to let the other users have access to the directory to
create their own lockfiles.
2024-04-01 21:59:46 +01:00
Ian McInerney 9e597ea754 Add the option to use alternating row colors in tables/grids
ADDED: Option to use alternating row colors in tables/grids

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16739
2024-04-01 21:59:37 +01:00
Seth Hillbrand 553e4a25bf Tidy up some remaining triangulation cases
Found and fixed a few corner cases where triangulation point removal
could reset expected points
2024-04-01 11:48:12 -07:00
Jeff Young 1b22c92177 Fix extra space. 2024-04-01 17:45:02 +01:00
Jeff Young 78bec3f1ba Fix fishy logic in SHAPE_LINE_CHAIN::Collide(). 2024-04-01 17:03:15 +01:00
Seth Hillbrand 06b199fd41 Do not use cache when we modify vertices
When we add vertices to the tesselation routines, we cannot reuse these
without the original vertex points.

It may be possible to copy and modify the vertices from the hint data so
that they are properly positioned but naive attempts (moving based on
first point) did not work, so for now, we disable the hint cache when
the vertex sizes do not match as this prevents OOB access

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17621
2024-03-31 15:00:46 -07:00
Jeff Young dfa16eda95 Fix copy/pasta in SHAPE_LINE_CHAIN::Collide().
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17636
2024-03-31 18:12:33 +01:00
Roberto Fernandez Bautista 6078bc52eb PNS: Fix a few memory leaks 2024-03-31 18:21:02 +02:00
Jeff Young 43edc2eaf8 Don't start immediate mode when there's no event position.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17332
2024-03-31 12:59:52 +01:00
Jeff Young 02f6d38fe3 Fix merge error. 2024-03-31 12:59:52 +01:00
Thomas Pointhuber 7d1881b58a altium: use std::unique_ptr instead of raw pointers where feasible 2024-03-31 00:03:03 +01:00
jean-pierre charras bf84536863 3D viewer: Allow setting colors not in board stackup, when use board stackup option is set.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17632
2024-03-30 19:12:15 +01:00
Seth Hillbrand c841d0df6d Handle small holes in DRC Connection width test
If there is a small hole (smaller than the conn width), we can loop
around in a circle checking all points and not move past the mimimum
distance.

To avoid this, if we detect a loop, we exit the substantial checker.
This should return with true because a large hole will return true and
we are only checking to see if there is a minimum amount of copper
between two open areas
2024-03-30 07:58:34 -07:00
JamesJ b01796cb84 Auto-fill new net global / local label names from connectivity
Currently, new global or local net labels are auto-filled with the
net name if the wire is driven by a global or local label. This
currently happens recursively within SCH_LINE. This fix moves this
to determining the driver from the connectivity graph, and removes
the determination from the SCH_LINE code where it does not belong.
2024-03-30 14:33:51 +00:00
Roberto Fernandez Bautista 9957c58c14 Remove unused function RunPythonMethodWithReturnedString
pcbnewRunPythonMethodWithReturnedString already exists
2024-03-30 15:23:14 +01:00
JamesJ 79a3dd71e4 Only delete grouped / generated BOARD_ITEMS from the root item
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17527

This is required as during an undo / redo operation, rebuilding
the previous selection can result in a group / generator being
selected as well as all of their contained items. This prunes
the contained items to remove the possibility of a double-delete.
2024-03-30 14:20:06 +00:00
Marek Roszko fd501b4bc8 Fix DRC slowdown due to UI yields
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17434
2024-03-29 23:34:01 -04:00
Seth Hillbrand 37a3f52d81 Remove unused variable 2024-03-29 16:48:08 -07:00
Seth Hillbrand 6c05f2c67c Move logging message after vertex check
When creating the list, we may have fewer than needed vertices, which
prevents calculating the area
2024-03-29 16:47:07 -07:00
Seth Hillbrand e4756c811e Utilize hash_combine to avoid hash collision
Most of our pointers will share the top 32 or more bits of their pointer
addresses, making cache collisions highly likely.  This uses a hash
combiner to mix the bits more effectively
2024-03-29 15:39:57 -07:00
Seth Hillbrand 10c1072479 Remove duplicated clearanceEpsilon
We already get clearance epsilon in the clearance resolver.  Don't
subtract it twice or we end up getting DRC errors

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16879
2024-03-29 15:39:57 -07:00
Seth Hillbrand 5e850911c5 When dragging a via, we need to get all obstacles
The clearance epsilon should not be used to limit which force elements
we return in the query.  Otherwise, we can drag elements into a
DRC-violating space

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16293
2024-03-29 15:39:57 -07:00
Marek Roszko fcc9b8456f Add extra comment in vcpkg 2024-03-29 18:27:11 -04:00
Marek Roszko 57d029f087 Ensure liblzma stays pinned to 5.4.4 2024-03-29 18:27:11 -04:00
Roberto Fernandez Bautista 8afeea4ce9 Fix "pns_debug_tool replay" hidden controls 2024-03-29 23:15:44 +01:00
Jeff Young 491adc6c6c Formatting. 2024-03-29 16:04:32 +00:00
Jeff Young 2c21ef1ed0 Fix footprint undo for new UUID caches.
The footprint's children get swapped by the parent's std::swap
call, so they need to get removed/added to their parent around
the swap.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17592
2024-03-29 16:04:32 +00:00
Ethan Chien 42552d2e78 CMakePresets.json.sample: Prefer RelWithDebInfo for x64-Release 2024-03-29 09:59:46 +08:00
Seth Hillbrand c3a5b92ed0 Sort netnames in properties panel
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15590
2024-03-28 13:03:16 -07:00
Ethan Chien 075cbfc24f fix: Add architecture setting in the CMakePresets.json.sample 2024-03-29 02:47:26 +08:00
Seth Hillbrand c3f6a84d66 Update triangulation to handle poly-intersection
Polygon intersections happen against the original outline, not against
the currently remaining polygon.  This avoids pathalogical cases

Adds new simplification system to avoid duplicated points
Adds new edge-splitting algorithm to provide additional fall-back
Verifies that polygon cuts do not swap holes for outlines (negative
area)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17559
2024-03-28 10:16:24 -07:00
Ethan Chien 79174f8223 fix: Add x64-Debug and win64-Release presets in the CMakePresets sample 2024-03-29 00:54:20 +08:00
Jeff Young 3a430357bc Cut/copy/paste for SCH tables.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17335
2024-03-28 14:34:11 +00:00
Jeff Young 57b224d3f0 Cut/copy/paste for PCB tables. 2024-03-28 14:31:31 +00:00
Jeff Young f9c5e48c57 Add missing PCB_TABLE_T, and a comment. 2024-03-28 14:31:31 +00:00
jean-pierre charras 8754f6867f 3D viewer: fix some graphic issues:
Avoid issue when a copper layers thickness is 0 (min value is now 1 micrometer)
Fix incorrect rendering of plated graphic items and vias (vertical walls not drawn)
2024-03-28 14:52:31 +01:00
Ethan Chien 226356a2a4 Add initial CMakePresets sample for Windows 2024-03-28 20:38:05 +08:00
Jon Evans e347300593 Work around SWIG problems 2024-03-27 18:42:46 -04:00
Céleste Wouters e98c9f283f Improve SHAPE_POLY_SET fracture performance
Refactors `SHAPE_POLY_SET::fractureSingle()` to be more efficient, while
not changing the actual algorithm:

* increase cache locality by using contiguous arrays instead of what was
effectively a linked list
* reduce latency and jitter by replacing per-edge allocator calls with
ahead-of-time std::vector reserves
* increase cache efficiency by making the vertex struct smaller
* replace O(n^2) leftmost edge search with O(n log n) std::sort
* sort the polygons instead of the edges
* cut iteration count in half in the remaining O(polygons * edges) part
2024-03-27 21:19:02 +00:00
Mike Williams 48b3b4697a PCB: update footprint field when changing footprints
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/17598
2024-03-27 15:20:12 -04:00
Jon Evans 1acb1afa98 Fix build errors; warnings
(somehow, the previous version compiles on my machine...)
2024-03-26 19:38:28 -04:00
Jon Evans 5aa8af1abf Add a cache for looking up board items by ID 2024-03-26 18:36:23 -04:00
Jon Evans 7b6afd290a Remove non-const access to board-owned items
(with a few things const-casted for now)
2024-03-26 18:36:23 -04:00
JamesJ 7cc7f238d7 SCH_SHAPE destructor marked virtual 2024-03-26 22:20:09 +00:00
Ethan Chien 0a89236f19 CLI: Add allegro and pads netlist output format options 2024-03-26 19:58:22 +08:00
JamesJ 54919e6854 Performance update for pcbnew net inspector
Forces full rebuild of nets list for bulk updates over a certain
size. This is more performant than iterating over all items in
a bulk update.
2024-03-24 20:29:15 +00:00
JamesJ f51e775f26 Use bulk BOARD_LISTENER calls following undo or redo operations
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17561
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17420
2024-03-24 19:25:26 +00:00
Jeff Young 50567764b5 Allow no-net teardrops on no-net pads with no-net tracks.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17566
2024-03-24 19:22:25 +00:00
Jeff Young 2f2c42a06b More defensive coding for KICAD-YP.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17560
2024-03-24 19:22:05 +00:00
Jeff Young a53bc9e026 Attempt to prevent KICAD-YP.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17560
2024-03-24 18:12:58 +00:00
Jeff Young 5d37a00759 Table plotting for PCBNew.
Also fixes some bugs with property exposure that (along with
other things) allowed you to put table cells on a different
layer than their parent table.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17438
2024-03-24 16:49:33 +00:00
JamesJ 67d6e6afdf Only update net inspector when panel is shown.
Pcbnew can hang for a long time when undoing operations involving
large numbers of board items. This provides an interim workaround
(and replicated the behaviour of the search panel) by only
computing track statistics updates incrementally if the inspector
is displayed.

Partially fixes https://gitlab.com/kicad/code/kicad/-/issues/17561
(if net inspector is not shown)
2024-03-24 12:11:36 +00:00
Jeff Young f3ce3bc758 Close active cell editor when showing/hiding columns.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17425
2024-03-24 10:09:27 +00:00
Alex Shvartzkop bd59fb7768 Fix spelling mistake. 2024-03-23 21:43:30 +03:00
Alex Shvartzkop 93581607a8 Don't print unnecessary digits after decimal point for imperial units.
1 nm = 0.00003937 mils = 0.00000003937 inches,
So there's no reason to print more decimal places than 5 for mils and 8 for inches.

Related: https://gitlab.com/kicad/code/kicad/-/issues/15539
2024-03-23 21:19:04 +03:00
Jeff Young a6e2746a08 Rewrite intersheet refs resolution to be sheet-path aware.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17533
2024-03-23 16:50:21 +00:00
Jeff Young fc572bfbc6 Make sure users don't run into min text size.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17543
2024-03-23 15:50:45 +00:00
Alex Shvartzkop 1c7e3871b5 Fix warning due to unused angle in EasyEDA Pro schematic parser. 2024-03-23 17:51:19 +03:00
Jon Evans af18e06ea4 Remove the "insert chevron" function of the via placer
This behavior is generally undesirable and was only needed
because of past limitations.  Now we only split a track
when the user places a via directly on top of it.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16456
2024-03-23 14:28:21 +00:00
wh201906 806daecf85 Add toggleHV45Mode item to the measure tool's context menu
The behavior of the measure tool is influenced by the
horizontal/vertical/45-degree mode, but the context menu of the measure
tool lacks an option to toggle this mode. In contrast, the drawing
tools are also affected by this mode, and their context menu has the
item to toggle this mode.
2024-03-23 21:24:13 +08:00
Jeff Young 88c1fa3e26 Ignore graphic shapes that implement netties.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17223
2024-03-23 13:18:46 +00:00
Marek Roszko ab759d21f2 Fix more build warnings 2024-03-23 08:53:11 -04:00
Jeff Young 1e6eb652aa Don't show hidden text in symbol previews.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17526
2024-03-23 12:48:52 +00:00
Jeff Young 7218d501d4 Better locality-of-reference for footprint chooser filters. 2024-03-23 12:48:52 +00:00
Marek Roszko 490dbfdf83 Fix build warnings 2024-03-23 08:34:59 -04:00
aris-kimi d7abed2d60 Footprint Chooser dialog: Allow toggle buttons to work simultaneously 2024-03-23 09:48:15 +00:00
Seth Hillbrand 2a6a29830d Fix windows icons. Need 256 not 128px 2024-03-22 11:09:06 -07:00
Seth Hillbrand a793fa8b17 Fix typo in triangulation return 2024-03-22 11:08:38 -07:00
Seth Hillbrand 00d108498f Avoid crashing on missing tracks in CADSTAR
We can't assume that the ignored connection exists when trying to set
the junction size.  We use int_max for the default instead of 0 so that
later, we don't try to create a minor track with 0 width in loadNets()

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17523
2024-03-22 10:55:48 -07:00
Seth Hillbrand 6b915049d1 Check singular arcs connection
Even if there are no other segments in the line chain, we still should
check for arc connections in cases of individual arcs on a line chain
2024-03-22 10:41:42 -07:00
Seth Hillbrand e11cc322fd Add colored tab to fileicons
Allows differentiation when Windows badges the bottom left

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17525
2024-03-22 10:05:02 -07:00
Jeff Young 90566eb735 Setup default colors in the COLOR_SWATCHes.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17517
2024-03-22 12:41:03 +00:00
Jeff Young a3f3da5a7d Implement STROKE_PARAMS::Stroke() for SH_RECT.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17516
2024-03-22 12:22:30 +00:00
Marek Roszko d134d7cc2a Add missing include to force correct linkage 2024-03-22 06:48:47 -04:00
jean-pierre charras cb8ed07858 GERBER_JOBFILE_WRITER: use UTF8 encoding according to current specif.
Since 2020, non ASCII7 chars are encoded using UTF8 encoding.
A old but incorrect encoding was previously used.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17534
2024-03-22 09:50:32 +01:00
Marek Roszko f0912b6128 Fix msys2 build 2024-03-21 19:52:18 -04:00
JamesJ de85b2217b Re-centralise handling of sort column in net inspector list.
- Includes GTK crash fix from a5ef4f1b
- Additionally removes an unneccesary re-sort when rebuilding columns
- Correctly saves column state when using pcbnew standalone
2024-03-21 21:07:08 +00:00
Seth Hillbrand a58e7b37ff Skip small triangles
The minor triangles cost the same amount of compute time as larger ones
but do not have a material effect on the zone display.  This skips these
minor triangles when earcutting
2024-03-21 13:57:57 -07:00
Seth Hillbrand 7e7fec69f6 Add logging and area check to tesselation
Logging is useful when we find an area that cannot be triangulated.
This will be used to generated test cases.

Skipping minor untesselated areas means that the polygon will still be
considered fully tesselated (and not sent back again and again) even if
the tesselation misses an area less than the configured limit.
Currently, this is 31^2nm.
2024-03-21 13:57:57 -07:00
Seth Hillbrand 4f03bb2fb6 Update triangulation 2024-03-21 13:57:57 -07:00
dsa-t db12f2af49 Disallow cross-probing when not on Symbol Fields Table Edit tab.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17531
2024-03-21 19:08:23 +00:00
Jeff Young b285545aee Don't take too long worrying about very small exposed areas.
(And in particular, don't take forever if the min / 10 results
in step being 0.)
2024-03-21 18:14:29 +00:00
Jeff Young 58df9c96f4 ADDED: Expose units and DeMorgan to properties system.
(Also fixes inheritance bug in LIB_PIN's properties.)
2024-03-21 16:19:55 +00:00
jean-pierre charras 4f4ca9f383 Do not run DRAWING_TOOL::PlaceTuningPattern() inside the footprint editor
The footprint editor cannot run the router.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17522
2024-03-21 15:19:48 +01:00
Jeff Young c5c65f23a4 Internationalise pin info when language changes.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17224
2024-03-21 12:31:04 +00:00
Jeff Young 913e6b47d7 Fix copy/pasta in tooltips.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17515
2024-03-21 12:31:04 +00:00
Marek Roszko 46e301cd7f Add missing header include that only fails on msys2 ucrt
Weird
2024-03-21 07:41:51 -04:00
Marek Roszko 83ef5fd7d6 Move PGM_BASE to kicommon 2024-03-20 23:29:42 -04:00
Marek Roszko e32b26ebeb Move JSON_SETTINGS and PARAMS to kicommon 2024-03-20 23:29:42 -04:00
Mark Roszko 8e31759191 Fix hopefully the last build breakage 2024-03-21 03:28:44 +00:00
Mark Roszko 7b904545e9 Fix explicit wxstring build breakage 2024-03-21 03:25:15 +00:00
Mark Roszko 9947cc0359 Fix another build breakage 2024-03-21 03:23:29 +00:00
Mark Roszko de6c0fcf25 Fix build breakage due to missing header 2024-03-21 03:15:14 +00:00
Jon Evans a5ef4f1bef Net inspector: fix crash when switching boards on GTK
Can't invalidate columns while they are the sorting key
2024-03-20 23:04:28 -04:00
Jon Evans f00f47df13 wxWidgets 3.3 compatibility: explicit wxString conversion 2024-03-20 22:02:41 -04:00
Jon Evans e7b6573717 wxWidgets 3.3 compatibility: properties API 2024-03-20 22:02:40 -04:00
Jon Evans 773d241863 wxWidgets 3.3 compatibility: update enum name 2024-03-20 21:50:44 -04:00
Jeff Young d0df8df7c7 Use a lighter touch keeping internal data structures in sync.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17493
2024-03-20 21:35:43 +00:00
Jeff Young 82c851a4a7 Expose groups to property manager.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17496
2024-03-20 20:19:21 +00:00
Jeff Young 859f553c91 Keep internal data consistent when changing pad type.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17493
2024-03-20 18:35:56 +00:00
Jeff Young 7bdf1c7e0f Clear flags before depending on them.
(While at first it may look like any item with the flag set
is going to get deleted anyway, if an undo happens then we
end up with table cells with the STRUCT_DELETED flag already
set.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17487
2024-03-20 17:55:58 +00:00
jean-pierre charras 90eed8b4b6 Avoid using a nullptr. 2024-03-20 18:34:18 +01:00
Jan Wichmann 66d8f5cae4 pcb_calculator: Feature Calculation of voltage regulator with tolerances 2024-03-20 12:59:36 +00:00
Alex Shvartzkop 800ff9ffb1 STEP export: add location info to edge add failures. 2024-03-19 23:10:37 +03:00
Alex Shvartzkop 75037dd1d1 STEP export: handle small segments connecting two arcs better.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17499
2024-03-19 22:53:30 +03:00
Roberto Fernandez Bautista 69107816f1 nanodbc: Fix use after free
Cherry picked from upstream commit e24383436703c9151af1e22652e7d4dbbb52fc15

https://github.com/nanodbc/nanodbc/commit/e24383436703c9151af1e22652e7d4dbbb52fc15
2024-03-19 18:50:20 +01:00
jean-pierre charras 3303c17c9b fix minor compil warning (inused var) 2024-03-19 17:40:04 +01:00
jean-pierre charras f3966371be Simulation: add export current plot to clipboard and current schematic
These exports are in file menu.
2024-03-19 17:05:55 +01:00
jean-pierre charras 63dd4aed93 Step exporter: workaround to fix issue for boards with main round outline
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17446
2024-03-19 11:19:37 +01:00
JamesJ a763d613e5 Move Net Inspector dialog to a widget panel in pcbnew
Introduces some updates to the inspector, and a number of bug fixes:

- Correctly handles changes in board stackup
- Correctly handles unit change events
- Correctly handles language change events
- All layout / panel settings are stored to the project settings
- Retains ability to create net report
- Simple filter searches on net name and net class name (stored in settings)
- Allows hide / show of columns (stored in settings)
- Grouping by netclass (stored in settings)
- Optional filtering by net name (stored in settings)
- Optional filtering by net class (stored in settings)
- Custom grouping by net name match
2024-03-19 01:02:01 +00:00
Seth Hillbrand 4e6cd0d293 Forward and reverse test for point in poly collisions 2024-03-18 15:51:14 -07:00
Jeff Young 05cdd44404 Don't assume all glyphs are outline with an outline font.
Underline and overbar may be stroke glyphs.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17478
2024-03-18 22:21:01 +00:00
Jeff Young 4ed2a0674a Minor cleanup. 2024-03-18 22:21:01 +00:00
Mike Williams 543343b7d1 prettifier: add newlines to golden samples 2024-03-18 16:03:09 -04:00
Mike Williams 5318001726 prettifier: add newline to end of file
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/17480
2024-03-18 15:29:43 -04:00
jean-pierre charras 0fab12f367 hotkey selector dialog: accept hotkey using Alt key modifier on Windows.
On Windows, Alt key is specific, and the dialog did not accept the modifier

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17453
2024-03-18 18:16:37 +01:00
jean-pierre charras 3b47fd1503 FOOTPRINT_CHOOSER_FRAME: add option to show the 3D in a separate viewer.
If a separate viewer frame is selected, the footprint chooser always shows
the footprint and the 3D shape is shown in a 3D viewer frame if the 3D view
is enabled.
2024-03-18 08:42:43 +01:00
Mark Roszko 72d83cd5de Revert "Move JSON_SETTINGS and PARAMS to kicommon"
This reverts commit 81855aaaa6
2024-03-18 00:08:46 +00:00
JamesJ 2311eed08a Add new ERC rule to check for global labels with only one entry in the schematic
By default this rule is set to ignore to provide continuity for those using
single global labels to name nets (e.g. in simulation)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/13212
2024-03-17 23:24:43 +00:00
wh201906 3f2e3d89e2 Fix selected item count in the properties panel
The code for updating selected item count is skipped if the properties
items don't change.
2024-03-17 22:26:31 +00:00
Marek Roszko 81855aaaa6 Move JSON_SETTINGS and PARAMS to kicommon 2024-03-17 18:11:49 -04:00
Jeff Young 37b19c4df7 Handle table layer in undo.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17437
2024-03-17 20:39:46 +00:00
Jeff Young 0598ca0f90 Keep BOARD_DESIGN_SETTINGS DRC marker exclusions up-to-date.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17429
2024-03-17 16:29:24 +00:00
Wayne Stambaugh 797ab998cc Maintain hierarchy navigator expansion state between edits.
Prevent the hierarchy navigator from being rebuilt unless there are actual
sheet changes that would cause a change to the tree.

Save the tree expansion state before rebuilding the tree and then restore
the expansion state to the previous state sans edits.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16635
2024-03-17 09:02:26 -04:00
Jeff Young d317b8da74 Pull modifications to cherry pick forward from 6.0. 2024-03-17 12:42:45 +00:00
Jeff Young 44c14b1935 Fix layer swapping for multi-layer items.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17371
2024-03-17 12:14:21 +00:00
Jeff Young 383dbd983a Don't skip transitions from netclass to empty. 2024-03-16 19:46:48 +00:00
Jeff Young a6e8370ddd Pin names drive netnames. 2024-03-16 19:26:26 +00:00
Jeff Young 17a93adb30 Netclasses also must be computed in connectivity updates. 2024-03-16 19:24:25 +00:00
Jeff Young 116908c088 Formatting. 2024-03-16 12:00:15 +00:00
Jeff Young a4062ade3d Report location of FUTURE_FORMAT_ERRORs when reading footprints. 2024-03-16 11:06:12 +00:00
Jeff Young d17151ac1b Correctly handle locked token for PCB_TEXTBOX and PCB_TABLECELL.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17439
2024-03-15 21:42:47 +00:00
Mark Roszko fc11862580 Try out the medium runner for public linux builds 2024-03-15 18:37:34 +00:00
Jeff Young da2610b93b Add autocomplete accept & cancel to the hotkeys list. 2024-03-15 00:40:17 +00:00
StefanBruens e07b4ce8e4 Fix triangulationValid check race for zone fill
The m_triangulationValid flag is used in several places without holding
the mutex, thus it should only ever be set when the triangulation is
guaranteed to be valid.

This can either be done by protecting both data and flag by the same
mutex, or updating the flag only after the triangulation has finished.

Also fix the case when the triangulation actually fails, the flag should
not be set in this case.

While at it, simplify the recalculation check. Only if both the
triangulation is valid, and the data hash is unchanged the recalculation
can be skipped - this is typically the case when two threads try to
update the cache concurrently, the second one will block at the mutex,
and will see the valid data after the first thread has finished.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17180
2024-03-14 22:26:23 +00:00
Jan Wichmann 91b850d8df pcbnew: The checkbox 'Center on footprint' was not disabled when the actionButton was changed. 2024-03-14 22:24:30 +00:00
Wayne Stambaugh cf97432833 Fix Eagle footprint library QA test failure.
Unfortunately the KiCad library I/O does not unescape file names so do not
escape them in the Eagle board plugin.
2024-03-14 17:00:27 -04:00
Jeff Young f22f5f47cb Reset penWidth before stroking.
(PlotPoly will have set it to "1".)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17218
2024-03-14 17:40:04 +00:00
Jeff Young e30b6398b7 ADDED: optional PDF metadata from AUTHOR and SUBJECT variables.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17289
2024-03-14 17:40:04 +00:00
Wayne Stambaugh 34ec57958d Fix Eagle board import when footprint library versions exist.
This was a crude hack that appends the library URN ordinal to the name of
the footprint so that it can be correctly looked up by the "element" node.
The Eagle XML DTD does not make it clear how the URN "ASSET_ID" and
"VERSION" are used to look up the appropriate "ASSET_TYPE" so this is a
best guess and seems to work correctly.

The inferred edge clearance dialog had to be disabled when importing third
party boards because on GTK (and possibly other platforms) the dialog would
completely hang KiCad preventing the imported board and possible schematic
from being saved.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/12897
2024-03-14 09:45:05 -04:00
jean-pierre charras c27eade01e Symbol Editor: do not allow to select fully invisible pins and fields
Of course, invisible pins or fields shown by using option Show invisible
pins or Show invisible fields can be selected.
2024-03-14 10:01:58 +01:00
Seth Hillbrand 81cb6d0c3f Fix race condition in zone fill
When checking collisions, the SHAPE_POLY_SET::Collide() routine is not
const because it will regenerate the triangulation cache if it is out of
date (using a const_cast, grrr).  This sidesteps the issue by assigning
a mutex to the triangulation caching

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17180
2024-03-13 10:35:40 -07:00
jean-pierre charras 4f4d9be8d1 Symbol Editor do not display bounding box of invisible pins and fields 2024-03-13 17:46:14 +01:00
Wayne Stambaugh eddf4883b6 Minor dialog layout improvements. 2024-03-13 11:45:33 -04:00
Jeff Young dac16a02cc Default is a valid netclass, even if it's not in m_NetClasses.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17388
2024-03-13 15:30:07 +00:00
Jeff Young a091767551 Don't test non-overlapping non-through-hole vias.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17426
2024-03-13 15:19:28 +00:00
Jeff Young 91d949f59e Splitter for 3D model page of Footprint Properties.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15606
2024-03-13 15:03:55 +00:00
Wayne Stambaugh 33566f88a9 Clean up debugging output accidentally left in previous commit. 2024-03-13 10:48:44 -04:00
Wayne Stambaugh 0ff8d21459 Fix broken paste special keep existing symbol annotations.
This was only broken for symbols on the sheet where the symbols were
copied from.  The symbol annotation for all sub-sheets was preserved.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17231
2024-03-13 09:39:41 -04:00
Jeff Young 7341d4bf37 Update m_LastLegendPosition after setting dirty bit.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17411
2024-03-13 10:39:03 +00:00
Alex Shvartzkop b56ee20e22 Fix a crash in PNS zone sync when there's more outlines than triangulated polygons.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17351
2024-03-13 03:09:21 +03:00
Jon Evans b190f21b6c Remove close buttons from schematic AUI
Harmonizes with PCB editor

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17415
2024-03-12 19:51:27 -04:00
Jon Evans ece8521e68 Add some safety to layer swapping
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17371
2024-03-12 19:32:40 -04:00
Jeff Young 4b6a1f4dbd Remove netclass/custom rule handling from Track & Via Properties.
(These should be done in Edit > Edit Track & Via Properties.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17216
2024-03-12 22:29:03 +00:00
Jeff Young 1844bf1708 Make Edit Track & Via Sizes "specified sizes" dropdowns clearer.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17216
2024-03-12 22:27:10 +00:00
Jeff Young 25e181db5c Don't allow selection of footprint text in board editor.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17271
2024-03-12 21:30:12 +00:00
Jeff Young 628ec858a6 Label netlist exporters.
(Particularly useful for those that have no other settings and
otherwise look blank.)

Also replaces "Generator" terminology as it's a bit confusing
(and will only get more confusing with PCBNew Generators).
2024-03-12 17:47:24 +00:00
Jeff Young 7ec2a1f09c Allow Scintilla-created clipboard to be accessed after quit. 2024-03-12 17:09:07 +00:00
Jeff Young 2a0ce409e3 Attempt to fix non-MacOS build error. 2024-03-12 15:17:30 +00:00
Jeff Young 87121af3c9 Simplify about dialog impl and make it real-time performant.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17213
2024-03-12 14:50:10 +00:00
Alex Shvartzkop 463b609993 Disable infinite panning when using XWayland.
Cursor warping doesn't work properly in this scenario.

https://gitlab.com/kicad/code/kicad/-/issues/14109
2024-03-12 10:31:23 +03:00
Alex Shvartzkop 44b970c8f2 Fix warning. 2024-03-12 08:54:21 +03:00
Alex Shvartzkop e4218effbd Disable search ctrl cursor management on non-OSX.
Buggy at least on GTK and MSW.

(cherry picked from commit 764de7257f)
2024-03-12 08:28:11 +03:00
Alex Shvartzkop bf6ff5b805 Do not write alpha to the main framebuffer when performing antialiasing.
This allows correct background display when the main framebuffer has alpha.
Noticeable on Wayland with Mesa 24.0.2 Iris driver.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17341
2024-03-12 08:04:56 +03:00
Seth Hillbrand 0f57d76ecd Clean and standardize cross-probing action
Between schematic and pcb editors, we want the following actions:

- Single click on ERC/DRC item should show the item in the ERC/DRC
  window.  But if the window is not visible, it should only update the
  status bar
- Double click on ERC/DRC item should show and raid the ERC/DRC window
  as well as select the line item

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17383
2024-03-11 17:50:44 -07:00
Seth Hillbrand 347c50b26d Handle issue with alternate SHAPE_LINE_CHAIN
SHAPE_LINE_CHAIN_BASE can include things that are not SHAPE_LINE_CHAIN
like the triangle SHAPE_LINE primitive.  To check arcs, we need to avoid
these elements as they do not have the full SHAPE_LINE_CHAIN class
available.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17327
2024-03-11 17:21:09 -07:00
Seth Hillbrand 6e591f5f91 Don't count removed zone layers
This does 3 things:
1) Removes unused zone layers on load
2) Does not save unused zone layers
3) Removes unused zone layers from connectivity calculation

(1) Prevents existing boards from using unused zone layers for any
connectivity or rendering.  (2) Updates the contents of boards with
removed zone layers to prevent them from propagating.  (3) updates the
connectivity while running pcbnew and removing a zone layer

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17288
2024-03-11 23:38:10 +00:00
SubaruArai d7173dd6d1 qr footprint wizard: add option for error correction level
QR codes allow 4 different levels of error correction.  By increasing the level, larger numbers of data bytes can be corrupted without invalidating the code
2024-03-11 23:37:29 +00:00
Seth Hillbrand 3cc1617f5a Fix slow selection time when calculating clearance
The clearance between two zones could be rather slow.  This was in part
to trying to do triangle-triangle collisions between zones when we only
need outline collision and in part to the shape_line_chain collision
routine.  The shape_line_chain collisions don't need to recreate
segments on each iteration and should instead create them once and using
this to check all collisions

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17327
2024-03-11 16:32:24 -07:00
Seth Hillbrand 9648fafe11 Handle memberOfSheet for full footprints
Previously, we handled clearance for just components in the eval
function.  We also checked the incorrect root sheetname.
2024-03-11 16:32:24 -07:00
Jeff Young d083593177 Table bug fixes.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17399

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17398
2024-03-11 22:58:12 +00:00
Wayne Stambaugh 865225fcca Use correct value field text when importing Eagle schematic symbols.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17130
2024-03-11 15:19:32 -04:00
Jeff Young ed61c5593f Don't show normal cut/copy/paste items in Signals grid.
(Do allow a copy of signal names though.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17395
2024-03-11 18:14:38 +00:00
Jeff Young 5ccd11d426 Run disambiguation if there are multiple preferred items.
This didn't really come up before tables, but any cell selection
will also include its parent table.
2024-03-11 17:46:09 +00:00
Jeff Young ccfefc3971 Table support for footprint editor.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17333
2024-03-11 17:46:09 +00:00
Jeff Young 85d0126187 Auto-start text entry for Scintilla grid cells. 2024-03-11 17:46:09 +00:00
Jeff Young 73f94175de Formatting. 2024-03-11 17:46:09 +00:00
Mojca Miklavec 01cb1543bb Change the platform detection order
Make sure that windows-specific getWindowsKiCadRoot() is only called on Windows
2024-03-11 15:43:33 +00:00
Mark Roszko d904535a15 Add missing text var override to cli gerbers
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17283
2024-03-11 12:33:52 +00:00
Jeff Young 9281561938 Fix include paths and merge conflicts. 2024-03-11 12:11:00 +00:00
Michal Grzegorzek 25abba7432 Add XSPICE node/port modifiers: %d [ ~ ] etc. 2024-03-11 12:03:37 +00:00
jean-pierre charras 64812d3fe6 DIALOG_ERC: fix crash when set to ignore a an ERC violation.
If a ERC violation is set to ignore, all corresponding markers are deleted.
But if one of these markers is selected, a crash happens.
Now all selected objects are deselected before deleting markers.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17375
2024-03-11 10:17:11 +01:00
Jeff Young fbc433deaa Make sure to initialize cell start location.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17379
2024-03-10 21:49:54 +00:00
Jeff Young c8d897ed0f Fix copy/pasta in GetLayerColors().
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17374
2024-03-10 21:10:18 +00:00
Jeff Young 9602151d6c Fix typo in SelectRows().
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17378
2024-03-10 21:06:43 +00:00
James J bf7896a0e1 Add option to preserve custom power flag values in Update Symbols from Library dialog 2024-03-10 18:32:00 +00:00
Jeff Young 1152b0462c Grid properties for GerbView.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17372
2024-03-10 18:21:50 +00:00
ecorm 4dcd1fb8e2 Fix formatting from simulator X/Y zoom changes 2024-03-10 12:43:18 +00:00
ecorm 16de0a666c Horizontal/vertical zoom for Simulator plots
ADDED: Horizontal/vertical zoom for simulator plots, via mouse wheel,
toolbar buttons, menu commands, and hotkeys.

ADDED: Simulator preferences panel, populated with mouse wheel
and trackpad settings that control pan and zoom of simulator plots.

ADDED: Zoom In/Out Horizontally/Vertically commands that can be bound
to hotkeys.

CHANGED: Simulator plot scroll wheel gestures are no longer hard-coded
and can now be configured via the new Simulator preferences panel.

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

Other unreported bugs that were fixed:

- Fixed wierd, jumpy simulator plot view limiting behavior.

- Fixed Zoom In Center and Zoom Out Center commands not preserving
  the simulator plot center point.

- Fixed simulator plot nudging when exported as PNGs.

- Fixed rectangular selection zoom being able to exceed simulator plot
  view limits.

Notes:

- Provided new SIM_PREFERENCES struct to be used for future
  simulator preferences set via the simulator preferences dialog.

- Bundled pre-existing EESCHEMA_SETTINGS::SIMULATOR settings into
  EESCHEMA_SETTINGS::SIMULATOR::VIEW.

- Replaced mpWindow::EnableMouseWheelPan with more general
  SetMouseWheelActions.

- Refactored and tidied up wxMathPlot's mpWindow code involved with
  fitting, zooming, and panning.

- Consolidated long lists of duplicated member variable initializers to
  a new mpWindow private delegated constructor.

- Provided provisional Zoom In/Out Horizontally/Vertically toolbar
  icons that need improvement by a graphics designer.

- Provided gitignore entries for the Qt Creator IDE
2024-03-10 12:43:18 +00:00
Jeff Young 1bf24da385 Schematic editor Table Properties and commenting for QuasiModal usage. 2024-03-10 12:18:50 +00:00
Jeff Young a12d79cd13 Performance improvements for multi-page dialogs. 2024-03-10 12:18:50 +00:00
jean-pierre charras 821063e5b1 Pcbnew, pdf plotter: fixes and enhancements.
* To select a footprint info, Use the bbox with not text as selectable area
* Fix also incorrect position of footprint bbox when plotting with offset

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17355
2024-03-10 13:04:39 +01:00
Jeff Young f341ab9b00 Bug fixes for flipping tables.
Also adds support for tabbing between table cells in the
table editor dialog.

Also adds support for calling the table editor dialog from
edit properties on a table selection.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17337
2024-03-09 22:18:19 +00:00
Jeff Young 63b06095e6 Table selections for PCBNew. 2024-03-09 22:18:19 +00:00
jean-pierre charras 36b9ef0dc9 Gerbview: update view items after reordering/modifying view layers.
Previously, after updating the gerber layer order, displayed D_codes where
not always those corresponding to the active layer.
2024-03-09 18:13:24 +01:00
Yon Uriarte e824e5a267 Compiler warning: C4555 result of expression not used 2024-03-09 17:11:38 +00:00
Jeff Young 72ba31ba27 Pass symbol's netlist to footprint preview widget.
This allows us to show the pin functions on the corresponding
pads.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17349
2024-03-09 15:01:59 +00:00
Marek Roszko cb01bca1f4 Add PADS netlist format export 2024-03-09 10:00:46 -05:00
Wayne Stambaugh c5a02fc266 Do not update schematic connectivity for irrelevant property changes.
Prior to this change, the schematic connectivity was updated any time a
change was made to a connectable object.  Now the connectivity is only
updated when an object change actually affects the connectivity.  Other
properties like line width, fill type, custom fonts, etc. will not cause
the connectivity graph to be rebuilt.

The SCH_COMMIT flag SKIP_CONNECTIVITY has been removed.  All schematic
objects can test if they are connectable and if there have been changes
to any connection properties that require a connectivity rebuild.

Remove duplicate rebuild connectivity calls from editor control tool.
This was causing the tangling end test to get called four times on every
undo and redo action because the dangling end test is already called in
the connectivity graph calculation code.

Update connectivity when changing label names which fixes an unreported
connectivity bug.
2024-03-09 08:50:26 -05:00
jean-pierre charras b8b52f35f8 French translation update 2024-03-09 10:39:00 +01:00
Alex Shvartzkop 4d66a8ebdb Fix rendering/plotting of arcs with tiny angle and huge radius.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17343
2024-03-09 02:07:24 +03:00
Jeff Young d1d9636598 Run Edge.Cuts & Margin clearance tests on zone layer.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17292
2024-03-08 20:51:05 +00:00
Seth Hillbrand 686a62cbe6 Temporary fix to disable zone-zone clearance display
When selecting two objects, we display the measured clearance between
them.  This can be problematic with large zones as they have thousands
of triangles.

This is a temporary fix for 8.0.1 to disable the check until we have a
performant version

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17327
2024-03-08 10:31:59 -08:00
Alex Shvartzkop aa68a3817a Fix zone cross-probing from DRC dialog. 2024-03-08 21:23:14 +03:00
jean-pierre charras 7944803f8c GERBVIEW_FRAME::RemapLayers(), fix incorrect handling of layers visibility
When modifying the gerber layers visibility, other (non gerber) layers must
be not modified.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17282
2024-03-08 17:03:11 +01:00
Alex Shvartzkop f6f0b9a661 ADDED: PCB 3D image raytracing rendering from CLI.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/3691
2024-03-08 14:38:18 +00:00
Seth Hillbrand 7721bdc441 Update Translations 2024-03-08 00:00:25 +01:00
Pedro Moreira f941cc50fb Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.9% (9257 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt_BR/
2024-03-07 23:56:04 +01:00
pominglee e840384da1 Translated using Weblate (Chinese (Traditional))
Currently translated at 91.9% (8514 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-03-07 23:56:04 +01:00
Pedro Moreira 200b6d9b66 Translated using Weblate (Korean)
Currently translated at 100.0% (9258 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-03-07 23:56:04 +01:00
김랑기 8655d00da5 Translated using Weblate (Korean)
Currently translated at 100.0% (9258 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-03-07 23:56:04 +01:00
pominglee ade8d909a1 Translated using Weblate (Chinese (Traditional))
Currently translated at 91.8% (8502 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-03-07 23:56:04 +01:00
CloverGit 537d155216 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.5% (9218 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-03-07 23:56:04 +01:00
김랑기 bb640001bc Translated using Weblate (Korean)
Currently translated at 100.0% (9258 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-03-07 23:56:04 +01:00
Tokita, Hiroshi 394ffb350c Translated using Weblate (Japanese)
Currently translated at 97.9% (9067 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-03-07 23:56:04 +01:00
109247019824 626f88f595 Translated using Weblate (Bulgarian)
Currently translated at 7.5% (700 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/bg/
2024-03-07 23:56:04 +01:00
Pedro Moreira 710a636a97 Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.9% (9256 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt_BR/
2024-03-07 23:56:03 +01:00
Wellington Terumi Uemura 46ef628b11 Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.9% (9256 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt_BR/
2024-03-07 23:56:03 +01:00
YÜKSEL AÇIKGÖZ 391d7d06f1 Translated using Weblate (Turkish)
Currently translated at 57.0% (5282 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/tr/
2024-03-07 23:56:03 +01:00
pominglee ca2ec19531 Translated using Weblate (Chinese (Traditional))
Currently translated at 91.8% (8500 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-03-07 23:56:03 +01:00
Laurens Holst 9aea3f6db8 Translated using Weblate (Dutch)
Currently translated at 100.0% (9258 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-03-07 23:56:03 +01:00
Wellington Terumi Uemura 67ab165a51 Translated using Weblate (Portuguese (Brazil))
Currently translated at 98.2% (9096 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt_BR/
2024-03-07 23:56:03 +01:00
YÜKSEL AÇIKGÖZ bc083122f5 Translated using Weblate (Turkish)
Currently translated at 55.7% (5161 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/tr/
2024-03-07 23:56:03 +01:00
Laurens Holst 48fad4403f Translated using Weblate (Dutch)
Currently translated at 99.2% (9192 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-03-07 23:56:03 +01:00
Ranforingus 4720d90b72 Translated using Weblate (Dutch)
Currently translated at 99.2% (9192 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-03-07 23:56:03 +01:00
Wellington Terumi Uemura 8ea1f53133 Translated using Weblate (Portuguese (Brazil))
Currently translated at 98.2% (9092 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt_BR/
2024-03-07 23:56:03 +01:00
Nguyễn Ngọc Khánh e34d430e65 Translated using Weblate (Vietnamese)
Currently translated at 20.6% (1911 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/vi/
2024-03-07 23:56:03 +01:00
YÜKSEL AÇIKGÖZ f478710be8 Translated using Weblate (Turkish)
Currently translated at 55.6% (5156 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/tr/
2024-03-07 23:56:03 +01:00
Ranforingus e20988bafd Translated using Weblate (Dutch)
Currently translated at 99.2% (9187 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-03-07 23:56:03 +01:00
Laurens Holst 04559d7dd3 Translated using Weblate (Dutch)
Currently translated at 99.2% (9187 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-03-07 23:56:03 +01:00
CloverGit b7259ffd19 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.5% (9218 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-03-07 23:56:03 +01:00
ZbeeGin d28d3198b6 Translated using Weblate (Polish)
Currently translated at 100.0% (9258 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-03-07 23:56:03 +01:00
Ranforingus 1d5ed415ce Translated using Weblate (Dutch)
Currently translated at 98.4% (9115 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-03-07 23:56:03 +01:00
김랑기 793411aaeb Translated using Weblate (Korean)
Currently translated at 100.0% (9258 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-03-07 23:56:03 +01:00
aris-kimi d7f4607cc1 Translated using Weblate (Greek)
Currently translated at 99.2% (9188 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/el/
2024-03-07 23:56:03 +01:00
Jan Straka 814a03de56 Translated using Weblate (Czech)
Currently translated at 78.4% (7261 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/cs/
2024-03-07 23:56:02 +01:00
pedrolinharesmoreira bdccb5e6b6 Translated using Weblate (Portuguese (Brazil))
Currently translated at 97.8% (9059 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt_BR/
2024-03-07 23:56:02 +01:00
CloverGit f5d27906f3 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.5% (9218 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-03-07 23:56:02 +01:00
Andrej Valek 689669313a Translated using Weblate (Slovak)
Currently translated at 63.5% (5882 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sk/
2024-03-07 23:56:02 +01:00
aris-kimi 5c6c0aa313 Translated using Weblate (Greek)
Currently translated at 98.5% (9122 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/el/
2024-03-07 23:56:02 +01:00
CloverGit ea9d10b8bc Translated using Weblate (Chinese (Simplified))
Currently translated at 99.4% (9208 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-03-07 23:56:02 +01:00
Andrej Valek 72f7d4ad99 Translated using Weblate (Slovak)
Currently translated at 62.5% (5795 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sk/
2024-03-07 23:56:02 +01:00
ZbeeGin a8b5edf46c Translated using Weblate (Polish)
Currently translated at 99.7% (9239 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-03-07 23:56:02 +01:00
김랑기 2d59989871 Translated using Weblate (Korean)
Currently translated at 99.9% (9256 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-03-07 23:56:02 +01:00
Pferd O 429d4b9706 Translated using Weblate (German)
Currently translated at 100.0% (9258 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-03-07 23:56:02 +01:00
김랑기 e446fceb4d Translated using Weblate (Korean)
Currently translated at 97.5% (9028 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-03-07 23:56:02 +01:00
Henrik Kauhanen d9cf4f822d Translated using Weblate (Swedish)
Currently translated at 99.9% (9249 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-03-07 23:56:02 +01:00
Andrej Valek 04adc637e8 Translated using Weblate (Slovak)
Currently translated at 56.0% (5191 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sk/
2024-03-07 23:56:02 +01:00
김랑기 e130cd651d Translated using Weblate (Korean)
Currently translated at 96.7% (8959 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-03-07 23:56:02 +01:00
Henrik Kauhanen d0d74597c7 Translated using Weblate (Finnish)
Currently translated at 98.8% (9151 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/fi/
2024-03-07 23:56:02 +01:00
Andrej Valek 31b7c22a94 Translated using Weblate (Czech)
Currently translated at 78.1% (7234 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/cs/
2024-03-07 23:56:02 +01:00
Henrik Kauhanen f252078b4e Translated using Weblate (Swedish)
Currently translated at 98.9% (9163 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-03-07 23:56:02 +01:00
Andrej Valek d588947064 Translated using Weblate (Slovak)
Currently translated at 54.4% (5037 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sk/
2024-03-07 23:56:01 +01:00
dsa-t 9a1ecfb606 Translated using Weblate (Russian)
Currently translated at 98.2% (9098 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-03-07 23:56:01 +01:00
ZbeeGin 92cfce4045 Translated using Weblate (Polish)
Currently translated at 98.4% (9111 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-03-07 23:56:01 +01:00
김랑기 7efc9cbd1e Translated using Weblate (Korean)
Currently translated at 95.2% (8817 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-03-07 23:56:01 +01:00
Toni Laiho 5e50976bd4 Translated using Weblate (Finnish)
Currently translated at 98.8% (9151 of 9258 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/fi/
2024-03-07 23:56:01 +01:00
Jeff Young 06a8517818 Further improvements to cache locking.
In particular, don't hold cache lock while doing computations.
2024-03-07 13:20:20 +00:00
Armin Schoisswohl 4dcec60bf4 add include <mutex> to fix compilation under linux 2024-03-07 13:20:16 +00:00
Armin Schoisswohl bb9448edcb change m_CachesMutex to shared_mutex and do shared locking for read access in zone BBox calculations 2024-03-07 13:20:13 +00:00
Armin Schoisswohl 991ff71f33 fix deadlock in DRC "Checking keeopouts & disallow constraints" 2024-03-07 13:20:10 +00:00
Armin Schoisswohl 4590455ab2 protect cache lookups in pcbnew/zone by locking the mutex before calling find, fix #17237 2024-03-07 13:20:06 +00:00
Yon Uriarte 7520a8b316 Avoid updating max clearance while in dtor
Max clearance is updated by IncrementTimeStamp(), which is called when in the FOOTPRINT dtor and ZONE dtor.  This can cause issues when iterating over all footprints as the footprints may be delete-ed

Fixes https://gitlab.com/kicad/code/kicad/issues/17269
2024-03-06 18:48:49 +00:00
SubaruArai 8b3fc41ee5 Update QR footprint wizard
- Allows more than 62 bytes
- Adjusts size of code based on data or parameters
- Allows selection of ECC
2024-03-06 18:39:40 +00:00
Jeff Young 20efeef5ae Apply anti-walk algorithm only to textboxes.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16481
2024-03-06 13:51:27 +00:00
jean-pierre charras 9de9f921bc PROPERTIES_FRAME: fixes a focus issue (perhaps Windows specific). 2024-03-06 13:06:22 +01:00
jean-pierre charras 5ac8449e1f Minor compil and Coverity fixes 2024-03-06 13:05:21 +01:00
Jon Evans 9b54537e38 Add environment variable for configuring stock data home
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15687
2024-03-05 23:18:06 -05:00
Jon Evans 4ffbef5e42 Fix mismatched new[] vs free() in Altium parser 2024-03-05 23:09:38 -05:00
Jon Evans 4bc69183ab Set description on Altium imported symbols
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16943
2024-03-05 23:08:11 -05:00
Jon Evans 1600d8bead Prevent use-after-free of symbol screens
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17204
2024-03-05 22:53:51 -05:00
Jon Evans 0c2a084a47 Fix a few LIB_TREE search issues
Don't apply pruning to libraries that don't have
any children, since the point of the pruning is to
hide libraries that don't directly match a search
term if they don't have any children that match.

Fix searching for full LIB_IDs that got broken by
the implementation of "AND"

Fix searching for library names alone

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17205
2024-03-05 18:54:04 -05:00
Jon Evans c1ba07e6bc SelectAll should use the filter
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17157
2024-03-05 18:27:51 -05:00
Yon Uriarte 4e8e14ae3a Responsive: Avoid excessive repaints when toggling a netclass' rastnest visibility.
Toggling netclasses visibility toggles the member nets' visibility one by one. Defer redrawing until all toggling is done.

Fixes https://gitlab.com/kicad/code/kicad/issues/17115
2024-03-05 14:32:12 +00:00
Yon Uriarte 77576e1a80 Responsive: OPENGL_GAL::DrawArc reserve linequads to reduce drawing time 2024-03-05 14:15:33 +00:00
Jeff Young da634a618f Resolve double-indirection CURRENT_DATE in title blocks.
If ${COMMENT1} resolves to ${CURRENT_DATE} then we need to resolve again.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17256
2024-03-05 13:43:41 +00:00
Jon Evans 1988aac2b3 Update a few more list/tree views for macOS 2024-03-05 08:38:46 -05:00
Jon Evans 34a6e605de Fix macOS tree icons
Now that we have backported HiDPI support,
we need to actually use it because the old
imagelist functions are explicitly not going
to work on HiDPI systems anymore

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17265
2024-03-04 22:15:23 -05:00
Marek Roszko 7933dee274 Fix update notification to use majorminorpatch 2024-03-04 20:13:15 -05:00
Ethan Chien 8cda72f8d5 Fix defects reported by Coverity scan introduced in !1765
Corrects lifetime performance issue where extra copies of SCH_SHEET_PATH objects were being passed on the stack.
2024-03-04 19:45:05 +00:00
Yon Uriarte 62c961b8ba Performance Mitigate "Edit all symbol fields" dialog slow closing.
GetSymbols will return all symbols. Call it once and cache it.
2024-03-04 19:41:01 +00:00
Alex Shvartzkop a4da829ccc Fabmaster (CADENCE ASCII): import dimensions graphics.
See https://gitlab.com/kicad/code/kicad/-/issues/17239
2024-03-04 19:51:28 +03:00
Alex Shvartzkop cb4ace5561 Fabmaster (CADENCE ASCII) import: fix position and orientation of footprint graphics.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17239
2024-03-04 19:51:27 +03:00
Mike Williams 36331e259a VRML: add options to exclude DNP/unspecified types like STEP exporter 2024-03-04 10:10:34 -05:00
Jeff Young ff8ddae9bd Convert OP text variables pin names/numbers to SPICE vectors.
Also fixes a wrap-around bug in SPICE_VALUE::Normalize() where
it would lose the run of itself if the value was already
normalized to either the largest or smallest UNIT_PREFIX.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17228
2024-03-04 14:25:29 +00:00
Alex Shvartzkop 30573beb48 EasyEDA Std: fix importing footprints from footprint editor.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17264
2024-03-04 16:34:51 +03:00
Alex Shvartzkop c056ef407a EasyEDA Std: support multiple schematic sheets.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17219
2024-03-04 15:09:31 +03:00
Alex Shvartzkop cc181df916 EasyEDA Std: support Dot and Clock symbol pin styles. 2024-03-04 15:09:31 +03:00
Alex Shvartzkop 69b15e83c5 EasyEDA Std: hide invisible text in symbols. 2024-03-04 15:09:31 +03:00
Alex Shvartzkop 563278d0f6 EasyEDA Pro schematic: place items on root sheet when it's the only sheet. 2024-03-04 15:09:31 +03:00
Alex Shvartzkop 951c550c1e EasyEDA Std PCB: fix crash when Name/Prefix type text is not in a footprint. 2024-03-04 15:09:31 +03:00
Alex Shvartzkop f9ad0a434d Fix assert in BOARD_ADAPTER::createLayers. 2024-03-04 15:09:31 +03:00
Alex Shvartzkop fb089a182b 3D viewer: support transparent background in Raytracing mode. 2024-03-04 15:09:31 +03:00
jean-pierre charras 4a945172db Pcbnew: do not select a PCB_REFERENCE_IMAGE if the LAYER_DRAW_BITMAPS is not visible.
LAYER_DRAW_BITMAPS layer controls transparency and visibility of images on the board.
Fixes #16282
https://gitlab.com/kicad/code/kicad/-/issues/16282
2024-03-04 11:46:45 +01:00
Seth Hillbrand 02cdb0c6b9 Mask aperture pads can have multiple layers
But as long as they don't have copper, we should treat them as mask
apertures
2024-03-03 20:56:39 +00:00
Alex Shvartzkop fa6dc95553 Define __cplusplus according to C++ standard version on MSVC.
Otherwise, macros like KI_FALLTHROUGH are not defined properly.
2024-03-03 23:28:55 +03:00
Marek Roszko 16953edf6d Move APPEARANCE_CONTROLS_3D to the lang change event 2024-03-03 14:16:48 -05:00
Alex Shvartzkop 85b1978408 Use 64-bit type to represent microseconds.
int and long are 32-bit on Windows, causing overflows.
2024-03-03 21:40:26 +03:00
Alex Shvartzkop 337489c77d Do not reload window sizes when changing 3D viewer settings. 2024-03-03 21:21:51 +03:00
Alex Shvartzkop 1126227206 Add add_choices accepting std::vector to argparse for convenience. 2024-03-03 21:21:45 +03:00
Alex Shvartzkop 991b4299d6 Update argparse.
Otherwise .choices doesn't work properly.
See https://github.com/p-ranav/argparse/issues/307
2024-03-03 21:21:41 +03:00
Alex Shvartzkop 219d0c399d EasyEDA Pro import: make sure to use UTF-8 for project.json and device.json.
Also catch exceptions.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17248
2024-03-03 21:20:47 +03:00
Wayne Stambaugh 3eb5c52073 Improve zone manager dialog layout. 2024-03-03 12:09:01 -05:00
Jan Wichmann 5cdf9fe8a0 Don't show hidden directories and files in the project tree browser
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16207
2024-03-03 16:43:43 +00:00
Tomasz Wlostowski 9e0cd7e6ee qa/tools: add PCB_TEST_SELECTION_TOOL to CmakeLists 2024-03-03 17:42:21 +01:00
Tomasz Wlostowski 2280c696d0 wip on resizeable view & adding tabs to pns_debug_tool 2024-03-03 17:42:21 +01:00
Lucas Dumont 13c647ef6f Fix resources leak reported by coverity
For unique_ptr, release only set the ownership to null, but don't free the resource behind. On the other hand, reset do. 

Closes Coverity ID 483269
Closes Coverity ID 471974
Closes Coverity ID 471973
2024-03-03 16:23:49 +00:00
Petri Hodju c76c4ba304 schematic: do not skip item repaint if item's parent type != SCHEMATIC_T
the item repaint was skipped when unhighlightning symbols after dragging
and unselecting.

Fixes https://gitlab.com/kicad/code/kicad/issues/17193
Fixes https://gitlab.com/kicad/code/kicad/issues/17206
2024-03-03 16:21:29 +00:00
Roberto Fernandez Bautista 4851b0f1ac Database library cache: fix memory leak 2024-03-03 16:20:32 +00:00
JamesJ 66b378087a Remove close button from pcbnew search panel
For consistency with the other panels, removes the circular 'x' close
button from the search panel. Toggling visibility remains possible
through the View menu
2024-03-03 16:18:23 +00:00
Marek Roszko 0c8e08ed58 Move some language changes to a event on the frame 2024-03-03 11:02:26 -05:00
jean-pierre charras 0bde79bd6c PCB_PAINTER: do not draw PCB_SHAPEs on netname layer in FP editor.
Fixes #17250
https://gitlab.com/kicad/code/kicad/-/issues/17250
2024-03-03 17:00:17 +01:00
Wayne Stambaugh 66925ec2a2 Update net navigator when cross probing from board editor net highlight.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16838
2024-03-03 08:56:48 -05:00
Yon Uriarte fe1c73ed7c Performance: Cache BOARD::GetMaxClearanceValue 2024-03-03 13:54:46 +00:00
jean-pierre charras f6cf78fd7c plot_board_layers.cpp: when plotting pads, Save/restore corner radius ratio
instead of corner radius.
The corner radius comes from corner radius ratio, so saving/restoring the corner
radius can create rounding errors when trying to recalculate the ratio from the radius.
2024-03-03 11:56:41 +01:00
Jon Evans 612c7015a7 REMOVED: Clicking on pin selects symbol setting
This is now redundant with the selection filter

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17114
2024-03-02 22:18:51 -05:00
Jon Evans c51e9917ba Fix ordering of selection filter and net navigator 2024-03-02 20:21:16 -05:00
Marek Roszko 585cf841e5 Create a singular point for events like EDA_EVT_UNITS_CHANGED to be exported out of kicommon 2024-03-02 16:29:08 -05:00
Jon Evans ed18a9bcc2 Correctly handle footprint graphic knockouts for no-net case
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17223
2024-03-02 15:39:07 -05:00
Jon Evans 3a3ceb8ffc Allow specifying a minimum for a via_count constraint
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17234
2024-03-02 15:26:28 -05:00
Jon Evans b8f4bef3f8 Set schematic as default screenshot 2024-03-02 15:06:46 -05:00
Jon Evans fdc16fe60d Remove project manager from screenshots
It's not very important or visually appealing,
let's just use the editors as the way to represent
KiCad in software centers that show screenshots.
2024-03-02 15:05:38 -05:00
Marek Roszko 46f9a9a005 Make the update check cmake option default for all platforms 2024-03-02 14:15:52 -05:00
Jeff Young 9c371e2ef5 Don't draw the selection if it's not from the current screen.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17132
2024-03-02 18:57:39 +00:00
Roberto Fernandez Bautista a4929f9c27 Step exporter: handle circles correctly
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17137
2024-03-02 19:09:33 +01:00
Roberto Fernandez Bautista d458bcad16 kicad_cli fp ugrade: create directory with extension 2024-03-02 18:21:13 +01:00
jean-pierre charras d81605f4ea DIALOG_PAD_PROPERTIES: fix a incorrect test to show a warning. 2024-03-02 17:16:27 +01:00
Jeff Young 1082930c34 Don't steal command-keys from a wxGrid.
It's unlikely to win you friends.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17229
2024-03-02 15:28:22 +00:00
jean-pierre charras 428f2087bd Eeschema: fix crash when editing a old legacy schematic with missing libs,
and trying to edit a dummy symbol. (crash due to a null pointer due to missing lib)
Fixes #17232
https://gitlab.com/kicad/code/kicad/-/issues/17232
2024-03-02 15:23:23 +01:00
Jeff Young c97c69a2f0 First alt-pin menu item must be fetched from the LIB_PIN.
(The SCH_PIN will return any alt function already assigned.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17221
2024-03-02 12:17:22 +00:00
Roberto Fernandez Bautista 43e1b36d4d SHAPE_LINE_CHAIN: Fix indices rotation after clipper
Also fix IsArcStart and IsArcEnd functions to work with chains that only
have arcs.
2024-03-02 12:09:09 +00:00
Roberto Fernandez Bautista 0d340d0610 SHAPE_LINE_CHAIN: Move .h definitions to .cpp
No functional changes, just allow faster rebuilds
2024-03-02 12:09:09 +00:00
Roberto Fernandez Bautista 8c22f8df31 SHAPE_LINE_CHAIN: Fix/unify constructors 2024-03-02 12:09:09 +00:00
Roberto Fernandez Bautista 5920ee4598 SHAPE_LINE_CHAIN: Add test case of seg+large angle arc 2024-03-02 12:09:09 +00:00
Roberto Fernandez Bautista 4508512343 Sanitise filename before saving footprint library 2024-03-02 13:06:23 +01:00
Roberto Fernandez Bautista a4a99e3aff kicad_cli: Allow upgrade of legacy and non-kicad footprint libraries 2024-03-02 13:06:23 +01:00
Roberto Fernandez Bautista 70fe2a8f1e kicad_cli: Allow upgrade of legacy and non-kicad symbol libraries 2024-03-02 13:06:23 +01:00
Jeff Young bd1d449cd3 Check for NETINFO_ITEM before dereferencing it.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17230
2024-03-02 11:37:22 +00:00
jean-pierre charras 1ee49cca5e FOOTPRINT_CHOOSER_FRAME: rework on bottom panel to allow a long string in
the check box for filter by FP names to be displayed without overlapping other
widgets.
2024-03-02 11:24:54 +01:00
Jan Wichmann 1297ddc88d pcbnew: Added default master pad properties
CHANGED: Automatically selects the right pad type for the footprint type. Resets the pad properties if the master pad properties do not match the pad type.

https://gitlab.com/kicad/code/kicad/-/issues/16563
2024-03-02 00:13:39 +00:00
Yon Uriarte 464f185387 Performance
Cache VIEW_ITEM's bbox in VIEW_TREE for faster removals.

Fixes https://gitlab.com/kicad/code/kicad/issues/16841
2024-03-02 00:03:46 +00:00
Seth Hillbrand 0129191ec0 Limit where the intersection of two lines can be
This avoids generating lines where we are unable to select them because
they get too close to the border

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16959
2024-03-01 15:57:24 -08:00
Jeff Young 8dddd9cc2c Separate "use board stackup colors" into separate checkbox.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17085
2024-03-01 23:45:06 +00:00
Seth Hillbrand 14667e2033 Don't wait for unused events
We only need the UI update and mouse/keyboard while updating our DRC
window.  Waiting for other events gets into a race condition with the
schematic editor that can cause a hang

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17003
2024-03-01 15:21:42 -08:00
Seth Hillbrand e7d4127f99 Update contributors 2024-03-01 13:45:46 -08:00
Seth Hillbrand d3334ed9f0 Do not re-number aperture pads
Aperture pads do not have numbers, so reserving space for them will
cause the actual numbered pads to become out of order
2024-03-01 13:04:19 -08:00
jean-pierre charras 005affd473 FOOTPRINT_CHOOSER_FRAME: Fix a UI problem specific to Linux
On the bottom on the frame, some widgets were not correctly placed.
Fixes #17217
https://gitlab.com/kicad/code/kicad/-/issues/17217
2024-03-01 19:56:22 +01:00
Seth Hillbrand 0d03f2febc When failing to import, ensure extant screen
We need at least the root screen in order to handle any action in
Eeschema.  Because this is destroyed by starting to load the new
schematic, when failing, we need to reset to null.

This is not as good as resetting to the previous state but that will
take refactoring our file load routines in schematic editor

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16993
2024-03-01 18:48:14 +00:00
Ethan Chien 8d19d27483 Fix zone manager crash when no board is loaded
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17187
2024-03-01 15:58:01 +00:00
Mike Williams a902898522 schematic: legacy kicad schematic files don't have a default description field
Without this, we would parse a legacy schematic symbol field at the same
index as the new description field's index into description, instead of into
a user field.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/17202
2024-03-01 10:40:03 -05:00
Alex Shvartzkop defcb49ac8 Support Altium Schematic ASCII import 2024-02-29 20:49:20 +00:00
Alex Shvartzkop 656821b282 Improve 3D appearance manager preset compare. 2024-02-29 22:04:57 +03:00
arturo182 41147dc3b3 kicad_advanced: Make OCE tesselation deflection configurable
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17168
2024-02-29 19:04:39 +00:00
aris-kimi 24529e5242 ADDED: library tree context menu option to open sym/fp library files from the defined text editor.
Short description:

Works for Symbol and Footprint Editor behind an advanced config option.
For Symbol Editor it is shown for a single item selection (library or symbol).
For Footprint Editor it is shown for a footprint selection.
(fp editor allows a single tree item selection only).
Option stays hidden if current frame has been modified.

Also small fix(?) for similar action to the project manager.
(Call for the Execution has moved inside the file loop.)

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/15736
2024-02-29 19:01:59 +00:00
Johannes Maibaum 15e963bb32 Don't leak blank_cursor on warp (X11)
Also, for completeness, unref cur_cursor which we ref'd before hiding
it.
2024-02-29 18:55:28 +00:00
Jeff Young 48130c6982 The ruler tool is not part of InteractiveEdit.
(In particular, it should not return true to IsEditorTool().)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17164
2024-02-29 17:57:38 +00:00
Jeff Young c23550dc0b Unflip when going to viewport which isn't flipped.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/13773
2024-02-29 17:37:48 +00:00
jean-pierre charras 8ffd4f636a SHAPE_ARC::update_bbox(): use double instead of int to calculate radius, and
if the radius is too large (> INT_MAX/2), consider arc as a segment to avoid overflows.
Nor perfect, but it avoid some issues when calculating bbox.
2024-02-29 18:01:13 +01:00
Alex Shvartzkop cd27f801f6 Allow .kicad_sym in Import Symbol filters. 2024-02-29 17:36:32 +03:00
Alex Shvartzkop 80457d5871 Support transparent background in 3D viewer PNG/clipboard export.
Only really works with realtime renderer currently.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/12060
2024-02-29 17:11:53 +03:00
Marek Roszko 4602a27eb8 Revert "Update vcpkg baseline to newer"
This reverts commit d23a740ce3.
2024-02-28 21:58:15 -05:00
Alex Shvartzkop e71cbea7f8 Use a version string without the extra packaging info in drawing sheets.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17176


(cherry picked from commit c59fac4089)
2024-02-29 01:24:39 +00:00
Alex Shvartzkop 39a0a81832 EasyEDA Std import: support multiline text on PCB.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17171


(cherry picked from commit 0dab086f0c)
2024-02-29 00:54:46 +00:00
JamesJ 5f4c7a52e4 Add netclass color management / import functionality to PCB setup dialog
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16908

ADDED Netclass color column in board setup dialog
ADDED Import netlist colors from schematic button in board setup dialog
2024-02-28 23:13:21 +00:00
JamesJ b8748c4ef8 Add import netclass color menu items to PCB appearance widget
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16908

ADDED: Context menu item in PCB appearances widget to import netclass
color from schematic.
ADDED: Context menu item to reset PCB netclass color (replicating
same menu item from Nets inspector)
2024-02-28 23:13:15 +00:00
Jeff Young 141de7ac11 Even up spacing in dialog.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16391
2024-02-28 22:18:27 +00:00
Jeff Young 20ea299742 Cleanup. 2024-02-28 22:18:26 +00:00
Seth Hillbrand 6a8d2a7eb3 Store group id rather than group
We only need the group storage id for lookup.  Storing the KIID instead
of a copy of the group avoids unneeded overhead

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

(cherry picked from commit 7d1adff071)
2024-02-28 13:27:38 -08:00
Seth Hillbrand b8cd337826 Update translations 2024-02-28 09:55:29 -08:00
Andrej Valek 853cd260a5 Translated using Weblate (Slovak)
Currently translated at 55.3% (5077 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sk/
2024-02-28 18:54:11 +01:00
Andrej Valek 578b250e92 Translated using Weblate (Slovak)
Currently translated at 55.1% (5059 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sk/
2024-02-28 18:54:11 +01:00
Andrej Valek c72721cc4a Translated using Weblate (Czech)
Currently translated at 79.8% (7326 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/cs/
2024-02-28 18:54:11 +01:00
Mahsum Aslan a4a07d362b Translated using Weblate (Turkish)
Currently translated at 51.2% (4705 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/tr/
2024-02-28 18:54:11 +01:00
Andrej Valek 0cf34ab07b Translated using Weblate (Slovak)
Currently translated at 53.6% (4920 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sk/
2024-02-28 18:54:10 +01:00
Ivan Chuba a12a4d8351 Translated using Weblate (Ukrainian)
Currently translated at 88.1% (8088 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/uk/
2024-02-28 18:54:10 +01:00
CloverGit 24711972cb Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9143 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-02-28 18:54:10 +01:00
김랑기 2344fd11c5 Translated using Weblate (Korean)
Currently translated at 96.3% (8839 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-02-28 18:54:10 +01:00
CloverGit 21bb5f0b97 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9142 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-02-28 18:54:10 +01:00
Jan Straka ed33806409 Translated using Weblate (Czech)
Currently translated at 79.8% (7325 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/cs/
2024-02-28 18:54:10 +01:00
Ulices 5ae84f19a6 Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (9176 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-02-28 18:54:10 +01:00
Laurens Holst 910bbb6205 Translated using Weblate (Dutch)
Currently translated at 100.0% (9176 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-02-28 18:54:10 +01:00
Hanna Breisand 737679b8c1 Translated using Weblate (Swedish)
Currently translated at 100.0% (9176 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-02-28 18:54:10 +01:00
Laurens Holst 585cbd2742 Translated using Weblate (Dutch)
Currently translated at 100.0% (9176 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-02-28 18:54:10 +01:00
CloverGit ae68d3bd72 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9142 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-02-28 18:54:10 +01:00
김랑기 06ab280087 Translated using Weblate (Korean)
Currently translated at 96.3% (8839 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-02-28 18:54:10 +01:00
HADJAISSA c575ab68e9 Translated using Weblate (Arabic)
Currently translated at 1.2% (114 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ar/
2024-02-28 18:54:10 +01:00
HADJAISSA 5ff3c78ae2 Translated using Weblate (Arabic)
Currently translated at 1.2% (113 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ar/
2024-02-28 18:54:10 +01:00
pominglee 7ad877716d Translated using Weblate (Chinese (Traditional))
Currently translated at 93.8% (8611 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-02-28 18:54:10 +01:00
HADJAISSA cfaffc681f Translated using Weblate (Arabic)
Currently translated at 1.1% (105 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ar/
2024-02-28 18:54:10 +01:00
Stefan De Raedemaeker e37f0559a1 Translated using Weblate (Dutch)
Currently translated at 100.0% (9176 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-02-28 18:54:10 +01:00
pominglee 8245562181 Translated using Weblate (Chinese (Traditional))
Currently translated at 93.8% (8611 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-02-28 18:54:10 +01:00
김랑기 01e218a9ca Translated using Weblate (Korean)
Currently translated at 96.3% (8839 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-02-28 18:54:10 +01:00
Henrik Kauhanen d41bf6c540 Translated using Weblate (Finnish)
Currently translated at 99.7% (9152 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/fi/
2024-02-28 18:54:10 +01:00
gallegonovato 9d9eb82dd9 Translated using Weblate (Spanish)
Currently translated at 99.7% (9149 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es/
2024-02-28 18:54:09 +01:00
Jeff Young d08e0e9eaa _() -> _HKI() for group names. 2024-02-28 17:50:51 +00:00
Jeff Young 27031dd2c5 Check env vars when testing for unresolved variables.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17174
2024-02-28 17:16:58 +00:00
Wayne Stambaugh 141d03c266 Fix sheet pin align to grid issue.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16920
2024-02-28 11:57:49 -05:00
jean-pierre charras f086038684 GERBER_PLOTTER, round-rect aperture: ensure primitives have non null size.
for round-rect pads with a radius = 50% of the smaller dim, one of primitives
used to create the shape can have a 0 size.
Ensure a min size >= 10 nm (It should not create a actual change)
2024-02-28 17:31:10 +01:00
Alex Shvartzkop 0314540fdb Keep schematic text upright (especially when opening v6 schematic).
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17082


(cherry picked from commit bec068324e)
2024-02-28 15:25:39 +00:00
Wayne Stambaugh 9a9d6f2afb Sheet synchronization dialog layout improvements. 2024-02-28 08:08:03 -05:00
jean-pierre charras fe349be48b Eeschema, DIALOG_CHANGE_SYMBOLS: fix incorrect initial lib link name when
changing symbols: the "old" displayed link was in fact the new link because
the link was updated before the report is created.
Fixes #17162
https://gitlab.com/kicad/code/kicad/-/issues/17162
2024-02-28 11:21:17 +01:00
Alex Shvartzkop 97e3139505 Cairo GAL: fix endianness check.
(cherry picked from commit c4a7af8a47)
2024-02-28 01:11:27 +00:00
Alex Shvartzkop 3582edb185 Cairo GAL: reduce buffer allocation sizes.
cairo_format_stride_for_width() result is in bytes.
Also removes unneeded extra width.


(cherry picked from commit d359fb8ab9)
2024-02-28 00:53:56 +00:00
Alex Shvartzkop 4fed2e849f Cairo GAL: improve empty canvas performance (-80% CPU)
(cherry picked from commit 5618a6925d)
2024-02-28 00:53:51 +00:00
Jon Evans 9e7b4b7f89 Avoid nullptr dereference when loading group info
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17154
2024-02-27 19:43:21 -05:00
Jon Evans 299b548a41 Trivial change to avoid crash on tool re-entry
See https://gitlab.com/kicad/code/kicad/-/issues/17164
2024-02-27 19:31:09 -05:00
Jon Evans c3af434741 Force lib tree row height on GTK
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16403
2024-02-27 19:24:53 -05:00
Jon Evans 31fab831ad Remove unnecessary assert
GetModifyHash can be called before a row is loaded
2024-02-27 19:03:06 -05:00
Jon Evans 0df5cf7f75 Expose grid origin action in more places
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17007
2024-02-27 18:50:44 -05:00
Seth Hillbrand a8880fb63e Fix memory leak in net inspector dialog 2024-02-27 19:49:13 +00:00
Seth Hillbrand b2a25cb59e Correct usage signature for PNS_NODE::Add()
When moving a unique_ptr, you are actually passing the object, not a
reference to the object.  So we either std::move with the bare
unique_ptr parameter or we pass a reference.  But we should never pass
an rvalue reference for this or we'll make a copy without holding the
tracking (because it was moved)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16839
2024-02-27 19:49:13 +00:00
Jeff Young f754410c7e Add wxGrids to list of things that get arrow keys.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17144
2024-02-27 18:11:16 +00:00
Jeff Young 2dce618f9f Expose text size for SCH_FIELDs. 2024-02-27 17:48:09 +00:00
Jeff Young a5fda819eb Fix typo.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16991
2024-02-27 17:16:14 +00:00
Jeff Young e6a2f3b87a Eagle text anchor points and alignment aren't linked.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17135
2024-02-27 15:00:30 +00:00
Jeff Young 6e478f52f4 Fix wrong rotation centre.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17135
2024-02-27 15:00:27 +00:00
Marek Roszko 77a87101ef Bump vcpkg baseline 2024-02-27 07:48:21 -05:00
Marek Roszko d23a740ce3 Update vcpkg baseline to newer 2024-02-27 07:48:20 -05:00
jean-pierre charras ed4a4ec8ec Add option to Footprint Chooser to switch between the selected fp or its 3D view
Fixes #16173
https://gitlab.com/kicad/code/kicad/-/issues/16173
2024-02-27 10:17:00 +01:00
Jon Evans e9456201a7 Don't rely on dynamic_cast across DLLs
See https://gitlab.com/kicad/code/kicad/-/issues/16998
2024-02-26 22:10:28 -05:00
Jeff Young 539bd62a7b Cancel autocomplete when STC loses focus.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17124
2024-02-26 22:29:29 +00:00
Jeff Young 3079f7c742 Fix copy pasta. 2024-02-26 22:29:29 +00:00
Jeff Young d23ee7db3d Improve SNR. 2024-02-26 22:29:29 +00:00
Alex Shvartzkop b3df08c7b1 Initialize git_remote_callbacks structure.
(cherry picked from commit 35192f5bd4)
2024-02-26 21:36:08 +00:00
Alex Shvartzkop 755bfe3492 Initialize git_repository_init_options structure.
(cherry picked from commit d84a5e6f03)
2024-02-26 21:25:30 +00:00
Jeff Young ac0758eca0 Only change pin assignments from user interaction.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16349
2024-02-26 19:02:00 +00:00
Jeff Young d16b5fb810 Handle single-source DC analyses correctly.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17119
2024-02-26 19:02:00 +00:00
Wayne Stambaugh 23169ca1a7 Post merge request clean up. 2024-02-26 07:54:22 -05:00
Jeff Young 43c45f3ee8 Fix copy pasta. 2024-02-26 12:39:01 +00:00
Jon Evans 2f6c9d1f3a ADDED: Selection filter for schematic editor
Fixes https://gitlab.com/kicad/code/kicad/-/issues/14988
2024-02-25 17:44:10 -05:00
Jeff Young 11774cc9fe Fix some dialog layout issues.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16391
2024-02-25 22:10:51 +00:00
Jeff Young 9066e4b9d0 Reconcile solder_paste_ratio and solder_paste_margin_ratio. 2024-02-25 21:25:44 +00:00
Jeff Young 532645c9b0 Add tables to eeItem test. 2024-02-25 21:08:38 +00:00
Jon Evans 96ea1f6f89 Revert change to prettifier QA data
The file format should not be bumped in these test cases, they are not a test of the file format writer.
2024-02-25 12:50:44 -05:00
Jeff Young aef87b9796 Push thickness handling down into EDA_TEXT::SetBold().
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17077

Fixes https://gitlab.com/kicad/code/kicad/-/issues/14875
2024-02-25 17:28:52 +00:00
Jeff Young 6ec51f6a69 Revert IsAttached() fix as it doesn't handle hotkeys from the main menubar.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17101
2024-02-25 15:46:12 +00:00
Jeff Young be83f276c4 Add a couple more tooltips.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16391
2024-02-25 15:30:47 +00:00
jean-pierre charras 7789dfcfdc fix a compil issue (missing include and nullptr_t -> std::nullptr_t) 2024-02-25 16:26:05 +01:00
jean-pierre charras f7721f385a Symbol editor: add option (view menu+toolbar) to show/hide invisible pins and fields
Fixes #8020
https://gitlab.com/kicad/code/kicad/-/issues/8020
2024-02-25 16:09:50 +01:00
Ethan Chien be81bce637 Add Feature: synchronize hierarchical labels and sheet pins 2024-02-25 14:23:59 +00:00
Jon Evans d939004bbd Fix use-after-free in Altium importer
If the library already contains a symbol with the same name,
SaveSymbol will replace the existing symbol,
which will invalidate a cached pointer.
2024-02-25 08:47:07 -05:00
Jeff Young 3b560cef50 Fix some test errors. 2024-02-25 13:43:45 +00:00
Jeff Young 99948de45a Support pin count and footprint filters in symbol editor.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17105
2024-02-25 13:14:31 +00:00
Jeff Young dba2fdb6d3 Don't import invalid polygons.
If we *do* get a 2-point polygon in SVG, import it as a segment.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17091
2024-02-25 12:28:19 +00:00
Jeff Young 4056428a08 Sigh. We use different tokens for FP and pad solder paste margin ratios.
Seriously?  Afraid so: solder_paste_margin_ratio and solder_paste_ratio.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17108
2024-02-25 11:31:04 +00:00
Jeff Young 986dbfd235 Don't double-add pads to commit.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17087
2024-02-25 11:31:04 +00:00
Alex Shvartzkop 38953bf35f Fix update notice dialog padding.
(cherry picked from commit 1c639714f3)
2024-02-25 10:42:20 +00:00
Jeff Young caa83ec9bd Fix missing unit initialization.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17076
2024-02-24 22:34:41 +00:00
Jeff Young 0078ccea09 Fix typo.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17086
2024-02-24 20:06:22 +00:00
Jeff Young 6bbac26fd3 Fix merge conflict. 2024-02-24 20:05:51 +00:00
Jeff Young 9a02712c4f Update VDMOS models to ngspice-41 (and later) defaults.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17073
2024-02-24 20:05:51 +00:00
Jeff Young e27f859c11 Apply Pad Properties teardrop terminology to Via Properties.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17050
2024-02-24 20:05:51 +00:00
Jeff Young f77de66f4e Generalize ERCItem inspections.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/10539
2024-02-24 20:05:51 +00:00
Jeff Young e7abeb3c38 Cleanup. 2024-02-24 20:05:51 +00:00
Jeff Young fa0ead98d8 Split out table editing and table cell editing. 2024-02-24 20:05:51 +00:00
Jeff Young 3282e4bb66 Formatting. 2024-02-24 20:05:51 +00:00
Jeff Young c3496e4af6 Implement min skew checking. 2024-02-24 20:05:51 +00:00
Jeff Young 782af3a918 Clear text before replacing in ImportSettingsFrom. 2024-02-24 20:05:51 +00:00
Jeff Young e760317af6 ADDED: Implement footprint link checking in ERC.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16842
2024-02-24 20:05:51 +00:00
Jeff Young 6dc60598da Cleanup array dialog. 2024-02-24 20:05:51 +00:00
Jeff Young d7e4a8cebd ADDED: ERC/DRC exclusion comments.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16020
2024-02-24 20:05:51 +00:00
Jeff Young c8d2a9340b ADDED: ExpandAll/CollapseAll for hierarchy pane. 2024-02-24 20:05:51 +00:00
Jeff Young 833ec402a0 Generalize DRCItem inspections.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/10539
2024-02-24 20:05:51 +00:00
Jeff Young 6856e59374 ADDED: ExpandAll/CollapseAll for lib trees.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8243
2024-02-24 20:05:51 +00:00
Jeff Young 4eefbc7815 ADDED: textbox and tablecell margins.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/10672

Fixes https://gitlab.com/kicad/code/kicad/-/issues/6806
2024-02-24 20:05:51 +00:00
Jeff Young e445249720 ADDED: PCB tables. 2024-02-24 20:05:51 +00:00
Jeff Young 48f983826d Tooltip for "Prefer zone connections".
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16587
2024-02-24 20:05:51 +00:00
Jeff Young 67cd446e6d Add textbox text to description.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16573
2024-02-24 20:05:51 +00:00
Jeff Young ee3be0802c Move PCBNew overrides to nullable properties.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/5562
2024-02-24 20:05:51 +00:00
Jeff Young 7c77266f12 Move name ellipisizing from middle to end.
Our names tend to have more boiler-plate stuff at the
end (excluding things like "Position X" and "Position Y",
but they're usually pretty short when compared to
"Solderpaste Margin Ratio Override" or
"Exempt from Courtyard Requirement").
2024-02-24 20:05:50 +00:00
Jeff Young 4c5dbcd7f4 ADDED override locks checkbox for update from schematic.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16471
2024-02-24 20:05:50 +00:00
Jeff Young 91df43c97a ADDED: schematic tables.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6806
2024-02-24 20:05:50 +00:00
Jeff Young 4a9df1e18e ADDED: actions for left-, center-, and right-justifying text items.
(For both PCBNew and EESchema.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/12375
2024-02-24 20:05:50 +00:00
Jon Evans 536e7b252d Use deb_system Python sysconfig scheme on Debian
(cherry picked from commit 99f9941067)
2024-02-24 19:34:28 +00:00
Stefan ed6f900b70 adding No Layers to apprearance manger presets, fix #15625 2024-02-24 15:44:26 +00:00
Alex Shvartzkop 7cb754ddbb Remove 50ms delay seen in some actions, like duplicating schematic items.
(cherry picked from commit 339646a267)
2024-02-24 18:20:16 +03:00
Alex Shvartzkop 6347cb043e Add bottom panel to have correct background in fp/sym chooser frames.
See https://gitlab.com/kicad/code/kicad/-/issues/15810

(cherry picked from commit 97ff48b426)
2024-02-24 18:20:16 +03:00
Alex Shvartzkop 5578b2c954 Hide unused message panel in footprint/symbol chooser frames.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15810
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15889

(cherry picked from commit badc4e7411)
2024-02-24 18:20:16 +03:00
Ethan Chien d72491a4a5 ADDED: zone manager
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9636
2024-02-24 15:10:50 +00:00
Yon Uriarte b7b64d959f Performance UpdateDanglingState
Avoid O(N^2) by spatial sorting, don't run checks if the bounding boxes
don't overlap.
A second copy is ordered by type to help classes that only want to check
a few types having to walk the whole list.
2024-02-23 19:21:44 +00:00
Yon Uriarte f3c2083018 Performance SCH_EDIT_FRAME::SchematicCleanUp
Avoid O(N^2) comparisonis by spatial presorting. If bounding boxes don't
overlap there's no need to run expensive checks.
2024-02-23 19:21:44 +00:00
Alex Shvartzkop 5900f6baa4 Do not call MakeShapes in AddCopperPolygonShapes when polyset is empty.
Ease of debugging.

(cherry picked from commit 0184dfb625)
2024-02-23 22:15:17 +03:00
Andrej Krpic 006f93773c Fix collecting of signals for S-Parameters analysis 2024-02-23 18:34:21 +00:00
Alex Shvartzkop d04d74c511 Highlight nets and show length tuning status when adding tuning patterns.
Also fixes length preview when hovering over joints.
Also prevents asserts when hovering over arcs.
Also prevents adding a tuning pattern on other tuning pattern.

(cherry picked from commit 711c6141a8)
2024-02-23 20:29:18 +03:00
Alex Shvartzkop 8f428c04b0 Fix floating point rounding issues with scaled parameteres in settings.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17070

(cherry picked from commit fdf38256e8)
2024-02-23 20:29:18 +03:00
Alex Shvartzkop 3edfcb039c Fix net selector filter field focus on GTK.
(cherry picked from commit 7eeb1a19cf)
2024-02-23 20:29:18 +03:00
Alex Shvartzkop cb25c8620e Performance optimizations for database libraries.
(cherry picked from commit e68df8e1d1)
2024-02-23 20:29:18 +03:00
Alex Shvartzkop e5896374e3 Normalize SCH_PIN BBox to fix assert.
(cherry picked from commit 3e26e7b646)
2024-02-23 20:29:18 +03:00
Alex Shvartzkop 72354ac033 Eeschema: select graphical shapes based on effective shapes.
(cherry picked from commit a13e4e7d9f)
2024-02-23 20:29:18 +03:00
Alex Shvartzkop 41ffadc987 Use correct text color in LIB_TREE selected items on non-OSX.
(cherry picked from commit 6feafedfbe)
2024-02-23 20:29:18 +03:00
Jeff Young 12c21abdff Don't use EQUALITY flag when doing a symbol diff with library.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16944

(cherry picked from commit adae4de438)
2024-02-23 16:53:36 +01:00
Jeff Young c3bcbb6238 Update Edit Teardrops dialog to match other teardrop terminology.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17050

(cherry picked from commit c8b06d54cb)
2024-02-23 16:53:36 +01:00
Jeff Young 4a561b04bc Code cleanup and compiler warnings.
(cherry picked from commit 51848a0b43)
2024-02-23 16:53:35 +01:00
Jeff Young 98cd040952 Set up default netclass wire & bus widths.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17024

(cherry picked from commit 2d7f4faf72)
2024-02-23 16:53:35 +01:00
Jeff Young 2c49ba4252 Formatting.
(cherry picked from commit c75bb5d01a)
2024-02-23 16:53:35 +01:00
Jeff Young 19dedccd98 Improve layout of schematic colors preview.
Also, set pin name/number sizes.  Don't use defaults (which
will get plucked out of the Symbol Editor's settings).

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

(cherry picked from commit df8f043c16)
2024-02-23 16:53:35 +01:00
Jeff Young dfd97003ac Rule areas should be allowed on user layers.
Non-board tech layers too.  We don't know how people will
write their custom DRC rules.

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

(cherry picked from commit 01d668c09d)
2024-02-23 16:53:34 +01:00
Jeff Young 7b17646b71 Make sure nets get reassigned when name is changed.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17025

(cherry picked from commit f4a3613561)
2024-02-23 16:53:34 +01:00
Jeff Young 5c026db27a Report fp library loading errors with libName & fpName.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16975

(cherry picked from commit 12922d9434)
2024-02-23 16:53:34 +01:00
Jeff Young 17a37a55f0 When updating RefDes only update the prefix.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16991

(cherry picked from commit b6036f368e)
2024-02-23 16:53:34 +01:00
Jeff Young 2cd9fbab9d Check known m_Desc field before m_Fields.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16971

(cherry picked from commit 25291d6e3a)
2024-02-23 16:53:34 +01:00
Jeff Young ca3cd706e5 Show friendly name in toolbar button tooltips.
(Don't require the same text to be put into the tooltip.
It's error-prone and also disallows us from having a separate
tooltip for toolbar buttons.)

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

(cherry picked from commit f4a085575a)
2024-02-23 16:53:33 +01:00
Jeff Young 800bbd8841 Delete empty Netclass fields only if there are others.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16997

(cherry picked from commit a34b242f4e)
2024-02-23 16:53:33 +01:00
Jeff Young a156b49e2c Comments.
(cherry picked from commit 8a3cbce8f8)
2024-02-23 16:53:33 +01:00
Jeff Young 3938c35f17 Repair copy/paste of footprint fields.
Some of the code got lost in the move to PCB_FIELDs.

(cherry picked from commit a9c4a17c38)
2024-02-23 16:53:33 +01:00
Jeff Young e7f18e7eab Warp after context menu only if actively drawing.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/11080

(cherry picked from commit 1a7152d3eb)
2024-02-23 16:53:32 +01:00
Jeff Young e68cd04d48 Don't modify reference point if already moving.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16524

(cherry picked from commit 08da9a4494)
2024-02-23 16:53:32 +01:00
Jeff Young ef23d6776d Formatting.
(cherry picked from commit baaed8ed84)
2024-02-23 16:53:32 +01:00
Jeff Young 73b6b19a4e Keep Mac debugger from crashing with breakpoints in .h files.
(cherry picked from commit 7446fba70a)
2024-02-23 16:53:32 +01:00
Jeff Young 898f60ea2f Add help text for DRC assertion clauses.
(cherry picked from commit d36f189192)
2024-02-23 16:53:31 +01:00
Jeff Young 345645bd8c Help documentation for "assertion" constraints.
(cherry picked from commit 152c458b9c)
2024-02-23 16:53:31 +01:00
Jeff Young 900962f9f1 Update syntax help for memberOfFootprint.
(cherry picked from commit 7ae14f9630)
2024-02-23 16:53:31 +01:00
Jeff Young 57dcf285c5 Various string issues held over from 8.0 string freeze.
(cherry picked from commit a610542a19)
2024-02-23 16:53:31 +01:00
Jeff Young 23c2104ffa Improve alignment tooltips.
(cherry picked from commit 2ab492474e)
2024-02-23 16:53:31 +01:00
Jeff Young f161a1eaac Ignore duplicate/repeat when drawing an existing item.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16885

(cherry picked from commit 3caede3799)
2024-02-23 16:53:30 +01:00
Jeff Young 9ff66d0e71 Don't capture references to local variables for CallAfter.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16934

(cherry picked from commit 9d40374baf)
2024-02-23 16:53:30 +01:00
Jeff Young 276171b85e Handle holes in shapes when creating bounding hulls.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16347

(cherry picked from commit 0ead8a14a1)
2024-02-23 16:53:30 +01:00
Jeff Young 3c6d725f93 Kick PROPERTIES_PANEL a bit harder on language change.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16589

(cherry picked from commit e8b16fc64f)
2024-02-23 16:53:30 +01:00
Jeff Young ffa6adec96 Add a cache for TrueType contours and triangulation data.
Also returns minimumSegmentLength to its former value as
it doesn't appear to be required to fix
https://gitlab.com/kicad/code/kicad/-/issues/11463.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/16568
(cherry picked from commit 162e8962f7)
2024-02-23 16:53:29 +01:00
Roberto Fernandez Bautista d464d7995b Thread safety: replace ++m_modHash by IncrementModifyHash() 2024-02-23 14:59:10 +00:00
Roberto Fernandez Bautista 991ddfe6be Add cache to SCH_IO_DATABASE to improve loading performance
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17031
2024-02-23 14:59:10 +00:00
Roberto Fernandez Bautista 07ab18a1e6 Legacy libraries: De-duplicate field names on load
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16902
2024-02-23 14:57:57 +00:00
Roberto Fernandez Bautista 420413969e Altium: Don't create duplicate fields 2024-02-23 14:57:57 +00:00
Roberto Fernandez Bautista 1a6e6a06eb Altium: Don't load library parameters with an owner for now
In Altium many objects can have parameters (including pins). For now
we will drop library parameters belonging to any sub-components of a
symbol.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17048
2024-02-23 14:57:57 +00:00
Jon Evans 589e21cd3b Attempt to fix lib search again
The new bits will drop search results that
don't match all tokens in the search string,
which seems desirable.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16974
2024-02-23 14:36:32 +00:00
jean-pierre charras ef6a5b6252 teardrops: calculate better points on track for track arc.
Previously, a reference point to calculate teardrop length was calculated
using a track segment. It can create significant position error with track arcs.
Now a arc is used to find this reference point.
2024-02-23 11:36:14 +01:00
Wayne Stambaugh 2194f99341 Begin version 9 development. 2024-02-22 18:11:04 -05:00
Wayne Stambaugh 942661fc10 Tag release version 8.0.0. 2024-02-22 17:58:13 -05:00
Alex Shvartzkop 6ceea747b2 Swap to capitalized strings (translated). 2024-02-22 11:54:52 +03:00
Steven A. Falco b352b1484f Patch clipper for gcc on Fedora 2024-02-21 19:23:49 +00:00
Seth Hillbrand af02650689 Correct length tuning graphics
Resolved the differences between light and dark modes.
Unified the style with the teardrops panel.
Reduced size to 156px tall
Added HiDPI version
Aligned the start/end tracks vertically
Radius is measured to centerline for single
Radius is measured to midpoint between diff pairs
Spacing is measured to interior track centerline
Amplitude is measured to interior track centerline
2024-02-20 12:06:12 -08:00
Alex Shvartzkop dd6213051d Pick DP coupled segment closest to start item and baseline. 2024-02-20 22:06:00 +03:00
jean-pierre charras 01327b24b4 PANEL_SETUP_LAYERS: when removing a layer, do not delete items owned by footprints.
Items owned by footprints are allowed to be on non existing layers on board.
Moreover, items owned by footprint cannot be deleted by the board editor.
Fixes #17038
https://gitlab.com/kicad/code/kicad/-/issues/17038
2024-02-20 18:38:48 +01:00
Jeff Young 012b32e989 Don't leave dangling net pointers on PCB_SHAPEs.
Also makes it harder for this type of error to occur in
future.
2024-02-20 17:36:54 +00:00
Alex Shvartzkop 2e97d5d7cc Add missing check in tuning pattern outline. 2024-02-20 20:32:07 +03:00
jean-pierre charras 0afac71b27 3D viewer: fix the case of circles having a thickness > radius/2
Fixes #17035
https://gitlab.com/kicad/code/kicad/-/issues/17035
2024-02-20 09:20:33 +01:00
Alex Shvartzkop cbfd757d28 Reduce amplitude snap value of tuning patterns. 2024-02-20 03:20:08 +00:00
Alex Shvartzkop 10e6ca8740 Show tuning pattern baselines when not editing them. 2024-02-20 03:20:08 +00:00
Alex Shvartzkop 59a0635b09 Disable local ratsnest when moving generators (tuning patterns).
They're not moving like normal objects, leaving ghost ratsnest.
2024-02-20 03:20:08 +00:00
Alex Shvartzkop ed712faf41 Disallow duplicating tuning patterns alone. 2024-02-20 03:20:08 +00:00
Alex Shvartzkop 5e5effaf3a Ensure minimum outline size in tuning patterns.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16847
2024-02-20 03:20:08 +00:00
Tomasz Wlostowski 82312a0fae router: SplitAdjacentSegments() should check if the end segment we are about to split is in the same net that the head segment
Otherwise, the router might add bogus segments to the node. The root of the problem is somewhere in the logic that delivers aEndItem to ROUTER::Move() though - as the end item (in line placement mode at least) should always be an item within the same net as the head and not belonging to the current head...
2024-02-20 03:20:08 +00:00
Alex Shvartzkop 8d76e4e171 Allow DP meanders to (mostly) fit on adjacent segments. 2024-02-20 03:20:08 +00:00
Alex Shvartzkop 943c5fea59 Fix length calculations in DP meander placer. 2024-02-20 03:20:08 +00:00
Alex Shvartzkop 29188bdc53 Fix some edge-cases in DP tuning pattern outline. 2024-02-20 03:20:08 +00:00
Alex Shvartzkop 4227b1add9 Improve tuning pattern robustness. 2024-02-20 03:20:08 +00:00
Alex Shvartzkop 1a65c0091f Tweak default meander settings. 2024-02-20 03:20:08 +00:00
Alex Shvartzkop 35e73d7dee Restore green router collision color. 2024-02-20 03:20:08 +00:00
Alex Shvartzkop e9a881ed01 Reset placer when routing start fails to prevent crash on next usage.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17008
2024-02-20 03:20:08 +00:00
Seth Hillbrand 3ad0abae3f Move git fully behind advanced config 2024-02-19 17:19:44 -08:00
Seth Hillbrand 421b95d1fa Update teardrop graphics
Make sure that 'w' is on the minor axis of the pad attachment
Change track ends to "wave" denoting that they continue
Standardize size for each at 275x130px
Add 2x HiDPI version
2024-02-19 17:08:56 -08:00
Seth Hillbrand 89592d08bf Revise teardrop graphics sizes
Sizes were too large on many systems.  Revised panel uses 615px on Linux
instead of 742.  Adjusted line sizes to remain minimum visible width at
new height.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17018
2024-02-19 12:48:36 -08:00
Seth Hillbrand f8c9c1ee70 Update translations 2024-02-19 11:26:55 -08:00
Temuri Doghonadze 60dbfad31b Translated using Weblate (Georgian)
Currently translated at 10.9% (1003 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ka/
2024-02-19 20:25:31 +01:00
pondahai dd9b912d44 Translated using Weblate (Chinese (Traditional))
Currently translated at 93.8% (8610 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-02-19 20:25:31 +01:00
CloverGit 4a577ebbff Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9142 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-02-19 20:25:31 +01:00
dsa-t 2f274a35e8 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9142 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-02-19 20:25:31 +01:00
Laurens Holst d9f11e8053 Translated using Weblate (Dutch)
Currently translated at 100.0% (9176 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-02-19 20:25:31 +01:00
Henrik Kauhanen 7c4d45d8b0 Translated using Weblate (Finnish)
Currently translated at 99.7% (9152 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/fi/
2024-02-19 20:25:31 +01:00
Laurens Holst dbca19698f Translated using Weblate (Dutch)
Currently translated at 96.2% (8830 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-02-19 20:25:30 +01:00
SubaruArai a0d35451ee Translated using Weblate (Japanese)
Currently translated at 100.0% (9176 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-02-19 20:25:30 +01:00
Tokita, Hiroshi ae25a883e4 Translated using Weblate (Japanese)
Currently translated at 100.0% (9176 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-02-19 20:25:30 +01:00
Ulices 15e0351e60 Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (9176 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-02-19 20:25:30 +01:00
Wellington Terumi Uemura 9f204af0d3 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (9176 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt_BR/
2024-02-19 20:25:30 +01:00
Laurens Holst 5eda7e7a99 Translated using Weblate (Dutch)
Currently translated at 90.9% (8350 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-02-19 20:25:30 +01:00
Tokita, Hiroshi c6201a5939 Translated using Weblate (Japanese)
Currently translated at 99.9% (9173 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-02-19 20:25:30 +01:00
dsa-t 6e62835769 Translated using Weblate (Spanish (Mexico))
Currently translated at 98.9% (9082 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-02-19 20:25:30 +01:00
Ulices 210826534e Translated using Weblate (Spanish (Mexico))
Currently translated at 98.9% (9082 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-02-19 20:25:30 +01:00
Wellington Terumi Uemura d1de85a6e7 Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.8% (9163 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt_BR/
2024-02-19 20:25:30 +01:00
dsa-t cc2f2dfc4a Translated using Weblate (Thai)
Currently translated at 72.6% (6665 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/th/
2024-02-19 20:25:30 +01:00
dsa-t 08c4b9bb7d Translated using Weblate (Swedish)
Currently translated at 100.0% (9176 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-02-19 20:25:30 +01:00
dsa-t b7e5488907 Translated using Weblate (Russian)
Currently translated at 100.0% (9176 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-02-19 20:25:30 +01:00
dsa-t 2e076dacdd Translated using Weblate (Polish)
Currently translated at 100.0% (9176 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-02-19 20:25:30 +01:00
Laurens Holst 61a7a9b222 Translated using Weblate (Dutch)
Currently translated at 88.7% (8142 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-02-19 20:25:30 +01:00
dsa-t ef288b7151 Translated using Weblate (Japanese)
Currently translated at 99.9% (9167 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-02-19 20:25:30 +01:00
dsa-t c619beda1a Translated using Weblate (Finnish)
Currently translated at 99.6% (9148 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/fi/
2024-02-19 20:25:30 +01:00
dsa-t 44c0978d7f Translated using Weblate (Greek)
Currently translated at 99.9% (9167 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/el/
2024-02-19 20:25:29 +01:00
Ulices 993b9ba547 Translated using Weblate (Spanish (Mexico))
Currently translated at 97.5% (8955 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-02-19 20:25:29 +01:00
CloverGit 33504565a7 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9142 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-02-19 20:25:29 +01:00
Henrik Kauhanen 71776bf93d Translated using Weblate (Swedish)
Currently translated at 100.0% (9176 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-02-19 20:25:29 +01:00
dsa-t d195a9307b Translated using Weblate (Russian)
Currently translated at 100.0% (9176 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-02-19 20:25:29 +01:00
ZbeeGin 7fbaf67956 Translated using Weblate (Polish)
Currently translated at 100.0% (9176 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-02-19 20:25:29 +01:00
Laurens Holst 40d7c3157c Translated using Weblate (Dutch)
Currently translated at 85.1% (7816 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-02-19 20:25:29 +01:00
Henrik Kauhanen 4224651426 Translated using Weblate (Finnish)
Currently translated at 99.6% (9148 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/fi/
2024-02-19 20:25:29 +01:00
Pferd O bf2b9755de Translated using Weblate (German)
Currently translated at 100.0% (9176 of 9176 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-02-19 20:25:29 +01:00
jean-pierre charras 9622918c31 3D view export to PNG/JPEG: ensure highlighted item under cursor is exoperted
not highlighted.
Fixes #14289
https://gitlab.com/kicad/code/kicad/-/issues/14289
2024-02-19 16:28:38 +01:00
Mike Williams 60fe87a73c PCB: always parse ki_fp_filters as a property, not a field 2024-02-19 09:41:27 -05:00
Wayne Stambaugh 27911d9b5a Fix crash when changing sheet file name that contains a highlighted net.
Performing a full connectivity rebuild after changing a sheet file name
ensures that there are no stale connectivity object pointers laying around.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/17011
2024-02-17 08:50:22 -05:00
Marek Roszko 1717f39daf Use the semantic version for update checks 2024-02-16 21:42:43 -05:00
Jon Evans 835a82f0b9 Attempt to disable flaky tests for now
Issue8003 causes failures on some Ubuntu systems.
Disabling until we understand why.
2024-02-16 20:11:46 -05:00
Wayne Stambaugh afae6e2e9d Tag stable version 8.0.0 release candidate 3. 2024-02-16 08:59:24 -05:00
Ian McInerney d3befd8bb8 Remove dummy items from group before they are deleted
Board items should not be in a group when they are deleted, but these
are dummy ones, so their group membership doesn't matter.

Fixes KICAD-7P0
Fixes KICAD-6VX
Fixes KICAD-7KK
Fixes KICAD-6VH
2024-02-16 12:20:00 +00:00
Ian McInerney 206a631135 Ensure stream is valid before checking for Eagle XML tag
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16989
Fixes KICAD-7QQ
2024-02-16 11:14:10 +00:00
Marek Roszko f894a41dc2 LIB_SYMBOL::IsMulti() seems to be wrong, use the iterate conditional as the multi-unit check instead
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16932
2024-02-16 00:18:05 -05:00
Marek Roszko 9e08e6e4f1 USe setactive in cli in the LoadSchematic helper too 2024-02-16 00:08:10 -05:00
Marek Roszko b2c6e2de1f Fix file not found msg contents for step resolving 2024-02-15 23:10:57 -05:00
Marek Roszko 762c159b96 Fix KIPRJMOD by setting the project as active by modifying the board loading helper
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16973
2024-02-15 23:06:41 -05:00
Seth Hillbrand 08bdf1abae Avoid drawing netnames when not in board editor
Shouldn't be needed if we properly clear the netinfo but there's no
reason to keep netnames so better to avoid possible issues

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16981
2024-02-15 17:17:22 -08:00
Marek Roszko c48fc7ebff Fix crash due to PCB_SHAPEs not being returned by BOARD::AllConnectedItems
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16981
2024-02-15 19:58:21 -05:00
Mike Williams 407bb10197 Default grid: set PCB to 0.5mm, Page Layout editor to 100 mil 2024-02-15 13:31:41 -05:00
Seth Hillbrand 01544cb010 Revert disambiguation menu delay to 0.5s 2024-02-15 09:17:51 -08:00
Ian McInerney ba3e1528dd Update doxygen excludes to remove extraneous .md files 2024-02-15 17:15:24 +00:00
Jon Evans 4ec390838b Re-enable non-KiCad board import when non-standalone
Partial revert of ec2cd99405

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16978
2024-02-15 12:14:32 -05:00
Jon Evans 944a3d7962 Transparently support old versioned env vars for symbol and footprint libs 2024-02-15 15:31:08 +00:00
Jon Evans 7b0bb59b37 Remove hard-coded versioned env vars in most places 2024-02-15 15:31:08 +00:00
Marco Ciampa 0cd59dc278 Updated Italian translation (WIP) 2024-02-15 11:31:35 +01:00
Seth Hillbrand 2c9c741895 Update translations 2024-02-14 10:30:10 -08:00
Ulices 689a962270 Translated using Weblate (Spanish (Mexico))
Currently translated at 96.9% (8887 of 9167 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-02-14 19:23:42 +01:00
Hanna Breisand 8da8f22b16 Translated using Weblate (Swedish)
Currently translated at 100.0% (9167 of 9167 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-02-14 19:23:42 +01:00
Laurens Holst a7f6eb6281 Translated using Weblate (Dutch)
Currently translated at 80.2% (7358 of 9167 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-02-14 19:23:42 +01:00
김랑기 7691c2eaa1 Translated using Weblate (Korean)
Currently translated at 96.4% (8838 of 9167 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-02-14 19:23:42 +01:00
SubaruArai 7b5b3397b4 Translated using Weblate (Japanese)
Currently translated at 100.0% (9167 of 9167 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-02-14 19:23:42 +01:00
Ulices 3a25055e63 Translated using Weblate (Spanish (Mexico))
Currently translated at 95.6% (8767 of 9167 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-02-14 19:23:42 +01:00
Laurens Holst 6bfda0ec19 Translated using Weblate (Dutch)
Currently translated at 77.9% (7143 of 9167 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-02-14 19:23:42 +01:00
김랑기 3e4d869063 Translated using Weblate (Korean)
Currently translated at 96.4% (8838 of 9167 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-02-14 19:23:42 +01:00
Henrik Kauhanen 707de29b06 Translated using Weblate (Finnish)
Currently translated at 99.7% (9145 of 9167 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/fi/
2024-02-14 19:23:42 +01:00
Henrik Kauhanen 63bd901fb8 Translated using Weblate (German)
Currently translated at 100.0% (9167 of 9167 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-02-14 19:23:42 +01:00
Ulices 4db922846e Translated using Weblate (Spanish (Mexico))
Currently translated at 92.6% (8497 of 9167 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-02-14 19:23:42 +01:00
Laurens Holst eaaccbc004 Translated using Weblate (Dutch)
Currently translated at 73.5% (6739 of 9167 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-02-14 19:23:42 +01:00
Ulices d5d8c7a981 Translated using Weblate (Spanish (Mexico))
Currently translated at 91.6% (8405 of 9167 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-02-14 19:23:42 +01:00
CloverGit b453a0c6c4 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9133 of 9167 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-02-14 19:23:42 +01:00
Henrik Kauhanen 09e9590a7f Translated using Weblate (Swedish)
Currently translated at 100.0% (9167 of 9167 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-02-14 19:23:42 +01:00
dsa-t 72bff16365 Translated using Weblate (Russian)
Currently translated at 100.0% (9167 of 9167 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-02-14 19:23:42 +01:00
ZbeeGin 565ad44f42 Translated using Weblate (Polish)
Currently translated at 100.0% (9167 of 9167 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-02-14 19:23:41 +01:00
Laurens Holst adc27142df Translated using Weblate (Dutch)
Currently translated at 69.1% (6339 of 9167 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/nl/
2024-02-14 19:23:41 +01:00
Tokita, Hiroshi bc9f1e2736 Translated using Weblate (Japanese)
Currently translated at 99.9% (9163 of 9167 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-02-14 19:23:41 +01:00
aris-kimi 2dd00f9f65 Translated using Weblate (Greek)
Currently translated at 100.0% (9167 of 9167 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/el/
2024-02-14 19:23:41 +01:00
Pferd O e830127267 Translated using Weblate (German)
Currently translated at 100.0% (9167 of 9167 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-02-14 19:23:41 +01:00
Mike Williams 6c1273ca12 PCB Parsing: only parse old properties before PCB fields addition 2024-02-14 09:35:10 -05:00
Marco Ciampa e0bdd956ac Updated Italian translation (WIP) 2024-02-14 14:06:38 +01:00
jean-pierre charras 8e6fe0eaf0 Gerbview settings: store option "Page Limits" in gerbview config.
Previously this appearance option in Layer Manager was not stored.
2024-02-14 11:21:55 +01:00
jean-pierre charras 0d1945def7 Gerber drill file: do not flash oblong holes: they must be routed.
Fixes #16962
https://gitlab.com/kicad/code/kicad/-/issues/16962
2024-02-14 09:22:49 +01:00
Seth Hillbrand 0775d1364a Add bezier icon
Fixes https://gitlab.com/kicad/code/kicad/issues/16830
2024-02-14 02:01:01 +01:00
Marek Roszko f73d45b0cf Add $schema prop to drc/erc 2024-02-13 19:08:55 -05:00
Marek Roszko 7e89d9dee2 Add missing parity arg to drc cli 2024-02-13 18:46:17 -05:00
Marek Roszko 6eaef41e51 Remove the ignore severity from json schema 2024-02-13 18:44:01 -05:00
Marek Roszko 6db6e85161 Set an excluded property in json reports for erc/drc 2024-02-13 18:38:26 -05:00
Ian McInerney b86bf19328 Make shape properties layer selection obey cancel command
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16735
2024-02-13 20:31:05 +00:00
Jeff Young f75c72ebb5 Use background color for checkerboard when not UNSPECIFIED.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16961
2024-02-13 18:21:51 +00:00
Mike Williams c92728715d Schematic: import schematic sheet content, allow move and undo
Otherwise, the schematic is just plopped on the screen, causing
connections and junctions to be missing that should be present.
2024-02-13 12:18:46 -05:00
Mike Williams 3cd61a2d39 PCB: appending boards should not select existing generators 2024-02-13 10:15:30 -05:00
Jeff Young 12c8f5b14d Update compatibility mode and save flags in ngspice.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16955
2024-02-13 14:50:15 +00:00
Jeff Young 0cf433b28e CONVERT_TOOL::CreateLines() doesn't use SKIP_STRUCT flag.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16930
2024-02-12 23:59:33 +00:00
Marco Ciampa ce4ffd79d5 Updated Italian translation (WIP) 2024-02-13 00:51:04 +01:00
Seth Hillbrand 745c52c2b7 Update triangulation
Allow for overlapping points in input polygon.  This is relatively
common on a grid and should be used as potential split points to shave
additional ears

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16933
2024-02-12 15:20:08 -08:00
Roberto Fernandez Bautista ca148fb4d1 pns_debug_tool: Fix "save as" to save log file with new router state 2024-02-12 21:22:57 +01:00
Jeff Young 11f5908761 Revert the SHAPE_ARC::Collide() part.
The arc width appears to be handled elsewhere (at least in
the test suite).

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16951
2024-02-12 17:51:14 +00:00
Seth Hillbrand c6c1dbb844 Don't skip caching triangulation for failure
Failed triangulation can have multiple causes but we don't have another
approach, so skipping the cache just causes the same issue to be raised
again and again

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16946
2024-02-12 09:39:22 -08:00
Jeff Young d5ac0ff768 Fix SHAPE_ARC::BBox() and Collide() to honour m_width.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16951
2024-02-12 16:59:57 +00:00
jean-pierre charras 7e4e80a2e5 DRC library parity attribute tests: disable DNP and EXCLUDE from BOM.
They are related to a design, not to a footprint, and are tested in
schematic parity tests.
2024-02-12 10:55:56 +01:00
Marek Roszko 2afe4db945 Add some missing newlines in cli output without changing strings 2024-02-11 21:12:21 -05:00
Marek Roszko 6a37f99e94 Fix crash if we exit lib table setup
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16917
2024-02-11 21:05:23 -05:00
Marek Roszko d694bb5960 Use file name rather than path for erc/drc json and text reports 2024-02-11 20:16:22 -05:00
Jon Evans 622c2f1316 Make sure connectivity is updated in undo/redo
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16945
2024-02-11 20:01:15 -05:00
Marek Roszko 51312ed407 Fix erc/drc severity args
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16924
2024-02-11 19:14:26 -05:00
Ian McInerney b588001b95 Don't remember the menu in the tool dispatcher
Remembering the menu in the tool dispatcher can lead to stale pointers
if we never receive the required menu open or close events. Since wx
3.1.3, we get a valid menu object for all three events, so just forward
the event to that menu unconditionally if the menu is one of our
ACTION_MENUs.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16844
2024-02-11 23:24:18 +00:00
Marek Roszko e51ddc52b7 Fix crash writing json drc report 2024-02-11 17:36:56 -05:00
Alex b5982f7319 EasyEDA import: force close some line chains. 2024-02-11 23:52:56 +03:00
Alex bf9d085c15 EasyEDA schematic import: fix nan center for elliptic arcs. 2024-02-11 23:52:56 +03:00
jean-pierre charras fe1579ebbd BOARD_NETLIST_UPDATER: fix issue when reading net-lists having no FOOTPRINT_FIELD
they can be old net-lists or non Kicad net-lists.
Fixes #16931
https://gitlab.com/kicad/code/kicad/-/issues/16931
2024-02-11 21:03:00 +01:00
Jon Evans d6fb362bd1 Add attempted fix for Sonoma menu crashes
See https://gitlab.com/kicad/code/kicad/-/issues/16844#note_1767141019
2024-02-11 12:00:42 -05:00
Jon Evans 22669bcc4d Unselect saved image when reverting a commit if modified item is unselected
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16938
2024-02-11 11:55:02 -05:00
Jon Evans e9be95741b Deconflict hotkey for Route from Other End
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16415
2024-02-11 10:58:38 -05:00
Jon Evans ec2cd99405 Guard actions that change project against running in non-standalone mode
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16942
2024-02-11 09:36:17 -05:00
Jon Evans ef0204a44b Remove debug output 2024-02-11 09:04:10 -05:00
Roberto Fernandez Bautista 3a6d74a3b3 Allow user to select location to save router event log
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16904

Note: no new strings added
"Unable to write '%s'." is from pagelayout_editor/files.cpp(182)
2024-02-11 13:43:55 +01:00
Jon Evans 4eba781013 Try harder to remove stale pins from connectivity
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16846
2024-02-10 23:26:37 -05:00
Graham Keeth 24cf0c0c62 use new align-to-grid icon 2024-02-11 01:30:47 +00:00
Laurens Holst 755d4ada6d Correct Dutch language name to "Nederlands".
"Nederlandse" is the adjective form which is not appropriate here;
only used stand-alone when referring to nationality.
2024-02-10 23:30:50 +01:00
Wayne Stambaugh e302261067 More issue #16846 invalid pointer checks.
This has now pushed the issue down to a broken RTree issue.  Skipping the
asserts in debug builds will still crash but now it's pushed down to the
RTree.
2024-02-10 15:41:10 -05:00
Yon Uriarte 5819ad274f Print traces on windows to stderr 2024-02-10 19:05:21 +00:00
Jan Wichmann 5a5cb218ea Let pl_editor launch in run from builddir env on windows 2024-02-10 17:28:39 +00:00
Marek Roszko 17f5a69214 Fix some file icons being shifted 2024-02-10 12:12:16 -05:00
Marek Roszko cdaea24335 Update copyright year in manifest 2024-02-10 12:12:16 -05:00
Roberto Fernandez Bautista 8e0489bc24 pns_debug_tool: goto line windows + add visual studio (half working)
Visual studio (full) doesn't seem to like  going to the line, but at
least it opens the file in the same instance...
2024-02-10 16:28:01 +01:00
Wayne Stambaugh b409aee28a Force schematic symbol pin update when reverting a commit.
Apparently somewhere in our schematic code base we are allowing pins
to be added to symbols without correct setting the parent symbol object.
This causes all kinds of issues when the pin's parent object need to be
accessed.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16846
2024-02-10 08:49:41 -05:00
Wayne Stambaugh ae9175927b Fix broken schematic pin selection caused by commit 1ac5666164. 2024-02-10 08:26:52 -05:00
Alex Shvartzkop 2b295f85f5 Fix corner radius for 0 amplitude meanders. 2024-02-10 08:36:50 +03:00
Alex Shvartzkop ff17a22e31 Internationalize Image Properties dialogs. 2024-02-10 08:34:19 +03:00
Alex Shvartzkop c6b8b1cc9e Internationalize "Grid Settings" dialog. 2024-02-10 08:34:19 +03:00
Alex Shvartzkop 2fc68c2855 Internationalize PCB "Add Netclass Assignment" dialog. 2024-02-10 08:34:19 +03:00
Marek Roszko 6bc7bcffef Change app ico sets, add file icons to resources of each executable, rework resource ids 2024-02-09 23:53:10 -05:00
Seth Hillbrand 950ad39e39 Update metadata resource to v7 (just in time for v8) 2024-02-09 19:35:45 -08:00
Marek Roszko d3ca82b0b5 Fix another build error 2024-02-09 20:18:13 -05:00
Marek Roszko 24e58a31fa Add fileicon icos for windows 2024-02-09 19:57:43 -05:00
Seth Hillbrand 99dc68bbe0 Update translations 2024-02-09 15:57:22 -08:00
김랑기 8c3daea541 Translated using Weblate (Korean)
Currently translated at 96.6% (8845 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-02-10 00:56:37 +01:00
Tokita, Hiroshi bfd1e40449 Translated using Weblate (Japanese)
Currently translated at 100.0% (9147 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-02-10 00:56:37 +01:00
Ulices 56b2ee9495 Translated using Weblate (Spanish (Mexico))
Currently translated at 91.8% (8399 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-02-10 00:56:37 +01:00
김랑기 59b66eec97 Translated using Weblate (Korean)
Currently translated at 96.6% (8845 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-02-10 00:56:37 +01:00
CloverGit 1cf8d88032 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9113 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-02-10 00:56:37 +01:00
CloverGit 03a0ec9870 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9113 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-02-10 00:56:37 +01:00
CloverGit 0313e3cb04 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9113 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-02-10 00:56:37 +01:00
CloverGit bbd4f789ab Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9113 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-02-10 00:56:37 +01:00
김랑기 633e3deee7 Translated using Weblate (Korean)
Currently translated at 96.6% (8844 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-02-10 00:56:37 +01:00
김랑기 18f73e4afd Translated using Weblate (Korean)
Currently translated at 96.6% (8844 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-02-10 00:56:37 +01:00
김랑기 886aca8dd9 Translated using Weblate (Korean)
Currently translated at 96.6% (8844 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-02-10 00:56:37 +01:00
김랑기 c03e76bbc1 Translated using Weblate (Korean)
Currently translated at 96.6% (8844 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-02-10 00:56:37 +01:00
김랑기 e407e1ff71 Translated using Weblate (Korean)
Currently translated at 96.6% (8844 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-02-10 00:56:37 +01:00
Stanislav Kaliuk 7c3c2ab756 Translated using Weblate (Ukrainian)
Currently translated at 88.4% (8091 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/uk/
2024-02-10 00:56:37 +01:00
Hanna Breisand b2b106f12a Translated using Weblate (Swedish)
Currently translated at 100.0% (9147 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-02-10 00:56:37 +01:00
dsa-t f41f79a11f Translated using Weblate (Russian)
Currently translated at 100.0% (9147 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-02-10 00:56:37 +01:00
Tokita, Hiroshi 0bebfceab0 Translated using Weblate (Japanese)
Currently translated at 99.9% (9143 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-02-10 00:56:37 +01:00
CloverGit 32a8c13a90 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9113 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-02-10 00:56:37 +01:00
dsa-t 02e84168fa Translated using Weblate (Russian)
Currently translated at 100.0% (9147 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-02-10 00:56:37 +01:00
Toni Laiho 0f3d59b5e0 Translated using Weblate (Finnish)
Currently translated at 99.9% (9139 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/fi/
2024-02-10 00:56:36 +01:00
CloverGit 00fb8bf772 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9113 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-02-10 00:56:36 +01:00
CloverGit 1a7df18187 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9113 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-02-10 00:56:36 +01:00
CloverGit 56d06f145c Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9113 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-02-10 00:56:36 +01:00
CloverGit d882bb5639 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9113 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-02-10 00:56:36 +01:00
CloverGit a1ff58ec31 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9113 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-02-10 00:56:36 +01:00
CloverGit 7e8e82bc93 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9113 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-02-10 00:56:36 +01:00
Henrik Kauhanen 79c1f82637 Translated using Weblate (Swedish)
Currently translated at 100.0% (9147 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-02-10 00:56:36 +01:00
CloverGit ed169b9333 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9113 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-02-10 00:56:36 +01:00
dsa-t 5ef2a84e55 Translated using Weblate (Russian)
Currently translated at 100.0% (9147 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-02-10 00:56:36 +01:00
Ulices 671eaf255e Translated using Weblate (Spanish (Mexico))
Currently translated at 91.6% (8381 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-02-10 00:56:36 +01:00
Wellington Terumi Uemura ba01bd6ca4 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (9147 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt_BR/
2024-02-10 00:56:36 +01:00
Nguyễn Ngọc Khánh 7df1beed43 Translated using Weblate (Vietnamese)
Currently translated at 20.8% (1906 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/vi/
2024-02-10 00:56:36 +01:00
pondahai 26da7ed701 Translated using Weblate (Chinese (Traditional))
Currently translated at 92.3% (8448 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-02-10 00:56:36 +01:00
CloverGit 85953c05d8 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9113 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-02-10 00:56:36 +01:00
dsa-t 7a74c48f5e Translated using Weblate (Russian)
Currently translated at 99.9% (9139 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-02-10 00:56:35 +01:00
김랑기 5a6ac7288f Translated using Weblate (Korean)
Currently translated at 96.6% (8842 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-02-10 00:56:35 +01:00
Seth Hillbrand cd548e392a Add document type icons
Update Macos script to use doctype icons for icns builds

Fixes https://gitlab.com/kicad/code/kicad/-/issues/14754
2024-02-09 15:55:57 -08:00
Seth Hillbrand 96130725ad Update the teardrop graphics
Clean and standardize teardrop graphics

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16195
2024-02-09 15:55:57 -08:00
Seth Hillbrand f303996f9c Add new icons for tools
Align elements to grid
Cleanup graphics
Cleanup tracks/vias
Drag

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

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16205
2024-02-09 15:55:57 -08:00
Seth Hillbrand cabbab9a5f Move pcbnew drag to move specific icon 2024-02-09 15:55:57 -08:00
Alex Shvartzkop fcdd34f58b Reserve strings for Tune Length 2024-02-10 02:44:05 +03:00
Wayne Stambaugh 04ccf7e885 Explicitly create wxStrings for assignment to make MSVC builds happy. 2024-02-09 17:37:36 -05:00
Wayne Stambaugh 9e9ee96181 Explicitly create wxString for return value. 2024-02-09 17:11:49 -05:00
Alex Shvartzkop 2121227194 Fix nullptr group assert in tracks cleaner. 2024-02-10 00:44:05 +03:00
Alex Shvartzkop d4e89543de Length-tuning fixes/improvements:
- Ensure correct amplitude values in tuning patterns.
- Support lower amplitudes in DP length tuning
- Ensure correct minimal inner radius in DP length tuning
2024-02-10 00:44:05 +03:00
Lucas Dumont 2933cdf636 Extend NETLIST lifetime for JobExportDrc
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16925
2024-02-09 22:14:36 +01:00
Jeff Young dc48af3e5c EDA_ITEM::SwapData() must not swap the parent pointer.
The image's parent pointer might have gone out of scope.
2024-02-09 20:10:12 +00:00
jean-pierre charras 53896105c0 Demos update 2024-02-09 20:31:32 +01:00
Wayne Stambaugh 302038fbfd Do not assume schematic child objects have a valid parent. 2024-02-09 13:16:07 -05:00
Alex Shvartzkop 453e185613 Increase unconstrained tuning length to 1km. 2024-02-09 19:25:46 +03:00
Wayne Stambaugh 1ac5666164 Do not de-reference null library pin object pointers in SCH_PIN object. 2024-02-09 11:07:04 -05:00
Wayne Stambaugh 3d690da305 Fix schematic editor crash when dragging symbols.
Do not set view items or update connectivity until after commit changes
are updated in the SCH_SREEN.  Updating the screen can force LIB_SYMBOL
changes which and lead to stale LIB_PIN object pointers stored in SCH_PIN
objects.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16846
2024-02-09 10:38:29 -05:00
Jeff Young 63fc89cafd Import graphic items on copper layers.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16916
2024-02-09 13:56:01 +00:00
Jeff Young aef6b2a66e nullptr safety and a bit of wxT'ing. 2024-02-09 13:56:01 +00:00
Jon Evans 334b414826 Make sure SCH_PIN->LIB_PIN pointers get cleared 2024-02-09 08:09:19 -05:00
Jeff Young 33d93b79a3 Handle nested text variable references in title block.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16919
2024-02-09 12:37:13 +00:00
Jeff Young 91e15634fc Re-use ERC's delete-exclusions-query dialog for DRC.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16914
2024-02-09 11:21:06 +00:00
jean-pierre charras 4c61a79e47 3D viewer: show "not covered by solder mask" graphic items with the right color.
Previously, only pads and tracks were using the gold color when not covered by
the solder mask layer.
Fixes #16892
https://gitlab.com/kicad/code/kicad/-/issues/16892
2024-02-09 11:35:38 +01:00
Jeff Young 3c45145401 Set move flags at beginning of move.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16891
2024-02-09 10:19:39 +00:00
Jeff Young 4905c37712 Streamline explodePad undo.
Also fixes a bug where new shapes were added to the view
twice.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16888
2024-02-09 10:08:37 +00:00
Jon Evans 037f349585 Make expand connection work on generated tracks 2024-02-08 19:28:28 -05:00
Jeff Young 69a69cc624 Fix properties manager assert on zone layer property. 2024-02-09 00:15:45 +00:00
Jeff Young 53d048921a Fix merge conflicts. 2024-02-09 00:04:43 +00:00
Jon Evans e427099cff Disable flaky ngspice tests
These need to be re-done in a way that is more
tolerant of the inherent instability/noise in
the simulated circuits (or more ideally, changed
to test a particular thing that can be more
well-defined rather than just simulating a circuit
and seeing if the numbers come out a certain way)
2024-02-08 18:46:30 -05:00
Jon Evans febe759e49 Do not mess with KIPRJMOD when loading aux projects
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16810
2024-02-08 18:28:20 -05:00
Jon Evans ca6b40ef1c Make sure to create power axis when restoring state
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16912
2024-02-08 17:48:12 -05:00
Jon Evans 7929d7cda2 Fix build 2024-02-08 17:33:34 -05:00
Jeff Young ecbe1df7c1 Update target length/skew to std::optional.
Also fixes a bug in the router where the target length would
get trashed if set to maxLongLongInt.  (We'd add the default
tolerance to it sending it negative.)
2024-02-08 18:14:31 +00:00
Jeff Young e62b4f8ff4 Add nullable int and double to property system. 2024-02-08 18:14:31 +00:00
Alex Shvartzkop 876449b83d Set DP skew meanders max length to INT32_MAX instead of 100 mm.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16860
2024-02-08 19:34:17 +03:00
Alex Shvartzkop f4cf23e5cf Length tuning: fix status popup display when unconstrained. 2024-02-08 18:55:42 +03:00
Mike Williams b979f52364 FP Editor: show hidden texts when we should
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/16909
2024-02-08 10:28:23 -05:00
Jeff Young f8b8bc78bd Make m_originalColWidths impervious to init-order issues. 2024-02-08 15:09:07 +00:00
arturo182 abb1915114 Missed a checkbox for Select All in Import Settings 2024-02-08 15:01:23 +00:00
Alex Shvartzkop f1caa262a6 Separate actions for single track and differential pair length tuning. 2024-02-08 14:58:28 +00:00
Jeff Young b4c361f5cc Order matters in PEGTL grammar.
(Because a flagParam will also match "param", but not the
other way around.)

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16900
2024-02-08 14:54:54 +00:00
Mike Williams 1a91bb369c SCH<->PCB: fix pin cross probing
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/16910
2024-02-08 09:02:03 -05:00
Alex Shvartzkop 9b11dfd4d4 Fix 3D viewer getting stuck or rendering twice when dragging, at least on GTK. 2024-02-08 15:19:54 +03:00
Jon Evans 4622738c93 Deconflict instance-checker dir with 7.0 2024-02-07 18:35:10 -05:00
Jon Evans 9d57637a1a Fix clobbering of common settings
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16905
2024-02-07 18:31:43 -05:00
Seth Hillbrand 6e0d97df76 Do not cache invisible text objects
In some cases, extremely long, invisible texts can fill and crash opengl
buffers
2024-02-07 15:26:41 -08:00
Jeff Young 8efd90e6e8 Allow reading of 0 text sizes.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16902
2024-02-07 16:46:42 +00:00
Jeff Young bce372c8a3 Don't clear the undo/redo list when we're just trimming it.
We only allow a certain number of commands on the lists
and trim them when they overflow.  PCB_BASE_EDIT_FRAME and
PL_EDITOR_FRAME implemented this correctly; SCH_EDIT_FRAME
and SYMBOL_EDIT_FRAME did not.
2024-02-07 14:52:10 +00:00
Jeff Young 98bc03919d Nullptr safety. KICAD-7DM 2024-02-07 14:21:44 +00:00
Jeff Young 1e6986d2f5 Don't report starved thermals when connected only to isolated islands.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16866
2024-02-07 14:09:03 +00:00
Mike Williams 6125a183b4 Settings: make sure file history size is at least 1 2024-02-07 09:00:13 -05:00
Jon Evans 169114fd07 Fix path from ba25f881c6 2024-02-07 08:55:03 -05:00
Wayne Stambaugh 36653c2064 Add new librarians to about dialog. 2024-02-07 08:27:43 -05:00
Wayne Stambaugh 105bcd4082 Use reference to strings in for loop rather than copy.
Closes Coverity ID 486180.
2024-02-07 07:58:57 -05:00
jean-pierre charras d91e744f0f Gerbview: fix incorrect layer visibility settings after removing the current layer 2024-02-07 10:49:24 +01:00
Jon Evans ba25f881c6 Save common settings if we just created them
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16775
2024-02-06 21:33:44 -05:00
Jon Evans 181100fe44 Allow launching standalone procs from build dir 2024-02-06 21:33:44 -05:00
Jon Evans 874be359e0 Use a more specific path for instance checker 2024-02-06 21:33:44 -05:00
Alex e55a803572 Altium schematic import: do not overwrite sheet name. 2024-02-07 05:06:49 +03:00
Alex a32d5174a1 Altium schematic import: clear harness port list after parsing Additional.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16894
2024-02-07 05:06:49 +03:00
Jan Wichmann 2a0a41f149 Better template handling of include/excluded files
Reject all hidden folders and files when copying the template files, only allow '.gitignore', '.gitattributes' files as these are likely intended.  Do not copy `.lck`, `autosave` or `backup` files
2024-02-07 01:36:34 +00:00
Alex Shvartzkop 65c0a0a629 ConvertImageToPolygons: fix images with no alpha.
Fixes KICAD-714
2024-02-06 21:38:00 +03:00
Marek Roszko 08b02f2a1a Add junction color property 2024-02-05 19:12:09 -05:00
Marek Roszko 899ed59f7b Add missing pin numbers/names properties 2024-02-05 19:08:56 -05:00
Alex Shvartzkop 0778a7d46d Fix Windows build. 2024-02-06 00:38:21 +03:00
Alex Shvartzkop be1bbda8ce Altium: Fix bug when symbol uses multiple display modes on one sheet. 2024-02-05 22:36:30 +03:00
Alex Shvartzkop d8c72e845c Altium schematic: support component's DISPLAYMODE being a string. 2024-02-05 22:36:25 +03:00
Jeff Young e6929b2184 Tooltip for "Prefer zone connections".
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16587
2024-02-05 19:22:41 +00:00
Jeff Young d30361b425 Increase artificial via preference further.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16880
2024-02-05 19:20:33 +00:00
Jeff Young 82e353deb7 Notify property inspector after sheet properties dialog. 2024-02-05 19:10:22 +00:00
Jeff Young e98d1c968e Don't truncate mils properties in Property Inspector.
In fact, don't open-code yet another value-to-string impl.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16883
2024-02-05 16:53:00 +00:00
jean-pierre charras 608294171b Demos update 2024-02-05 16:53:10 +01:00
Jeff Young 1ff36f23b8 Clean up stale TODOs. 2024-02-05 15:49:57 +00:00
Jeff Young de634c6f3e Generate tofu if we fail to decompose outline font glyph. 2024-02-05 15:49:57 +00:00
Jeff Young a28f092b67 Don't cover STL types. 2024-02-05 15:49:57 +00:00
Jeff Young 7b3485fcb8 Remove atrophied terminology (logical -> nickname) 2024-02-05 15:49:57 +00:00
Jeff Young fef404352d Remove stale TODOs. 2024-02-05 15:49:57 +00:00
Jeff Young da46a96623 Update a few strings based on new string freeze policy. 2024-02-05 15:49:57 +00:00
Alex Shvartzkop 8cd0c5d574 Remove electric demo from install 2024-02-05 18:03:43 +03:00
Ian McInerney 7ea1568802 Fix selection tool behavior in footprint viewer
The footprint viewer isn't an edit frame, so we need to access the
settings through the base frame type instead. Also, double click makes
no sense in the footprint viewer, and just leads to weird results
sometimes.

Fixes Sentry KICAD-7A2
2024-02-05 14:50:17 +00:00
jean-pierre charras 3178bbfba0 Demo update. Remove also a useless demo 2024-02-05 15:05:25 +01:00
Mike Williams 6a9914bf89 Lib Symbol Properties: make exclude from BOM string same as symbol props
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/16876
2024-02-05 09:02:46 -05:00
Andre Iwers a0c39715df HTTP LIB - Fine tuning 2024-02-05 12:11:01 +00:00
Marek Roszko 835500bf1c Hide the color prop from pcb editor 2024-02-05 01:13:16 -05:00
Marek Roszko 740c7a73a2 Add missing color prop for text 2024-02-05 01:09:42 -05:00
Marek Roszko c39e7b2225 Tweaks in eeschema for hidpi 2024-02-05 01:03:52 -05:00
Marek Roszko 002fb80c2a Fix string in cli for 2581
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16881
2024-02-05 00:52:57 -05:00
Marek Roszko 3960c53225 A few tweaks for hidpi 2024-02-05 00:52:11 -05:00
Marek Roszko 11f76c129e Use FromDIP in WX_GRID padding 2024-02-04 20:09:30 -05:00
Jeff Young 0370db43ae A footprint does it's own child hit testing.
We only need to add it for groups.
2024-02-04 23:16:43 +00:00
Jeff Young 77c19fa99a Fill in missing zone properties.
Also fixes some bugs with hatch properties being available
on rule areas.
2024-02-04 23:01:31 +00:00
Marek Roszko b08f1ee6bf Fix SPLIT_BUTTON at hidpi 2024-02-04 16:04:45 -05:00
Marek Roszko 387084d8b3 Fix default size of library tables dialog on hidpi 2024-02-04 15:53:15 -05:00
Marek Roszko 19124b685e Make STD_BITMAP_BUTTON always draw a sane button size regardless of bitmap size
We need higher resolution images for use with STD_BITMAP_BUTTONs as 4K 250% scaling Windows which is "normal".
2024-02-04 15:48:57 -05:00
Marek Roszko 5d0abd3b01 Use CallAfter instead of Idle event hack for drc dialog item selection 2024-02-04 12:37:56 -05:00
Jeff Young cab351d249 Don't do a sided-test on a footprint which has no side.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15284
2024-02-04 15:18:23 +00:00
Marco Ciampa d9abaa23a4 Updated Italian translation (WIP) 2024-02-04 00:38:57 +01:00
Jeff Young 4e0b48a03a ZONE_SETTINGS init belongs in ZONE_SETTINGS's ctor.
(Not in ZONE's ctor.)
2024-02-03 20:17:31 +00:00
Jeff Young 5379a1d863 Nullptr protection. 2024-02-03 20:17:31 +00:00
Jeff Young 36275bcbc5 Make sure polygonization error is on correct side.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16869
2024-02-03 20:17:31 +00:00
Ian McInerney 2fc96c1d11 Ensure stackup material returned is correct after list item deletion 2024-02-03 18:06:40 +00:00
Alex 5c86247e21 Fix inactive cells being black in default settings panels on MSW. 2024-02-03 21:00:28 +03:00
Alex d4879e05ac Use semantic version in drawing sheets. 2024-02-03 20:24:26 +03:00
Ian McInerney dc6fb73b40 Fix mistake in 7edda82b where any key could delete the material 2024-02-03 17:01:57 +00:00
Ian McInerney 7edda82b2a Hook up delete key in stackup materials list box
Allow the delete key to delete a material from the stackup list, since
otherwise there is no way to delete materials from the list.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16854
2024-02-03 16:39:56 +00:00
Alex 4146a74bb7 Make more strings translatable in PCB grid settings. 2024-02-03 19:31:59 +03:00
jean-pierre charras 31394e95d7 Demo update 2024-02-03 17:09:48 +01:00
Wayne Stambaugh 92c2ddf77a Do not parent dialogs to non top level windows in panels or widgets. 2024-02-03 10:40:28 -05:00
Jeff Young 4d49762714 Remove Export Settings to Other Similar Zones.
The UI for it is clunky (Cancel afterwards doesn't do what
you think it might), the undo code is all hand-rolled (and
possibly buggy?), and we have the Property Inspector now
for this type of stuff.
2024-02-03 13:22:16 +00:00
Jeff Young 0890ac57dd Improve clarity of default zone settings. 2024-02-03 13:22:16 +00:00
Subaru Arai d9737a39bf remove qr footprint generator min pixel size
The minimum pixel width should be left for the user to decide, since it
depends on the manufacturer and layer.
2024-02-03 09:37:29 +00:00
Emile Cormier b58f318d3f Add volume to IBIS cache path
Fixes #16655
2024-02-03 09:35:36 +00:00
Roberto Fernandez Bautista 86368abba2 pns_debug_tool: Add Emacs as IDE option for Wayne, maybe? 2024-02-03 10:34:47 +01:00
Marek Roszko 239cbb4637 Use Fit to size the layer box after sitting min size
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16862
2024-02-02 23:43:05 -05:00
Mark Roszko b354b24182 Revert "Call Layout after calculating layer combobox size to ensure it takes effect"
This reverts commit cd8eb23c3e
2024-02-03 04:32:36 +00:00
Marek Roszko cd8eb23c3e Call Layout after calculating layer combobox size to ensure it takes effect
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16862
2024-02-02 23:11:48 -05:00
Marek Roszko ef06e95798 Add LTCG option for win32 2024-02-02 20:46:32 -05:00
Roberto Fernandez Bautista 366d8ecb73 pns_debug_tool: Add combobox to select IDE (CLion / VS Code) 2024-02-03 00:36:34 +01:00
Jeff Young 7cc663ad77 Schematic parity checking for CLI DRC. 2024-02-02 23:05:37 +00:00
Roberto Fernandez Bautista 3a95bd1bd1 pns_debug_tool: Add option to go to definition in vs code
Todo: add a way to add other IDEs and select them via GUI or
advanced config
2024-02-02 23:47:00 +01:00
Mark Roszko b89fefffb1 Update CMakeSettings.json.sample
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16867
2024-02-02 20:19:13 +00:00
Seth Hillbrand 42f17dfbef Add debugging info to vrml reader 2024-02-02 16:35:32 +01:00
Ian McInerney d44b04978a Allow enabling WXTRACE in release builds on all platforms
Setting the environment variable KICAD_ENABLE_WXTRACE now enables wx
trace logging on all platforms. MSW still requires its original
environment variables to be set to get the console displayed.
2024-02-02 14:21:33 +00:00
Wayne Stambaugh 2b1bf369f2 Do not parent file or directory dialogs to panels.
Parenting dialogs to child windows of top level windows is most likely
not defined behavior.  It's also likely that this behavior varies across
platforms so it' best not to risk doing it.  wxWidgets does not check if
the dialog parent is actually a top level window.  There may be other
places we are doing this with our message dialogs so we should do an
audit.
2024-02-02 09:20:36 -05:00
Roberto Fernandez Bautista 0113e7053d Remove unnecessary configurations from CMakeSettings.json.sample
These extra configurations are not really used by anyone and cause issues
for new comers as it defaults to launching msys2 build, which immediately
fails
2024-02-02 12:07:23 +00:00
Ian McInerney 85a2d6178a Add coroutine stack size to trace output 2024-02-02 11:00:08 +00:00
Alex Shvartzkop 4a1245e85a STEP: export copper plating for vias/pads (25 micrometers).
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16694
2024-02-02 00:29:03 +03:00
Jeff Young a485a4815c Clear text before replacing in ImportSettingsFrom.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16851
2024-02-01 17:37:27 +00:00
ecorm ff3288dab6 Add quotes around paths when KIBIS generates waveforms via ngspice
Fixes #16655
2024-02-01 17:20:16 +00:00
Seth Hillbrand 48b7e24695 Remove extraneous dupes 2024-02-01 14:56:47 +01:00
Ivan Chuba 85e055d959 Translated using Weblate (Ukrainian)
Currently translated at 86.9% (7952 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/uk/
2024-02-01 14:54:28 +01:00
Henrik Kauhanen 7ecb8b379c Translated using Weblate (Swedish)
Currently translated at 100.0% (9147 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-02-01 14:54:26 +01:00
ZbeeGin 7373352518 Translated using Weblate (Polish)
Currently translated at 100.0% (9147 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-02-01 14:54:24 +01:00
김랑기 5e891d88bf Translated using Weblate (Korean)
Currently translated at 96.5% (8828 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-02-01 14:54:22 +01:00
VicSanRoPe 977417d64a Translated using Weblate (Spanish)
Currently translated at 100.0% (9147 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es/
2024-02-01 14:54:21 +01:00
Pferd O 604df2f5a1 Translated using Weblate (German)
Currently translated at 100.0% (9147 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-02-01 14:54:20 +01:00
jean-pierre charras e8f51b61a6 EEschema, net navigator: save settings when closing Eeschema.
Fixes #16845
https://gitlab.com/kicad/code/kicad/-/issues/16845
2024-02-01 12:53:33 +01:00
Alex 285067dad1 Altium PCB: support polygon id 65534 for keepout tracks on board outline.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16849
2024-02-01 12:15:06 +03:00
Seth Hillbrand 27112d7988 Update Translations 2024-02-01 10:07:56 +01:00
Ma Han 7c6ee16b22 removed the dots for several strings in the settings dialog
https://gitlab.com/kicad/code/kicad/-/issues/16651
2024-02-01 08:52:57 +00:00
김랑기 32a7a86382 Translated using Weblate (Korean)
Currently translated at 96.2% (8802 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-02-01 09:44:12 +01:00
Ulices f498b6e1fa Translated using Weblate (Spanish (Mexico))
Currently translated at 91.6% (8379 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-02-01 09:44:12 +01:00
pondahai 72e2af6ea7 Translated using Weblate (Chinese (Traditional))
Currently translated at 91.9% (8410 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-02-01 09:44:12 +01:00
VicSanRoPe d6bcdfbdd3 Translated using Weblate (Spanish)
Currently translated at 100.0% (9147 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es/
2024-02-01 09:44:12 +01:00
Ulices 8ba516f101 Translated using Weblate (Spanish (Mexico))
Currently translated at 91.3% (8357 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-02-01 09:44:12 +01:00
VicSanRoPe 3b94bf1334 Translated using Weblate (Spanish)
Currently translated at 99.8% (9131 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es/
2024-02-01 09:44:12 +01:00
Ulices 1a18f8c638 Translated using Weblate (Spanish (Mexico))
Currently translated at 88.7% (8119 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-02-01 09:44:12 +01:00
Wellington Terumi Uemura 3ed70dceee Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (9147 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt_BR/
2024-02-01 09:44:12 +01:00
YÜKSEL AÇIKGÖZ 6ef1c0e4d0 Translated using Weblate (Turkish)
Currently translated at 51.4% (4710 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/tr/
2024-02-01 09:44:12 +01:00
VicSanRoPe a7db40fed2 Translated using Weblate (Spanish)
Currently translated at 99.8% (9130 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es/
2024-02-01 09:44:11 +01:00
aris-kimi 59667b9a0d Translated using Weblate (Greek)
Currently translated at 100.0% (9147 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/el/
2024-02-01 09:44:11 +01:00
Ivan Chuba 1391c8690a Translated using Weblate (Ukrainian)
Currently translated at 86.8% (7947 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/uk/
2024-02-01 09:44:11 +01:00
Henrik Kauhanen 7f72092ed0 Translated using Weblate (Swedish)
Currently translated at 100.0% (9147 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-02-01 09:44:11 +01:00
ssantos 91a75587ae Translated using Weblate (Portuguese)
Currently translated at 99.8% (9137 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt/
2024-02-01 09:44:11 +01:00
ZbeeGin 8ca57179d2 Translated using Weblate (Polish)
Currently translated at 100.0% (9147 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-02-01 09:44:11 +01:00
Pferd O 5757967fe2 Translated using Weblate (German)
Currently translated at 100.0% (9147 of 9147 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-02-01 09:44:11 +01:00
Seth Hillbrand 7664c345e2 Revert "Schematic performance enhancements"
This reverts commit df654ac12f.
2024-02-01 09:00:13 +01:00
Yon Uriarte df654ac12f Schematic performance enhancements 2024-02-01 02:28:09 +00:00
Alex Shvartzkop 1122d80388 Better support for arcs in tuning patterns. 2024-01-31 23:38:05 +03:00
Alex Shvartzkop 7d1888c756 Add parts of arcs to tuning patterns correctly. 2024-01-31 21:45:01 +03:00
Wayne Stambaugh 466c707e91 Check for invalid library pin object pointer. 2024-01-31 12:17:11 -05:00
Roberto Fernandez Bautista 7276486756 Finish fixing SHAPE_LINE_CHAIN::Slice 2024-01-31 19:17:46 +03:00
Roberto Fernandez Bautista 79aba50c23 Finish fixing SHAPE_LINE_CHAIN::NextShape and add tests 2024-01-31 19:17:46 +03:00
Roberto Fernandez Bautista e950475bc3 Add assert to SHAPE_LINE_CHAIN::Segment + Deduplicate code
CSegment should have the exact same logic as Segment

Also, moving definition to .cpp file to reduce need to rebuild every time
2024-01-31 19:17:46 +03:00
Roberto Fernandez Bautista 70f14277d1 PNS Debug/regresions: Fix some memory leaks 2024-01-31 19:17:46 +03:00
Roberto Fernandez Bautista effed5dfdf Fix SHAPE_LINE_CHAIN::Remove and SHAPE_LINE_CHAIN::RemoveShape 2024-01-31 19:17:46 +03:00
Roberto Fernandez Bautista 673e23c2e6 Fix and simplify SHAPE_LINE_CHAIN::Append( SHAPE_ARC ) + QA tests 2024-01-31 19:17:46 +03:00
Roberto Fernandez Bautista 34942290a2 SHAPE_LINE_CHAIN: Fix SetClosed() logic
SetClosed should unwrap the chain when there are coincident points at the
start.
2024-01-31 19:17:46 +03:00
Roberto Fernandez Bautista 7593863245 SHAPE_LINE_CHAIN: Fix and simplify ShapeCount()
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15754
2024-01-31 19:17:46 +03:00
Roberto Fernandez Bautista c72ba189cf Fix SHAPE_LINE_CHAIN::Slice following NextShape() changes 2024-01-31 19:17:46 +03:00
Roberto Fernandez Bautista e9fbb36538 SHAPE_LINE_CHAIN: Fix and simplify NextShape() + remove PrevShape()
NextShape() function was too complex (trying to go back and forwards).
We only used PrevShape() in one place, so removed that usage.

Added QA tests
2024-01-31 19:17:46 +03:00
Roberto Fernandez Bautista 079478f989 EDA_ANGLE: use constexpr for constant angles
Remove all statics in the class and instead use constexpr to
ensure correct ordering
2024-01-31 19:17:46 +03:00
Alex Shvartzkop 6ff3b0eb95 Altium schematic: remove border from symlib ellipse inner polygon. 2024-01-31 19:08:36 +03:00
Jeff Young 19560f0281 Fix pad edit mode undo.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16835
2024-01-31 15:45:58 +00:00
Jeff Young 5d4b4f39ec Allow PARAM_WXSTRING_MAP to behave as an array.
In particular, overwrite file contents with current
contents of map rather than merging.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16801
2024-01-31 14:58:48 +00:00
Jeff Young 445ed380b8 Formatting. 2024-01-31 14:58:48 +00:00
Alex Shvartzkop 7f29ac39d8 Altium schematic: case-insensitive search for subsheet files.
Also fixes open polylines on sheet.
Also prevents adding polylines with less than 2 points.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16829
2024-01-31 17:57:10 +03:00
Marek Roszko f795c1168d Fix typo 2024-01-31 06:55:32 -05:00
jean-pierre charras d012a5cbe0 Eeschema menubar, view menu: group Show/Hide Net Navigator with other Show/hide menus 2024-01-31 12:40:21 +01:00
Alex Shvartzkop 1e5b68cb87 Altium schematic: add polygon inside filled ellipse. 2024-01-31 09:34:36 +03:00
Alex 6225ef69b6 Altium schematic import: fix power ports.
Use different symbol names for different port port styles.
Also fixes curved shapes construction.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16823
2024-01-31 08:22:27 +03:00
Alex c64b74918f Altium schematic import: put Template items on sheet.
So we can use variable resolution.
2024-01-31 07:00:02 +03:00
Marek Roszko 4b12534dbd Fix property editor for graphic circles 2024-01-30 22:00:09 -05:00
Marek Roszko c8d24b7613 Add missing IPC2581 cli support 2024-01-30 20:42:34 -05:00
Mark Roszko f07a0e0021 Alter windows ci cache compression 2024-01-31 01:12:41 +00:00
Alex 9ed735ef5d Fixes for Altium/CircuitStudio schematic import
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16825
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16824

Adds support for Templates.
Also fixes symbols on schematic with multiple display modes.
2024-01-31 02:07:06 +03:00
Marco Ciampa 7f064b03a5 Updated Italian translation (WIP) 2024-01-30 17:32:05 +01:00
jean-pierre charras a3e6e08d92 Spice Simulator : update simulation after tuning cursor moved by arrow keys.
Fixes #16808
https://gitlab.com/kicad/code/kicad/-/issues/16808
2024-01-30 15:57:46 +01:00
Jeff Young 94cb00392e Repair connectivity if bus aliases changed.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16503
2024-01-30 14:16:55 +00:00
Jeff Young b77709bb4d Formatting. 2024-01-30 14:03:38 +00:00
Jeff Young 32d589a121 Don't rely on baselines for fetching DRC_RULE items.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16816
2024-01-30 13:19:04 +00:00
Jeff Young 5b5c6f0474 Init tuning pattern settings from BOARD_DESIGN_SETTINGS.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16819
2024-01-30 13:19:04 +00:00
Jeff Young 88cc029ad3 Enable meander radius for diff-pairs.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16820
2024-01-30 13:19:04 +00:00
Jeff Young dc21defab7 Small performance improvement for DRC. 2024-01-30 13:19:04 +00:00
Marek Roszko 18692ea8e7 This is totally a debug aid for the search pane listview and not a feature 2024-01-29 20:39:48 -05:00
Jeff Young d7471d8c2f Remove tooltip of questionable value. 2024-01-29 23:24:49 +00:00
Marco Ciampa 975c195d69 Updated Italian translation (WIP) 2024-01-30 00:05:22 +01:00
Alex Shvartzkop 3ed196859f STEP export: build a segment from last point for segment case as well.
https://gitlab.com/kicad/code/kicad/-/issues/16807
2024-01-29 19:59:41 +03:00
Seth Hillbrand b12d0dfd67 Fix pad offset removal vs hole offset
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16767
2024-01-29 08:22:23 -08:00
Jeff Young ee5e2e56c0 Naming conventions; no functional changes. 2024-01-29 16:00:06 +00:00
Marco Ciampa 258929090e Updated Italian translation (WIP) 2024-01-29 12:14:27 +01:00
Seth Hillbrand 7e194d5f69 Update translations 2024-01-28 19:54:30 -08:00
Ivan Chuba 579ca508a6 Translated using Weblate (Ukrainian)
Currently translated at 86.8% (7948 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/uk/
2024-01-29 04:52:01 +01:00
pondahai 38f61e509e Translated using Weblate (Chinese (Traditional))
Currently translated at 91.2% (8347 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-01-29 04:52:01 +01:00
ssantos 2d6fb1ea97 Translated using Weblate (Portuguese)
Currently translated at 99.9% (9147 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt/
2024-01-29 04:52:01 +01:00
VicSanRoPe ca42637520 Translated using Weblate (Spanish)
Currently translated at 93.0% (8515 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es/
2024-01-29 04:52:01 +01:00
Ivan Chuba 631ab29a5d Translated using Weblate (Ukrainian)
Currently translated at 86.6% (7927 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/uk/
2024-01-29 04:52:01 +01:00
Stanislav Kaliuk 568d4b21f9 Translated using Weblate (Ukrainian)
Currently translated at 86.6% (7927 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/uk/
2024-01-29 04:52:01 +01:00
pondahai 6ebe4d9a77 Translated using Weblate (Chinese (Traditional))
Currently translated at 91.1% (8334 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-01-29 04:52:01 +01:00
Oliver0804 3c94a75b59 Translated using Weblate (Chinese (Traditional))
Currently translated at 91.1% (8334 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-01-29 04:52:01 +01:00
CloverGit c61e030b03 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9114 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-01-29 04:52:01 +01:00
ZbeeGin a515b566d0 Translated using Weblate (Polish)
Currently translated at 100.0% (9148 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-01-29 04:52:01 +01:00
VicSanRoPe e87d196f27 Translated using Weblate (Spanish)
Currently translated at 86.4% (7907 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es/
2024-01-29 04:52:01 +01:00
pondahai 283ad5a56f Translated using Weblate (Chinese (Traditional))
Currently translated at 90.4% (8274 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-01-29 04:52:01 +01:00
Oliver0804 62ffce44e0 Translated using Weblate (Chinese (Traditional))
Currently translated at 90.4% (8274 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-01-29 04:52:00 +01:00
CloverGit 4bfce3f2a4 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9114 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-01-29 04:52:00 +01:00
Tokita, Hiroshi 3ac526434f Translated using Weblate (Japanese)
Currently translated at 100.0% (9148 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-01-29 04:52:00 +01:00
Oliver0804 3dd17db0db Translated using Weblate (Chinese (Traditional))
Currently translated at 87.3% (7990 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-01-29 04:52:00 +01:00
CloverGit 59c1ab17d7 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9114 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-01-29 04:52:00 +01:00
gallegonovato 9a208baf1a Translated using Weblate (Spanish)
Currently translated at 83.7% (7661 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es/
2024-01-29 04:52:00 +01:00
Ivan Chuba 3a01284785 Translated using Weblate (Ukrainian)
Currently translated at 83.4% (7632 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/uk/
2024-01-29 04:52:00 +01:00
Oliver0804 fbc991f0b5 Translated using Weblate (Chinese (Traditional))
Currently translated at 86.0% (7869 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-01-29 04:52:00 +01:00
CloverGit 6757f19dcf Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9114 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-01-29 04:52:00 +01:00
Ivan Chuba d7f1cc0455 Translated using Weblate (Ukrainian)
Currently translated at 83.3% (7627 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/uk/
2024-01-29 04:52:00 +01:00
pondahai a2e6262bd6 Translated using Weblate (Chinese (Traditional))
Currently translated at 85.9% (7859 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-01-29 04:52:00 +01:00
Oliver0804 f70ff76abb Translated using Weblate (Chinese (Traditional))
Currently translated at 85.9% (7859 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-01-29 04:52:00 +01:00
CloverGit cc464095cf Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9114 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-01-29 04:52:00 +01:00
gallegonovato fc69a237d0 Translated using Weblate (Spanish)
Currently translated at 83.7% (7660 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es/
2024-01-29 04:52:00 +01:00
pondahai 4340c0d3f0 Translated using Weblate (Chinese (Traditional))
Currently translated at 85.1% (7787 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-01-29 04:52:00 +01:00
Oliver0804 6908ce1cda Translated using Weblate (Chinese (Traditional))
Currently translated at 85.1% (7787 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-01-29 04:52:00 +01:00
CloverGit fd3920e114 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9114 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-01-29 04:52:00 +01:00
Oliver0804 98490e2714 Translated using Weblate (Chinese (Traditional))
Currently translated at 85.0% (7782 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-01-29 04:52:00 +01:00
CloverGit 0e14ee63ce Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9114 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-01-29 04:52:00 +01:00
Oliver0804 d369ee946f Translated using Weblate (Chinese (Traditional))
Currently translated at 84.8% (7766 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-01-29 04:52:00 +01:00
pondahai 0feffdec7e Translated using Weblate (Chinese (Traditional))
Currently translated at 84.8% (7766 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-01-29 04:52:00 +01:00
CloverGit 63b7b978dd Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (9113 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-01-29 04:52:00 +01:00
pondahai 26e56a03b5 Translated using Weblate (Chinese (Traditional))
Currently translated at 83.4% (7635 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-01-29 04:52:00 +01:00
Oliver0804 afb0e92fe9 Translated using Weblate (Chinese (Traditional))
Currently translated at 83.4% (7635 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-01-29 04:52:00 +01:00
William Lin 334302e3ca Translated using Weblate (Chinese (Traditional))
Currently translated at 82.6% (7559 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-01-29 04:51:59 +01:00
Oliver0804 7f3bdc3f1e Translated using Weblate (Chinese (Traditional))
Currently translated at 82.6% (7559 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-01-29 04:51:59 +01:00
撒景賢 50fb9a21db Translated using Weblate (Chinese (Traditional))
Currently translated at 82.6% (7559 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-01-29 04:51:59 +01:00
pondahai 2efa67db55 Translated using Weblate (Chinese (Traditional))
Currently translated at 82.6% (7559 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-01-29 04:51:59 +01:00
撒景賢 5b3e0aa1af Translated using Weblate (Chinese (Traditional))
Currently translated at 81.7% (7479 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-01-29 04:51:59 +01:00
pondahai 7d790c8e5a Translated using Weblate (Chinese (Traditional))
Currently translated at 81.7% (7479 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hant/
2024-01-29 04:51:59 +01:00
pedrolinharesmoreira 985348c423 Translated using Weblate (Korean)
Currently translated at 96.2% (8809 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-01-29 04:51:59 +01:00
VicSanRoPe 318e0febb4 Translated using Weblate (Spanish)
Currently translated at 83.7% (7657 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es/
2024-01-29 04:51:59 +01:00
Mark Hämmerling 87e99146fc Translated using Weblate (German)
Currently translated at 100.0% (9148 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-01-29 04:51:59 +01:00
Seth Hillbrand a85f6799eb Revert "Update translations"
This reverts commit dee4e00059.
2024-01-28 19:50:42 -08:00
Marco Ciampa 73b95ac69f Updated Italian translation (WIP) 2024-01-29 00:31:52 +01:00
Marek Roszko 5c94e0287b Clean up tuning pattern if undo triggered during drag
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16718
2024-01-28 16:10:59 -05:00
Marek Roszko 93b9fb9124 Fix crash switching footprints with 3dviewer OPENGL
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16802
2024-01-28 16:04:24 -05:00
Marek Roszko 22288adb7d Reduce KICAD_VERSION in drawing sheets to something simple 2024-01-28 15:48:02 -05:00
Jeff Young 00aed2aa3e Don't attempt to test for recursion on unsaved file.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16722
2024-01-28 15:37:08 +00:00
jean-pierre charras a5ffcd0a55 void Prettify(): fix a bug in a corner case, when a string ends with '\'
A '\' in a string is encoded as \\.
A '"' in a string is encoded as \".
But prettify parser did not take in account a string encoded as "xx\\" (for xx\)
So we need to verify if a sequence is xx\" or xx\\", i.e. if there are a odd
count of backslashes before a '"'
Fixes #16777
https://gitlab.com/kicad/code/kicad/-/issues/16777
2024-01-28 16:07:52 +01:00
Jeff Young 071d8af5d7 Don't include text in footprint preview widget's autozoom.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16794
2024-01-28 14:35:01 +00:00
Wayne Stambaugh 92308698ba Coding policy fixes. 2024-01-28 09:26:46 -05:00
jean-pierre charras 06d63a2aa0 pcb_io_kicad_sexpr_parser.cpp: init a default board stackup only if no stackup
is defined, and only after the enabled layers are defined.
Fixes #16754
https://gitlab.com/kicad/code/kicad/-/issues/16754
2024-01-28 14:23:50 +01:00
Jeff Young dd022c44e7 Add missing on-the-fly translation handlers. 2024-01-28 11:42:27 +00:00
Jeff Young 995c4af51d Deleted items must have their ownership changed to undo/redo. 2024-01-28 11:13:48 +00:00
Jeff Young 9eb8ec7733 Comments and menu-capitalisation. 2024-01-28 11:13:48 +00:00
Jeff Young 27534074ac Fix errors resulting from FP fields being moved from m_drawings to m_fields. 2024-01-28 11:13:48 +00:00
Marco Ciampa f6128cd01e Updated Italian traslation (WIP) 2024-01-28 10:35:01 +01:00
Jeff Young ade987c101 Fix logic errors in undo while drawing rectangles.
Draw 2 rectangles.  Start drawing a third, but don't
complete.  Hit Ctrl-Z instead.  Boom.
2024-01-27 21:18:50 +00:00
Ian McInerney 9f66ddb27f Attempt to use IsAttached to identify if a menu is a menubar menu
We can't get a mouse position for a menubar menu's event, because the
mouse may be outside our canvas. The original hack to detect menubar
menus may not work fully, and there have been some crashes appearing on
macOS where menubar menus attempted to get mouse position information.

Instead of the hack, try using IsAttached() to detect if the menu is
attached to a menubar, and then gate mouse position access accordingly.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16738
2024-01-27 20:59:14 +00:00
Jeff Young eacebe63f1 We do undo on individual footprint children now.
Adding a commit record for the parent means we replace the
parent first on undo and then if a child was added we can't
find it to remove it.
2024-01-27 20:26:50 +00:00
Jeff Young 07cefa7883 More active tracking of undo/redo items. 2024-01-27 20:02:40 +00:00
Jeff Young 54b46c6968 Remove ineffective attempt to fix mac menubar crash. 2024-01-27 17:45:49 +00:00
Jeff Young f7752ce0a1 Cleanup dead code. 2024-01-27 17:45:48 +00:00
Wayne Stambaugh 2f0337974b Update schematic connectivity when redoing changes.
Apparently we forgot to handle schematic connectivity changes when redoing
undone changes.  The same connectivity update logic that was added to the
commit object is now used in SCH_EDIT_FRAME::PutDataInPreviousState().

Please note the granularity of connectivity rebuilds on schematic object
property changes is at the object level which is overly aggressive.  This
means that connectivity rebuilds will happen when connectivity changes
that have nothing to do with and objects connectivity are changed.  Until
objects can handle their own connectivity state, this will have to suffice.
2024-01-27 12:02:53 -05:00
jean-pierre charras 715a5ee47b array_creator: fix issues (crashes) in board editor and footprint editor:
- In fp editor, fields cannot be duplicated: each is unique.
duplicating fields created a crash and issues in undo/redo command
- In board editor after creating an array with footprints.
- crash when closing pcbnew
- error when undoing the array creation
The crash was due to call run this_item->RunOnDescendants() on footprints: it
must be run only on a PCB_GROUP.
2024-01-27 17:02:20 +01:00
Jeff Young c0cbaa4c53 Finish earlier commit that somehow escaped my notice.
(String is existing.)
2024-01-27 15:55:05 +00:00
Jeff Young d2f0acae6b Expose pin visibility to property manager.
Also re-orders properties in Pin Properties dialog order.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16785
2024-01-27 15:52:59 +00:00
Jeff Young a8f6329590 Remove stale comment. 2024-01-27 15:52:59 +00:00
jean-pierre charras c980371892 Update French translation 2024-01-27 09:41:19 +01:00
jean-pierre charras ad1a929404 Do not mark an empty string as translatable
It is not accepted by our tools
2024-01-27 09:06:03 +01:00
Jeff Young ceb8beb8c4 Move ChangeBodyStyle and CleanupSheetPins to SCH_COMMIT.
Also fixes a bug where showDeMorganAlternate didn't work
at all.
2024-01-26 22:29:51 +00:00
Seth Hillbrand dee4e00059 Update translations 2024-01-26 13:06:14 -08:00
CloverGit a0513bc468 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (9148 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-01-26 22:05:46 +01:00
Henrik Kauhanen c279df642f Translated using Weblate (Swedish)
Currently translated at 99.9% (9147 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-01-26 22:05:46 +01:00
Ulices 258096bc16 Translated using Weblate (Spanish (Mexico))
Currently translated at 88.6% (8110 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-01-26 22:05:46 +01:00
Hubert Hu 4aa994d67e Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (9148 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-01-26 22:05:46 +01:00
Henrik Kauhanen 12fedddba2 Translated using Weblate (Swedish)
Currently translated at 100.0% (9148 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-01-26 22:05:46 +01:00
Henrik Kauhanen 32c343ad18 Translated using Weblate (Finnish)
Currently translated at 99.9% (9140 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/fi/
2024-01-26 22:05:46 +01:00
Ulices a92020424c Translated using Weblate (Spanish (Mexico))
Currently translated at 88.0% (8053 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-01-26 22:05:46 +01:00
Wellington Terumi Uemura a11e51fb6c Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (9148 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt_BR/
2024-01-26 22:05:46 +01:00
向阳阳 25e42f4de0 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (9148 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-01-26 22:05:46 +01:00
dsa-t d0d8eb97fa Translated using Weblate (Russian)
Currently translated at 100.0% (9148 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-01-26 22:05:46 +01:00
向阳阳 9b9876f4a0 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (9148 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-01-26 22:05:46 +01:00
Ulices 774ae500b0 Translated using Weblate (Spanish (Mexico))
Currently translated at 87.9% (8047 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-01-26 22:05:46 +01:00
Hubert Hu 1d56b7c153 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (9148 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-01-26 22:05:46 +01:00
Pferd O 5dd19a6895 Translated using Weblate (German)
Currently translated at 100.0% (9148 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-01-26 22:05:45 +01:00
Hubert Hu 77a1aac56e Translated using Weblate (Chinese (Simplified))
Currently translated at 94.4% (8642 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-01-26 22:05:45 +01:00
Tokita, Hiroshi 2c8f7ecf88 Translated using Weblate (Japanese)
Currently translated at 100.0% (9148 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-01-26 22:05:45 +01:00
Hubert Hu 68673f63e0 Translated using Weblate (Chinese (Simplified))
Currently translated at 94.0% (8604 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-01-26 22:05:45 +01:00
Hubert Hu 8222a102fe Translated using Weblate (Chinese (Simplified))
Currently translated at 94.0% (8603 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-01-26 22:05:45 +01:00
Hubert Hu c1cbc8f1d8 Translated using Weblate (Chinese (Simplified))
Currently translated at 94.0% (8602 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-01-26 22:05:45 +01:00
Henrik Kauhanen ee5822b4dc Translated using Weblate (Swedish)
Currently translated at 99.9% (9147 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-01-26 22:05:45 +01:00
ZbeeGin 18438bbc2e Translated using Weblate (Polish)
Currently translated at 100.0% (9148 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-01-26 22:05:45 +01:00
김랑기 2d9af7ed0a Translated using Weblate (Korean)
Currently translated at 96.1% (8797 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-01-26 22:05:45 +01:00
aris-kimi 71ce2f7f67 Translated using Weblate (Greek)
Currently translated at 100.0% (9148 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/el/
2024-01-26 22:05:45 +01:00
Pferd O a3fa965225 Translated using Weblate (German)
Currently translated at 99.9% (9144 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-01-26 22:05:45 +01:00
Henrik Kauhanen d0a37964c1 Translated using Weblate (German)
Currently translated at 99.9% (9144 of 9148 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-01-26 22:05:45 +01:00
Ian McInerney 6ed71e1a1a Don't translate the label for traditional Chinese, it must be in its own language 2024-01-26 20:39:29 +00:00
Seth Hillbrand 96297b50a1 Remove padstack offset value
We encode the pad locations for the package in the pin, so we don't need
an additional offset from the pin location

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16767
2024-01-26 10:53:36 -08:00
Jeff Young 3fde08f711 Attempt to escape from MacOS menubar crashbug.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16738
2024-01-26 18:33:25 +00:00
jean-pierre charras 89f8c5d918 PCB_SELECTION_TOOL::selectPoint() Remove items disabled by the selection filter
before using any other filter. This avoid to select an item from the candidate
list that cannot be selected and eliminate another candidate.
Fixes #16755
https://gitlab.com/kicad/code/kicad/-/issues/16755
2024-01-26 19:13:50 +01:00
Jeff Young fb8f05fb34 Correctly report body style in symbol checker.
Also fixes a bug where off-grid pin locations were truncated.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16770
2024-01-26 18:11:23 +00:00
Jeff Young cc9f8f5b83 Fix a straggler from rename. 2024-01-26 18:01:22 +00:00
Seth Hillbrand 3cf8b718f3 Don't truncate if not needed 2024-01-26 09:11:11 -08:00
Seth Hillbrand bcad0761a4 Fix compile error 2024-01-26 08:35:11 -08:00
Jeff Young ae735d3eb4 Renaming: replace convert with body-style.
No functional changes.
2024-01-26 16:21:03 +00:00
Jeff Young c5bd62434b Zero out number of non-numberable pads in ImportSettingsFrom().
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16769
2024-01-26 14:05:04 +00:00
Jeff Young 053a0aade7 Formatting & commenting. 2024-01-26 14:05:04 +00:00
Wayne Stambaugh 8975f26c26 Coding policy fixes. 2024-01-26 08:59:14 -05:00
Jon Evans c39bec4c08 SCH_FIELD.Visible can be unmasked
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16760
2024-01-26 08:54:04 -05:00
Jeff Young cc058a7927 Exit pad edit mode before closing footprint editor.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16766
2024-01-26 13:49:17 +00:00
Jeff Young f4e123f57e !m_isBoardEditor != m_isFootprintEditor.
(There's also python, cli, etc.)
2024-01-26 12:47:01 +00:00
Jeff Young e99f758447 Revert b8a2b3b2bf. 2024-01-26 12:33:21 +00:00
Marek Roszko 991703ceee Add missing default init 2024-01-26 07:23:28 -05:00
jean-pierre charras 12357cfba6 symbol checker: do not forget to display error messages about pins not on grid.
Fixes #16759
https://gitlab.com/kicad/code/kicad/-/issues/16759
2024-01-26 10:19:58 +01:00
jean-pierre charras 74e02d7701 Eeschema, open CvPcb: ensure the netlist sent to CvPcb is up to date.
Fixes #16762
https://gitlab.com/kicad/code/kicad/-/issues/16762
2024-01-26 09:24:38 +01:00
Marek Roszko 7f5433f0f2 Realize why we sch parity wasnt included in cli drc
Need to add schematic loading...to the pcbnew jobs handler
2024-01-25 22:19:52 -05:00
Marek Roszko 465ccaef90 Add missing schematic parity drc test to cli 2024-01-25 22:14:49 -05:00
Marek Roszko a282762686 Fix pcb drc in cli due to awkward !m_isBoardEditor logic with more awkward logic
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16744
2024-01-25 22:09:29 -05:00
Seth Hillbrand ec82a1b4e2 Fix duplicate pin check string
MessageTextFromValue returns text not floating point

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16758
2024-01-25 18:02:05 -08:00
Marek Roszko c2989132ac DeselectRow as we delete rows to avoid asserts 2024-01-25 20:37:00 -05:00
Marek Roszko 5d44e090dc Fix shadowed var 2024-01-25 19:55:02 -05:00
Seth Hillbrand bba0a8d038 Protect schematic undo list actions
The undo/redo lists can have non-SCH_ITEM elements such as worksheet
items.  When re-doing connectivity, we only need the schematic items, so
we pass on these

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16752
2024-01-25 16:47:14 -08:00
Jeff Young b8a2b3b2bf Take a stab at fixing #16752. 2024-01-25 23:46:35 +00:00
Wayne Stambaugh 4d6bbc8caa Fix symbol annotation when pasting nested hierarchical sheets. 2024-01-25 16:39:21 -05:00
Seth Hillbrand 9e9dfb38d1 IPC2581: Correct flipped pad handling
Board footprints have pads already flipped, so we don't need to adjust
layers when outputting

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16659
2024-01-25 13:06:59 -08:00
Alex Shvartzkop 6a69396070 Allow column auto-sizing in RC trees.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16727
2024-01-25 20:51:54 +03:00
jean-pierre charras 2e760483b0 HIERARCHY_PANE: Update tree labels when editing a sheet name or number
Fixes #16650
https://gitlab.com/kicad/code/kicad/-/issues/16650
2024-01-25 18:22:41 +01:00
Jeff Young a2b204572d Don't assert when a sim returns no results.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16749
2024-01-25 15:40:12 +00:00
Jeff Young 70bca8bc4e Provide popups for inductor references.
Also fixes a long-standing bug deleting the last field of
a symbol in the Symbol Editor.
2024-01-25 15:30:25 +00:00
Jeff Young 340d1b7fad Guard against nullptr access. 2024-01-25 15:30:25 +00:00
Jeff Young b3f94ad46a Cleanup before exit.
Possibly KICAD-5TE.
2024-01-25 15:30:25 +00:00
Jeff Young d3bc59e0e7 SelectBlock() will assert for invalid selection modes.
KICAD-63D.
2024-01-25 15:30:25 +00:00
Jon Evans a377fa4201 Add some missing deep comparisions for BOARD_STACKUP 2024-01-25 09:08:27 -05:00
Marek Roszko fec57459f3 Use correct arg types in altium arc import error message
Fixes KICAD-6Q1
2024-01-25 07:50:13 -05:00
Jon Evans bfbf000f60 Add some safety around event-driven menubar recreation
Maybe addresses sentry KICAD-PC
2024-01-24 23:30:34 -05:00
Jon Evans 3ef16221fe Make sure default board thickness exists
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16733
2024-01-24 23:09:56 -05:00
Marek Roszko c816280c6d Move the current selection before deleting the row to avoid asserts
Fixes sentry KICAD-63D
2024-01-24 22:57:36 -05:00
Marek Roszko 5321c1c481 Create the import directory if it doesn't exist
Fixes sentry KICAD-6BC
2024-01-24 20:35:03 -05:00
Marek Roszko b8bbbcf410 Fix assert in SYMBOL_VIEWER_FRAME::onSelectNextSymbol due to bad current selection check
Fixes sentry KICAD-6KE
2024-01-24 20:15:23 -05:00
Marek Roszko 8f57a9bcf0 Fix spacemouse version check by pawning it off on wxWidgets
Version is a value not a key name. Also the registry returns things in wchars soooo lets just pawn off the encoding mess on wxWidgets

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16730
2024-01-24 19:04:50 -05:00
Jon Evans 5d7eac7677 Allow for empty LIB_PART in certain symbol functions
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16731
2024-01-24 12:18:10 -05:00
Alex Shvartzkop 13f8fd77ac wx 3.3 compatibility. 2024-01-24 19:58:12 +03:00
Jeff Young b8b4ea1a45 Comments. 2024-01-24 16:24:19 +00:00
Ian McInerney d04b21c6d6 Ensure parameter typeinfo matches the actual object's typeinfo
AppleClang seems to generate different typeinfo for forward declarations
of classes than the actual class object, so the any_cast for the pointer
parameter fails due to the types not matching (even when they look the
same when printed in the error).

Instead, we must always ensure we use the actual object when defining
the parameter type when placing the object into the event.
2024-01-24 16:14:32 +00:00
Jeff Young a5ee614ae8 Comments. 2024-01-24 14:51:41 +00:00
Jeff Young 65c75072ef Convert between refs and KIIDs in Footprint Properties.
Also fixes DIALOG_TEXT_PROPERTIES, which did it correctly
for multi-line texts, but not for single-line texts.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16721
2024-01-24 13:35:37 +00:00
Jeff Young 89850824d5 Naming & comments. 2024-01-24 13:35:37 +00:00
Jon Evans 64221b95c9 Don't skip highlighting selected NPTH/via holes 2024-01-24 08:23:26 -05:00
Jan Wichmann b6ddef7162 pcbnew: Added missing DRC checks for value and library-link between symbol and footprint 2024-01-24 12:35:51 +00:00
Jeff Young 7cf861a239 Use ARC_HIGH_DEF (not ARC_LOW_DEF) for courtyard generation.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16695
2024-01-24 12:00:33 +00:00
Jeff Young 9d88a9f60a Fix typo causing OnItemsChanged() to get called too often.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16657
2024-01-24 11:36:56 +00:00
Jeff Young 6407576cb9 Convert between refs and KIIDs in Symbol Properties. 2024-01-24 11:02:56 +00:00
Jon Evans d50e0811fb Fix QA build 2024-01-23 22:50:53 -05:00
Marek Roszko a85478df97 Test the directory opened explicitly to silence assert
Fixes KICAD-6FY
2024-01-23 22:37:22 -05:00
Jon Evans c143be6279 Pads need to be included in collection for length checks
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16724
2024-01-23 22:08:08 -05:00
Alex ed00cb3304 Support arcs in Break Track.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16712
2024-01-24 05:47:50 +03:00
Jon Evans a46d409ec6 Make sure grouping commits follow board editor path 2024-01-23 21:22:23 -05:00
Jon Evans 256364aaa1 Parent property should not be accessible from the UI 2024-01-23 20:41:34 -05:00
Jon Evans 426aa76788 Add Andre Iwers to developers 2024-01-23 20:30:37 -05:00
Martin Berglund ddc2092dac Eeschema: Autoplace fields offset correction
No longer count fields without 'Allow automatic placement'
toward the Autoplace offset.

Fixes https://gitlab.com/kicad/code/kicad/issues/16588
2024-01-24 00:24:16 +00:00
Jeff Young ea7176d466 Don't attempt to update start item from a keyboard event. 2024-01-23 23:07:11 +00:00
afkiwers c871bcf6db removed unnecessary variables 2024-01-23 22:32:05 +00:00
afkiwers c7475a16c8 implemented better caching for categories and parts overview to reduce processing time 2024-01-23 22:32:05 +00:00
Wayne Stambaugh d96ebf5745 Remove paste sheet instance path debugging output. 2024-01-23 16:04:08 -05:00
jean-pierre charras 8d2784b822 Eeschema, hierarchy navigator: right click on an item must select the corresponding
sheet, not the currently opened sheet.
Fixes #16670
https://gitlab.com/kicad/code/kicad/-/issues/16670
2024-01-23 18:13:03 +01:00
Jeff Young 8410a5e685 Coding conventions and cleanup. 2024-01-23 16:03:25 +00:00
Jeff Young e549d7c0c6 Formatting and clearer variable names.
(No functional changes.)
2024-01-23 16:02:30 +00:00
Jeff Young a263b6d343 Mutual inductance statements have no model. 2024-01-23 15:14:09 +00:00
Jeff Young 1bd8da41a7 Mutual Inductor isn't an inductor.
It's a statement about two other inductors.
2024-01-23 15:07:29 +00:00
Jeff Young a836a66170 Update labels when editing field names.
This is yet another path for getting duplciate fields
when changing the case of an existing field name.
2024-01-23 14:58:56 +00:00
Jeff Young 9935a022cd Fix typo in OnRenameField() that can cause OOB access.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16625
2024-01-23 14:02:13 +00:00
Jeff Young 179ab1011f Don't use canonical name for user fields with an id of -1.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16715
2024-01-23 13:42:17 +00:00
Jeff Young 8b56b3d999 Formatting. 2024-01-23 13:42:17 +00:00
Wayne Stambaugh b3a36bd783 Fix overly aggressive sheet instance pruning. 2024-01-23 07:44:45 -05:00
Marek Roszko 5f063dd458 Change the migrate settings path box to proportion rather than fixed min width 2024-01-22 22:12:38 -05:00
Jeff Young d47a000564 Make sure group items get added to commit.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16705
2024-01-22 23:34:34 +00:00
Seth Hillbrand 92ed389ad2 Add cir file icon to treeview
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15777
2024-01-22 15:24:00 -08:00
Seth Hillbrand 224d8577bb Fix dark file_pos 2024-01-22 15:24:00 -08:00
Seth Hillbrand 71992b3637 Add new icons to build list 2024-01-22 15:24:00 -08:00
Seth Hillbrand 967885180e Add cir file icon type
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15777
2024-01-22 15:24:00 -08:00
Seth Hillbrand f5a64aea43 Add export gltf icon
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16203
2024-01-22 15:24:00 -08:00
Seth Hillbrand 497460f4aa Fix type on post_rpt icon 2024-01-22 15:24:00 -08:00
Seth Hillbrand 3e45e49784 Correct IDF file dark mode icon 2024-01-22 15:24:00 -08:00
Seth Hillbrand 02e46e690c Add missing dark mode icons
e-series icons
sim_command
sim_add_plot
2024-01-22 15:23:59 -08:00
Seth Hillbrand a98ff2bb9f Fix 3d Display on tiny_tapeout 2024-01-22 15:23:59 -08:00
Wayne Stambaugh 4cf22e428c Fix broken pasted sheet page numbering.
This change no longer sorts pasted sheets by page number.  This was done
because pasted sheets may not be numbered.  When sheets are not numbered
they are sorted by UUID path which results in some unexpected results.
Since the pasted sheet code uses recursion, pages will be numbered in the
order they are added.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16580
2024-01-22 16:55:43 -05:00
Roberto Fernandez Bautista 43a3ed2522 Don't hardcode symbol library stub when converting library
Also, make sure options column is set back to blank

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16706
2024-01-22 22:52:40 +01:00
Jeff Young 85f0dd279c Push fileFilter callback function down a level.
(The GRID_CELL_PATH_EDITOR is shared by the whole column.)

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

Fixes https://gitlab.com/kicad/code/kicad/-/issues/13959
2024-01-22 18:27:31 +00:00
Jeff Young 236123c487 Allow FPID to be matched against in memberOfFootprint().
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16662
2024-01-22 14:03:45 +00:00
jean-pierre charras 6efe44a12a French translation update. 2024-01-22 09:13:58 +01:00
Marek Roszko f63c7806fd More bitmap bundle comboboxes 2024-01-21 22:55:13 -05:00
Marek Roszko 059b043935 Try and walk from a real component pin rather than power symbol that will fail our later check 2024-01-21 21:12:14 -05:00
Marek Roszko caf463bbd2 Pass KiBitmapBundle instead of KiBitmap to the pin property comboboxes
Related https://gitlab.com/kicad/code/kicad/-/issues/16698
2024-01-21 20:47:46 -05:00
Seth Hillbrand 39d918b36a Update translations 2024-01-21 16:55:09 -08:00
Henrik Kauhanen 2a21b6ac67 Translated using Weblate (Swedish)
Currently translated at 99.9% (9143 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-01-21 16:55:08 -08:00
Hajdu Norbert 1902da4ad7 Translated using Weblate (Hungarian)
Currently translated at 2.1% (197 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/hu/
2024-01-21 16:55:08 -08:00
dsa-t 678219a81b Translated using Weblate (Russian)
Currently translated at 100.0% (9145 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-01-21 16:55:08 -08:00
김랑기 946e4f6c74 Translated using Weblate (Korean)
Currently translated at 94.9% (8686 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-01-21 16:55:08 -08:00
Hajdu Norbert 32c8b8a8ce Translated using Weblate (Hungarian)
Currently translated at 1.5% (143 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/hu/
2024-01-21 16:55:08 -08:00
aris-kimi 7a1f1fb9a6 Translated using Weblate (Greek)
Currently translated at 100.0% (9145 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/el/
2024-01-21 16:55:08 -08:00
Tokita, Hiroshi 055bf9db08 Translated using Weblate (Japanese)
Currently translated at 99.9% (9143 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-01-21 16:55:08 -08:00
aris-kimi ed77fc6c00 Translated using Weblate (Greek)
Currently translated at 98.4% (9003 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/el/
2024-01-21 16:55:08 -08:00
Lao·Zhu b65fa66ad3 Translated using Weblate (Chinese (Simplified))
Currently translated at 92.4% (8451 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-01-21 16:55:08 -08:00
김랑기 dd16f87d3c Translated using Weblate (Korean)
Currently translated at 94.4% (8638 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-01-21 16:55:08 -08:00
aris-kimi b60757bb90 Translated using Weblate (Greek)
Currently translated at 97.7% (8938 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/el/
2024-01-21 16:55:08 -08:00
Mert Kalkancı 2a22d32018 Translated using Weblate (Turkish)
Currently translated at 51.2% (4685 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/tr/
2024-01-21 16:55:08 -08:00
向阳阳 b3df1f5db9 Translated using Weblate (Chinese (Simplified))
Currently translated at 92.3% (8449 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-01-21 16:55:08 -08:00
김랑기 687793e2e5 Translated using Weblate (Korean)
Currently translated at 94.4% (8638 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-01-21 16:55:08 -08:00
aris-kimi 9f6fed2a51 Translated using Weblate (Greek)
Currently translated at 95.9% (8775 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/el/
2024-01-21 16:55:08 -08:00
Mark Hämmerling 42c9c17a9c Translated using Weblate (German)
Currently translated at 99.9% (9140 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-01-21 16:55:08 -08:00
Pferd O a60ae5100d Translated using Weblate (German)
Currently translated at 99.9% (9140 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-01-21 16:55:08 -08:00
dsa-t 359a859638 Translated using Weblate (Russian)
Currently translated at 89.2% (8160 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-01-21 16:55:08 -08:00
Mark Hämmerling a85da4cf49 Translated using Weblate (German)
Currently translated at 99.9% (9136 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-01-21 16:55:08 -08:00
Pferd O 5ea8179620 Translated using Weblate (German)
Currently translated at 99.9% (9136 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-01-21 16:55:08 -08:00
Mark Hämmerling ba594dcb9b Translated using Weblate (German)
Currently translated at 98.1% (8976 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-01-21 16:55:08 -08:00
김랑기 15b6b7d942 Translated using Weblate (Korean)
Currently translated at 92.7% (8485 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-01-21 16:55:08 -08:00
Pferd O 7533048996 Translated using Weblate (German)
Currently translated at 98.0% (8963 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-01-21 16:55:08 -08:00
Ulices c0f137d007 Translated using Weblate (Spanish (Mexico))
Currently translated at 85.9% (7857 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es_MX/
2024-01-21 16:55:08 -08:00
向阳阳 5b26cbb814 Translated using Weblate (Chinese (Simplified))
Currently translated at 91.9% (8411 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/zh_Hans/
2024-01-21 16:55:08 -08:00
Henrik Kauhanen f317a83450 Translated using Weblate (Swedish)
Currently translated at 99.9% (9141 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-01-21 16:55:07 -08:00
김랑기 84a5f11cbe Translated using Weblate (Korean)
Currently translated at 92.7% (8485 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-01-21 16:55:07 -08:00
Henrik Kauhanen f879a95859 Translated using Weblate (Finnish)
Currently translated at 99.9% (9140 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/fi/
2024-01-21 16:55:07 -08:00
Mark Hämmerling 034f542045 Translated using Weblate (German)
Currently translated at 96.9% (8868 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-01-21 16:55:07 -08:00
Tokita, Hiroshi 623ef6299a Translated using Weblate (Japanese)
Currently translated at 99.9% (9141 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-01-21 16:55:07 -08:00
Pferd O 4565900cc9 Translated using Weblate (German)
Currently translated at 96.9% (8868 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-01-21 16:55:07 -08:00
Mark Hämmerling 3235176f3d Translated using Weblate (German)
Currently translated at 96.9% (8868 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-01-21 16:55:07 -08:00
Mark Hämmerling 9d15984a23 Translated using Weblate (German)
Currently translated at 96.9% (8868 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-01-21 16:55:07 -08:00
Pferd O 748567e148 Translated using Weblate (German)
Currently translated at 96.9% (8868 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-01-21 16:55:07 -08:00
김랑기 86b2d40507 Translated using Weblate (Korean)
Currently translated at 92.0% (8419 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ko/
2024-01-21 16:55:07 -08:00
aris-kimi 016c3d5f93 Translated using Weblate (Greek)
Currently translated at 95.3% (8723 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/el/
2024-01-21 16:55:07 -08:00
Mark Hämmerling 553b3c734d Translated using Weblate (German)
Currently translated at 96.6% (8841 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-01-21 16:55:07 -08:00
Pferd O f47dfdf40c Translated using Weblate (German)
Currently translated at 96.6% (8841 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-01-21 16:55:07 -08:00
Wellington Terumi Uemura 7f2dda5971 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (9145 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pt_BR/
2024-01-21 16:55:07 -08:00
Henrik Kauhanen 2325dea167 Translated using Weblate (Swedish)
Currently translated at 99.8% (9127 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/sv/
2024-01-21 16:55:07 -08:00
dsa-t 8df34b16d3 Translated using Weblate (Russian)
Currently translated at 89.0% (8146 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ru/
2024-01-21 16:55:07 -08:00
ZbeeGin e967cb75b0 Translated using Weblate (Polish)
Currently translated at 100.0% (9145 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/pl/
2024-01-21 16:55:07 -08:00
Tokita, Hiroshi c2e13a6537 Translated using Weblate (Japanese)
Currently translated at 99.9% (9141 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/ja/
2024-01-21 16:55:07 -08:00
gallegonovato 216bb79d56 Translated using Weblate (Spanish)
Currently translated at 81.3% (7441 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/es/
2024-01-21 16:55:07 -08:00
aris-kimi 9efd59f58d Translated using Weblate (Greek)
Currently translated at 95.2% (8708 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/el/
2024-01-21 16:55:07 -08:00
Pferd O 40fecd9260 Translated using Weblate (German)
Currently translated at 94.9% (8680 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-01-21 16:55:06 -08:00
Jonathan Haas d1148a5221 Translated using Weblate (German)
Currently translated at 94.9% (8680 of 9145 strings)

Translation: KiCad EDA/master source
Translate-URL: https://hosted.weblate.org/projects/kicad/master-source/de/
2024-01-21 16:55:06 -08:00
Marek Roszko fb8dc75108 Fix broken conditional check while walking global power connected items
Per the if statement and logic, we want to walk into looking up connections if we are a pin on a chip.
IsGlobalPower is a test for it's in a power symbol, so we want it false not true.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16699
2024-01-21 19:54:09 -05:00
Jeff Young d6b39c672e Footprint editor items always get added to footprint.
Also fixes an unrelated crash when assuming the current
editor is the board editor.
2024-01-21 22:51:36 +00:00
Jeff Young 6fca467e2a Don't query first item of empty vector.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16687
2024-01-21 22:51:36 +00:00
Jeff Young 2627c99654 Fix typos that produce segfaults.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16696
2024-01-21 22:51:36 +00:00
Marek Roszko 1981997ee2 Dump the ERC report as part of the erc failure 2024-01-21 16:10:43 -05:00
Marek Roszko 0147dd8699 Tweak the boost test logger config 2024-01-21 15:52:53 -05:00
Graham Keeth e58615952c Fix delimeter -> delimiter typo in translated strings
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/16673
2024-01-21 13:44:43 -05:00
Wayne Stambaugh ebb69bdfa4 Tag version 8 release candidate two. 2024-01-21 12:02:38 -05:00
Wayne Stambaugh 2cfb7a5310 Incremental schematic connectivity fixes. 2024-01-21 16:53:05 +00:00
Wayne Stambaugh c2bd158194 Update about dialog contributors lists. 2024-01-21 08:29:15 -05:00
Jeff Young e07a4c285b Remove old hack required for wxWidgets 3.0 on MacOS.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16687
2024-01-21 11:20:34 +00:00
Alex 767ab72cdb DXF import: INSERT angles are in degrees.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16656
2024-01-21 07:56:20 +03:00
Jeff Young 37c185f437 Remove overly-complex snapping layer for moving objects.
We now have a hotkey to select Active Layer vs All Layers,
which gives the user more control.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16683
2024-01-20 22:04:56 +00:00
Jeff Young 5c4313587b Attempt to fix hierarchy tree selection issue.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16670
2024-01-20 19:25:18 +00:00
Jeff Young 13935399a5 Second part of d854de9d68
This one for symbol <-> footprint.  (Original was for
lib footprint <-> board footprint.)

Also fixes a major bug in DRC where we bail out of parity
checking if DRCE_MISSING_FOOTPRINT is set to ignore (or
overflows).

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16671
2024-01-20 18:41:35 +00:00
Jeff Young d854de9d68 Add missing DRC checks for footprint attributes.
Requires string change, but it's a bug, and worse, a DRC
bug.  I did minimize the changes by using a single error
message string that then has the various settings (which
are already translated) put into it.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16671
2024-01-20 17:22:19 +00:00
Wayne Stambaugh 466269a360 Update about dialog contributors list. 2024-01-20 09:46:40 -05:00
jean-pierre charras 2b01ea21d5 Update French tranlation (fix typo and new strings) 2024-01-20 13:00:49 +01:00
jean-pierre charras be723dd579 PANEL_PCBNEW_COLOR_SETTINGS: ensure color setting for all DRC markers are in list
Fixes #16674
https://gitlab.com/kicad/code/kicad/-/issues/16674
2024-01-20 12:05:45 +01:00
Jan Wichmann b65fa46c3c Move git clone to standard create project
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16523
2024-01-19 23:52:37 +00:00
Ian McInerney b36a67e556 Fix missed IO_MGR rename in Python
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16669
2024-01-19 22:23:04 +00:00
Seth Hillbrand 7687f240a2 Prevent footprint editing in power symbols
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16663
2024-01-19 12:52:03 -08:00
Jeff Young 7fbeea0195 Allow smaller grid dots on Retina displays. 2024-01-19 20:37:27 +00:00
Seth Hillbrand 0e6f1a9f99 Don't set defaults in blank project
Defaults are set in code so that we have a singular reference when
generating new project

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16032
2024-01-19 12:35:59 -08:00
Jeff Young ac4f9dc97a Initialize shared sheet instance page no's in drawing tool.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16580
2024-01-19 18:45:46 +00:00
jean-pierre charras 7c3f8cbb79 3D viewer: do not load the current board twice when creating the 3D viewer frame. 2024-01-19 18:42:24 +01:00
Jeff Young 1597882c1f Allow creation of groups with a single member.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16586
2024-01-19 17:32:00 +00:00
Jon Evans e29baa75b4 Scale GAL grid with DPI 2024-01-19 12:20:13 -05:00
Jeff Young 7975ad495b Push busyCursor out of scope after building dialog.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16653
2024-01-19 17:13:15 +00:00
Jeff Young c3e3f3bcb8 Possible fix for move individually.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16087
2024-01-19 15:13:41 +00:00
Jeff Young 4d80da8238 Separate symbol angle and mirroring in prop manager. 2024-01-19 13:40:56 +00:00
Jon Evans f80094e7c5 Warn the search pane that pointers are going invalid
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16612
2024-01-18 17:50:50 -05:00
Jan Wichmann 693248f60f pcbnew: 3d viewer: disable show DNP footprints by default 2024-01-18 22:33:02 +00:00
Seth Hillbrand f1dacf7d92 Updated revision of polygon triangulation from 0a67dd3fdd
This maintains the primary goal of ensuring that bad splits do not allow
the triangulation process to continue.  Instead, we boot this back up to
the top-level where we will simplify the polygon before triangulating
again.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16624
2024-01-18 11:07:40 -08:00
Seth Hillbrand e4a0b9c7ed Revert "Revise triangulation"
This reverts commit 0a67dd3fdd.
2024-01-18 11:07:40 -08:00
Jeff Young 6361995412 Beef up property manager access to SCH_SYMBOL.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16640
2024-01-18 16:17:46 +00:00
Jeff Young 61876533df Clean up formatting. 2024-01-18 16:17:46 +00:00
Jeff Young bb74100fe2 Fix typo. 2024-01-18 16:17:46 +00:00
Jeff Young 65b89116e1 Clean up formatting. 2024-01-18 16:17:46 +00:00
Mark Roszko 4e81f48b3e Update vcpkg baseline 2024-01-18 15:12:34 +00:00
Jeff Young 57315dd625 Make sure group children get added to board.
Also fixes a bug where you could import on to an invisible
layer (we now auto-show the layer if you do that).

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16642
2024-01-18 14:02:43 +00:00
Jeff Young 84c6451787 Reduce visual noise in dialog; regularize spacing. 2024-01-18 14:02:43 +00:00
Alex 3eb3fc9d1e Fix PCB arc edit point order. 2024-01-18 13:51:32 +03:00
Marek Roszko 7b24167398 FromDIP symbol and footprint editor aui panes 2024-01-17 23:08:38 -05:00
Marek Roszko 4e0e348688 FromDIP the default frame sizes 2024-01-17 23:01:58 -05:00
Marek Roszko ef3e305db4 Min width of pl_editor properties should be FromDIPed 2024-01-17 22:53:26 -05:00
Marek Roszko b41cd7981e Try and fix pcm somewhat with FromDIP
We really need FromDIP in the base class to get things correct ugh
2024-01-17 22:52:01 -05:00
Marek Roszko f5db4d6864 Remove the invalid default dock directions for search panel
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16636
2024-01-17 22:26:04 -05:00
Marek Roszko 1c6d7a5fa5 Sprinkle FromDIP in SCH_EDIT_FRAME aui setup 2024-01-17 22:05:54 -05:00
Marek Roszko 7c8ee26a38 FromDIP the pcb aui sizes 2024-01-17 22:02:05 -05:00
Marek Roszko 7709de3667 FromDIP the left tree view in kicad frame 2024-01-17 21:57:23 -05:00
Marek Roszko 8a3a7b2a10 Tie the caption size to the font size to scale at hi dpi better on windows 2024-01-17 21:45:18 -05:00
Andre Iwers 4d1a016429 HTTP Libraries: Improved cache performance 2024-01-18 02:33:16 +00:00
Jeff Young 97cb15dd47 Make sub menus conditional on them having child items.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16631
2024-01-18 00:21:15 +00:00
Jon Evans 7aad7fcce6 Expose CORNER_STRATEGY to swig 2024-01-17 17:08:14 -05:00
Jeff Young 047b5f8b18 Cache for wxLocale::IsAvailable(). 2024-01-17 16:13:53 +00:00
Jeff Young 455fae45d8 Support point editing of inverted rectangles.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16595
2024-01-17 15:27:48 +00:00
Jeff Young df48ebfbe7 Restore preferential selection treatment for silk items.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16607
2024-01-17 14:02:43 +00:00
jean-pierre charras 27482ef8a0 add missing dark icon source 2024-01-17 08:26:57 +01:00
Seth Hillbrand ba6979a274 Fix pin check to allow for globals
Don't short-circuit adding global labels to the pins vector or we won't
search all subnets
2024-01-16 16:35:47 -08:00
Jeff Young ace4ef7b16 Implement stingy selection mode for tuning patterns. 2024-01-17 00:34:22 +00:00
Jeff Young be6a2d018d Implement stingy selection mode for tuning patterns. 2024-01-17 00:34:22 +00:00
Seth Hillbrand 121271bd0a Allow users to specify no minimum text width in DRC
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16596
2024-01-16 16:24:18 -08:00
Jeff Young 322ad1af45 Implement copy/paste for generators.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16613
2024-01-16 23:38:50 +00:00
Seth Hillbrand 9077c9fb80 Avoid assertion when changing projects
If the regex does not compile, we should not be checking for matches
2024-01-16 15:24:32 -08:00
Seth Hillbrand 8fea4812f3 Don't count power flags as sinks/sources
Just because we have a power flag on a net does not mean that there are
more than 1 pin

Fixes https://gitlab.com/kicad/code/kicad/-/issues/13469
2024-01-16 15:24:32 -08:00
Jon Evans 57c40d4f17 Disable the splash screen for now 2024-01-16 17:26:02 -05:00
Marek Roszko b4bfdf95d3 Explicitly add 48, 128, 256 to icon bundles for each app 2024-01-16 17:21:44 -05:00
Marek Roszko f20e8a6e41 Add 256x256 program icon pngs 2024-01-16 17:21:44 -05:00
Marek Roszko 8b5fff4ffe Add 256 icon png generation 2024-01-16 17:21:44 -05:00
Alex Shvartzkop 27b560b439 EAGLE: fix missing undefined layer check for rectangle zones.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16619
2024-01-17 01:18:24 +03:00
levanlap2502 faeec25557 Fix fillet lines, when line angle is 0 or 180
Check angle of line before creating Fillet

Fixes https://gitlab.com/kicad/code/kicad/-/issues/15966
2024-01-16 13:30:21 -08:00
Seth Hillbrand 13544ff975 Avoid crash on step export
Detach the wxProcess from the chain before closing

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16608
2024-01-16 13:18:54 -08:00
Marek Roszko 6f52220741 Add missing 256x256 image to app icos 2024-01-16 16:04:41 -05:00
Marek Roszko 0b0a9d92da Force script line endings 2024-01-16 16:03:43 -05:00
Marek Roszko 76e8ed2506 Fix sch_field and pcb_target not returning evaluated similarity correctly 2024-01-16 15:43:49 -05:00
Alex Shvartzkop 3bbf45dccb EasyEDA Pro: resolve device attribute variables in schematic. 2024-01-16 23:40:00 +03:00
Marek Roszko f6401b0903 Fix preferences dialog on hidpi using FromDIP 2024-01-16 15:33:32 -05:00
Marek Roszko 918327efb3 Use FromDIP helper for initial kicad frame size 2024-01-16 15:24:49 -05:00
Alex Shvartzkop 42255f10c3 EasyEDA Pro: fix default netport orientations.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16620
2024-01-16 22:47:15 +03:00
Alex Shvartzkop fba6aaf0e8 Only height should be increased for LIB_TREE_RENDERER. 2024-01-16 22:04:30 +03:00
Alex Shvartzkop ac59fae152 Fix cut-off library tree cell texts. 2024-01-16 21:59:08 +03:00
Jeff Young 4fb11e210a Copy teardrop settings.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16618
2024-01-16 17:20:54 +00:00
Seth Hillbrand a044ca8d4d Don't show preferences without lib table init
Since we require lib tables for the kiface, we require them for
instantiating the kiface and won't show preferences without them

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16611
2024-01-16 09:18:22 -08:00
Seth Hillbrand 7001c4e351 Remove errand remnant of capitalized demo 2024-01-16 08:39:28 -08:00
Alex Shvartzkop c8a0a58683 Fix PCB_FILE_T usage in FP_LIB_TABLE_GRID. 2024-01-16 19:35:10 +03:00
Alex Shvartzkop 4f6c25895e Rename UNKNOWN in enums to prevent shadowing. 2024-01-16 19:14:57 +03:00
Alex Shvartzkop d512e09eb8 std::isnan is not constexpr in C++17 2024-01-16 18:42:37 +03:00
jean-pierre charras 07fa42644d SCH_PAINTER: fix a few minor issues related to Cairo print engine
- shows correctly hidden power pins unconnected circle
- do not print dangling indicators
- do not print highlight shadows.
Fixes #16615
https://gitlab.com/kicad/code/kicad/-/issues/16615
2024-01-16 16:30:55 +01:00
jean-pierre charras 76bd892f93 Fix not working Duplicate command in FP editor
Fixes #16594
https://gitlab.com/kicad/code/kicad/-/issues/16594
2024-01-16 16:30:55 +01:00
Alex Shvartzkop 4c630e5aec KiROUND: make sure input type is floating point before checking for nan. 2024-01-16 17:25:46 +03:00
Alex Shvartzkop f99505e190 Fix arc editing bugs when endpoints match.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16532
2024-01-16 16:17:45 +03:00
Alex Shvartzkop 5bd620d8f9 Support Bezier curve editing in eeschema. 2024-01-16 14:11:25 +03:00
Alex Shvartzkop 338914c7cf Restore Fix Discontinuities default tolerance; enable it by default.
There's no artifacts anymore due to CalcArcCenter fixes.
2024-01-16 12:13:08 +03:00
Marek Roszko fc62d36441 Add share/locale to catalog paths on windows 2024-01-15 22:08:17 -05:00
Marek Roszko 88dc531d91 Update vcpkg to get locale installing wxwidgets 2024-01-15 21:11:19 -05:00
Seth Hillbrand d25ac664f8 Adding additional demos
Some simulation demos curtesy of Holger Vogt and a new board design
curtesy of Pat Deegan
2024-01-15 16:52:33 -08:00
Alex Shvartzkop 82a0227c20 Don't plot polygon borders when they are disabled. 2024-01-15 22:35:35 +03:00
Alex Shvartzkop 57bc443f0b Fix HPGL color mode being set. 2024-01-15 22:35:35 +03:00
Alex Shvartzkop 01e88d33aa Fix Bezier reading in schematic as well. 2024-01-15 22:35:35 +03:00
Alex Shvartzkop ad7258721b Initialize SCH_SHEET members earlier.
m_borderWidth is used for autoplacing fields.
Fixes sheet filename being in extreme locations in some cases.
2024-01-15 22:35:35 +03:00
Wayne Stambaugh d3f40dde3f Fix assertion when pasting schematic sheets.
Pasted sheets do not have assigned SCH_SCREEN objects until after they
are loaded.

Do not recalculate connectivity unless the SCH_COMMIT object actually has
connectable schematic object changes.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16579
2024-01-15 12:15:30 -05:00
jean-pierre charras ec3bf79c42 Fix incorrect Help menu on Windows
Fixes #16598
https://gitlab.com/kicad/code/kicad/-/issues/16598
2024-01-15 08:37:12 +01:00
Alex Shvartzkop 4fac43d696 Fix variable substitutions in library tables.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16601
2024-01-15 09:53:08 +03:00
Alex Shvartzkop b7460f29b4 Altium schematic: fix properties parsing in old formats.
Leading "|" can be missing before "RECORD=28" in old formats.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16513
2024-01-14 13:12:47 +03:00
Alex Shvartzkop 42d8c85f12 Altium PCB import: Models is optional.
Models directory may not exist in older files.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16512
2024-01-14 11:59:49 +03:00
Marek Roszko 5bc78f7d9f Remove the user 3d path creation 2024-01-13 19:35:55 -05:00
Mark Roszko 2c53ce0704 Fix ci after libgal rename 2024-01-13 17:22:01 +00:00
Marek Roszko 21647f54e9 Rename the gal output to kigal 2024-01-13 11:35:59 -05:00
Seth Hillbrand 4e3d2a148d Fix typo 2024-01-12 14:51:32 -08:00
3860 changed files with 10428488 additions and 4284239 deletions
+57
View File
@@ -0,0 +1,57 @@
# minimum clang-format 10
BasedOnStyle: LLVM
AccessModifierOffset: -4
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: true
AlignOperands: true
AlignTrailingComments: true
AllowAllConstructorInitializersOnNextLine: false
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: Never
AllowShortCaseLabelsOnASingleLine: true
AllowShortFunctionsOnASingleLine: InlineOnly
AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: None
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: Yes
BinPackArguments: true
BinPackParameters: true
BreakBeforeBinaryOperators: NonAssignment
BreakBeforeBraces: Allman
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: AfterColon
BreakConstructorInitializersBeforeComma: false
BreakStringLiterals: true
ColumnLimit: 100
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 8
ContinuationIndentWidth: 8
Cpp11BracedListStyle: false
DerivePointerAlignment: false
DisableFormat: false
ForEachMacros: [ BOOST_FOREACH ]
IndentCaseLabels: false
IndentWidth: 4
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: false
Language: Cpp
MaxEmptyLinesToKeep: 2
NamespaceIndentation: Inner
PointerAlignment: Left
ReflowComments: false
SortIncludes: false
SpaceAfterCStyleCast: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: Never
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInParentheses: true
SpacesInSquareBrackets: false
Standard: c++11
TabWidth: 4
UseTab: Never
+4
View File
@@ -30,3 +30,7 @@ bitmaps_png/cpp_*/*.cpp generated
# Lemon grammars
common/libeval/grammar.c generated
common/libeval/grammar.h generated
# Scripts
*.sh text eol=lf
*.bat text eol=crlf
+8 -2
View File
@@ -17,8 +17,6 @@ include/fp_lib_table_lexer.h
include/lib_table_lexer.h
include/netlist_lexer.h
include/page_layout_reader_lexer.h
eeschema/cmp_library_lexer.h
eeschema/cmp_library_keywords.*
eeschema/dialogs/dialog_bom_cfg_keywords.cpp
eeschema/dialogs/dialog_bom_cfg_lexer.h
common/template_fieldnames_keywords.cpp
@@ -58,6 +56,7 @@ qa/tests/output/**
demos/**/*-bak
demos/**/_autosave-*
demos/**/fp-info-cache
demos/**/~*.lck
# MacOS package info created by CMake
bitmap2component/Info.plist
@@ -103,6 +102,9 @@ __pycache__
.editorconfig
CMakeSettings.json
.vscode/
compile_commands.json
/vcpkg_installed
CMakePresets.json
# Sublime Text
*.sublime-*
@@ -111,6 +113,10 @@ CMakeSettings.json
.kdev4/
*.kdev4
# Qt Creator
CMakeLists.txt.user
*.autosave
# Translations
*.mo
i18n_status.svg
+4 -1
View File
@@ -3,9 +3,12 @@ stages:
- test
- report
variables:
DEFAULT_FEDORA_IMAGE: registry.gitlab.com/kicad/kicad-ci/source_containers/master/fedora:40
default:
image:
name: registry.gitlab.com/kicad/kicad-ci/source_containers/master/fedora:36
name: $DEFAULT_FEDORA_IMAGE
entrypoint: ["/bin/sh", "-c"]
include:
+19 -15
View File
@@ -6,7 +6,7 @@
# Don't tag until we have separate CI for MRs
# tags:
# - kicad-fedora
image: registry.gitlab.com/kicad/kicad-ci/source_containers/master/fedora:38
image: $DEFAULT_FEDORA_IMAGE
extends: .only_code
interruptible: false
cache:
@@ -28,6 +28,7 @@
-DKICAD_BUILD_I18N=ON
-DKICAD_TEST_XML_OUTPUT=ON
-DKICAD_BUILD_PNS_DEBUG_TOOL=ON
-DKICAD_USE_CMAKE_FINDPROTOBUF=ON
../../
- ninja 2>&1 | tee compilation_log.txt
- cd ../../
@@ -39,8 +40,9 @@
when: always
paths:
- build/linux/3d-viewer/
- build/linux/api/libkiapi.so*
- build/linux/common/libkicommon.so*
- build/linux/common/gal/libgal.so*
- build/linux/common/gal/libkigal.so*
- build/linux/eeschema/_eeschema.kiface
- build/linux/kicad/kicad-cli
- build/linux/pcbnew/pcbnew.py
@@ -57,16 +59,18 @@ fedora_build_linux_kicad:
extends: .fedora_build_linux_base
tags:
- kicad-fedora
only:
only:
variables:
- $CI_PROJECT_ROOT_NAMESPACE == "kicad"
fedora_build_linux_public:
extends: .fedora_build_linux_base
except:
tags:
- saas-linux-medium-amd64
except:
variables:
- $CI_PROJECT_ROOT_NAMESPACE == "kicad"
# Upload the compilation log in an easily downloadable form
.fedora_report_build_warn:
@@ -90,7 +94,7 @@ fedora_report_build_warn_kicad:
needs:
- job: fedora_build_linux_kicad
artifacts: true
only:
only:
variables:
- $CI_PROJECT_ROOT_NAMESPACE == "kicad"
@@ -99,10 +103,10 @@ fedora_report_build_warn_public:
needs:
- job: fedora_build_linux_public
artifacts: true
except:
except:
variables:
- $CI_PROJECT_ROOT_NAMESPACE == "kicad"
# Report on the metrics of the code
.fedora_report_metrics:
@@ -123,7 +127,7 @@ fedora_report_metrics_kicad:
needs:
- job: fedora_build_linux_kicad
artifacts: true
only:
only:
variables:
- $CI_PROJECT_ROOT_NAMESPACE == "kicad"
@@ -132,7 +136,7 @@ fedora_report_metrics_public:
needs:
- job: fedora_build_linux_public
artifacts: true
except:
except:
variables:
- $CI_PROJECT_ROOT_NAMESPACE == "kicad"
@@ -140,17 +144,17 @@ fedora_report_metrics_public:
# Run the code unit tests.
##########################################################################
.fedora_qa:
image: registry.gitlab.com/kicad/kicad-ci/source_containers/master/fedora:38
image: $DEFAULT_FEDORA_IMAGE
extends:
- .unit_test
- .only_code
before_script:
before_script:
- if [ "$TEST" == "cli" ] || [ "$TEST" == "python" ]; then python3 -m pip install -r qa/tests/requirements.txt; fi
- if [ "$TEST" == "cli" ]; then sudo dnf -y install gerbv; fi
parallel:
matrix:
# The name of the test without the qa_ prefix
- TEST: [python, cli, common, gerbview, pcbnew, pns_regressions, eeschema, kimath, sexpr, kicad2step, spice]
- TEST: [python, cli, common, gerbview, pcbnew, pns_regressions, eeschema, kimath, sexpr, kicad2step, spice, api]
fedora_qa_kicad:
extends: .fedora_qa
@@ -159,7 +163,7 @@ fedora_qa_kicad:
needs:
- job: fedora_build_linux_kicad
artifacts: true
only:
only:
variables:
- $CI_PROJECT_ROOT_NAMESPACE == "kicad"
@@ -168,6 +172,6 @@ fedora_qa_public:
needs:
- job: fedora_build_linux_public
artifacts: true
except:
except:
variables:
- $CI_PROJECT_ROOT_NAMESPACE == "kicad"
+4 -4
View File
@@ -8,7 +8,9 @@ win64_build:
interruptible: false
image: registry.gitlab.com/kicad/kicad-ci/windows-build-image/win1809-msvc:latest
variables:
VCPKG_BINARY_SOURCES: 'nuget,kicad,readwrite'
# Switch the compressor to fastzip and reduce the compression level
FF_USE_FASTZIP: "true"
CACHE_COMPRESSION_LEVEL: "fast"
cache:
key: win64-vcpkg-"$CI_COMMIT_REF_SLUG"
paths:
@@ -17,12 +19,10 @@ win64_build:
rules:
- if: $CI_PIPELINE_SOURCE == "schedule"
when: never
- if: $CI_PROJECT_ROOT_NAMESPACE == "kicad" && $CI_COMMIT_REF_PROTECTED == "true"
- if: $CI_PROJECT_ROOT_NAMESPACE == "kicad"
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 kicad -Source "https://nuget.kicad.org:443/v3/index.json"
- nuget.exe setapikey $env:KICAD_NUGET_KEY -Source "https://nuget.kicad.org:443/v3/index.json"
- mkdir -p build/windows -Force
- cd build/windows
- cmake `
+1 -1
View File
@@ -42,7 +42,7 @@ Coverity:
tags:
- coverity
stage: build
image: registry.gitlab.com/kicad/kicad-ci/source_containers/master/fedora:38
image: registry.gitlab.com/kicad/kicad-ci/source_containers/master/fedora:40
rules:
- if: $CI_PIPELINE_SOURCE == "schedule" && $SCHEDULED_JOB_NAME == "coverity"
cache:
+1 -1
View File
@@ -6,7 +6,7 @@ build_doxygen_docker:
rules:
- if: $CI_PIPELINE_SOURCE == "schedule" && $SCHEDULED_JOB_NAME == "doxygen"
tags:
- docker
- gitlab-org-docker
before_script:
- docker info
- docker login -u gitlab-ci-token -p "$CI_JOB_TOKEN" "$CI_REGISTRY"
+1 -2
View File
@@ -5,8 +5,7 @@ validate_linux_metadata:
stage: test
needs: []
interruptible: false
# This is the only CI image with the utilities needed for this test
image: registry.gitlab.com/kicad/kicad-ci/source_containers/master/fedora:38
image: $DEFAULT_FEDORA_IMAGE
# Due to bug https://github.com/hughsie/appstream-glib/issues/381, this doesn't think our description tag
# is localized even though it actually is.
allow_failure: true
+2 -20
View File
@@ -9,31 +9,13 @@ macos_build:
rules:
- if: $CI_PIPELINE_SOURCE == "schedule"
when: never
- if: $CI_PROJECT_ROOT_NAMESPACE == "kicad" && $CI_COMMIT_REF_PROTECTED == "true"
- if: $CI_PROJECT_ROOT_NAMESPACE == "kicad"
script:
- mkdir -p build/macos
- cd build/macos
- cmake
-G Ninja
-DCMAKE_BUILD_TYPE=RelWithDebInfo
-DDEFAULT_INSTALL_PATH=/Library/Application\ Support /kicad
-DOCC_INCLUDE_DIR=/opt/homebrew/Cellar/opencascade/7.7.2_2/include/opencascade
-DOCC_LIBRARY_DIR=/opt/homebrew/Cellar/opencascade/7.7.2_2/Lib
-DCMAKE_INSTALL_PREFIX=/Users/ci/kicad-mac-builder/build/kicad-dest
-DCMAKE_C_COMPILER=/usr/bin/clang
-DCMAKE_CXX_COMPILER=/usr/bin/clang++
-DwxWidgets_CONFIG_EXECUTABLE=/Users/ci/kicad-mac-builder/build/wxwidgets-dest/bin/wx-config
-DKICAD_BUILD_I18N=ON
-DKICAD_SCRIPTING_WXPYTHON=ON
-DKICAD_BUILD_PNS_DEBUG_TOOL=ON
-DPYTHON_EXECUTABLE=/Users/ci/kicad-mac-builder/build/python-dest/Library/Frameworks/Python.framework/Versions/Current/bin/python3
-DPYTHON_INCLUDE_DIR=/Users/ci/kicad-mac-builder/build/python-dest/Library/Frameworks/Python.framework/Versions/Current/include/python3.9/
-DPYTHON_LIBRARY=/Users/ci/kicad-mac-builder/build/python-dest/Library/Frameworks/Python.framework/Versions/Current/lib/libpython3.9.dylib
-DPYTHON_SITE_PACKAGE_PATH=/Users/ci/kicad-mac-builder/build/python-dest/Library/Frameworks/Python.framework/Versions/Current/lib/python3.9/site-packages
-DPYTHON_FRAMEWORK=/Users/ci/kicad-mac-builder/build/python-dest/Library/Frameworks/Python.framework
-DNGSPICE_INCLUDE_DIR=/Users/ci/kicad-mac-builder/build/ngspice-dest/include
-DNGSPICE_LIBRARY=/Users/ci/kicad-mac-builder/build/ngspice-dest/lib/libngspice.dylib
-DKICAD_USE_3DCONNEXION=ON
-DCMAKE_TOOLCHAIN_FILE=/Users/ci/kicad-mac-builder/toolchain/kicad-mac-builder.cmake
../../
- cmake --build . 2>&1 | tee compilation_log.txt
- cd ../../
+1 -1
View File
@@ -18,7 +18,7 @@
stage: test
when: on_success
variables:
BOOST_TEST_LOGGER: 'JUNIT,all,test_results.${TEST}.xml:HRF,warning'
BOOST_TEST_LOGGER: 'JUNIT,warning,test_results.${TEST}.xml:HRF,message'
CTEST_OUTPUT_ON_FAILURE: 1
script:
- cd build/linux/qa
+28 -112
View File
@@ -33,14 +33,6 @@
#include <wx/log.h>
#include <wx/stdpaths.h>
#include <boost/version.hpp>
#if BOOST_VERSION >= 106800
#include <boost/uuid/detail/sha1.hpp>
#else
#include <boost/uuid/sha1.hpp>
#endif
#include "3d_cache.h"
#include "3d_info.h"
#include "3d_plugin_manager.h"
@@ -50,6 +42,7 @@
#include <advanced_config.h>
#include <common.h> // For ExpandEnvVarSubstitutions
#include <filename_resolver.h>
#include <mmh3_hash.h>
#include <paths.h>
#include <pgm_base.h>
#include <project.h>
@@ -63,18 +56,6 @@
static std::mutex mutex3D_cache;
static bool isSHA1Same( const unsigned char* shaA, const unsigned char* shaB ) noexcept
{
for( int i = 0; i < 20; ++i )
{
if( shaA[i] != shaB[i] )
return false;
}
return true;
}
static bool checkTag( const char* aTag, void* aPluginMgrPtr )
{
if( nullptr == aTag || nullptr == aPluginMgrPtr )
@@ -86,51 +67,17 @@ static bool checkTag( const char* aTag, void* aPluginMgrPtr )
}
static const wxString sha1ToWXString( const unsigned char* aSHA1Sum )
{
unsigned char uc;
unsigned char tmp;
char sha1[41];
int j = 0;
for( int i = 0; i < 20; ++i )
{
uc = aSHA1Sum[i];
tmp = uc / 16;
if( tmp > 9 )
tmp += 87;
else
tmp += 48;
sha1[j++] = tmp;
tmp = uc % 16;
if( tmp > 9 )
tmp += 87;
else
tmp += 48;
sha1[j++] = tmp;
}
sha1[j] = 0;
return wxString::FromUTF8Unchecked( sha1 );
}
class S3D_CACHE_ENTRY
{
public:
S3D_CACHE_ENTRY();
~S3D_CACHE_ENTRY();
void SetSHA1( const unsigned char* aSHA1Sum );
void SetHash( const HASH_128& aHash );
const wxString GetCacheBaseName();
wxDateTime modTime; // file modification time
unsigned char sha1sum[20];
HASH_128 m_hash;
std::string pluginInfo; // PluginName:Version string
SCENEGRAPH* sceneData;
S3DMODEL* renderData;
@@ -140,7 +87,7 @@ private:
S3D_CACHE_ENTRY( const S3D_CACHE_ENTRY& source );
S3D_CACHE_ENTRY& operator=( const S3D_CACHE_ENTRY& source );
wxString m_CacheBaseName; // base name of cache file (a SHA1 digest)
wxString m_CacheBaseName; // base name of cache file
};
@@ -148,7 +95,7 @@ S3D_CACHE_ENTRY::S3D_CACHE_ENTRY()
{
sceneData = nullptr;
renderData = nullptr;
memset( sha1sum, 0, 20 );
m_hash.Clear();
}
@@ -161,24 +108,16 @@ S3D_CACHE_ENTRY::~S3D_CACHE_ENTRY()
}
void S3D_CACHE_ENTRY::SetSHA1( const unsigned char* aSHA1Sum )
void S3D_CACHE_ENTRY::SetHash( const HASH_128& aHash )
{
if( nullptr == aSHA1Sum )
{
wxLogTrace( MASK_3D_CACHE, wxT( "%s:%s:%d\n * [BUG] NULL passed for aSHA1Sum" ),
__FILE__, __FUNCTION__, __LINE__ );
return;
}
memcpy( sha1sum, aSHA1Sum, 20 );
m_hash = aHash;
}
const wxString S3D_CACHE_ENTRY::GetCacheBaseName()
{
if( m_CacheBaseName.empty() )
m_CacheBaseName = sha1ToWXString( sha1sum );
m_CacheBaseName = m_hash.ToString();
return m_CacheBaseName;
}
@@ -202,12 +141,12 @@ S3D_CACHE::~S3D_CACHE()
SCENEGRAPH* S3D_CACHE::load( const wxString& aModelFile, const wxString& aBasePath,
S3D_CACHE_ENTRY** aCachePtr )
S3D_CACHE_ENTRY** aCachePtr, const EMBEDDED_FILES* aEmbeddedFiles )
{
if( aCachePtr )
*aCachePtr = nullptr;
wxString full3Dpath = m_FNResolver->ResolvePath( aModelFile, aBasePath );
wxString full3Dpath = m_FNResolver->ResolvePath( aModelFile, aBasePath, aEmbeddedFiles );
if( full3Dpath.empty() )
{
@@ -234,13 +173,13 @@ SCENEGRAPH* S3D_CACHE::load( const wxString& aModelFile, const wxString& aBasePa
if( fmdate != mi->second->modTime )
{
unsigned char hashSum[20];
getSHA1( full3Dpath, hashSum );
HASH_128 hashSum;
getHash( full3Dpath, hashSum );
mi->second->modTime = fmdate;
if( !isSHA1Same( hashSum, mi->second->sha1sum ) )
if( hashSum != mi->second->m_hash )
{
mi->second->SetSHA1( hashSum );
mi->second->SetHash( hashSum );
reload = true;
}
}
@@ -272,9 +211,9 @@ SCENEGRAPH* S3D_CACHE::load( const wxString& aModelFile, const wxString& aBasePa
}
SCENEGRAPH* S3D_CACHE::Load( const wxString& aModelFile, const wxString& aBasePath )
SCENEGRAPH* S3D_CACHE::Load( const wxString& aModelFile, const wxString& aBasePath, const EMBEDDED_FILES* aEmbeddedFiles )
{
return load( aModelFile, aBasePath );
return load( aModelFile, aBasePath, nullptr, aEmbeddedFiles );
}
@@ -283,13 +222,13 @@ SCENEGRAPH* S3D_CACHE::checkCache( const wxString& aFileName, S3D_CACHE_ENTRY**
if( aCachePtr )
*aCachePtr = nullptr;
unsigned char sha1sum[20];
HASH_128 hashSum;
S3D_CACHE_ENTRY* ep = new S3D_CACHE_ENTRY;
m_CacheList.push_back( ep );
wxFileName fname( aFileName );
ep->modTime = fname.GetModificationTime();
if( !getSHA1( aFileName, sha1sum ) || m_CacheDir.empty() )
if( !getHash( aFileName, hashSum ) || m_CacheDir.empty() )
{
// just in case we can't get a hash digest (for example, on access issues)
// or we do not have a configured cache file directory, we create an
@@ -327,7 +266,7 @@ SCENEGRAPH* S3D_CACHE::checkCache( const wxString& aFileName, S3D_CACHE_ENTRY**
if( aCachePtr )
*aCachePtr = ep;
ep->SetSHA1( sha1sum );
ep->SetHash( hashSum );
wxString bname = ep->GetCacheBaseName();
wxString cachename = m_CacheDir + bname + wxT( ".3dc" );
@@ -345,7 +284,7 @@ SCENEGRAPH* S3D_CACHE::checkCache( const wxString& aFileName, S3D_CACHE_ENTRY**
}
bool S3D_CACHE::getSHA1( const wxString& aFileName, unsigned char* aSHA1Sum )
bool S3D_CACHE::getHash( const wxString& aFileName, HASH_128& aHash )
{
if( aFileName.empty() )
{
@@ -355,14 +294,6 @@ bool S3D_CACHE::getSHA1( const wxString& aFileName, unsigned char* aSHA1Sum )
return false;
}
if( nullptr == aSHA1Sum )
{
wxLogTrace( MASK_3D_CACHE, wxT( "%s\n * [BUG] NULL pointer passed for aMD5Sum" ),
__FILE__, __FUNCTION__, __LINE__ );
return false;
}
#ifdef _WIN32
FILE* fp = _wfopen( aFileName.wc_str(), L"rb" );
#else
@@ -372,31 +303,15 @@ bool S3D_CACHE::getSHA1( const wxString& aFileName, unsigned char* aSHA1Sum )
if( nullptr == fp )
return false;
boost::uuids::detail::sha1 dblock;
unsigned char block[4096];
MMH3_HASH dblock( 0xA1B2C3D4 );
std::vector<char> block( 4096 );
size_t bsize = 0;
while( ( bsize = fread( &block, 1, 4096, fp ) ) > 0 )
dblock.process_bytes( block, bsize );
while( ( bsize = fread( block.data(), 1, 4096, fp ) ) > 0 )
dblock.add( block );
fclose( fp );
unsigned int digest[5];
dblock.get_digest( digest );
// ensure MSB order
for( int i = 0; i < 5; ++i )
{
int idx = i << 2;
unsigned int tmp = digest[i];
aSHA1Sum[idx+3] = tmp & 0xff;
tmp >>= 8;
aSHA1Sum[idx+2] = tmp & 0xff;
tmp >>= 8;
aSHA1Sum[idx+1] = tmp & 0xff;
tmp >>= 8;
aSHA1Sum[idx] = tmp & 0xff;
}
aHash = dblock.digest();
return true;
}
@@ -631,10 +546,11 @@ void S3D_CACHE::ClosePlugins()
}
S3DMODEL* S3D_CACHE::GetModel( const wxString& aModelFileName, const wxString& aBasePath )
S3DMODEL* S3D_CACHE::GetModel( const wxString& aModelFileName, const wxString& aBasePath,
const EMBEDDED_FILES* aEmbeddedFiles )
{
S3D_CACHE_ENTRY* cp = nullptr;
SCENEGRAPH* sp = load( aModelFileName, aBasePath,&cp );
SCENEGRAPH* sp = load( aModelFileName, aBasePath, &cp, aEmbeddedFiles );
if( !sp )
return nullptr;
+14 -7
View File
@@ -32,12 +32,14 @@
#include "3d_info.h"
#include <core/typeinfo.h>
#include "string_utils.h"
#include <hash_128.h>
#include <list>
#include <map>
#include "plugins/3dapi/c3dmodel.h"
#include <project.h>
#include <wx/string.h>
class EMBEDDED_FILES;
class PGM_BASE;
class S3D_CACHE_ENTRY;
class SCENEGRAPH;
@@ -55,9 +57,9 @@ public:
S3D_CACHE();
virtual ~S3D_CACHE();
KICAD_T Type() noexcept override
PROJECT::ELEM ProjectElementType() noexcept override
{
return S3D_CACHE_T;
return PROJECT::ELEM::S3DCACHE;
}
/**
@@ -93,9 +95,10 @@ 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.
* @return true if the model was successfully loaded, otherwise false.
*/
SCENEGRAPH* Load( const wxString& aModelFile, const wxString& aBasePath );
SCENEGRAPH* Load( const wxString& aModelFile, const wxString& aBasePath, const EMBEDDED_FILES* aEmbeddedFiles );
FILENAME_RESOLVER* GetResolver() noexcept;
@@ -123,9 +126,11 @@ public:
* structure for display by a renderer.
*
* @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.
* @return is a pointer to the render data or NULL if not available.
*/
S3DMODEL* GetModel( const wxString& aModelFileName, const wxString& aBasePath );
S3DMODEL* GetModel( const wxString& aModelFileName, const wxString& aBasePath, const EMBEDDED_FILES* aEmbeddedFiles );
/**
* Delete up old cache files in cache directory.
@@ -153,10 +158,10 @@ private:
* Calculate the SHA1 hash of the given file.
*
* @param aFileName file name (full path).
* @param aSHA1Sum a 20 byte character array to hold the SHA1 hash.
* @param aHash a 128 bit hash to hold the hash.
* @return true on success, otherwise false.
*/
bool getSHA1( const wxString& aFileName, unsigned char* aSHA1Sum );
bool getHash( const wxString& aFileName, HASH_128& aHash );
// load scene data from a cache file
bool loadCacheData( S3D_CACHE_ENTRY* aCacheItem );
@@ -165,7 +170,9 @@ private:
bool saveCacheData( S3D_CACHE_ENTRY* aCacheItem );
// 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 );
SCENEGRAPH* load( const wxString& aModelFile, const wxString& aBasePath,
S3D_CACHE_ENTRY** aCachePtr = nullptr,
const EMBEDDED_FILES* aEmbeddedFiles = nullptr );
/// cache entries
std::list< S3D_CACHE_ENTRY* > m_CacheList;
+43 -9
View File
@@ -155,13 +155,47 @@ void S3D_PLUGIN_MANAGER::loadPlugins( void )
fn.AssignDir( PATHS::GetStockPlugins3DPath() );
checkPluginPath( std::string( fn.GetPathWithSep().ToUTF8() ), searchpaths );
#else
// Search path on OS X is
// (1) Machine /Library/Application Support/kicad/PlugIns/3d
checkPluginPath( PATHS::GetOSXKicadMachineDataDir() + wxT( "/PlugIns/3d" ), searchpaths );
if( wxGetEnv( wxT( "KICAD_RUN_FROM_BUILD_DIR" ), nullptr ) )
{
// Exe will be at <build_dir>/pcbnew/pcbnew.app/Contents/MacOS/pcbnew for standalone
// Plugin will be at <build_dir>/kicad/KiCad.app/Contents/PlugIns/3d
fn.Assign( wxStandardPaths::Get().GetExecutablePath() );
// (2) Bundle kicad.app/Contents/PlugIns/3d
fn.AssignDir( PATHS::GetStockPlugins3DPath() );
checkPluginPath( fn.GetPathWithSep(), searchpaths );
if( fn.GetName() == wxT( "kicad" ) )
{
fn.AppendDir( wxT( ".." ) ); // Contents
}
else
{
fn.AppendDir( wxT( ".." ) ); // Contents
fn.AppendDir( wxT( ".." ) ); // pcbnew.app
fn.AppendDir( wxT( ".." ) ); // pcbnew
fn.AppendDir( wxT( ".." ) ); // Build root
fn.AppendDir( wxT( "kicad" ) );
fn.AppendDir( wxT( "KiCad.app" ) );
fn.AppendDir( wxT( "Contents" ) );
}
fn.AppendDir( wxT( "PlugIns" ) );
fn.AppendDir( wxT( "3d" ) );
fn.MakeAbsolute();
std::string testpath = std::string( fn.GetPathWithSep().ToUTF8() );
checkPluginPath( testpath, searchpaths );
// Also check when running KiCad manager from build dir
}
else
{
// Search path on OS X is
// (1) Machine /Library/Application Support/kicad/PlugIns/3d
checkPluginPath( PATHS::GetOSXKicadMachineDataDir() + wxT( "/PlugIns/3d" ), searchpaths );
// (2) Bundle kicad.app/Contents/PlugIns/3d
fn.AssignDir( PATHS::GetStockPlugins3DPath() );
checkPluginPath( fn.GetPathWithSep(), searchpaths );
}
#endif
std::list< wxString >::iterator sPL = searchpaths.begin();
@@ -202,7 +236,7 @@ void S3D_PLUGIN_MANAGER::loadPlugins( void )
char const* cp = pp->GetFileFilter( i );
if( cp )
addFilterString( wxString::FromUTF8Unchecked( cp ) );
addFilterString( cp );
}
addExtensionMap( pp );
@@ -294,7 +328,7 @@ void S3D_PLUGIN_MANAGER::checkPluginName( const wxString& aPath,
++bl;
}
// prevent loading non-plugin dlls
// prevent loading non-plugin dlls
if( wxGetEnv( wxT( "KICAD_RUN_FROM_BUILD_DIR" ), nullptr ) )
{
if( !path.GetName().StartsWith( "s3d_plugin" )
@@ -382,7 +416,7 @@ void S3D_PLUGIN_MANAGER::addExtensionMap( KICAD_PLUGIN_LDR_3D* aPlugin )
wxString ws;
if( cp )
ws = wxString::FromUTF8Unchecked( cp );
ws = wxString( cp );
if( !ws.empty() )
{
+1 -1
View File
@@ -476,7 +476,7 @@ SGVECTOR S3D::CalcTriNorm( const SGPOINT& p1, const SGPOINT& p2, const SGPOINT&
// normal
tri = glm::cross( pts[1] - pts[0], pts[2] - pts[0] );
glm::normalize( tri );
(void)glm::normalize( tri );
return SGVECTOR( tri.x, tri.y, tri.z );
}
+139 -62
View File
@@ -3,7 +3,7 @@
*
* Copyright (C) 2015-2023 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2023 CERN
* Copyright (C) 1992-2023 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 1992-2024 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
@@ -31,9 +31,11 @@
#include <3d_rendering/raytracing/shapes2D/polygon_2d.h>
#include <board.h>
#include <dialogs/dialog_color_picker.h>
#include <layer_range.h>
#include <3d_math.h>
#include "3d_fastmath.h"
#include <geometry/geometry_utils.h>
#include <lset.h>
#include <pgm_base.h>
#include <settings/settings_manager.h>
#include <wx/log.h>
@@ -95,8 +97,6 @@ BOARD_ADAPTER::BOARD_ADAPTER() :
{
wxLogTrace( m_logTrace, wxT( "BOARD_ADAPTER::BOARD_ADAPTER" ) );
ReloadColorSettings();
m_boardPos = VECTOR2I();
m_boardSize = VECTOR2I();
m_boardCenter = SFVEC3F( 0.0f );
@@ -142,11 +142,13 @@ BOARD_ADAPTER::BOARD_ADAPTER() :
m_offboardPadsFront = nullptr;
m_offboardPadsBack = nullptr;
m_frontPlatedPadPolys = nullptr;
m_backPlatedPadPolys = nullptr;
m_frontPlatedPadAndGraphicPolys = nullptr;
m_backPlatedPadAndGraphicPolys = nullptr;
m_frontPlatedCopperPolys = nullptr;
m_backPlatedCopperPolys = nullptr;
ReloadColorSettings();
if( !g_ColorsLoaded )
{
#define ADD_COLOR( list, r, g, b, a, name ) \
@@ -229,7 +231,7 @@ void BOARD_ADAPTER::ReloadColorSettings() noexcept
try
{
cfg = Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>();
cfg = Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
}
catch( const std::runtime_error& e )
{
@@ -239,6 +241,7 @@ void BOARD_ADAPTER::ReloadColorSettings() noexcept
if( cfg )
{
m_colors = Pgm().GetSettingsManager().GetColorSettings( cfg->m_ColorTheme );
GetBoardEditorCopperLayerColors( cfg );
}
}
@@ -371,6 +374,8 @@ void BOARD_ADAPTER::InitSettings( REPORTER* aStatusReporter, REPORTER* aWarningR
if( !m_board || !m_board->IsFootprintHolder() )
m_biuTo3Dunits *= 1.6f;
ReloadColorSettings();
m_boardBodyThickness3DU = DEFAULT_BOARD_THICKNESS * m_biuTo3Dunits;
m_frontCopperThickness3DU = DEFAULT_COPPER_THICKNESS * m_biuTo3Dunits;
m_backCopperThickness3DU = DEFAULT_COPPER_THICKNESS * m_biuTo3Dunits;
@@ -397,13 +402,18 @@ void BOARD_ADAPTER::InitSettings( REPORTER* aStatusReporter, REPORTER* aWarningR
break;
case BS_ITEM_TYPE_COPPER:
if( item->GetBrdLayerId() == F_Cu )
m_frontCopperThickness3DU = item->GetThickness() * m_biuTo3Dunits;
else if( item->GetBrdLayerId() == B_Cu )
m_backCopperThickness3DU = item->GetThickness() * m_biuTo3Dunits;
else if( item->IsEnabled() )
thickness += item->GetThickness();
{
// The copper thickness must be > 0 to avoid draw issues (divide by 0 for instance)
// We use a minimal arbitrary value = 1 micrometer here:
int copper_thickness = std::max( item->GetThickness(), pcbIUScale.mmToIU( 0.001 ) );
if( item->GetBrdLayerId() == F_Cu )
m_frontCopperThickness3DU = copper_thickness * m_biuTo3Dunits;
else if( item->GetBrdLayerId() == B_Cu )
m_backCopperThickness3DU = copper_thickness * m_biuTo3Dunits;
else if( item->IsEnabled() )
thickness += copper_thickness;
}
break;
default:
@@ -417,8 +427,8 @@ void BOARD_ADAPTER::InitSettings( REPORTER* aStatusReporter, REPORTER* aWarningR
// Init Z position of each layer
// calculate z position for each copper layer
// Zstart = -m_epoxyThickness / 2.0 is the z position of the back (bottom layer) (layer id = 31)
// Zstart = +m_epoxyThickness / 2.0 is the z position of the front (top layer) (layer id = 0)
// Zstart = -m_epoxyThickness / 2.0 is the z position of the back (bottom layer) (layer id = B_Cu)
// Zstart = +m_epoxyThickness / 2.0 is the z position of the front (top layer) (layer id = F_Cu)
// ____==__________==________==______ <- Bottom = +m_epoxyThickness / 2.0,
// | | Top = Bottom + m_copperThickness
@@ -426,39 +436,54 @@ void BOARD_ADAPTER::InitSettings( REPORTER* aStatusReporter, REPORTER* aWarningR
// == == == == <- Bottom = -m_epoxyThickness / 2.0,
// Top = Bottom - m_copperThickness
unsigned int layer;
for( layer = 0; layer < m_copperLayersCount; ++layer )
// Generate the Z position of copper layers
// A copper layer Z position has 2 values: its top Z position and its bottom Z position
for( auto layer_id : LAYER_RANGE( F_Cu, B_Cu, m_copperLayersCount ) )
{
// This approximates internal layer positions (because we're treating all the dielectric
// layers as having the same thickness). But we don't render them anyway so it doesn't
// really matter.
m_layerZcoordBottom[layer] = m_boardBodyThickness3DU / 2.0f -
(m_boardBodyThickness3DU * layer / (m_copperLayersCount - 1) );
int layer_pos; // the position of the copper layer from board top to bottom
if( layer < (m_copperLayersCount / 2) )
m_layerZcoordTop[layer] = m_layerZcoordBottom[layer] + m_frontCopperThickness3DU;
switch( layer_id )
{
case F_Cu: layer_pos = 0; break;
case B_Cu: layer_pos = m_copperLayersCount - 1; break;
default: layer_pos = ( layer_id - B_Cu )/2; break;
};
m_layerZcoordBottom[layer_id] = m_boardBodyThickness3DU / 2.0
- ( m_boardBodyThickness3DU * layer_pos
/ ( m_copperLayersCount - 1 ) );
if( layer_pos < (m_copperLayersCount / 2) )
m_layerZcoordTop[layer_id] = m_layerZcoordBottom[layer_id] + m_frontCopperThickness3DU;
else
m_layerZcoordTop[layer] = m_layerZcoordBottom[layer] - m_backCopperThickness3DU;
m_layerZcoordTop[layer_id] = m_layerZcoordBottom[layer_id] - m_backCopperThickness3DU;
}
#define layerThicknessMargin 1.1
const float zpos_offset = m_nonCopperLayerThickness3DU * layerThicknessMargin;
// Fill remaining unused copper layers and back layer zpos with -m_boardBodyThickness / 2.0
for( ; layer < MAX_CU_LAYERS; layer++ )
{
m_layerZcoordBottom[layer] = -( m_boardBodyThickness3DU / 2.0f );
m_layerZcoordTop[layer] = -( m_boardBodyThickness3DU / 2.0f ) - m_backCopperThickness3DU;
}
// This is the top of the copper layer thickness.
const float zpos_copperTop_back = m_layerZcoordTop[B_Cu];
const float zpos_copperTop_front = m_layerZcoordTop[F_Cu];
// calculate z position for each non copper layer
// 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++ )
{
if( IsCopperLayer( (PCB_LAYER_ID)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( int layer_id = MAX_CU_LAYERS; layer_id < PCB_LAYER_ID_COUNT; ++layer_id )
for( PCB_LAYER_ID layer_id : { B_Adhes, B_Mask, B_Paste, F_Adhes, F_Mask, F_Paste, B_SilkS, F_SilkS } )
{
float zposTop;
float zposBottom;
@@ -505,14 +530,11 @@ void BOARD_ADAPTER::InitSettings( REPORTER* aStatusReporter, REPORTER* aWarningR
zposTop = zposBottom + m_nonCopperLayerThickness3DU;
break;
// !TODO: review
default:
zposTop = zpos_copperTop_front + (layer_id - MAX_CU_LAYERS + 3.0f) * zpos_offset;
zposBottom = zposTop - m_nonCopperLayerThickness3DU;
break;
}
m_layerZcoordTop[layer_id] = zposTop;
m_layerZcoordTop[layer_id] = zposTop;
m_layerZcoordBottom[layer_id] = zposBottom;
}
@@ -531,7 +553,7 @@ void BOARD_ADAPTER::InitSettings( REPORTER* aStatusReporter, REPORTER* aWarningR
m_boardBoundingBox = BBOX_3D( boardMin, boardMax );
#ifdef PRINT_STATISTICS_3D_VIEWER
unsigned stats_startCreateBoardPolyTime = GetRunningMicroSecs();
int64_t stats_startCreateBoardPolyTime = GetRunningMicroSecs();
#endif
if( aStatusReporter )
@@ -586,17 +608,42 @@ std::map<int, COLOR4D> BOARD_ADAPTER::GetDefaultColors() const
}
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;
if( m_Cfg->m_CurrentPreset == FOLLOW_PCB || m_Cfg->m_CurrentPreset == FOLLOW_PLOT_SETTINGS )
if( LAYER_PRESET_3D* preset = m_Cfg->FindPreset( m_Cfg->m_CurrentPreset ) )
{
colors = GetDefaultColors();
colors = preset->colors;
}
else
{
COLOR_SETTINGS* settings = Pgm().GetSettingsManager().GetColorSettings();
if( !m_board )
return colors;
for( const auto& [ layer, defaultColor /* unused */ ] : GetDefaultColors() )
colors[ layer ] = settings->GetColor( layer );
}
if( m_Cfg->m_UseStackupColors && m_board )
{
const BOARD_STACKUP& stackup = m_board->GetDesignSettings().GetStackupDescriptor();
KIGFX::COLOR4D bodyColor( 0, 0, 0, 0 );
@@ -684,29 +731,13 @@ std::map<int, COLOR4D> BOARD_ADAPTER::GetLayerColors() const
{
colors[ LAYER_3D_COPPER_TOP ] = findColor( wxT( "Silver" ), g_FinishColors );
}
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
PCBNEW_SETTINGS* pcbnewSettings = mgr.GetAppSettings<PCBNEW_SETTINGS>();
COLOR_SETTINGS* pcbnewColors = mgr.GetColorSettings( pcbnewSettings->m_ColorTheme );
colors[ LAYER_3D_USER_DRAWINGS ] = pcbnewColors->GetColor( Dwgs_User );
colors[ LAYER_3D_USER_COMMENTS ] = pcbnewColors->GetColor( Cmts_User );
colors[ LAYER_3D_USER_ECO1 ] = pcbnewColors->GetColor( Eco1_User );
colors[ LAYER_3D_USER_ECO2 ] = pcbnewColors->GetColor( Eco2_User );
}
else if( LAYER_PRESET_3D* preset = m_Cfg->FindPreset( m_Cfg->m_CurrentPreset ) )
{
return preset->colors;
}
else
{
COLOR_SETTINGS* settings = Pgm().GetSettingsManager().GetColorSettings();
for( const auto& [ layer, color ] : GetDefaultColors() )
colors[ layer ] = settings->GetColor( layer );
}
colors[ LAYER_3D_COPPER_BOTTOM ] = colors[ LAYER_3D_COPPER_TOP ];
for( const auto& [layer, val] : m_ColorOverrides )
colors[layer] = val;
return colors;
}
@@ -717,6 +748,8 @@ void BOARD_ADAPTER::SetLayerColors( const std::map<int, COLOR4D>& aColors )
for( const auto& [ layer, color ] : aColors )
settings->SetColor( layer, color );
Pgm().GetSettingsManager().SaveColorSettings( settings, "3d_viewer" );
}
@@ -861,6 +894,42 @@ std::bitset<LAYER_3D_END> BOARD_ADAPTER::GetVisibleLayers() const
}
std::bitset<LAYER_3D_END> BOARD_ADAPTER::GetDefaultVisibleLayers() const
{
std::bitset<LAYER_3D_END> ret;
ret.set( LAYER_3D_BOARD, true );
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_SOLDERMASK_TOP, true );
ret.set( LAYER_3D_SOLDERMASK_BOTTOM, true );
ret.set( LAYER_3D_SOLDERPASTE, true );
ret.set( LAYER_3D_ADHESIVE, true );
ret.set( LAYER_3D_USER_COMMENTS, false );
ret.set( LAYER_3D_USER_DRAWINGS, false );
ret.set( LAYER_3D_USER_ECO1, false );
ret.set( LAYER_3D_USER_ECO2, false );
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, false );
ret.set( LAYER_3D_MODELS_MARKED_DNP, false );
ret.set( LAYER_3D_BOUNDING_BOXES, false );
ret.set( LAYER_3D_OFF_BOARD_SILK, false );
ret.set( LAYER_3D_AXES, true );
return ret;
}
bool BOARD_ADAPTER::createBoardPolygon( wxString* aErrorMsg )
{
m_board_poly.RemoveAllContours();
@@ -911,9 +980,17 @@ bool BOARD_ADAPTER::createBoardPolygon( wxString* aErrorMsg )
float BOARD_ADAPTER::GetFootprintZPos( bool aIsFlipped ) const
{
if( aIsFlipped )
return m_layerZcoordBottom[B_Paste];
{
if( auto it = m_layerZcoordBottom.find( B_Paste ); it != m_layerZcoordBottom.end() )
return it->second;
}
else
return m_layerZcoordTop[F_Paste];
{
if( auto it = m_layerZcoordTop.find( F_Paste ); it != m_layerZcoordTop.end() )
return it->second;
}
return 0.0;
}
+40 -12
View File
@@ -3,7 +3,7 @@
*
* Copyright (C) 2015-2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2023 CERN
* Copyright (C) 1992-2023 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 1992-2024 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
@@ -32,7 +32,7 @@
#include "../3d_rendering/raytracing/accelerators/container_3d.h"
#include "../3d_rendering/raytracing/shapes3D/bbox_3d.h"
#include <gal/3d/camera.h>
#include "../3d_enums.h"
#include <3d_enums.h>
#include "../3d_cache/3d_cache.h"
#include "../common_ogl/ogl_attr_list.h"
#include "../3d_viewer/eda_3d_viewer_settings.h"
@@ -42,6 +42,8 @@
#include <pcb_track.h>
#include <pcb_base_frame.h>
#include <pcb_text.h>
#include <pcb_textbox.h>
#include <pcb_table.h>
#include <pcb_shape.h>
#include <pcb_dimension.h>
#include <zone.h>
@@ -105,11 +107,21 @@ public:
void ReloadColorSettings() noexcept;
/**
* Build a color list which is used to store colors layers
*/
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 );
std::bitset<LAYER_3D_END> GetVisibleLayers() const;
std::bitset<LAYER_3D_END> GetDefaultVisibleLayers() const;
void SetVisibleLayers( const std::bitset<LAYER_3D_END>& aLayers );
/**
@@ -224,7 +236,12 @@ public:
*/
float GetLayerTopZPos( PCB_LAYER_ID aLayerId ) const noexcept
{
return m_layerZcoordTop[aLayerId];
auto it = m_layerZcoordTop.find( aLayerId );
if( it != m_layerZcoordTop.end() )
return it->second;
else
return -( m_boardBodyThickness3DU / 2.0f );
}
/**
@@ -235,7 +252,12 @@ public:
*/
float GetLayerBottomZPos( PCB_LAYER_ID aLayerId ) const noexcept
{
return m_layerZcoordBottom[aLayerId];
auto it = m_layerZcoordBottom.find( aLayerId );
if( it != m_layerZcoordBottom.end() )
return it->second;
else
return -( m_boardBodyThickness3DU / 2.0f ) - m_backCopperThickness3DU;
}
/**
@@ -330,8 +352,8 @@ public:
*/
const MAP_POLY& GetPolyMap() const noexcept { return m_layers_poly; }
const SHAPE_POLY_SET* GetFrontPlatedPadPolys() { return m_frontPlatedPadPolys; }
const SHAPE_POLY_SET* GetBackPlatedPadPolys() { return m_backPlatedPadPolys; }
const SHAPE_POLY_SET* GetFrontPlatedPadAndGraphicPolys() { return m_frontPlatedPadAndGraphicPolys; }
const SHAPE_POLY_SET* GetBackPlatedPadAndGraphicPolys() { return m_backPlatedPadAndGraphicPolys; }
const MAP_POLY& GetHoleIdPolysMap() const noexcept { return m_layerHoleIdPolys; }
const MAP_POLY& GetHoleOdPolysMap() const noexcept { return m_layerHoleOdPolys; }
@@ -376,6 +398,9 @@ private:
void addShape( const PCB_TEXTBOX* aTextBox, CONTAINER_2D_BASE* aContainer,
const BOARD_ITEM* aOwner );
void addTable( const PCB_TABLE* aTable, CONTAINER_2D_BASE* aContainer,
const BOARD_ITEM* aOwner );
void addSolidAreasShapes( const ZONE* aZone, CONTAINER_2D_BASE* aDstContainer,
PCB_LAYER_ID aLayerId );
@@ -424,6 +449,9 @@ public:
SFVEC4F m_ECO1Color;
SFVEC4F m_ECO2Color;
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
private:
BOARD* m_board;
S3D_CACHE* m_3dModelManager;
@@ -437,8 +465,8 @@ private:
MAP_POLY m_layers_poly; ///< Amalgamated polygon contours for various types
///< of items
SHAPE_POLY_SET* m_frontPlatedPadPolys;
SHAPE_POLY_SET* m_backPlatedPadPolys;
SHAPE_POLY_SET* m_frontPlatedPadAndGraphicPolys;
SHAPE_POLY_SET* m_backPlatedPadAndGraphicPolys;
SHAPE_POLY_SET* m_frontPlatedCopperPolys;
SHAPE_POLY_SET* m_backPlatedCopperPolys;
@@ -470,11 +498,11 @@ private:
double m_biuTo3Dunits; ///< Scale factor to convert board internal units
///< to 3D units normalized between -1.0 and 1.0.
std::array<float, PCB_LAYER_ID_COUNT> m_layerZcoordTop; ///< Top (End) Z position of each
///< layer in 3D units.
std::map<PCB_LAYER_ID, float> m_layerZcoordTop; ///< Top (End) Z position of each
///< layer in 3D units.
std::array<float, PCB_LAYER_ID_COUNT> m_layerZcoordBottom; ///< Bottom (Start) Z position of
///< each layer in 3D units.
std::map<PCB_LAYER_ID, float> m_layerZcoordBottom; ///< Bottom (Start) Z position of
///< each layer in 3D units.
float m_frontCopperThickness3DU;
float m_backCopperThickness3DU;
@@ -3,7 +3,7 @@
*
* Copyright (C) 2015-2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2023 CERN
* Copyright (C) 1992-2023 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 1992-2024 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
@@ -34,10 +34,12 @@
#include "../3d_rendering/raytracing/shapes2D/round_segment_2d.h"
#include "../3d_rendering/raytracing/shapes2D/triangle_2d.h"
#include <board_adapter.h>
#include <board.h>
#include <footprint.h>
#include <pad.h>
#include <pcb_text.h>
#include <pcb_textbox.h>
#include <pcb_table.h>
#include <board_design_settings.h>
#include <pcb_painter.h> // for PCB_RENDER_SETTINGS
#include <zone.h>
@@ -225,12 +227,17 @@ void BOARD_ADAPTER::addFootprintShapes( const FOOTPRINT* aFootprint, CONTAINER_2
PCB_TEXTBOX* textbox = static_cast<PCB_TEXTBOX*>( item );
if( textbox->GetLayer() == aLayerId )
{
if( textbox->IsBorderEnabled() )
addShape( textbox, aContainer, aFootprint );
addShape( textbox, aContainer, aFootprint );
addText( textbox, aContainer, aFootprint );
}
break;
}
case PCB_TABLE_T:
{
PCB_TABLE* table = static_cast<PCB_TABLE*>( item );
if( table->GetLayer() == aLayerId )
addTable( table, aContainer, aFootprint );
break;
}
@@ -374,6 +381,13 @@ void BOARD_ADAPTER::createPadWithMargin( const PAD* aPad, CONTAINER_2D_BASE* aCo
// Remove group membership from dummy item before deleting
dummy.SetParentGroup( nullptr );
}
else if( aPad->GetShape() == PAD_SHAPE::CUSTOM )
{
// A custom pad can have many complex subshape items. To avoid issues, use its
// final polygon shape, not its basic shape set. One cannot apply the clearance
// to each subshape: it does no work
aPad->TransformShapeToPolygon( poly, aLayer, 0, maxError );
}
else
{
auto padShapes = std::static_pointer_cast<SHAPE_COMPOUND>( aPad->GetEffectiveShape() );
@@ -422,7 +436,7 @@ void BOARD_ADAPTER::createPadWithMargin( const PAD* aPad, CONTAINER_2D_BASE* aCo
break;
case SH_POLY_SET:
poly = *(SHAPE_POLY_SET*) shape;
poly.Append( *static_cast<const SHAPE_POLY_SET*>( shape ) );
break;
case SH_ARC:
@@ -610,7 +624,7 @@ void BOARD_ADAPTER::addShape( const PCB_SHAPE* aShape, CONTAINER_2D_BASE* aConta
float innerR3DU = TO_3DU( aShape->GetRadius() ) - linewidth3DU / 2.0;
float outerR3DU = TO_3DU( aShape->GetRadius() ) + linewidth3DU / 2.0;
if( aShape->IsFilled() )
if( aShape->IsFilled() || innerR3DU <= 0.0 )
addFILLED_CIRCLE_2D( aContainer, center3DU, outerR3DU, *aOwner );
else
addRING_2D( aContainer, center3DU, innerR3DU, outerR3DU, *aOwner );
@@ -726,7 +740,9 @@ void BOARD_ADAPTER::addShape( const PCB_TEXTBOX* aTextBox, CONTAINER_2D_BASE* aC
// So for polygon, we use PCB_SHAPE::TransformShapeToPolygon
if( aTextBox->GetShape() == SHAPE_T::RECTANGLE )
{
addShape( static_cast<const PCB_SHAPE*>( aTextBox ), aContainer, aOwner );
}
else
{
SHAPE_POLY_SET polyList;
@@ -739,6 +755,17 @@ 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
for( PCB_TABLECELL* cell : aTable->GetCells() )
addText( cell, aContainer, aOwner );
}
void BOARD_ADAPTER::addSolidAreasShapes( const ZONE* aZone, CONTAINER_2D_BASE* aContainer,
PCB_LAYER_ID aLayerId )
{
+88 -43
View File
@@ -3,7 +3,7 @@
*
* Copyright (C) 2015-2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2023 CERN
* Copyright (C) 1992-2023 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 1992-2024 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
@@ -36,10 +36,14 @@
#include "../3d_rendering/raytracing/shapes2D/filled_circle_2d.h"
#include "raytracing/shapes2D/triangle_2d.h"
#include <board_design_settings.h>
#include <board.h>
#include <footprint.h>
#include <layer_range.h>
#include <lset.h>
#include <pad.h>
#include <pcb_text.h>
#include <pcb_textbox.h>
#include <pcb_table.h>
#include <pcb_shape.h>
#include <zone.h>
#include <convert_basic_shapes_to_polygon.h>
@@ -117,8 +121,8 @@ void BOARD_ADAPTER::destroyLayers()
DELETE_AND_FREE_MAP( m_layers_poly );
DELETE_AND_FREE( m_frontPlatedPadPolys )
DELETE_AND_FREE( m_backPlatedPadPolys )
DELETE_AND_FREE( m_frontPlatedPadAndGraphicPolys )
DELETE_AND_FREE( m_backPlatedPadAndGraphicPolys )
DELETE_AND_FREE( m_frontPlatedCopperPolys )
DELETE_AND_FREE( m_backPlatedCopperPolys )
@@ -154,14 +158,11 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
// https://github.com/KiCad/kicad-source-mirror/blob/master/3d-viewer/3d_draw.cpp#L692
#ifdef PRINT_STATISTICS_3D_VIEWER
unsigned stats_startCopperLayersTime = GetRunningMicroSecs();
int64_t stats_startCopperLayersTime = GetRunningMicroSecs();
unsigned start_Time = stats_startCopperLayersTime;
int64_t start_Time = stats_startCopperLayersTime;
#endif
PCB_LAYER_ID cu_seq[MAX_CU_LAYERS];
LSET cu_set = LSET::AllCuMask( m_copperLayersCount );
EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS& cfg = m_Cfg->m_Render;
std::bitset<LAYER_3D_END> visibilityFlags = GetVisibleLayers();
@@ -185,8 +186,12 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
for( PCB_TRACK* track : m_board->Tracks() )
{
if( !Is3dLayerEnabled( track->GetLayer(), visibilityFlags ) ) // Skip non enabled layers
// Skip tracks (not vias theyt are on more than one layer ) on disabled layers
if( track->Type() != PCB_VIA_T
&& !Is3dLayerEnabled( track->GetLayer(), visibilityFlags ) )
{
continue;
}
// Note: a PCB_TRACK holds normal segment tracks and also vias circles (that have also
// drill values)
@@ -217,13 +222,8 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
layer_ids.clear();
layer_ids.reserve( m_copperLayersCount );
for( unsigned i = 0; i < arrayDim( cu_seq ); ++i )
cu_seq[i] = ToLAYER_ID( B_Cu - i );
for( LSEQ cu = cu_set.Seq( cu_seq, arrayDim( cu_seq ) ); cu; ++cu )
for( PCB_LAYER_ID layer : LAYER_RANGE( F_Cu,B_Cu, m_copperLayersCount) )
{
const PCB_LAYER_ID layer = *cu;
if( !Is3dLayerEnabled( layer, visibilityFlags ) ) // Skip non enabled layers
continue;
@@ -239,10 +239,10 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
}
}
if( cfg.differentiate_plated_copper )
if( cfg.DifferentiatePlatedCopper() )
{
m_frontPlatedPadPolys = new SHAPE_POLY_SET;
m_backPlatedPadPolys = new SHAPE_POLY_SET;
m_frontPlatedPadAndGraphicPolys = new SHAPE_POLY_SET;
m_backPlatedPadAndGraphicPolys = new SHAPE_POLY_SET;
m_frontPlatedCopperPolys = new SHAPE_POLY_SET;
m_backPlatedCopperPolys = new SHAPE_POLY_SET;
@@ -353,12 +353,12 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
}
}
if( cfg.differentiate_plated_copper && layer == F_Cu )
if( cfg.DifferentiatePlatedCopper() && layer == F_Cu )
{
track->TransformShapeToPolygon( *m_frontPlatedCopperPolys, F_Cu, 0, maxError,
ERROR_INSIDE );
}
else if( cfg.differentiate_plated_copper && layer == B_Cu )
else if( cfg.DifferentiatePlatedCopper() && layer == B_Cu )
{
track->TransformShapeToPolygon( *m_backPlatedCopperPolys, B_Cu, 0, maxError,
ERROR_INSIDE );
@@ -553,7 +553,7 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
// ADD PADS
for( FOOTPRINT* footprint : m_board->Footprints() )
{
addPads( footprint, layerContainer, layer, cfg.differentiate_plated_copper, false );
addPads( footprint, layerContainer, layer, cfg.DifferentiatePlatedCopper(), false );
// Micro-wave footprints may have items on copper layers
addFootprintShapes( footprint, layerContainer, layer, visibilityFlags );
@@ -575,21 +575,21 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
// 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.differentiate_plated_copper, false );
true, cfg.DifferentiatePlatedCopper(), false );
transformFPShapesToPolySet( footprint, layer, *layerPoly, maxError, ERROR_INSIDE );
}
}
if( cfg.differentiate_plated_copper )
if( cfg.DifferentiatePlatedCopper() )
{
// ADD PLATED PADS contours
for( FOOTPRINT* footprint : m_board->Footprints() )
{
footprint->TransformPadsToPolySet( *m_frontPlatedPadPolys, F_Cu, 0, maxError,
footprint->TransformPadsToPolySet( *m_frontPlatedPadAndGraphicPolys, F_Cu, 0, maxError,
ERROR_INSIDE, true, false, true );
footprint->TransformPadsToPolySet( *m_backPlatedPadPolys, B_Cu, 0, maxError,
footprint->TransformPadsToPolySet( *m_backPlatedPadAndGraphicPolys, B_Cu, 0, maxError,
ERROR_INSIDE, true, false, true );
}
}
@@ -622,6 +622,10 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
addShape( static_cast<PCB_TEXTBOX*>( item ), layerContainer, item );
break;
case PCB_TABLE_T:
addTable( static_cast<PCB_TABLE*>( item ), layerContainer, item );
break;
case PCB_DIM_ALIGNED_T:
case PCB_DIM_CENTER_T:
case PCB_DIM_RADIAL_T:
@@ -635,6 +639,17 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
item->Type() );
break;
}
// add also this shape to the plated copper polygon list if required
if( cfg.DifferentiatePlatedCopper() )
{
if( layer == F_Cu )
item->TransformShapeToPolygon( *m_frontPlatedCopperPolys, F_Cu,
0, maxError, ERROR_INSIDE );
else if( layer == B_Cu )
item->TransformShapeToPolygon( *m_backPlatedCopperPolys, B_Cu,
0, maxError, ERROR_INSIDE );
}
}
}
@@ -675,6 +690,10 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
break;
}
case PCB_TABLE_T:
// JEY TODO: tables
break;
default:
wxLogTrace( m_logTrace, wxT( "createLayers: item type: %d not implemented" ),
item->Type() );
@@ -699,12 +718,12 @@ 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.differentiate_plated_copper && layer == F_Cu )
if( cfg.DifferentiatePlatedCopper() && layer == F_Cu )
{
zone->TransformShapeToPolygon( *m_frontPlatedCopperPolys, F_Cu, 0, maxError,
ERROR_INSIDE );
}
else if( cfg.differentiate_plated_copper && layer == B_Cu )
else if( cfg.DifferentiatePlatedCopper() && layer == B_Cu )
{
zone->TransformShapeToPolygon( *m_backPlatedCopperPolys, B_Cu, 0, maxError,
ERROR_INSIDE );
@@ -775,7 +794,7 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
// draw graphic items, on technical layers
static const PCB_LAYER_ID techLayerList[] = {
LSEQ techLayerList = LSET::AllNonCuMask().Seq( {
B_Adhes,
F_Adhes,
B_Paste,
@@ -790,17 +809,17 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
Cmts_User,
Eco1_User,
Eco2_User
};
} );
std::bitset<LAYER_3D_END> enabledFlags = visibilityFlags;
if( cfg.subtract_mask_from_silk || cfg.differentiate_plated_copper )
if( cfg.subtract_mask_from_silk || cfg.DifferentiatePlatedCopper() )
{
enabledFlags.set( LAYER_3D_SOLDERMASK_TOP );
enabledFlags.set( LAYER_3D_SOLDERMASK_BOTTOM );
}
for( PCB_LAYER_ID layer : LSET::AllNonCuMask().Seq( techLayerList, arrayDim( techLayerList ) ) )
for( PCB_LAYER_ID layer : techLayerList )
{
if( aStatusReporter )
aStatusReporter->Report( wxString::Format( _( "Build Tech layer %d" ), (int) layer ) );
@@ -836,6 +855,10 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
addShape( static_cast<PCB_TEXTBOX*>( item ), layerContainer, item );
break;
case PCB_TABLE_T:
// JEY TODO: tables
break;
case PCB_DIM_ALIGNED_T:
case PCB_DIM_CENTER_T:
case PCB_DIM_RADIAL_T:
@@ -850,14 +873,18 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
}
// Add via tech layers
if( ( layer == F_Mask || layer == B_Mask ) && !m_board->GetTentVias() )
if( ( layer == F_Mask || layer == B_Mask ) )
{
int maskExpansion = GetBoard()->GetDesignSettings().m_SolderMaskExpansion;
// Only vias on a external copper layer can have a solder mask
for( PCB_TRACK* track : m_board->Tracks() )
{
PCB_LAYER_ID copper_layer = layer == F_Mask ? F_Cu : B_Cu;
if( track->Type() == PCB_VIA_T
&& static_cast<const PCB_VIA*>( track )->FlashLayer( layer ) )
&& static_cast<const PCB_VIA*>( track )->FlashLayer( copper_layer )
&& !static_cast<const PCB_VIA*>( track )->IsTented( layer ) )
{
createViaWithMargin( track, layerContainer, maskExpansion );
}
@@ -901,7 +928,7 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
// Add item contours. We need these if we're building vertical walls or if this is a
// mask layer and we're differentiating copper from plated copper.
if( ( cfg.engine == RENDER_ENGINE::OPENGL && cfg.opengl_copper_thickness )
|| ( cfg.differentiate_plated_copper && ( layer == F_Mask || layer == B_Mask ) ) )
|| ( cfg.DifferentiatePlatedCopper() && ( layer == F_Mask || layer == B_Mask ) ) )
{
// DRAWINGS
for( BOARD_ITEM* item : m_board->Drawings() )
@@ -931,20 +958,25 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
break;
}
case PCB_TABLE_T:
// JEY TODO: tables
break;
default:
break;
}
}
// NON-TENTED VIAS
if( ( layer == F_Mask || layer == B_Mask ) && !m_board->GetTentVias() )
if( ( layer == F_Mask || layer == B_Mask ) )
{
int maskExpansion = GetBoard()->GetDesignSettings().m_SolderMaskExpansion;
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 )->FlashLayer( layer )
&& !static_cast<const PCB_VIA*>( track )->IsTented( layer ) )
{
track->TransformShapeToPolygon( *layerPoly, layer, maskExpansion, maxError,
ERROR_INSIDE );
@@ -1021,7 +1053,7 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
if( aStatusReporter )
aStatusReporter->Report( _( "Simplifying copper layer polygons" ) );
if( cfg.differentiate_plated_copper )
if( cfg.DifferentiatePlatedCopper() )
{
if( aStatusReporter )
aStatusReporter->Report( _( "Calculating plated copper" ) );
@@ -1039,21 +1071,33 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
SHAPE_POLY_SET::PM_FAST );
}
// SUBTRACT PLATED COPPER FROM (UNPLATED) COPPER
// 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_frontPlatedPadPolys, SHAPE_POLY_SET::PM_FAST );
m_layers_poly[F_Cu]->BooleanSubtract( *m_frontPlatedPadAndGraphicPolys, SHAPE_POLY_SET::PM_FAST );
m_layers_poly[F_Cu]->BooleanSubtract( *m_frontPlatedCopperPolys, SHAPE_POLY_SET::PM_FAST );
hasF_Cu = true;
}
if( m_layers_poly.find( B_Cu ) != m_layers_poly.end() )
{
m_layers_poly[B_Cu]->BooleanSubtract( *m_backPlatedPadPolys, SHAPE_POLY_SET::PM_FAST );
m_layers_poly[B_Cu]->BooleanSubtract( *m_backPlatedPadAndGraphicPolys, SHAPE_POLY_SET::PM_FAST );
m_layers_poly[B_Cu]->BooleanSubtract( *m_backPlatedCopperPolys, SHAPE_POLY_SET::PM_FAST );
hasB_Cu = true;
}
m_frontPlatedPadPolys->Simplify( SHAPE_POLY_SET::PM_FAST );
m_backPlatedPadPolys->Simplify( SHAPE_POLY_SET::PM_FAST );
// 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( SHAPE_POLY_SET::PM_FAST );
m_backPlatedPadAndGraphicPolys->Simplify( SHAPE_POLY_SET::PM_FAST );
m_frontPlatedCopperPolys->Simplify( SHAPE_POLY_SET::PM_FAST );
m_backPlatedCopperPolys->Simplify( SHAPE_POLY_SET::PM_FAST );
@@ -1080,7 +1124,7 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
std::vector<PCB_LAYER_ID> &selected_layer_id = layer_ids;
std::vector<PCB_LAYER_ID> layer_id_without_F_and_B;
if( cfg.differentiate_plated_copper )
if( cfg.DifferentiatePlatedCopper() )
{
layer_id_without_F_and_B.clear();
layer_id_without_F_and_B.reserve( layer_ids.size() );
@@ -1123,6 +1167,7 @@ void BOARD_ADAPTER::createLayers( REPORTER* aStatusReporter )
if( layerPoly != m_layers_poly.end() )
{
// This will make a union of all added contours
layerPoly->second->ClearArcs();
layerPoly->second->Simplify( SHAPE_POLY_SET::PM_FAST );
}
}
+96 -59
View File
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2015-2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 1992-2023 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 1992-2024 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
@@ -29,10 +29,11 @@
#include "../common_ogl/ogl_utils.h"
#include "eda_3d_canvas.h"
#include <eda_3d_viewer_frame.h>
#include <3d_rendering/raytracing/render_3d_raytrace.h>
#include <3d_rendering/raytracing/render_3d_raytrace_gl.h>
#include <3d_rendering/opengl/render_3d_opengl.h>
#include <3d_viewer_id.h>
#include <advanced_config.h>
#include <build_version.h>
#include <board.h>
#include <reporter.h>
#include <gal/opengl/gl_context_mgr.h>
@@ -72,6 +73,11 @@ BEGIN_EVENT_TABLE( EDA_3D_CANVAS, HIDPI_GL_3D_CANVAS )
EVT_MOTION( EDA_3D_CANVAS::OnMouseMove )
EVT_MAGNIFY( EDA_3D_CANVAS::OnMagnify )
// touch gesture events
EVT_GESTURE_ZOOM( wxID_ANY, EDA_3D_CANVAS::OnZoomGesture )
EVT_GESTURE_PAN( wxID_ANY, EDA_3D_CANVAS::OnPanGesture )
EVT_GESTURE_ROTATE( wxID_ANY, EDA_3D_CANVAS::OnRotateGesture )
// other events
EVT_ERASE_BACKGROUND( EDA_3D_CANVAS::OnEraseBackground )
EVT_CUSTOM(wxEVT_REFRESH_CUSTOM_COMMAND, ID_CUSTOM_EVENT_1, EDA_3D_CANVAS::OnRefreshRequest )
@@ -81,11 +87,11 @@ BEGIN_EVENT_TABLE( EDA_3D_CANVAS, HIDPI_GL_3D_CANVAS )
END_EVENT_TABLE()
EDA_3D_CANVAS::EDA_3D_CANVAS( wxWindow* aParent, const int* aAttribList,
EDA_3D_CANVAS::EDA_3D_CANVAS( wxWindow* aParent, const wxGLAttributes& aGLAttribs,
BOARD_ADAPTER& aBoardAdapter, CAMERA& aCamera,
S3D_CACHE* a3DCachePointer ) :
HIDPI_GL_3D_CANVAS( EDA_DRAW_PANEL_GAL::GetVcSettings(), aCamera, aParent, wxID_ANY,
aAttribList, wxDefaultPosition,
HIDPI_GL_3D_CANVAS( EDA_DRAW_PANEL_GAL::GetVcSettings(), aCamera, aParent, aGLAttribs,
wxID_ANY, wxDefaultPosition,
wxDefaultSize, wxFULL_REPAINT_ON_RESIZE ),
m_eventDispatcher( nullptr ),
m_parentStatusBar( nullptr ),
@@ -119,7 +125,7 @@ EDA_3D_CANVAS::EDA_3D_CANVAS( wxWindow* aParent, const int* aAttribList,
m_is_currently_painting.clear();
m_3d_render_raytracing = new RENDER_3D_RAYTRACE( this, m_boardAdapter, m_camera );
m_3d_render_raytracing = new RENDER_3D_RAYTRACE_GL( this, m_boardAdapter, m_camera );
m_3d_render_opengl = new RENDER_3D_OPENGL( this, m_boardAdapter, m_camera );
wxASSERT( m_3d_render_raytracing != nullptr );
@@ -143,6 +149,10 @@ EDA_3D_CANVAS::EDA_3D_CANVAS( wxWindow* aParent, const int* aAttribList,
wxASSERT( a3DCachePointer != nullptr );
m_boardAdapter.Set3dCacheManager( a3DCachePointer );
#ifdef __WXMSW__
EnableTouchEvents( wxTOUCH_ZOOM_GESTURE | wxTOUCH_PAN_GESTURES | wxTOUCH_ROTATE_GESTURE );
#endif
const wxEventType events[] =
{
// Binding both EVT_CHAR and EVT_CHAR_HOOK ensures that all key events,
@@ -229,6 +239,9 @@ bool EDA_3D_CANVAS::initializeOpenGL()
From_UTF8( (char*) glewGetString( GLEW_VERSION ) ) );
}
SetOpenGLInfo( (const char*) glGetString( GL_VENDOR ), (const char*) glGetString( GL_RENDERER ),
(const char*) glGetString( GL_VERSION ) );
wxString version = From_UTF8( (char *) glGetString( GL_VERSION ) );
wxLogTrace( m_logTrace, wxT( "EDA_3D_CANVAS::%s OpenGL version string %s." ),
@@ -366,13 +379,10 @@ void EDA_3D_CANVAS::DoRePaint()
if( !GetParent()->GetParent()->IsShownOnScreen() )
return; // The parent board editor frame is no more alive
wxString err_messages;
// !TODO: implement error reporter
wxString err_messages;
INFOBAR_REPORTER warningReporter( m_parentInfoBar );
STATUSBAR_REPORTER activityReporter( m_parentStatusBar, EDA_3D_VIEWER_STATUSBAR::ACTIVITY );
unsigned strtime = GetRunningMicroSecs();
int64_t start_time = GetRunningMicroSecs();
// "Makes the OpenGL state that is represented by the OpenGL rendering
// context context current, i.e. it will be used by all subsequent OpenGL calls.
@@ -464,7 +474,7 @@ void EDA_3D_CANVAS::DoRePaint()
if( m_camera_is_moving )
{
const unsigned curtime_delta = GetRunningMicroSecs() - m_strtime_camera_movement;
const int64_t curtime_delta = GetRunningMicroSecs() - m_strtime_camera_movement;
curtime_delta_s = (curtime_delta / 1e6) * m_camera_moving_speed;
m_camera.Interpolate( curtime_delta_s );
@@ -548,7 +558,7 @@ void EDA_3D_CANVAS::DoRePaint()
if( m_mouse_was_moved || m_camera_is_moving )
{
// Calculation time in milliseconds
const double calculation_time = (double)( GetRunningMicroSecs() - strtime) / 1e3;
const double calculation_time = (double)( GetRunningMicroSecs() - start_time ) / 1e3;
activityReporter.Report( wxString::Format( _( "Last render time %.0f ms" ),
calculation_time ) );
@@ -630,6 +640,75 @@ void EDA_3D_CANVAS::OnMagnify( wxMouseEvent& event )
}
void EDA_3D_CANVAS::OnZoomGesture( wxZoomGestureEvent& aEvent )
{
SetFocus();
if( aEvent.IsGestureStart() )
{
m_gestureLastZoomFactor = 1.0;
m_camera.SetCurMousePosition( aEvent.GetPosition() );
}
if( m_camera_is_moving )
return;
restart_editingTimeOut_Timer();
m_camera.Pan( aEvent.GetPosition() );
m_camera.SetCurMousePosition( aEvent.GetPosition() );
m_camera.Zoom( aEvent.GetZoomFactor() / m_gestureLastZoomFactor );
m_gestureLastZoomFactor = aEvent.GetZoomFactor();
DisplayStatus();
Request_refresh();
}
void EDA_3D_CANVAS::OnPanGesture( wxPanGestureEvent& aEvent )
{
SetFocus();
if( aEvent.IsGestureStart() )
m_camera.SetCurMousePosition( aEvent.GetPosition() );
if( m_camera_is_moving )
return;
m_camera.Pan( aEvent.GetPosition() );
m_camera.SetCurMousePosition( aEvent.GetPosition() );
DisplayStatus();
Request_refresh();
}
void EDA_3D_CANVAS::OnRotateGesture( wxRotateGestureEvent& aEvent )
{
SetFocus();
if( aEvent.IsGestureStart() )
{
m_gestureLastAngle = 0;
m_camera.SetCurMousePosition( aEvent.GetPosition() );
// We don't want to process the first angle
return;
}
if( m_camera_is_moving )
return;
m_camera.RotateScreen( m_gestureLastAngle - aEvent.GetRotationAngle() );
m_gestureLastAngle = aEvent.GetRotationAngle();
DisplayStatus();
Request_refresh();
}
void EDA_3D_CANVAS::OnMouseMove( wxMouseEvent& event )
{
if( m_3d_render && m_3d_render->IsReloadRequestPending() )
@@ -841,7 +920,7 @@ void EDA_3D_CANVAS::OnTimerTimeout_Redraw( wxTimerEvent& aEvent )
void EDA_3D_CANVAS::OnRefreshRequest( wxEvent& aEvent )
{
DoRePaint();
Refresh();
}
@@ -982,66 +1061,24 @@ bool EDA_3D_CANVAS::SetView3D( VIEW3D_TYPE aRequestedView )
return true;
case VIEW3D_TYPE::VIEW3D_RIGHT:
m_camera.SetInterpolateMode( CAMERA_INTERPOLATION::BEZIER );
m_camera.SetT0_and_T1_current_T();
m_camera.Reset_T1();
m_camera.RotateZ_T1( glm::radians( -90.0f ) );
m_camera.RotateX_T1( glm::radians( -90.0f ) );
request_start_moving_camera();
return true;
case VIEW3D_TYPE::VIEW3D_LEFT:
m_camera.SetInterpolateMode( CAMERA_INTERPOLATION::BEZIER );
m_camera.SetT0_and_T1_current_T();
m_camera.Reset_T1();
m_camera.RotateZ_T1( glm::radians( 90.0f ) );
m_camera.RotateX_T1( glm::radians( -90.0f ) );
request_start_moving_camera();
return true;
case VIEW3D_TYPE::VIEW3D_FRONT:
m_camera.SetInterpolateMode( CAMERA_INTERPOLATION::BEZIER );
m_camera.SetT0_and_T1_current_T();
m_camera.Reset_T1();
m_camera.RotateX_T1( glm::radians( -90.0f ) );
request_start_moving_camera();
return true;
case VIEW3D_TYPE::VIEW3D_BACK:
case VIEW3D_TYPE::VIEW3D_FLIP:
m_camera.SetInterpolateMode( CAMERA_INTERPOLATION::BEZIER );
m_camera.SetT0_and_T1_current_T();
m_camera.Reset_T1();
m_camera.RotateX_T1( glm::radians( -90.0f ) );
// The rotation angle should be 180.
// We use 179.999 (180 - epsilon) to avoid a full 360 deg rotation when
// using 180 deg if the previous rotated position was already 180 deg
m_camera.RotateZ_T1( glm::radians( 179.999f ) );
m_camera.ViewCommand_T1( aRequestedView );
request_start_moving_camera();
return true;
case VIEW3D_TYPE::VIEW3D_TOP:
m_camera.SetInterpolateMode( CAMERA_INTERPOLATION::BEZIER );
m_camera.SetT0_and_T1_current_T();
m_camera.Reset_T1();
request_start_moving_camera( glm::min( glm::max( m_camera.GetZoom(), 0.5f ), 1.125f ) );
return true;
case VIEW3D_TYPE::VIEW3D_BOTTOM:
m_camera.SetInterpolateMode( CAMERA_INTERPOLATION::BEZIER );
m_camera.SetT0_and_T1_current_T();
m_camera.Reset_T1();
m_camera.RotateY_T1( glm::radians( 179.999f ) ); // Rotation = 180 - epsilon
m_camera.ViewCommand_T1( aRequestedView );
request_start_moving_camera( glm::min( glm::max( m_camera.GetZoom(), 0.5f ), 1.125f ) );
return true;
case VIEW3D_TYPE::VIEW3D_FLIP:
m_camera.SetInterpolateMode( CAMERA_INTERPOLATION::BEZIER );
m_camera.SetT0_and_T1_current_T();
m_camera.RotateY_T1( glm::radians( 179.999f ) );
request_start_moving_camera();
return true;
default:
return false;
}
+20 -14
View File
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2015-2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 1992-2024 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
@@ -38,7 +38,7 @@
class WX_INFOBAR;
class wxStatusBar;
class BOARD;
class RENDER_3D_RAYTRACE;
class RENDER_3D_RAYTRACE_GL;
class RENDER_3D_OPENGL;
@@ -52,12 +52,12 @@ public:
* Create a new 3D Canvas with an attribute list.
*
* @param aParent the parent creator of this canvas.
* @param aAttribList a list of openGL options created by GetOpenGL_AttributesList.
* @param aGLAttribs openGL attributes created by #OGL_ATT_LIST::GetAttributesList.
* @param aBoard The board.
* @param aSettings the settings options to be used by this canvas.
*/
EDA_3D_CANVAS( wxWindow* aParent, const int* aAttribList,
BOARD_ADAPTER& aSettings, CAMERA& aCamera, S3D_CACHE* a3DCachePointer );
EDA_3D_CANVAS( wxWindow* aParent, const wxGLAttributes& aGLAttribs, BOARD_ADAPTER& aSettings,
CAMERA& aCamera, S3D_CACHE* a3DCachePointer );
~EDA_3D_CANVAS();
@@ -97,7 +97,7 @@ public:
}
/**
* @return the current render ( a RENDER_3D_RAYTRACE* or a RENDER_3D_OPENGL* render )
* @return the current render ( a RENDER_3D_RAYTRACE_GL* or a RENDER_3D_OPENGL* render )
*/
RENDER_3D_BASE* GetCurrentRender() const { return m_3d_render; }
@@ -208,12 +208,6 @@ public:
m_3dmousePivotPos = aPos;
}
private:
/**
* Called by a wxPaintEvent event
*/
void OnPaint( wxPaintEvent& aEvent );
/**
* The actual function to repaint the canvas.
*
@@ -222,6 +216,10 @@ private:
*/
void DoRePaint();
private:
// The wxPaintEvent event. mainly calls DoRePaint()
void OnPaint( wxPaintEvent& aEvent );
void OnEraseBackground( wxEraseEvent& event );
void OnRefreshRequest( wxEvent& aEvent );
@@ -239,6 +237,10 @@ private:
void OnResize( wxSizeEvent& event );
void OnTimerTimeout_Redraw( wxTimerEvent& event );
void OnZoomGesture( wxZoomGestureEvent& event );
void OnPanGesture( wxPanGestureEvent& event );
void OnRotateGesture( wxRotateGestureEvent& event );
DECLARE_EVENT_TABLE()
/**
@@ -307,13 +309,13 @@ private:
bool m_render_pivot; // Render the pivot while camera moving
float m_camera_moving_speed; // 1.0f will be 1:1
unsigned m_strtime_camera_movement; // Ticktime of camera movement start
int64_t m_strtime_camera_movement; // Ticktime of camera movement start
bool m_animation_enabled; // Camera animation enabled
int m_moving_speed_multiplier; // Camera animation speed multiplier option
BOARD_ADAPTER& m_boardAdapter; // Pre-computed 3D info and settings
RENDER_3D_BASE* m_3d_render;
RENDER_3D_RAYTRACE* m_3d_render_raytracing;
RENDER_3D_RAYTRACE_GL* m_3d_render_raytracing;
RENDER_3D_OPENGL* m_3d_render_opengl;
bool m_opengl_supports_raytracing;
@@ -326,6 +328,10 @@ private:
bool m_render3dmousePivot = false; // Render the 3dmouse pivot
SFVEC3F m_3dmousePivotPos; // The position of the 3dmouse pivot
///< Used to track gesture events.
double m_gestureLastZoomFactor = 1.0;
double m_gestureLastAngle = 0.0;
/**
* Trace mask used to enable or disable the trace output of this class.
* The debug output can be turned on by setting the WXTRACE environment variable to
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2015-2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 1992-2024 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
@@ -35,6 +35,7 @@
#include "../3d_cache/3d_cache.h"
#include <wx/dcclient.h>
#include <base_units.h>
#include <build_version.h>
#include <gal/opengl/gl_context_mgr.h>
#include <settings/common_settings.h>
#include <pgm_base.h>
@@ -85,9 +86,9 @@ END_EVENT_TABLE()
#define RANGE_SCALE_3D 8.0f
EDA_3D_MODEL_VIEWER::EDA_3D_MODEL_VIEWER( wxWindow* aParent, const int* aAttribList,
EDA_3D_MODEL_VIEWER::EDA_3D_MODEL_VIEWER( wxWindow* aParent, const wxGLAttributes& aGLAttribs,
S3D_CACHE* aCacheManager ) :
HIDPI_GL_CANVAS( EDA_DRAW_PANEL_GAL::GetVcSettings(), aParent, wxID_ANY, aAttribList,
HIDPI_GL_CANVAS( EDA_DRAW_PANEL_GAL::GetVcSettings(), aParent, aGLAttribs, wxID_ANY,
wxDefaultPosition, wxDefaultSize,
wxFULL_REPAINT_ON_RESIZE ),
m_trackBallCamera( RANGE_SCALE_3D * 4.0f ),
@@ -102,11 +103,6 @@ EDA_3D_MODEL_VIEWER::EDA_3D_MODEL_VIEWER( wxWindow* aParent, const int* aAttribL
m_BiuTo3dUnits = 1.0;
m_glRC = nullptr;
COMMON_SETTINGS* settings = Pgm().GetCommonSettings();
const DPI_SCALING_COMMON dpi{ settings, this };
SetScaleFactor( dpi.GetScaleFactor() );
}
@@ -160,7 +156,7 @@ void EDA_3D_MODEL_VIEWER::Set3DModel( const wxString& aModelPathName)
if( m_cacheManager )
{
const S3DMODEL* model = m_cacheManager->GetModel( aModelPathName, wxEmptyString );
const S3DMODEL* model = m_cacheManager->GetModel( aModelPathName, wxEmptyString, nullptr );
if( model )
Set3DModel( (const S3DMODEL &)*model );
@@ -200,6 +196,9 @@ void EDA_3D_MODEL_VIEWER::ogl_initialize()
From_UTF8( (char*) glewGetString( GLEW_VERSION ) ) );
}
SetOpenGLInfo( (const char*) glGetString( GL_VENDOR ), (const char*) glGetString( GL_RENDERER ),
(const char*) glGetString( GL_VERSION ) );
glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST );
glHint( GL_LINE_SMOOTH_HINT, GL_NICEST );
glHint( GL_POLYGON_SMOOTH_HINT, GL_NICEST );
@@ -302,7 +301,7 @@ void EDA_3D_MODEL_VIEWER::OnPaint( wxPaintEvent& event )
// clear color and depth buffers
glEnable( GL_DEPTH_TEST );
glClearColor( 0.0f, 0.0f, 0.0f, 1.0f );
glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );
glClearDepth( 1.0f );
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
@@ -49,9 +49,9 @@ public:
* Create a new 3D Canvas with a attribute list.
*
* @param aParent the parent creator of this canvas.
* @param aAttribList a list of openGL options created by #OGL_ATT_LIST::GetAttributesList.
* @param aGLAttribs openGL attributes created by #OGL_ATT_LIST::GetAttributesList.
*/
EDA_3D_MODEL_VIEWER( wxWindow* aParent, const int* aAttribList = nullptr,
EDA_3D_MODEL_VIEWER( wxWindow* aParent, const wxGLAttributes& aGLAttribs,
S3D_CACHE* aCacheManager = nullptr );
~EDA_3D_MODEL_VIEWER();
@@ -66,7 +66,9 @@ public:
/**
* Set this model to be displayed.
*
* @param aModelPathName 3D model path name.
* N.B. This will not load a model from the internal cache. Only from on disk.
*
* @param aModelPathName 3D model path name. Must be a file on disk.
*/
void Set3DModel( const wxString& aModelPathName );
+2
View File
@@ -1,6 +1,8 @@
add_library(3d-viewer_navlib STATIC
"nl_3d_viewer_plugin.cpp"
"nl_3d_viewer_plugin_impl.cpp"
"nl_footprint_properties_plugin.cpp"
"nl_footprint_properties_plugin_impl.cpp"
)
# 3d-viewer_navlib depends on make_lexer outputs in common
+3 -6
View File
@@ -25,20 +25,17 @@
NL_3D_VIEWER_PLUGIN::NL_3D_VIEWER_PLUGIN( EDA_3D_CANVAS* aViewport )
: m_impl( nullptr )
{
if( ADVANCED_CFG::GetCfg().m_Use3DConnexionDriver
&& KIPLATFORM::DRIVERS::Valid3DConnexionDriverVersion() )
{
m_impl = new NL_3D_VIEWER_PLUGIN_IMPL( aViewport );
m_impl = std::make_unique<NL_3D_VIEWER_PLUGIN_IMPL>( aViewport, "KiCAD 3D" );
m_impl->Connect();
}
}
NL_3D_VIEWER_PLUGIN::~NL_3D_VIEWER_PLUGIN()
{
delete m_impl;
}
NL_3D_VIEWER_PLUGIN::~NL_3D_VIEWER_PLUGIN() = default;
void NL_3D_VIEWER_PLUGIN::SetFocus( bool focus )
+3 -1
View File
@@ -26,6 +26,8 @@
#ifndef NL_3D_VIEWER_PLUGIN_H_
#define NL_3D_VIEWER_PLUGIN_H_
#include <memory>
// Forward declarations.
class EDA_3D_CANVAS;
class NL_3D_VIEWER_PLUGIN_IMPL;
@@ -54,7 +56,7 @@ public:
void SetFocus( bool aFocus = true );
private:
NL_3D_VIEWER_PLUGIN_IMPL* m_impl;
std::unique_ptr<NL_3D_VIEWER_PLUGIN_IMPL> m_impl;
};
#endif // NL_3D_VIEWER_PLUGIN_H_
@@ -1,8 +1,8 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2021 3Dconnexion
* Copyright (C) 2021 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2024 3Dconnexion
* Copyright (C) 2024 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 as published by the
@@ -27,6 +27,7 @@
// KiCAD includes
#include <tool/action_manager.h>
#include <tool/tool_manager.h>
#include <tool/tools_holder.h>
// stdlib
#include <map>
@@ -72,7 +73,7 @@ bool equals( glm::mat<L, C, T, Q> const& aFirst, glm::mat<L, C, T, Q> const& aSe
}
NL_3D_VIEWER_PLUGIN_IMPL::NL_3D_VIEWER_PLUGIN_IMPL( EDA_3D_CANVAS* aCanvas ) :
NL_3D_VIEWER_PLUGIN_IMPL::NL_3D_VIEWER_PLUGIN_IMPL( EDA_3D_CANVAS* aCanvas, const std::string& aProfileHint ) :
NAV_3D( false, false ),
m_canvas( aCanvas ),
m_capIsMoving( false ),
@@ -80,12 +81,7 @@ NL_3D_VIEWER_PLUGIN_IMPL::NL_3D_VIEWER_PLUGIN_IMPL( EDA_3D_CANVAS* aCanvas ) :
{
m_camera = dynamic_cast<TRACK_BALL*>( m_canvas->GetCamera() );
PutProfileHint( "KiCAD 3D" );
EnableNavigation( true );
PutFrameTimingSource( TimingSource::SpaceMouse );
exportCommandsAndImages();
PutProfileHint( aProfileHint );
}
@@ -101,8 +97,19 @@ void NL_3D_VIEWER_PLUGIN_IMPL::SetFocus( bool aFocus )
NAV_3D::Write( navlib::focus_k, aFocus );
}
// temporary store for the categories
typedef std::map<std::string, TDx::CCommandTreeNode*> CATEGORY_STORE;
EDA_3D_CANVAS* NL_3D_VIEWER_PLUGIN_IMPL::GetCanvas() const
{
return m_canvas;
}
void NL_3D_VIEWER_PLUGIN_IMPL::Connect()
{
EnableNavigation(true);
PutFrameTimingSource(TimingSource::SpaceMouse);
exportCommandsAndImages();
}
/**
* Add a category to the store.
@@ -568,10 +575,11 @@ 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() )
if( parent->IsEnabled() && ( tools_holder = dynamic_cast<TOOLS_HOLDER*>( parent ) ) )
{
TOOL_MANAGER* tool_manager = static_cast<PCB_BASE_FRAME*>( parent )->GetToolManager();
TOOL_MANAGER* tool_manager = tools_holder->GetToolManager();
if( tool_manager == nullptr )
{
+21 -4
View File
@@ -1,8 +1,8 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2021 3Dconnexion
* Copyright (C) 2021 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2024 3Dconnexion
* Copyright (C) 2024 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 as published by the
@@ -42,6 +42,11 @@
class EDA_3D_CANVAS;
class TRACK_BALL;
// temporary store for the categories
typedef std::map<std::string, TDx::CCommandTreeNode*> CATEGORY_STORE;
CATEGORY_STORE::iterator add_category( std::string aCategoryPath, CATEGORY_STORE& aCategoryStore );
// Convenience typedef.
typedef TDx::SpaceMouse::Navigation3D::CNavigation3D NAV_3D;
@@ -56,8 +61,9 @@ public:
* Initializes a new instance of the NL_3DVIEWER_PLUGIN.
*
* @param aCanvas is the viewport to be navigated.
* @param aProfileHint tells the 3DConnexion UI which profile to use.
*/
NL_3D_VIEWER_PLUGIN_IMPL( EDA_3D_CANVAS* aCanvas );
NL_3D_VIEWER_PLUGIN_IMPL( EDA_3D_CANVAS* aCanvas, const std::string& aProfileHint );
virtual ~NL_3D_VIEWER_PLUGIN_IMPL();
@@ -69,11 +75,21 @@ public:
*/
void SetFocus( bool aFocus = true );
/**
* Get the m_canvas pointer.
*/
EDA_3D_CANVAS* GetCanvas() const;
/**
* Connect plugin implementation to the driver.
*/
void Connect();
private:
/**
* Export the invocable actions and images to the 3Dconnexion UI.
*/
void exportCommandsAndImages();
virtual void exportCommandsAndImages();
long GetCameraMatrix( navlib::matrix_t& aMatrix ) const override;
long GetPointerPosition( navlib::point_t& aPosition ) const override;
@@ -111,6 +127,7 @@ private:
long GetCoordinateSystem( navlib::matrix_t& aMatrix ) const override;
long GetIsViewRotatable( navlib::bool_t& isRotatable ) const override;
private:
EDA_3D_CANVAS* m_canvas;
TRACK_BALL* m_camera;
@@ -0,0 +1,45 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2024 3Dconnexion
* Copyright (C) 2024 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 as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "nl_footprint_properties_plugin.h"
#include "nl_footprint_properties_plugin_impl.h"
#include <advanced_config.h>
#include <kiplatform/drivers.h>
NL_FOOTPRINT_PROPERTIES_PLUGIN::NL_FOOTPRINT_PROPERTIES_PLUGIN( EDA_3D_CANVAS* aViewport )
{
if( ADVANCED_CFG::GetCfg().m_Use3DConnexionDriver
&& KIPLATFORM::DRIVERS::Valid3DConnexionDriverVersion() )
{
m_impl = std::make_unique<NL_FOOTPRINT_PROPERTIES_PLUGIN_IMPL>( aViewport );
m_impl->Connect();
}
}
NL_FOOTPRINT_PROPERTIES_PLUGIN::~NL_FOOTPRINT_PROPERTIES_PLUGIN() = default;
void NL_FOOTPRINT_PROPERTIES_PLUGIN::SetFocus( bool focus )
{
if( m_impl )
m_impl->SetFocus( focus );
}
@@ -0,0 +1,62 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2024 3Dconnexion
* Copyright (C) 2024 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 as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* @file nl_footprint_properties_plugin.h
* @brief declaration of the nl_footprint_properties_plugin class
*/
#ifndef NL_FOOTPRINT_PROPERTIES_PLUGIN_H_
#define NL_FOOTPRINT_PROPERTIES_PLUGIN_H_
#include <memory>
// Forward declarations.
class EDA_3D_CANVAS;
class NL_FOOTPRINT_PROPERTIES_PLUGIN_IMPL;
/**
* The class that implements the public interface to the SpaceMouse plug-in.
*/
class NL_FOOTPRINT_PROPERTIES_PLUGIN
{
public:
/**
* Initializes a new instance of the NL_FOOTPRINT_PROPERTIES_PLUGIN.
*
* @param aViewport is the viewport to be navigated.
*/
NL_FOOTPRINT_PROPERTIES_PLUGIN( EDA_3D_CANVAS* aViewport );
virtual ~NL_FOOTPRINT_PROPERTIES_PLUGIN();
/**
* Set the connection to the 3Dconnexion driver to the focus state so that
* 3DMouse data is routed here.
*
* @param aFocus is true to set the connection active.
*/
void SetFocus( bool aFocus = true );
private:
std::unique_ptr<NL_FOOTPRINT_PROPERTIES_PLUGIN_IMPL> m_impl;
};
#endif // NL_FOOTPRINT_PROPERTIES_PLUGIN_H_
@@ -0,0 +1,162 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2024 3Dconnexion
* Copyright (C) 2024 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 as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "nl_footprint_properties_plugin_impl.h"
#include <3d-viewer/3d_canvas/eda_3d_canvas.h>
// KiCAD includes
#include <tool/action_manager.h>
#include <tool/tool_manager.h>
#include <tool/tools_holder.h>
#include <wx/mstream.h>
#define BOUNDING_BOX_SCALE_FACTOR 1.3f
/**
* Flag to enable the NL_FOOTPRINT_PROPERTIES_PLUGIN debug tracing.
*
* Use "KI_TRACE_NL_FOOTPRINT_PROPERTIES_PLUGIN" to enable.
*
* @ingroup trace_env_vars
*/
const wxChar* NL_FOOTPRINT_PROPERTIES_PLUGIN_IMPL::m_logTrace =
wxT( "KI_TRACE_NL_FOOTPRINT_PROPERTIES_PLUGIN" );
NL_FOOTPRINT_PROPERTIES_PLUGIN_IMPL::NL_FOOTPRINT_PROPERTIES_PLUGIN_IMPL(EDA_3D_CANVAS* aCanvas) :
NL_3D_VIEWER_PLUGIN_IMPL(aCanvas, "KiCAD Footprint Properties")
{}
long NL_FOOTPRINT_PROPERTIES_PLUGIN_IMPL::GetModelExtents( navlib::box_t& extents ) const
{
SFVEC3F min = NL_3D_VIEWER_PLUGIN_IMPL::GetCanvas()->GetBoardAdapter().GetBBox().Min();
SFVEC3F max = NL_3D_VIEWER_PLUGIN_IMPL::GetCanvas()->GetBoardAdapter().GetBBox().Max();
SFVEC3F diff = ( BOUNDING_BOX_SCALE_FACTOR - 1.f ) / 2.f * ( max - min );
min -= diff;
max += diff;
extents = { min.x, min.y, min.z, max.x, max.y, max.z };
return 0;
}
void NL_FOOTPRINT_PROPERTIES_PLUGIN_IMPL::exportCommandsAndImages()
{
std::list<TOOL_ACTION*> actions = ACTION_MANAGER::GetActionList();
if( actions.size() == 0 )
{
return;
}
using TDx::SpaceMouse::CCommand;
using TDx::SpaceMouse::CCommandSet;
// The root action set node
CCommandSet commandSet( "EDA_3D_CANVAS", "3D Viewer" );
// Activate the command set
NAV_3D::PutActiveCommands( commandSet.GetId() );
// temporary store for the categories
CATEGORY_STORE categoryStore;
std::vector<TDx::CImage> vImages;
// add the action set to the category_store
categoryStore.insert( categoryStore.end(), CATEGORY_STORE::value_type( ".", &commandSet ) );
std::list<TOOL_ACTION*>::const_iterator it;
for( it = actions.begin(); it != actions.end(); ++it )
{
const TOOL_ACTION* action = *it;
std::string label = action->GetMenuLabel().ToStdString();
if( label.empty() )
{
continue;
}
std::string name = action->GetName();
// Do no export commands for the pcbnew app.
if( name.rfind( "pcbnew.", 0 ) == 0 )
{
continue;
}
// Exclude commands which can't be used in the footprint properties.
if( name.rfind( "3DViewer.Control.pivotCenter", 0 ) == 0
|| name.rfind( "3DViewer.Control.material", 0 ) == 0
|| name.rfind( "3DViewer.Control.attribute", 0 ) == 0
|| name.rfind( "3DViewer.Control.show", 0 ) == 0 )
{
continue;
}
std::string strCategory = action->GetToolName();
CATEGORY_STORE::iterator iter = categoryStore.find( strCategory );
if( iter == categoryStore.end() )
{
iter = add_category( std::move( strCategory ), categoryStore );
}
std::string description = action->GetDescription().ToStdString();
// Arbitrary 8-bit data stream
wxMemoryOutputStream imageStream;
if( action->GetIcon() != BITMAPS::INVALID_BITMAP )
{
wxImage image = KiBitmap( action->GetIcon() ).ConvertToImage();
image.SaveFile( imageStream, wxBitmapType::wxBITMAP_TYPE_PNG );
image.Destroy();
if( imageStream.GetSize() )
{
wxStreamBuffer* streamBuffer = imageStream.GetOutputStreamBuffer();
TDx::CImage tdxImage = TDx::CImage::FromData( "", 0, name.c_str() );
tdxImage.AssignImage( std::string( reinterpret_cast<const char*>(
streamBuffer->GetBufferStart() ),
streamBuffer->GetBufferSize() ),
0 );
wxLogTrace( m_logTrace, wxT( "Adding image for : %s" ), name );
vImages.push_back( std::move( tdxImage ) );
}
}
wxLogTrace( m_logTrace, wxT( "Inserting command: %s, description: %s, in category: %s" ),
name, description, iter->first );
iter->second->push_back(
CCommand( std::move( name ), std::move( label ), std::move( description ) ) );
}
NAV_3D::AddCommandSet( commandSet );
NAV_3D::AddImages( vImages );
}
@@ -0,0 +1,68 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2024 3Dconnexion
* Copyright (C) 2024 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 as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* @file nl_footprint_properties_plugin_impl.h
* @brief declaration of the nl_footprint_properties_plugin_impl class
*/
#ifndef NL_FOOTPRINT_PROPERTIES_PLUGIN_IMPL_H_
#define NL_FOOTPRINT_PROPERTIES_PLUGIN_IMPL_H_
#include "nl_3d_viewer_plugin_impl.h"
// TDxWare SDK.
#include <SpaceMouse/CNavigation3D.hpp>
/**
* The class that adjusts NL_3D_VIEWER_PLUGIN_IMPL implementation for 3D Model preview in footprint properties dialog.
*/
class NL_FOOTPRINT_PROPERTIES_PLUGIN_IMPL : public NL_3D_VIEWER_PLUGIN_IMPL
{
public:
/**
* Initializes a new instance of the NL_FOOTPRINT_PROPERTIES_PLUGIN.
*
* @param aCanvas is the viewport to be navigated.
*/
NL_FOOTPRINT_PROPERTIES_PLUGIN_IMPL( EDA_3D_CANVAS* aCanvas );
private:
/**
* Get Footprint 3D Model extents.
*
* @param extents is the box around the 3D model.
*/
long GetModelExtents( navlib::box_t& extents ) const override;
/**
* Export the invocable actions and images to the 3Dconnexion UI.
*/
void exportCommandsAndImages() override;
private:
/**
* Trace mask used to enable or disable the trace output of this class.
* The debug output can be turned on by setting the WXTRACE environment variable to
* "KI_TRACE_NL_FOOTPRINT_PROPERTIES_PLUGIN". See the wxWidgets documentation on wxLogTrace for
* more information.
*/
static const wxChar* m_logTrace;
};
#endif // NL_FOOTPRINT_PROPERTIES_PLUGIN_IMPL_H_
+39 -1
View File
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2016-2020 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2016-2024 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
@@ -46,6 +46,19 @@ static void dbg_save_rgb_buffer( const wxString& aFileName, unsigned char *aRGBp
}
static void dbg_save_rgb_a_buffer( const wxString& aFileName, unsigned char* aRGBpixelBuffer,
unsigned char* aAlphaBuffer, unsigned int aXSize,
unsigned int aYSize )
{
wxImage image( aXSize, aYSize );
image.SetData( aRGBpixelBuffer );
image.SetAlpha( aAlphaBuffer );
image = image.Mirror( false );
image.SaveFile( aFileName + wxT( ".png" ), wxBITMAP_TYPE_PNG );
image.Destroy();
}
void DBG_SaveBuffer( const wxString& aFileName, const unsigned char *aInBuffer,
unsigned int aXSize, unsigned int aYSize )
{
@@ -110,6 +123,31 @@ void DBG_SaveBuffer( const wxString& aFileName, const SFVEC3F *aInBuffer,
}
void DBG_SaveBuffer( const wxString& aFileName, const SFVEC4F *aInBuffer,
unsigned int aXSize, unsigned int aYSize )
{
const unsigned int wxh = aXSize * aYSize;
unsigned char *pixelbuffer = (unsigned char*) malloc( wxh * 4 );
unsigned char *alphabuffer = (unsigned char*) malloc( wxh );
for( unsigned int i = 0; i < wxh; ++i )
{
const SFVEC4F &v = aInBuffer[i];
const unsigned int ix3 = i * 3;
// Set RGB value with all same values intensities
pixelbuffer[ix3 + 0] = (unsigned char) glm::min( (int) ( v.r * 255.0f ), 255 );
pixelbuffer[ix3 + 1] = (unsigned char) glm::min( (int) ( v.g * 255.0f ), 255 );
pixelbuffer[ix3 + 2] = (unsigned char) glm::min( (int) ( v.b * 255.0f ), 255 );
alphabuffer[i] = (unsigned char) glm::min( (int) ( v.a * 255.0f ), 255 );
}
dbg_save_rgb_a_buffer( aFileName, pixelbuffer, alphabuffer, aXSize, aYSize );
}
void DBG_SaveNormalsBuffer( const wxString& aFileName, const SFVEC3F *aInNormalsBuffer,
unsigned int aXSize, unsigned int aYSize )
{
+4 -1
View File
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2016-2020 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2016-2024 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
@@ -42,6 +42,9 @@ void DBG_SaveBuffer( const wxString& aFileName, const float *aInBuffer,
void DBG_SaveBuffer( const wxString& aFileName, const SFVEC3F *aInBuffer,
unsigned int aXSize, unsigned int aYSize );
void DBG_SaveBuffer( const wxString& aFileName, const SFVEC4F *aInBuffer,
unsigned int aXSize, unsigned int aYSize );
void DBG_SaveNormalsBuffer( const wxString& aFileName, const SFVEC3F *aInNormalsBuffer,
unsigned int aXSize, unsigned int aYSize );
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2015-2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2015-2020 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2015-2024 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
@@ -23,47 +23,60 @@
*/
/**
* @file color_rgb.cpp
* @file color_rgba.cpp
*/
#include "color_rgb.h"
#include "color_rgba.h"
COLOR_RGB::COLOR_RGB( const SFVEC3F& aColor )
COLOR_RGBA::COLOR_RGBA( const SFVEC3F& aColor )
{
r = (unsigned int) glm::clamp( (int) ( aColor.r * 255 ), 0, 255 );
g = (unsigned int) glm::clamp( (int) ( aColor.g * 255 ), 0, 255 );
b = (unsigned int) glm::clamp( (int) ( aColor.b * 255 ), 0, 255 );
a = 255;
}
COLOR_RGB BlendColor( const COLOR_RGB& aC1, const COLOR_RGB& aC2 )
COLOR_RGBA::COLOR_RGBA( const SFVEC4F& aColor )
{
r = (unsigned int) glm::clamp( (int) ( aColor.r * 255 ), 0, 255 );
g = (unsigned int) glm::clamp( (int) ( aColor.g * 255 ), 0, 255 );
b = (unsigned int) glm::clamp( (int) ( aColor.b * 255 ), 0, 255 );
a = (unsigned int) glm::clamp( (int) ( aColor.a * 255 ), 0, 255 );
}
COLOR_RGBA BlendColor( const COLOR_RGBA& aC1, const COLOR_RGBA& aC2 )
{
const unsigned int r = aC1.r + aC2.r;
const unsigned int g = aC1.g + aC2.g;
const unsigned int b = aC1.b + aC2.b;
const unsigned int a = aC1.a + aC2.a;
return COLOR_RGB( ( r >> 1 ), ( g >> 1 ), ( b >> 1 ) );
return COLOR_RGBA( ( r >> 1 ), ( g >> 1 ), ( b >> 1 ), ( a >> 1 ) );
}
COLOR_RGB BlendColor( const COLOR_RGB& aC1, const COLOR_RGB& aC2, const COLOR_RGB& aC3 )
COLOR_RGBA BlendColor( const COLOR_RGBA& aC1, const COLOR_RGBA& aC2, const COLOR_RGBA& aC3 )
{
const unsigned int r = aC1.r + aC2.r + aC3.r;
const unsigned int g = aC1.g + aC2.g + aC3.g;
const unsigned int b = aC1.b + aC2.b + aC3.b;
const unsigned int a = aC1.a + aC2.a + aC3.a;
return COLOR_RGB( ( r / 3 ), ( g / 3 ), ( b / 3 ) );
return COLOR_RGBA( ( r / 3 ), ( g / 3 ), ( b / 3 ), ( a / 3 ) );
}
COLOR_RGB BlendColor( const COLOR_RGB& aC1, const COLOR_RGB& aC2, const COLOR_RGB& aC3,
const COLOR_RGB& aC4 )
COLOR_RGBA BlendColor( const COLOR_RGBA& aC1, const COLOR_RGBA& aC2, const COLOR_RGBA& aC3,
const COLOR_RGBA& aC4 )
{
const unsigned int r = aC1.r + aC2.r + aC3.r + aC4.r;
const unsigned int g = aC1.g + aC2.g + aC3.g + aC4.g;
const unsigned int b = aC1.b + aC2.b + aC3.b + aC4.b;
const unsigned int a = aC1.a + aC2.a + aC3.a + aC4.a;
return COLOR_RGB( ( r >> 2 ), ( g >> 2 ), ( b >> 2 ) );
return COLOR_RGBA( ( r >> 2 ), ( g >> 2 ), ( b >> 2 ), ( a >> 2 ) );
}
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2015-2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2015-2020 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2015-2024 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
@@ -23,39 +23,49 @@
*/
/**
* @file color_rgb.h
* @file color_rgba.h
*/
#ifndef COLOR_RGB_H
#define COLOR_RGB_H
#ifndef COLOR_RGBA_H
#define COLOR_RGBA_H
#include <plugins/3dapi/xv3d_types.h>
union COLOR_RGB
union COLOR_RGBA
{
unsigned char c[3];
unsigned char c[4];
struct
{
unsigned char r;
unsigned char g;
unsigned char b;
unsigned char a;
};
COLOR_RGB( const SFVEC3F& aColor );
COLOR_RGB() { r = 0; g = 0; b = 0; }
COLOR_RGB( unsigned char aR, unsigned char aG, unsigned char aB )
COLOR_RGBA( const SFVEC3F& aColor );
COLOR_RGBA( const SFVEC4F& aColor );
COLOR_RGBA() { r = 0; g = 0; b = 0; a = 0; }
COLOR_RGBA( unsigned char aR, unsigned char aG, unsigned char aB )
{
r = aR;
g = aG;
b = aB;
}
COLOR_RGBA( unsigned char aR, unsigned char aG, unsigned char aB, unsigned char aA )
{
r = aR;
g = aG;
b = aB;
a = aA;
}
};
COLOR_RGB BlendColor( const COLOR_RGB& aC1, const COLOR_RGB& aC2 );
COLOR_RGB BlendColor( const COLOR_RGB& aC1, const COLOR_RGB& aC2, const COLOR_RGB& aC3 );
COLOR_RGB BlendColor( const COLOR_RGB& aC1, const COLOR_RGB& aC2, const COLOR_RGB& aC3,
const COLOR_RGB& aC4 );
COLOR_RGBA BlendColor( const COLOR_RGBA& aC1, const COLOR_RGBA& aC2 );
COLOR_RGBA BlendColor( const COLOR_RGBA& aC1, const COLOR_RGBA& aC2, const COLOR_RGBA& aC3 );
COLOR_RGBA BlendColor( const COLOR_RGBA& aC1, const COLOR_RGBA& aC2, const COLOR_RGBA& aC3,
const COLOR_RGBA& aC4 );
#endif // COLOR_RGB_H
#endif // COLOR_RGBA_H
+2 -2
View File
@@ -3,7 +3,7 @@
*
* Copyright (C) 2020 Oleg Endo <olegendo@gcc.gnu.org>
* Copyright (C) 2015-2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2015-2020 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2015-2024 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
@@ -30,7 +30,7 @@
#include <plugins/3dapi/c3dmodel.h>
#include "../../common_ogl/openGL_includes.h"
#include "../raytracing/shapes3D/bbox_3d.h"
#include "../../3d_enums.h"
#include <3d_enums.h>
#include <wx/chartype.h>
+15 -9
View File
@@ -28,6 +28,7 @@
#include <footprint.h>
#include "../../3d_math.h"
#include "convert_basic_shapes_to_polygon.h"
#include <lset.h>
#include <trigo.h>
#include <project.h>
#include <core/profile.h> // To use GetRunningMicroSecs or another profiling utility
@@ -454,7 +455,7 @@ void RENDER_3D_OPENGL::reload( REPORTER* aStatusReporter, REPORTER* aWarningRepo
OBJECT_2D_STATS::Instance().ResetStats();
unsigned stats_startReloadTime = GetRunningMicroSecs();
int64_t stats_startReloadTime = GetRunningMicroSecs();
m_boardAdapter.InitSettings( aStatusReporter, aWarningReporter );
@@ -611,14 +612,14 @@ void RENDER_3D_OPENGL::reload( REPORTER* aStatusReporter, REPORTER* aWarningRepo
m_layers[layer] = oglList;
}
if( m_boardAdapter.m_Cfg->m_Render.differentiate_plated_copper )
if( m_boardAdapter.m_Cfg->m_Render.DifferentiatePlatedCopper() )
{
const SHAPE_POLY_SET* frontPlatedPadPolys = m_boardAdapter.GetFrontPlatedPadPolys();
const SHAPE_POLY_SET* backPlatedPadPolys = m_boardAdapter.GetBackPlatedPadPolys();
const SHAPE_POLY_SET* frontPlatedPadAndGraphicPolys = m_boardAdapter.GetFrontPlatedPadAndGraphicPolys();
const SHAPE_POLY_SET* backPlatedPadAndGraphicPolys = m_boardAdapter.GetBackPlatedPadAndGraphicPolys();
if( frontPlatedPadPolys )
if( frontPlatedPadAndGraphicPolys )
{
SHAPE_POLY_SET poly = frontPlatedPadPolys->CloneDropTriangulation();
SHAPE_POLY_SET poly = frontPlatedPadAndGraphicPolys->CloneDropTriangulation();
poly.BooleanIntersection( m_boardAdapter.GetBoardPoly(), SHAPE_POLY_SET::PM_FAST );
poly.BooleanSubtract( m_boardAdapter.GetTH_ODPolys(), SHAPE_POLY_SET::PM_FAST );
poly.BooleanSubtract( m_boardAdapter.GetNPTH_ODPolys(), SHAPE_POLY_SET::PM_FAST );
@@ -630,9 +631,9 @@ void RENDER_3D_OPENGL::reload( REPORTER* aStatusReporter, REPORTER* aWarningRepo
m_layers[F_Cu] = generateEmptyLayerList( F_Cu );
}
if( backPlatedPadPolys )
if( backPlatedPadAndGraphicPolys )
{
SHAPE_POLY_SET poly = backPlatedPadPolys->CloneDropTriangulation();
SHAPE_POLY_SET poly = backPlatedPadAndGraphicPolys->CloneDropTriangulation();
poly.BooleanIntersection( m_boardAdapter.GetBoardPoly(), SHAPE_POLY_SET::PM_FAST );
poly.BooleanSubtract( m_boardAdapter.GetTH_ODPolys(), SHAPE_POLY_SET::PM_FAST );
poly.BooleanSubtract( m_boardAdapter.GetNPTH_ODPolys(), SHAPE_POLY_SET::PM_FAST );
@@ -917,6 +918,10 @@ void RENDER_3D_OPENGL::load3dModels( REPORTER* aStatusReporter )
if( !m_boardAdapter.GetBoard() )
return;
// Building the 3D models late crashes on recent versions of macOS
// Unclear the exact mechanism, but as a workaround, just build them
// all the time. See https://gitlab.com/kicad/code/kicad/-/issues/17198
#ifndef __WXMAC__
if( !m_boardAdapter.m_IsPreviewer
&& !m_boardAdapter.m_Cfg->m_Render.show_footprints_normal
&& !m_boardAdapter.m_Cfg->m_Render.show_footprints_insert
@@ -924,6 +929,7 @@ void RENDER_3D_OPENGL::load3dModels( REPORTER* aStatusReporter )
{
return;
}
#endif
// Go for all footprints
for( const FOOTPRINT* footprint : m_boardAdapter.GetBoard()->Footprints() )
@@ -968,7 +974,7 @@ void RENDER_3D_OPENGL::load3dModels( REPORTER* aStatusReporter )
{
// It is not present, try get it from cache
const S3DMODEL* modelPtr =
m_boardAdapter.Get3dCacheManager()->GetModel( fp_model.m_Filename, footprintBasePath );
m_boardAdapter.Get3dCacheManager()->GetModel( fp_model.m_Filename, footprintBasePath, footprint );
// only add it if the return is not NULL
if( modelPtr )
@@ -3,7 +3,7 @@
*
* Copyright (C) 2015-2020 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2023 CERN
* Copyright (C) 2015-2023 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2015-2024 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
@@ -30,9 +30,12 @@
#include "render_3d_opengl.h"
#include "opengl_utils.h"
#include "common_ogl/ogl_utils.h"
#include <board.h>
#include <footprint.h>
#include <gal/opengl/gl_context_mgr.h>
#include <3d_math.h>
#include <glm/geometric.hpp>
#include <lset.h>
#include <math/util.h> // for KiROUND
#include <utility>
#include <vector>
@@ -47,7 +50,8 @@
RENDER_3D_OPENGL::RENDER_3D_OPENGL( EDA_3D_CANVAS* aCanvas, BOARD_ADAPTER& aAdapter,
CAMERA& aCamera ) :
RENDER_3D_BASE( aCanvas, aAdapter, aCamera )
RENDER_3D_BASE( aAdapter, aCamera ),
m_canvas( aCanvas )
{
wxLogTrace( m_logTrace, wxT( "RENDER_3D_OPENGL::RENDER_3D_OPENGL" ) );
@@ -266,6 +270,20 @@ 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 ) )
{
COLOR4D copper_color = m_boardAdapter.m_BoardEditorColors[aLayerID];
m_materials.m_Copper.m_Diffuse = SFVEC3F( copper_color.r, copper_color.g,
copper_color.b );
OglSetMaterial( m_materials.m_Copper, 1.0f );
m_materials.m_NonPlatedCopper.m_Diffuse = m_materials.m_Copper.m_Diffuse;
OglSetMaterial( m_materials.m_NonPlatedCopper, 1.0f );
return;
}
switch( aLayerID )
{
case F_Mask:
@@ -444,11 +462,17 @@ void RENDER_3D_OPENGL::renderBoardBody( bool aSkipRenderHoles )
}
static inline SFVEC4F premultiplyAlpha( const SFVEC4F& aInput )
{
return SFVEC4F( aInput.r * aInput.a, aInput.g * aInput.a, aInput.b * aInput.a, aInput.a );
}
bool RENDER_3D_OPENGL::Redraw( bool aIsMoving, REPORTER* aStatusReporter,
REPORTER* aWarningReporter )
{
// Initialize OpenGL
if( !m_is_opengl_initialized )
if( !m_canvasInitialized )
{
if( !initializeOpenGL() )
return false;
@@ -463,7 +487,13 @@ bool RENDER_3D_OPENGL::Redraw( bool aIsMoving, REPORTER* aStatusReporter,
if( aStatusReporter )
aStatusReporter->Report( _( "Loading..." ) );
reload( aStatusReporter, aWarningReporter );
// Careful here!
// We are in the middle of rendering and the reload method may show
// a dialog box that requires the opengl context for a redraw
GL_CONTEXT_MANAGER::Get().RunWithoutCtxLock( [this, aStatusReporter, aWarningReporter]()
{
reload( aStatusReporter, aWarningReporter );
} );
// generate a new 3D grid as the size of the board may had changed
m_lastGridType = static_cast<GRID3D_TYPE>( cfg.grid_type );
@@ -495,7 +525,7 @@ bool RENDER_3D_OPENGL::Redraw( bool aIsMoving, REPORTER* aStatusReporter,
glEnable( GL_MULTISAMPLE );
// clear color and depth buffers
glClearColor( 0.0f, 0.0f, 0.0f, 1.0f );
glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );
glClearDepth( 1.0f );
glClearStencil( 0x00 );
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT );
@@ -503,8 +533,8 @@ bool RENDER_3D_OPENGL::Redraw( bool aIsMoving, REPORTER* aStatusReporter,
OglResetTextureState();
// Draw the background ( rectangle with color gradient)
OglDrawBackground( SFVEC3F( m_boardAdapter.m_BgColorTop ),
SFVEC3F( m_boardAdapter.m_BgColorBot ) );
OglDrawBackground( premultiplyAlpha( m_boardAdapter.m_BgColorTop ),
premultiplyAlpha( m_boardAdapter.m_BgColorBot ) );
glEnable( GL_DEPTH_TEST );
@@ -562,7 +592,6 @@ bool RENDER_3D_OPENGL::Redraw( bool aIsMoving, REPORTER* aStatusReporter,
bool isSilkLayer = layer == F_SilkS || layer == B_SilkS;
bool isMaskLayer = layer == F_Mask || layer == B_Mask;
bool isPasteLayer = layer == F_Paste || layer == B_Paste;
bool isCopperLayer = layer >= F_Cu && layer <= B_Cu;
// Mask layers are not processed here because they are a special case
if( isMaskLayer )
@@ -575,7 +604,10 @@ bool RENDER_3D_OPENGL::Redraw( bool aIsMoving, REPORTER* aStatusReporter,
if( layerFlags.test( LAYER_3D_BOARD ) && m_boardAdapter.m_BoardBodyColor.a > opacity_min )
{
if( layer > F_Cu && layer < B_Cu )
// generating internal copper layers is time consumming. so skip them
// if the board body is masking them (i.e. if the opacity is near 1.0)
// B_Cu is layer 2 and all inner layers are higher values
if( layer > B_Cu && IsCopperLayer( layer ) )
continue;
}
@@ -583,9 +615,9 @@ bool RENDER_3D_OPENGL::Redraw( bool aIsMoving, REPORTER* aStatusReporter,
OPENGL_RENDER_LIST* pLayerDispList = static_cast<OPENGL_RENDER_LIST*>( ii->second );
if( isCopperLayer )
if( IsCopperLayer( layer ) )
{
if( cfg.differentiate_plated_copper )
if( cfg.DifferentiatePlatedCopper() )
setCopperMaterial();
else
setLayerMaterial( layer );
@@ -817,7 +849,7 @@ bool RENDER_3D_OPENGL::initializeOpenGL()
// Use this mode if you want see the triangle lines (debug proposes)
//glPolygonMode( GL_FRONT_AND_BACK, GL_LINE );
m_is_opengl_initialized = true;
m_canvasInitialized = true;
return true;
}
@@ -1015,7 +1047,7 @@ void RENDER_3D_OPENGL::get3dModelsFromFootprint( std::list<MODELTORENDER> &aDstR
const SFVEC3F offset = SFVEC3F( sM.m_Offset.x, sM.m_Offset.y, sM.m_Offset.z );
const SFVEC3F rotation = SFVEC3F( sM.m_Rotation.x, sM.m_Rotation.y, sM.m_Rotation.z );
const SFVEC3F scale = SFVEC3F( sM.m_Scale.x, sM.m_Scale.y, sM.m_Scale.z );
std::vector<float> key = { offset.x, offset.y, offset.z,
rotation.x, rotation.y, rotation.z,
scale.x, scale.y, scale.z };
@@ -1128,7 +1160,7 @@ void RENDER_3D_OPENGL::renderTransparentModels( const glm::mat4 &aCameraViewMatr
const SFVEC3F bBoxWorld = mtr.m_modelWorldMat * glm::vec4( bBoxCenter, 1.0f );
const float distanceToCamera = glm::length( cameraPos - bBoxWorld );
transparentModelList.emplace_back( &mtr, distanceToCamera );
}
@@ -1218,7 +1250,7 @@ void RENDER_3D_OPENGL::renderModel( const glm::mat4 &aCameraViewMatrix,
aModelToRender.m_model->DrawBbox();
glEnable( GL_LIGHTING );
if( !wasBlendEnabled )
glDisable( GL_BLEND );
}
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2015-2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2015-2021 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2015-2024 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
@@ -208,6 +208,8 @@ private:
SMATERIAL m_GrayMaterial;
} m_materials;
EDA_3D_CANVAS* m_canvas;
MAP_OGL_DISP_LISTS m_layers;
OPENGL_RENDER_LIST* m_platedPadsFront;
OPENGL_RENDER_LIST* m_platedPadsBack;
+6 -6
View File
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2015-2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2015-2020 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2015-2024 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
@@ -63,7 +63,7 @@ void POST_SHADER::UpdateSize( unsigned int xSize, unsigned int ySize )
const unsigned int n_elements = xSize * ySize;
m_normals = new SFVEC3F[n_elements];
m_color = new SFVEC3F[n_elements];
m_color = new SFVEC4F[n_elements];
m_depth = new float[n_elements];
m_wc_hitposition = new SFVEC3F[n_elements];
m_shadow_att_factor = new float[n_elements];
@@ -77,7 +77,7 @@ void POST_SHADER::UpdateSize( const SFVEC2UI& aSize )
void POST_SHADER::SetPixelData( unsigned int x, unsigned int y, const SFVEC3F& aNormal,
const SFVEC3F& aColor, const SFVEC3F& aHitPosition,
const SFVEC4F& aColor, const SFVEC3F& aHitPosition,
float aDepth, float aShadowAttFactor )
{
wxASSERT( x < m_size.x );
@@ -125,7 +125,7 @@ const SFVEC3F& POST_SHADER::GetNormalAt( const SFVEC2F& aPos ) const
}
const SFVEC3F& POST_SHADER::GetColorAt( const SFVEC2F& aPos ) const
const SFVEC4F& POST_SHADER::GetColorAt( const SFVEC2F& aPos ) const
{
return m_color[GetIndex( aPos )];
}
@@ -149,13 +149,13 @@ const SFVEC3F& POST_SHADER::GetNormalAt( const SFVEC2I& aPos ) const
}
const SFVEC3F& POST_SHADER::GetColorAt( const SFVEC2I& aPos ) const
const SFVEC4F& POST_SHADER::GetColorAt( const SFVEC2I& aPos ) const
{
return m_color[GetIndex( aPos )];
}
const SFVEC3F& POST_SHADER::GetColorAtNotProtected( const SFVEC2I& aPos ) const
const SFVEC4F& POST_SHADER::GetColorAtNotProtected( const SFVEC2I& aPos ) const
{
return m_color[ aPos.x + m_size.x * aPos.y ];
}
+7 -7
View File
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2015-2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2015-2020 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2015-2024 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
@@ -46,7 +46,7 @@ public:
* @param aShadeColor The result of the shader.
* @return the result of the shade process
*/
virtual SFVEC3F ApplyShadeColor( const SFVEC2I& aShaderPos, const SFVEC3F& aInputColor,
virtual SFVEC4F ApplyShadeColor( const SFVEC2I& aShaderPos, const SFVEC4F& aInputColor,
const SFVEC3F& aShadeColor ) const = 0;
void UpdateSize( const SFVEC2UI& aSize );
@@ -56,10 +56,10 @@ public:
void InitFrame() { m_tmin = FLT_MAX; m_tmax = 0.0f; }
void SetPixelData( unsigned int x, unsigned int y, const SFVEC3F& aNormal,
const SFVEC3F& aColor, const SFVEC3F& aHitPosition,
const SFVEC4F& aColor, const SFVEC3F& aHitPosition,
float aDepth, float aShadowAttFactor );
const SFVEC3F& GetColorAtNotProtected( const SFVEC2I& aPos ) const;
const SFVEC4F& GetColorAtNotProtected( const SFVEC2I& aPos ) const;
void DebugBuffersOutputAsImages() const;
@@ -88,12 +88,12 @@ public:
protected:
const SFVEC3F& GetNormalAt( const SFVEC2F& aPos ) const;
const SFVEC3F& GetColorAt( const SFVEC2F& aPos ) const;
const SFVEC4F& GetColorAt( const SFVEC2F& aPos ) const;
const SFVEC3F& GetPositionAt( const SFVEC2F& aPos ) const;
float GetDepthAt( const SFVEC2F& aPos ) const;
const SFVEC3F& GetNormalAt( const SFVEC2I& aPos ) const;
const SFVEC3F& GetColorAt( const SFVEC2I& aPos ) const;
const SFVEC4F& GetColorAt( const SFVEC2I& aPos ) const;
const SFVEC3F& GetPositionAt( const SFVEC2I& aPos ) const;
const float& GetShadowFactorAt( const SFVEC2I& aPos ) const;
@@ -109,7 +109,7 @@ protected:
SFVEC2UI m_size;
SFVEC3F* m_normals;
SFVEC3F* m_color;
SFVEC4F* m_color;
SFVEC3F* m_wc_hitposition;
float* m_depth;
float* m_shadow_att_factor;
+27 -13
View File
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2015-2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2015-2020 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2015-2024 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
@@ -187,21 +187,21 @@ SFVEC3F POST_SHADER_SSAO::Shade( const SFVEC2I& aShaderPos ) const
ao += aoFF( aShaderPos, ddiff8, n, shadowAt8, shadowAt0, -npw, ph );
gi += giFF( aShaderPos, ddiff , n, shadowAt1, npw, nph) *
giColorCurve( GetColorAt( aShaderPos + SFVEC2I( npw, nph ) ) );
giColorCurveShade( GetColorAt( aShaderPos + SFVEC2I( npw, nph ) ) );
gi += giFF( aShaderPos, ddiff2, n, shadowAt2, npw, -nph) *
giColorCurve( GetColorAt( aShaderPos + SFVEC2I( npw,-nph ) ) );
giColorCurveShade( GetColorAt( aShaderPos + SFVEC2I( npw,-nph ) ) );
gi += giFF( aShaderPos, ddiff3, n, shadowAt3, -npw, nph) *
giColorCurve( GetColorAt( aShaderPos + SFVEC2I( -npw, nph ) ) );
giColorCurveShade( GetColorAt( aShaderPos + SFVEC2I( -npw, nph ) ) );
gi += giFF( aShaderPos, ddiff4, n, shadowAt4, -npw, -nph) *
giColorCurve( GetColorAt( aShaderPos + SFVEC2I( -npw,-nph ) ) );
giColorCurveShade( GetColorAt( aShaderPos + SFVEC2I( -npw,-nph ) ) );
gi += giFF( aShaderPos, ddiff5, n, shadowAt5 , pw, nph) *
giColorCurve( GetColorAt( aShaderPos + SFVEC2I( pw, nph ) ) );
giColorCurveShade( GetColorAt( aShaderPos + SFVEC2I( pw, nph ) ) );
gi += giFF( aShaderPos, ddiff6, n, shadowAt6, pw,-nph) *
giColorCurve( GetColorAt( aShaderPos + SFVEC2I( pw,-nph ) ) );
giColorCurveShade( GetColorAt( aShaderPos + SFVEC2I( pw,-nph ) ) );
gi += giFF( aShaderPos, ddiff7, n, shadowAt7, npw, ph) *
giColorCurve( GetColorAt( aShaderPos + SFVEC2I( npw, ph ) ) );
giColorCurveShade( GetColorAt( aShaderPos + SFVEC2I( npw, ph ) ) );
gi += giFF( aShaderPos, ddiff8, n, shadowAt8, -npw, ph) *
giColorCurve( GetColorAt( aShaderPos + SFVEC2I( -npw, ph ) ) );
giColorCurveShade( GetColorAt( aShaderPos + SFVEC2I( -npw, ph ) ) );
}
// If it received direct light, it shouldn't consider much AO
@@ -227,18 +227,20 @@ SFVEC3F POST_SHADER_SSAO::Shade( const SFVEC2I& aShaderPos ) const
}
SFVEC3F POST_SHADER_SSAO::ApplyShadeColor( const SFVEC2I& aShaderPos, const SFVEC3F& aInputColor,
SFVEC4F POST_SHADER_SSAO::ApplyShadeColor( const SFVEC2I& aShaderPos, const SFVEC4F& aInputColor,
const SFVEC3F& aShadeColor ) const
{
SFVEC3F outColor;
SFVEC4F outColor;
SFVEC3F inColor( aInputColor );
const SFVEC3F subtracted = aInputColor - aShadeColor;
const SFVEC3F mixed = glm::mix( aInputColor, aInputColor * 0.50f - aShadeColor * 0.05f,
const SFVEC3F subtracted = inColor - aShadeColor;
const SFVEC3F mixed = glm::mix( inColor, inColor * 0.50f - aShadeColor * 0.05f,
glm::min( aShadeColor, 1.0f ) );
outColor.r = ( aShadeColor.r < 0.0f ) ? subtracted.r : mixed.r;
outColor.g = ( aShadeColor.g < 0.0f ) ? subtracted.g : mixed.g;
outColor.b = ( aShadeColor.b < 0.0f ) ? subtracted.b : mixed.b;
outColor.a = std::max( aInputColor.a, ( aShadeColor.r + aShadeColor.g + aShadeColor.b ) / 3 );
return outColor;
}
@@ -256,6 +258,18 @@ SFVEC3F POST_SHADER_SSAO::giColorCurve( const SFVEC3F& aColor ) const
}
SFVEC4F POST_SHADER_SSAO::giColorCurve( const SFVEC4F& aColor ) const
{
return SFVEC4F( giColorCurve( SFVEC3F( aColor ) ), aColor.a );
}
SFVEC3F POST_SHADER_SSAO::giColorCurveShade( const SFVEC4F& aColor ) const
{
return giColorCurve( SFVEC3F( aColor ) );
}
SFVEC3F POST_SHADER_SSAO::Blur( const SFVEC2I& aShaderPos ) const
{
const float dCenter = GetDepthAt( aShaderPos );
+4 -2
View File
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2015-2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2015-2020 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2015-2024 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
@@ -40,7 +40,7 @@ public:
explicit POST_SHADER_SSAO( const CAMERA& aCamera );
SFVEC3F Shade(const SFVEC2I& aShaderPos ) const override;
SFVEC3F ApplyShadeColor( const SFVEC2I& aShaderPos, const SFVEC3F& aInputColor,
SFVEC4F ApplyShadeColor( const SFVEC2I& aShaderPos, const SFVEC4F& aInputColor,
const SFVEC3F& aShadeColor ) const override;
SFVEC3F Blur( const SFVEC2I& aShaderPos ) const;
@@ -77,6 +77,8 @@ private:
* @return transformed color.
*/
SFVEC3F giColorCurve( const SFVEC3F& aColor ) const;
SFVEC4F giColorCurve( const SFVEC4F& aColor ) const;
SFVEC3F giColorCurveShade( const SFVEC4F& aColor ) const;
SFVEC3F* m_shadedBuffer;
@@ -437,7 +437,7 @@ BVHBuildNode *BVH_PBRT::recursiveBuild ( std::vector<BVHPrimitiveInfo>& primitiv
(*totalNodes)++;
// !TODO: implement an memory Arena
// !TODO: implement a memory arena
BVHBuildNode *node = static_cast<BVHBuildNode *>( malloc( sizeof( BVHBuildNode ) ) );
m_nodesToFree.push_back( node );
@@ -3,7 +3,7 @@
*
* Copyright (C) 2015-2022 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2023 CERN
* Copyright (C) 2015-2023 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2015-2024 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
@@ -23,7 +23,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "render_3d_raytrace.h"
#include "render_3d_raytrace_base.h"
#include "shapes3D/plane_3d.h"
#include "shapes3D/round_segment_3d.h"
#include "shapes3D/layer_item_3d.h"
@@ -72,7 +72,7 @@ static float TransparencyControl( float aGrayColorValue, float aTransparency )
#define UNITS3D_TO_UNITSPCB ( pcbIUScale.IU_PER_MM )
void RENDER_3D_RAYTRACE::setupMaterials()
void RENDER_3D_RAYTRACE_BASE::setupMaterials()
{
MATERIAL::SetDefaultRefractionRayCount( m_boardAdapter.m_Cfg->m_Render.raytrace_nrsamples_refractions );
MATERIAL::SetDefaultReflectionRayCount( m_boardAdapter.m_Cfg->m_Render.raytrace_nrsamples_reflections );
@@ -170,13 +170,13 @@ void RENDER_3D_RAYTRACE::setupMaterials()
m_materials.m_Floor = BLINN_PHONG_MATERIAL( bgTop * 0.125f, SFVEC3F( 0.0f, 0.0f, 0.0f ),
( SFVEC3F( 1.0f ) - bgTop ) / 3.0f,
0.10f * 128.0f, 0.0f, 0.50f );
0.10f * 128.0f, 1.0f, 0.50f );
m_materials.m_Floor.SetCastShadows( false );
m_materials.m_Floor.SetReflectionRecursionCount( 1 );
}
void RENDER_3D_RAYTRACE::createObject( CONTAINER_3D& aDstContainer, const OBJECT_2D* aObject2D,
void RENDER_3D_RAYTRACE_BASE::createObject( CONTAINER_3D& aDstContainer, const OBJECT_2D* aObject2D,
float aZMin, float aZMax, const MATERIAL* aMaterial,
const SFVEC3F& aObjColor )
{
@@ -227,7 +227,7 @@ void RENDER_3D_RAYTRACE::createObject( CONTAINER_3D& aDstContainer, const OBJECT
}
void RENDER_3D_RAYTRACE::createItemsFromContainer( const BVH_CONTAINER_2D* aContainer2d,
void RENDER_3D_RAYTRACE_BASE::createItemsFromContainer( const BVH_CONTAINER_2D* aContainer2d,
PCB_LAYER_ID aLayer_id,
const MATERIAL* aMaterialLayer,
const SFVEC3F& aLayerColor,
@@ -358,7 +358,7 @@ void RENDER_3D_RAYTRACE::createItemsFromContainer( const BVH_CONTAINER_2D* aCont
extern void buildBoardBoundingBoxPoly( const BOARD* aBoard, SHAPE_POLY_SET& aOutline );
void RENDER_3D_RAYTRACE::Reload( REPORTER* aStatusReporter, REPORTER* aWarningReporter,
void RENDER_3D_RAYTRACE_BASE::Reload( REPORTER* aStatusReporter, REPORTER* aWarningReporter,
bool aOnlyLoadCopperAndShapes )
{
m_reloadRequested = false;
@@ -368,7 +368,7 @@ void RENDER_3D_RAYTRACE::Reload( REPORTER* aStatusReporter, REPORTER* aWarningRe
OBJECT_2D_STATS::Instance().ResetStats();
OBJECT_3D_STATS::Instance().ResetStats();
unsigned stats_startReloadTime = GetRunningMicroSecs();
int64_t stats_startReloadTime = GetRunningMicroSecs();
if( !aOnlyLoadCopperAndShapes )
{
@@ -771,8 +771,8 @@ void RENDER_3D_RAYTRACE::Reload( REPORTER* aStatusReporter, REPORTER* aWarningRe
}
#ifdef PRINT_STATISTICS_3D_VIEWER
unsigned stats_endConvertTime = GetRunningMicroSecs();
unsigned stats_startLoad3DmodelsTime = stats_endConvertTime;
int64_t stats_endConvertTime = GetRunningMicroSecs();
int64_t stats_startLoad3DmodelsTime = stats_endConvertTime;
#endif
if( aStatusReporter )
@@ -781,7 +781,7 @@ void RENDER_3D_RAYTRACE::Reload( REPORTER* aStatusReporter, REPORTER* aWarningRe
load3DModels( m_objectContainer, aOnlyLoadCopperAndShapes );
#ifdef PRINT_STATISTICS_3D_VIEWER
unsigned stats_endLoad3DmodelsTime = GetRunningMicroSecs();
int64_t stats_endLoad3DmodelsTime = GetRunningMicroSecs();
#endif
if( !aOnlyLoadCopperAndShapes )
@@ -817,7 +817,7 @@ void RENDER_3D_RAYTRACE::Reload( REPORTER* aStatusReporter, REPORTER* aWarningRe
const SFVEC3F v2 = SFVEC3F( v1.x, v3.y, v1.z );
const SFVEC3F v4 = SFVEC3F( v3.x, v1.y, v1.z );
SFVEC3F backgroundColor = ConvertSRGBToLinear( m_boardAdapter.m_BgColorTop );
SFVEC3F floorColor = ConvertSRGBToLinear( m_boardAdapter.m_BgColorTop );
TRIANGLE* newTriangle1 = new TRIANGLE( v1, v2, v3 );
TRIANGLE* newTriangle2 = new TRIANGLE( v3, v4, v1 );
@@ -828,8 +828,8 @@ void RENDER_3D_RAYTRACE::Reload( REPORTER* aStatusReporter, REPORTER* aWarningRe
newTriangle1->SetMaterial( &m_materials.m_Floor );
newTriangle2->SetMaterial( &m_materials.m_Floor );
newTriangle1->SetColor( backgroundColor );
newTriangle2->SetColor( backgroundColor );
newTriangle1->SetColor( floorColor );
newTriangle2->SetColor( floorColor );
// Ceiling triangles
const float maxZ = glm::max( containerBBox.Max().z, boardBBox.Max().z );
@@ -848,8 +848,8 @@ void RENDER_3D_RAYTRACE::Reload( REPORTER* aStatusReporter, REPORTER* aWarningRe
newTriangle3->SetMaterial( &m_materials.m_Floor );
newTriangle4->SetMaterial( &m_materials.m_Floor );
newTriangle3->SetColor( backgroundColor );
newTriangle4->SetColor( backgroundColor );
newTriangle3->SetColor( floorColor );
newTriangle4->SetColor( floorColor );
}
}
}
@@ -955,14 +955,14 @@ void RENDER_3D_RAYTRACE::Reload( REPORTER* aStatusReporter, REPORTER* aWarningRe
if( aStatusReporter )
{
// Calculation time in seconds
double calculation_time = (double) GetRunningMicroSecs() - stats_startReloadTime / 1e6;
double calculation_time = (double) ( GetRunningMicroSecs() - stats_startReloadTime ) / 1e6;
aStatusReporter->Report( wxString::Format( _( "Reload time %.3f s" ), calculation_time ) );
}
}
void RENDER_3D_RAYTRACE::insertHole( const PCB_VIA* aVia )
void RENDER_3D_RAYTRACE_BASE::insertHole( const PCB_VIA* aVia )
{
PCB_LAYER_ID top_layer, bottom_layer;
int radiusBUI = ( aVia->GetDrillValue() / 2 );
@@ -993,7 +993,7 @@ void RENDER_3D_RAYTRACE::insertHole( const PCB_VIA* aVia )
}
void RENDER_3D_RAYTRACE::insertHole( const PAD* aPad )
void RENDER_3D_RAYTRACE_BASE::insertHole( const PAD* aPad )
{
const OBJECT_2D* object2d_A = nullptr;
@@ -1164,7 +1164,7 @@ void RENDER_3D_RAYTRACE::insertHole( const PAD* aPad )
}
void RENDER_3D_RAYTRACE::addPadsAndVias()
void RENDER_3D_RAYTRACE_BASE::addPadsAndVias()
{
if( !m_boardAdapter.GetBoard() )
return;
@@ -1193,7 +1193,7 @@ void RENDER_3D_RAYTRACE::addPadsAndVias()
}
void RENDER_3D_RAYTRACE::load3DModels( CONTAINER_3D& aDstContainer, bool aSkipMaterialInformation )
void RENDER_3D_RAYTRACE_BASE::load3DModels( CONTAINER_3D& aDstContainer, bool aSkipMaterialInformation )
{
if( !m_boardAdapter.GetBoard() )
return;
@@ -1243,12 +1243,8 @@ void RENDER_3D_RAYTRACE::load3DModels( CONTAINER_3D& aDstContainer, bool aSkipMa
fpMatrix, SFVEC3F( modelunit_to_3d_units_factor, modelunit_to_3d_units_factor,
modelunit_to_3d_units_factor ) );
BOARD_ITEM* boardItem = dynamic_cast<BOARD_ITEM*>( fp );
// Get the list of model files for this model
S3D_CACHE* cacheMgr = m_boardAdapter.Get3dCacheManager();
auto sM = fp->Models().begin();
auto eM = fp->Models().end();
wxString libraryName = fp->GetFPID().GetLibNickname();
@@ -1271,51 +1267,45 @@ void RENDER_3D_RAYTRACE::load3DModels( CONTAINER_3D& aDstContainer, bool aSkipMa
}
}
while( sM != eM )
for( FP_3DMODEL& model : fp->Models() )
{
if( ( static_cast<float>( sM->m_Opacity ) > FLT_EPSILON )
&& ( sM->m_Show && !sM->m_Filename.empty() ) )
// get it from cache
const S3DMODEL* modelPtr =
cacheMgr->GetModel( model.m_Filename, footprintBasePath, fp );
// only add it if the return is not NULL.
if( modelPtr )
{
// get it from cache
const S3DMODEL* modelPtr =
cacheMgr->GetModel( sM->m_Filename, footprintBasePath );
glm::mat4 modelMatrix = fpMatrix;
// only add it if the return is not NULL.
if( modelPtr )
{
glm::mat4 modelMatrix = fpMatrix;
modelMatrix = glm::translate( modelMatrix,
SFVEC3F( model.m_Offset.x, model.m_Offset.y, model.m_Offset.z ) );
modelMatrix = glm::translate( modelMatrix,
SFVEC3F( sM->m_Offset.x, sM->m_Offset.y, sM->m_Offset.z ) );
modelMatrix = glm::rotate( modelMatrix,
(float) -( model.m_Rotation.z / 180.0f ) * glm::pi<float>(),
SFVEC3F( 0.0f, 0.0f, 1.0f ) );
modelMatrix = glm::rotate( modelMatrix,
(float) -( sM->m_Rotation.z / 180.0f ) * glm::pi<float>(),
SFVEC3F( 0.0f, 0.0f, 1.0f ) );
modelMatrix = glm::rotate( modelMatrix,
(float) -( model.m_Rotation.y / 180.0f ) * glm::pi<float>(),
SFVEC3F( 0.0f, 1.0f, 0.0f ) );
modelMatrix = glm::rotate( modelMatrix,
(float) -( sM->m_Rotation.y / 180.0f ) * glm::pi<float>(),
SFVEC3F( 0.0f, 1.0f, 0.0f ) );
modelMatrix = glm::rotate( modelMatrix,
(float) -( model.m_Rotation.x / 180.0f ) * glm::pi<float>(),
SFVEC3F( 1.0f, 0.0f, 0.0f ) );
modelMatrix = glm::rotate( modelMatrix,
(float) -( sM->m_Rotation.x / 180.0f ) * glm::pi<float>(),
SFVEC3F( 1.0f, 0.0f, 0.0f ) );
modelMatrix = glm::scale( modelMatrix,
SFVEC3F( model.m_Scale.x, model.m_Scale.y, model.m_Scale.z ) );
modelMatrix = glm::scale( modelMatrix,
SFVEC3F( sM->m_Scale.x, sM->m_Scale.y, sM->m_Scale.z ) );
addModels( aDstContainer, modelPtr, modelMatrix, (float) sM->m_Opacity,
aSkipMaterialInformation, boardItem );
}
addModels( aDstContainer, modelPtr, modelMatrix, (float) model.m_Opacity,
aSkipMaterialInformation, fp );
}
++sM;
}
}
}
}
MODEL_MATERIALS* RENDER_3D_RAYTRACE::getModelMaterial( const S3DMODEL* a3DModel )
MODEL_MATERIALS* RENDER_3D_RAYTRACE_BASE::getModelMaterial( const S3DMODEL* a3DModel )
{
MODEL_MATERIALS* materialVector;
@@ -1418,7 +1408,7 @@ MODEL_MATERIALS* RENDER_3D_RAYTRACE::getModelMaterial( const S3DMODEL* a3DModel
}
void RENDER_3D_RAYTRACE::addModels( CONTAINER_3D& aDstContainer, const S3DMODEL* a3DModel,
void RENDER_3D_RAYTRACE_BASE::addModels( CONTAINER_3D& aDstContainer, const S3DMODEL* a3DModel,
const glm::mat4& aModelMatrix, float aFPOpacity,
bool aSkipMaterialInformation, BOARD_ITEM* aBoardItem )
{
@@ -1432,13 +1422,12 @@ void RENDER_3D_RAYTRACE::addModels( CONTAINER_3D& aDstContainer, const S3DMODEL*
wxASSERT( a3DModel->m_Meshes != nullptr );
wxASSERT( a3DModel->m_MaterialsSize > 0 );
wxASSERT( a3DModel->m_MeshesSize > 0 );
wxASSERT( aFPOpacity > 0.0f );
wxASSERT( aFPOpacity <= 1.0f );
if( aFPOpacity > 1.0f )
{
aFPOpacity = 1.0f;
}
if( aFPOpacity < 0.0f )
aFPOpacity = 0.0f;
if( ( a3DModel->m_Materials != nullptr ) && ( a3DModel->m_Meshes != nullptr )
&& ( a3DModel->m_MaterialsSize > 0 ) && ( a3DModel->m_MeshesSize > 0 ) )
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2015-2020 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2015-2021 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2015-2024 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
@@ -22,10 +22,9 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef RENDER_3D_RAYTRACE_H
#define RENDER_3D_RAYTRACE_H
#ifndef RENDER_3D_RAYTRACE_BASE_H
#define RENDER_3D_RAYTRACE_BASE_H
#include "../../common_ogl/openGL_includes.h"
#include "accelerators/container_3d.h"
#include "accelerators/accelerator_3d.h"
#include "../render_3d_base.h"
@@ -52,19 +51,16 @@ typedef enum
} RT_RENDER_STATE;
class RENDER_3D_RAYTRACE : public RENDER_3D_BASE
class RENDER_3D_RAYTRACE_BASE : public RENDER_3D_BASE
{
public:
// TODO: Take into account board thickness so that the camera won't move inside of the board
// when facing it perpendicularly.
static constexpr float MIN_DISTANCE_IU = 4 * PCB_IU_PER_MM;
explicit RENDER_3D_RAYTRACE( EDA_3D_CANVAS* aCanvas, BOARD_ADAPTER& aAdapter, CAMERA& aCamera );
explicit RENDER_3D_RAYTRACE_BASE( BOARD_ADAPTER& aAdapter, CAMERA& aCamera );
~RENDER_3D_RAYTRACE();
void SetCurWindowSize( const wxSize& aSize ) override;
bool Redraw( bool aIsMoving, REPORTER* aStatusReporter, REPORTER* aWarningReporter ) override;
~RENDER_3D_RAYTRACE_BASE();
int GetWaitForEditingTimeOut() override;
@@ -73,34 +69,32 @@ public:
BOARD_ITEM *IntersectBoardItem( const RAY& aRay );
private:
bool initializeOpenGL();
void initializeNewWindowSize();
void initPbo();
void deletePbo();
protected:
virtual void initPbo() = 0;
virtual void deletePbo() = 0;
void createItemsFromContainer( const BVH_CONTAINER_2D* aContainer2d, PCB_LAYER_ID aLayer_id,
const MATERIAL* aMaterialLayer, const SFVEC3F& aLayerColor,
float aLayerZOffset );
void restartRenderState();
void renderTracing( GLubyte* ptrPBO, REPORTER* aStatusReporter );
void postProcessShading( GLubyte* ptrPBO, REPORTER* aStatusReporter );
void postProcessBlurFinish( GLubyte* ptrPBO, REPORTER* aStatusReporter );
void renderBlockTracing( GLubyte* ptrPBO , signed int iBlock );
void renderFinalColor( GLubyte* ptrPBO, const SFVEC3F& rgbColor,
void renderTracing( uint8_t* ptrPBO, REPORTER* aStatusReporter );
void postProcessShading( uint8_t* ptrPBO, REPORTER* aStatusReporter );
void postProcessBlurFinish( uint8_t* ptrPBO, REPORTER* aStatusReporter );
void renderBlockTracing( uint8_t* ptrPBO , signed int iBlock );
void renderFinalColor( uint8_t* ptrPBO, const SFVEC4F& rgbColor,
bool applyColorSpaceConversion );
void renderRayPackets( const SFVEC3F* bgColorY, const RAY* aRayPkt, HITINFO_PACKET* aHitPacket,
bool is_testShadow, SFVEC3F* aOutHitColor );
void renderRayPackets( const SFVEC4F* bgColorY, const RAY* aRayPkt, HITINFO_PACKET* aHitPacket,
bool is_testShadow, SFVEC4F* aOutHitColor );
void renderAntiAliasPackets( const SFVEC3F* aBgColorY, const HITINFO_PACKET* aHitPck_X0Y0,
void renderAntiAliasPackets( const SFVEC4F* aBgColorY, const HITINFO_PACKET* aHitPck_X0Y0,
const HITINFO_PACKET* aHitPck_AA_X1Y1, const RAY* aRayPck,
SFVEC3F* aOutHitColor );
SFVEC4F* aOutHitColor );
// Materials
void setupMaterials();
SFVEC3F shadeHit( const SFVEC3F& aBgColor, const RAY& aRay, HITINFO& aHitInfo,
SFVEC4F shadeHit( const SFVEC4F& aBgColor, const RAY& aRay, HITINFO& aHitInfo,
bool aIsInsideObject, unsigned int aRecursiveLevel,
bool is_testShadow ) const;
@@ -125,8 +119,10 @@ private:
void initializeBlockPositions();
void render( GLubyte* ptrPBO, REPORTER* aStatusReporter );
void renderPreview( GLubyte* ptrPBO );
void render( uint8_t* ptrPBO, REPORTER* aStatusReporter );
void renderPreview( uint8_t* ptrPBO );
static SFVEC4F premultiplyAlpha( const SFVEC4F& aInput );
struct
{
@@ -148,13 +144,14 @@ private:
BRUSHED_METAL_NORMAL m_brushedMetalMaterial;
SILK_SCREEN_NORMAL m_silkScreenMaterial;
bool m_is_canvas_initialized;
bool m_isPreview;
/// State used on quality render
RT_RENDER_STATE m_renderState;
/// Time that the render starts
unsigned long int m_renderStartTime;
int64_t m_renderStartTime;
/// Save the number of blocks progress of the render
size_t m_blockRenderProgressCount;
@@ -165,10 +162,8 @@ private:
DIRECTIONAL_LIGHT* m_cameraLight;
bool m_openglSupportsVertexBufferObjects;
GLuint m_pboId;
GLuint m_pboDataSize;
/*GLuint m_pboId;
GLuint m_pboDataSize;*/
CONTAINER_3D m_objectContainer;
@@ -180,8 +175,8 @@ private:
ACCELERATOR_3D* m_accelerator;
SFVEC3F m_backgroundColorTop;
SFVEC3F m_backgroundColorBottom;
SFVEC4F m_backgroundColorTop;
SFVEC4F m_backgroundColorBottom;
///< Used to see if the windows size changed.
wxSize m_oldWindowsSize;
@@ -218,8 +213,10 @@ private:
#ifdef USE_SRGB_SPACE
extern SFVEC3F ConvertSRGBToLinear( const SFVEC3F& aSRGBcolor );
extern SFVEC4F ConvertSRGBAToLinear( const SFVEC4F& aSRGBAcolor );
#else
#define ConvertSRGBToLinear( v ) ( v )
#define ConvertSRGBAToLinear( v ) ( v )
#endif
#endif // RENDER_3D_RAYTRACE_H
#endif // RENDER_3D_RAYTRACE_BASE_H
@@ -0,0 +1,243 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2015-2020 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2024 Alex Shvartzkop <dudesuchamazing@gmail.com>
* Copyright (C) 2015-2024 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
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <gal/opengl/kiglew.h> // Must be included first
#include <algorithm>
#include <atomic>
#include <chrono>
#include <thread>
#include "render_3d_raytrace_gl.h"
#include "../common_ogl/ogl_utils.h"
#include <core/profile.h> // To use GetRunningMicroSecs or another profiling utility
#include <wx/log.h>
RENDER_3D_RAYTRACE_GL::RENDER_3D_RAYTRACE_GL( EDA_3D_CANVAS* aCanvas, BOARD_ADAPTER& aAdapter, CAMERA& aCamera ) :
RENDER_3D_RAYTRACE_BASE( aAdapter, aCamera )
{
wxLogTrace( m_logTrace, wxT( "RENDER_3D_RAYTRACE_GL::RENDER_3D_RAYTRACE_GL" ) );
m_openglSupportsVertexBufferObjects = false;
m_pboId = GL_NONE;
m_pboDataSize = 0;
}
RENDER_3D_RAYTRACE_GL::~RENDER_3D_RAYTRACE_GL()
{
deletePbo();
}
void RENDER_3D_RAYTRACE_GL::deletePbo()
{
// Delete PBO if it was created
if( m_openglSupportsVertexBufferObjects )
{
if( glIsBufferARB( m_pboId ) )
glDeleteBuffers( 1, &m_pboId );
m_pboId = GL_NONE;
}
}
void RENDER_3D_RAYTRACE_GL::SetCurWindowSize( const wxSize& aSize )
{
if( m_windowSize != aSize )
{
m_windowSize = aSize;
glViewport( 0, 0, m_windowSize.x, m_windowSize.y );
initPbo();
}
}
bool RENDER_3D_RAYTRACE_GL::Redraw( bool aIsMoving, REPORTER* aStatusReporter,
REPORTER* aWarningReporter )
{
bool requestRedraw = false;
// Initialize openGL if need
if( !m_canvasInitialized )
{
m_canvasInitialized = true;
//aIsMoving = true;
requestRedraw = true;
// It will assign the first time the windows size, so it will now
// revert to preview mode the first time the Redraw is called
m_oldWindowsSize = m_windowSize;
initializeBlockPositions();
}
std::unique_ptr<BUSY_INDICATOR> busy = CreateBusyIndicator();
// Reload board if it was requested
if( m_reloadRequested )
{
if( aStatusReporter )
aStatusReporter->Report( _( "Loading..." ) );
//aIsMoving = true;
requestRedraw = true;
Reload( aStatusReporter, aWarningReporter, false );
}
// Recalculate constants if windows size was changed
if( m_windowSize != m_oldWindowsSize )
{
m_oldWindowsSize = m_windowSize;
aIsMoving = true;
requestRedraw = true;
initializeBlockPositions();
}
// Clear buffers
glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );
glClearDepth( 1.0f );
glClearStencil( 0x00 );
glClear( GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT );
// 4-byte pixel alignment
glPixelStorei( GL_UNPACK_ALIGNMENT, 4 );
glDisable( GL_STENCIL_TEST );
glDisable( GL_LIGHTING );
glDisable( GL_COLOR_MATERIAL );
glDisable( GL_DEPTH_TEST );
glDisable( GL_TEXTURE_2D );
glDisable( GL_BLEND );
glDisable( GL_MULTISAMPLE );
const bool was_camera_changed = m_camera.ParametersChanged();
if( requestRedraw || aIsMoving || was_camera_changed )
m_renderState = RT_RENDER_STATE_MAX; // Set to an invalid state,
// so it will restart again latter
// This will only render if need, otherwise it will redraw the PBO on the screen again
if( aIsMoving || was_camera_changed )
{
// Set head light (camera view light) with the opposite direction of the camera
if( m_cameraLight )
m_cameraLight->SetDirection( -m_camera.GetDir() );
OglDrawBackground( premultiplyAlpha( m_boardAdapter.m_BgColorTop ),
premultiplyAlpha( m_boardAdapter.m_BgColorBot ) );
// Bind PBO
glBindBufferARB( GL_PIXEL_UNPACK_BUFFER_ARB, m_pboId );
// Get the PBO pixel pointer to write the data
uint8_t* ptrPBO = (uint8_t *)glMapBufferARB( GL_PIXEL_UNPACK_BUFFER_ARB,
GL_WRITE_ONLY_ARB );
if( ptrPBO )
{
renderPreview( ptrPBO );
// release pointer to mapping buffer, this initialize the coping to PBO
glUnmapBufferARB( GL_PIXEL_UNPACK_BUFFER_ARB );
}
glWindowPos2i( m_xoffset, m_yoffset );
}
else
{
// Bind PBO
glBindBufferARB( GL_PIXEL_UNPACK_BUFFER_ARB, m_pboId );
if( m_renderState != RT_RENDER_STATE_FINISH )
{
// Get the PBO pixel pointer to write the data
uint8_t* ptrPBO = (uint8_t *)glMapBufferARB( GL_PIXEL_UNPACK_BUFFER_ARB,
GL_WRITE_ONLY_ARB );
if( ptrPBO )
{
render( ptrPBO, aStatusReporter );
if( m_renderState != RT_RENDER_STATE_FINISH )
requestRedraw = true;
// release pointer to mapping buffer, this initialize the coping to PBO
glUnmapBufferARB( GL_PIXEL_UNPACK_BUFFER_ARB );
}
}
if( m_renderState == RT_RENDER_STATE_FINISH )
{
glClear( GL_COLOR_BUFFER_BIT );
}
glWindowPos2i( m_xoffset, m_yoffset );
}
// This way it will blend the progress rendering with the last buffer. eg:
// if it was called after a openGL.
glEnable( GL_BLEND );
glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
glEnable( GL_ALPHA_TEST );
glDrawPixels( m_realBufferSize.x, m_realBufferSize.y, GL_RGBA, GL_UNSIGNED_BYTE, 0 );
glBindBufferARB( GL_PIXEL_UNPACK_BUFFER_ARB, 0 );
return requestRedraw;
}
void RENDER_3D_RAYTRACE_GL::initPbo()
{
if( GLEW_ARB_pixel_buffer_object )
{
m_openglSupportsVertexBufferObjects = true;
// Try to delete vbo if it was already initialized
deletePbo();
// Learn about Pixel buffer objects at:
// http://www.songho.ca/opengl/gl_pbo.html
// http://web.eecs.umich.edu/~sugih/courses/eecs487/lectures/25-PBO+Mipmapping.pdf
// "create 2 pixel buffer objects, you need to delete them when program exits.
// glBufferDataARB with NULL pointer reserves only memory space."
// This sets the number of RGBA pixels
m_pboDataSize = m_realBufferSize.x * m_realBufferSize.y * 4;
glGenBuffersARB( 1, &m_pboId );
glBindBufferARB( GL_PIXEL_UNPACK_BUFFER_ARB, m_pboId );
glBufferDataARB( GL_PIXEL_UNPACK_BUFFER_ARB, m_pboDataSize, 0, GL_STREAM_DRAW_ARB );
glBindBufferARB( GL_PIXEL_UNPACK_BUFFER_ARB, 0 );
wxLogTrace( m_logTrace,
wxT( "RENDER_3D_RAYTRACE_GL:: GLEW_ARB_pixel_buffer_object is supported" ) );
}
}
@@ -1,8 +1,9 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2015-2016 Cirilo Bernardo <cirilo.bernardo@gmail.com>
* Copyright (C) 2020-2021 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2015-2020 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2024 Alex Shvartzkop <dudesuchamazing@gmail.com>
* Copyright (C) 2015-2024 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
@@ -22,31 +23,32 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <dialogs/dialog_configure_paths.h>
#ifndef RENDER_3D_RAYTRACE_GL_H
#define RENDER_3D_RAYTRACE_GL_H
#include "3d_info.h"
#include "3d_cache.h"
#include "3d_cache_dialogs.h"
#include "dialog_select_3d_model.h"
#include "../../common_ogl/openGL_includes.h"
#include "render_3d_raytrace_base.h"
bool S3D::Select3DModel( wxWindow* aParent, S3D_CACHE* aCache, wxString& prevModelSelectDir,
int& prevModelWildcard, FP_3DMODEL* aModel )
class RENDER_3D_RAYTRACE_GL : public RENDER_3D_RAYTRACE_BASE
{
if( nullptr == aModel )
return false;
public:
explicit RENDER_3D_RAYTRACE_GL( EDA_3D_CANVAS* aCanvas, BOARD_ADAPTER& aAdapter,
CAMERA& aCamera );
DIALOG_SELECT_3DMODEL dm( aParent, aCache, aModel, prevModelSelectDir, prevModelWildcard );
~RENDER_3D_RAYTRACE_GL();
// Use QuasiModal so that Configure3DPaths (and its help window) will work
return dm.ShowQuasiModal() == wxID_OK;
}
void SetCurWindowSize( const wxSize& aSize ) override;
bool Redraw( bool aIsMoving, REPORTER* aStatusReporter, REPORTER* aWarningReporter ) override;
protected:
void initPbo() override;
void deletePbo() override;
bool m_openglSupportsVertexBufferObjects;
GLuint m_pboId;
GLuint m_pboDataSize;
};
bool S3D::Configure3DPaths( wxWindow* aParent, FILENAME_RESOLVER* aResolver )
{
DIALOG_CONFIGURE_PATHS dlg( aParent );
// Use QuasiModal so that HTML help window will work
return( dlg.ShowQuasiModal() == wxID_OK );
}
#endif // RENDER_3D_RAYTRACE_GL_H
@@ -0,0 +1,159 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2015-2020 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2024 Alex Shvartzkop <dudesuchamazing@gmail.com>
* Copyright (C) 2015-2024 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
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "render_3d_raytrace_ram.h"
#include <wx/log.h>
RENDER_3D_RAYTRACE_RAM::RENDER_3D_RAYTRACE_RAM( BOARD_ADAPTER& aAdapter, CAMERA& aCamera ) :
RENDER_3D_RAYTRACE_BASE( aAdapter, aCamera ),
m_outputBuffer( nullptr ),
m_pboDataSize( 0 )
{
}
RENDER_3D_RAYTRACE_RAM::~RENDER_3D_RAYTRACE_RAM()
{
deletePbo();
}
uint8_t* RENDER_3D_RAYTRACE_RAM::GetBuffer()
{
return m_outputBuffer;
}
wxSize RENDER_3D_RAYTRACE_RAM::GetRealBufferSize()
{
return wxSize( m_realBufferSize.x, m_realBufferSize.y );
}
void RENDER_3D_RAYTRACE_RAM::deletePbo()
{
delete[] m_outputBuffer;
m_outputBuffer = nullptr;
}
void RENDER_3D_RAYTRACE_RAM::SetCurWindowSize( const wxSize& aSize )
{
if( m_windowSize != aSize )
{
m_windowSize = aSize;
initPbo();
}
}
bool RENDER_3D_RAYTRACE_RAM::Redraw( bool aIsMoving, REPORTER* aStatusReporter,
REPORTER* aWarningReporter )
{
bool requestRedraw = false;
// Initialize openGL if need
if( !m_canvasInitialized )
{
m_canvasInitialized = true;
//aIsMoving = true;
requestRedraw = true;
// It will assign the first time the windows size, so it will now
// revert to preview mode the first time the Redraw is called
m_oldWindowsSize = m_windowSize;
initializeBlockPositions();
}
std::unique_ptr<BUSY_INDICATOR> busy = CreateBusyIndicator();
// Reload board if it was requested
if( m_reloadRequested )
{
if( aStatusReporter )
aStatusReporter->Report( _( "Loading..." ) );
//aIsMoving = true;
requestRedraw = true;
Reload( aStatusReporter, aWarningReporter, false );
}
// Recalculate constants if windows size was changed
if( m_windowSize != m_oldWindowsSize )
{
m_oldWindowsSize = m_windowSize;
aIsMoving = true;
requestRedraw = true;
initializeBlockPositions();
}
const bool was_camera_changed = m_camera.ParametersChanged();
if( requestRedraw || aIsMoving || was_camera_changed )
m_renderState = RT_RENDER_STATE_MAX; // Set to an invalid state,
// so it will restart again latter
// This will only render if need, otherwise it will redraw the PBO on the screen again
if( aIsMoving || was_camera_changed )
{
// Set head light (camera view light) with the opposite direction of the camera
if( m_cameraLight )
m_cameraLight->SetDirection( -m_camera.GetDir() );
if( m_outputBuffer )
{
renderPreview( m_outputBuffer );
}
}
else
{
if( m_renderState != RT_RENDER_STATE_FINISH )
{
if( m_outputBuffer )
{
render( m_outputBuffer, aStatusReporter );
if( m_renderState != RT_RENDER_STATE_FINISH )
requestRedraw = true;
}
}
}
return requestRedraw;
}
void RENDER_3D_RAYTRACE_RAM::initPbo()
{
deletePbo();
m_pboDataSize = m_realBufferSize.x * m_realBufferSize.y * 4;
m_outputBuffer = new uint8_t[m_pboDataSize]();
}
@@ -0,0 +1,58 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2015-2020 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2024 Alex Shvartzkop <dudesuchamazing@gmail.com>
* Copyright (C) 2015-2024 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
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef RENDER_3D_RAYTRACE_RAM_H
#define RENDER_3D_RAYTRACE_RAM_H
#include "render_3d_raytrace_base.h"
class RENDER_3D_RAYTRACE_RAM : public RENDER_3D_RAYTRACE_BASE
{
public:
// TODO: Take into account board thickness so that the camera won't move inside of the board
// when facing it perpendicularly.
static constexpr float MIN_DISTANCE_IU = 4 * PCB_IU_PER_MM;
explicit RENDER_3D_RAYTRACE_RAM( BOARD_ADAPTER& aAdapter, CAMERA& aCamera );
~RENDER_3D_RAYTRACE_RAM();
uint8_t* GetBuffer();
wxSize GetRealBufferSize();
void SetCurWindowSize( const wxSize& aSize ) override;
bool Redraw( bool aIsMoving, REPORTER* aStatusReporter, REPORTER* aWarningReporter ) override;
private:
void initPbo() override;
void deletePbo() override;
uint8_t* m_outputBuffer;
uint32_t m_pboDataSize;
};
#endif // RENDER_3D_RAYTRACE_RAM_H
@@ -31,6 +31,7 @@
#define _BBOX_3D_H_
#include <plugins/3dapi/xv3d_types.h> // SFVEC2F
#include <glm/mat4x4.hpp>
struct RAY;
+3 -4
View File
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2015-2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 1992-2024 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
@@ -44,13 +44,12 @@
const wxChar* RENDER_3D_BASE::m_logTrace = wxT( "KI_TRACE_3D_RENDER" );
RENDER_3D_BASE::RENDER_3D_BASE( EDA_3D_CANVAS* aCanvas, BOARD_ADAPTER& aBoardAdapter, CAMERA& aCamera ) :
RENDER_3D_BASE::RENDER_3D_BASE( BOARD_ADAPTER& aBoardAdapter, CAMERA& aCamera ) :
m_boardAdapter( aBoardAdapter ),
m_camera( aCamera )
{
wxLogTrace( m_logTrace, wxT( "RENDER_3D_BASE::RENDER_3D_BASE" ) );
m_canvas = aCanvas;
m_is_opengl_initialized = false;
m_canvasInitialized = false;
m_windowSize = wxSize( -1, -1 );
m_reloadRequested = true;
}
+4 -7
View File
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2015-2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 1992-2024 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
@@ -42,7 +42,7 @@
class RENDER_3D_BASE
{
public:
explicit RENDER_3D_BASE( EDA_3D_CANVAS* aCanvas, BOARD_ADAPTER& aBoardAdapter, CAMERA& aCamera );
explicit RENDER_3D_BASE( BOARD_ADAPTER& aBoardAdapter, CAMERA& aCamera );
virtual ~RENDER_3D_BASE() = 0;
@@ -98,16 +98,13 @@ protected:
*/
std::unique_ptr<BUSY_INDICATOR> CreateBusyIndicator() const;
///< the canvas to display the scene
EDA_3D_CANVAS* m_canvas;
///< Settings reference in use for this render.
BOARD_ADAPTER& m_boardAdapter;
CAMERA& m_camera;
///< Flag if the opengl specific for this render was already initialized.
bool m_is_opengl_initialized;
///< Flag if the canvas specific for this render was already initialized.
bool m_canvasInitialized;
///< @todo This must be reviewed in order to flag change types.
bool m_reloadRequested;
+17 -3
View File
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2015-2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2015-2020 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2015-2024 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
@@ -38,11 +38,24 @@
// stdlib
#include <algorithm>
TRACK_BALL::TRACK_BALL( float aInitialDistance ) :
CAMERA( aInitialDistance )
TRACK_BALL::TRACK_BALL( float aInitialDistance ) : CAMERA( aInitialDistance )
{
wxLogTrace( m_logTrace, wxT( "TRACK_BALL::TRACK_BALL" ) );
initQuat();
}
TRACK_BALL::TRACK_BALL( SFVEC3F aInitPos, SFVEC3F aLookat, PROJECTION_TYPE aProjectionType ) :
CAMERA( aInitPos, aLookat, aProjectionType )
{
wxLogTrace( m_logTrace, wxT( "TRACK_BALL::TRACK_BALL" ) );
initQuat();
}
void TRACK_BALL::initQuat()
{
memset( m_quat_t0, 0, sizeof( m_quat_t0 ) );
memset( m_quat_t1, 0, sizeof( m_quat_t1 ) );
@@ -50,6 +63,7 @@ TRACK_BALL::TRACK_BALL( float aInitialDistance ) :
trackball( m_quat_t1, 0.0, 0.0, 0.0, 0.0 );
}
void TRACK_BALL::Drag( const wxPoint& aNewMousePosition )
{
m_parametersChanged = true;
+4 -1
View File
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2015-2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2015-2020 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2015-2024 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,6 +37,7 @@ class TRACK_BALL : public CAMERA
{
public:
explicit TRACK_BALL( float aInitialDistance );
explicit TRACK_BALL( SFVEC3F aInitPos, SFVEC3F aLookat, PROJECTION_TYPE aProjectionType );
virtual ~TRACK_BALL()
{
@@ -57,6 +58,8 @@ public:
void Interpolate( float t ) override;
private:
void initQuat();
/**
* interpolate quaternions of the trackball
*/
+5 -4
View File
@@ -5,7 +5,7 @@
* Copyright (C) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
* Copyright (C) 2013 Wayne Stambaugh <stambaughw@gmail.com>
* Copyright (C) 2023 CERN
* Copyright (C) 1992-2023 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 1992-2024 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
@@ -54,16 +54,17 @@ void EDA_3D_VIEWER_FRAME::ReCreateMainToolbar()
// Set up toolbar
m_mainToolBar->AddTool( ID_RELOAD3D_BOARD, wxEmptyString,
KiScaledBitmap( BITMAPS::import3d, this ), _( "Reload board" ) );
KiBitmapBundle( BITMAPS::import3d ),
_( "Reload board" ) );
m_mainToolBar->AddScaledSeparator( this );
m_mainToolBar->AddTool( ID_TOOL_SCREENCOPY_TOCLIBBOARD, wxEmptyString,
KiScaledBitmap( BITMAPS::copy, this ),
KiBitmapBundle( BITMAPS::copy ),
_( "Copy 3D image to clipboard" ) );
m_mainToolBar->AddScaledSeparator( this );
m_mainToolBar->AddTool( ID_RENDER_CURRENT_VIEW, wxEmptyString,
KiScaledBitmap( BITMAPS::render_mode, this ),
KiBitmapBundle( BITMAPS::render_mode ),
_( "Render current view using Raytracing" ), wxITEM_CHECK );
m_mainToolBar->AddScaledSeparator( this );
+43 -34
View File
@@ -3,7 +3,7 @@
*
* Copyright (C) 2015-2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2023 CERN
* Copyright (C) 1992-2023 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 1992-2024 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
@@ -38,6 +38,7 @@
#include <3d_viewer/tools/eda_3d_actions.h>
#include <3d_viewer/tools/eda_3d_controller.h>
#include <3d_viewer/tools/eda_3d_conditions.h>
#include <board.h>
#include <advanced_config.h>
#include <bitmaps.h>
#include <board_design_settings.h>
@@ -113,11 +114,11 @@ EDA_3D_VIEWER_FRAME::EDA_3D_VIEWER_FRAME( KIWAY* aKiway, PCB_BASE_FRAME* aParent
SetStatusWidths( arrayDim( status_dims ), status_dims );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EDA_3D_VIEWER_SETTINGS* cfg = mgr.GetAppSettings<EDA_3D_VIEWER_SETTINGS>();
EDA_3D_VIEWER_SETTINGS* cfg = mgr.GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
ANTIALIASING_MODE aaMode = static_cast<ANTIALIASING_MODE>( cfg->m_Render.opengl_AA_mode );
m_canvas = new EDA_3D_CANVAS( this, OGL_ATT_LIST::GetAttributesList( aaMode ), m_boardAdapter,
m_currentCamera,
m_canvas = new EDA_3D_CANVAS( this, OGL_ATT_LIST::GetAttributesList( aaMode, true ),
m_boardAdapter, m_currentCamera,
PROJECT_PCB::Get3DCacheManager( &Prj() ) );
m_appearancePanel = new APPEARANCE_CONTROLS_3D( this, GetCanvas() );
@@ -388,12 +389,13 @@ void EDA_3D_VIEWER_FRAME::handleIconizeEvent( wxIconizeEvent& aEvent )
void EDA_3D_VIEWER_FRAME::ReloadRequest()
{
if( m_appearancePanel )
m_appearancePanel->UpdateLayerCtls();
// This will schedule a request to load later
// ReloadRequest also updates the board pointer so always call it first
if( m_canvas )
m_canvas->ReloadRequest( GetBoard(), PROJECT_PCB::Get3DCacheManager( &Prj() ) );
if( m_appearancePanel )
m_appearancePanel->UpdateLayerCtls();
}
@@ -478,7 +480,7 @@ void EDA_3D_VIEWER_FRAME::Process_Special_Functions( wxCommandEvent &event )
case ID_MENU3D_RESET_DEFAULTS:
{
auto cfg = Pgm().GetSettingsManager().GetAppSettings<EDA_3D_VIEWER_SETTINGS>();
auto cfg = Pgm().GetSettingsManager().GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
cfg->ResetToDefaults();
LoadSettings( cfg );
@@ -560,14 +562,15 @@ void EDA_3D_VIEWER_FRAME::LoadSettings( APP_SETTINGS_BASE *aCfg )
{
EDA_BASE_FRAME::LoadSettings( aCfg );
EDA_3D_VIEWER_SETTINGS* cfg = dynamic_cast<EDA_3D_VIEWER_SETTINGS*>( aCfg );
wxASSERT( cfg );
// Dynamic_cast here will fail on Mac when called from CvPCB.
EDA_3D_VIEWER_SETTINGS* cfg = static_cast<EDA_3D_VIEWER_SETTINGS*>( aCfg );
wxLogTrace( m_logTrace, wxT( "EDA_3D_VIEWER_FRAME::LoadSettings" ) );
if( cfg )
{
m_boardAdapter.m_Cfg = cfg;
applySettings( cfg );
m_boardAdapter.SetBoard( GetBoard() );
// When opening the 3D viewer, we use the OpenGL mode, never the ray tracing engine
@@ -575,28 +578,20 @@ void EDA_3D_VIEWER_FRAME::LoadSettings( APP_SETTINGS_BASE *aCfg )
// (freeze window) with large boards.
m_boardAdapter.m_Cfg->m_Render.engine = RENDER_ENGINE::OPENGL;
m_canvas->SetAnimationEnabled( cfg->m_Camera.animation_enabled );
m_canvas->SetMovingSpeedMultiplier( cfg->m_Camera.moving_speed_multiplier );
m_canvas->SetProjectionMode( cfg->m_Camera.projection_mode );
m_canvas->SetVcSettings( EDA_DRAW_PANEL_GAL::GetVcSettings() );
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().GetVisibleLayers(),
GetAdapter().GetLayerColors() );
GetAdapter().GetDefaultVisibleLayers(),
GetAdapter().GetDefaultColors() );
}
if( Pgm().GetSettingsManager().GetColorSettings()->GetUseBoardStackupColors() )
cfg->m_CurrentPreset = FOLLOW_PCB;
else
cfg->m_CurrentPreset = legacyColorsPresetName;
cfg->m_CurrentPreset = FOLLOW_PLOT_SETTINGS;
}
m_boardAdapter.InitSettings( nullptr, nullptr );
@@ -609,7 +604,7 @@ void EDA_3D_VIEWER_FRAME::LoadSettings( APP_SETTINGS_BASE *aCfg )
void EDA_3D_VIEWER_FRAME::SaveSettings( APP_SETTINGS_BASE *aCfg )
{
auto cfg = Pgm().GetSettingsManager().GetAppSettings<EDA_3D_VIEWER_SETTINGS>();
auto cfg = Pgm().GetSettingsManager().GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
EDA_BASE_FRAME::SaveSettings( cfg );
@@ -645,7 +640,7 @@ void EDA_3D_VIEWER_FRAME::CommonSettingsChanged( bool aEnvVarsChanged, bool aTex
ReCreateMainToolbar();
loadCommonSettings();
LoadSettings( Pgm().GetSettingsManager().GetAppSettings<EDA_3D_VIEWER_SETTINGS>() );
applySettings( Pgm().GetSettingsManager().GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" ) );
m_appearancePanel->CommonSettingsChanged();
@@ -664,8 +659,6 @@ void EDA_3D_VIEWER_FRAME::ShowChangedLanguage()
{
wxAuiPaneInfo& lm_pane_info = m_auimgr.GetPane( m_appearancePanel );
lm_pane_info.Caption( _( "Appearance" ) );
m_appearancePanel->OnLanguageChanged();
}
SetStatusText( wxEmptyString, ACTIVITY );
@@ -676,7 +669,7 @@ void EDA_3D_VIEWER_FRAME::ShowChangedLanguage()
void EDA_3D_VIEWER_FRAME::ToggleAppearanceManager()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EDA_3D_VIEWER_SETTINGS* cfg = mgr.GetAppSettings<EDA_3D_VIEWER_SETTINGS>();
EDA_3D_VIEWER_SETTINGS* cfg = mgr.GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
wxAuiPaneInfo& layersManager = m_auimgr.GetPane( "LayersManager" );
// show auxiliary Vertical layers and visibility manager toolbar
@@ -756,8 +749,13 @@ void EDA_3D_VIEWER_FRAME::takeScreenshot( wxCommandEvent& event )
}
// Be sure we have the latest 3D view (remember 3D view is buffered)
m_canvas->Request_refresh( true );
wxYield();
// Also ensure any highlighted item is not highlighted when creating screen shot
EDA_3D_VIEWER_SETTINGS::RENDER_SETTINGS& cfg = m_boardAdapter.m_Cfg->m_Render;
bool allow_highlight = cfg.highlight_on_rollover;
cfg.highlight_on_rollover = false;
m_canvas->DoRePaint(); // init first buffer
m_canvas->DoRePaint(); // init second buffer
// Build image from the 3D buffer
wxWindowUpdateLocker noUpdates( this );
@@ -767,6 +765,8 @@ void EDA_3D_VIEWER_FRAME::takeScreenshot( wxCommandEvent& event )
if( m_canvas )
m_canvas->GetScreenshot( screenshotImage );
cfg.highlight_on_rollover = allow_highlight;
if( event.GetId() == ID_TOOL_SCREENCOPY_TOCLIBBOARD )
{
wxBitmap bitmap( screenshotImage );
@@ -811,9 +811,18 @@ void EDA_3D_VIEWER_FRAME::loadCommonSettings()
COMMON_SETTINGS* settings = Pgm().GetCommonSettings();
const DPI_SCALING_COMMON dpi{ settings, this };
m_canvas->SetScaleFactor( dpi.GetScaleFactor() );
// TODO(JE) use all control options
m_boardAdapter.m_MousewheelPanning = settings->m_Input.scroll_modifier_zoom != 0;
}
void EDA_3D_VIEWER_FRAME::applySettings( EDA_3D_VIEWER_SETTINGS* cfg )
{
m_boardAdapter.m_Cfg = cfg;
m_canvas->SetAnimationEnabled( cfg->m_Camera.animation_enabled );
m_canvas->SetMovingSpeedMultiplier( cfg->m_Camera.moving_speed_multiplier );
m_canvas->SetProjectionMode( cfg->m_Camera.projection_mode );
m_canvas->SetVcSettings( EDA_DRAW_PANEL_GAL::GetVcSettings() );
}
+3 -6
View File
@@ -5,7 +5,7 @@
* Copyright (C) 2014 Jean-Pierre Charras, jp.charras at wanadoo.fr
* Copyright (C) 2011 Wayne Stambaugh <stambaughw@gmail.com>
* Copyright (C) 2023 CERN
* Copyright (C) 1992-2023 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 1992-2024 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
@@ -41,11 +41,6 @@
#include <dialogs/dialog_color_picker.h> // for CUSTOM_COLORS_LIST definition
/// A variable name whose value holds the path of 3D shape files.
/// Currently an environment variable, eventually a project variable.
#define KICAD7_3DMODEL_DIR wxT( "KICAD7_3DMODEL_DIR" )
#define KICAD_DEFAULT_3D_DRAWFRAME_STYLE (wxDEFAULT_FRAME_STYLE | wxWANTS_CHARS)
// Forward declarations
@@ -172,6 +167,8 @@ private:
*/
void loadCommonSettings();
void applySettings( EDA_3D_VIEWER_SETTINGS* aSettings );
private:
wxFileName m_defaultSaveScreenshotFileName;
@@ -339,7 +339,7 @@ EDA_3D_VIEWER_SETTINGS::EDA_3D_VIEWER_SETTINGS() :
m_params.emplace_back( new PARAM<bool>( "render.show_footprints_not_in_posfile",
&m_Render.show_footprints_not_in_posfile, true ) );
m_params.emplace_back( new PARAM<bool>( "render.show_footprints_dnp",
&m_Render.show_footprints_dnp, true ) );
&m_Render.show_footprints_dnp, false ) );
m_params.emplace_back( new PARAM<bool>( "render.show_silkscreen_top",
&m_Render.show_silkscreen_top, true ) );
m_params.emplace_back( new PARAM<bool>( "render.show_silkscreen_bottom",
@@ -368,6 +368,8 @@ EDA_3D_VIEWER_SETTINGS::EDA_3D_VIEWER_SETTINGS() :
&m_Render.clip_silk_on_via_annuli, false ) );
m_params.emplace_back( new PARAM<bool>( "render.plated_and_bare_copper",
&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>( "camera.animation_enabled",
&m_Camera.animation_enabled, true ) );
m_params.emplace_back( new PARAM<int>( "camera.moving_speed_multiplier",
@@ -377,6 +379,8 @@ EDA_3D_VIEWER_SETTINGS::EDA_3D_VIEWER_SETTINGS() :
m_params.emplace_back( new PARAM<int>( "camera.projection_mode",
&m_Camera.projection_mode, 1 ) );
m_params.emplace_back( new PARAM<bool>( "use_stackup_colors",
&m_UseStackupColors, true ) );
m_params.emplace_back( new PARAM_LAYER_PRESET_3D( "layer_presets",
&m_LayerPresets ) );
m_params.emplace_back( new PARAM<wxString>( "current_layer_preset",
+20 -2
View File
@@ -3,7 +3,7 @@
*
* Copyright (C) 2020 Jon Evans <jon@craftyjon.com>
* Copyright (C) 2023 CERN
* Copyright (C) 2020-2023 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2020-2024 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 as published by the
@@ -23,7 +23,6 @@
#define EDA_3D_VIEWER_SETTINGS_H_
#include <3d_enums.h>
#include <common_ogl/ogl_attr_list.h>
#include <plugins/3dapi/xv3d_types.h>
#include <settings/app_settings.h>
#include <settings/parameters.h>
@@ -34,6 +33,8 @@
#define FOLLOW_PLOT_SETTINGS wxT( "follow_plot_settings" )
#define LEGACY_PRESET_FLAG wxT( "legacy_preset_flag" )
enum class ANTIALIASING_MODE;
struct LAYER_PRESET_3D
{
@@ -146,6 +147,22 @@ 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;
/**
* 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;
}
};
struct CAMERA_SETTINGS
@@ -169,6 +186,7 @@ public:
RENDER_SETTINGS m_Render;
CAMERA_SETTINGS m_Camera;
bool m_UseStackupColors;
std::vector<LAYER_PRESET_3D> m_LayerPresets;
wxString m_CurrentPreset;
+1 -23
View File
@@ -53,7 +53,6 @@ TOOL_ACTION EDA_3D_ACTIONS::rotateXCW( TOOL_ACTION_ARGS()
.Name( "3DViewer.Control.rotateXclockwise" )
.Scope( AS_GLOBAL )
.FriendlyName( _( "Rotate X Clockwise" ) )
.Tooltip( _( "Rotate X Clockwise" ) )
.Icon( BITMAPS::rotate_cw_x )
.Flags( AF_NONE )
.Parameter( ROTATION_DIR::X_CW ) );
@@ -62,7 +61,6 @@ TOOL_ACTION EDA_3D_ACTIONS::rotateXCCW( TOOL_ACTION_ARGS()
.Name( "3DViewer.Control.rotateXcounterclockwise" )
.Scope( AS_GLOBAL )
.FriendlyName( _( "Rotate X Counterclockwise" ) )
.Tooltip( _( "Rotate X Counterclockwise" ) )
.Icon( BITMAPS::rotate_ccw_x )
.Flags( AF_NONE )
.Parameter( ROTATION_DIR::X_CCW ) );
@@ -71,7 +69,6 @@ TOOL_ACTION EDA_3D_ACTIONS::rotateYCW( TOOL_ACTION_ARGS()
.Name( "3DViewer.Control.rotateYclockwise" )
.Scope( AS_GLOBAL )
.FriendlyName( _( "Rotate Y Clockwise" ) )
.Tooltip( _( "Rotate Y Clockwise" ) )
.Icon( BITMAPS::rotate_cw_y )
.Flags( AF_NONE )
.Parameter( ROTATION_DIR::Y_CW ) );
@@ -80,7 +77,6 @@ TOOL_ACTION EDA_3D_ACTIONS::rotateYCCW( TOOL_ACTION_ARGS()
.Name( "3DViewer.Control.rotateYcounterclockwise" )
.Scope( AS_GLOBAL )
.FriendlyName( _( "Rotate Y Counterclockwise" ) )
.Tooltip( _( "Rotate Y Counterclockwise" ) )
.Icon( BITMAPS::rotate_ccw_y )
.Flags( AF_NONE )
.Parameter( ROTATION_DIR::Y_CCW ) );
@@ -89,7 +85,6 @@ TOOL_ACTION EDA_3D_ACTIONS::rotateZCW( TOOL_ACTION_ARGS()
.Name( "3DViewer.Control.rotateZclockwise" )
.Scope( AS_GLOBAL )
.FriendlyName( _( "Rotate Z Clockwise" ) )
.Tooltip( _( "Rotate Z Clockwise" ) )
.Icon( BITMAPS::rotate_cw_z )
.Flags( AF_NONE )
.Parameter( ROTATION_DIR::Z_CW ) );
@@ -98,7 +93,6 @@ TOOL_ACTION EDA_3D_ACTIONS::rotateZCCW( TOOL_ACTION_ARGS()
.Name( "3DViewer.Control.rotateZcounterclockwise" )
.Scope( AS_GLOBAL )
.FriendlyName( _( "Rotate Z Counterclockwise" ) )
.Tooltip( _( "Rotate Z Counterclockwise" ) )
.Icon( BITMAPS::rotate_ccw_z )
.Flags( AF_NONE )
.Parameter( ROTATION_DIR::Z_CCW ) );
@@ -108,7 +102,6 @@ TOOL_ACTION EDA_3D_ACTIONS::moveLeft( TOOL_ACTION_ARGS()
.Scope( AS_ACTIVE )
.DefaultHotkey( WXK_LEFT )
.FriendlyName( _( "Move Board Left" ) )
.Tooltip( _( "Move board Left" ) )
.Icon( BITMAPS::left )
.Flags( AF_NONE )
.Parameter( CURSOR_LEFT ) );
@@ -118,7 +111,6 @@ TOOL_ACTION EDA_3D_ACTIONS::moveRight( TOOL_ACTION_ARGS()
.Scope( AS_ACTIVE )
.DefaultHotkey( WXK_RIGHT )
.FriendlyName( _( "Move Board Right" ) )
.Tooltip( _( "Move board Right" ) )
.Icon( BITMAPS::right )
.Flags( AF_NONE )
.Parameter( CURSOR_RIGHT ) );
@@ -128,7 +120,6 @@ TOOL_ACTION EDA_3D_ACTIONS::moveUp( TOOL_ACTION_ARGS()
.Scope( AS_ACTIVE )
.DefaultHotkey( WXK_UP )
.FriendlyName( _( "Move Board Up" ) )
.Tooltip( _( "Move board Up" ) )
.Icon( BITMAPS::up )
.Flags( AF_NONE )
.Parameter( CURSOR_UP ) );
@@ -138,7 +129,6 @@ TOOL_ACTION EDA_3D_ACTIONS::moveDown( TOOL_ACTION_ARGS()
.Scope( AS_ACTIVE )
.DefaultHotkey( WXK_DOWN )
.FriendlyName( _( "Move Board Down" ) )
.Tooltip( _( "Move board Down" ) )
.Icon( BITMAPS::down )
.Flags( AF_NONE )
.Parameter( CURSOR_DOWN ) );
@@ -148,7 +138,7 @@ TOOL_ACTION EDA_3D_ACTIONS::homeView( TOOL_ACTION_ARGS()
.Scope( AS_ACTIVE )
.DefaultHotkey( WXK_HOME )
.FriendlyName ( _( "Home View" ) )
.Tooltip( _( "Home view" ) )
.Tooltip( _( "Redraw at the home position and zoom" ) )
.Flags( AF_NONE )
.Parameter( VIEW3D_TYPE::VIEW3D_FIT_SCREEN ) );
@@ -174,7 +164,6 @@ TOOL_ACTION EDA_3D_ACTIONS::viewFront( TOOL_ACTION_ARGS()
.Scope( AS_ACTIVE )
.DefaultHotkey( 'Y' )
.FriendlyName( _( "View Front" ) )
.Tooltip( _( "View Front" ) )
.Icon( BITMAPS::axis3d_front )
.Flags( AF_NONE )
.Parameter( VIEW3D_TYPE::VIEW3D_FRONT ) );
@@ -184,7 +173,6 @@ TOOL_ACTION EDA_3D_ACTIONS::viewBack( TOOL_ACTION_ARGS()
.Scope( AS_ACTIVE )
.DefaultHotkey( MD_SHIFT + 'Y' )
.FriendlyName( _( "View Back" ) )
.Tooltip( _( "View Back" ) )
.Icon( BITMAPS::axis3d_back )
.Flags( AF_NONE )
.Parameter( VIEW3D_TYPE::VIEW3D_BACK ) );
@@ -194,7 +182,6 @@ TOOL_ACTION EDA_3D_ACTIONS::viewLeft( TOOL_ACTION_ARGS()
.Scope( AS_ACTIVE )
.DefaultHotkey( MD_SHIFT + 'X' )
.FriendlyName( _( "View Left" ) )
.Tooltip( _( "View Left" ) )
.Icon( BITMAPS::axis3d_left )
.Flags( AF_NONE )
.Parameter( VIEW3D_TYPE::VIEW3D_LEFT ) );
@@ -204,7 +191,6 @@ TOOL_ACTION EDA_3D_ACTIONS::viewRight( TOOL_ACTION_ARGS()
.Scope( AS_ACTIVE )
.DefaultHotkey( 'X' )
.FriendlyName( _( "View Right" ) )
.Tooltip( _( "View Right" ) )
.Icon( BITMAPS::axis3d_right )
.Flags( AF_NONE )
.Parameter( VIEW3D_TYPE::VIEW3D_RIGHT ) );
@@ -214,7 +200,6 @@ TOOL_ACTION EDA_3D_ACTIONS::viewTop( TOOL_ACTION_ARGS()
.Scope( AS_ACTIVE )
.DefaultHotkey( 'Z' )
.FriendlyName( _( "View Top" ) )
.Tooltip( _( "View Top" ) )
.Icon( BITMAPS::axis3d_top )
.Flags( AF_NONE )
.Parameter( VIEW3D_TYPE::VIEW3D_TOP ) );
@@ -224,7 +209,6 @@ TOOL_ACTION EDA_3D_ACTIONS::viewBottom( TOOL_ACTION_ARGS()
.Scope( AS_ACTIVE )
.DefaultHotkey( MD_SHIFT + 'Z' )
.FriendlyName( _( "View Bottom" ) )
.Tooltip( _( "View Bottom" ) )
.Icon( BITMAPS::axis3d_bottom )
.Flags( AF_NONE )
.Parameter( VIEW3D_TYPE::VIEW3D_BOTTOM ) );
@@ -233,7 +217,6 @@ TOOL_ACTION EDA_3D_ACTIONS::noGrid( TOOL_ACTION_ARGS()
.Name( "3DViewer.Control.noGrid" )
.Scope( AS_GLOBAL )
.FriendlyName( _( "No 3D Grid" ) )
.Tooltip( _( "No 3D Grid" ) )
.Flags( AF_NONE )
.Parameter( GRID3D_TYPE::NONE ) );
@@ -241,7 +224,6 @@ TOOL_ACTION EDA_3D_ACTIONS::show10mmGrid( TOOL_ACTION_ARGS()
.Name( "3DViewer.Control.show10mmGrid" )
.Scope( AS_GLOBAL )
.FriendlyName( _( "3D Grid 10mm" ) )
.Tooltip( _( "3D Grid 10mm" ) )
.Flags( AF_NONE )
.Parameter( GRID3D_TYPE::GRID_10MM ) );
@@ -249,7 +231,6 @@ TOOL_ACTION EDA_3D_ACTIONS::show5mmGrid( TOOL_ACTION_ARGS()
.Name( "3DViewer.Control.show5mmGrid" )
.Scope( AS_GLOBAL )
.FriendlyName( _( "3D Grid 5mm" ) )
.Tooltip( _( "3D Grid 5mm" ) )
.Flags( AF_NONE )
.Parameter( GRID3D_TYPE::GRID_5MM ) );
@@ -257,7 +238,6 @@ TOOL_ACTION EDA_3D_ACTIONS::show2_5mmGrid( TOOL_ACTION_ARGS()
.Name( "3DViewer.Control.show2_5mmGrid" )
.Scope( AS_GLOBAL )
.FriendlyName( _( "3D Grid 2.5mm" ) )
.Tooltip( _( "3D Grid 2.5mm" ) )
.Flags( AF_NONE )
.Parameter( GRID3D_TYPE::GRID_2P5MM ) );
@@ -265,7 +245,6 @@ TOOL_ACTION EDA_3D_ACTIONS::show1mmGrid( TOOL_ACTION_ARGS()
.Name( "3DViewer.Control.show1mmGrid" )
.Scope( AS_GLOBAL )
.FriendlyName( _( "3D Grid 1mm" ) )
.Tooltip( _( "3D Grid 1mm" ) )
.Flags( AF_NONE )
.Parameter( GRID3D_TYPE::GRID_1MM ) );
@@ -350,7 +329,6 @@ TOOL_ACTION EDA_3D_ACTIONS::showAxis( TOOL_ACTION_ARGS()
.Name( "3DViewer.Control.showAxis" )
.Scope( AS_GLOBAL )
.FriendlyName( _( "Show 3D Axis" ) )
.Tooltip( _( "Show 3D Axis" ) )
.Icon( BITMAPS::axis3d_front )
.Flags( AF_NONE ) );
@@ -37,7 +37,7 @@
bool EDA_3D_CONTROLLER::Init()
{
CONDITIONAL_MENU& ctxMenu = m_menu.GetMenu();
CONDITIONAL_MENU& ctxMenu = m_menu->GetMenu();
ctxMenu.AddItem( ACTIONS::zoomInCenter, SELECTION_CONDITIONS::ShowAlways );
ctxMenu.AddItem( ACTIONS::zoomOutCenter, SELECTION_CONDITIONS::ShowAlways );
@@ -118,12 +118,9 @@ int EDA_3D_CONTROLLER::Main( const TOOL_EVENT& aEvent )
if( evt->IsCancelInteractive() )
{
wxWindow* canvas = m_toolMgr->GetToolHolder()->GetToolCanvas();
wxWindow* topLevelParent = wxGetTopLevelParent( canvas->GetParent() );
if( topLevelParent && dynamic_cast<DIALOG_SHIM*>( topLevelParent ) )
if( DIALOG_SHIM* dialog = dynamic_cast<DIALOG_SHIM*>( wxGetTopLevelParent( canvas ) ) )
{
DIALOG_SHIM* dialog = static_cast<DIALOG_SHIM*>( topLevelParent );
if( dialog->IsQuasiModal() )
dialog->EndQuasiModal( wxID_CANCEL );
else
@@ -136,7 +133,7 @@ int EDA_3D_CONTROLLER::Main( const TOOL_EVENT& aEvent )
}
else if( evt->IsClick( BUT_RIGHT ) )
{
m_menu.ShowContextMenu();
m_menu->ShowContextMenu();
}
else
{
+4 -3
View File
@@ -45,7 +45,9 @@ set(3D-VIEWER_SRCS
${DIR_RAY_ACC}/container_2d.cpp
${DIR_RAY}/PerlinNoise.cpp
${DIR_RAY}/create_scene.cpp
${DIR_RAY}/render_3d_raytrace.cpp
${DIR_RAY}/render_3d_raytrace_base.cpp
${DIR_RAY}/render_3d_raytrace_gl.cpp
${DIR_RAY}/render_3d_raytrace_ram.cpp
${DIR_RAY}/frustum.cpp
${DIR_RAY}/material.cpp
${DIR_RAY}/mortoncodes.cpp
@@ -71,7 +73,7 @@ set(3D-VIEWER_SRCS
${DIR_RAY_3D}/triangle_3d.cpp
3d_rendering/buffers_debug.cpp
3d_rendering/render_3d_base.cpp
3d_rendering/color_rgb.cpp
3d_rendering/color_rgba.cpp
3d_rendering/image.cpp
3d_rendering/post_shader.cpp
3d_rendering/post_shader_ssao.cpp
@@ -89,7 +91,6 @@ set(3D-VIEWER_SRCS
common_ogl/ogl_utils.cpp
3d_fastmath.cpp
3d_math.cpp
dialogs/3d_cache_dialogs.cpp
dialogs/appearance_controls_3D.cpp
dialogs/appearance_controls_3D_base.cpp
dialogs/dialog_select_3d_model_base.cpp
+26 -75
View File
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2015-2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 1992-2020 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 1992-2024 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
@@ -33,94 +33,45 @@
#include <core/arraydim.h>
const int OGL_ATT_LIST::m_openGL_attributes_list[] = {
// Boolean attributes (using itself at padding):
// 0 1
WX_GL_RGBA, WX_GL_RGBA,
// 2 3
WX_GL_DOUBLEBUFFER, WX_GL_DOUBLEBUFFER,
// Normal attributes with values:
// 4 5
WX_GL_DEPTH_SIZE, 16,
// 6 7
WX_GL_STENCIL_SIZE, 8,
// This ones need to be the last in the list (as the tags will set to 0 if AA fails)
// 8 9
WX_GL_SAMPLES, 0, // Disable AA for the start.
//10 11
WX_GL_SAMPLE_BUFFERS, 1, // Enable multisampling support (antialiasing).
0, 0 // NULL termination
};
#define ATT_WX_GL_SAMPLES_OFFSET 8
#define ATT_WX_GL_SAMPLES_OFFSET_DATA 9
#define ATT_WX_GL_SAMPLE_BUFFERS_OFFSET 10
#define ATT_WX_GL_SAMPLE_BUFFERS_DATA 11
int OGL_ATT_LIST::m_openGL_attributes_list_to_use[
arrayDim( OGL_ATT_LIST::m_openGL_attributes_list ) ] = { 0 };
const int* OGL_ATT_LIST::GetAttributesList( ANTIALIASING_MODE aAntiAliasingMode )
const wxGLAttributes OGL_ATT_LIST::GetAttributesList( ANTIALIASING_MODE aAntiAliasingMode,
bool aAlpha )
{
wxASSERT( aAntiAliasingMode <= ANTIALIASING_MODE::AA_8X );
memcpy( m_openGL_attributes_list_to_use, m_openGL_attributes_list,
sizeof( m_openGL_attributes_list_to_use ) );
auto makeAttribs = [aAlpha]( int aSamplers )
{
wxGLAttributes dispAttrs;
dispAttrs.RGBA()
.DoubleBuffer()
.Depth( 16 )
.Stencil( 8 )
.Samplers( aSamplers )
.SampleBuffers( aSamplers >= 0 ? 1 : -1 )
.MinRGBA( 8, 8, 8, aAlpha ? 8 : -1 )
.EndList();
return dispAttrs;
};
int maxSamples = -1;
if( aAntiAliasingMode > ANTIALIASING_MODE::AA_NONE )
{
// There is a bug on wxGLCanvas that makes IsDisplaySupported fail
// while testing for antialiasing.
// http://trac.wxwidgets.org/ticket/16909
// this next code will only work after this bug is fixed
//
// On my experience (Mario) it was only working on Linux but failing on
// Windows, so there was no AA.
// Check if the canvas supports multisampling.
if( wxGLCanvas::IsDisplaySupported( m_openGL_attributes_list_to_use ) )
if( wxGLCanvas::IsDisplaySupported( makeAttribs( 0 ) ) )
{
static const int aaSamples[4] = {0, 2, 4, 8};
static const int aaSamples[4] = { 0, 2, 4, 8 };
// Check for possible sample sizes, start form the requested.
int maxSamples = aaSamples[static_cast<int>( aAntiAliasingMode )];
maxSamples = aaSamples[static_cast<int>( aAntiAliasingMode )];
m_openGL_attributes_list_to_use[ATT_WX_GL_SAMPLES_OFFSET_DATA] = maxSamples;
for( ; (maxSamples > 0) &&
( !wxGLCanvas::IsDisplaySupported( m_openGL_attributes_list_to_use ) );
maxSamples = maxSamples >> 1 )
while( maxSamples > 0 && !wxGLCanvas::IsDisplaySupported( makeAttribs( maxSamples ) ) )
{
m_openGL_attributes_list_to_use[ATT_WX_GL_SAMPLES_OFFSET_DATA] = maxSamples;
maxSamples = maxSamples >> 1;
}
}
else
{
aAntiAliasingMode = ANTIALIASING_MODE::AA_NONE;
}
}
// Disable antialiasing if it failed or was not requested
if( aAntiAliasingMode == ANTIALIASING_MODE::AA_NONE )
{
// Remove multisampling information
// (hoping that the GPU driver will decide what is best)
m_openGL_attributes_list_to_use[ATT_WX_GL_SAMPLES_OFFSET] = 0;
m_openGL_attributes_list_to_use[ATT_WX_GL_SAMPLES_OFFSET_DATA] = 0;
m_openGL_attributes_list_to_use[ATT_WX_GL_SAMPLE_BUFFERS_OFFSET] = 0;
m_openGL_attributes_list_to_use[ATT_WX_GL_SAMPLE_BUFFERS_DATA] = 0;
}
return m_openGL_attributes_list_to_use;
return makeAttribs( maxSamples );
}
+8 -23
View File
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2015-2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 1992-2020 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 1992-2024 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
@@ -30,6 +30,8 @@
#ifndef _OGL_ATT_LIST_H
#define _OGL_ATT_LIST_H
#include <wx/glcanvas.h>
/// Anti-aliasing options
enum class ANTIALIASING_MODE
{
@@ -51,29 +53,12 @@ public:
* Get a list of attributes to pass to wxGLCanvas.
*
* @param aAntiAliasingMode = 0 - disabled; try to initialize (if is supported) the
* list with anti aliasing capabilities
* @return a list of options to be passed in the creation of a EDA_3D_CANVAS class
* list with anti aliasing capabilities.
* @param aAlpha set to enable alpha channel.
* @return wxGLAttributes to be passed in the creation of a EDA_3D_CANVAS class
*/
static const int* GetAttributesList( ANTIALIASING_MODE aAntiAliasingMode );
private:
/**
* Attributes list to be passed to a wxGLCanvas creation.
*
* This array should be 2*n+1
* Sadly wxwidgets / glx < 13 allowed
* a thing named "boolean attributes" that don't take a value.
* (See src/unix/glx11.cpp -> wxGLCanvasX11::ConvertWXAttrsToGL() ).
* To avoid problems due to this, just specify those attributes twice.
* Only WX_GL_RGBA, WX_GL_DOUBLEBUFFER, WX_GL_STEREO are such boolean
* attributes.
*/
static const int m_openGL_attributes_list[];
/**
* Attributes list that was (eventually) changed and are passed to creation.
*/
static int m_openGL_attributes_list_to_use[];
static const wxGLAttributes GetAttributesList( ANTIALIASING_MODE aAntiAliasingMode,
bool aAlpha = false );
};
#endif // _OGL_ATT_LIST_H
+32 -7
View File
@@ -46,7 +46,7 @@ void OglGetScreenshot( wxImage& aDstImage )
glGetIntegerv( GL_VIEWPORT, (GLint*) &viewport );
unsigned char* pixelbuffer = (unsigned char*) malloc( viewport.x * viewport.y * 3 );
unsigned char* pixelbuffer = (unsigned char*) malloc( viewport.x * viewport.y * 4 );
// Call glFinish before screenshot to ensure everything is fully drawn.
glFinish();
@@ -54,15 +54,40 @@ void OglGetScreenshot( wxImage& aDstImage )
glPixelStorei( GL_PACK_ALIGNMENT, 1 );
glReadBuffer( GL_BACK_LEFT );
glReadPixels( viewport.originX, viewport.originY, viewport.x, viewport.y, GL_RGB,
glReadPixels( viewport.originX, viewport.originY, viewport.x, viewport.y, GL_RGBA,
GL_UNSIGNED_BYTE, pixelbuffer );
unsigned char* rgbBuffer = (unsigned char*) malloc( viewport.x * viewport.y * 3 );
unsigned char* alphaBuffer = (unsigned char*) malloc( viewport.x * viewport.y );
unsigned char* rgbaPtr = pixelbuffer;
unsigned char* rgbPtr = rgbBuffer;
unsigned char* alphaPtr = alphaBuffer;
for( int y = 0; y < viewport.y; y++ )
{
for( int x = 0; x < viewport.x; x++ )
{
rgbPtr[0] = rgbaPtr[0];
rgbPtr[1] = rgbaPtr[1];
rgbPtr[2] = rgbaPtr[2];
alphaPtr[0] = rgbaPtr[3];
rgbaPtr += 4;
rgbPtr += 3;
alphaPtr += 1;
}
}
// "Sets the image data without performing checks.
// The data given must have the size (width*height*3)
// The data must have been allocated with malloc()
// If static_data is false, after this call the pointer to the data is owned
// by the wxImage object, that will be responsible for deleting it."
aDstImage.SetData( pixelbuffer, viewport.x, viewport.y, false );
aDstImage.SetData( rgbBuffer, viewport.x, viewport.y, false );
aDstImage.SetAlpha( alphaBuffer, false );
free( pixelbuffer );
aDstImage = aDstImage.Mirror( false );
}
@@ -157,7 +182,7 @@ void OglSetDiffuseMaterial( const SFVEC3F &aMaterialDiffuse, float aOpacity,
}
void OglDrawBackground( const SFVEC3F& aTopColor, const SFVEC3F& aBotColor )
void OglDrawBackground( const SFVEC4F& aTopColor, const SFVEC4F& aBotColor )
{
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
@@ -173,14 +198,14 @@ void OglDrawBackground( const SFVEC3F& aTopColor, const SFVEC3F& aBotColor )
glDisable( GL_ALPHA_TEST );
glBegin( GL_QUADS );
glColor4f( aTopColor.x, aTopColor.y, aTopColor.z, 1.0f );
glColor4f( aTopColor.r, aTopColor.g, aTopColor.b, aTopColor.a );
glVertex2f( -1.0, 1.0 ); // Top left corner
glColor4f( aBotColor.x, aBotColor.y, aBotColor.z, 1.0f );
glColor4f( aBotColor.r, aBotColor.g, aBotColor.b, aBotColor.a );
glVertex2f( -1.0,-1.0 ); // bottom left corner
glVertex2f( 1.0,-1.0 ); // bottom right corner
glColor4f( aTopColor.x, aTopColor.y, aTopColor.z, 1.0f );
glColor4f( aTopColor.r, aTopColor.g, aTopColor.b, aTopColor.a);
glVertex2f( 1.0, 1.0 ); // top right corner
glEnd();
}
+1 -1
View File
@@ -71,7 +71,7 @@ GLuint OglLoadTexture( const IMAGE& aImage );
*/
void OglGetScreenshot( wxImage& aDstImage );
void OglDrawBackground( const SFVEC3F& aTopColor, const SFVEC3F& aBotColor );
void OglDrawBackground( const SFVEC4F& aTopColor, const SFVEC4F& aBotColor );
/**
* Reset to default state the texture settings.
+122 -17
View File
@@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2023 CERN
* Copyright (C) 2023 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2023-2024 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 as published by the
@@ -41,6 +41,7 @@
#include <wx/bmpbuttn.h>
#include <wx/sizer.h>
#include <wx/textdlg.h>
#include <wx/checkbox.h>
#include <../3d_rendering/opengl/render_3d_opengl.h>
@@ -82,6 +83,13 @@ const APPEARANCE_CONTROLS_3D::APPEARANCE_SETTING_3D APPEARANCE_CONTROLS_3D::s_la
RR( _HKI( "Background End" ), LAYER_3D_BACKGROUND_BOTTOM, _HKI( "Background gradient end color" ) ),
};
// The list of IDs that can have colors coming from the board stackup, and cannot be
// modified if use colors from stackup is activated
static std::vector<int> inStackupColors{ LAYER_3D_BOARD, LAYER_3D_COPPER_TOP,
LAYER_3D_COPPER_BOTTOM, LAYER_3D_SOLDERPASTE,
LAYER_3D_SILKSCREEN_TOP, LAYER_3D_SILKSCREEN_BOTTOM,
LAYER_3D_SOLDERMASK_TOP, LAYER_3D_SOLDERMASK_BOTTOM
};
APPEARANCE_CONTROLS_3D::APPEARANCE_CONTROLS_3D( EDA_3D_VIEWER_FRAME* aParent,
wxWindow* aFocusOwner ) :
@@ -92,7 +100,6 @@ APPEARANCE_CONTROLS_3D::APPEARANCE_CONTROLS_3D( EDA_3D_VIEWER_FRAME* aParent,
{
DPI_SCALING_COMMON dpi( nullptr, m_frame );
int indicatorSize = ConvertDialogToPixels( wxSize( 6, 6 ) ).x / dpi.GetContentScaleFactor();
int screenHeight = wxSystemSettings::GetMetric( wxSYS_SCREEN_Y );
m_pointSize = wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT ).GetPointSize();
@@ -112,6 +119,43 @@ APPEARANCE_CONTROLS_3D::APPEARANCE_CONTROLS_3D( EDA_3D_VIEWER_FRAME* aParent,
m_presetsLabel->SetFont( infoFont );
m_viewportsLabel->SetFont( infoFont );
// Create display options
m_cbUseBoardStackupColors = new wxCheckBox( m_panelLayers, wxID_ANY,
_( "Use board stackup colors" ) );
m_cbUseBoardStackupColors->SetFont( infoFont );
m_cbUseBoardStackupColors->Bind( wxEVT_CHECKBOX,
[this]( wxCommandEvent& aEvent )
{
EDA_3D_VIEWER_SETTINGS* cfg = m_frame->GetAdapter().m_Cfg;
cfg->m_UseStackupColors = aEvent.IsChecked();
UpdateLayerCtls();
syncLayerPresetSelection();
m_frame->NewDisplay( true );
} );
m_cbUseBoardEditorCopperColors = new wxCheckBox( m_panelLayers, wxID_ANY,
_( "Use board editor copper colors" ) );
m_cbUseBoardEditorCopperColors->SetFont( infoFont );
m_cbUseBoardEditorCopperColors->SetToolTip(
_( "Use the board editor copper colors (openGL only)" ) );
m_cbUseBoardEditorCopperColors->Bind( wxEVT_CHECKBOX,
[this]( wxCommandEvent& aEvent )
{
EDA_3D_VIEWER_SETTINGS* cfg = m_frame->GetAdapter().m_Cfg;
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_cbUseBoardEditorCopperColors, 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, 7 );
m_cbLayerPresets->SetToolTip( wxString::Format( _( "Save and restore color and visibility "
"combinations.\n"
"Use %s+Tab to activate selector.\n"
@@ -127,18 +171,21 @@ APPEARANCE_CONTROLS_3D::APPEARANCE_CONTROLS_3D( EDA_3D_VIEWER_FRAME* aParent,
KeyNameFromKeyCode( VIEWPORT_SWITCH_KEY ),
KeyNameFromKeyCode( VIEWPORT_SWITCH_KEY ) ) );
if( screenHeight <= 900 && m_pointSize >= indicatorSize )
if( screenHeight <= 900 && m_pointSize >= FromDIP( KIUI::c_IndicatorSizeDIP ) )
m_pointSize = m_pointSize * 8 / 10;
m_cbLayerPresets->Bind( wxEVT_CHOICE, &APPEARANCE_CONTROLS_3D::onLayerPresetChanged, this );
m_toggleGridRenderer = new GRID_BITMAP_TOGGLE_RENDERER( KiBitmap( BITMAPS::visibility ),
KiBitmap( BITMAPS::visibility_off ) );
m_toggleGridRenderer = new GRID_BITMAP_TOGGLE_RENDERER(
KiBitmapBundle( BITMAPS::visibility ), KiBitmapBundle( BITMAPS::visibility_off ) );
m_frame->Bind( EDA_LANG_CHANGED, &APPEARANCE_CONTROLS_3D::OnLanguageChanged, this );
}
APPEARANCE_CONTROLS_3D::~APPEARANCE_CONTROLS_3D()
{
m_frame->Unbind( EDA_LANG_CHANGED, &APPEARANCE_CONTROLS_3D::OnLanguageChanged, this );
}
@@ -173,10 +220,12 @@ void APPEARANCE_CONTROLS_3D::OnSize( wxSizeEvent& aEvent )
}
void APPEARANCE_CONTROLS_3D::OnLanguageChanged()
void APPEARANCE_CONTROLS_3D::rebuildControls()
{
Freeze();
rebuildLayers();
m_cbUseBoardStackupColors->SetLabel( _( "Use board stackup colors" ) );
rebuildLayerPresetsWidget();
rebuildViewportsWidget();
@@ -185,6 +234,14 @@ void APPEARANCE_CONTROLS_3D::OnLanguageChanged()
}
void APPEARANCE_CONTROLS_3D::OnLanguageChanged( wxCommandEvent& aEvent )
{
rebuildControls();
aEvent.Skip();
}
void APPEARANCE_CONTROLS_3D::OnDarkModeToggle()
{
// This is essentially a list of hacks because DarkMode isn't yet implemented inside
@@ -208,7 +265,10 @@ void APPEARANCE_CONTROLS_3D::OnDarkModeToggle()
void APPEARANCE_CONTROLS_3D::CommonSettingsChanged()
{
OnLanguageChanged();
rebuildControls();
UpdateLayerCtls();
syncLayerPresetSelection();
}
@@ -437,6 +497,19 @@ void APPEARANCE_CONTROLS_3D::rebuildLayers()
SWATCH_SMALL );
swatch->SetToolTip( _( "Left double click or middle click to change color" ) );
swatch->SetReadOnlyCallback(
[this]()
{
WX_INFOBAR* infobar = m_frame->GetInfoBar();
infobar->RemoveAllButtons();
infobar->AddCloseButton();
infobar->ShowMessageFor( _( "Uncheck 'Use board stackup colors' to "
"allow color editing." ),
10000, wxICON_INFORMATION );
} );
sizer->Add( swatch, 0, wxALIGN_CENTER_VERTICAL, 0 );
aSetting->m_Ctl_color = swatch;
@@ -466,10 +539,9 @@ void APPEARANCE_CONTROLS_3D::rebuildLayers()
}
else
{
BITMAP_TOGGLE* btn_visible = new BITMAP_TOGGLE( m_windowLayers, layer,
KiBitmap( BITMAPS::visibility ),
KiBitmap( BITMAPS::visibility_off ),
aSetting->m_Visible );
BITMAP_TOGGLE* btn_visible = new BITMAP_TOGGLE(
m_windowLayers, layer, KiBitmapBundle( BITMAPS::visibility ),
KiBitmapBundle( BITMAPS::visibility_off ), aSetting->m_Visible );
btn_visible->Bind( TOGGLE_CHANGED,
[this]( wxCommandEvent& aEvent )
@@ -515,6 +587,7 @@ void APPEARANCE_CONTROLS_3D::rebuildLayers()
void APPEARANCE_CONTROLS_3D::UpdateLayerCtls()
{
EDA_3D_VIEWER_SETTINGS* cfg = m_frame->GetAdapter().m_Cfg;
std::bitset<LAYER_3D_END> visibleLayers = m_frame->GetAdapter().GetVisibleLayers();
std::map<int, COLOR4D> colors = m_frame->GetAdapter().GetLayerColors();
@@ -527,7 +600,24 @@ void APPEARANCE_CONTROLS_3D::UpdateLayerCtls()
setting->m_Ctl_visibility->SetValue( visibleLayers.test( setting->m_Id ) );
if( setting->m_Ctl_color )
{
setting->m_Ctl_color->SetSwatchColor( colors[ setting->m_Id ], false );
// if cfg->m_UseStackupColors is set, board colors cannot be modified locally, but
// other colors can be
if( std::find( inStackupColors.begin(), inStackupColors.end(), setting->m_Id )
!= inStackupColors.end() )
{
if( cfg )
setting->m_Ctl_color->SetReadOnly( cfg->m_UseStackupColors );
}
}
}
if( cfg )
{
m_cbUseBoardStackupColors->SetValue( cfg->m_UseStackupColors );
m_cbUseBoardEditorCopperColors->SetValue( cfg->m_Render.use_board_editor_copper_colors );
}
}
@@ -563,9 +653,16 @@ void APPEARANCE_CONTROLS_3D::syncLayerPresetSelection()
std::bitset<LAYER_3D_END> visibleLayers = m_frame->GetAdapter().GetVisibleLayers();
std::map<int, COLOR4D> colors = m_frame->GetAdapter().GetLayerColors();
auto it = std::find_if( presets.begin(), presets.end(),
auto it = std::find_if(
presets.begin(), presets.end(),
[&]( const LAYER_PRESET_3D& aPreset )
{
if( aPreset.name.Lower() == _( "legacy colors" )
&& m_cbUseBoardStackupColors->GetValue() )
{
return false;
}
for( int layer = LAYER_3D_BOARD; layer < LAYER_3D_END; ++layer )
{
if( aPreset.layers.test( layer ) != visibleLayers.test( layer ) )
@@ -578,9 +675,12 @@ void APPEARANCE_CONTROLS_3D::syncLayerPresetSelection()
return false;
}
for( int layer = LAYER_3D_BOARD; layer < LAYER_3D_ADHESIVE; ++layer )
for( int layer = LAYER_3D_START + 1; layer < LAYER_3D_END; ++layer )
{
if( aPreset.colors.at( layer ) != colors.at( layer ) )
auto it1 = aPreset.colors.find( layer );
auto it2 = colors.find( layer );
if( it1 != aPreset.colors.end() && it2 != colors.end() && *it1 != *it2 )
return false;
}
@@ -645,7 +745,8 @@ void APPEARANCE_CONTROLS_3D::onLayerPresetChanged( wxCommandEvent& aEvent )
}
else if( index == count - 2 )
{
wxTextEntryDialog dlg( this, _( "Layer preset name:" ), _( "Save Layer Preset" ) );
wxTextEntryDialog dlg( wxGetTopLevelParent( this ), _( "Layer preset name:" ),
_( "Save Layer Preset" ) );
if( dlg.ShowModal() != wxID_OK )
{
@@ -660,7 +761,7 @@ void APPEARANCE_CONTROLS_3D::onLayerPresetChanged( wxCommandEvent& aEvent )
if( LAYER_PRESET_3D* preset = cfg->FindPreset( name ) )
{
if( !IsOK( this, _( "Overwrite existing preset?" ) ) )
if( !IsOK( wxGetTopLevelParent( this ), _( "Overwrite existing preset?" ) ) )
{
resetSelection();
return;
@@ -744,6 +845,9 @@ void APPEARANCE_CONTROLS_3D::doApplyLayerPreset( const LAYER_PRESET_3D& aPreset
adapter.SetVisibleLayers( aPreset.layers );
adapter.SetLayerColors( aPreset.colors );
if( aPreset.name.Lower() == _( "legacy colors" ) )
adapter.m_Cfg->m_UseStackupColors = false;
UpdateLayerCtls();
m_frame->NewDisplay( true );
}
@@ -792,7 +896,8 @@ void APPEARANCE_CONTROLS_3D::onViewportChanged( wxCommandEvent& aEvent )
// Save current state to new preset
wxString name;
wxTextEntryDialog dlg( this, _( "Viewport name:" ), _( "Save Viewport" ), name );
wxTextEntryDialog dlg( wxGetTopLevelParent( this ), _( "Viewport name:" ),
_( "Save Viewport" ), name );
if( dlg.ShowModal() != wxID_OK )
{
+16 -14
View File
@@ -114,8 +114,6 @@ public:
~APPEARANCE_CONTROLS_3D();
wxSize GetBestSize() const;
void OnLanguageChanged();
void OnDarkModeToggle();
void OnLayerVisibilityChanged( int aLayer, bool isVisible );
@@ -140,8 +138,11 @@ public:
protected:
void OnSetFocus( wxFocusEvent& aEvent ) override;
void OnSize( wxSizeEvent& aEvent ) override;
void OnLanguageChanged( wxCommandEvent& aEvent );
private:
void rebuildControls();
void rebuildLayers();
void rebuildLayerPresetsWidget();
@@ -166,26 +167,27 @@ private:
void passOnFocus();
private:
EDA_3D_VIEWER_FRAME* m_frame;
wxWindow* m_focusOwner;
static const APPEARANCE_SETTING_3D s_layerSettings[];
GRID_BITMAP_TOGGLE_RENDERER* m_toggleGridRenderer;
EDA_3D_VIEWER_FRAME* m_frame;
wxWindow* m_focusOwner;
std::vector<std::unique_ptr<APPEARANCE_SETTING_3D>> m_layerSettings;
std::map<int, APPEARANCE_SETTING_3D*> m_layerSettingsMap;
wxArrayString m_presetMRU;
wxArrayString m_presetMRU;
std::map<wxString, VIEWPORT3D> m_viewports;
VIEWPORT3D* m_lastSelectedViewport;
wxArrayString m_viewportMRU;
std::map<wxString, VIEWPORT3D> m_viewports;
VIEWPORT3D* m_lastSelectedViewport;
wxArrayString m_viewportMRU;
wxBoxSizer* m_layersOuterSizer;
wxBoxSizer* m_envOuterSizer;
int m_pointSize;
wxColour m_layerPanelColour;
wxBoxSizer* m_layersOuterSizer;
wxBoxSizer* m_envOuterSizer;
int m_pointSize;
wxColour m_layerPanelColour;
GRID_BITMAP_TOGGLE_RENDERER* m_toggleGridRenderer;
wxCheckBox* m_cbUseBoardStackupColors;
wxCheckBox* m_cbUseBoardEditorCopperColors;
};
#endif
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b3)
// C++ code generated with wxFormBuilder (version 4.0.0-0-g0efcecf)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@@ -25,11 +25,14 @@ APPEARANCE_CONTROLS_3D_BASE::APPEARANCE_CONTROLS_3D_BASE( wxWindow* parent, wxWi
m_panelLayers->SetSizer( m_panelLayersSizer );
m_panelLayers->Layout();
m_panelLayersSizer->Fit( m_panelLayers );
m_sizerOuter->Add( m_panelLayers, 1, wxEXPAND|wxBOTTOM, 5 );
m_sizerOuter->Add( m_panelLayers, 1, wxEXPAND, 5 );
wxBoxSizer* bBottomMargin;
bBottomMargin = new wxBoxSizer( wxVERTICAL );
m_staticline1 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
bBottomMargin->Add( m_staticline1, 0, wxEXPAND|wxBOTTOM, 3 );
wxBoxSizer* bPresets;
bPresets = new wxBoxSizer( wxVERTICAL );
@@ -44,7 +47,7 @@ APPEARANCE_CONTROLS_3D_BASE::APPEARANCE_CONTROLS_3D_BASE( wxWindow* parent, wxWi
bPresets->Add( m_cbLayerPresets, 0, wxALL|wxEXPAND, 2 );
bBottomMargin->Add( bPresets, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
bBottomMargin->Add( bPresets, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
bBottomMargin->Add( 0, 2, 0, wxEXPAND, 5 );
File diff suppressed because it is too large Load Diff
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b3)
// C++ code generated with wxFormBuilder (version 4.0.0-0-g0efcecf)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@@ -20,6 +20,7 @@
#include <wx/string.h>
#include <wx/sizer.h>
#include <wx/panel.h>
#include <wx/statline.h>
#include <wx/stattext.h>
#include <wx/choice.h>
@@ -38,6 +39,7 @@ class APPEARANCE_CONTROLS_3D_BASE : public WX_PANEL
wxPanel* m_panelLayers;
wxBoxSizer* m_panelLayersSizer;
wxScrolledCanvas* m_windowLayers;
wxStaticLine* m_staticline1;
wxStaticText* m_presetsLabel;
wxChoice* m_cbLayerPresets;
wxStaticText* m_viewportsLabel;
+8 -3
View File
@@ -3,7 +3,7 @@
*
* Copyright (C) 2016 Mario Luzeiro <mrluzeiro@ua.pt>
* Copyright (C) 2016 Cirilo Bernardo <cirilo.bernardo@gmail.com>
* Copyright (C) 2017-2022 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2017-2024 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
@@ -29,9 +29,9 @@
#include "project.h"
#include "3d_cache/3d_info.h"
#include "3d_cache/3d_cache.h"
#include "3d_cache_dialogs.h"
#include <3d_model_viewer/eda_3d_model_viewer.h>
#include <common_ogl/ogl_attr_list.h>
#include <dialogs/dialog_configure_paths.h>
#include <filename_resolver.h>
#include <pcbnew/footprint.h>
#include <wx_filename.h>
@@ -191,13 +191,18 @@ void DIALOG_SELECT_3DMODEL::OnFileActivated( wxCommandEvent& event )
void DIALOG_SELECT_3DMODEL::SetRootDir( wxCommandEvent& event )
{
if( m_FileTree && m_dirChoices->GetSelection() > 0 )
{
m_FileTree->SetPath( m_dirChoices->GetString( m_dirChoices->GetSelection() ) );
m_FileTree->UnselectAll(); // Ensure no unwanted selection
}
}
void DIALOG_SELECT_3DMODEL::Cfg3DPaths( wxCommandEvent& event )
{
if( S3D::Configure3DPaths( this, m_resolver ) )
DIALOG_CONFIGURE_PATHS dlg( this );
if( dlg.ShowQuasiModal() == wxID_OK )
updateDirChoiceList();
}
@@ -44,6 +44,11 @@ public:
void SetRootDir( wxCommandEvent& event ) override;
void Cfg3DPaths( wxCommandEvent& event ) override;
bool IsEmbedded3DModel() const
{
return m_EmbedModelCb->IsChecked();
}
private:
void updateDirChoiceList( void );
@@ -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!
@@ -28,13 +28,19 @@ DIALOG_SELECT_3D_MODEL_BASE::DIALOG_SELECT_3D_MODEL_BASE( wxWindow* parent, wxWi
wxBoxSizer* bSizerLeft;
bSizerLeft = new wxBoxSizer( wxVERTICAL );
m_FileTree = new wxGenericDirCtrl( m_panelLeft, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxDIRCTRL_3D_INTERNAL|wxDIRCTRL_EDIT_LABELS|wxDIRCTRL_SELECT_FIRST|wxDIRCTRL_SHOW_FILTERS|wxBORDER_DEFAULT, wxEmptyString, 0 );
m_FileTree = new wxGenericDirCtrl( m_panelLeft, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxDIRCTRL_3D_INTERNAL|wxDIRCTRL_EDIT_LABELS|wxDIRCTRL_SHOW_FILTERS|wxBORDER_DEFAULT, wxEmptyString, 0 );
m_FileTree->ShowHidden( false );
m_FileTree->SetMinSize( wxSize( 300,-1 ) );
bSizerLeft->Add( m_FileTree, 1, wxALL|wxEXPAND, 5 );
wxBoxSizer* bSizer7;
bSizer7 = new wxBoxSizer( wxHORIZONTAL );
bSizerLeft->Add( bSizer7, 0, wxEXPAND, 5 );
m_panelLeft->SetSizer( bSizerLeft );
m_panelLeft->Layout();
@@ -70,6 +76,15 @@ DIALOG_SELECT_3D_MODEL_BASE::DIALOG_SELECT_3D_MODEL_BASE( wxWindow* parent, wxWi
bSizerMain->Add( bSizerLower, 0, wxEXPAND, 5 );
wxBoxSizer* bSizer6;
bSizer6 = new wxBoxSizer( wxHORIZONTAL );
m_EmbedModelCb = new wxCheckBox( this, wxID_ANY, _("Embed Model"), wxDefaultPosition, wxDefaultSize, 0 );
bSizer6->Add( m_EmbedModelCb, 0, wxALL, 5 );
bSizer6->Add( 0, 0, 1, wxEXPAND, 5 );
m_sdbSizer = new wxStdDialogButtonSizer();
m_sdbSizerOK = new wxButton( this, wxID_OK );
m_sdbSizer->AddButton( m_sdbSizerOK );
@@ -77,7 +92,10 @@ DIALOG_SELECT_3D_MODEL_BASE::DIALOG_SELECT_3D_MODEL_BASE( wxWindow* parent, wxWi
m_sdbSizer->AddButton( m_sdbSizerCancel );
m_sdbSizer->Realize();
bSizerMain->Add( m_sdbSizer, 0, wxEXPAND|wxALL, 5 );
bSizer6->Add( m_sdbSizer, 0, wxEXPAND|wxALL, 5 );
bSizerMain->Add( bSizer6, 0, wxEXPAND, 5 );
this->SetSizer( bSizerMain );
File diff suppressed because it is too large Load Diff
@@ -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!
@@ -26,11 +26,11 @@
#include <wx/bitmap.h>
#include <wx/image.h>
#include <wx/icon.h>
#include <wx/checkbox.h>
#include <wx/dialog.h>
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/// Class DIALOG_SELECT_3D_MODEL_BASE
///////////////////////////////////////////////////////////////////////////////
@@ -47,6 +47,7 @@ class DIALOG_SELECT_3D_MODEL_BASE : public DIALOG_SHIM
wxStaticText* m_stDirChoice;
wxChoice* m_dirChoices;
wxButton* m_cfgPathsButt;
wxCheckBox* m_EmbedModelCb;
wxStdDialogButtonSizer* m_sdbSizer;
wxButton* m_sdbSizerOK;
wxButton* m_sdbSizerCancel;
+72 -39
View File
@@ -36,14 +36,18 @@
#include <board.h>
#include <common_ogl/ogl_attr_list.h>
#include <dpi_scaling_common.h>
#include <lset.h>
#include <pgm_base.h>
#include <project_pcb.h>
#include <settings/common_settings.h>
#include <settings/settings_manager.h>
#include <widgets/wx_infobar.h>
#include <widgets/std_bitmap_button.h>
#include <eda_3d_viewer_settings.h>
#include <board_design_settings.h>
#include <3d_navlib/nl_footprint_properties_plugin.h>
PANEL_PREVIEW_3D_MODEL::PANEL_PREVIEW_3D_MODEL( wxWindow* aParent, PCB_BASE_FRAME* aFrame,
FOOTPRINT* aFootprint,
std::vector<FP_3DMODEL>* aParentModelList ) :
@@ -113,7 +117,7 @@ PANEL_PREVIEW_3D_MODEL::PANEL_PREVIEW_3D_MODEL( wxWindow* aParent, PCB_BASE_FRAM
// Ensure the footprint is shown like in Fp editor: rot 0, not flipped
// to avoid mistakes when setting the3D shape position/rotation
if( m_dummyFootprint->IsFlipped() )
m_dummyFootprint->Flip( m_dummyFootprint->GetPosition(), false );
m_dummyFootprint->Flip( m_dummyFootprint->GetPosition(), FLIP_DIRECTION::TOP_BOTTOM );
m_dummyFootprint->SetOrientation( ANGLE_0 );
@@ -123,7 +127,11 @@ PANEL_PREVIEW_3D_MODEL::PANEL_PREVIEW_3D_MODEL( wxWindow* aParent, PCB_BASE_FRAM
// Create the 3D canvas
m_previewPane = new EDA_3D_CANVAS( this,
OGL_ATT_LIST::GetAttributesList( ANTIALIASING_MODE::AA_8X ),
m_boardAdapter, m_currentCamera, PROJECT_PCB::Get3DCacheManager( &aFrame->Prj() ) );
m_boardAdapter, m_currentCamera,
PROJECT_PCB::Get3DCacheManager( &aFrame->Prj() ) );
m_spaceMouse = new NL_FOOTPRINT_PROPERTIES_PLUGIN( m_previewPane );
m_spaceMouse->SetFocus( true );
m_boardAdapter.SetBoard( m_dummyBoard );
m_boardAdapter.m_IsBoardView = false;
@@ -162,25 +170,7 @@ PANEL_PREVIEW_3D_MODEL::PANEL_PREVIEW_3D_MODEL( wxWindow* aParent, PCB_BASE_FRAM
wxCommandEventHandler( PANEL_PREVIEW_3D_MODEL::onUnitsChanged ),
nullptr, this );
#ifdef __WXOSX__
// Call layout once to get the proper button sizes after the bitmaps have been set
Layout();
// The rounded-button style used has a small border on the left/right sides.
// This is automatically fixed in wx for buttons with a bitmap < 20, but not
// when the bitmap is set to be 26x26.
wxSize borderFix = wxSize( 4, 4 );
m_bpvTop->SetMinSize( m_bpvTop->GetSize() + borderFix );
m_bpvFront->SetMinSize( m_bpvFront->GetSize() + borderFix );
m_bpvBack->SetMinSize( m_bpvBack->GetSize() + borderFix );
m_bpvLeft->SetMinSize( m_bpvLeft->GetSize() + borderFix );
m_bpvRight->SetMinSize( m_bpvRight->GetSize() + borderFix );
m_bpvBottom->SetMinSize( m_bpvBottom->GetSize() + borderFix );
m_bpvISO->SetMinSize( m_bpvISO->GetSize() + borderFix );
m_bpUpdate->SetMinSize( m_bpUpdate->GetSize() + borderFix );
m_bpSettings->SetMinSize( m_bpSettings->GetSize() + borderFix );
#endif
Bind( wxCUSTOM_PANEL_SHOWN_EVENT, &PANEL_PREVIEW_3D_MODEL::onPanelShownEvent, this );
}
@@ -190,6 +180,7 @@ PANEL_PREVIEW_3D_MODEL::~PANEL_PREVIEW_3D_MODEL()
if( m_boardAdapter.m_Cfg )
m_boardAdapter.m_Cfg->m_Render = m_initialRender;
delete m_spaceMouse;
delete m_dummyBoard;
delete m_previewPane;
}
@@ -210,13 +201,10 @@ void PANEL_PREVIEW_3D_MODEL::loadSettings()
COMMON_SETTINGS* settings = Pgm().GetCommonSettings();
const DPI_SCALING_COMMON dpi{ settings, this };
m_previewPane->SetScaleFactor( dpi.GetScaleFactor() );
// TODO(JE) use all control options
m_boardAdapter.m_MousewheelPanning = settings->m_Input.scroll_modifier_zoom != 0;
EDA_3D_VIEWER_SETTINGS* cfg = Pgm().GetSettingsManager().GetAppSettings<EDA_3D_VIEWER_SETTINGS>();
auto* cfg = Pgm().GetSettingsManager().GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
if( cfg )
{
@@ -237,6 +225,7 @@ void PANEL_PREVIEW_3D_MODEL::loadSettings()
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;
}
}
@@ -274,6 +263,10 @@ wxString PANEL_PREVIEW_3D_MODEL::formatScaleValue( double aValue )
wxString PANEL_PREVIEW_3D_MODEL::formatRotationValue( double aValue )
{
// Sigh. Did we really need differentiated +/- 0.0?
if( aValue == -0.0 )
aValue = 0.0;
return wxString::Format( wxT( "%.2f%s" ),
aValue,
EDA_UNIT_UTILS::GetText( EDA_UNITS::DEGREES ) );
@@ -307,9 +300,11 @@ void PANEL_PREVIEW_3D_MODEL::SetSelectedModel( int idx )
yscale->ChangeValue( formatScaleValue( modelInfo.m_Scale.y ) );
zscale->ChangeValue( formatScaleValue( modelInfo.m_Scale.z ) );
xrot->ChangeValue( formatRotationValue( modelInfo.m_Rotation.x ) );
yrot->ChangeValue( formatRotationValue( modelInfo.m_Rotation.y ) );
zrot->ChangeValue( formatRotationValue( modelInfo.m_Rotation.z ) );
// Rotation is stored in the file as postive-is-CW, but we use postive-is-CCW in the GUI
// to match the rest of KiCad
xrot->ChangeValue( formatRotationValue( -modelInfo.m_Rotation.x ) );
yrot->ChangeValue( formatRotationValue( -modelInfo.m_Rotation.y ) );
zrot->ChangeValue( formatRotationValue( -modelInfo.m_Rotation.z ) );
xoff->ChangeValue( formatOffsetValue( modelInfo.m_Offset.x ) );
yoff->ChangeValue( formatOffsetValue( modelInfo.m_Offset.y ) );
@@ -352,9 +347,11 @@ void PANEL_PREVIEW_3D_MODEL::updateOrientation( wxCommandEvent &event )
modelInfo->m_Scale.z = EDA_UNIT_UTILS::UI::DoubleValueFromString(
pcbIUScale, EDA_UNITS::UNSCALED, zscale->GetValue() );
modelInfo->m_Rotation.x = rotationFromString( xrot->GetValue() );
modelInfo->m_Rotation.y = rotationFromString( yrot->GetValue() );
modelInfo->m_Rotation.z = rotationFromString( zrot->GetValue() );
// Rotation is stored in the file as postive-is-CW, but we use postive-is-CCW in the GUI
// to match the rest of KiCad
modelInfo->m_Rotation.x = -rotationFromString( xrot->GetValue() );
modelInfo->m_Rotation.y = -rotationFromString( yrot->GetValue() );
modelInfo->m_Rotation.z = -rotationFromString( zrot->GetValue() );
modelInfo->m_Offset.x = EDA_UNIT_UTILS::UI::DoubleValueFromString( pcbIUScale, m_userUnits,
xoff->GetValue() )
@@ -368,6 +365,7 @@ void PANEL_PREVIEW_3D_MODEL::updateOrientation( wxCommandEvent &event )
// Update the dummy footprint for the preview
UpdateDummyFootprint( false );
onModify();
}
}
@@ -383,6 +381,7 @@ void PANEL_PREVIEW_3D_MODEL::onOpacitySlider( wxCommandEvent& event )
// Update the dummy footprint for the preview
UpdateDummyFootprint( false );
onModify();
}
}
@@ -444,10 +443,15 @@ void PANEL_PREVIEW_3D_MODEL::doIncrementScale( wxSpinEvent& event, double aSign
else if( spinCtrl == m_spinZscale )
textCtrl = zscale;
double step = SCALE_INCREMENT;
if( wxGetMouseState().ShiftDown( ) )
step = SCALE_INCREMENT_FINE;
double curr_value = EDA_UNIT_UTILS::UI::DoubleValueFromString( pcbIUScale, EDA_UNITS::UNSCALED,
textCtrl->GetValue() );
curr_value += ( SCALE_INCREMENT * aSign );
curr_value += ( step * aSign );
curr_value = std::max( 1/MAX_SCALE, curr_value );
curr_value = std::min( curr_value, MAX_SCALE );
@@ -465,10 +469,15 @@ void PANEL_PREVIEW_3D_MODEL::doIncrementRotation( wxSpinEvent& aEvent, double aS
else if( spinCtrl == m_spinZrot )
textCtrl = zrot;
double step = ROTATION_INCREMENT;
if( wxGetMouseState().ShiftDown( ) )
step = ROTATION_INCREMENT_FINE;
double curr_value = EDA_UNIT_UTILS::UI::DoubleValueFromString( unityScale, EDA_UNITS::DEGREES,
textCtrl->GetValue() );
curr_value += ( ROTATION_INCREMENT * aSign );
curr_value += ( step * aSign );
curr_value = std::max( -MAX_ROTATION, curr_value );
curr_value = std::min( curr_value, MAX_ROTATION );
@@ -488,16 +497,22 @@ void PANEL_PREVIEW_3D_MODEL::doIncrementOffset( wxSpinEvent& event, double aSign
textCtrl = zoff;
double step_mm = OFFSET_INCREMENT_MM;
double curr_value_mm =
EDA_UNIT_UTILS::UI::DoubleValueFromString( pcbIUScale, m_userUnits,
textCtrl->GetValue() )
/ pcbIUScale.IU_PER_MM;
if( wxGetMouseState().ShiftDown( ) )
step_mm = OFFSET_INCREMENT_MM_FINE;
if( m_userUnits == EDA_UNITS::MILS || m_userUnits == EDA_UNITS::INCHES )
{
step_mm = 25.4*OFFSET_INCREMENT_MIL/1000;
if( wxGetMouseState().ShiftDown( ) )
step_mm = 25.4*OFFSET_INCREMENT_MIL_FINE/1000;;
}
double curr_value_mm = EDA_UNIT_UTILS::UI::DoubleValueFromString( pcbIUScale, m_userUnits,
textCtrl->GetValue() )
/ pcbIUScale.IU_PER_MM;
curr_value_mm += ( step_mm * aSign );
curr_value_mm = std::max( -MAX_OFFSET, curr_value_mm );
curr_value_mm = std::min( curr_value_mm, MAX_OFFSET );
@@ -533,10 +548,10 @@ void PANEL_PREVIEW_3D_MODEL::onMouseWheelRot( wxMouseEvent& event )
{
wxTextCtrl* textCtrl = (wxTextCtrl*) event.GetEventObject();
double step = ROTATION_INCREMENT_WHEEL;
double step = ROTATION_INCREMENT;
if( event.ShiftDown( ) )
step = ROTATION_INCREMENT_WHEEL_FINE;
step = ROTATION_INCREMENT_FINE;
if( event.GetWheelRotation() >= 0 )
step = -step;
@@ -607,6 +622,17 @@ void PANEL_PREVIEW_3D_MODEL::onUnitsChanged( wxCommandEvent& aEvent )
}
void PANEL_PREVIEW_3D_MODEL::onPanelShownEvent( wxCommandEvent& aEvent )
{
if( m_spaceMouse != nullptr )
{
m_spaceMouse->SetFocus( static_cast<bool>( aEvent.GetInt() ) );
}
aEvent.Skip();
}
void PANEL_PREVIEW_3D_MODEL::UpdateDummyFootprint( bool aReloadRequired )
{
m_dummyFootprint->Models().clear();
@@ -622,3 +648,10 @@ void PANEL_PREVIEW_3D_MODEL::UpdateDummyFootprint( bool aReloadRequired )
m_previewPane->Request_refresh();
}
void PANEL_PREVIEW_3D_MODEL::onModify()
{
if( DIALOG_SHIM* dlg = dynamic_cast<DIALOG_SHIM*>( wxGetTopLevelParent( this ) ) )
dlg->OnModify();
}
+16 -3
View File
@@ -34,6 +34,7 @@
#include <3d_canvas/eda_3d_canvas.h>
#include <3d_viewer_id.h>
#include <3d_rendering/track_ball.h>
#include <wx/event.h>
// Define min and max parameter values
#define MAX_SCALE 10000.0
@@ -43,9 +44,8 @@
#define SCALE_INCREMENT_FINE 0.02
#define SCALE_INCREMENT 0.1
#define ROTATION_INCREMENT 90 // in degrees, for spin button command
#define ROTATION_INCREMENT_WHEEL 90 // in degrees, for mouse wheel command
#define ROTATION_INCREMENT_WHEEL_FINE 1 // in degrees, for mouse wheel command
#define ROTATION_INCREMENT 90 // in degrees
#define ROTATION_INCREMENT_FINE 1 // in degrees
#define OFFSET_INCREMENT_MM 0.5
#define OFFSET_INCREMENT_MM_FINE 0.1
@@ -53,6 +53,7 @@
#define OFFSET_INCREMENT_MIL 25.0
#define OFFSET_INCREMENT_MIL_FINE 5.0
wxDECLARE_EVENT( wxCUSTOM_PANEL_SHOWN_EVENT, wxCommandEvent );
// Declared classes to create pointers
class WX_INFOBAR;
@@ -61,6 +62,7 @@ class FILENAME_RESOLVER;
class BOARD;
class BOARD_ADAPTER;
class FOOTPRINT;
class NL_FOOTPRINT_PROPERTIES_PLUGIN;
class PANEL_PREVIEW_3D_MODEL: public EDA_3D_BOARD_HOLDER, public TOOLS_HOLDER, public PANEL_PREVIEW_3D_MODEL_BASE
{
@@ -93,6 +95,12 @@ public:
*/
void UpdateDummyFootprint( bool aRelaodRequired = true );
/**
* Get the dummy footprint that is used for previewing the 3D model.
* We use this to hold the temporary 3D model shapes.
*/
FOOTPRINT* GetDummyFootprint() const { return m_dummyFootprint; }
private:
/**
* Load 3D relevant settings from the user configuration
@@ -140,6 +148,7 @@ private:
void doIncrementOffset( wxSpinEvent& aEvent, double aSign );
void onUnitsChanged( wxCommandEvent& aEvent );
void onPanelShownEvent( wxCommandEvent& aEvent );
wxString formatScaleValue( double aValue );
wxString formatRotationValue( double aValue );
@@ -194,6 +203,8 @@ private:
m_previewPane->SetView3D( VIEW3D_TYPE::VIEW3D_BOTTOM );
}
void onModify();
private:
PCB_BASE_FRAME* m_parentFrame;
EDA_3D_CANVAS* m_previewPane;
@@ -212,6 +223,8 @@ private:
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;
NL_FOOTPRINT_PROPERTIES_PLUGIN* m_spaceMouse;
};
#endif // PANEL_PREVIEW_3D_MODEL_H
@@ -1,10 +1,12 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.10.1-282-g1fa54006)
// C++ code generated with wxFormBuilder (version 4.0.0-0-g0efcecf)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#include "widgets/std_bitmap_button.h"
#include "panel_preview_3d_model_base.h"
///////////////////////////////////////////////////////////////////////////
@@ -21,7 +23,7 @@ PANEL_PREVIEW_3D_MODEL_BASE::PANEL_PREVIEW_3D_MODEL_BASE( wxWindow* parent, wxWi
sbSizerScale = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Scale") ), wxVERTICAL );
wxFlexGridSizer* fgSizerScale;
fgSizerScale = new wxFlexGridSizer( 0, 3, 2, 3 );
fgSizerScale = new wxFlexGridSizer( 0, 3, 1, 3 );
fgSizerScale->AddGrowableCol( 1 );
fgSizerScale->SetFlexibleDirection( wxBOTH );
fgSizerScale->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
@@ -57,16 +59,16 @@ PANEL_PREVIEW_3D_MODEL_BASE::PANEL_PREVIEW_3D_MODEL_BASE( wxWindow* parent, wxWi
fgSizerScale->Add( m_spinZscale, 0, wxALIGN_CENTER_VERTICAL, 5 );
sbSizerScale->Add( fgSizerScale, 0, wxBOTTOM|wxEXPAND|wxRIGHT, 5 );
sbSizerScale->Add( fgSizerScale, 0, wxBOTTOM|wxEXPAND|wxRIGHT, 2 );
bSizerLeft->Add( sbSizerScale, 0, wxLEFT|wxRIGHT|wxEXPAND, 5 );
bSizerLeft->Add( sbSizerScale, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
wxStaticBoxSizer* sbSizerRotation;
sbSizerRotation = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Rotation") ), wxVERTICAL );
wxFlexGridSizer* fgSizerRotate;
fgSizerRotate = new wxFlexGridSizer( 0, 3, 2, 3 );
fgSizerRotate = new wxFlexGridSizer( 0, 3, 1, 3 );
fgSizerRotate->AddGrowableCol( 1 );
fgSizerRotate->SetFlexibleDirection( wxBOTH );
fgSizerRotate->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
@@ -102,7 +104,7 @@ PANEL_PREVIEW_3D_MODEL_BASE::PANEL_PREVIEW_3D_MODEL_BASE( wxWindow* parent, wxWi
fgSizerRotate->Add( m_spinZrot, 0, wxALIGN_CENTER_VERTICAL, 5 );
sbSizerRotation->Add( fgSizerRotate, 0, wxBOTTOM|wxRIGHT|wxEXPAND, 5 );
sbSizerRotation->Add( fgSizerRotate, 0, wxBOTTOM|wxRIGHT|wxEXPAND, 2 );
bSizerLeft->Add( sbSizerRotation, 0, wxLEFT|wxRIGHT|wxEXPAND, 5 );
@@ -111,7 +113,7 @@ PANEL_PREVIEW_3D_MODEL_BASE::PANEL_PREVIEW_3D_MODEL_BASE( wxWindow* parent, wxWi
sbSizerOffset = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Offset") ), wxVERTICAL );
wxFlexGridSizer* fgSizerOffset;
fgSizerOffset = new wxFlexGridSizer( 0, 3, 2, 3 );
fgSizerOffset = new wxFlexGridSizer( 0, 3, 1, 3 );
fgSizerOffset->AddGrowableCol( 1 );
fgSizerOffset->SetFlexibleDirection( wxBOTH );
fgSizerOffset->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
@@ -147,7 +149,7 @@ PANEL_PREVIEW_3D_MODEL_BASE::PANEL_PREVIEW_3D_MODEL_BASE( wxWindow* parent, wxWi
fgSizerOffset->Add( m_spinZoffset, 0, wxALIGN_CENTER_VERTICAL, 5 );
sbSizerOffset->Add( fgSizerOffset, 0, wxBOTTOM|wxRIGHT|wxEXPAND, 5 );
sbSizerOffset->Add( fgSizerOffset, 0, wxBOTTOM|wxRIGHT|wxEXPAND, 2 );
bSizerLeft->Add( sbSizerOffset, 0, wxLEFT|wxRIGHT|wxEXPAND, 5 );
@@ -155,8 +157,8 @@ PANEL_PREVIEW_3D_MODEL_BASE::PANEL_PREVIEW_3D_MODEL_BASE( wxWindow* parent, wxWi
wxStaticBoxSizer* sbSizer4;
sbSizer4 = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Opacity") ), wxVERTICAL );
m_opacity = new wxSlider( sbSizer4->GetStaticBox(), wxID_ANY, 50, 0, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS );
sbSizer4->Add( m_opacity, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
m_opacity = new wxSlider( sbSizer4->GetStaticBox(), wxID_ANY, 50, 0, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL );
sbSizer4->Add( m_opacity, 0, wxRIGHT|wxLEFT, 2 );
bSizerLeft->Add( sbSizer4, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
@@ -174,7 +176,7 @@ PANEL_PREVIEW_3D_MODEL_BASE::PANEL_PREVIEW_3D_MODEL_BASE( wxWindow* parent, wxWi
m_previewLabel->Wrap( -1 );
m_previewLabel->SetFont( wxFont( 11, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) );
bSizer6->Add( m_previewLabel, 1, wxEXPAND|wxLEFT|wxRIGHT, 10 );
bSizer6->Add( m_previewLabel, 1, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
bSizerRight->Add( bSizer6, 0, wxEXPAND, 5 );
@@ -193,53 +195,53 @@ PANEL_PREVIEW_3D_MODEL_BASE::PANEL_PREVIEW_3D_MODEL_BASE( wxWindow* parent, wxWi
bSizer3DButtons->Add( 0, 10, 0, 0, 5 );
m_bpvISO = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW|0 );
m_bpvISO = new STD_BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW|0 );
m_bpvISO->SetToolTip( _("Enable/disable orthographic projection") );
bSizer3DButtons->Add( m_bpvISO, 0, wxTOP, 5 );
m_bpvBodyStyle = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW|0 );
m_bpvBodyStyle = new STD_BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW|0 );
m_bpvBodyStyle->SetToolTip( _("Show or hide the board body\nIf hidden, show only copper and silkscreen layers.") );
bSizer3DButtons->Add( m_bpvBodyStyle, 0, wxTOP|wxBOTTOM, 5 );
bSizer3DButtons->Add( m_bpvBodyStyle, 0, wxTOP, 5 );
bSizer3DButtons->Add( 0, 0, 1, wxEXPAND, 5 );
m_bpvLeft = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW|0 );
m_bpvLeft = new STD_BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW|0 );
bSizer3DButtons->Add( m_bpvLeft, 0, wxBOTTOM, 5 );
m_bpvRight = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW|0 );
m_bpvRight = new STD_BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW|0 );
bSizer3DButtons->Add( m_bpvRight, 0, wxBOTTOM, 5 );
m_bpvFront = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW|0 );
m_bpvFront = new STD_BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW|0 );
bSizer3DButtons->Add( m_bpvFront, 0, wxBOTTOM, 5 );
m_bpvBack = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW|0 );
m_bpvBack = new STD_BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW|0 );
bSizer3DButtons->Add( m_bpvBack, 0, wxBOTTOM, 5 );
m_bpvTop = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW|0 );
m_bpvTop = new STD_BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW|0 );
bSizer3DButtons->Add( m_bpvTop, 0, wxBOTTOM, 5 );
m_bpvBottom = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW|0 );
m_bpvBottom = new STD_BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW|0 );
bSizer3DButtons->Add( m_bpvBottom, 0, 0, 5 );
bSizer3DButtons->Add( 0, 0, 1, wxEXPAND, 5 );
m_bpUpdate = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW|0 );
m_bpUpdate = new STD_BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW|0 );
m_bpUpdate->SetToolTip( _("Reload board and 3D models") );
bSizer3DButtons->Add( m_bpUpdate, 0, wxBOTTOM, 5 );
bSizer3DButtons->Add( m_bpUpdate, 0, wxTOP, 5 );
m_bpSettings = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
bSizer3DButtons->Add( m_bpSettings, 0, wxBOTTOM, 5 );
m_bpSettings = new STD_BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
bSizer3DButtons->Add( m_bpSettings, 0, wxTOP, 5 );
bSizer3DButtons->Add( 0, 10, 0, 0, 5 );
bSizermain->Add( bSizer3DButtons, 0, wxBOTTOM|wxLEFT|wxRIGHT|wxEXPAND, 5 );
bSizermain->Add( bSizer3DButtons, 0, wxEXPAND|wxTOP, 5 );
this->SetSizer( bSizermain );
File diff suppressed because it is too large Load Diff
+13 -11
View File
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.10.1-282-g1fa54006)
// C++ code generated with wxFormBuilder (version 4.0.0-0-g0efcecf)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@@ -10,6 +10,8 @@
#include <wx/artprov.h>
#include <wx/xrc/xmlres.h>
#include <wx/intl.h>
class STD_BITMAP_BUTTON;
#include <wx/string.h>
#include <wx/stattext.h>
#include <wx/gdicmn.h>
@@ -68,16 +70,16 @@ class PANEL_PREVIEW_3D_MODEL_BASE : public wxPanel
wxSlider* m_opacity;
wxStaticText* m_previewLabel;
wxBoxSizer* m_SizerPanelView;
wxBitmapButton* m_bpvISO;
wxBitmapButton* m_bpvBodyStyle;
wxBitmapButton* m_bpvLeft;
wxBitmapButton* m_bpvRight;
wxBitmapButton* m_bpvFront;
wxBitmapButton* m_bpvBack;
wxBitmapButton* m_bpvTop;
wxBitmapButton* m_bpvBottom;
wxBitmapButton* m_bpUpdate;
wxBitmapButton* m_bpSettings;
STD_BITMAP_BUTTON* m_bpvISO;
STD_BITMAP_BUTTON* m_bpvBodyStyle;
STD_BITMAP_BUTTON* m_bpvLeft;
STD_BITMAP_BUTTON* m_bpvRight;
STD_BITMAP_BUTTON* m_bpvFront;
STD_BITMAP_BUTTON* m_bpvBack;
STD_BITMAP_BUTTON* m_bpvTop;
STD_BITMAP_BUTTON* m_bpvBottom;
STD_BITMAP_BUTTON* m_bpUpdate;
STD_BITMAP_BUTTON* m_bpSettings;
// Virtual event handlers, override them in your derived class
virtual void onMouseWheelScale( wxMouseEvent& event ) { event.Skip(); }
+1
View File
@@ -51,6 +51,7 @@ Thomas Pointhuber <thomas.pointhuber[at]gmx-dot-at>
Roberto Fernandez Bautista <roberto.fer.bau[at]gmail-dot-com>
Mikołaj Wielgus <wielgusmikolaj[at]gmail-dot-com>
Mike Williams <mike[at]mikebwilliams-dot-com>
Emile Cormier <emile.cormier.jr[at]gmail-dot-com>
See git repo on GitLab for contributors at
https://gitlab.com/kicad/code/kicad/-/graphs/master
+129 -20
View File
@@ -31,6 +31,11 @@ cmake_policy( SET CMP0116 OLD )
# The current structure requires the add_custom_command to get called twice, the NEW behavior deduplicates it
cmake_policy( SET CMP0113 OLD )
# Enable CMAKE_MSVC_DEBUG_INFORMATION_FORMAT to override the cmake pdb flags easily
if (POLICY CMP0141)
cmake_policy(SET CMP0141 NEW)
endif (POLICY CMP0141)
# Default to CMAKE_BUILD_TYPE = Release unless overridden on command line
# http://www.cmake.org/pipermail/cmake/2008-September/023808.html
if( DEFINED CMAKE_BUILD_TYPE )
@@ -106,10 +111,9 @@ option( KICAD_SCRIPTING_WXPYTHON
ON )
mark_as_advanced( KICAD_SCRIPTING_WXPYTHON )
cmake_dependent_option( KICAD_UPDATE_CHECK
option( KICAD_UPDATE_CHECK
"Build in update check"
ON "APPLE_OR_WIN32"
OFF )
ON )
# EGL is only needed on Linux with Wayland
cmake_dependent_option( KICAD_USE_EGL
@@ -161,6 +165,17 @@ cmake_dependent_option( KICAD_APPLE_MAKE_RELOCATEABLE_BUNDLE
"On macOS, post-process the build to make it relocateable (default ON)"
ON "APPLE" OFF )
# CMake's FindProtobuf module doesn't work correctly on MacOS or Windows but is
# required for Linux
if( UNIX_NOT_APPLE )
set( KICAD_CMAKE_PROTOBUF_DEFAULT ON )
else()
set( KICAD_CMAKE_PROTOBUF_DEFAULT OFF )
endif()
option( KICAD_USE_CMAKE_FINDPROTOBUF "Use FindProtobuf provided by CMake" ${KICAD_CMAKE_PROTOBUF_DEFAULT} )
mark_as_advanced( KICAD_USE_CMAKE_FINDPROTOBUF )
####################################
# Installation options
####################################
@@ -210,6 +225,11 @@ cmake_dependent_option( KICAD_WIN32_BUILD_PARALLEL_CL_MP
OFF "WIN32"
OFF )
cmake_dependent_option( KICAD_WIN32_LTCG
"Enable Whole Program Optimization"
OFF "WIN32"
OFF )
# Advanced option to make link maps (only available on linux)
cmake_dependent_option( KICAD_MAKE_LINK_MAPS
"Create link maps for artifacts"
@@ -243,6 +263,14 @@ option( KICAD_GAL_PROFILE
"Enable profiling info for GAL"
OFF )
option( KICAD_IPC_API
"Enable experimental IPC API"
OFF )
option( KICAD_IDF_TOOLS
"Build additional idf tools"
ON )
# Global setting: exports are explicit
set( CMAKE_CXX_VISIBILITY_PRESET "hidden" )
set( CMAKE_VISIBILITY_INLINES_HIDDEN ON )
@@ -250,8 +278,8 @@ set( CMAKE_VISIBILITY_INLINES_HIDDEN ON )
# Global setting: build everything position independent
set( CMAKE_POSITION_INDEPENDENT_CODE ON )
# Global setting: Use C++17
set(CMAKE_CXX_STANDARD 17)
# Global setting: Use C++20
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
@@ -274,6 +302,10 @@ if( KICAD_WAYLAND )
add_compile_definitions( KICAD_WAYLAND )
endif()
if( KICAD_IPC_API )
add_definitions( -DKICAD_IPC_API )
endif()
# Ensure DEBUG is defined for all platforms in Debug builds
add_compile_definitions( $<$<CONFIG:Debug>:DEBUG> )
@@ -327,13 +359,9 @@ add_compile_definitions( $<$<BOOL:${KICAD_BUILD_ARCH_ARM64}>:KICAD_BUILD_ARCH_AR
if (USE_CCACHE)
find_program(CCACHE_FOUND ccache)
if(CCACHE_FOUND)
get_property(RULE_LAUNCH_COMPILE GLOBAL PROPERTY RULE_LAUNCH_COMPILE)
set(RULE_LAUNCH_COMPILE "${RULE_LAUNCH_COMPILE} ${CCACHE_FOUND}")
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${RULE_LAUNCH_COMPILE})
get_property(RULE_LAUNCH_LINK GLOBAL PROPERTY RULE_LAUNCH_LINK)
set(RULE_LAUNCH_LINK "${RULE_LAUNCH_LINK} ${CCACHE_FOUND}")
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ${RULE_LAUNCH_LINK})
# Set ccache on the actual lang
list(PREPEND CMAKE_C_COMPILER_LAUNCHER ${CCACHE_FOUND})
list(PREPEND CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_FOUND})
message(STATUS "Used ${CCACHE_FOUND} for compilation.")
else(CCACHE_FOUND)
@@ -348,9 +376,9 @@ endif(USE_CCACHE)
if (USE_DISTCC)
find_program(DISTCC_FOUND distcc)
if(DISTCC_FOUND)
get_property(RULE_LAUNCH_COMPILE GLOBAL PROPERTY RULE_LAUNCH_COMPILE)
set(RULE_LAUNCH_COMPILE "${RULE_LAUNCH_COMPILE} ${DISTCC_FOUND}")
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${RULE_LAUNCH_COMPILE})
list(APPEND CMAKE_C_COMPILER_LAUNCHER ${DISTCC_FOUND})
list(APPEND CMAKE_CXX_COMPILER_LAUNCHER ${DISTCC_FOUND})
message(STATUS "Using ${DISTCC_FOUND} for distributed build.")
else(DISTCC_FOUND)
message(INFO "Distcc was requested but not found.")
@@ -430,7 +458,7 @@ if( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
if( KICAD_SANITIZE_ADDRESS )
add_compile_definitions( KICAD_SANITIZE_ADDRESS )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GLIBCXX_SANITIZE_VECTOR -fsanitize=address -fno-optimize-sibling-calls -fsanitize-address-use-after-scope -fno-omit-frame-pointer" )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GLIBCXX_SANITIZE_VECTOR -fsanitize=address -fsanitize-recover=address -fno-optimize-sibling-calls -fsanitize-address-use-after-scope -fno-omit-frame-pointer" )
# ASAN shouldn't be used with these options (https://github.com/google/sanitizers/wiki/AddressSanitizer#faq)
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-stack-protector -U_FORTIFY_SOURCE" )
@@ -508,8 +536,20 @@ if( MSVC )
string( APPEND CMAKE_CXX_FLAGS " /wd4290" )
# C4800: non-bool is explicitly cast to bool, forcing value of 0 or 1
string( APPEND CMAKE_CXX_FLAGS " /wd4800" )
# /Zi: create PDB
string( APPEND CMAKE_CXX_FLAGS " /Zi" )
# cmake 3.25 or higher requried for MSVC, should be fine
if( USE_CCACHE AND CCACHE_FOUND )
# Equivalent to /Z7, ensures cmake doesn't fight over the default
# ccache may encounter external PDB file write errors due to paralleism
# Using the embedded PDB mode is ok for development use of ccache
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "Embedded")
else()
# Equivalent to /Zi, ensures cmake doesn't fight over the default
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "ProgramDatabase")
endif()
# /Zc:__cplusplus: define this macro according to C++ standard version
string( APPEND CMAKE_CXX_FLAGS " /Zc:__cplusplus" )
# /GF: enable string pooling
string( APPEND CMAKE_CXX_FLAGS_RELEASE " /GF" )
string( APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO " /GF" )
@@ -540,6 +580,12 @@ if( MSVC )
string( APPEND CMAKE_CXX_FLAGS " /fsanitize=address" )
endif()
if( KICAD_WIN32_LTCG )
# we are implementing this manually because CMake's LTCG option is incomplete
# https://gitlab.kitware.com/cmake/cmake/-/issues/20484
string( APPEND CMAKE_CXX_FLAGS_RELEASE " /GL" )
endif()
foreach( type EXE SHARED MODULE)
# /DEBUG: create PDB
string( APPEND CMAKE_${type}_LINKER_FLAGS " /DEBUG /MANIFEST:NO" )
@@ -549,6 +595,12 @@ if( MSVC )
# /OPT:ICF: fold common data
string( APPEND CMAKE_${type}_LINKER_FLAGS_RELEASE " /OPT:ICF /MANIFEST:NO" )
string( APPEND CMAKE_${type}_LINKER_FLAGS_RELWITHDEBINFO " /OPT:ICF /MANIFEST:NO" )
if( KICAD_WIN32_LTCG )
# we are implementing this manually because CMake's LTCG option is incomplete
# https://gitlab.kitware.com/cmake/cmake/-/issues/20484
string( APPEND CMAKE_${type}_LINKER_FLAGS_RELEASE " /LTCG" )
endif()
endforeach()
# Let cl.exe parallelize builds
@@ -757,6 +809,11 @@ include_directories( SYSTEM ${GLM_INCLUDE_DIR} )
#
find_package(ZLIB REQUIRED)
#
# Find Zstd library, required
#
find_package(ZSTD REQUIRED)
#
# Find libcurl, required
#
@@ -824,6 +881,27 @@ if( OCC_VERSION_STRING VERSION_LESS 7.5.0 )
endif()
include_directories( SYSTEM ${OCC_INCLUDE_DIR} )
if( KICAD_USE_CMAKE_FINDPROTOBUF )
include( FindProtobuf )
find_package( Protobuf REQUIRED )
else()
find_package( Protobuf REQUIRED CONFIG )
set( Protobuf_LIBRARY "protobuf::libprotobuf" )
endif()
if( NOT Protobuf_PROTOC_EXECUTABLE )
if( NOT KICAD_USE_CMAKE_FINDPROTOBUF)
set( Protobuf_PROTOC_EXECUTABLE "protobuf::protoc" )
else()
MESSAGE( FATAL_ERROR "Protobuf compiler not found. Please install protobuf-compiler." )
endif()
endif()
if( NOT Protobuf_INCLUDE_DIR )
get_target_property( Protobuf_INCLUDE_DIR protobuf::libprotobuf INTERFACE_INCLUDE_DIRECTORIES )
endif()
# Assist with header file searching optimization:
# INC_BEFORE and INC_AFTER are two lists which go at the front and back of the
# header file search lists, respectively.
@@ -860,7 +938,14 @@ check_find_package_result( PYTHONINTERP_FOUND "Python Interpreter" )
# Get the correct Python site package install path from the Python interpreter found by
# FindPythonInterp unless the user specifically defined a custom path.
if( NOT PYTHON_SITE_PACKAGE_PATH )
execute_process( COMMAND ${PYTHON_EXECUTABLE} -c "import sysconfig;print(\"%s\"%sysconfig.get_path('platlib', vars={'platbase': '.'}))"
execute_process( COMMAND ${PYTHON_EXECUTABLE} -c "import sys, sysconfig
if 'deb_system' in sysconfig.get_scheme_names():
scheme = 'deb_system'
elif sys.version_info > (3, 10):
scheme = sysconfig.get_default_scheme()
else:
scheme = sysconfig._get_default_scheme()
print(\"%s\"%sysconfig.get_path('platlib', vars={'platbase': '.'}, scheme=scheme))"
OUTPUT_VARIABLE PYTHON_SITE_PACKAGE_PATH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
@@ -978,6 +1063,25 @@ find_package( wxWidgets ${wxWidgets_REQ_VERSION} COMPONENTS gl aui adv html core
# Include wxWidgets macros.
include( ${wxWidgets_USE_FILE} )
# Detect wxWidgets port being used
if( wxWidgets_FIND_STYLE STREQUAL "win32" )
string(REGEX MATCH "^[msw|qt|gtk]*" KICAD_WX_PORT "${WX_CONFIGURATION}")
if( KICAD_WX_PORT STREQUAL "qt" )
add_compile_definitions( __WXQT__ )
elseif( KICAD_WX_PORT STREQUAL "gtk" )
add_compile_definitions( __WXGTK__ )
endif()
elseif( _wx_selected_config )
string(REGEX MATCH "^[msw|qt|gtk|osx]*" KICAD_WX_PORT "${_wx_selected_config}")
endif()
if( KICAD_WX_PORT )
message( STATUS "Detected wxWidgets port: ${KICAD_WX_PORT}")
else()
message( FATAL_ERROR "Unable to detect wxWidgets port")
endif()
if( NOT MSVC )
if( ${wxWidgets_VERSION_STRING} VERSION_LESS 3.2 )
message( FATAL_ERROR "wxWidgets 3.2.0 or greater is required" )
@@ -1026,6 +1130,10 @@ if( KICAD_USE_SENTRY )
add_compile_definitions( KICAD_USE_SENTRY )
endif()
if( KICAD_IPC_API )
find_package( nng REQUIRED )
endif()
#================================================
# Add the doxygen target
#================================================
@@ -1064,6 +1172,7 @@ list( APPEND CMAKE_CTEST_ARGUMENTS "--output-on-failure" )
#================================================
# Binaries ( CMake targets )
add_subdirectory( api )
add_subdirectory( resources )
add_subdirectory( thirdparty )
add_subdirectory( libs )
@@ -1078,7 +1187,7 @@ add_subdirectory( bitmap2component )
add_subdirectory( pcb_calculator )
add_subdirectory( plugins ) # 3D plugins must be built before kicad
add_subdirectory( cvpcb ) # must be after pcbnew
add_subdirectory( kicad ) # should follow pcbnew, eeschema
add_subdirectory( kicad ) # should follow pcbnew, eeschema, api
add_subdirectory( tools )
add_subdirectory( utils )
+56
View File
@@ -0,0 +1,56 @@
{
"version": 3,
"configurePresets": [
{
"name": "base",
"hidden": true,
"generator": "Ninja",
"binaryDir": "${sourceDir}/build",
"toolchainFile": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
},
"cacheVariables": {
"KICAD_BUILD_QA_TESTS": "OFF",
"KICAD_BUILD_I18N": "ON",
"KICAD_SCRIPTING_WXPYTHON": "ON"
}
},
{
"name": "win64",
"hidden": true,
"cacheVariables": {
"KICAD_WIN32_DPI_AWARE": "ON",
"CMAKE_INSTALL_PREFIX": "out",
"CMAKE_PDB_OUTPUT_DIRECTORY": "out/pdb"
},
"architecture": {
"value": "x64",
"strategy": "external"
},
"inherits": [
"base"
]
},
{
"name": "x64-debug",
"displayName": "x64 Debug",
"description": "Sets debug build type and x64 arch",
"inherits": "win64",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug"
}
},
{
"name": "x64-release",
"displayName": "x64 Release",
"description": "Sets release build type",
"inherits": "win64",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
}
}
]
}
+1 -92
View File
@@ -1,4 +1,4 @@
{
{
"environments": [
{
"BuildDir": "${workspaceRoot}\\build",
@@ -7,67 +7,9 @@
{
"environment": "vcpkg",
"VcPkgDir": "D:/vcpkg/"
},
{
"environment": "mingw_64",
"MINGW64_ROOT": "D:/msys64/mingw64",
"BIN_ROOT": "${env.MINGW64_ROOT}/bin",
"FLAVOR": "x86_64-w64-mingw32",
"TOOLSET_VERSION": "10.2.0",
"PATH": "${env.MINGW64_ROOT}/bin;${env.MINGW64_ROOT}/../usr/local/bin;${env.MINGW64_ROOT}/../usr/bin;${env.MINGW64_ROOT}/../bin;${env.PATH}",
"INCLUDE": "${env.INCLUDE};${env.MINGW64_ROOT}/include/c++/${env.TOOLSET_VERSION};${env.MINGW64_ROOT}/include/c++/${env.TOOLSET_VERSION}/tr1;${env.MINGW64_ROOT}/include/c++/${env.TOOLSET_VERSION}/${env.FLAVOR}"
}
],
"configurations": [
{
"name": "x86-Debug",
"generator": "Ninja",
"configurationType": "Debug",
"inheritEnvironments": [ "msvc_x86", "vcpkg" ],
"buildRoot": "${env.BuildDir}\\${name}",
"installRoot": "${env.InstallDir}\\${name}",
"addressSanitizerEnabled": false,
"cmakeCommandArgs": "",
"buildCommandArgs": "-v",
"ctestCommandArgs": "",
"variables": [
{
"name": "KICAD_BUILD_QA_TESTS",
"value": "False",
"type": "BOOL"
},
{
"name": "KICAD_WIN32_DPI_AWARE",
"value": "ON",
"type": "BOOL"
}
],
"cmakeToolchain": "${env.VcPkgDir}/scripts/buildsystems/vcpkg.cmake"
},
{
"name": "x86-Release",
"generator": "Ninja",
"configurationType": "RelWithDebInfo",
"inheritEnvironments": [ "msvc_x86", "vcpkg" ],
"buildRoot": "${env.BuildDir}\\${name}",
"installRoot": "${env.InstallDir}\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "-v",
"ctestCommandArgs": "",
"variables": [
{
"name": "KICAD_BUILD_QA_TESTS",
"value": "False",
"type": "BOOL"
},
{
"name": "KICAD_WIN32_DPI_AWARE",
"value": "ON",
"type": "BOOL"
}
],
"cmakeToolchain": "${env.VcPkgDir}/scripts/buildsystems/vcpkg.cmake"
},
{
"name": "x64-Debug",
"generator": "Ninja",
@@ -115,39 +57,6 @@
}
],
"cmakeToolchain": "${env.VcPkgDir}/scripts/buildsystems/vcpkg.cmake"
},
{
"name": "MSYS2-x64-Debug",
"generator": "Ninja",
"configurationType": "Debug",
"inheritEnvironments": [ "mingw_64" ],
"buildRoot": "${env.BuildDir}\\${name}",
"installRoot": "${env.InstallDir}\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "-v",
"ctestCommandArgs": "",
"intelliSenseMode": "linux-gcc-x64",
"cmakeToolchain": "",
"variables": [
{
"name": "CMAKE_C_COMPILER",
"value": "${env.BIN_ROOT}/gcc.exe"
},
{
"name": "CMAKE_CXX_COMPILER",
"value": "${env.BIN_ROOT}/g++.exe"
},
{
"name": "KICAD_BUILD_QA_TESTS",
"value": "False",
"type": "BOOL"
},
{
"name": "KICAD_WIN32_DPI_AWARE",
"value": "ON",
"type": "BOOL"
}
]
}
]
}
+133
View File
@@ -0,0 +1,133 @@
# This program source code file is part of KiCad, a free EDA CAD application.
#
# Copyright (C) 2023 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 as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
# Search paths for protoc when generating code
set( Protobuf_IMPORT_DIRS ${Protobuf_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/proto )
set( KIAPI_PROTO_SRCS
common/envelope.proto
common/types/base_types.proto
common/types/enums.proto
common/types/project_settings.proto
common/commands/base_commands.proto
common/commands/editor_commands.proto
common/commands/project_commands.proto
board/board.proto
board/board_commands.proto
board/board_types.proto
schematic/schematic_types.proto
schematic/schematic_commands.proto
)
# Generated C++ code must be in the build dir; it is dependent on the version of protoc installed
set( KIAPI_CPP_BASEPATH ${CMAKE_CURRENT_BINARY_DIR}/cpp/api )
foreach( PROTO_SRC ${KIAPI_PROTO_SRCS} )
string( REGEX REPLACE "\.proto$" ".pb.cc" CPP_SRC ${PROTO_SRC} )
string( REGEX REPLACE "\.proto$" ".pb.h" CPP_HEADER ${PROTO_SRC} )
set( KIAPI_CPP_SRCS ${KIAPI_CPP_SRCS} ${KIAPI_CPP_BASEPATH}/${CPP_SRC} )
set( KIAPI_CPP_HEADERS ${KIAPI_CPP_HEADERS} ${KIAPI_CPP_BASEPATH}/${CPP_HEADER} )
set( KIAPI_PROTO_SRC_FULLPATHS ${KIAPI_PROTO_SRC_FULLPATHS} ${CMAKE_CURRENT_SOURCE_DIR}/proto/${PROTO_SRC} )
endforeach ()
add_custom_command( COMMAND ${CMAKE_COMMAND} -E make_directory ${KIAPI_CPP_BASEPATH}
COMMAND ${Protobuf_PROTOC_EXECUTABLE}
--cpp_out=dllexport_decl=KIAPI_IMPORTEXPORT:${KIAPI_CPP_BASEPATH}
--proto_path=${CMAKE_CURRENT_SOURCE_DIR}/proto
${KIAPI_PROTO_SRCS}
COMMENT "Generating API protobuf source files from proto definitions..."
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS ${KIAPI_PROTO_SRC_FULLPATHS}
OUTPUT ${KIAPI_CPP_SRCS} ${KIAPI_CPP_HEADERS}
)
# kiapi must be a shared DLL because the protobuf messages can only be initialized once
add_library( kiapi SHARED
${CMAKE_CURRENT_SOURCE_DIR}/../include/import_export.h
${KIAPI_CPP_SRCS}
${KIAPI_CPP_HEADERS}
)
target_compile_definitions( kiapi PRIVATE KIAPI_IMPORTEXPORT=APIEXPORT )
target_compile_definitions( kiapi INTERFACE KIAPI_IMPORTEXPORT=APIIMPORT )
# https://groups.google.com/g/protobuf/c/PDR1bqRazts
if(MSVC)
target_compile_options( kiapi PRIVATE /FI${CMAKE_CURRENT_SOURCE_DIR}/../include/import_export.h )
else()
add_definitions( -include ${CMAKE_CURRENT_SOURCE_DIR}/../include/import_export.h )
endif()
if( APPLE )
# puts library into the main kicad.app bundle in build tree
set_target_properties( kiapi PROPERTIES
LIBRARY_OUTPUT_DIRECTORY "${OSX_BUNDLE_BUILD_LIB_DIR}"
INSTALL_NAME_DIR "${OSX_BUNDLE_BUILD_LIB_DIR}"
)
endif()
install( TARGETS
kiapi
RUNTIME DESTINATION ${KICAD_LIB}
LIBRARY DESTINATION ${KICAD_LIB}
COMPONENT binary
)
if( KICAD_WIN32_INSTALL_PDBS )
# Get the PDBs to copy over for MSVC
install(FILES $<TARGET_PDB_FILE:kiapi> DESTINATION ${KICAD_BIN})
endif()
# Because CMake doesn't guess this from the .cc extension generated by protoc
set_target_properties( kiapi PROPERTIES LINKER_LANGUAGE CXX )
include( ${KICAD_CMAKE_MODULE_PATH}/KiCadVersion.cmake )
# Extract the major and minor build version as a string
string( REGEX MATCH
"([0-9]+)\\.([0-9]+)\\.([0-9]+)"
KICAD_MAJOR_MINOR_PATCH_VERSION
"${KICAD_VERSION}"
)
set_target_properties( kiapi PROPERTIES SOVERSION ${KICAD_MAJOR_MINOR_PATCH_VERSION} )
target_include_directories( kiapi SYSTEM PUBLIC ${Protobuf_INCLUDE_DIRS} )
target_link_libraries( kiapi protobuf::libprotobuf )
target_include_directories( kiapi INTERFACE
${CMAKE_CURRENT_BINARY_DIR}/cpp # Leaving off the /api/ to make #include statments less ambiguous
)
# Because when building internally, the generated files do not include the "api" base path
target_include_directories( kiapi PUBLIC ${KIAPI_CPP_BASEPATH} )
if( APPLE )
# puts library into the main kicad.app bundle in build tree
set_target_properties( kiapi PROPERTIES
LIBRARY_OUTPUT_DIRECTORY "${OSX_BUNDLE_BUILD_LIB_DIR}"
INSTALL_NAME_DIR "${OSX_BUNDLE_BUILD_LIB_DIR}"
)
set_target_properties( kiapi PROPERTIES INSTALL_RPATH
"@executable_path/../Frameworks" )
set_target_properties( kiapi PROPERTIES BUILD_WITH_INSTALL_RPATH 1 )
endif()
+116
View File
@@ -0,0 +1,116 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2024 Jon Evans <jon@craftyjon.com>
* Copyright (C) 2024 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 as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
syntax = "proto3";
package kiapi.board;
import "common/types/base_types.proto";
import "board/board_types.proto";
message BoardFinish
{
string type_name = 1;
}
message BoardImpedanceControl
{
bool is_controlled = 1;
}
message BoardEdgeConnector
{
}
message Castellation
{
bool has_castellated_pads = 1;
}
message EdgePlating
{
bool has_edge_plating = 1;
}
message BoardEdgeSettings
{
BoardEdgeConnector connector = 1;
Castellation castellation = 2;
EdgePlating plating = 3;
}
message BoardStackupCopperLayer
{
}
message BoardStackupLayer
{
kiapi.common.types.Distance thickness = 1;
kiapi.board.types.BoardLayer layer = 2;
bool enabled = 3;
oneof item {
BoardStackupCopperLayer copper = 4;
}
}
message BoardStackup
{
BoardFinish finish = 1;
BoardImpedanceControl impedance = 2;
// NOTE: m_HasThicknessConstrains appears to be unused
BoardEdgeSettings edge = 3;
repeated BoardStackupLayer layers = 4;
}
// LAYER_CLASS_* in BOARD_DESIGN_SETTINGS -- needs to become an enum class
enum BoardLayerClass
{
BLC_UNKNOWN = 0;
BLC_SILKSCREEN = 1;
BLC_COPPER = 2;
BLC_EDGES = 3;
BLC_COURTYARD = 4;
BLC_FABRICATION = 5;
BLC_OTHER = 6;
}
message BoardLayerGraphicsDefaults
{
BoardLayerClass layer = 1;
kiapi.common.types.TextAttributes text = 2;
kiapi.common.types.Distance line_thickness = 3;
}
message GraphicsDefaults
{
repeated BoardLayerGraphicsDefaults layers = 1;
}
// Anything that isn't stackup or design rules
message BoardSettings
{
GraphicsDefaults graphics_defaults = 1;
// Dimension default settings
}
message BoardDesignRules
{
}
+151
View File
@@ -0,0 +1,151 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2024 Jon Evans <jon@craftyjon.com>
* Copyright (C) 2024 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 as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
syntax = "proto3";
package kiapi.board.commands;
import "common/types/base_types.proto";
import "common/types/enums.proto";
import "board/board.proto";
import "board/board_types.proto";
/*
* Board stackup and properties
*/
message GetBoardStackup
{
kiapi.common.types.DocumentSpecifier board = 1;
}
message BoardStackupResponse
{
kiapi.board.BoardStackup stackup = 1;
}
message UpdateBoardStackup
{
kiapi.common.types.DocumentSpecifier board = 1;
kiapi.board.BoardStackup stackup = 2;
}
message GetGraphicsDefaults
{
kiapi.common.types.DocumentSpecifier board = 1;
}
message GraphicsDefaultsResponse
{
kiapi.board.GraphicsDefaults defaults = 1;
}
/*
* Net management
*/
message GetNets
{
kiapi.common.types.DocumentSpecifier board = 1;
// If provided, will only return nets that belong to the given netclass.
// If more than one netclass_filter is given, nets belonging to any of the given classes will
// be returned.
repeated string netclass_filter = 2;
}
message NetsResponse
{
repeated kiapi.board.types.Net nets = 1;
}
// Retrieve all the copper items belonging to a certain net or set of nets
// returns kiapi.common.commands.GetItemsResponse
message GetItemsByNet
{
// Specifies which document to query, which fields to return, etc.
kiapi.common.types.ItemHeader header = 1;
// List of one or more types of items to retreive
repeated kiapi.common.types.KiCadObjectType types = 2;
// A list of net codes to filter items by
repeated kiapi.board.types.NetCode net_codes = 3;
}
// Retrieve all the copper items belonging to a certain net class or set of net classes
// returns kiapi.common.commands.GetItemsResponse
message GetItemsByNetClass
{
// Specifies which document to query, which fields to return, etc.
kiapi.common.types.ItemHeader header = 1;
// List of one or more types of items to retreive
repeated kiapi.common.types.KiCadObjectType types = 2;
// A list of net class names to filter items by
repeated string net_classes = 3;
}
/*
* Blocking operations
*/
// Refills some or all zones on the board.
// This is a blocking operation; it will return Empty immediately, but KiCad will return
// ApiStatusCode.AS_BUSY to all future API requests until the zone fill has completed.
message RefillZones
{
kiapi.common.types.DocumentSpecifier board = 1;
// A list of zones to refill. If empty, all zones are refilled.
repeated kiapi.common.types.KIID zones = 2;
}
/*
* Utilities
*/
// returns kiapi.common.commands.BoundingBoxResponse
message GetTextExtents
{
// A temporary text item to calculate the bounding box for
kiapi.board.types.Text text = 1;
}
//// Interactive commands ////
// These commands begin an interactive operation in the editor.
// They return a response immediately, but the editor will become busy
// and will not reply to further API commands until the user has finished
// the operation.
// These commands will return an error if received in a non-interactive context.
// Selects and begins an interactive move of the given item(s).
// NOTE: Takes ownership of the active commit, if one exists:
// the move tool will push the commit when the user confirms the move,
// or roll back the commit if the user cancels the move. Keep this in
// mind if using this command in combination with commands that create
// or modify items using an explicit commit.
message InteractiveMoveItems
{
kiapi.common.types.DocumentSpecifier board = 1;
repeated kiapi.common.types.KIID items = 2;
}
+560
View File
@@ -0,0 +1,560 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2024 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 as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
syntax = "proto3";
package kiapi.board.types;
import "google/protobuf/any.proto";
import "common/types/base_types.proto";
enum BoardLayer
{
BL_UNKNOWN = 0;
BL_UNDEFINED = 1;
BL_UNSELECTED = 2;
BL_F_Cu = 3;
BL_In1_Cu = 4;
BL_In2_Cu = 5;
BL_In3_Cu = 6;
BL_In4_Cu = 7;
BL_In5_Cu = 8;
BL_In6_Cu = 9;
BL_In7_Cu = 10;
BL_In8_Cu = 11;
BL_In9_Cu = 12;
BL_In10_Cu = 13;
BL_In11_Cu = 14;
BL_In12_Cu = 15;
BL_In13_Cu = 16;
BL_In14_Cu = 17;
BL_In15_Cu = 18;
BL_In16_Cu = 19;
BL_In17_Cu = 20;
BL_In18_Cu = 21;
BL_In19_Cu = 22;
BL_In20_Cu = 23;
BL_In21_Cu = 24;
BL_In22_Cu = 25;
BL_In23_Cu = 26;
BL_In24_Cu = 27;
BL_In25_Cu = 28;
BL_In26_Cu = 29;
BL_In27_Cu = 30;
BL_In28_Cu = 31;
BL_In29_Cu = 32;
BL_In30_Cu = 33;
BL_B_Cu = 34;
BL_B_Adhes = 35;
BL_F_Adhes = 36;
BL_B_Paste = 37;
BL_F_Paste = 38;
BL_B_SilkS = 39;
BL_F_SilkS = 40;
BL_B_Mask = 41;
BL_F_Mask = 42;
BL_Dwgs_User = 43;
BL_Cmts_User = 44;
BL_Eco1_User = 45;
BL_Eco2_User = 46;
BL_Edge_Cuts = 47;
BL_Margin = 48;
BL_B_CrtYd = 49;
BL_F_CrtYd = 50;
BL_B_Fab = 51;
BL_F_Fab = 52;
BL_User_1 = 53;
BL_User_2 = 54;
BL_User_3 = 55;
BL_User_4 = 56;
BL_User_5 = 57;
BL_User_6 = 58;
BL_User_7 = 59;
BL_User_8 = 60;
BL_User_9 = 61;
}
message NetCode
{
int32 value = 1;
}
// Describes a copper item's net
message Net
{
// A unique code representing this net
NetCode code = 1;
// Human-readable net name
string name = 2;
}
// Represents a track segment on a board
message Track
{
kiapi.common.types.KIID id = 1;
kiapi.common.types.Vector2 start = 2;
kiapi.common.types.Vector2 end = 3;
kiapi.common.types.Distance width = 4;
kiapi.common.types.LockedState locked = 5;
BoardLayer layer = 6;
Net net = 7;
}
// Represents an arc track (not a PCB_SHAPE in arc shape)
// Arc tracks in KiCad store start, midpoint, and end.
// All other values (center point, angles, etc) are inferred.
message Arc
{
kiapi.common.types.KIID id = 1;
kiapi.common.types.Vector2 start = 2;
kiapi.common.types.Vector2 mid = 3; // Arc midpoint
kiapi.common.types.Vector2 end = 4;
kiapi.common.types.Distance width = 5;
kiapi.common.types.LockedState locked = 6;
BoardLayer layer = 7;
Net net = 8;
}
// What copper layer shape mode the padstack uses
enum PadStackType
{
PST_UNKNOWN = 0;
// The same shape is used on all copper layers
PST_NORMAL = 1;
// The padstack uses up to three different shapes (F_Cu, inner layers, B_Cu)
PST_TOP_INNER_BOTTOM = 2;
// The padstack's shape may differ on arbitrary copper layers
PST_CUSTOM = 3;
}
enum UnconnectedLayerRemoval
{
ULR_UNKNOWN = 0;
// Keep annular rings on all layers
ULR_KEEP = 1;
// Remove annular rings on unconnected layers, including start and end layers.
ULR_REMOVE = 2;
// Remove annular rings on unconnected layers, but preserve start and end layers even if unconnected.
ULR_REMOVE_EXCEPT_START_AND_END = 3;
}
// The shape of a pad on a given layer
enum PadStackShape
{
PSS_UNKNOWN = 0;
PSS_CIRCLE = 1;
PSS_RECTANGLE = 2;
PSS_OVAL = 3;
PSS_TRAPEZOID = 4;
PSS_ROUNDRECT = 5;
PSS_CHAMFEREDRECT = 6;
PSS_CUSTOM = 7;
}
// Which corners are chamfered in a PSS_CHAMFEREDRECT
message ChamferedRectCorners
{
bool top_left = 1;
bool top_right = 2;
bool bottom_left = 3;
bool bottom_right = 4;
}
// enum class ZONE_CONNECTION
enum ZoneConnectionStyle
{
ZCS_UNKNOWN = 0;
ZCS_INHERITED = 1;
ZCS_NONE = 2;
ZCS_THERMAL = 3;
ZCS_FULL = 4;
ZCS_PTH_THERMAL = 5; // Thermal reliefs for plated through holes, solid for SMD pads
}
message ZoneConnectionSettings
{
ZoneConnectionStyle zone_connection = 1;
ThermalSpokeSettings thermal_spokes = 2;
}
message SolderMaskOverrides
{
// Solder mask expansion/contraction
kiapi.common.types.Distance solder_mask_margin = 1;
}
message SolderPasteOverrides
{
// Solder paste expansion/contraction
kiapi.common.types.Distance solder_paste_margin = 1;
// Solder paste expansion/contraction ratio
kiapi.common.types.Ratio solder_paste_margin_ratio = 2;
}
// The defintion of a padstack on a single layer
message PadStackLayer
{
// The board layers of this padstack entry
repeated BoardLayer layers = 1;
// The shape of the pad on this layer
PadStackShape shape = 2;
// The size (x and y) of the shape on this layer
kiapi.common.types.Vector2 size = 3;
// How much to round the corners of the shape by, as a fraction of min(size.x, size.y)
// Only used for PSS_ROUNDRECT or PSS_CHAMFEREDRECT
double corner_rounding_ratio = 4;
// How much to round the corners of the shape by, as a fraction of min(size.x, size.y)
// Only used for PSS_CHAMFEREDRECT
double chamfer_ratio = 5;
ChamferedRectCorners chamfered_corners = 6;
repeated GraphicShape custom_shapes = 7;
// If shape == PSS_CUSTOM, defines the shape of the anchor (only PSS_CIRCLE and PSS_RECTANGLE supported at present)
PadStackShape custom_anchor_shape = 8;
ZoneConnectionSettings zone_settings = 9;
}
enum SolderMaskMode
{
SMM_UNKOWN = 0;
SMM_MASKED = 1;
SMM_UNMASKED = 2;
SMM_FROM_DESIGN_RULES = 3;
}
enum SolderPasteMode
{
SPM_UNKOWN = 0;
SPM_PASTE = 1;
SPM_NO_PASTE = 2;
SPM_FROM_DESIGN_RULES = 3;
}
// Properties for the outer technical layers of a padstack on the top or bottom of the stack
message PadStackOuterLayer
{
SolderMaskMode solder_mask_mode = 1;
SolderPasteMode solder_paste_mode = 2;
SolderMaskOverrides solder_mask_settings = 3;
SolderPasteOverrides solder_paste_settings = 4;
}
// A pad stack definition for a multilayer pad or via.
message PadStack
{
// What type of pad stack this represents.
PadStackType type = 1;
// Lowest (closest to F_Cu) layer this stack exists on. Ignored if type == PST_THROUGH.
BoardLayer start_layer = 2;
// Highest (closest to B_Cu) layer this stack exists on. Ignored if type == PST_THROUGH.
BoardLayer end_layer = 3;
// How to treat pad shapes on unconnected layers.
UnconnectedLayerRemoval unconnected_layer_removal = 4;
// The diameter, in x and y, of the pad's drilled hole, if this pad has a hole.
// x and y will be the same value if the hole is round.
kiapi.common.types.Vector2 drill_diameter = 5;
repeated PadStackLayer layers = 6;
// The overall rotation of this padstack (affects all layers)
kiapi.common.types.Angle angle = 7;
// Solder mask and paste settings for the front
PadStackOuterLayer front_outer_layers = 8;
// Solder mask and paste settings for the back
PadStackOuterLayer back_outer_layers = 9;
}
enum ViaType
{
VT_UNKNOWN = 0;
// Through vias always start on F_Cu and end on B_Cu
VT_THROUGH = 1;
// Blind/buried vias can have arbitrary start and end layers
VT_BLIND_BURIED = 2;
// Microvias, blind/buried vias, can have arbitrary start and end layers, but also have different
// size defaults and design rules
VT_MICRO = 3;
}
// Represents a via
message Via
{
// The unique identifier of the via
kiapi.common.types.KIID id = 1;
// The location of the via's center point
kiapi.common.types.Vector2 position = 2;
// The pad stack definition for this via.
PadStack pad_stack = 3;
kiapi.common.types.LockedState locked = 4;
Net net = 5;
ViaType type = 6;
}
message GraphicSegmentAttributes
{
kiapi.common.types.Vector2 start = 1;
kiapi.common.types.Vector2 end = 2;
}
message GraphicRectangleAttributes
{
kiapi.common.types.Vector2 top_left = 1;
kiapi.common.types.Vector2 bottom_right = 2;
}
message GraphicArcAttributes
{
kiapi.common.types.Vector2 start = 1;
kiapi.common.types.Vector2 mid = 2;
kiapi.common.types.Vector2 end = 3;
}
message GraphicCircleAttributes
{
kiapi.common.types.Vector2 center = 1;
// A point on the radius of the circle. This is stored instead of just a radius so that the point
// by which the user can adjust the circle radius is persisted.
kiapi.common.types.Vector2 radius_point = 2;
}
message GraphicBezierAttributes
{
kiapi.common.types.Vector2 start = 1;
kiapi.common.types.Vector2 control1 = 2;
kiapi.common.types.Vector2 control2 = 3;
kiapi.common.types.Vector2 end = 4;
}
message GraphicShape
{
kiapi.common.types.KIID id = 1;
kiapi.common.types.LockedState locked = 2;
BoardLayer layer = 3;
Net net = 4;
kiapi.common.types.GraphicAttributes attributes = 5;
oneof geometry {
GraphicSegmentAttributes segment = 6;
GraphicRectangleAttributes rectangle = 7;
GraphicArcAttributes arc = 8;
GraphicCircleAttributes circle = 9;
kiapi.common.types.PolySet polygon = 10;
GraphicBezierAttributes bezier = 11;
}
}
// A board-specific text object, existing on a board layer
message Text
{
kiapi.common.types.Text text = 1;
BoardLayer layer = 2;
}
// A board-specific textbox, existing on a board layer
message TextBox
{
kiapi.common.types.TextBox textbox = 1;
BoardLayer layer = 2;
}
// NOTE: There has been some discussion about what to do with pad attributes and properties.
// This may be considered somewhat unstable until we decide what to do with the KiCad side.
// It is not clear what the set of mutually-exclusive pad types will be at the end of the day,
// versus what will be non-exclusive attributes/properties.
// For now, this maps to PAD_ATTRIB in KiCad.
enum PadType
{
PT_UNKNOWN = 0;
PT_PTH = 1;
PT_SMD = 2;
PT_EDGE_CONNECTOR = 3;
PT_NPTH = 4;
}
enum CustomPadShapeZoneFillStrategy
{
CPSZ_UNKNOWN = 0;
CPSZ_OUTLINE = 1;
CPSZ_CONVEXHULL = 2;
}
message ThermalSpokeSettings
{
int64 width = 1;
kiapi.common.types.Angle angle = 2;
int64 gap = 3;
}
message Pad
{
kiapi.common.types.KIID id = 1;
kiapi.common.types.LockedState locked = 2;
string number = 3;
Net net = 4;
PadType type = 5;
PadStack pad_stack = 6;
// A pad's position is always relative to the parent footprint's origin
kiapi.common.types.Vector2 position = 7;
// Copper-to-copper clearance override
kiapi.common.types.Distance copper_clearance_override = 8;
}
// Copper zone, non-copper zone, or rule area
message Zone
{
// TODO
}
message Dimension
{
// TODO
}
message ReferenceImage
{
// TODO
}
message Group
{
// TODO
}
message FieldId
{
int32 id = 1;
}
message Field
{
FieldId id = 1;
string name = 2;
Text text = 3;
}
message Model3D
{
// TODO
}
enum FootprintMountingStyle
{
FMS_UNKNOWN = 0;
FMS_THROUGH_HOLE = 1;
FMS_SMD = 2;
FMS_UNSPECIFIED = 3;
}
message FootprintAttributes
{
string description = 1;
string keywords = 2;
bool not_in_schematic = 3;
bool exclude_from_position_files = 4;
bool exclude_from_bill_of_materials = 5;
bool exempt_from_courtyard_requirement = 6;
bool do_not_populate = 7;
FootprintMountingStyle mounting_style = 8;
}
message NetTieDefinition
{
repeated string pad_number = 1;
}
message FootprintDesignRuleOverrides
{
SolderMaskOverrides solder_mask = 1;
SolderPasteOverrides solder_paste = 2;
kiapi.common.types.Distance copper_clearance = 3;
ZoneConnectionStyle zone_connection = 4;
}
// A footprint definition (i.e. what would be in a library)
message Footprint
{
kiapi.common.types.LibraryIdentifier id = 1;
kiapi.common.types.Vector2 anchor = 2;
FootprintAttributes attributes = 3;
FootprintDesignRuleOverrides overrides = 4;
repeated NetTieDefinition net_ties = 5;
repeated BoardLayer private_layers = 6;
Field reference_field = 7;
Field value_field = 8;
Field datasheet_field = 9;
Field description_field = 10;
// All footprint items except for mandatory fields
repeated google.protobuf.Any items = 11;
}
// An instance of a footprint on a board
message FootprintInstance
{
kiapi.common.types.KIID id = 1;
kiapi.common.types.Vector2 position = 2;
kiapi.common.types.Angle orientation = 3;
BoardLayer layer = 4;
kiapi.common.types.LockedState locked = 5;
Footprint definition = 6;
Field reference_field = 7;
Field value_field = 8;
Field datasheet_field = 9;
Field description_field = 10;
FootprintAttributes attributes = 11;
FootprintDesignRuleOverrides overrides = 12;
}
@@ -0,0 +1,38 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2024 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 as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
syntax = "proto3";
package kiapi.common.commands;
import "common/types/base_types.proto";
message GetVersion
{
}
message GetVersionResponse
{
kiapi.common.types.KiCadVersion version = 1;
}
// A command to check if the connection to KiCad is OK
message Ping
{
}
@@ -0,0 +1,299 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2024 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 as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* Commands and responses related to manipulating editor windows
*/
syntax = "proto3";
package kiapi.common.commands;
import "google/protobuf/any.proto";
import "common/types/base_types.proto";
import "common/types/enums.proto";
// Refreshes the given frame, if that frame is open
message RefreshEditor
{
kiapi.common.types.FrameType frame = 1;
}
// Retrieves a list of open documents of the given type
message GetOpenDocuments
{
// Which type of documents to query
kiapi.common.types.DocumentType type = 1;
}
message GetOpenDocumentsResponse
{
repeated kiapi.common.types.DocumentSpecifier documents = 1;
}
/*
* Runs a TOOL_ACTION using the TOOL_MANAGER of a given frame.
* WARNING: The TOOL_ACTIONs are specifically *not* an API.
* Command names may change as code is refactored, and commands may disappear.
* This API method is provided for low-level prototyping purposes only.
*/
message RunAction
{
string action = 1; // Action name, like "eeschema.InteractiveSelection.ClearSelection"
}
enum RunActionStatus
{
RAS_UNKNOWN = 0;
RAS_OK = 1; // The action was submitted successfully.
RAS_INVALID = 2; // The action was unknown for the targeted frame.
RAS_FRAME_NOT_OPEN = 3; // The targeted frame was not open when the call was submitted.
}
/*
* NOTE: At the moment, RAS_FRAME_NOT_OPEN won't be returned as the handler is inside the frame.
*/
message RunActionResponse
{
RunActionStatus status = 1;
}
/*
* Begins a staged set of changes. Any modifications made to a document through the API after this
* call will be saved to a pending commit, and will not appear in KiCad until a matching call to
* END_COMMIT.
*/
message BeginCommit
{
}
message BeginCommitResponse
{
// Opaque identifier tracking a commit
kiapi.common.types.KIID id = 1;
}
enum CommitAction
{
CMA_UNKNOWN = 0;
CMA_COMMIT = 1; // Commit the changes to the design
CMA_DROP = 2; // Cancel this commit
}
message EndCommit
{
// The ID that was given by BeginCommit
kiapi.common.types.KIID id = 1;
// What to do with this commit
CommitAction action = 2;
// Optional message describing this changeset
string message = 3;
}
message EndCommitResponse
{
}
// Creates new items on a given document
message CreateItems
{
// Specifies which document to create on, which fields are included, etc.
kiapi.common.types.ItemHeader header = 1;
// List of items to create
repeated google.protobuf.Any items = 2;
// Items may be created on a top-level document (sheet, board, etc) or inside a container
// (symbol, footprint). If this field is not empty, it holds the ID of a symbol or footprint
// that the items should be added to. This ID must be an existing symbol (for schematic
// documents) or footprint (for board documents). If the given container does not exist or is
// not the correct item type, the CreateItems call will fail.
kiapi.common.types.KIID container = 3;
}
enum ItemStatusCode
{
ISC_UNKNOWN = 0;
ISC_OK = 1; // The item was created or updated
ISC_INVALID_TYPE = 2; // The item's type is not valid for the given document
ISC_EXISTING = 3; // The item to be created had a specified KIID and that KIID was already in use
ISC_NONEXISTENT = 4; // The item to be updated did not exist in the given document
ISC_IMMUTABLE = 5; // The item to be updated is not allowed to be modified by the API
ISC_INVALID_DATA = 7; // The item to be created does not have valid data for the given document
}
// Per-item status feedback for creation and update calls
message ItemStatus
{
ItemStatusCode code = 1;
string error_message = 2;
}
message ItemCreationResult
{
ItemStatus status = 1;
// The created version of the item, including an updated KIID as applicable
google.protobuf.Any item = 2;
}
message CreateItemsResponse
{
// Specifies which document was modified, which fields are included in created_items, etc.
kiapi.common.types.ItemHeader header = 1;
// Status of the overall request; may return IRS_OK even if no items were created
kiapi.common.types.ItemRequestStatus status = 2;
// Status of each item to be created
repeated ItemCreationResult created_items = 3;
}
message GetItems
{
// Specifies which document to query, which fields to return, etc.
kiapi.common.types.ItemHeader header = 1;
// List of one or more types of items to retreive
repeated kiapi.common.types.KiCadObjectType types = 2;
}
message GetItemsResponse
{
// Specifies which document was modified, which fields are included in items, etc.
kiapi.common.types.ItemHeader header = 1;
// Status of the overall request; may return IRS_OK even if no items were retrieved
kiapi.common.types.ItemRequestStatus status = 2;
repeated google.protobuf.Any items = 3;
}
// Updates items in a given document
message UpdateItems
{
// Specifies which document to modify, which fields are included, etc.
kiapi.common.types.ItemHeader header = 1;
// List of items to modify
repeated google.protobuf.Any items = 2;
}
message ItemUpdateResult
{
ItemStatus status = 1;
// The update version of the item
google.protobuf.Any item = 2;
}
message UpdateItemsResponse
{
// Specifies which document was modified, which fields are included in updated_items, etc.
kiapi.common.types.ItemHeader header = 1;
// Status of the overall request; may return IRS_OK even if no items were modified
kiapi.common.types.ItemRequestStatus status = 2;
// Status of each item to be created
repeated ItemUpdateResult updated_items = 3;
}
// Deletes items in a given document
message DeleteItems
{
// Specifies which document to modify
kiapi.common.types.ItemHeader header = 1;
// List of item KIIDs to delete
repeated kiapi.common.types.KIID item_ids = 2;
}
enum ItemDeletionStatus
{
IDS_UNKNOWN = 0;
IDS_OK = 1;
IDS_NONEXISTENT = 2; // The item did not exist in the given document
IDS_IMMUTABLE = 3; // The item is not allowed to be modified by the API
}
message ItemDeletionResult
{
kiapi.common.types.KIID id = 1;
ItemDeletionStatus status = 2;
}
message DeleteItemsResponse
{
// Specifies which document was modified, etc.
kiapi.common.types.ItemHeader header = 1;
// Status of the overall request; may return IRS_OK even if no items were deleted
kiapi.common.types.ItemRequestStatus status = 2;
// Status of each item requested to be deleted
repeated ItemDeletionResult deleted_items = 3;
}
message GetItemBoundingBox
{
kiapi.common.types.ItemHeader header = 1;
kiapi.common.types.KIID id = 2;
}
message BoundingBoxResponse
{
kiapi.common.types.Vector2 position = 1;
kiapi.common.types.Vector2 size = 2;
}
// Tests if a certain point falls within tolerance of an item's geometry
message HitTest
{
kiapi.common.types.ItemHeader header = 1;
kiapi.common.types.KIID id = 2;
kiapi.common.types.Vector2 position = 3;
int32 tolerance = 4;
}
enum HitTestResult
{
HTR_UNKNOWN = 0;
HTR_NO_HIT = 1;
HTR_HIT = 2;
}
message HitTestResponse
{
HitTestResult result = 1;
}
@@ -0,0 +1,34 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2024 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 as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
syntax = "proto3";
package kiapi.common.commands;
import "common/types/project_settings.proto";
message GetNetClasses
{
}
message NetClassesResponse
{
repeated kiapi.common.project.NetClass net_classes = 1;
}
+92
View File
@@ -0,0 +1,92 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2024 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 as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
syntax = "proto3";
package kiapi.common;
import "google/protobuf/any.proto";
enum ApiStatusCode
{
AS_UNKNOWN = 0;
AS_OK = 1; // Request succeeded
AS_TIMEOUT = 2; // Request timed out
AS_BAD_REQUEST = 3; // The request had invalid parameters or otherwise was illegal
AS_NOT_READY = 4; // KiCad has recently started and cannot handle API requests yet
AS_UNHANDLED = 5; // The request was not handled by KiCad
AS_TOKEN_MISMATCH = 6; // The kicad_token in the request didn't match this KiCad's token
AS_BUSY = 7; // KiCad is busy performing an operation and can't accept API commands
AS_UNIMPLEMENTED = 8; // The requested API call has not yet been implemented
}
/*
* For future expansion: any header fields that should be sent with a request
*/
message ApiRequestHeader
{
// An opaque string identifying a running instance of KiCad. If this is set to a non-empty
// string in an API request, KiCad will reject the request if the value doesn't match its own
// token. This can be used to let API clients make sure they are still talking to the same
// instance of KiCad if they are long-running.
string kicad_token = 1;
// A string identifying an API client. Should be set by the client to a value that is unique
// to a specific instance of a client, for example the package name of the client plus its
// process ID or a random string, e.g. "com.github.me.my_awesome_plugin-73951". The main purpose
// of this name is to identify the client in debug logs.
string client_name = 2;
}
/*
* The top-level envelope container for an API request (message from a client to the KiCad API server)
*/
message ApiRequest
{
ApiRequestHeader header = 1;
google.protobuf.Any message = 2;
}
/*
* For future expansion: any header fields that should be sent with a response
*/
message ApiResponseHeader
{
/// An opaque string identifying a running instance of KiCad.
string kicad_token = 1;
}
message ApiResponse
{
ApiResponseHeader header = 1;
ApiResponseStatus status = 2;
google.protobuf.Any message = 3;
}
message ApiResponseStatus
{
/// A code describing the category of error (or AS_OK if no error)
ApiStatusCode status = 1;
/// A human-readable description of the error, if any
string error_message = 2;
}
+334
View File
@@ -0,0 +1,334 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2024 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 as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* base_types.proto
* Includes types used in many parts of the API
*/
syntax = "proto3";
package kiapi.common.types;
import "google/protobuf/field_mask.proto";
import "common/types/enums.proto";
enum CommandStatus
{
CS_UNKNOWN = 0;
CS_OK = 1; // Command succeeded
CS_FAILED = 2; // Command failed
}
message CommandStatusResponse
{
CommandStatus status = 1;
}
/**
* Describes a particular version of KiCad
*/
message KiCadVersion
{
uint32 major = 1;
uint32 minor = 2;
uint32 patch = 3;
// Full identifier string, potentially containing git hashes, packager-added info, etc.
string full_version = 4;
}
/**
* Some commands are specific to a KiCad window (frame). This list contains all addressable frames.
*/
enum FrameType
{
FT_UNKNOWN = 0;
FT_PROJECT_MANAGER = 1;
FT_SCHEMATIC_EDITOR = 2;
FT_PCB_EDITOR = 3;
FT_SPICE_SIMULATOR = 4;
FT_SYMBOL_EDITOR = 5;
FT_FOOTPRINT_EDITOR = 6;
FT_DRAWING_SHEET_EDITOR = 7;
}
/**
* Describes a KIID, or UUID of an object in a KiCad editor model.
*/
message KIID
{
// The KIID's value in standard UUID format, stored as a string for easy portability
string value = 1;
}
/**
* Identifier for the type of document being targeted by a request
*/
enum DocumentType
{
DOCTYPE_UNKNOWN = 0;
DOCTYPE_SCHEMATIC = 1;
DOCTYPE_SYMBOL = 2;
DOCTYPE_PCB = 3;
DOCTYPE_FOOTPRINT = 4;
DOCTYPE_DRAWING_SHEET = 5;
}
/**
* Describes a KiCad LIB_ID; a unique identifier for a loaded symbol or footprint
*/
message LibraryIdentifier
{
// The library portion of the LIB_ID
string library_nickname = 1;
// The symbol or footprint name
string entry_name = 2;
}
/**
* Describes a unique sheet in a schematic
*/
message SheetPath
{
// The canonical path to the sheet. The first KIID will be the root sheet, etc.
repeated KIID path = 1;
// The path converted to a human readable form such as "/", "/child", or "/child/grandchild"
string path_human_readable = 2;
}
/**
* Describes a KiCad project
*/
message ProjectSpecifier
{
// The name of the project (without the kicad_pro extension)
string name = 1;
// The path to the project directory
string path = 2;
}
/**
* Describes a document that will be the target of a request
*/
message DocumentSpecifier
{
DocumentType type = 1;
oneof identifier
{
// If type == DT_SYMBOL or DT_FOOTPRINT, identifies a certain library entry
LibraryIdentifier lib_id = 2;
// If type == DT_SCHEMATIC, identifies a sheet with a given path
SheetPath sheet_path = 3;
// If type == DT_PCB, identifies a PCB with a given filename, e.g. "board.kicad_pcb"
string board_filename = 4;
}
ProjectSpecifier project = 5;
}
/**
* This header is included in requests and responses about item(s) in a document
*/
message ItemHeader
{
// Which document is this request targeting?
DocumentSpecifier document = 1;
// Which container within the document is this request targeting?
// If container is omitted or empty, the document is used as the container.
KIID container = 2;
// Which fields on the item(s) are included with this request or response
google.protobuf.FieldMask field_mask = 3;
}
/**
* Status of a request that included an ItemHeader
*/
enum ItemRequestStatus
{
IRS_UNKNOWN = 0;
IRS_OK = 1;
IRS_DOCUMENT_NOT_FOUND = 2; // The given document is not open in KiCad
IRS_FIELD_MASK_INVALID = 3; // The given field_mask contains invalid specifiers
}
// Describes a point or distance in 2D space. All coordinates are in nanometers.
message Vector2
{
int64 x_nm = 1;
int64 y_nm = 2;
}
// Describes a point or distance in 3D space. All coordinates are in nanometers.
message Vector3
{
int64 x_nm = 1;
int64 y_nm = 2;
int64 z_nm = 3;
}
// Describes a quantity of distance (size, length, etc). All coordinates are in nanometers.
message Distance
{
int64 value_nm = 1;
}
// Corresponds to EDA_ANGLE, where the underlying storage is degrees
message Angle
{
double value_degrees = 1;
}
// Represents a value from 0.0 to 1.0
message Ratio
{
double value = 1;
}
// Corresponds to COLOR4D. Each color channel is a double from 0.0 to 1.0.
message Color
{
double r = 1;
double g = 2;
double b = 3;
double a = 4;
}
// The formulation of arc that is used in KiCad core geometry code.
// Start, midpoint (on the arc) and end are stored. Angle, center point, etc are calculated.
message ArcStartMidEnd
{
Vector2 start = 1;
Vector2 mid = 2;
Vector2 end = 3;
}
message PolyLineNode
{
oneof geometry {
Vector2 point = 1;
ArcStartMidEnd arc = 2;
}
}
// Corresponds to class SHAPE_LINE_CHAIN: A closed or open polyline that can include arcs.
// For non-arc cases, each node is a point along the line. An implicit line segment exists
// between the last and first node if closed is true. When arcs are present, the arc start and
// end points are not duplicated by point nodes (meaning, for example, a rectangle with rounded
// corners could be represented with four arc nodes and no point nodes).
message PolyLine
{
repeated PolyLineNode nodes = 1;
bool closed = 2;
}
message PolygonWithHoles
{
PolyLine outline = 1;
repeated PolyLine holes = 2;
}
// Corresponds to SHAPE_POLY_SET: a set of polygons or polylines
message PolySet
{
repeated PolygonWithHoles polygons = 1;
}
// Describes whether or not an item is locked for editing or movement
enum LockedState
{
LS_UNKNOWN = 0;
LS_UNLOCKED = 1;
LS_LOCKED = 2;
}
message TextAttributes
{
string font_name = 1;
HorizontalAlignment horizontal_alignment = 2;
VerticalAlignment vertical_alignment = 3;
kiapi.common.types.Angle angle = 4;
double line_spacing = 5;
kiapi.common.types.Distance stroke_width = 6;
bool italic = 7;
bool bold = 8;
bool underlined = 9;
bool visible = 10;
bool mirrored = 11;
bool multiline = 12;
bool keep_upright = 13;
kiapi.common.types.Vector2 size = 14;
}
message Text
{
kiapi.common.types.KIID id = 1;
kiapi.common.types.Vector2 position = 2;
kiapi.common.types.TextAttributes attributes = 3;
kiapi.common.types.LockedState locked = 4;
string text = 5;
string hyperlink = 6;
bool knockout = 7;
}
message TextBox
{
kiapi.common.types.KIID id = 1;
kiapi.common.types.Vector2 top_left = 2;
kiapi.common.types.Vector2 bottom_right = 3;
kiapi.common.types.TextAttributes attributes = 4;
kiapi.common.types.LockedState locked = 5;
string text = 6;
}
message StrokeAttributes
{
Distance width = 1;
StrokeLineStyle style = 2;
Color color = 3;
}
enum GraphicFillType
{
GFT_UNKNOWN = 0;
GFT_UNFILLED = 1;
GFT_FILLED = 2;
}
message GraphicFillAttributes
{
GraphicFillType fill_type = 1;
// Color of the fill (not used in board and footprints)
Color color = 2;
}
message GraphicAttributes
{
StrokeAttributes stroke = 1;
GraphicFillAttributes fill = 2;
}
+119
View File
@@ -0,0 +1,119 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2024 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 as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* enums.proto
* Includes protobuf versions of common KiCad enums
*/
syntax = "proto3";
package kiapi.common.types;
// The set of object types (from KICAD_T) that are exposed to the API.
enum KiCadObjectType
{
KOT_UNKNOWN = 0;
KOT_PCB_FOOTPRINT = 1;
KOT_PCB_PAD = 2;
KOT_PCB_SHAPE = 3;
KOT_PCB_REFERENCE_IMAGE = 4;
KOT_PCB_FIELD = 5;
KOT_PCB_GENERATOR = 6;
KOT_PCB_TEXT = 7;
KOT_PCB_TEXTBOX = 8;
KOT_PCB_TABLE = 9;
KOT_PCB_TABLECELL = 10;
KOT_PCB_TRACE = 11;
KOT_PCB_VIA = 12;
KOT_PCB_ARC = 13;
KOT_PCB_MARKER = 14;
KOT_PCB_DIMENSION = 15;
KOT_PCB_ZONE = 16;
KOT_PCB_GROUP = 17;
KOT_SCH_MARKER = 18;
KOT_SCH_JUNCTION = 19;
KOT_SCH_NO_CONNECT = 20;
KOT_SCH_BUS_WIRE_ENTRY = 21;
KOT_SCH_BUS_BUS_ENTRY = 22;
KOT_SCH_LINE = 23;
KOT_SCH_SHAPE = 24;
KOT_SCH_BITMAP = 25;
KOT_SCH_TEXTBOX = 26;
KOT_SCH_TEXT = 27;
KOT_SCH_TABLE = 28;
KOT_SCH_TABLECELL = 29;
KOT_SCH_LABEL = 30;
KOT_SCH_GLOBAL_LABEL = 31;
KOT_SCH_HIER_LABEL = 32;
KOT_SCH_DIRECTIVE_LABEL = 33;
KOT_SCH_FIELD = 34;
KOT_SCH_SYMBOL = 35;
KOT_SCH_SHEET_PIN = 36;
KOT_SCH_SHEET = 37;
KOT_SCH_PIN = 38;
KOT_LIB_SYMBOL = 39;
// KOT_LIB_SHAPE = 40;
// KOT_LIB_TEXT = 41;
// KOT_LIB_TEXTBOX = 42;
// KOT_LIB_PIN = 43;
// KOT_LIB_FIELD = 44;
KOT_WSG_LINE = 45;
KOT_WSG_RECT = 46;
KOT_WSG_POLY = 47;
KOT_WSG_TEXT = 48;
KOT_WSG_BITMAP = 49;
KOT_WSG_PAGE = 50;
}
// Mapped to GR_TEXT_H_ALIGN_T
enum HorizontalAlignment
{
HA_UNKNOWN = 0;
HA_LEFT = 1;
HA_CENTER = 2;
HA_RIGHT = 3;
HA_INDETERMINATE = 4;
}
// Mapped to GR_TEXT_V_ALIGN_T
enum VerticalAlignment
{
VA_UNKNOWN = 0;
VA_TOP = 1;
VA_CENTER = 2;
VA_BOTTOM = 3;
VA_INDETERMINATE = 4;
}
// Mapped to LINE_STYLE
enum StrokeLineStyle
{
SLS_UNKNOWN = 0;
SLS_DEFAULT = 1;
SLS_SOLID = 2;
SLS_DASH = 3;
SLS_DOT = 4;
SLS_DASHDOT = 5;
SLS_DASHDOTDOT = 6;
}
@@ -0,0 +1,35 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2024 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 as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* project_settings.proto
* Messages that describes project settings shared between schematics and boards
*/
syntax = "proto3";
package kiapi.common.project;
message NetClass
{
// The name of the netclass (the literal string "Default" for the default netclass)
string name = 1;
}
@@ -0,0 +1,24 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2024 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 as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
syntax = "proto3";
package kiapi.schematic.types;

Some files were not shown because too many files have changed in this diff Show More