kopia lustrzana https://github.com/ihabunek/toot
Show exception stack trace on error
rodzic
372976b1b2
commit
fb14c262e0
|
@ -1,5 +1,6 @@
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
|
import traceback
|
||||||
import urwid
|
import urwid
|
||||||
|
|
||||||
from concurrent.futures import ThreadPoolExecutor
|
from concurrent.futures import ThreadPoolExecutor
|
||||||
|
@ -96,6 +97,7 @@ class TUI(urwid.Frame):
|
||||||
|
|
||||||
self.timeline = None
|
self.timeline = None
|
||||||
self.overlay = None
|
self.overlay = None
|
||||||
|
self.exception = None
|
||||||
|
|
||||||
super().__init__(self.body, header=self.header, footer=self.footer)
|
super().__init__(self.body, header=self.header, footer=self.footer)
|
||||||
|
|
||||||
|
@ -186,6 +188,18 @@ class TUI(urwid.Frame):
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def show_exception(self, exception):
|
||||||
|
self.open_overlay(
|
||||||
|
widget=ExceptionStackTrace(exception),
|
||||||
|
title="Unhandled Exception",
|
||||||
|
options={
|
||||||
|
"align": 'center',
|
||||||
|
"width": ('relative', 80),
|
||||||
|
"valign": 'middle',
|
||||||
|
"height": ('relative', 80),
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
def async_toggle_favourite(self, status):
|
def async_toggle_favourite(self, status):
|
||||||
def _favourite():
|
def _favourite():
|
||||||
logger.info("Favouriting {}".format(status))
|
logger.info("Favouriting {}".format(status))
|
||||||
|
@ -246,6 +260,10 @@ class TUI(urwid.Frame):
|
||||||
# --- Keys -----------------------------------------------------------------
|
# --- Keys -----------------------------------------------------------------
|
||||||
|
|
||||||
def unhandled_input(self, key):
|
def unhandled_input(self, key):
|
||||||
|
if key in ('e', 'E'):
|
||||||
|
if self.exception:
|
||||||
|
self.show_exception(self.exception)
|
||||||
|
|
||||||
if key in ('q', 'Q'):
|
if key in ('q', 'Q'):
|
||||||
if self.overlay:
|
if self.overlay:
|
||||||
self.close_overlay()
|
self.close_overlay()
|
||||||
|
@ -262,3 +280,13 @@ class StatusSource(urwid.ListBox):
|
||||||
urwid.Text(line) for line in lines
|
urwid.Text(line) for line in lines
|
||||||
])
|
])
|
||||||
super().__init__(walker)
|
super().__init__(walker)
|
||||||
|
|
||||||
|
|
||||||
|
class ExceptionStackTrace(urwid.ListBox):
|
||||||
|
"""Shows an exception stack trace."""
|
||||||
|
def __init__(self, ex):
|
||||||
|
lines = traceback.format_exception(etype=type(ex), value=ex, tb=ex.__traceback__) * 3
|
||||||
|
walker = urwid.SimpleFocusListWalker([
|
||||||
|
urwid.Text(line) for line in lines
|
||||||
|
])
|
||||||
|
super().__init__(walker)
|
||||||
|
|
Ładowanie…
Reference in New Issue