add a helper to pad a pile of buttons just enough
This commit is contained in:
parent
fad28977af
commit
f000fc24eb
|
@ -15,12 +15,16 @@
|
||||||
|
|
||||||
""" UI utilities """
|
""" UI utilities """
|
||||||
|
|
||||||
|
from functools import partialmethod
|
||||||
|
|
||||||
|
from subiquitycore.ui.container import Pile
|
||||||
|
|
||||||
from urwid import (
|
from urwid import (
|
||||||
AttrMap,
|
AttrMap,
|
||||||
|
Button,
|
||||||
Padding as _Padding,
|
Padding as _Padding,
|
||||||
Text,
|
Text,
|
||||||
)
|
)
|
||||||
from functools import partialmethod
|
|
||||||
|
|
||||||
|
|
||||||
def apply_padders(cls):
|
def apply_padders(cls):
|
||||||
|
@ -187,3 +191,14 @@ class Color:
|
||||||
|
|
||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def button_pile(buttons):
|
||||||
|
max_label = 10
|
||||||
|
for button in buttons:
|
||||||
|
button = button.base_widget
|
||||||
|
if not isinstance(button, Button):
|
||||||
|
raise RuntimeError("button_pile takes a list of buttons, not %s", button)
|
||||||
|
max_label = max(len(button.label), max_label)
|
||||||
|
width = max_label + 4
|
||||||
|
return _Padding(Pile(buttons), min_width=width, width=width, align='center')
|
||||||
|
|
|
@ -31,7 +31,7 @@ from urwid import (
|
||||||
|
|
||||||
from subiquitycore.ui.buttons import back_btn, cancel_btn, done_btn, menu_btn
|
from subiquitycore.ui.buttons import back_btn, cancel_btn, done_btn, menu_btn
|
||||||
from subiquitycore.ui.container import Columns, ListBox, Pile
|
from subiquitycore.ui.container import Columns, ListBox, Pile
|
||||||
from subiquitycore.ui.utils import Padding, Color
|
from subiquitycore.ui.utils import button_pile, Color, Padding
|
||||||
from subiquitycore.view import BaseView
|
from subiquitycore.view import BaseView
|
||||||
|
|
||||||
|
|
||||||
|
@ -122,7 +122,7 @@ class NetworkView(BaseView):
|
||||||
self.lb = ListBox(self.body)
|
self.lb = ListBox(self.body)
|
||||||
self.footer = Pile([
|
self.footer = Pile([
|
||||||
Text(""),
|
Text(""),
|
||||||
Padding.fixed_10(self._build_buttons()),
|
self._build_buttons(),
|
||||||
Text(""),
|
Text(""),
|
||||||
])
|
])
|
||||||
self.frame = Pile([
|
self.frame = Pile([
|
||||||
|
@ -134,10 +134,12 @@ class NetworkView(BaseView):
|
||||||
def _build_buttons(self):
|
def _build_buttons(self):
|
||||||
back = back_btn(on_press=self.cancel)
|
back = back_btn(on_press=self.cancel)
|
||||||
done = done_btn(on_press=self.done)
|
done = done_btn(on_press=self.done)
|
||||||
self.default_focus = done
|
|
||||||
|
|
||||||
buttons = [done, back]
|
buttons = button_pile([done, back])
|
||||||
return Pile(buttons, focus_item=done)
|
|
||||||
|
buttons.base_widget.focus_position = 0
|
||||||
|
|
||||||
|
return buttons
|
||||||
|
|
||||||
def _build_model_inputs(self):
|
def _build_model_inputs(self):
|
||||||
netdevs = self.model.get_all_netdevs()
|
netdevs = self.model.get_all_netdevs()
|
||||||
|
|
Loading…
Reference in New Issue