summaryrefslogtreecommitdiff
path: root/gerbonara/cad/kicad/base_types.py
diff options
context:
space:
mode:
Diffstat (limited to 'gerbonara/cad/kicad/base_types.py')
-rw-r--r--gerbonara/cad/kicad/base_types.py49
1 files changed, 26 insertions, 23 deletions
diff --git a/gerbonara/cad/kicad/base_types.py b/gerbonara/cad/kicad/base_types.py
index 59a727d..a4eba70 100644
--- a/gerbonara/cad/kicad/base_types.py
+++ b/gerbonara/cad/kicad/base_types.py
@@ -37,11 +37,29 @@ LAYER_MAP_K2G = {
LAYER_MAP_G2K = {v: k for k, v in LAYER_MAP_K2G.items()}
+@sexp_type('uuid')
+class UUID:
+ value: str = field(default_factory=uuid.uuid4)
+
+ def __deepcopy__(self, memo):
+ return UUID()
+
+ def __after_parse__(self, parent):
+ self.value = str(self.value)
+
+ def before_sexp(self):
+ self.value = str(self.value)
+
+ def bump(self):
+ self.value = uuid.uuid4()
+
+
@sexp_type('group')
class Group:
name: str = ""
- id: Named(str) = ""
- members: Named(List(str)) = field(default_factory=list)
+ id: Named(str) = None
+ uuid: UUID = field(default_factory=UUID)
+ members: Named(Array(str)) = field(default_factory=list)
@sexp_type('color')
@@ -298,8 +316,8 @@ class FontSpec:
face: Named(str) = None
size: Rename(XYCoord) = field(default_factory=lambda: XYCoord(1.27, 1.27))
thickness: Named(float) = None
- bold: Flag() = False
- italic: Flag() = False
+ bold: OmitDefault(Named(YesNoAtom())) = False
+ italic: OmitDefault(Named(YesNoAtom())) = False
line_spacing: Named(float) = None
@@ -327,7 +345,7 @@ class Justify:
@sexp_type('effects')
class TextEffect:
font: FontSpec = field(default_factory=FontSpec)
- hide: Flag() = False
+ hide: OmitDefault(Named(YesNoAtom())) = False
justify: OmitDefault(Justify) = field(default_factory=Justify)
@@ -469,23 +487,6 @@ class Timestamp:
self.value = uuid.uuid4()
-@sexp_type('uuid')
-class UUID:
- value: str = field(default_factory=uuid.uuid4)
-
- def __deepcopy__(self, memo):
- return UUID()
-
- def __after_parse__(self, parent):
- self.value = str(self.value)
-
- def before_sexp(self):
- self.value = Atom(str(self.value))
-
- def bump(self):
- self.value = uuid.uuid4()
-
-
@sexp_type('tedit')
class EditTime:
value: str = field(default_factory=time.time)
@@ -523,8 +524,10 @@ class DrawnProperty(TextMixin):
value: str = None
id: Named(int) = None
at: AtPos = field(default_factory=AtPos)
+ unlocked: Named(YesNoAtom()) = True
layer: Named(str) = None
- hide: Flag() = False
+ hide: Named(YesNoAtom()) = False
+ uuid: UUID = field(default_factory=UUID)
tstamp: Timestamp = None
effects: TextEffect = field(default_factory=TextEffect)
_ : SEXP_END = None