1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
| # Copyright (c) 2010-2024 openpyxl
|
| from openpyxl.descriptors import (
| Typed,
| Sequence,
| Alias,
| )
| from openpyxl.descriptors.serialisable import Serialisable
| from openpyxl.styles import (
| Font,
| Fill,
| Border,
| Alignment,
| Protection,
| )
| from .numbers import NumberFormat
|
|
| class DifferentialStyle(Serialisable):
|
| tagname = "dxf"
|
| __elements__ = ("font", "numFmt", "fill", "alignment", "border", "protection")
|
| font = Typed(expected_type=Font, allow_none=True)
| numFmt = Typed(expected_type=NumberFormat, allow_none=True)
| fill = Typed(expected_type=Fill, allow_none=True)
| alignment = Typed(expected_type=Alignment, allow_none=True)
| border = Typed(expected_type=Border, allow_none=True)
| protection = Typed(expected_type=Protection, allow_none=True)
|
| def __init__(self,
| font=None,
| numFmt=None,
| fill=None,
| alignment=None,
| border=None,
| protection=None,
| extLst=None,
| ):
| self.font = font
| self.numFmt = numFmt
| self.fill = fill
| self.alignment = alignment
| self.border = border
| self.protection = protection
| self.extLst = extLst
|
|
| class DifferentialStyleList(Serialisable):
| """
| Dedupable container for differential styles.
| """
|
| tagname = "dxfs"
|
| dxf = Sequence(expected_type=DifferentialStyle)
| styles = Alias("dxf")
| __attrs__ = ("count",)
|
|
| def __init__(self, dxf=(), count=None):
| self.dxf = dxf
|
|
| def append(self, dxf):
| """
| Check to see whether style already exists and append it if does not.
| """
| if not isinstance(dxf, DifferentialStyle):
| raise TypeError('expected ' + str(DifferentialStyle))
| if dxf in self.styles:
| return
| self.styles.append(dxf)
|
|
| def add(self, dxf):
| """
| Add a differential style and return its index
| """
| self.append(dxf)
| return self.styles.index(dxf)
|
|
| def __bool__(self):
| return bool(self.styles)
|
|
| def __getitem__(self, idx):
| return self.styles[idx]
|
|
| @property
| def count(self):
| return len(self.dxf)
|
|