Anki/qt/tools/extract_sass_vars.py
Matthias Metelka 365c5e1fb2
UI size tweaks (#2184)
* Reduce font size of answer button indicators

* Increase padding of browser rows with ResizeToContents on vertical header

* Remove 0.8 scale factor for dropdown item font-size

* Remove font-size prop entirely from DropdownItem

* Revert "Remove font-size prop entirely from DropdownItem"

This reverts commit bb0a158f96.

* Remove hard-coded Python font sizes

* Move font size and scrollbar into _root-vars.scss

* Revert editor size variable to 1.6

* Fix icon alignment

* Fix checkbox alignment for dropdown items

* Remove unused classes from Tag.svelte

* Revert "Increase padding of browser rows with ResizeToContents on vertical header"

This reverts commit 77bfc854ba.

* Remove option to set font size of browser entries

* Add setting for browser row padding to preferences

* Revert "Add setting for browser row padding to preferences"

This reverts commit 75c59da65a.

* Revert "Remove option to set font size of browser entries"

This reverts commit a543783d8e.
2022-11-23 16:50:15 +10:00

90 lines
2.3 KiB
Python

#!/usr/bin/env python3
# Copyright: Ankitects Pty Ltd and contributors
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
import json
import re
import sys
# bazel genrule "srcs"
root_vars_css = sys.argv[1]
# bazel genrule "outs"
colors_py = sys.argv[2]
props_py = sys.argv[3]
colors = {}
props = {}
reached_props = False
comment = ""
for line in re.split(r"[;\{\}]|\*\/", open(root_vars_css).read()):
line = line.strip()
if not line:
continue
if line.startswith("/*!"):
if "props" in line:
reached_props = True
elif "rest" in line:
break
else:
comment = re.match(r"\/\*!\s*(.*)$", line)[1]
continue
m = re.match(r"--(.+):(.+)$", line)
if not m:
if (
line != "}"
and not ":root" in line
and "Copyright" not in line
and "License" not in line
and "color-scheme" not in line
):
print("failed to match", line)
continue
var = m.group(1).replace("-", "_").upper()
val = m.group(2)
if reached_props:
if not var in props:
props.setdefault(var, {})["comment"] = comment
props[var]["light"] = val
else:
props[var]["dark"] = val
else:
if not var in colors:
colors.setdefault(var, {})["comment"] = comment
colors[var]["light"] = val
else:
colors[var]["dark"] = val
comment = ""
copyright_notice = """\
# Copyright: Ankitects Pty Ltd and contributors
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html\n
"""
with open(colors_py, "w") as buf:
buf.write(copyright_notice)
buf.write("# This file was automatically generated from _root-vars.scss\n")
for color, val in colors.items():
if not "dark" in val:
val["dark"] = val.light
buf.write(re.sub(r"\"\n", '",\n', f"{color} = {json.dumps(val, indent=4)}\n"))
with open(props_py, "w") as buf:
buf.write(copyright_notice)
buf.write("# This file was automatically generated from _root-vars.scss\n")
for prop, val in props.items():
if not "dark" in val:
val["dark"] = val.light
buf.write(re.sub(r"\"\n", '",\n', f"{prop} = {json.dumps(val, indent=4)}\n"))