Christoph Heiss
ea15ca43bb
tui: read and save reboot-after-install checkbox into options
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-15 13:28:30 +02:00
Christoph Heiss
fbfd1838a6
tui: rename SetupInfo::product_cfg
-> ::config
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-15 13:10:52 +02:00
Christoph Heiss
81f9348c14
tui: add preliminary install progress dialog
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-15 12:58:41 +02:00
Christoph Heiss
82cc9fc480
tui: fix bootdisk dialog for zfs/btrfs
...
This was broken when adding the usage caveats at the top of the advanced
dialog; the wrong child views were selected.
Fixes: 7f27373
("tui: add notices for zfs/btrfs bootdisk and their caveats")
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-15 12:18:01 +02:00
Christoph Heiss
1353d6cf91
tui: implement both PartialOrd
and Ord
for KeyboardMapping
...
Otherwise, clippy (correctly) complains that you should always implement
both if you implement one.
Fixes: 86dac56
("tui: use whole keyboard mapping in select view as value")
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-15 12:09:17 +02:00
Christoph Heiss
5b9842244f
tui: apply keyboard layout immediately after selecting it
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-15 11:51:24 +02:00
Christoph Heiss
86dac562e8
tui: use whole keyboard mapping in select view as value
...
Thus all its values can easily be used later on. Involves making
`KeyboardMapping` partial-orderable, just use the human-readable name
here (as that's what displayed to the user).
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-15 11:49:55 +02:00
Christoph Heiss
cae155237b
tui: make test mode indicator into global installer state
...
This will later be needed in other parts of the installer as well.
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-15 11:47:45 +02:00
Christoph Heiss
6ab6af4cb3
tui: track previous screens so that that each is only created once
...
Until now, if the user navigated back and then forward again, the screen
would be constructed & added again to the stack. This would result in
missing values and broken "Previous" button behaviour.
Fix it by tracking their screen ids and simply switch to them as needed.
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-15 10:49:24 +02:00
Christoph Heiss
b107a892a8
tui: display proper keyboard layout name in summary
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-15 10:22:35 +02:00
Christoph Heiss
06908b6ff7
tui: implement proper keyboard layout selection
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-15 10:12:13 +02:00
Christoph Heiss
4e61d6cc83
tui: save user-selected country in options
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-15 10:04:14 +02:00
Christoph Heiss
e1a11f794b
tui: move timezone dialog into custom view
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-15 10:04:14 +02:00
Christoph Heiss
67c8d5d079
tui: rename LocaleInfo::country
-> ::countries
...
It's a map of all the countries, thus make the name plural too to match
its content.
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-15 10:04:14 +02:00
Christoph Heiss
90c0ea37be
tui: display correct logo & title depending on product info
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 12:53:58 +02:00
Christoph Heiss
d445e54aa3
tui: ignore testdir
here as well
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 12:53:58 +02:00
Christoph Heiss
a6e00ea66d
tui: rename InstallerData
-> InstallerState
...
It was kind of ambigous anyway - naming is hard.
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 12:53:58 +02:00
Christoph Heiss
4296d2004c
tui: implement initial parsing for setup & locale info
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 12:53:58 +02:00
Christoph Heiss
7f273738d7
tui: add notices for zfs/btrfs bootdisk and their caveats
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
95c490081d
tui: introduce proper type for handling FQDNs
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
74e3a21e4a
tui: remove cargo lockfile
...
We don't commit that anywhere; so remove it here as well.
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
130fb96a09
tui: add simple system cpu/memory check, similar to gui installer
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
b82fff5d48
tui: add some more field validation checks
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
b977af78c3
tui: fix target bootdisk display for zfs/btrfs
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
ce0b586528
tui: drop some unneeded type annotations
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
78eda7b55f
tui: drop now-obsolete form types
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
66baa275b4
tui: rewrite bootdisk & fstype selector to use FormView
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
d36c96af33
tui: rewrite zfs & btrfs bootdisk options dialog using FormView
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
cd6d2d240a
tui: rewrite LVM bootdisk dialog using FormView
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
617f25340b
tui: rewrite network dialog using new FormView
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
15832d1872
tui: rewrite password using new FormView
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
767843f940
tui: rewrite timezone dialog using new FormView
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
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 NumericEditView
s
...
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
Christoph Heiss
806820740f
tui: add missing Panel
import
...
Fixes: 3403ed9 ("tui: limit the maximum installer view size to something reasonable")
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
8b43c2d383
tui: limit the maximum installer view size to something reasonable
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
8f5fdd2110
tui: simplify get_eula() logic a bit
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
5886924326
tui: disable "abort installation?" dialog in debug builds
...
Lot more convienent for testing.
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
ccf3b0755d
tui: add proper ^C handler
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00
Christoph Heiss
183e2a7641
tui: add initial proof-of-concept
...
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
2023-06-14 10:39:56 +02:00