NomadNet/nomadnet/ui/TextUI.py
2021-05-04 11:08:31 +02:00

57 lines
1.8 KiB
Python

import RNS
import importlib
import time
from nomadnet import NomadNetworkApp
from nomadnet.ui import *
from nomadnet.ui.textui import *
class TextUI:
def __init__(self):
self.app = NomadNetworkApp.get_shared_instance()
self.loop = None
if importlib.util.find_spec("urwid") != None:
import urwid
else:
RNS.log("The text-mode user interface requires Urwid to be installed on your system.", RNS.LOG_ERROR)
RNS.log("You can install it with the command: pip3 install urwid", RNS.LOG_ERROR)
nomadnet.panic()
urwid.set_encoding("UTF-8")
intro_timeout = self.app.config["textui"]["intro_time"]
colormode = self.app.config["textui"]["colormode"]
theme = self.app.config["textui"]["theme"]
palette = nomadnet.ui.THEMES[theme]
self.screen = urwid.raw_display.Screen()
self.screen.register_palette(palette)
#self.main_display = nomadnet.ui.textui.Extras.DemoDisplay(self, self.app)
self.main_display = nomadnet.ui.textui.Main.MainDisplay(self, self.app)
if intro_timeout > 0:
self.intro_display = nomadnet.ui.textui.Extras.IntroDisplay(self.app)
initial_widget = self.intro_display.widget
else:
initial_widget = self.main_display.widget
self.loop = urwid.MainLoop(initial_widget, screen=self.screen)
if intro_timeout > 0:
self.loop.set_alarm_in(intro_timeout, self.display_main)
self.set_colormode(colormode)
self.loop.run()
def set_colormode(self, colormode):
self.screen.set_terminal_properties(colormode)
self.screen.reset_default_terminal_palette()
def display_main(self, loop, user_data):
self.loop.widget = self.main_display.widget