summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorMichael Stahl <michael.stahl@allotropia.de>2022-11-30 12:57:08 +0100
committerMichael Stahl <michael.stahl@allotropia.de>2022-11-30 18:44:54 +0100
commita71ce24626caf62680446145384e399fbdf2172c (patch)
tree7373c5b2d564783149d9f3c2d8a2f205f525c49e /bin
parent750393ef151fed5eceb9d482975f4819d449666e (diff)
flat-odf-cleanup.py: remove some presentation related styles
Change-Id: I385941f83237464eb02e4e543a67e24f22bddac7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143498 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
Diffstat (limited to 'bin')
-rw-r--r--bin/flat-odf-cleanup.py60
1 files changed, 46 insertions, 14 deletions
diff --git a/bin/flat-odf-cleanup.py b/bin/flat-odf-cleanup.py
index 8d4c176af89b..59b0a2af16b1 100644
--- a/bin/flat-odf-cleanup.py
+++ b/bin/flat-odf-cleanup.py
@@ -39,8 +39,8 @@ def get_used_p_styles(root):
if p.get("{urn:oasis:names:tc:opendocument:xmlns:text:1.0}class-names"):
for style in p.get("{urn:oasis:names:tc:opendocument:xmlns:text:1.0}class-names").split(" "):
usedpstyles.add(style)
- for shape in root.findall(".//*[@{urn:oasis:names:tc:opendocument:xmlns:draw:1.0}text-style-name]"):
- usedpstyles.add(shape.get("{urn:oasis:names:tc:opendocument:xmlns:draw:1.0}text-style-name"))
+ for shape in root.findall(".//*[@{urn:oasis:names:tc:opendocument:xmlns:drawing:1.0}text-style-name]"):
+ usedpstyles.add(shape.get("{urn:oasis:names:tc:opendocument:xmlns:drawing:1.0}text-style-name"))
for tabletemplate in root.findall(".//*[@{urn:oasis:names:tc:opendocument:xmlns:table:1.0}paragraph-style-name]"):
usedpstyles.add(tabletemplate.get("{urn:oasis:names:tc:opendocument:xmlns:table:1.0}paragraph-style-name"))
for page in root.findall(".//*[@{urn:oasis:names:tc:opendocument:xmlns:style:1.0}register-truth-ref-style-name]"):
@@ -105,8 +105,8 @@ def remove_unused(root):
usedmasterpages.add(tstyle.get("{urn:oasis:names:tc:opendocument:xmlns:style:1.0}master-page-name"))
for node in root.findall(".//*[@{urn:oasis:names:tc:opendocument:xmlns:text:1.0}master-page-name]"):
usedmasterpages.add(node.get("{urn:oasis:names:tc:opendocument:xmlns:text:1.0}master-page-name"))
- for node in root.findall(".//*[@{urn:oasis:names:tc:opendocument:xmlns:draw:1.0}master-page-name]"):
- usedmasterpages.add(node.get("{urn:oasis:names:tc:opendocument:xmlns:draw:1.0}master-page-name"))
+ for node in root.findall(".//*[@{urn:oasis:names:tc:opendocument:xmlns:drawing:1.0}master-page-name]"):
+ usedmasterpages.add(node.get("{urn:oasis:names:tc:opendocument:xmlns:drawing:1.0}master-page-name"))
print(usedmasterpages)
# iterate parent/next until no more masterpage is added
size = -1
@@ -211,7 +211,48 @@ def remove_unused(root):
sectionstyles = root.findall(".//{urn:oasis:names:tc:opendocument:xmlns:style:1.0}style[@{urn:oasis:names:tc:opendocument:xmlns:style:1.0}family='section']")
remove_unused_styles(root, usedsectionstyles, sectionstyles, "section style")
- # TODO 6 other styles
+ # 7) presentation styles
+ usedpresentationstyles = set()
+
+ collect_all_attribute(usedpresentationstyles, "{urn:oasis:names:tc:opendocument:xmlns:presentation:1.0}style-name")
+ for element in root.findall(".//*[@{urn:oasis:names:tc:opendocument:xmlns:presentation:1.0}class-names]"):
+ for style in element.get("{urn:oasis:names:tc:opendocument:xmlns:presentation:1.0}class-names").split(" "):
+ usedpresentationstyles.add(style)
+
+ presentationstyles = root.findall(".//{urn:oasis:names:tc:opendocument:xmlns:style:1.0}style[@{urn:oasis:names:tc:opendocument:xmlns:style:1.0}family='presentation']")
+ add_parent_styles(usedpresentationstyles, presentationstyles)
+ remove_unused_styles(root, usedpresentationstyles, presentationstyles, "presentation style")
+
+ # 8) graphic styles
+ pages = {
+ "{urn:oasis:names:tc:opendocument:xmlns:drawing:1.0}page",
+ "{urn:oasis:names:tc:opendocument:xmlns:presentation:1.0}notes",
+ "{urn:oasis:names:tc:opendocument:xmlns:style:1.0}handout-master",
+ "{urn:oasis:names:tc:opendocument:xmlns:style:1.0}master-page",
+ }
+ usedgraphicstyles = set()
+ useddrawingpagestyles = set()
+ for element in root.findall(".//*[@{urn:oasis:names:tc:opendocument:xmlns:drawing:1.0}style-name]"):
+ style = element.get("{urn:oasis:names:tc:opendocument:xmlns:drawing:1.0}style-name")
+ if element.tag in pages:
+ useddrawingpagestyles.add(style)
+ else:
+ usedgraphicstyles.add(style)
+ for element in root.findall(".//*[@{urn:oasis:names:tc:opendocument:xmlns:drawing:1.0}class-names]"):
+ for style in element.get("{urn:oasis:names:tc:opendocument:xmlns:drawing:1.0}class-names").split(" "):
+ usedgraphicstyles.add(style)
+
+ graphicstyles = root.findall(".//{urn:oasis:names:tc:opendocument:xmlns:style:1.0}style[@{urn:oasis:names:tc:opendocument:xmlns:style:1.0}family='graphic']")
+ add_parent_styles(usedgraphicstyles, graphicstyles)
+ remove_unused_styles(root, usedgraphicstyles, graphicstyles, "graphic style")
+
+ # 9) drawing-page styles
+ drawingpagestyles = root.findall(".//{urn:oasis:names:tc:opendocument:xmlns:style:1.0}style[@{urn:oasis:names:tc:opendocument:xmlns:style:1.0}family='drawing-page']")
+ add_parent_styles(useddrawingpagestyles, drawingpagestyles)
+ remove_unused_styles(root, useddrawingpagestyles, drawingpagestyles, "drawing-page style")
+
+
+ # TODO 3 other styles
# 13) unused font-face-decls
usedfonts = set()
@@ -271,11 +312,6 @@ if __name__ == "__main__":
-> table-row
db:default-cell-style-name
-> cell
- draw:style-name
- -> graphic
- -> drawing-page (only draw:page, presentation:notes, style:handout-master, style:master-page)
- presentation:style-name
- -> presentation
style:data-style-name
-> data style
presentation:presentation-page-layout-name
@@ -287,10 +323,6 @@ if __name__ == "__main__":
table:default-cell-style-name
-> cell
- draw:class-names
- -> graphic
- presentation:class-names
- -> presentation
draw:stroke-dash-names
-> draw:stroke-dash