From 180fc3f5ac6952725e3be153f3f6b2dcc6f2ea3a Mon Sep 17 00:00:00 2001 From: Dieter Plaetinck Date: Sun, 12 Dec 2010 18:11:39 +0100 Subject: clean up disk selection dialogs instead of first showing a nice overview with disk sizes, and then making the user select a disk from a dry list, we now do both at once --- src/core/libs/lib-ui-interactive.sh | 24 ++++++++++-------------- src/core/libs/lib-ui.sh | 14 +++++++------- 2 files changed, 17 insertions(+), 21 deletions(-) (limited to 'src/core') diff --git a/src/core/libs/lib-ui-interactive.sh b/src/core/libs/lib-ui-interactive.sh index eae4029..6f79b33 100644 --- a/src/core/libs/lib-ui-interactive.sh +++ b/src/core/libs/lib-ui-interactive.sh @@ -247,20 +247,17 @@ interactive_prepare_disks () interactive_autoprepare() { - DISCS=$(finddisks) - if [ $(echo $DISCS | wc -w) -gt 1 ] + listblockfriendly + if [ $(echo $BLOCKFRIENDLY | wc -w) -gt 1 ] then - notify "Available Disks:\n\n$(_getavaildisks)\n" - ask_option no 'Harddrive selection' "Select the hard drive to use" required $(finddisks 1 _) || return 1 + ask_option no 'Harddrive selection' "Select the hard drive to use" required $BLOCKFRIENDLY || return 1 DISC=$ANSWER_OPTION - elif [ -z "$DISCS" ]; then - ask_string "Could not find disk. Please enter path of devicefile manually" "" || return 1 - DISC=$ANSWER_STRING + elif [ -z "$BLOCKFRIENDLY" ]; then + ask_string "Could not find disk. Please enter path of devicefile manually" "" || return 1 + DISC=${ANSWER_STRING// /} # TODO : some checks if $DISC is really a blockdevice is probably a good idea else - DISC=$DISCS + DISC=$(echo $BLOCKFRIENDLY | cut -d ' ' -f 1) fi - # TODO : some checks if $DISC is really a blockdevice is probably a good idea - DISC=${DISC// /} # strip all whitespace. we need this for some reason.TODO: find out why get_blockdevice_size $DISC MiB FSOPTS=() @@ -334,10 +331,9 @@ interactive_partition() { fi # Select disk to partition - DISCS=$(finddisks 1 _) - DISCS="$DISCS OTHER - DONE +" - notify "Available Disks:\n\n$(_getavaildisks)\n" - DISC="" + listblockfriendly + DISCS="$BLOCKFRIENDLY OTHER OTHER DONE DONE" + DISC= while true; do # Prompt the user with a list of known disks ask_option no 'Disc selection' "$question_text (select DONE when finished)" required $DISCS || return 1 diff --git a/src/core/libs/lib-ui.sh b/src/core/libs/lib-ui.sh index 8b886fe..f31031a 100644 --- a/src/core/libs/lib-ui.sh +++ b/src/core/libs/lib-ui.sh @@ -37,17 +37,17 @@ printk() } -# TODO: pass disks as argument to decouple backend logic -# Get a list of available disks for use in the "Available disks" dialogs. -# Something like: -# /dev/sda: 640133 MiB (640 GiB) -# /dev/sdb: 640135 MiB (640 GiB) -_getavaildisks() +# Get a list of available partionable blockdevices for use in ask_option +# populates $BLOCKFRIENDLY with entries like: +# /dev/sda /dev/sda_640133_MiB_(640_GiB) +listblockfriendly() { + BLOCKFRIENDLY= for i in $(finddisks) do get_blockdevice_size $i MiB - echo "$i: $BLOCKDEVICE_SIZE MiB ($(($BLOCKDEVICE_SIZE/2**10)) GiB)\n" + [ -n "$BLOCKFRIENDLY" ] && BLOCKFRIENDLY="$BLOCKFRIENDLY " + BLOCKFRIENDLY="$BLOCKFRIENDLY$i ${i}_${BLOCKDEVICE_SIZE}_MiB_($(($BLOCKDEVICE_SIZE/2**10))_GiB)" done } -- cgit v1.2.3-54-g00ecf