forked from anixart-mod/patcher
56 lines
1.9 KiB
Python
56 lines
1.9 KiB
Python
# Change application theme
|
|
|
|
from lxml import etree
|
|
|
|
|
|
def apply(config: dict) -> bool:
|
|
main_color = config["theme"]["colors"]["primary"]
|
|
splash_color = config["theme"]["colors"]["secondary"]
|
|
gradient_from = config["theme"]["gradient"]["from"]
|
|
gradient_to = config["theme"]["gradient"]["to"]
|
|
|
|
# No connection alert coolor
|
|
with open("./decompiled/assets/no_connection.html", "r", encoding="utf-8") as file:
|
|
file_contents = file.read()
|
|
|
|
new_contents = file_contents.replace("#f04e4e", main_color)
|
|
|
|
with open("./decompiled/assets/no_connection.html", "w", encoding="utf-8") as file:
|
|
file.write(new_contents)
|
|
|
|
# For logo
|
|
drawable_types = ["", "-night"]
|
|
|
|
for drawable_type in drawable_types:
|
|
# Application logo gradient colors
|
|
file_path = f"./decompiled/res/drawable{drawable_type}/$logo__0.xml"
|
|
|
|
parser = etree.XMLParser(remove_blank_text=True)
|
|
tree = etree.parse(file_path, parser)
|
|
root = tree.getroot()
|
|
|
|
# Change attributes with namespace
|
|
root.set(f"{{{config['xml_ns']['android']}}}startColor", gradient_from)
|
|
root.set(f"{{{config['xml_ns']['android']}}}endColor", gradient_to)
|
|
|
|
# Save back
|
|
tree.write(file_path, pretty_print=True, xml_declaration=True, encoding="utf-8")
|
|
|
|
# Application logo anim color
|
|
file_path = f"./decompiled/res/drawable{drawable_type}/$logo_splash_anim__0.xml"
|
|
|
|
parser = etree.XMLParser(remove_blank_text=True)
|
|
tree = etree.parse(file_path, parser)
|
|
root = tree.getroot()
|
|
|
|
# Finding "path"
|
|
for el in root.findall("path", namespaces=config['xml_ns']):
|
|
name = el.get(f"{{{config['xml_ns']['android']}}}name")
|
|
if name == "path":
|
|
el.set(f"{{{config['xml_ns']['android']}}}fillColor", splash_color)
|
|
|
|
# Save back
|
|
tree.write(file_path, pretty_print=True, xml_declaration=True, encoding="utf-8")
|
|
|
|
return True
|