update error view when report is done

This commit is contained in:
Michael Hudson-Doyle 2019-11-04 13:53:49 +13:00
parent 50e9dfb324
commit e93b5111b3
2 changed files with 20 additions and 2 deletions

View File

@ -25,6 +25,8 @@ import apport.hookutils
import attr
import urwid
from subiquitycore.controller import BaseController
@ -46,7 +48,10 @@ class ErrorReportKind(enum.Enum):
@attr.s(cmp=False)
class ErrorReport:
class ErrorReport(metaclass=urwid.MetaSignals):
signals = ["changed"]
controller = attr.ib()
base = attr.ib()
pr = attr.ib()
@ -110,6 +115,7 @@ class ErrorReport:
self.state = ErrorReportState.DONE
self._file.close()
self._file = None
urwid.emit_signal(self, "changed")
if wait:
_bg_add_info()
else:

View File

@ -17,6 +17,7 @@ import logging
from urwid import (
connect_signal,
disconnect_signal,
Padding,
Text,
)
@ -94,7 +95,8 @@ class ErrorReportStretchy(Stretchy):
setattr(self, a, Padding(b, width=w, align='center'))
self.spinner = Spinner(app.loop, style='dots')
self.pile = Pile(self._pile_elements())
self.pile = Pile([])
self._report_changed()
super().__init__("", [self.pile], 0, 0)
connect_signal(self, 'closed', self.spinner.stop)
@ -121,8 +123,18 @@ class ErrorReportStretchy(Stretchy):
return widgets
def _report_changed(self):
self.pile.contents[:] = [
(w, self.pile.options('pack')) for w in self._pile_elements()]
while not self.pile.focus.selectable():
self.pile.focus_position += 1
def view_report(self, sender):
self.app.run_command_in_foreground(["less", self.report.path])
def opened(self):
self.report.mark_seen()
connect_signal(self.report, 'changed', self._report_changed)
def closed(self):
disconnect_signal(self.report, 'changed', self._report_changed)