58 lines
2.0 KiB
Python
58 lines
2.0 KiB
Python
# Change application theme
|
|
|
|
import re
|
|
|
|
|
|
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"
|
|
with open(file_path, "r", encoding="utf-8") as file:
|
|
content = file.read()
|
|
|
|
pattern = r'android:startColor="(#[0-9a-fA-F]{8})"\s+android:endColor="(#[0-9a-fA-F]{8})"'
|
|
|
|
def replace_colors(match):
|
|
return (
|
|
f'android:startColor="{gradient_from}" android:endColor="{gradient_to}"'
|
|
)
|
|
|
|
new_content = re.sub(pattern, replace_colors, content).replace("\n ", "")
|
|
|
|
with open(file_path, "w", encoding="utf-8") as file:
|
|
file.write(new_content)
|
|
|
|
# Application logo anim color
|
|
file_path = f"./decompiled/res/drawable{drawable_type}/$logo_splash_anim__0.xml"
|
|
with open(file_path, "r", encoding="utf-8") as file:
|
|
content = file.read()
|
|
|
|
pattern = r'android:name="path" android:fillColor="(#[0-9a-fA-F]{8})"'
|
|
|
|
def replace_colors(match):
|
|
return f'android:name="path" android:fillColor="{splash_color}"'
|
|
|
|
new_content = re.sub(pattern, replace_colors, content).replace("\n ", " ", 1)
|
|
|
|
with open(file_path, "w", encoding="utf-8") as file:
|
|
file.write(new_content)
|
|
|
|
return True
|