Skip to content

Commit 09504a9

Browse files
committed
[Schematic][Added] Support for private fields
Closes #812
1 parent 6ef893a commit 09504a9

9 files changed

Lines changed: 145 additions & 63 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
66

77

88
## [1.8.5] - UNRELEASED
9+
### Added
10+
- Schematic: Support for private fields (#812)
11+
912
### Fixed
1013
- User.N layer numbering. I.e. pcb_print issues with their numbering (#808)
1114

docs/source/Changelog.rst

Lines changed: 39 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ Versioning <https://semver.org/spec/v2.0.0.html>`__.
1616
[1.8.5] - UNRELEASED
1717
--------------------
1818

19+
Added
20+
~~~~~
21+
22+
- Schematic: Support for private fields (#812)
23+
1924
Fixed
2025
~~~~~
2126

@@ -25,6 +30,8 @@ Fixed
2530
[1.8.4] - 2025-04-03
2631
--------------------
2732

33+
.. _added-1:
34+
2835
Added
2936
~~~~~
3037

@@ -59,7 +66,7 @@ Fixed
5966
[1.8.3] - 2025-03-18
6067
--------------------
6168

62-
.. _added-1:
69+
.. _added-2:
6370

6471
Added
6572
~~~~~
@@ -271,7 +278,7 @@ Changed
271278
[1.8.2] - 2024-10-28
272279
--------------------
273280

274-
.. _added-2:
281+
.. _added-3:
275282

276283
Added
277284
~~~~~
@@ -372,7 +379,7 @@ Fixed
372379
[1.8.0] - 2024-09-17
373380
--------------------
374381

375-
.. _added-3:
382+
.. _added-4:
376383

377384
Added
378385
~~~~~
@@ -521,7 +528,7 @@ Changed:
521528
[1.7.0] - 2024-04-23
522529
--------------------
523530

524-
.. _added-4:
531+
.. _added-5:
525532

526533
Added
527534
~~~~~
@@ -626,7 +633,7 @@ Changed
626633
[1.6.5] - 2024-03-31
627634
--------------------
628635

629-
.. _added-5:
636+
.. _added-6:
630637

631638
Added
632639
~~~~~
@@ -686,7 +693,7 @@ Fixed
686693
[1.6.4] - 2024-02-02
687694
--------------------
688695

689-
.. _added-6:
696+
.. _added-7:
690697

691698
Added
692699
~~~~~
@@ -967,7 +974,7 @@ Fixed
967974
[1.6.3] - 2023-06-26
968975
--------------------
969976

970-
.. _added-7:
977+
.. _added-8:
971978

972979
Added
973980
~~~~~
@@ -1137,7 +1144,7 @@ Fixed
11371144
[1.6.2] - 2023-04-24
11381145
--------------------
11391146

1140-
.. _added-8:
1147+
.. _added-9:
11411148

11421149
Added
11431150
~~~~~
@@ -1255,7 +1262,7 @@ Changed:
12551262
[1.6.1] - 2023-03-16
12561263
--------------------
12571264

1258-
.. _added-9:
1265+
.. _added-10:
12591266

12601267
Added
12611268
~~~~~
@@ -1304,7 +1311,7 @@ Fixed
13041311
[1.6.0] - 2023-02-06
13051312
--------------------
13061313

1307-
.. _added-10:
1314+
.. _added-11:
13081315

13091316
Added
13101317
~~~~~
@@ -1435,7 +1442,7 @@ Fixed
14351442
[1.5.0] - 2022-12-16
14361443
--------------------
14371444

1438-
.. _added-11:
1445+
.. _added-12:
14391446

14401447
Added
14411448
~~~~~
@@ -1549,7 +1556,7 @@ Fixed
15491556
[1.4.0] - 2022-10-12
15501557
--------------------
15511558

1552-
.. _added-12:
1559+
.. _added-13:
15531560

15541561
Added
15551562
~~~~~
@@ -1667,7 +1674,7 @@ Changed
16671674
[1.3.0] - 2022-09-08
16681675
--------------------
16691676

1670-
.. _added-13:
1677+
.. _added-14:
16711678

16721679
Added
16731680
~~~~~
@@ -1767,7 +1774,7 @@ Changed
17671774
[1.2.0] - 2022-06-15
17681775
--------------------
17691776

1770-
.. _added-14:
1777+
.. _added-15:
17711778

17721779
Added
17731780
~~~~~
@@ -1826,7 +1833,7 @@ Changed
18261833
[1.1.0] - 2022-05-24
18271834
--------------------
18281835

1829-
.. _added-15:
1836+
.. _added-16:
18301837

18311838
Added
18321839
~~~~~
@@ -1857,7 +1864,7 @@ Fixed
18571864
[1.0.0] - 2022-05-10
18581865
--------------------
18591866

1860-
.. _added-16:
1867+
.. _added-17:
18611868

18621869
Added
18631870
~~~~~
@@ -2035,7 +2042,7 @@ Fixed
20352042
[0.11.0] - 2021-04-25
20362043
---------------------
20372044

2038-
.. _added-17:
2045+
.. _added-18:
20392046

20402047
Added
20412048
~~~~~
@@ -2091,7 +2098,7 @@ Fixed
20912098
[0.10.1] - 2021-02-22
20922099
---------------------
20932100

2094-
.. _added-18:
2101+
.. _added-19:
20952102

20962103
Added
20972104
~~~~~
@@ -2140,7 +2147,7 @@ Fixed
21402147
[0.10.0] - 2021-02-12
21412148
---------------------
21422149

2143-
.. _added-19:
2150+
.. _added-20:
21442151

21452152
Added
21462153
~~~~~
@@ -2203,7 +2210,7 @@ Fixed
22032210
[0.9.0] - 2021-01-04
22042211
--------------------
22052212

2206-
.. _added-20:
2213+
.. _added-21:
22072214

22082215
Added
22092216
~~~~~
@@ -2241,7 +2248,7 @@ Fixed
22412248
[0.8.1] - 2020-12-09
22422249
--------------------
22432250

2244-
.. _added-21:
2251+
.. _added-22:
22452252

22462253
Added
22472254
~~~~~
@@ -2262,7 +2269,7 @@ Fixed
22622269
[0.8.0] - 2020-11-06
22632270
--------------------
22642271

2265-
.. _added-22:
2272+
.. _added-23:
22662273

22672274
Added
22682275
~~~~~
@@ -2293,7 +2300,7 @@ Fixed
22932300
[0.7.0] - 2020-09-11
22942301
--------------------
22952302

2296-
.. _added-23:
2303+
.. _added-24:
22972304

22982305
Added
22992306
~~~~~
@@ -2357,7 +2364,7 @@ Fixed
23572364
[0.6.1] - 2020-08-20
23582365
--------------------
23592366

2360-
.. _added-24:
2367+
.. _added-25:
23612368

23622369
Added
23632370
~~~~~
@@ -2384,7 +2391,7 @@ Fixed
23842391
[0.6.0] - 2020-08-18
23852392
--------------------
23862393

2387-
.. _added-25:
2394+
.. _added-26:
23882395

23892396
Added
23902397
~~~~~
@@ -2452,7 +2459,7 @@ Changed
24522459
- Now we test the PCB and/or SCH only when we are doing something that
24532460
needs them.
24542461

2455-
.. _added-26:
2462+
.. _added-27:
24562463

24572464
Added
24582465
~~~~~
@@ -2521,7 +2528,7 @@ Fixed
25212528
[0.4.0] - 2020-06-17
25222529
--------------------
25232530

2524-
.. _added-27:
2531+
.. _added-28:
25252532

25262533
Added
25272534
~~~~~
@@ -2534,7 +2541,7 @@ Added
25342541
[0.3.0] - 2020-06-14
25352542
--------------------
25362543

2537-
.. _added-28:
2544+
.. _added-29:
25382545

25392546
Added
25402547
~~~~~
@@ -2563,7 +2570,7 @@ Fixed
25632570
[0.2.5] - 2020-06-11
25642571
--------------------
25652572

2566-
.. _added-29:
2573+
.. _added-30:
25672574

25682575
Added
25692576
~~~~~
@@ -2604,7 +2611,7 @@ Fixed
26042611
[0.2.3] - 2020-04-23
26052612
--------------------
26062613

2607-
.. _added-30:
2614+
.. _added-31:
26082615

26092616
Added
26102617
~~~~~
@@ -2642,7 +2649,7 @@ Fixed
26422649
[0.2.0] - 2020-03-28
26432650
--------------------
26442651

2645-
.. _added-31:
2652+
.. _added-32:
26462653

26472654
Added
26482655
~~~~~
@@ -2672,7 +2679,7 @@ Fixed
26722679
[0.1.1] - 2020-03-13
26732680
--------------------
26742681

2675-
.. _added-32:
2682+
.. _added-33:
26762683

26772684
Added
26782685
~~~~~

kibot/kicad/v6_sch.py

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -665,6 +665,7 @@ def __init__(self, name='', value='', id=0, x=0, y=0, ang=0):
665665
self.effects = FontEffects()
666666
self.do_not_autoplace = False
667667
self.show_name = False
668+
self.private = False
668669

669670
def visible(self, v):
670671
self.effects.hide = not v
@@ -689,16 +690,23 @@ def set_xy(self, x, y, hjustify=None):
689690
def parse(items, number):
690691
field = SchematicFieldV6()
691692
name = 'field'
692-
field.name = _check_str(items, 1, name+' name')
693-
field.value = _check_str(items, 2, name+' value')
693+
offset = 0
694+
# KiCad 9 and the never ending story: tons of things went from loose symbols to real attributes,
695+
# but here a new one is introduced ... and before the important data. OMG!!!
696+
if isinstance(items[1], Symbol):
697+
assert items[1].value() == 'private', items[1].value()
698+
offset = 1
699+
field.private = True
700+
field.name = _check_str(items, offset+1, name+' name')
701+
field.value = _check_str(items, offset+2, name+' value')
694702
# Default values
695703
field.number = number
696704
field.effects = None
697705
found_at = False
698-
for c, i in enumerate(items[3:]):
706+
for c, i in enumerate(items[offset+3:]):
699707
i_type = _check_is_symbol_list(i)
700708
if i_type == 'at':
701-
field.x, field.y, field.ang = _get_at(items, c+3, name)
709+
field.x, field.y, field.ang = _get_at(items, c+offset+3, name)
702710
found_at = True
703711
elif i_type == 'effects':
704712
field.effects = FontEffects.parse(i)
@@ -717,7 +725,11 @@ def parse(items, number):
717725
def write(self):
718726
if self.number < 0:
719727
return None
720-
data = [self.name, self.value]
728+
data = []
729+
if self.private:
730+
data.append(Symbol('private'))
731+
data.append(self.name)
732+
data.append(self.value)
721733
if version < KICAD_7_VER:
722734
# Removed in KiCad 7
723735
data.append(_symbol('id', [self.number]))

tests/board_samples/kicad_9/deeper.kicad_sch

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
(kicad_sch
2-
(version 20241209)
2+
(version 20250114)
33
(generator "eeschema")
44
(generator_version "9.0")
55
(uuid "3b838d52-596d-4e4d-a6ac-e4c8e7621137")

tests/board_samples/kicad_9/sub-sheet.kicad_sch

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
(kicad_sch
2-
(version 20241209)
2+
(version 20250114)
33
(generator "eeschema")
44
(generator_version "9.0")
55
(uuid "5b2b5c7d-f943-4634-9f0a-e9561705c49d")

0 commit comments

Comments
 (0)