kvui: limit UI side logs to by default 1000 messages

This commit is contained in:
Fabian Dill 2023-02-13 03:50:05 +01:00 committed by Fabian Dill
parent cc61f16e57
commit f7a0542898
2 changed files with 9 additions and 1 deletions

View File

@ -30,6 +30,8 @@
font_size: dp(20) font_size: dp(20)
markup: True markup: True
<UILog>: <UILog>:
messages: 1000 # amount of messages stored in client logs.
cols: 1
viewclass: 'SelectableLabel' viewclass: 'SelectableLabel'
scroll_y: 0 scroll_y: 0
scroll_type: ["content", "bars"] scroll_type: ["content", "bars"]

View File

@ -508,7 +508,7 @@ class LogtoUI(logging.Handler):
class UILog(RecycleView): class UILog(RecycleView):
cols = 1 messages: typing.ClassVar[int] # comes from kv file
def __init__(self, *loggers_to_handle, **kwargs): def __init__(self, *loggers_to_handle, **kwargs):
super(UILog, self).__init__(**kwargs) super(UILog, self).__init__(**kwargs)
@ -518,9 +518,15 @@ class UILog(RecycleView):
def on_log(self, record: str) -> None: def on_log(self, record: str) -> None:
self.data.append({"text": escape_markup(record)}) self.data.append({"text": escape_markup(record)})
self.clean_old()
def on_message_markup(self, text): def on_message_markup(self, text):
self.data.append({"text": text}) self.data.append({"text": text})
self.clean_old()
def clean_old(self):
if len(self.data) > self.messages:
self.data.pop(0)
def fix_heights(self): def fix_heights(self):
"""Workaround fix for divergent texture and layout heights""" """Workaround fix for divergent texture and layout heights"""