bin/flat-odf-cleanup.py |   60 ++++++++++++++++++++++++++++++++++++------------
 1 file changed, 46 insertions(+), 14 deletions(-)

New commits:
commit a71ce24626caf62680446145384e399fbdf2172c
Author:     Michael Stahl <michael.st...@allotropia.de>
AuthorDate: Wed Nov 30 12:57:08 2022 +0100
Commit:     Michael Stahl <michael.st...@allotropia.de>
CommitDate: Wed Nov 30 18:44:54 2022 +0100

    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.st...@allotropia.de>

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
 

Reply via email to