175 lines
4.8 KiB
Python
175 lines
4.8 KiB
Python
# Copyright (c) 2010-2024 openpyxl
|
|
|
|
from openpyxl.xml.constants import DRAWING_NS
|
|
from openpyxl.descriptors.serialisable import Serialisable
|
|
from openpyxl.descriptors import (
|
|
Typed,
|
|
Bool,
|
|
Integer,
|
|
Set,
|
|
String,
|
|
Alias,
|
|
NoneSet,
|
|
)
|
|
from openpyxl.descriptors.excel import ExtensionList as OfficeArtExtensionList
|
|
|
|
from .geometry import GroupTransform2D, Scene3D
|
|
from .text import Hyperlink
|
|
|
|
|
|
class GroupShapeProperties(Serialisable):
|
|
|
|
tagname = "grpSpPr"
|
|
|
|
bwMode = NoneSet(values=(['clr', 'auto', 'gray', 'ltGray', 'invGray',
|
|
'grayWhite', 'blackGray', 'blackWhite', 'black', 'white', 'hidden']))
|
|
xfrm = Typed(expected_type=GroupTransform2D, allow_none=True)
|
|
scene3d = Typed(expected_type=Scene3D, allow_none=True)
|
|
extLst = Typed(expected_type=OfficeArtExtensionList, allow_none=True)
|
|
|
|
def __init__(self,
|
|
bwMode=None,
|
|
xfrm=None,
|
|
scene3d=None,
|
|
extLst=None,
|
|
):
|
|
self.bwMode = bwMode
|
|
self.xfrm = xfrm
|
|
self.scene3d = scene3d
|
|
self.extLst = extLst
|
|
|
|
|
|
class GroupLocking(Serialisable):
|
|
|
|
tagname = "grpSpLocks"
|
|
namespace = DRAWING_NS
|
|
|
|
noGrp = Bool(allow_none=True)
|
|
noUngrp = Bool(allow_none=True)
|
|
noSelect = Bool(allow_none=True)
|
|
noRot = Bool(allow_none=True)
|
|
noChangeAspect = Bool(allow_none=True)
|
|
noMove = Bool(allow_none=True)
|
|
noResize = Bool(allow_none=True)
|
|
noChangeArrowheads = Bool(allow_none=True)
|
|
noEditPoints = Bool(allow_none=True)
|
|
noAdjustHandles = Bool(allow_none=True)
|
|
noChangeArrowheads = Bool(allow_none=True)
|
|
noChangeShapeType = Bool(allow_none=True)
|
|
extLst = Typed(expected_type=OfficeArtExtensionList, allow_none=True)
|
|
|
|
__elements__ = ()
|
|
|
|
def __init__(self,
|
|
noGrp=None,
|
|
noUngrp=None,
|
|
noSelect=None,
|
|
noRot=None,
|
|
noChangeAspect=None,
|
|
noChangeArrowheads=None,
|
|
noMove=None,
|
|
noResize=None,
|
|
noEditPoints=None,
|
|
noAdjustHandles=None,
|
|
noChangeShapeType=None,
|
|
extLst=None,
|
|
):
|
|
self.noGrp = noGrp
|
|
self.noUngrp = noUngrp
|
|
self.noSelect = noSelect
|
|
self.noRot = noRot
|
|
self.noChangeAspect = noChangeAspect
|
|
self.noChangeArrowheads = noChangeArrowheads
|
|
self.noMove = noMove
|
|
self.noResize = noResize
|
|
self.noEditPoints = noEditPoints
|
|
self.noAdjustHandles = noAdjustHandles
|
|
self.noChangeShapeType = noChangeShapeType
|
|
|
|
|
|
class NonVisualGroupDrawingShapeProps(Serialisable):
|
|
|
|
tagname = "cNvGrpSpPr"
|
|
|
|
grpSpLocks = Typed(expected_type=GroupLocking, allow_none=True)
|
|
extLst = Typed(expected_type=OfficeArtExtensionList, allow_none=True)
|
|
|
|
__elements__ = ("grpSpLocks",)
|
|
|
|
def __init__(self,
|
|
grpSpLocks=None,
|
|
extLst=None,
|
|
):
|
|
self.grpSpLocks = grpSpLocks
|
|
|
|
|
|
class NonVisualDrawingShapeProps(Serialisable):
|
|
|
|
tagname = "cNvSpPr"
|
|
|
|
spLocks = Typed(expected_type=GroupLocking, allow_none=True)
|
|
txBax = Bool(allow_none=True)
|
|
extLst = Typed(expected_type=OfficeArtExtensionList, allow_none=True)
|
|
|
|
__elements__ = ("spLocks", "txBax")
|
|
|
|
def __init__(self,
|
|
spLocks=None,
|
|
txBox=None,
|
|
extLst=None,
|
|
):
|
|
self.spLocks = spLocks
|
|
self.txBox = txBox
|
|
|
|
|
|
class NonVisualDrawingProps(Serialisable):
|
|
|
|
tagname = "cNvPr"
|
|
|
|
id = Integer()
|
|
name = String()
|
|
descr = String(allow_none=True)
|
|
hidden = Bool(allow_none=True)
|
|
title = String(allow_none=True)
|
|
hlinkClick = Typed(expected_type=Hyperlink, allow_none=True)
|
|
hlinkHover = Typed(expected_type=Hyperlink, allow_none=True)
|
|
extLst = Typed(expected_type=OfficeArtExtensionList, allow_none=True)
|
|
|
|
__elements__ = ["hlinkClick", "hlinkHover"]
|
|
|
|
def __init__(self,
|
|
id=None,
|
|
name=None,
|
|
descr=None,
|
|
hidden=None,
|
|
title=None,
|
|
hlinkClick=None,
|
|
hlinkHover=None,
|
|
extLst=None,
|
|
):
|
|
self.id = id
|
|
self.name = name
|
|
self.descr = descr
|
|
self.hidden = hidden
|
|
self.title = title
|
|
self.hlinkClick = hlinkClick
|
|
self.hlinkHover = hlinkHover
|
|
self.extLst = extLst
|
|
|
|
class NonVisualGroupShape(Serialisable):
|
|
|
|
tagname = "nvGrpSpPr"
|
|
|
|
cNvPr = Typed(expected_type=NonVisualDrawingProps)
|
|
cNvGrpSpPr = Typed(expected_type=NonVisualGroupDrawingShapeProps)
|
|
|
|
__elements__ = ("cNvPr", "cNvGrpSpPr")
|
|
|
|
def __init__(self,
|
|
cNvPr=None,
|
|
cNvGrpSpPr=None,
|
|
):
|
|
self.cNvPr = cNvPr
|
|
self.cNvGrpSpPr = cNvGrpSpPr
|
|
|