Skip to content

Commit

Permalink
Merge pull request #1757 from mwhudson/persist-rich-mode
Browse files Browse the repository at this point in the history
persist rich mode across updates
  • Loading branch information
mwhudson committed Aug 8, 2023
2 parents 17e5aae + a4c924f commit bdde2c1
Showing 1 changed file with 20 additions and 12 deletions.
32 changes: 20 additions & 12 deletions subiquitycore/tui.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

import asyncio
import inspect
import json
import logging
import os
import signal
Expand Down Expand Up @@ -77,9 +78,7 @@ def __init__(self, opts):
if not opts.dry_run:
open("/run/casper-no-prompt", "w").close()

# Set rich_mode to the opposite of what we want, so we can
# call toggle_rich to get the right things set up.
self.rich_mode = opts.run_on_serial
self.rich_mode = None
self.urwid_loop = None
self.cur_screen = None
self.fg_proc = None
Expand Down Expand Up @@ -256,21 +255,23 @@ def select_initial_screen(self):
def set_rich(self, rich):
if rich == self.rich_mode:
return
self.toggle_rich()

def toggle_rich(self):
if self.rich_mode:
urwid.util.set_encoding("ascii")
new_palette = PALETTE_MONO
self.rich_mode = False
else:
if rich:
urwid.util.set_encoding("utf-8")
new_palette = PALETTE_COLOR
self.rich_mode = True
else:
urwid.util.set_encoding("ascii")
new_palette = PALETTE_MONO
self.rich_mode = False
with open(self.state_path("rich-mode"), "w") as fp:
json.dump(self.rich_mode, fp)
urwid.CanvasCache.clear()
self.urwid_loop.screen.register_palette(new_palette)
self.urwid_loop.screen.clear()

def toggle_rich(self):
self.set_rich(not self.rich_mode)

def unhandled_input(self, key):
if self.opts.dry_run and key == "ctrl x":
self.exit()
Expand Down Expand Up @@ -301,7 +302,14 @@ def start_urwid(self, input=None, output=None):
**self.extra_urwid_loop_args(),
)
extend_dec_special_charmap()
self.toggle_rich()
try:
fp = open(self.state_path("rich-mode"))
except FileNotFoundError:
initial_rich_mode = not self.opts.run_on_serial
else:
with fp:
initial_rich_mode = json.load(fp)
self.set_rich(initial_rich_mode)
self.urwid_loop.start()
self.select_initial_screen()

Expand Down

0 comments on commit bdde2c1

Please sign in to comment.