From 910e527cc7eb59dc8fe3d2a6f5fb10dcf7e30d92 Mon Sep 17 00:00:00 2001 From: Mark Qvist Date: Mon, 15 Jan 2024 19:30:26 +0100 Subject: [PATCH] Terminate log tail when view is inactive --- nomadnet/ui/textui/Log.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/nomadnet/ui/textui/Log.py b/nomadnet/ui/textui/Log.py index b38e4b3..853acf7 100644 --- a/nomadnet/ui/textui/Log.py +++ b/nomadnet/ui/textui/Log.py @@ -12,10 +12,21 @@ class LogDisplay(): def __init__(self, app): import urwid self.app = app - self.log_term = LogTerminal(self.app) + self.log_term = None self.shortcuts_display = LogDisplayShortcuts(self.app) - self.widget = urwid.LineBox(self.log_term) + self.widget = None + + def show(self): + if self.log_term == None: + self.log_term = LogTerminal(self.app) + self.widget = urwid.LineBox(self.log_term) + + def kill(self): + if self.log_term != None: + self.log_term.terminate() + self.log_term = None + self.widget = None def shortcuts(self): return self.shortcuts_display @@ -26,10 +37,14 @@ class LogTerminal(urwid.WidgetWrap): self.log_term = urwid.Terminal( ("tail", "-fn50", self.app.logfilepath), encoding='utf-8', - escape_sequence="up" + escape_sequence="up", + main_loop=self.app.ui.loop, ) urwid.WidgetWrap.__init__(self, self.log_term) + def terminate(self): + self.log_term.terminate() + def keypress(self, size, key): if key == "up":