X-Git-Url: http://git.tuebingen.mpg.de/?p=gsu.git;a=blobdiff_plain;f=gui;h=42975647e6900bb67c900c8108cc9925e4022739;hp=6003a90ab18a11c51bf4ae4c0a98fa4e74c2bb38;hb=6d2ca9b4375fb6103a49b64f9b4feee72dd44843;hpb=021cb6acbe9be83506f27e9eff3cd434e6daf149 diff --git a/gui b/gui index 6003a90..4297564 100644 --- a/gui +++ b/gui @@ -1,8 +1,10 @@ #!/bin/bash +# Copyright (C) 2006 Andre Noll +# Licensed under the LGPL, version 3. See COPYING and COPYING.LESSER. if [[ "$(type -t _gsu_setup)" != "function" ]]; then gsu_dir=${gsu_dir:-${BASH_SOURCE[0]%/*}} - . $gsu_dir/common || exit 1 + . "$gsu_dir/common" || exit 1 _gsu_setup fi @@ -18,7 +20,7 @@ _get_geometry() fi x="${result#* }" y="${result%% *}" - (($x > 190)) && x=190 + ((x > 190)) && x=190 result="$y $x" } @@ -78,15 +80,14 @@ gsu_textbox() # This is like gsu_textbox() but the text is passed as a string. gsu_msgbox() { + local tmp + # 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 - ret=-$E_GSU_MKTEMP - result='temp file for textbox' - return - fi + gsu_make_tempfile 'gsu_msgbox.XXXXXXXXXX' + ((ret < 0)) && return + tmp="$result" + trap "rm -f $tmp" EXIT echo "$1" > "$tmp" gsu_textbox "$tmp" rm -f "$tmp" # ignore errors @@ -96,7 +97,7 @@ _gsu_menu() { local header="${1:-root}" local items="$2" - local i state opts num=0 + local i opts num=0 _get_geometry opts="$result 16" @@ -131,7 +132,7 @@ _get_subtree() #echo "line: $line_num, root: $root, indent level: $level" result="$(sed -e "1,${line_num}d;" <<< "$tree" \ | sed -e "/^$TAB\{1,$level\}$_gsu_node_name_pattern/,\$d" \ - | sed -e "/^$TAB\{$(($level + 2))\}/d")" + | sed -e "/^$TAB\{$((level + 2))\}/d")" if (($? != 0)); then ret=-$E_GSU_MENU_TREE result="sed command for subtree $root failed" @@ -160,15 +161,15 @@ _browse() while :; do _gsu_menu "$header" "$subtree" - (($ret < 0)) && return + ((ret < 0)) && return [[ -z "$result" ]] && return # menu was cancelled if [[ "${result%/}" != "$result" ]]; then old_header="$header" header="$result" _get_subtree "$tree" "$header" - (($ret < 0)) && return + ((ret < 0)) && return _browse "$header" "$tree" "$result" - (($ret < 0)) && return + ((ret < 0)) && return header="$old_header" continue fi