From f7a05428981c3bbdc62bc298453a60c8c4bd461e Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Mon, 13 Feb 2023 03:50:05 +0100 Subject: [PATCH] kvui: limit UI side logs to by default 1000 messages --- data/client.kv | 2 ++ kvui.py | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/data/client.kv b/data/client.kv index 117539b7..f0e36169 100644 --- a/data/client.kv +++ b/data/client.kv @@ -30,6 +30,8 @@ font_size: dp(20) markup: True : + messages: 1000 # amount of messages stored in client logs. + cols: 1 viewclass: 'SelectableLabel' scroll_y: 0 scroll_type: ["content", "bars"] diff --git a/kvui.py b/kvui.py index c442afe5..a1c6959d 100644 --- a/kvui.py +++ b/kvui.py @@ -508,7 +508,7 @@ class LogtoUI(logging.Handler): class UILog(RecycleView): - cols = 1 + messages: typing.ClassVar[int] # comes from kv file def __init__(self, *loggers_to_handle, **kwargs): super(UILog, self).__init__(**kwargs) @@ -518,9 +518,15 @@ class UILog(RecycleView): def on_log(self, record: str) -> None: self.data.append({"text": escape_markup(record)}) + self.clean_old() def on_message_markup(self, 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): """Workaround fix for divergent texture and layout heights"""