123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- from __future__ import absolute_import
- # Copyright (c) 2010-2019 openpyxl
- """
- Enclosing chart object. The various chart types are actually child objects.
- Will probably need to call this indirectly
- """
- from openpyxl.descriptors.serialisable import Serialisable
- from openpyxl.descriptors import (
- Typed,
- String,
- Alias,
- )
- from openpyxl.descriptors.excel import (
- ExtensionList,
- Relation
- )
- from openpyxl.descriptors.nested import (
- NestedBool,
- NestedNoneSet,
- NestedString,
- NestedMinMax,
- )
- from openpyxl.descriptors.sequence import NestedSequence
- from openpyxl.xml.constants import CHART_NS
- from openpyxl.drawing.colors import ColorMapping
- from .text import RichText
- from .shapes import GraphicalProperties
- from .legend import Legend
- from ._3d import _3DBase
- from .plotarea import PlotArea
- from .title import Title
- from .pivot import (
- PivotFormat,
- PivotSource,
- )
- from .print_settings import PrintSettings
- class ChartContainer(Serialisable):
- tagname = "chart"
- title = Typed(expected_type=Title, allow_none=True)
- autoTitleDeleted = NestedBool(allow_none=True)
- pivotFmts = NestedSequence(expected_type=PivotFormat)
- view3D = _3DBase.view3D
- floor = _3DBase.floor
- sideWall = _3DBase.sideWall
- backWall = _3DBase.backWall
- plotArea = Typed(expected_type=PlotArea, )
- legend = Typed(expected_type=Legend, allow_none=True)
- plotVisOnly = NestedBool()
- dispBlanksAs = NestedNoneSet(values=(['span', 'gap', 'zero']))
- showDLblsOverMax = NestedBool(allow_none=True)
- extLst = Typed(expected_type=ExtensionList, allow_none=True)
- __elements__ = ('title', 'autoTitleDeleted', 'pivotFmts', 'view3D',
- 'floor', 'sideWall', 'backWall', 'plotArea', 'legend', 'plotVisOnly',
- 'dispBlanksAs', 'showDLblsOverMax')
- def __init__(self,
- title=None,
- autoTitleDeleted=None,
- pivotFmts=(),
- view3D=None,
- floor=None,
- sideWall=None,
- backWall=None,
- plotArea=None,
- legend=None,
- plotVisOnly=True,
- dispBlanksAs="gap",
- showDLblsOverMax=None,
- extLst=None,
- ):
- self.title = title
- self.autoTitleDeleted = autoTitleDeleted
- self.pivotFmts = pivotFmts
- self.view3D = view3D
- self.floor = floor
- self.sideWall = sideWall
- self.backWall = backWall
- if plotArea is None:
- plotArea = PlotArea()
- self.plotArea = plotArea
- self.legend = legend
- self.plotVisOnly = plotVisOnly
- self.dispBlanksAs = dispBlanksAs
- self.showDLblsOverMax = showDLblsOverMax
- class Protection(Serialisable):
- tagname = "protection"
- chartObject = NestedBool(allow_none=True)
- data = NestedBool(allow_none=True)
- formatting = NestedBool(allow_none=True)
- selection = NestedBool(allow_none=True)
- userInterface = NestedBool(allow_none=True)
- __elements__ = ("chartObject", "data", "formatting", "selection", "userInterface")
- def __init__(self,
- chartObject=None,
- data=None,
- formatting=None,
- selection=None,
- userInterface=None,
- ):
- self.chartObject = chartObject
- self.data = data
- self.formatting = formatting
- self.selection = selection
- self.userInterface = userInterface
- class ExternalData(Serialisable):
- tagname = "externalData"
- autoUpdate = NestedBool(allow_none=True)
- id = String() # Needs namespace
- def __init__(self,
- autoUpdate=None,
- id=None
- ):
- self.autoUpdate = autoUpdate
- self.id = id
- class ChartSpace(Serialisable):
- tagname = "chartSpace"
- date1904 = NestedBool(allow_none=True)
- lang = NestedString(allow_none=True)
- roundedCorners = NestedBool(allow_none=True)
- style = NestedMinMax(allow_none=True, min=1, max=48)
- clrMapOvr = Typed(expected_type=ColorMapping, allow_none=True)
- pivotSource = Typed(expected_type=PivotSource, allow_none=True)
- protection = Typed(expected_type=Protection, allow_none=True)
- chart = Typed(expected_type=ChartContainer)
- spPr = Typed(expected_type=GraphicalProperties, allow_none=True)
- graphicalProperties = Alias("spPr")
- txPr = Typed(expected_type=RichText, allow_none=True)
- textProperties = Alias("txPr")
- externalData = Typed(expected_type=ExternalData, allow_none=True)
- printSettings = Typed(expected_type=PrintSettings, allow_none=True)
- userShapes = Relation()
- extLst = Typed(expected_type=ExtensionList, allow_none=True)
- __elements__ = ('date1904', 'lang', 'roundedCorners', 'style',
- 'clrMapOvr', 'pivotSource', 'protection', 'chart', 'spPr', 'txPr',
- 'externalData', 'printSettings', 'userShapes')
- def __init__(self,
- date1904=None,
- lang=None,
- roundedCorners=None,
- style=None,
- clrMapOvr=None,
- pivotSource=None,
- protection=None,
- chart=None,
- spPr=None,
- txPr=None,
- externalData=None,
- printSettings=None,
- userShapes=None,
- extLst=None,
- ):
- self.date1904 = date1904
- self.lang = lang
- self.roundedCorners = roundedCorners
- self.style = style
- self.clrMapOvr = clrMapOvr
- self.pivotSource = pivotSource
- self.protection = protection
- self.chart = chart
- self.spPr = spPr
- self.txPr = txPr
- self.externalData = externalData
- self.printSettings = printSettings
- self.userShapes = userShapes
- def to_tree(self, tagname=None, idx=None, namespace=None):
- tree = super(ChartSpace, self).to_tree()
- tree.set("xmlns", CHART_NS)
- return tree
|