gameservergame-servergame-servershacktoberfestdedicated-game-serversgamelinuxgsmserverbashgaminglinuxmultiplayer-game-servershell
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.2 KiB
89 lines
2.2 KiB
#!/bin/bash
|
|
# LGSM fn_messages function
|
|
# Author: Jared Ballou
|
|
# Website: http://gameservermanagers.com
|
|
|
|
# Description: Display menus and return selection
|
|
|
|
# Display simple Bash menu
|
|
fn_menu_bash() {
|
|
local resultvar=$1
|
|
title=$2
|
|
caption=$3
|
|
options=$4
|
|
fn_print_horizontal
|
|
fn_print_center $title
|
|
fn_print_center $caption
|
|
fn_print_horizontal
|
|
menu_options=()
|
|
while IFS='' read -r line || [[ -n "$line" ]]; do
|
|
menu_options+=( "${line}" )
|
|
done < $options
|
|
menu_options+=( "Cancel" )
|
|
select option in "${menu_options[@]}"; do
|
|
if [ -n "${option}" ] && [ "${option}" != "Cancel" ]; then
|
|
eval "$resultvar=\"${option/%\ */}\""
|
|
fi
|
|
break
|
|
done
|
|
}
|
|
|
|
# Draw menu using Whiptail
|
|
fn_menu_whiptail() {
|
|
local menucmd=$1
|
|
local resultvar=$2
|
|
title=$3
|
|
caption=$4
|
|
options=$5
|
|
height=${6:-40}
|
|
width=${7:-80}
|
|
menuheight=${8:-30}
|
|
#whiptail --title "<menu title>" --menu "<text to show>" <height> <width> <menu height> [ <tag> <item> ] . . .
|
|
menu_options=()
|
|
while read -r key val; do
|
|
menu_options+=( ${key//\"} "${val//\"}" )
|
|
done < $options
|
|
OPTION=$($menucmd --title "${title}" --menu "${caption}" $height $width $menuheight "${menu_options[@]}" 3>&1 1>&2 2>&3)
|
|
if [ $? = 0 ]; then
|
|
eval "$resultvar=\"${OPTION}\""
|
|
else
|
|
eval "$resultvar="
|
|
fi
|
|
}
|
|
|
|
# Show menu and receive input. We try to see if whiptail/dialog is available
|
|
# for a pretty ncurses menu. If not, use Bash builtins.
|
|
fn_menu() {
|
|
local resultvar=$1
|
|
local selection=""
|
|
title=$2
|
|
caption=$3
|
|
options=$4
|
|
# If this is a list of options as a string, dump it to a file so we can process it
|
|
if [ ! -e "${options}" ]; then
|
|
echo -ne "${options}\n" > "${cachedir}/menu.options"
|
|
options="${cachedir}/menu.options"
|
|
fi
|
|
|
|
# Get menu command
|
|
for menucmd in whiptail dialog bash; do
|
|
if [ -x $(which $menucmd) ]; then
|
|
menucmd=$(which $menucmd)
|
|
break
|
|
fi
|
|
done
|
|
case "$(basename $menucmd)" in
|
|
whiptail|dialog)
|
|
fn_menu_whiptail "${menucmd}" selection "${title}" "${caption}" "${options}" 40 80 30
|
|
;;
|
|
*)
|
|
fn_menu_bash selection "${title}" "${caption}" "${options}"
|
|
;;
|
|
esac
|
|
eval "$resultvar=\"${selection}\""
|
|
}
|
|
|
|
# Example usage:
|
|
# This will display a menu of available games to install
|
|
#fn_menu result "Linux Game Server Manager" "Select game to install" "../gamedata/__game_list"
|
|
#echo "result is ${result}"
|
|
|