kivy: allow user-defined text colors in data/client.kv (#1429)
This commit is contained in:
parent
a40f6058b5
commit
803d7105a1
|
@ -50,6 +50,7 @@ Output Logs/
|
||||||
/Archipelago.zip
|
/Archipelago.zip
|
||||||
/setup.ini
|
/setup.ini
|
||||||
/installdelete.iss
|
/installdelete.iss
|
||||||
|
/data/user.kv
|
||||||
|
|
||||||
# Byte-compiled / optimized / DLL files
|
# Byte-compiled / optimized / DLL files
|
||||||
__pycache__/
|
__pycache__/
|
||||||
|
|
|
@ -1,4 +1,21 @@
|
||||||
<TabbedPanel>
|
<TextColors>:
|
||||||
|
# Hex-format RGB colors used in clients. Resets after an update/install.
|
||||||
|
# To avoid, you can copy the TextColors section into a new "user.kv" next to this file
|
||||||
|
# and it will read from there instead.
|
||||||
|
black: "000000"
|
||||||
|
red: "EE0000"
|
||||||
|
green: "00FF7F" # typically a location
|
||||||
|
yellow: "FAFAD2" # typically other slots/players
|
||||||
|
blue: "6495ED" # typically extra info (such as entrance)
|
||||||
|
magenta: "EE00EE" # typically your slot/player
|
||||||
|
cyan: "00EEEE" # typically regular item
|
||||||
|
slateblue: "6D8BE8" # typically useful item
|
||||||
|
plum: "AF99EF" # typically progression item
|
||||||
|
salmon: "FA8072" # typically trap item
|
||||||
|
white: "FFFFFF" # not used, if you want to change the generic text color change color in Label
|
||||||
|
<Label>:
|
||||||
|
color: "FFFFFF"
|
||||||
|
<TabbedPanel>:
|
||||||
tab_width: root.width / app.tab_count
|
tab_width: root.width / app.tab_count
|
||||||
<SelectableLabel>:
|
<SelectableLabel>:
|
||||||
canvas.before:
|
canvas.before:
|
||||||
|
|
20
kvui.py
20
kvui.py
|
@ -1,7 +1,6 @@
|
||||||
import os
|
import os
|
||||||
import logging
|
import logging
|
||||||
import typing
|
import typing
|
||||||
import asyncio
|
|
||||||
|
|
||||||
os.environ["KIVY_NO_CONSOLELOG"] = "1"
|
os.environ["KIVY_NO_CONSOLELOG"] = "1"
|
||||||
os.environ["KIVY_NO_FILELOG"] = "1"
|
os.environ["KIVY_NO_FILELOG"] = "1"
|
||||||
|
@ -26,6 +25,7 @@ from kivy.base import ExceptionHandler, ExceptionManager
|
||||||
from kivy.clock import Clock
|
from kivy.clock import Clock
|
||||||
from kivy.factory import Factory
|
from kivy.factory import Factory
|
||||||
from kivy.properties import BooleanProperty, ObjectProperty
|
from kivy.properties import BooleanProperty, ObjectProperty
|
||||||
|
from kivy.uix.widget import Widget
|
||||||
from kivy.uix.button import Button
|
from kivy.uix.button import Button
|
||||||
from kivy.uix.gridlayout import GridLayout
|
from kivy.uix.gridlayout import GridLayout
|
||||||
from kivy.uix.layout import Layout
|
from kivy.uix.layout import Layout
|
||||||
|
@ -538,6 +538,19 @@ class E(ExceptionHandler):
|
||||||
|
|
||||||
|
|
||||||
class KivyJSONtoTextParser(JSONtoTextParser):
|
class KivyJSONtoTextParser(JSONtoTextParser):
|
||||||
|
# dummy class to absorb kvlang definitions
|
||||||
|
class TextColors(Widget):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
# we grab the color definitions from the .kv file, then overwrite the JSONtoTextParser default entries
|
||||||
|
colors = self.TextColors()
|
||||||
|
color_codes = self.color_codes.copy()
|
||||||
|
for name, code in color_codes.items():
|
||||||
|
color_codes[name] = getattr(colors, name, code)
|
||||||
|
self.color_codes = color_codes
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
def __call__(self, *args, **kwargs):
|
def __call__(self, *args, **kwargs):
|
||||||
self.ref_count = 0
|
self.ref_count = 0
|
||||||
return super(KivyJSONtoTextParser, self).__call__(*args, **kwargs)
|
return super(KivyJSONtoTextParser, self).__call__(*args, **kwargs)
|
||||||
|
@ -587,3 +600,8 @@ class KivyJSONtoTextParser(JSONtoTextParser):
|
||||||
ExceptionManager.add_handler(E())
|
ExceptionManager.add_handler(E())
|
||||||
|
|
||||||
Builder.load_file(Utils.local_path("data", "client.kv"))
|
Builder.load_file(Utils.local_path("data", "client.kv"))
|
||||||
|
user_file = Utils.local_path("data", "user.kv")
|
||||||
|
if os.path.exists(user_file):
|
||||||
|
logging.info("Loading user.kv into builder.")
|
||||||
|
Builder.load_file(user_file)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue