mirror of
https://github.com/ihabunek/toot.git
synced 2024-09-29 04:35:54 -04:00
Add zoom command to open status in scrollable popup window
This commit is contained in:
parent
916b4cc4bf
commit
1d26ecd489
@ -8,7 +8,7 @@ from toot import api, config, __version__
|
|||||||
from .compose import StatusComposer
|
from .compose import StatusComposer
|
||||||
from .constants import PALETTE
|
from .constants import PALETTE
|
||||||
from .entities import Status
|
from .entities import Status
|
||||||
from .overlays import ExceptionStackTrace, GotoMenu, Help, StatusSource, StatusLinks
|
from .overlays import ExceptionStackTrace, GotoMenu, Help, StatusSource, StatusLinks, StatusZoom
|
||||||
from .overlays import StatusDeleteConfirmation
|
from .overlays import StatusDeleteConfirmation
|
||||||
from .timeline import Timeline
|
from .timeline import Timeline
|
||||||
from .utils import parse_content_links, show_media
|
from .utils import parse_content_links, show_media
|
||||||
@ -192,6 +192,9 @@ class TUI(urwid.Frame):
|
|||||||
def _menu(timeline, status):
|
def _menu(timeline, status):
|
||||||
self.show_context_menu(status)
|
self.show_context_menu(status)
|
||||||
|
|
||||||
|
def _zoom(timeline, status_details):
|
||||||
|
self.show_status_zoom(status_details)
|
||||||
|
|
||||||
urwid.connect_signal(timeline, "compose", _compose)
|
urwid.connect_signal(timeline, "compose", _compose)
|
||||||
urwid.connect_signal(timeline, "delete", _delete)
|
urwid.connect_signal(timeline, "delete", _delete)
|
||||||
urwid.connect_signal(timeline, "favourite", self.async_toggle_favourite)
|
urwid.connect_signal(timeline, "favourite", self.async_toggle_favourite)
|
||||||
@ -202,6 +205,7 @@ class TUI(urwid.Frame):
|
|||||||
urwid.connect_signal(timeline, "reply", _reply)
|
urwid.connect_signal(timeline, "reply", _reply)
|
||||||
urwid.connect_signal(timeline, "source", _source)
|
urwid.connect_signal(timeline, "source", _source)
|
||||||
urwid.connect_signal(timeline, "links", _links)
|
urwid.connect_signal(timeline, "links", _links)
|
||||||
|
urwid.connect_signal(timeline, "zoom", _zoom)
|
||||||
|
|
||||||
def build_timeline(self, name, statuses, local):
|
def build_timeline(self, name, statuses, local):
|
||||||
def _close(*args):
|
def _close(*args):
|
||||||
@ -337,6 +341,12 @@ class TUI(urwid.Frame):
|
|||||||
options={"height": len(links) + 2},
|
options={"height": len(links) + 2},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def show_status_zoom(self, status_details):
|
||||||
|
self.open_overlay(
|
||||||
|
widget=StatusZoom(status_details),
|
||||||
|
title="Status zoom",
|
||||||
|
)
|
||||||
|
|
||||||
def show_exception(self, exception):
|
def show_exception(self, exception):
|
||||||
self.open_overlay(
|
self.open_overlay(
|
||||||
widget=ExceptionStackTrace(exception),
|
widget=ExceptionStackTrace(exception),
|
||||||
|
@ -20,6 +20,14 @@ class StatusSource(urwid.ListBox):
|
|||||||
super().__init__(walker)
|
super().__init__(walker)
|
||||||
|
|
||||||
|
|
||||||
|
class StatusZoom(urwid.ListBox):
|
||||||
|
"""Opens status in scrollable popup window"""
|
||||||
|
def __init__(self, status_details):
|
||||||
|
ll = list(filter(lambda x: getattr(x, "rows", None), status_details.widget_list))
|
||||||
|
walker = urwid.SimpleFocusListWalker(ll)
|
||||||
|
super().__init__(walker)
|
||||||
|
|
||||||
|
|
||||||
class StatusLinks(urwid.ListBox):
|
class StatusLinks(urwid.ListBox):
|
||||||
"""Shows status links."""
|
"""Shows status links."""
|
||||||
|
|
||||||
@ -162,6 +170,7 @@ class Help(urwid.Padding):
|
|||||||
yield urwid.Text(h(" [L] - Show the status links"))
|
yield urwid.Text(h(" [L] - Show the status links"))
|
||||||
yield urwid.Text(h(" [U] - Show the status data in JSON as received from the server"))
|
yield urwid.Text(h(" [U] - Show the status data in JSON as received from the server"))
|
||||||
yield urwid.Text(h(" [V] - Open status in default browser"))
|
yield urwid.Text(h(" [V] - Open status in default browser"))
|
||||||
|
yield urwid.Text(h(" [Z] - Open status in scrollable popup window"))
|
||||||
yield urwid.Divider()
|
yield urwid.Divider()
|
||||||
yield urwid.Text(("bold", "Links"))
|
yield urwid.Text(("bold", "Links"))
|
||||||
yield urwid.Divider()
|
yield urwid.Divider()
|
||||||
|
@ -29,6 +29,7 @@ class Timeline(urwid.Columns):
|
|||||||
"links", # Show status links
|
"links", # Show status links
|
||||||
"thread", # Show thread for status
|
"thread", # Show thread for status
|
||||||
"save", # Save current timeline
|
"save", # Save current timeline
|
||||||
|
"zoom", # Open status in scrollable popup window
|
||||||
]
|
]
|
||||||
|
|
||||||
def __init__(self, name, statuses, focus=0, is_thread=False):
|
def __init__(self, name, statuses, focus=0, is_thread=False):
|
||||||
@ -173,6 +174,10 @@ class Timeline(urwid.Columns):
|
|||||||
self._emit("save", status)
|
self._emit("save", status)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if key in ("z", "Z"):
|
||||||
|
self._emit("zoom", self.status_details)
|
||||||
|
return
|
||||||
|
|
||||||
return super().keypress(size, key)
|
return super().keypress(size, key)
|
||||||
|
|
||||||
def append_status(self, status):
|
def append_status(self, status):
|
||||||
@ -305,6 +310,7 @@ class StatusDetails(urwid.Pile):
|
|||||||
"[L]inks",
|
"[L]inks",
|
||||||
"[R]eply",
|
"[R]eply",
|
||||||
"So[u]rce",
|
"So[u]rce",
|
||||||
|
"[Z]oom",
|
||||||
"[H]elp",
|
"[H]elp",
|
||||||
]
|
]
|
||||||
options = " ".join(o for o in options if o)
|
options = " ".join(o for o in options if o)
|
||||||
|
Loading…
Reference in New Issue
Block a user