Screen refresh after web browser invocation and exit
This commit is contained in:
parent
6633b758bc
commit
13fffd9fc1
3 changed files with 17 additions and 2 deletions
|
@ -210,6 +210,7 @@ class TUI(urwid.Frame):
|
|||
urwid.connect_signal(timeline, "links", _links)
|
||||
urwid.connect_signal(timeline, "zoom", _zoom)
|
||||
urwid.connect_signal(timeline, "translate", self.async_translate)
|
||||
urwid.connect_signal(timeline, "clear-screen", self.loop.screen.clear)
|
||||
|
||||
def build_timeline(self, name, statuses, local):
|
||||
def _close(*args):
|
||||
|
@ -347,6 +348,9 @@ class TUI(urwid.Frame):
|
|||
title="Status source",
|
||||
)
|
||||
|
||||
def _clear_screen(self, widget):
|
||||
self.loop.screen.clear()
|
||||
|
||||
def show_links(self, status):
|
||||
links = parse_content_links(status.data["content"]) if status else []
|
||||
post_attachments = status.data["media_attachments"] or []
|
||||
|
@ -355,8 +359,10 @@ class TUI(urwid.Frame):
|
|||
url = a["remote_url"] or a["url"]
|
||||
links.append((url, a["description"] if a["description"] else url))
|
||||
if links:
|
||||
sl_widget=StatusLinks(links)
|
||||
urwid.connect_signal(sl_widget, "clear-screen", self._clear_screen)
|
||||
self.open_overlay(
|
||||
widget=StatusLinks(links),
|
||||
widget=sl_widget,
|
||||
title="Status links",
|
||||
options={"height": len(links) + 2},
|
||||
)
|
||||
|
|
|
@ -30,17 +30,23 @@ class StatusZoom(urwid.ListBox):
|
|||
|
||||
class StatusLinks(urwid.ListBox):
|
||||
"""Shows status links."""
|
||||
signals = ["clear-screen"]
|
||||
|
||||
def __init__(self, links):
|
||||
|
||||
def widget(url, title):
|
||||
return Button(title or url, on_press=lambda btn: webbrowser.open(url))
|
||||
return Button(title or url, on_press=lambda btn: self.browse(url))
|
||||
|
||||
walker = urwid.SimpleFocusListWalker(
|
||||
[widget(url, title) for url, title in links]
|
||||
)
|
||||
super().__init__(walker)
|
||||
|
||||
def browse(self, url):
|
||||
webbrowser.open(url)
|
||||
# force a screen refresh; necessary with console browsers
|
||||
self._emit("clear-screen")
|
||||
|
||||
|
||||
class ExceptionStackTrace(urwid.ListBox):
|
||||
"""Shows an exception stack trace."""
|
||||
|
|
|
@ -33,6 +33,7 @@ class Timeline(urwid.Columns):
|
|||
"translate", # Translate status
|
||||
"save", # Save current timeline
|
||||
"zoom", # Open status in scrollable popup window
|
||||
"clear-screen", # clear the screen (used internally)
|
||||
]
|
||||
|
||||
def __init__(self, name, statuses, can_translate, focus=0, is_thread=False):
|
||||
|
@ -182,6 +183,8 @@ class Timeline(urwid.Columns):
|
|||
if key in ("v", "V"):
|
||||
if status.original.url:
|
||||
webbrowser.open(status.original.url)
|
||||
# force a screen refresh; necessary with console browsers
|
||||
self._emit("clear-screen")
|
||||
return
|
||||
|
||||
if key in ("p", "P"):
|
||||
|
|
Loading…
Reference in a new issue