mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 14:02:21 -04:00

* Prevent multiple inclusion of variables in CSS files * Use dict instead of tuple for variables * Add comments to variables * Improve appearance of main window * Tweak main window styles * Use json.dumps over pprint.format * Make study button primary * Improve header margin * Make bottom toolbar slimmer * Make congrats page more balanced * Fix type issue * Replace day/night with light/dark * Exclude top-level-drag-row from hover effect * Create dataclass for variables * Run formatter * Apply CSS variables from Python side Why go full-circle with the Sass variables? This way we only need one interface for add-on authors to interact with. It also makes it easier for us to apply additional themes in the future. * Fix typing * Fix rgba values in Qt * Darken button background * Fix palette not being applied in light theme For some odd reason this problem arose much later than #2016. * Tweak default button look * Reformat * Apply CSS vars to ts pages * Include elevation in button_mixins_lib * Cast opacity to int * Add some margin to studiedToday info * Tweak light theme button gradient * Tweak highlight-bg for light theme * Add back default button color as it made the browser sidebar tool icons dark in light theme. * Reformat * Tweak light theme buttons once more Sorry for the back-and-forth. Sass only compiles when there are changes in user files, not when I only change the vars. * Fix bottom toolbar button indicators * Make buttons more clicky * Fix button padding * Handle macOS separately again * Decrease elevation effect for main window buttons to 1 * Imitate box-shadow for Qt elements * Adjust shadow vars * Adjust primary border color because the save button in the deck options had a lighter color than its background gradient. * Boost box-shadow color of primary buttons * Format * Adjust Qt box-shadow imitation and shadow colors * Use more subtle default shadow color * Add some more padding to top toolbar * Revert "Apply CSS vars to ts pages" This reverts commit5d8e7f6b7f
. * Revert "Apply CSS variables from Python side" This reverts commit87db774412
. * Better match the standard macOS buttons In the dark theme the standard color is a lighter grey, but at least the size/shape is similar again. This doesn't work for the editor buttons. * Reduce the top margin of the congrats screen * Fix illegible buttons when changing theme on macOS; match dark button style
88 lines
2.3 KiB
Python
88 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
|
|
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"))
|