create a helper to create a common screen layout
This commit is contained in:
parent
0fc83c4bc1
commit
a723d25a4c
|
@ -24,15 +24,13 @@ import logging
|
|||
from urwid import connect_signal, Text, WidgetDisable
|
||||
|
||||
from subiquitycore.ui.buttons import delete_btn
|
||||
from subiquitycore.ui.container import ListBox, Pile
|
||||
from subiquitycore.ui.form import (
|
||||
Form,
|
||||
FormField,
|
||||
IntegerField,
|
||||
)
|
||||
from subiquitycore.ui.interactive import StringEditor
|
||||
from subiquitycore.ui.selector import Option, Selector
|
||||
from subiquitycore.ui.utils import Color, Padding, button_pile
|
||||
from subiquitycore.ui.utils import Color, button_pile, screen
|
||||
from subiquitycore.view import BaseView
|
||||
|
||||
from subiquity.models.filesystem import (
|
||||
|
@ -136,7 +134,7 @@ class PartitionFormatView(BaseView):
|
|||
|
||||
form_cls = PartitionForm
|
||||
|
||||
def __init__(self, size, existing, initial, back):
|
||||
def __init__(self, size, existing, initial, back, focus_buttons=False):
|
||||
|
||||
mountpoint_to_devpath_mapping = self.model.get_mountpoint_to_devpath_mapping()
|
||||
if existing is not None:
|
||||
|
@ -157,14 +155,7 @@ class PartitionFormatView(BaseView):
|
|||
connect_signal(self.form, 'submit', self.done)
|
||||
connect_signal(self.form, 'cancel', self.cancel)
|
||||
|
||||
partition_box = Padding.center_79(ListBox(self.make_body()))
|
||||
super().__init__(Pile([
|
||||
('pack', Text("")),
|
||||
partition_box,
|
||||
('pack', Text("")),
|
||||
('pack', self.form.buttons),
|
||||
('pack', Text("")),
|
||||
]))
|
||||
super().__init__(screen(self.make_body(), self.form.buttons, focus_buttons=focus_buttons))
|
||||
|
||||
def make_body(self):
|
||||
return self.form.as_rows(self)
|
||||
|
@ -207,7 +198,7 @@ class PartitionView(PartitionFormatView):
|
|||
initial['mount'] = None
|
||||
else:
|
||||
label = _("Save")
|
||||
super().__init__(max_size, partition, initial, lambda : self.controller.partition_disk(disk))
|
||||
super().__init__(max_size, partition, initial, lambda : self.controller.partition_disk(disk), focus_buttons=label is None)
|
||||
if label is not None:
|
||||
self.form.buttons.base_widget[0].set_label(label)
|
||||
else:
|
||||
|
@ -224,7 +215,6 @@ class PartitionView(PartitionFormatView):
|
|||
self.form.mount.enabled = False
|
||||
self.form.fstype.enabled = False
|
||||
self.form.size.enabled = False
|
||||
self._w.focus_position = 2
|
||||
|
||||
def make_body(self):
|
||||
body = super().make_body()
|
||||
|
|
|
@ -18,8 +18,6 @@ import re
|
|||
|
||||
from urwid import (
|
||||
connect_signal,
|
||||
Text,
|
||||
WidgetWrap,
|
||||
)
|
||||
|
||||
from subiquitycore.ui.interactive import (
|
||||
|
@ -28,7 +26,6 @@ from subiquitycore.ui.interactive import (
|
|||
)
|
||||
from subiquitycore.ui.container import (
|
||||
ListBox,
|
||||
Pile,
|
||||
)
|
||||
from subiquitycore.ui.form import (
|
||||
ChoiceField,
|
||||
|
@ -36,8 +33,7 @@ from subiquitycore.ui.form import (
|
|||
simple_field,
|
||||
WantsToKnowFormField,
|
||||
)
|
||||
from subiquitycore.ui.selector import Selector
|
||||
from subiquitycore.ui.utils import button_pile, Padding
|
||||
from subiquitycore.ui.utils import button_pile, screen
|
||||
from subiquitycore.view import BaseView
|
||||
|
||||
|
||||
|
@ -161,18 +157,12 @@ class IdentityView(BaseView):
|
|||
|
||||
self.ssh_import_confirmed = True
|
||||
|
||||
self.form_rows = ListBox(self.form.as_rows(self))
|
||||
|
||||
body = Pile([
|
||||
('pack', Text("")),
|
||||
Padding.center_90(self.form_rows),
|
||||
#('pack', Pile([
|
||||
('pack', Text("")),
|
||||
('pack', button_pile([self.form.done_btn])),
|
||||
('pack', Text("")),
|
||||
])
|
||||
#])
|
||||
super().__init__(body)
|
||||
super().__init__(
|
||||
screen(
|
||||
self.form.as_rows(self),
|
||||
button_pile([self.form.done_btn]),
|
||||
focus_buttons=False))
|
||||
self.form_rows = self._w[1]
|
||||
|
||||
def _check_password(self, sender, new_text):
|
||||
password = self.form.password.value
|
||||
|
|
|
@ -24,7 +24,7 @@ from urwid import connect_signal, Text
|
|||
|
||||
from subiquitycore.ui.buttons import back_btn, forward_btn
|
||||
from subiquitycore.ui.interactive import StringEditor
|
||||
from subiquitycore.ui.utils import Padding, button_pile
|
||||
from subiquitycore.ui.utils import Padding, button_pile, screen
|
||||
from subiquitycore.ui.container import ListBox, Pile
|
||||
from subiquitycore.view import BaseView
|
||||
from subiquity.ui.views.identity import UsernameField, PasswordField, USERNAME_MAXLEN
|
||||
|
@ -138,14 +138,7 @@ class MAASView(BaseView):
|
|||
connect_signal(self.form, 'submit', self.done)
|
||||
connect_signal(self.form, 'cancel', self.cancel)
|
||||
|
||||
body = Pile([
|
||||
('pack', Text("")),
|
||||
Padding.center_90(ListBox(self.form.as_rows(self))),
|
||||
('pack', Text("")),
|
||||
('pack', self.form.buttons),
|
||||
('pack', Text("")),
|
||||
], focus_item=3)
|
||||
super().__init__(body)
|
||||
super().__init__(screen(self.form.as_rows(self), self.form.buttons, focus_buttons=False))
|
||||
|
||||
def done(self, result):
|
||||
log.debug("User input: {}".format(result.as_data()))
|
||||
|
|
|
@ -39,7 +39,7 @@ from subiquitycore.ui.form import (
|
|||
Form,
|
||||
)
|
||||
from subiquitycore.ui.selector import Selector, Option
|
||||
from subiquitycore.ui.utils import button_pile, Color, Padding
|
||||
from subiquitycore.ui.utils import button_pile, Color, Padding, screen
|
||||
from subiquitycore.view import BaseView
|
||||
|
||||
from subiquity.models.keyboard import KeyboardSetting
|
||||
|
@ -386,16 +386,7 @@ class KeyboardView(BaseView):
|
|||
button_pile([
|
||||
other_btn(label=_("Identify keyboard"), on_press=self.detect)]),
|
||||
])
|
||||
lb = ListBox(lb_contents)
|
||||
pile = Pile([
|
||||
('pack', Text("")),
|
||||
Padding.center_90(lb),
|
||||
('pack', Text("")),
|
||||
('pack', self.form.buttons),
|
||||
('pack', Text("")),
|
||||
])
|
||||
pile.focus_position = 3
|
||||
super().__init__(pile)
|
||||
super().__init__(screen(lb_contents, self.form.buttons))
|
||||
|
||||
def detect(self, sender):
|
||||
detector = Detector(self)
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
from functools import partialmethod
|
||||
|
||||
from subiquitycore.ui.container import Pile
|
||||
from subiquitycore.ui.container import ListBox, Pile
|
||||
|
||||
from urwid import (
|
||||
AttrMap,
|
||||
|
@ -202,3 +202,28 @@ def button_pile(buttons):
|
|||
max_label = max(len(button.label), max_label)
|
||||
width = max_label + 4
|
||||
return _Padding(Pile(buttons), min_width=width, width=width, align='center')
|
||||
|
||||
def screen(rows, buttons, focus_buttons=True):
|
||||
"""Helper to create a common screen layout.
|
||||
|
||||
The commonest screen layout in subiquity is:
|
||||
|
||||
[ 1 line padding ]
|
||||
Listbox()
|
||||
[ 1 line padding ]
|
||||
a button_pile
|
||||
[ 1 line padding ]
|
||||
|
||||
This helper makes creating this a 1-liner.
|
||||
"""
|
||||
screen = Pile([
|
||||
('pack', Text("")),
|
||||
Padding.center_79(ListBox(rows)),
|
||||
('pack', Text("")),
|
||||
('pack', buttons),
|
||||
('pack', Text("")),
|
||||
])
|
||||
if focus_buttons:
|
||||
screen.focus_position = 3
|
||||
return screen
|
||||
|
||||
|
|
|
@ -20,8 +20,7 @@ from urwid import connect_signal, Text
|
|||
|
||||
from subiquitycore.view import BaseView
|
||||
from subiquitycore.ui.buttons import menu_btn
|
||||
from subiquitycore.ui.container import ListBox, Pile
|
||||
from subiquitycore.ui.utils import Padding
|
||||
from subiquitycore.ui.utils import screen
|
||||
from subiquitycore.ui.interactive import RestrictedEditor, StringEditor
|
||||
from subiquitycore.ui.form import Form, FormField, StringField
|
||||
|
||||
|
@ -133,17 +132,8 @@ class BaseNetworkConfigureManualView(BaseView):
|
|||
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 = Pile([
|
||||
('pack', Text("")),
|
||||
Padding.center_79(ListBox(self.form.as_rows(self))),
|
||||
#Padding.line_break(""),
|
||||
#Padding.center_79(self.set_as_default_gw_button),
|
||||
('pack', Text("")),
|
||||
('pack', self.form.buttons),
|
||||
('pack', Text("")),
|
||||
])
|
||||
super().__init__(body)
|
||||
|
||||
super().__init__(screen(self.form.as_rows(self), self.form.buttons, focus_buttons=False))
|
||||
|
||||
def refresh_model_inputs(self):
|
||||
try:
|
||||
|
|
Loading…
Reference in New Issue