Commit Graph

742 Commits

Author SHA1 Message Date
Christoph Heiss
26cdaacff4 tui: introduce new FormView compomenent to unify all form inputs
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
e95f4f1a2d tui: error out in network dialog if option retrieval failed
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
ef4957e89a tui: implement password dialog options retrieval and validation
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
ee1437bbfc tui: refactor and unify btrfs and zfs bootdisk options view
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
56a304d59f tui: implement btrfs bootdisk selection option
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
2a344f499d tui: format disk size as GiB for now, instead of bytes
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
2a65d9f46e tui: fix disksize-input unit
Previously, the size was displayed in MiB, although it should have been
GiB.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
7393ed8840 tui: implement zfs bootdisk selection option
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
2d6187f192 tui: implement FormInputViewGetValue for custom NumericEditViews
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
ed191e60dd tui: refactor bootdisk dialog; advanced options into separate dialog
This also reworks the whole installer state. The main type is now
`InstallerData`, which holds info about the machine (such as info about
the disks), as well as all the user options.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
36c6b9bddd tui: make FormInputViewGetValue<SelectView> fully generic
`SelectView` can hold values of other types than string.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
13c919bb2a tui: refactor some option bits
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
af0dfe0e72 tui: move bootdisk dialog into own module
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
de0e2eaa6a tui: combine all use directives into one block
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
6cff279466 tui: add rustdoc for CidrAddress type
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
a04201354d tui: add proper IPv6 support to CidrAddress
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
8807d54726 tui: add top content padding for all installer views
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
75c7c30362 tui: add README describing some debugging specifics
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
e7a529aecc tui: implement scrolling for (summary) table view
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
a7965322ec tui: unify option labels spelling/formatting in summary view
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
9d89d3ad49 tui: fix invalid starting value for integer input views
Fixes: b0a3beb ("tui: introduce separate views types for float & integer inputs")
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
fc18719600 tui: introduce CidrAddress type for ip address + mask tuples
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
b7828c87ce tui: move installer options defintions into separate module
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
e5dc9a491b tui: simplify FormInputViewGetValue impl's
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
bb95150055 tui: fix warning about unused function
yes_no_dialog() is not used in debug builds; due to it's only usage in
trigger_abort_install_dialog() being only enabled in release builds for
brevity reasons.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
5e73fcfeaf tui: simplify add_next_screen() by taking a siv directly
Suggested-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
cd383717e8 tui: implement value retrieval for network options dialog
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
56c6bac76a tui: introduce trait to retrieve input values wrapped by FormInputView
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
1065dad78c tui: introduce separate views types for float & integer inputs
This having to conditionalize everything on the `.ints_only` member,
making things a lot cleaner and easier to expand as needed.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
947fe36045 tui: add preliminary summary dialog
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
29c4d84e77 tui: add TableView component for displaying tabular data
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
17a3026765 tui: move utility views into own module directory
.. in preparation for adding additional modules.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
fbccf72c1a tui: avoid open-coding add_next_screen()
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
1397feec4f tui: fix typo in network dialog label
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
fb27f7ebb5 tui: separate CIDR input into own view
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
de97681bc6 tui: DiskSizeFormInputView: simplify using direct if let Some(..)
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
ccd34284b3 tui: add preliminary network dialog
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
93ebe7bd0d tui: display error dialog on invalid values instead of panicking
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
ba8987656c tui: fix panic in NumericEditView if the cursor is at the last position
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
468030fc87 tui: implement DiskSizeFormInputView::content() callback-free
See also commit 1a26aef, which does the same for `NumericEditView`.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
938259acb1 tui: implement NumericEditView::content() callback-free
.set_content() returns a callback which must be called in a `Cursive`
context, which for the chainable variant is never really on option.
Avoid that and do it properly.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
c2eee46862 tui: add basic email/root password dialog
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
a142f45783 tui: add simple location/timezone dialog
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
f522afb14c tui: move abort/previous/next buttons into InstallerView
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
48ce057c89 tui: add missing FS_TYPES definition
Fixes: e09b55a ("tui: add bootdisk selection screen")
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
52e6b3373c tui: introduce generic FormInputView
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
64220ff188 tui: add bootdisk selection screen
Only LVM boodisks (read: ext4 and xfs) are supported for now; zfs/btrfs
will come later.

Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
83071f3542 tui: add NumericEditView and DiskSizeInputView components
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
e9557e6210 tui: add LVM disk structures and some mocking data
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
e70f1b2fed tui: pass Cursive instance to installer view constructors
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00