X-Git-Url: http://git.tuebingen.mpg.de/?p=gsu.git;a=blobdiff_plain;f=gui;h=6003a90ab18a11c51bf4ae4c0a98fa4e74c2bb38;hp=3c89567cceae816d58cd9bd438ce0fe2d8cf2410;hb=021cb6acbe9be83506f27e9eff3cd434e6daf149;hpb=2925cf7299f958ed6c52ba1ba9d42a841d86c8f2 diff --git a/gui b/gui index 3c89567..6003a90 100644 --- a/gui +++ b/gui @@ -22,6 +22,27 @@ _get_geometry() result="$y $x" } +_set_dialog_ret() +{ + local ec="$1" + + case "$ec" in + 0) ret=$GSU_SUCCESS;; + 1) ret=1;; # cancelled + *) + result="dialog exit code $ec" + ret=-$E_GSU_DIALOG + esac +} + +# Open a dialog box which asks the user to input a text +# +# Usage: gsu_input_box +# +# is displayed above of the input field, which is is preset to . +# The entered text is returned in $result. On success (user pressed OK) +# the function returns zero. If the user selected Cancel, the return value is +# one. On dialog errors, a negative error code is returned. gsu_inputbox() { local g text="$1" init="$2" @@ -29,14 +50,14 @@ gsu_inputbox() _get_geometry g="$result" result="$(dialog --inputbox "$text" $g "$init" 3>&1 1>&2 2>&3 3>&-)" - if (($? != 0)); then - ret=-$E_GSU_DIALOG - result='inputbox' - return - fi - ret=$GSU_SUCCESS + _set_dialog_ret $? } +# Show the given file in a text box +# +# Usage: gsu_textbox +# +# The box has an OK button which closes the box when activated. gsu_textbox() { local g file="$1" @@ -46,13 +67,19 @@ gsu_textbox() ret=-$E_GSU_DIALOG result='textbox' - dialog --textbox "$file" $g || return - ret=$GSU_SUCCESS + dialog --textbox "$file" $g + _set_dialog_ret $? } -# dialog segfaults if message is too long. Hence we always use a temporary file +# Show a message in a text box +# +# Usage: gsu_msgbox +# +# This is like gsu_textbox() but the text is passed as a string. gsu_msgbox() { + # Some versions of dialog segfault if the text is too long. Hence we + # always use a temporary file. local tmp="$(mktemp gsu_msgbox.XXXXXXXXXX)" if (($? != 0)); then @@ -78,13 +105,7 @@ _gsu_menu() opts+=" $i $num" done result="$(dialog --menu "$gsu_banner_txt ($header)" $opts 3>&1 1>&2 2>&3 3>&-)" - case $? in - 0) ret=$GSU_SUCCESS;; - 1) ret=1;; # cancelled - *) - result="menu error $ret" - ret=-$E_GSU_DIALOG - esac + _set_dialog_ret $? } _get_level()