diff --git a/nomadnet/NomadNetworkApp.py b/nomadnet/NomadNetworkApp.py index 6a4b0df..81c220a 100644 --- a/nomadnet/NomadNetworkApp.py +++ b/nomadnet/NomadNetworkApp.py @@ -241,6 +241,9 @@ class NomadNetworkApp: else: self.config["textui"]["intro_time"] = self.config["textui"].as_int("intro_time") + if not "editor" in self.config["textui"]: + self.config["textui"]["editor"] = "editor" + if not "animation_interval" in self.config["textui"]: self.config["textui"]["animation_interval"] = 1 else: @@ -324,6 +327,7 @@ user_interface = text [textui] +# Amount of time to show intro screen intro_time = 1 # Specify the number of colors to use @@ -341,6 +345,11 @@ colormode = 16 # colormode = 256 # colormode = 24bit +# What editor to use for editing text. By +# default the operating systems "editor" +# alias will be used. +editor = editor + [node] enable_node = No diff --git a/nomadnet/_version.py b/nomadnet/_version.py index c1336bd..d85b28e 100644 --- a/nomadnet/_version.py +++ b/nomadnet/_version.py @@ -1 +1 @@ -__version__ = "0.0.5" \ No newline at end of file +__version__ = "0.0.6" \ No newline at end of file diff --git a/nomadnet/ui/TextUI.py b/nomadnet/ui/TextUI.py index 502166a..4adf738 100644 --- a/nomadnet/ui/TextUI.py +++ b/nomadnet/ui/TextUI.py @@ -20,7 +20,7 @@ THEMES = { ('heading', 'light gray,underline', 'default', 'underline', 'g93,underline', 'default'), ('menubar', 'black', 'light gray', 'standout', '#111', '#bbb'), ('shortcutbar', 'black', 'light gray', 'standout', '#111', '#bbb'), - ('body_text', 'white', 'default', 'default', '#0a0', 'default'), + ('body_text', 'white', 'default', 'default', '#ddd', 'default'), ('error_text', 'dark red', 'default', 'default', 'dark red', 'default'), ('warning_text', 'yellow', 'default', 'default', '#ba4', 'default'), ('inactive_text', 'dark gray', 'default', 'default', 'dark gray', 'default'), diff --git a/nomadnet/ui/textui/Config.py b/nomadnet/ui/textui/Config.py new file mode 100644 index 0000000..9bdab42 --- /dev/null +++ b/nomadnet/ui/textui/Config.py @@ -0,0 +1,21 @@ +class ConfigDisplayShortcuts(): + def __init__(self, app): + import urwid + self.app = app + + self.widget = urwid.AttrMap(urwid.Text("Config Display Shortcuts"), "shortcutbar") + +class ConfigDisplay(): + def __init__(self, app): + import urwid + self.app = app + + pile = urwid.Pile([ + urwid.Text(("body_text", "Config Display \U0001F332")), + ]) + + self.shortcuts_display = ConfigDisplayShortcuts(self.app) + self.widget = urwid.Filler(pile, 'top') + + def shortcuts(self): + return self.shortcuts_display \ No newline at end of file diff --git a/nomadnet/ui/textui/Log.py b/nomadnet/ui/textui/Log.py new file mode 100644 index 0000000..e9dd8d7 --- /dev/null +++ b/nomadnet/ui/textui/Log.py @@ -0,0 +1,43 @@ +import urwid +import nomadnet + +class LogDisplayShortcuts(): + def __init__(self, app): + import urwid + self.app = app + + self.widget = urwid.AttrMap(urwid.Text("Log Display Shortcuts"), "shortcutbar") + +class LogDisplay(): + def __init__(self, app): + import urwid + self.app = app + self.log_term = LogTerminal(self.app) + + pile = urwid.Pile([ + ("weight", 90, self.log_term), + ("fixed", 1, urwid.Text(("body_text", "Log Display \U0001F332"))), + ]) + + self.shortcuts_display = LogDisplayShortcuts(self.app) + self.widget = urwid.LineBox(self.log_term) + + def shortcuts(self): + return self.shortcuts_display + +class LogTerminal(urwid.WidgetWrap): + def __init__(self, app): + self.app = app + self.log_term = urwid.Terminal( + ("tail", "-fn50", self.app.logfilepath), + encoding='utf-8', + escape_sequence="up" + ) + urwid.WidgetWrap.__init__(self, self.log_term) + + + def keypress(self, size, key): + if key == "up": + nomadnet.NomadNetworkApp.get_shared_instance().ui.main_display.frame.set_focus("header") + + return super(LogTerminal, self).keypress(size, key) \ No newline at end of file diff --git a/nomadnet/ui/textui/Main.py b/nomadnet/ui/textui/Main.py index e2bce9b..73a52da 100644 --- a/nomadnet/ui/textui/Main.py +++ b/nomadnet/ui/textui/Main.py @@ -4,7 +4,9 @@ import time from .Network import * from .Conversations import * from .Directory import * +from .Config import * from .Map import * +from .Log import * import urwid class SubDisplays(): @@ -13,7 +15,9 @@ class SubDisplays(): self.network_display = NetworkDisplay(self.app) self.conversations_display = ConversationsDisplay(self.app) self.directory_display = DirectoryDisplay(self.app) + self.config_display = ConfigDisplay(self.app) self.map_display = MapDisplay(self.app) + self.log_display = LogDisplay(self.app) self.active_display = self.conversations_display @@ -101,6 +105,14 @@ class MainDisplay(): self.sub_displays.active_display = self.sub_displays.map_display self.update_active_sub_display() + def show_config(self, user_data): + self.sub_displays.active_display = self.sub_displays.config_display + self.update_active_sub_display() + + def show_log(self, user_data): + self.sub_displays.active_display = self.sub_displays.log_display + self.update_active_sub_display() + def update_active_sub_display(self): self.frame.contents["body"] = (self.sub_displays.active().widget, None) self.update_active_shortcuts() @@ -127,11 +139,13 @@ class MenuDisplay(): button_network = (11, MenuButton("Network", on_press=handler.show_network)) button_conversations = (17, MenuButton("Conversations", on_press=handler.show_conversations)) button_directory = (13, MenuButton("Directory", on_press=handler.show_directory)) - button_map = (7, MenuButton("Map", on_press=handler.show_map)) - button_quit = (8, MenuButton("Quit", on_press=handler.quit)) + button_map = (7, MenuButton("Map", on_press=handler.show_map)) + button_log = (7, MenuButton("Log", on_press=handler.show_log)) + button_config = (10, MenuButton("Config", on_press=handler.show_config)) + button_quit = (8, MenuButton("Quit", on_press=handler.quit)) # buttons = [menu_text, button_conversations, button_node, button_directory, button_map] - buttons = [menu_text, button_conversations, button_network, button_quit] + buttons = [menu_text, button_conversations, button_network, button_log, button_config, button_quit] columns = MenuColumns(buttons, dividechars=1) columns.handler = handler