X-Git-Url: http://git.tuebingen.mpg.de/?p=gsu.git;a=blobdiff_plain;f=gui;h=336d1547ad6366af9dd3cb481cd0a29b87d08167;hp=eb9f29f37c9e1d7aef03c96f08b4838285931f1a;hb=4e70cf69ed41bbf2cf1983cdae4ea3f6d2f1c684;hpb=f31cc416b1acdbb8f5703b208d943ce500a5b840 diff --git a/gui b/gui index eb9f29f..336d154 100644 --- a/gui +++ b/gui @@ -1,11 +1,12 @@ #!/bin/bash -if [[ $(type -t gsu_is_a_number) != "function" ]]; then - GSU_DIR=${GSU_DIR:=${HOME:-}/.gsu} - . $GSU_DIR/common || exit 1 +if [[ "$(type -t _gsu_setup)" != "function" ]]; then + gsu_dir=${gsu_dir:-${BASH_SOURCE[0]%/*}} + . $gsu_dir/common || exit 1 + _gsu_setup fi -export GSU_NODE_NAME_PATTERN='[a-zA-Z_]' +_gsu_node_name_pattern='[a-zA-Z_]' _get_geometry() { @@ -21,50 +22,6 @@ _get_geometry() result="$y $x" } -gsu_infobox() -{ - _get_geometry - dialog --infobox "$1" $result -} - -gsu_checklist_all_on() -{ - local header="$1" - local items="$2" - local i state opts num=0 - - _get_geometry - ops="$result 16" - for i in $items; do - let num++ - opts+=" $i $num on" - done - result=$(dialog --checklist "$header" $opts 3>&1 1>&2 2>&3 3>&-) - ret="$?" -} - -gsu_radiolist() -{ - local header="$1" - local selected_item="$2" - local items="$3" - local i state ops num=0 - - _get_geometry - ops="$result 16" - for i in $items; do - let num++ - if [[ "$i" == "$selected_item" ]]; then - state="on" - else - state="off" - fi - ops+=" $i $num $state" - done - result=$(dialog --radiolist "$header" $ops 3>&1 1>&2 2>&3 3>&-) - ret="$?" -} - gsu_inputbox() { local g text="$1" init="$2" @@ -97,37 +54,7 @@ gsu_msgbox() rm -f "$tmp" } -gsu_cmd_output_box() -{ - local tmp="$(mktemp)" - - if (($? != 0)); then - dialog --msgbox "mktemp error" 0 0 - return - fi - $@ > "$tmp" 2>&1 - echo "exit code: $?" >> "$tmp" - gsu_textbox "$tmp" - rm -f "$tmp" -} - -gsu_yesno() -{ - local text="$1" - - _get_geometry - dialog --yesno "$text" $result - ret=$? - if (($ret == 0)); then - result="yes" - elif (($ret == 1)); then - result="no" - else - result= - fi -} - -gsu_menu() +_gsu_menu() { local header="${1:-root}" local items="$2" @@ -145,14 +72,14 @@ gsu_menu() _get_level() { - local tmp="${1%%$GSU_NODE_NAME_PATTERN*}" + local tmp="${1%%$_gsu_node_name_pattern*}" result="${#tmp}" } _get_subtree() { local tree="$1" root="${2%/}" - local TAB=' ' + local first TAB=' ' first="$(grep -n "$TAB\{1,\}$root/" <<< "$tree")" [[ -z "$first" ]] && return @@ -163,7 +90,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\{1,$level\}$_gsu_node_name_pattern/,\$d" \ | sed -e "/^$TAB\{$(($level + 2))\}/d")" ret="$level" } @@ -172,7 +99,7 @@ _get_root_nodes() { local tree="$1" TAB=' ' - result="$(grep "^${TAB}${GSU_NODE_NAME_PATTERN}" <<< "$tree")" + result="$(grep "^${TAB}${_gsu_node_name_pattern}" <<< "$tree")" } _browse() @@ -181,7 +108,7 @@ _browse() local tree="$2" subtree="$3" while :; do - gsu_menu "$header" "$subtree" + _gsu_menu "$header" "$subtree" (($ret != 0)) && return [[ -z "$result" ]] && return if [[ "${result%/}" != "$result" ]]; then @@ -200,7 +127,6 @@ gsu_gui() { local tree="$1" subtree - _gsu_setup type -t dialog &> /dev/null if (($? != 0)); then gsu_msg "dialog executable not found"