change "Done" button to "Continue without network" if there is no default route

This commit is contained in:
Michael Hudson-Doyle 2019-03-25 10:32:44 +13:00
parent 680da7d299
commit ff59de4a9c
1 changed files with 24 additions and 3 deletions

View File

@ -51,6 +51,7 @@ from subiquitycore.ui.utils import (
make_action_menu_row, make_action_menu_row,
screen, screen,
) )
from subiquitycore.ui.width import widget_width
from .network_configure_manual_interface import ( from .network_configure_manual_interface import (
AddVlanStretchy, AddVlanStretchy,
BondStretchy, BondStretchy,
@ -125,14 +126,17 @@ class NetworkView(BaseView):
bp, bp,
] ]
buttons = button_pile([ self.buttons = button_pile([
done_btn(_("Done"), on_press=self.done), done_btn("TBD", on_press=self.done), # See _route_watcher
back_btn(_("Back"), on_press=self.cancel), back_btn(_("Back"), on_press=self.cancel),
]) ])
self.bottom = Pile([ self.bottom = Pile([
('pack', buttons), ('pack', self.buttons),
]) ])
self.controller.network_event_receiver.add_default_route_watcher(
self._route_watcher)
self.error_showing = False self.error_showing = False
super().__init__(screen( super().__init__(screen(
@ -163,6 +167,19 @@ class NetworkView(BaseView):
log.debug("_action %s %s", action.name, device.name) log.debug("_action %s %s", action.name, device.name)
meth(device) meth(device)
def _route_watcher(self, routes):
log.debug('view route_watcher %s', routes)
if routes:
label = _("Done")
else:
label = _("Continue without network")
self.buttons.base_widget[0].set_label(label)
self.buttons.width = max(
14,
widget_width(self.buttons.base_widget[0]),
widget_width(self.buttons.base_widget[1]),
)
def _notes_for_device(self, dev): def _notes_for_device(self, dev):
notes = [] notes = []
if dev.type == "eth" and not dev.info.is_connected: if dev.type == "eth" and not dev.info.is_connected:
@ -378,7 +395,11 @@ class NetworkView(BaseView):
def done(self, result=None): def done(self, result=None):
if self.error_showing: if self.error_showing:
self.bottom.contents[0:2] = [] self.bottom.contents[0:2] = []
self.controller.network_event_receiver.remove_default_route_watcher(
self._route_watcher)
self.controller.network_finish(self.model.render()) self.controller.network_finish(self.model.render())
def cancel(self, button=None): def cancel(self, button=None):
self.controller.network_event_receiver.remove_default_route_watcher(
self._route_watcher)
self.controller.cancel() self.controller.cancel()