def __init__(self, model, controller, name): self.model = model self.controller = controller self.dev = self.model.get_netdev_by_name(name) self.title = _("Network interface {} WIFI configuration").format(name) self.form = WLANForm() connect_signal(self.form, 'submit', self.done) connect_signal(self.form, 'cancel', self.cancel) if self.dev.configured_ssid is not None: self.form.ssid.value = self.dev.configured_ssid if self.dev.configured_wifi_psk is not None: self.form.psk.value = self.dev.configured_wifi_psk self.ssid_row = self.form.ssid.as_row(self.form.longest_caption) self.psk_row = self.form.psk.as_row(self.form.longest_caption) self.inputs = Pile(self._build_iface_inputs()) self.error = Text("") self.body = Pile([ ('pack', Text("")), ListBox([Padding.center_79(self.inputs)]), ('pack', Pile([ ('pack', Text("")), Padding.center_79(Color.info_error(self.error)), self.form.buttons, ('pack', Text("")), ])), ]) self.orig_w = None super().__init__(self.body)
def __init__(self, model, signal, iface): self.model = model self.signal = signal self.ifname = iface self.iface = self.model.get_interface(self.ifname) self.is_gateway = False self.gateway_input = StringEditor(caption="") # FIXME: ipaddr_editor self.address_input = StringEditor(caption="") # FIXME: ipaddr_editor self.subnet_input = StringEditor(caption="") # FIXME: ipaddr_editor self.error = Text("", align='center') self.nameserver_input = \ StringEditor(caption="") # FIXME: ipaddr_editor self.searchdomains_input = \ StringEditor(caption="") # FIXME: ipaddr_editor self.set_as_default_gw_button = Pile( self._build_set_as_default_gw_button()) body = [ Padding.center_79(self._build_iface_inputs()), Padding.line_break(""), Padding.center_79(self.set_as_default_gw_button), Padding.line_break(""), Padding.center_90(Color.info_error(self.error)), Padding.line_break(""), Padding.fixed_10(self._build_buttons()) ] super().__init__(ListBox(body))
def __init__(self, model, controller, name): self.model = model self.controller = controller self.dev = self.model.get_netdev_by_name(name) self.form = WLANForm() connect_signal(self.form, 'submit', self.done) connect_signal(self.form, 'cancel', self.cancel) if self.dev.configured_ssid is not None: self.form.ssid.value = self.dev.configured_ssid if self.dev.configured_wifi_psk is not None: self.form.psk.value = self.dev.configured_wifi_psk self.ssid_row = self.form.ssid.as_row(self, self.form.longest_caption) self.psk_row = self.form.psk.as_row(self, self.form.longest_caption) self.inputs = Pile(self._build_iface_inputs()) self.error = Text("") self.body = [ Padding.center_79(self.inputs), Padding.line_break(""), Padding.center_79(Color.info_error(self.error)), Padding.line_break(""), Padding.fixed_10(Pile([self.form.done_btn, self.form.cancel_btn])), ] self.orig_w = None super().__init__(ListBox(self.body))
def __init__(self, signal): self.signal = signal self.body = [ Padding.center_79(Text("This view is not yet implemented.")), Padding.line_break(""), Padding.center_79(Color.info_minor(Text("A place holder widget"))), Padding.line_break(""), Padding.center_79(self._build_buttons()) ] super().__init__(ListBox(self.body))
def _build_default_routes(self): ''' iterate through interfaces collecting any uniq provider (aka, gateway) and associate the interface name with the gateway then generate a line per key in the gateway dict and display the keys. Upon selection of the gateway entry (ip) then we set model.set_default_gateway(ip) if manual is selected, then we update the second entry into a IPAddressEditor and accept the value, submitting it to the model. ''' providers = {} for iface in self.model.get_all_interfaces(): if self.family == netifaces.AF_INET: ip_providers = iface.ip4_providers elif self.family == netifaces.AF_INET6: ip_providers = iface.ip6_providers for provider in ip_providers: log.debug('ipv4 provider: {}'.format(provider)) gw = provider if gw in providers: providers[gw].append(iface.ifname) else: providers[gw] = [iface.ifname] log.debug('gateway providers: {}'.format(providers)) items = [] items.append( Padding.center_79( Color.menu_button(menu_btn(label="None", on_press=self.done), focus_map="menu_button focus"))) for (gw, ifaces) in providers.items(): if gw is None: continue items.append( Padding.center_79( Color.menu_button(menu_btn(label="{gw} ({ifaces})".format( gw=gw, ifaces=(",".join(ifaces))), on_press=self.done), focus_map="menu_button focus"))) items.append( Padding.center_79( Color.menu_button(menu_btn( label="Specify the default route manually", on_press=self.show_edit_default_route), focus_map="menu_button focus"))) return items
def __init__(self, title=None, excerpt=None): widgets = [Text("")] if title is not None: widgets.append( Padding.center_79(Color.body(Text(title)))) widgets.append(Text("")) if excerpt is not None: widgets.append( Padding.center_79(Color.body(Text(excerpt)))) widgets.append(Text("")) super().__init__(Pile(widgets))
def __init__(self, title=None, excerpt=None): widgets = [Text("")] if title is not None: widgets.append(Padding.center_79(Text(title))) widgets.append(Text("")) widgets = [Color.frame_header(Pile(widgets))] if excerpt is not None: widgets.extend([ Text(""), Padding.center_79(Text(excerpt)), ]) super().__init__(Pile(widgets))
def __init__(self, signal, error_message): suggestion = "Check the installer log files for details and try again" self.signal = signal self.body = [ Padding.center_79(Text(error_message)), Padding.line_break(""), Padding.center_79(Color.info_minor(Text(suggestion))), Padding.line_break(""), Padding.line_break(""), Padding.center_79(self._build_buttons()) ] super().__init__(ListBox(self.body))
def __init__(self, model, signal, selected_disk): self.model = model self.signal = signal self.selected_disk = selected_disk self.disk_obj = self.model.get_disk(self.selected_disk) self.body = [ Padding.center_79(self._build_model_inputs()), Padding.line_break(""), Padding.center_79(self._build_menu()), Padding.line_break(""), Padding.fixed_10(self._build_buttons()), ] super().__init__(ListBox(self.body))
def __init__(self, model, family, controller): self.model = model self.family = family self.controller = controller self.default_gateway_w = None self.gateway_options = Pile(self._build_default_routes()) body = [ Padding.center_79(Text("Please set the default gateway:")), Padding.line_break(""), Padding.center_79(self.gateway_options), Padding.line_break(""), Padding.fixed_10(self._build_buttons()) ] super().__init__(ListBox(body))
def __init__(self, message, current, complete): if isinstance(message, str): message_widget = Padding.center_79(Text(message)) else: message_widget = Padding.center_79(message) progress_bar = Padding.center_60( StepsProgressBar(normal='progress_incomplete', complete='progress_complete', current=current, done=complete)) status = [ progress_bar, Padding.line_break(""), message_widget, ] super().__init__(Color.frame_footer(Pile(status)))
def __init__(self, model, controller, name): self.model = model self.controller = controller self.dev = self.model.get_netdev_by_name(name) self.is_gateway = False self.form = NetworkConfigForm(self.ip_version) connect_signal(self.form, 'submit', self.done) connect_signal(self.form, 'cancel', self.cancel) self.form.subnet.help = "CIDR e.g. %s"%(self.example_address,) configured_addresses = self.dev.configured_ip_addresses_for_version(self.ip_version) if configured_addresses: addr = ipaddress.ip_interface(configured_addresses[0]) self.form.subnet.value = str(addr.network) self.form.address.value = str(addr.ip) configured_gateway = self.dev.configured_gateway_for_version(self.ip_version) if configured_gateway: self.form.gateway.value = configured_gateway self.form.nameservers.value = ', '.join(self.dev.configured_nameservers) self.form.searchdomains.value = ', '.join(self.dev.configured_searchdomains) self.error = Text("", align='center') #self.set_as_default_gw_button = Pile(self._build_set_as_default_gw_button()) body = [ Padding.center_79(self.form.as_rows(self)), #Padding.line_break(""), #Padding.center_79(self.set_as_default_gw_button), Padding.line_break(""), Padding.fixed_10(self.form.buttons) ] super().__init__(ListBox(body))
def refresh_model_inputs(self): widgets = self._build_model_inputs() + [ Padding.center_79(self.additional_options), Padding.line_break(""), ] self.listbox.body[:] = widgets self.additional_options.contents = [ (obj, ('pack', None)) for obj in self._build_additional_options() ]
def __init__(self, controller): self.controller = controller self.spinner = Spinner(controller.loop) self.event_listwalker = SimpleFocusListWalker([]) self.event_listbox = ListBox(self.event_listwalker) self.event_linebox = MyLineBox(self.event_listbox) self.event_buttons = button_pile([other_btn("View full log", on_press=self.view_log)]) event_body = [ ('pack', Text("")), ('weight', 1, Padding.center_79(self.event_linebox)), ('pack', Text("")), ('pack', self.event_buttons), ('pack', Text("")), ] self.event_pile = Pile(event_body) self.log_listwalker = SimpleFocusListWalker([]) self.log_listbox = ListBox(self.log_listwalker) log_linebox = MyLineBox(self.log_listbox, _("Full installer output")) log_body = [ ('weight', 1, log_linebox), ('pack', button_pile([other_btn(_("Close"), on_press=self.close_log)])), ] self.log_pile = Pile(log_body) super().__init__(self.event_pile)
def __init__(self, model, controller): self.model = model self.controller = controller self.items = [] self.error = Text("", align='center') self.model_inputs = Pile(self._build_model_inputs()) self.additional_options = Pile(self._build_additional_options()) self.body = [ self.model_inputs, Padding.center_79(self.additional_options), Padding.line_break(""), ] self.lb = Padding.center_90(ListBox(self.body)) self.footer = Pile([ Text(""), self._build_buttons(), Text(""), ]) self.error_showing = False self.frame = Pile([ ('pack', Text("")), self.lb, ('pack', self.footer)]) self.lb.original_widget._select_last_selectable() self.frame.focus_position = 2 super().__init__(self.frame)
def __init__(self, model, controller): self.model = model self.controller = controller self.dev_to_row = {} self.cur_netdevs = [] self.error = Text("", align='center') self.device_table = TablePile(self._build_model_inputs(), spacing=2, colspecs={ 0: ColSpec(rpad=1), 4: ColSpec(can_shrink=True, rpad=1), }) self._create_bond_btn = menu_btn(_("Create bond"), on_press=self._create_bond) bp = button_pile([self._create_bond_btn]) bp.align = 'left' self.listbox = ListBox([self.device_table] + [ bp, ]) self.bottom = Pile([ Text(""), self._build_buttons(), Text(""), ]) self.error_showing = False self.frame = Pile([('pack', Text("")), ('pack', Padding.center_79(Text(_(self.excerpt)))), ('pack', Text("")), Padding.center_90(self.listbox), ('pack', self.bottom)]) self.frame.set_focus(self.bottom) super().__init__(self.frame)
def __init__(self, parent, device): self.parent = parent self.device = device title = _("Network interface {nic} WIFI configuration").format( nic=device.name) self.form = WLANForm() connect_signal(self.form, 'submit', self.done) connect_signal(self.form, 'cancel', self.cancel) ssid, psk = self.device.configured_ssid if ssid: self.form.ssid.value = ssid if psk: self.form.psk.value = psk self.ssid_row = self.form.ssid._table self.psk_row = self.form.psk._table self.ssid_row.bind(self.psk_row) self.inputs = Pile(self._build_iface_inputs()) self.error = Text("") widgets = [ self.inputs, Padding.center_79(Color.info_error(self.error)), self.form.buttons, ] super().__init__(title, widgets, 0, 0)
def __init__(self, parent, setting): self.parent = parent self.setting = setting self.selector = Selector(toggle_options) self.selector.value = 'alt_shift_toggle' if self.parent.model.setting.toggle: try: self.selector.value = self.parent.model.setting.toggle except AttributeError: pass widgets = [ Text(_(toggle_text)), Text(""), Padding.center_79( Columns([ ('pack', Text(_("Shortcut: "))), Color.string_input(self.selector), ])), Text(""), button_pile([ ok_btn(label=_("OK"), on_press=self.ok), cancel_btn(label=_("Cancel"), on_press=self.cancel), ]), ] super().__init__(_("Select layout toggle"), widgets, stretchy_index=0, focus_index=4)
def __init__(self, controller): self.controller = controller self.spinner = Spinner(controller.loop) self.reboot_btn = Toggleable( ok_btn(_("Reboot Now"), on_press=self.reboot)) self.exit_btn = cancel_btn(_("Exit To Shell"), on_press=self.quit) self.view_log_btn = other_btn(_("View full log"), on_press=self.view_log) self.event_listbox = ListBox() self.event_linebox = MyLineBox(self.event_listbox) self.event_buttons = button_pile([self.view_log_btn]) event_body = [ ('pack', Text("")), ('weight', 1, Padding.center_79(self.event_linebox, min_width=76)), ('pack', Text("")), ('pack', self.event_buttons), ('pack', Text("")), ] self.event_pile = Pile(event_body) self.log_listbox = ListBox() log_linebox = MyLineBox(self.log_listbox, _("Full installer output")) log_body = [ ('weight', 1, log_linebox), ('pack', button_pile([other_btn(_("Close"), on_press=self.close_log)])), ] self.log_pile = Pile(log_body) super().__init__(self.event_pile)
def __init__(self, controller): self.controller = controller self.ongoing = {} # context -> line containing a spinner self.reboot_btn = Toggleable(ok_btn( _("Reboot Now"), on_press=self.reboot)) self.view_error_btn = cancel_btn( _("View error report"), on_press=self.view_error) self.view_log_btn = other_btn( _("View full log"), on_press=self.view_log) self.continue_btn = other_btn( _("Continue"), on_press=self.continue_) self.event_listbox = ListBox() self.event_linebox = MyLineBox(self.event_listbox) self.event_buttons = button_pile([self.view_log_btn]) event_body = [ ('weight', 1, Padding.center_79(self.event_linebox, min_width=76)), ('pack', Text("")), ('pack', self.event_buttons), ('pack', Text("")), ] self.event_pile = Pile(event_body) self.log_listbox = ListBox() log_linebox = MyLineBox(self.log_listbox, _("Full installer output")) log_body = [ ('weight', 1, log_linebox), ('pack', button_pile([other_btn(_("Close"), on_press=self.close_log)])), ] self.log_pile = Pile(log_body) super().__init__(self.event_pile)
def __init__(self, model, controller, opts, loop): self.model = model self.controller = controller self.opts = opts self.loop = loop self.items = [] self.email = EmailEditor() self.error = Text("", align="center") self.progress = Text("", align="center") body = [ ('pack', Text("")), ListBox([ self._build_model_inputs(), Padding.line_break(""), Padding.center_79( Color.info_minor( Text("If you do not have an account, visit " "https://login.ubuntu.com to create one."))), Padding.line_break(""), Padding.center_90(Color.info_error(self.error)), Padding.center_90(self.progress), ]), ('pack', Pile([ ('pack', Text("")), button_pile(self._build_buttons()), ('pack', Text("")), ])), ] super().__init__(Pile(body))
def _build_iface_inputs(self): if len(self.dev.actual_ssids) > 0: networks_btn = menu_btn("Choose a visible network", on_press=self.show_ssid_list) else: networks_btn = Color.info_minor( Columns([('fixed', 1, Text("")), Text("No visible networks"), ('fixed', 1, Text(">"))], dividechars=1)) if not self.dev.scan_state: scan_btn = menu_btn("Scan for networks", on_press=self.start_scan) else: scan_btn = Color.info_minor( Columns([('fixed', 1, Text("")), Text("Scanning for networks"), ('fixed', 1, Text(">"))], dividechars=1)) col = [ Padding.center_79( Color.info_minor( Text( "Only open or WPA2/PSK networks are supported at this time." ))), Padding.line_break(""), self.ssid_row, Padding.fixed_30(networks_btn), Padding.fixed_30(scan_btn), self.psk_row, ] return col
def _build_model_inputs(self): sl = Padding.center_79( Columns([ ("weight", 0.2, Text("Email address:", align="right")), ("weight", 0.3, Color.string_input(self.email)), ], dividechars=4)) return sl
def __init__(self, title): super().__init__( Color.frame_header( Pile([ Text(""), Padding.center_79(Text(title)), Text(""), ])))
def __init__(self, model, signal): self.model = model self.signal = signal self.items = [] self.error = Text("", align='center') self.body = [ Padding.center_79(self._build_model_inputs()), Padding.line_break(""), Padding.center_79(self._build_additional_options()), Padding.line_break(""), Padding.center_79(Color.info_error(self.error)), Padding.line_break(""), Padding.fixed_10(self._build_buttons()), ] # FIXME determine which UX widget should have focus self.lb = ListBox(self.body) self.lb.set_focus(4) # _build_buttons super().__init__(self.lb)
def __init__(self, model, controller, disk): self.model = model self.controller = controller self.disk = disk self.body = Pile([ ('pack', Text("")), Padding.center_79(ListBox(self._build_model_inputs() + [])), ('pack', Pile([ Text(""), ('pack', Padding.center_79(self.show_disk_info_w())), ('pack', Text("")), self._build_buttons(), ('pack', Text("")), ])), ]) super().__init__(self.body)
def __init__(self, model, signal): self.model = model self.signal = signal self.items = [] self.body = [ Padding.center_79(self._build_model_inputs()), Padding.line_break(""), Padding.fixed_10(self._build_buttons()), ] super().__init__(ListBox(self.body))
def __init__(self, model, controller, disk, hdinfo): log.debug('DiskInfoView: {}'.format(disk)) self.model = model self.controller = controller self.disk = disk hdinfo = hdinfo.split("\n") body = [] for h in hdinfo: body.append(Text(h)) body.append(self._build_buttons()) super().__init__(Padding.center_79(SimpleList(body)))
def __init__(self, model, signal, selected_device, hdinfo): log.debug('DiskInfoView: {}'.format(selected_device)) self.model = model self.signal = signal self.selected_device = selected_device hdinfo = hdinfo.split("\n") body = [] for h in hdinfo: body.append(Text(h)) body.append(Padding.fixed_10(self._build_buttons())) super().__init__(Padding.center_79(SimpleList(body)))
def __init__(self, controller): self.controller = controller self.listwalker = SimpleFocusListWalker([]) self.listbox = ListBox(self.listwalker) self.linebox = MyLineBox(self.listbox) body = [ ('pack', Text("")), ('weight', 1, Padding.center_79(self.linebox)), ('pack', Text("")), ] self.pile = Pile(body) super().__init__(self.pile)