give contexts an id and have progressview track them by id not identity
This commit is contained in:
parent
219360d12d
commit
bc6c66efbb
|
@ -125,15 +125,19 @@ class InstallProgressController(SubiquityTuiController):
|
||||||
msg = context.full_name()
|
msg = context.full_name()
|
||||||
if description:
|
if description:
|
||||||
msg += ': ' + description
|
msg += ': ' + description
|
||||||
self.progress_view.event_start(context, msg)
|
|
||||||
if context.get('is-install-context'):
|
if context.get('is-install-context'):
|
||||||
self.progress_view.event_start(context, context.description)
|
indent = context.full_name().count('/') - 2
|
||||||
|
if context.get('is-install-context'):
|
||||||
|
indent -= 1
|
||||||
|
msg = ' ' * indent + context.description
|
||||||
|
else:
|
||||||
|
return
|
||||||
|
if context.parent:
|
||||||
|
self.progress_view.event_finish(context.parent.id)
|
||||||
|
self.progress_view.event_start(context.id, msg)
|
||||||
|
|
||||||
def report_finish_event(self, context, description, status):
|
def report_finish_event(self, context, description, status):
|
||||||
if self._push_to_progress(context):
|
self.progress_view.event_finish(context.id)
|
||||||
self.progress_view.event_finish(context)
|
|
||||||
if context.get('is-install-context'):
|
|
||||||
self.progress_view.event_finish(context)
|
|
||||||
|
|
||||||
def tpath(self, *path):
|
def tpath(self, *path):
|
||||||
return os.path.join(self.model.target, *path)
|
return os.path.join(self.model.target, *path)
|
||||||
|
|
|
@ -51,7 +51,7 @@ class ProgressView(BaseView):
|
||||||
|
|
||||||
def __init__(self, controller):
|
def __init__(self, controller):
|
||||||
self.controller = controller
|
self.controller = controller
|
||||||
self.ongoing = {} # context -> line containing a spinner
|
self.ongoing = {} # context_id -> line containing a spinner
|
||||||
|
|
||||||
self.reboot_btn = Toggleable(ok_btn(
|
self.reboot_btn = Toggleable(ok_btn(
|
||||||
_("Reboot Now"), on_press=self.reboot))
|
_("Reboot Now"), on_press=self.reboot))
|
||||||
|
@ -93,23 +93,19 @@ class ProgressView(BaseView):
|
||||||
lb.set_focus(len(walker) - 1)
|
lb.set_focus(len(walker) - 1)
|
||||||
lb.set_focus_valign('bottom')
|
lb.set_focus_valign('bottom')
|
||||||
|
|
||||||
def event_start(self, context, message):
|
def event_start(self, context_id, message):
|
||||||
self.event_finish(context.parent)
|
|
||||||
walker = self.event_listbox.base_widget.body
|
walker = self.event_listbox.base_widget.body
|
||||||
indent = context.full_name().count('/') - 2
|
|
||||||
if context.get('is-install-context'):
|
|
||||||
indent -= 1
|
|
||||||
spinner = Spinner(self.controller.app.aio_loop)
|
spinner = Spinner(self.controller.app.aio_loop)
|
||||||
spinner.start()
|
spinner.start()
|
||||||
new_line = Columns([
|
new_line = Columns([
|
||||||
('pack', Text(' ' * indent + message)),
|
('pack', Text(message)),
|
||||||
('pack', spinner),
|
('pack', spinner),
|
||||||
], dividechars=1)
|
], dividechars=1)
|
||||||
self.ongoing[context] = len(walker)
|
self.ongoing[context_id] = len(walker)
|
||||||
self._add_line(self.event_listbox, new_line)
|
self._add_line(self.event_listbox, new_line)
|
||||||
|
|
||||||
def event_finish(self, context):
|
def event_finish(self, context_id):
|
||||||
index = self.ongoing.pop(context, None)
|
index = self.ongoing.pop(context_id, None)
|
||||||
if index is None:
|
if index is None:
|
||||||
return
|
return
|
||||||
walker = self.event_listbox.base_widget.body
|
walker = self.event_listbox.base_widget.body
|
||||||
|
@ -118,8 +114,8 @@ class ProgressView(BaseView):
|
||||||
walker[index] = walker[index][0]
|
walker[index] = walker[index][0]
|
||||||
|
|
||||||
def finish_all(self):
|
def finish_all(self):
|
||||||
for context in self.ongoing.copy():
|
for context_id in list(self.ongoing):
|
||||||
self.event_finish(context)
|
self.event_finish(context_id)
|
||||||
|
|
||||||
def add_log_line(self, text):
|
def add_log_line(self, text):
|
||||||
self._add_line(self.log_listbox, Text(text))
|
self._add_line(self.log_listbox, Text(text))
|
||||||
|
|
|
@ -25,6 +25,9 @@ class Status(enum.Enum):
|
||||||
WARN = enum.auto()
|
WARN = enum.auto()
|
||||||
|
|
||||||
|
|
||||||
|
context_id = 0
|
||||||
|
|
||||||
|
|
||||||
class Context:
|
class Context:
|
||||||
"""Class to report when things start and finish.
|
"""Class to report when things start and finish.
|
||||||
|
|
||||||
|
@ -48,6 +51,9 @@ class Context:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, app, name, description, parent, level, childlevel=None):
|
def __init__(self, app, name, description, parent, level, childlevel=None):
|
||||||
|
global context_id
|
||||||
|
self.id = context_id
|
||||||
|
context_id += 1
|
||||||
self.app = app
|
self.app = app
|
||||||
self.name = name
|
self.name = name
|
||||||
self.description = description
|
self.description = description
|
||||||
|
|
Loading…
Reference in New Issue