Commit 07590a80 authored by rg's avatar rg

Ajout de l'option d'alignement -a

parent 316ab164
......@@ -5,4 +5,5 @@ Permet de créer un menu de navigation par touche fléchées.
Options:
-ro : retourne l'offset de la selection en partant de 1, plutot que le libellé de la selection
-s<offset>: préselectionne un élément. Par défaut 1. Pour ne rien préselectionner, entrer -s0
-a<nb colonnes> : Aligne la sélection sur une colonne de n caractères. Par défaut, s'aligne sur la taille du plus grand élément
selectmenu() {
local POS=0;
local RET=0;
local MAX_LEN=0;
local ALIGN=-1;
for var in $@; do
if [[ "$var" =~ ^-s([0-9]+)$ ]]; then POS=$[${BASH_REMATCH[1]}-1]; shift; fi
if [[ "$var" =~ ^-ro$ ]]; then RET=1; shift; fi
if [[ "$var" =~ ^-a([0-9]+)$ ]]; then ALIGN=$[${BASH_REMATCH[1]}]; shift; fi
if [[ "$var" =~ ^[^-].*$ ]]; then [[ ${#var} -ge $MAX_LEN ]] && MAX_LEN=${#var}; fi
done
local NB_ITEMS=$#;
[[ $ALIGN -lt 0 ]] && ALIGN=$MAX_LEN;
while true;
do
......@@ -14,7 +19,7 @@ selectmenu() {
do
local STYLE="\x1b[0m";
if [ $((i++)) -eq $POS ]; then STYLE="\e[7m"; fi
echo -en "$STYLE${item}\x1b[0m\n";
printf "$STYLE%-${ALIGN}s\x1b[0m\n" $item;
done
read -rsn1 key;
case "$key" in
......@@ -30,6 +35,6 @@ selectmenu() {
esac
echo -e "\033["$[$NB_ITEMS+1]"A";
done
[[ $RET -eq 0 ]] && echo ${!POS} || echo $POS;
REPLY=`[[ $RET -eq 0 ]] && echo ${!POS} || echo $POS`;
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment