From ada5cf8e928535f0f80ae896a717789bb40240d5 Mon Sep 17 00:00:00 2001 From: Simon <oehrl@vr.rwth-aachen.de> Date: Wed, 15 Jan 2020 16:41:23 +0100 Subject: [PATCH] Improve main menu --- setup.sh | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/setup.sh b/setup.sh index 62ce28dd..40c802b5 100644 --- a/setup.sh +++ b/setup.sh @@ -41,7 +41,7 @@ function initial_setup() { git checkout master git push -u origin master git checkout develop - # fi + fi echo "Done!" echo "Press [enter] to select plugins." read x @@ -251,8 +251,9 @@ function manage_plugins() { function show_main_menu() { selection=0 exit=false + quit=false - while [ $exit = false ] + while [ "$exit" == false ] do clear @@ -281,27 +282,33 @@ function show_main_menu() { echo "" echo "[Arrow Up/Down] Change Selection" echo "[Enter] Select" + echo "[Esc] Quit" IFS='' escape_char=$(printf "\u1b") + escape=false read -rsn1 mode # get 1 character if [[ $mode == $escape_char ]]; then - read -rsn2 mode # read 2 more chars + escape=true + read -rsn2 -t 0.1 mode # read 2 more chars fi case $mode in - "") exit=true ;; + "") if [ "$escape" = true ]; then quit=true; fi; exit=true ;; "[A") if [ "$selection" -gt "0" ]; then let selection-=1; fi ;; - "[B") if [ "$selection" -lt "3" ]; then let selection+=1; fi ;; - *) >&2;; + "[B") if [ "$selection" -lt "2" ]; then let selection+=1; fi ;; + *) >&2 ;; esac done - case $selection in - 0) initial_setup; show_main_menu ;; - 1) manage_plugins; show_main_menu ;; - 2) ;; - *) >&2;; - esac + if [ "$escape" == false ] + then + case $selection in + 0) initial_setup; show_main_menu ;; + 1) manage_plugins; show_main_menu ;; + 2) ;; + *) >&2;; + esac + fi } show_main_menu \ No newline at end of file -- GitLab