mirror of
https://github.com/Anjok07/ultimatevocalremovergui.git
synced 2024-12-12 15:51:05 +01:00
68 lines
1.5 KiB
Python
68 lines
1.5 KiB
Python
from pathlib import Path
|
|
import platform
|
|
|
|
if platform.system() == "Darwin":
|
|
sun_valley_tcl = "sun-valley_darwin.tcl"
|
|
else:
|
|
sun_valley_tcl = "sun-valley.tcl"
|
|
|
|
inited = False
|
|
root = None
|
|
|
|
|
|
def init(func):
|
|
def wrapper(*args, **kwargs):
|
|
global inited
|
|
global root
|
|
|
|
if not inited:
|
|
from tkinter import _default_root
|
|
|
|
path = (Path(__file__).parent / sun_valley_tcl).resolve()
|
|
|
|
try:
|
|
_default_root.tk.call("source", str(path))
|
|
except AttributeError:
|
|
raise RuntimeError(
|
|
"can't set theme. "
|
|
"Tk is not initialized. "
|
|
"Please first create a tkinter.Tk instance, then set the theme."
|
|
) from None
|
|
else:
|
|
inited = True
|
|
root = _default_root
|
|
|
|
return func(*args, **kwargs)
|
|
|
|
return wrapper
|
|
|
|
|
|
@init
|
|
def set_theme(theme):
|
|
if theme not in {"dark", "light"}:
|
|
raise RuntimeError(f"not a valid theme name: {theme}")
|
|
|
|
root.tk.call("set_theme", theme)
|
|
|
|
|
|
@init
|
|
def get_theme():
|
|
theme = root.tk.call("ttk::style", "theme", "use")
|
|
|
|
try:
|
|
return {"sun-valley-dark": "dark", "sun-valley-light": "light"}[theme]
|
|
except KeyError:
|
|
return theme
|
|
|
|
|
|
@init
|
|
def toggle_theme():
|
|
if get_theme() == "dark":
|
|
use_light_theme()
|
|
else:
|
|
use_dark_theme()
|
|
|
|
|
|
use_dark_theme = lambda: set_theme("dark")
|
|
use_light_theme = lambda: set_theme("light")
|