SHOW:
|
|
- or go back to the newest paste.
| 1 | #!/bin/sh | |
| 2 | ||
| 3 | # The ramdisk /bin/sh uses "\c" at end of line to suppress newlines. | |
| 4 | # Oher shells use -ne and -e. So define c or the other two. | |
| 5 | c=\\c | |
| 6 | #ne=-ne; e=-e | |
| 7 | ||
| 8 | E=$(printf "\033") | |
| 9 | ESC=$(printf "\033") | |
| 10 | C_D=$(printf "\004") | |
| 11 | C_H=$(printf "\010") | |
| 12 | TAB=$(printf "\011") | |
| 13 | BS=$(printf "\177") | |
| 14 | NL=' | |
| 15 | ' | |
| 16 | ||
| 17 | # ANSI colors (darK,Red,Green,Yellow,Blue,Magenta,Cyan,White,Normal) | |
| 18 | K="${E}[1;30m"
| |
| 19 | R="${E}[1;31m"
| |
| 20 | G="${E}[1;32m"
| |
| 21 | Y="${E}[1;33m"
| |
| 22 | B="${E}[1;34m"
| |
| 23 | M="${E}[1;35m"
| |
| 24 | C="${E}[1;36m"
| |
| 25 | W="${E}[1;37m"
| |
| 26 | N="${E}[0m"
| |
| 27 | BOLD="${E}[1m"
| |
| 28 | REV="${E}[7m"
| |
| 29 | ITAL="${E}[3m"
| |
| 30 | UNDR="${E}[4m"
| |
| 31 | BLNK="${E}[5m"
| |
| 32 | ||
| 33 | WB="${E}[1;44;37m"
| |
| 34 | BW="${E}[0;47;34m"
| |
| 35 | ||
| 36 | DRAW="${E}(0"
| |
| 37 | TEXT="${E}(B"
| |
| 38 | ||
| 39 | #NICK="zippy" | |
| 40 | DSRV="irc.freenode.net" | |
| 41 | SERV=$DSRV | |
| 42 | PORT=6667 | |
| 43 | ||
| 44 | printat() | |
| 45 | {
| |
| 46 | printf "${ESC}[%d;%dH" ${1:-1} ${2:-1}
| |
| 47 | [ $# -gt 2 ] && {
| |
| 48 | shift 2 | |
| 49 | printf "%s" "$*" | |
| 50 | } | |
| 51 | } | |
| 52 | ||
| 53 | sreplace() | |
| 54 | {
| |
| 55 | S1=$(expr substr "$STR" 1 $1) | |
| 56 | [ $# -lt 2 ] && S1=$(expr substr $STR 1 $(($1 - 1))) | |
| 57 | S2=$(expr substr "$STR" $(($1 + 1)) ${#STR})
| |
| 58 | STR="${S1}${2}${S2}"
| |
| 59 | } | |
| 60 | ||
| 61 | cursor() | |
| 62 | {
| |
| 63 | case $1 in | |
| 64 | 0) printf "${ESC}[?25l" ;;
| |
| 65 | *) printf "${ESC}[?12l${ESC}[?25h" ;;
| |
| 66 | esac | |
| 67 | } | |
| 68 | ||
| 69 | bold() | |
| 70 | {
| |
| 71 | case $1 in | |
| 72 | 0) printf "${ESC}[22m" ;;
| |
| 73 | *) printf "${ESC}[1m" ;;
| |
| 74 | esac | |
| 75 | } | |
| 76 | ||
| 77 | get() ## get a single keystroke from stdin without waiting | |
| 78 | {
| |
| 79 | if [ -t 0 ] | |
| 80 | then | |
| 81 | if [ -z "$_STTY" ] | |
| 82 | then | |
| 83 | _STTY=$(stty -g) | |
| 84 | stty -echo -icanon time ${GET_TMOUT:-0} min ${GET_MIN:-0}
| |
| 85 | elif [ -n "$GET_TMOUT$GET_MIN" ] | |
| 86 | then | |
| 87 | stty -echo -icanon time ${GET_TMOUT:-0} min ${GET_MIN:-0}
| |
| 88 | fi | |
| 89 | fi | |
| 90 | # _KEY=$(dd bs=1 count=1 2>/dev/null; printf '.') | |
| 91 | _KEY=$(dd bs=1 count=1 2>/dev/null; echo '.') | |
| 92 | _KEY=${_KEY%.}
| |
| 93 | [ -n "$_KEY" ] | |
| 94 | } | |
| 95 | ||
| 96 | get_key() | |
| 97 | {
| |
| 98 | while : | |
| 99 | do | |
| 100 | GET_TMOUT=5 get && break ## Half second timeout on each loop | |
| 101 | done | |
| 102 | ||
| 103 | case $_KEY in | |
| 104 | "${ESC}")
| |
| 105 | stty -echo -icanon time 0 min 0 | |
| 106 | read _KEY | |
| 107 | if [ -z "$_KEY" ] | |
| 108 | then | |
| 109 | # _KEY='?' | |
| 110 | _KEY="${ESC}"
| |
| 111 | fi | |
| 112 | ;; | |
| 113 | esac | |
| 114 | } | |
| 115 | ||
| 116 | ||
| 117 | - | # Define GUI Widgets (StrName, FieldLength, AtLoc, EmptyStr, Type) |
| 117 | + | # Define TUI Widgets (Type, StrName, FieldLength, AtLoc, EmptyStr) |
| 118 | - | WS1="NICK"; WL1=39; WA1="${E}[2;13H"; WE1="${WA1}$(printf "%-39s")"
|
| 118 | + | WT1=s WS1="NICK"; WL1=39; WA1="${E}[2;13H"; WE1="${WA1}$(printf "%-39s")${WA1}"
|
| 119 | - | WS2="ID"; WL2=39; WA2="${E}[3;13H"; WE2="${WA2}$(printf "%-39s")"
|
| 119 | + | WT2=b WS2="ID"; WL2=39; WA2="${E}[3;13H"; WE2="${WA2}$(printf "%-39s")${WA2}"
|
| 120 | - | WS3="IPAS"; WL3=39; WA3="${E}[4;13H"; WE3="${WA3}$(printf "%-39s")"
|
| 120 | + | WT1=s WS3="IPAS"; WL3=39; WA3="${E}[4;13H"; WE3="${WA3}$(printf "%-39s")${WA3}"
|
| 121 | - | WS4="SERV"; WL4=39; WA4="${E}[6;13H"; WE4="${WA4}$(printf "%-39s")"
|
| 121 | + | WT4=s WS4="SERV"; WL4=39; WA4="${E}[6;13H"; WE4="${WA4}$(printf "%-39s")${WA4}"
|
| 122 | - | WS5="PORT"; WL5=39; WA5="${E}[7;13H"; WE5="${WA5}$(printf "%-39s")"
|
| 122 | + | WT5=i WS5="PORT"; WL5=39; WA5="${E}[7;13H"; WE5="${WA5}$(printf "%-39s")${WA5}"
|
| 123 | - | WS6="NPAS"; WL6=39; WA6="${E}[8;13H"; WE6="${WA6}$(printf "%-39s")"
|
| 123 | + | WT6=b WS6="NPAS"; WL6=39; WA6="${E}[8;13H"; WE6="${WA6}$(printf "%-39s")${WA6}"
|
| 124 | - | WS7="PASS"; WL7=39; WA7="${E}[9;13H"; WE7="${WA7}$(printf "%-39s")"
|
| 124 | + | WT7=s WS7="PASS"; WL7=39; WA7="${E}[9;13H"; WE7="${WA7}$(printf "%-39s")${WA7}"
|
| 125 | - | WS8="CH1"; WL8=24; WA8="${E}[11;3H"; WE8="${WA8}$(printf "%-24s")"
|
| 125 | + | WT8=s WS8="CH1"; WL8=24; WA8="${E}[11;3H"; WE8="${WA8}$(printf "%-24s")${WA8}"
|
| 126 | - | WS9="CH2"; WL9=24; WA9="${E}[12;3H"; WE9="${WA9}$(printf "%-24s")"
|
| 126 | + | WT9=s WS9="CH2"; WL9=24; WA9="${E}[12;3H"; WE9="${WA9}$(printf "%-24s")${WA9}"
|
| 127 | - | WS10="CH3"; WL10=24; WA10="${E}[13;3H"; WE10="${WA10}$(printf "%-24s")"
|
| 127 | + | WT10=s WS10="CH3"; WL10=24; WA10="${E}[13;3H"; WE10="${WA10}$(printf "%-24s")${WA10}"
|
| 128 | - | WS11="CH4"; WL11=24; WA11="${E}[14;3H"; WE11="${WA11}$(printf "%-24s")"
|
| 128 | + | WT11=s WS11="CH4"; WL11=24; WA11="${E}[14;3H"; WE11="${WA11}$(printf "%-24s")${WA11}"
|
| 129 | - | WS12="NK1"; WL12=3; WA12="${E}[11;32H"; WE12="${WA12}$(printf "%-3s")"
|
| 129 | + | WT12=b WS12="NK1"; WL12=3; WA12="${E}[11;32H"; WE12="${WA12}$(printf "%-3s")${WA12}"
|
| 130 | - | WS13="NK2"; WL13=3; WA13="${E}[12;32H"; WE13="${WA13}$(printf "%-3s")"
|
| 130 | + | WT13=b WS13="NK2"; WL13=3; WA13="${E}[12;32H"; WE13="${WA13}$(printf "%-3s")${WA13}"
|
| 131 | - | WS14="NK3"; WL14=3; WA14="${E}[13;32H"; WE14="${WA14}$(printf "%-3s")"
|
| 131 | + | WT14=b WS14="NK3"; WL14=3; WA14="${E}[13;32H"; WE14="${WA14}$(printf "%-3s")${WA14}"
|
| 132 | - | WS15="NK4"; WL15=3; WA15="${E}[14;32H"; WE15="${WA15}$(printf "%-3s")"
|
| 132 | + | WT15=b WS15="NK4"; WL15=3; WA15="${E}[14;32H"; WE15="${WA15}$(printf "%-3s")${WA15}"
|
| 133 | - | WS16="KEY1"; WL16=15; WA16="${E}[11;37H"; WE16="${WA16}$(printf "%-15s")"
|
| 133 | + | WT16=s WS16="KEY1"; WL16=15; WA16="${E}[11;37H"; WE16="${WA16}$(printf "%-15s")${WA16}"
|
| 134 | - | WS17="KEY2"; WL17=15; WA17="${E}[12;37H"; WE17="${WA17}$(printf "%-15s")"
|
| 134 | + | WT17=s WS17="KEY2"; WL17=15; WA17="${E}[12;37H"; WE17="${WA17}$(printf "%-15s")${WA17}"
|
| 135 | - | WS18="KEY3"; WL18=15; WA18="${E}[13;37H"; WE18="${WA18}$(printf "%-15s")"
|
| 135 | + | WT18=s WS18="KEY3"; WL18=15; WA18="${E}[13;37H"; WE18="${WA18}$(printf "%-15s")${WA18}"
|
| 136 | - | WS19="KEY4"; WL19=15; WA19="${E}[14;37H"; WE19="${WA19}$(printf "%-15s")"
|
| 136 | + | WT19=s WS19="KEY4"; WL19=15; WA19="${E}[14;37H"; WE19="${WA19}$(printf "%-15s")${WA19}"
|
| 137 | ||
| 138 | WT20=b WS20="SAVE"; WL20=4; WA20="${E}[17;8H"; WE20="${WA20}$(printf "%-4s")${WA20}"
| |
| 139 | - | ShowGUI() |
| 139 | + | WT21=b WS21="SAVEAS"; WL21=6; WA21="${E}[17;25H"; WE21="${WA21}$(printf "%-6s")${WA21}"
|
| 140 | WT22=b WS22="EXIT"; WL22=4; WA22="${E}[17;43H"; WE22="${WA22}$(printf "%-4s")${WA22}"
| |
| 141 | ||
| 142 | SAVE="Save"; SAVEAS="SaveAs"; EXIT="Exit" | |
| 143 | ################### | |
| 144 | ShowTUI() | |
| 145 | {
| |
| 146 | printf "${ESC}[2J"
| |
| 147 | ||
| 148 | # Must use UPPERCASE for words in DRAW mode. Or add labels later. | |
| 149 | # NOTE: see how the cfaj code makes variable sized boxes. | |
| 150 | printat 1 1 "$WB$DRAW" | |
| 151 | echo "lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk" | |
| 152 | echo "x NICK x" | |
| 153 | echo "x IDENTIFY x" | |
| 154 | echo "x PASSWORD x" | |
| 155 | echo "tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu" | |
| 156 | echo "x SERVER x" | |
| 157 | echo "x PORT x" | |
| 158 | echo "x NEEDPASS x" | |
| 159 | echo "x PASSWORD x" | |
| 160 | echo "t CHANNELS qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu" | |
| 161 | echo "x KEY x" | |
| 162 | echo "x KEY x" | |
| 163 | - | echo "${WE1}${WA1}${NICK}"
|
| 163 | + | |
| 164 | - | echo "${WE2}${WA2}${ID}"
|
| 164 | + | |
| 165 | - | echo "${WE3}${WA3}${IPAS}"
|
| 165 | + | |
| 166 | - | echo "${WE4}${WA4}${SERV}"
|
| 166 | + | echo "x lqqqqqqk lqqqqqqqqk lqqqqqqk x" |
| 167 | - | echo "${WE5}${WA5}${PORT}"
|
| 167 | + | echo "x x x x x x x x" |
| 168 | - | echo "${WE6}${WA6}${NPAS}"
|
| 168 | + | echo "x mqqqqqqj mqqqqqqqqj mqqqqqqj x" |
| 169 | - | echo "${WE7}${WA7}${PASS}"
|
| 169 | + | |
| 170 | - | echo "${WE8}${WA8}${CH1}${WE12}${WA12}${NK1}${WE16}${WA16}${KEY1}"
|
| 170 | + | |
| 171 | - | echo "${WE9}${WA9}${CH2}${WE13}${WA13}${NK2}${WE17}${WA17}${KEY2}"
|
| 171 | + | |
| 172 | - | echo "${WE10}${WA10}${CH3}${WE14}${WA14}${NK3}${WE18}${WA18}${KEY3}"
|
| 172 | + | echo "${WE1}${NICK}"
|
| 173 | - | echo "${WE11}${WA11}${CH4}${WE15}${WA15}${NK4}${WE19}${WA19}${KEY4}"
|
| 173 | + | echo "${WE2}${ID}"
|
| 174 | echo "${WE3}${IPAS}"
| |
| 175 | echo "${WE4}${SERV}"
| |
| 176 | echo "${WE5}${PORT}"
| |
| 177 | echo "${WE6}${NPAS}"
| |
| 178 | echo "${WE7}${PASS}"
| |
| 179 | echo "${WE8}${CH1}${WE12}${NK1}${WE16}${KEY1}"
| |
| 180 | echo "${WE9}${CH2}${WE13}${NK2}${WE17}${KEY2}"
| |
| 181 | echo "${WE10}${CH3}${WE14}${NK3}${WE18}${KEY3}"
| |
| 182 | echo "${WE11}${CH4}${WE15}${NK4}${WE19}${KEY4}"
| |
| 183 | ||
| 184 | echo "${WE20}${SAVE}${WE21}${SAVEAS}${WE22}${EXIT}"
| |
| 185 | #echo $N | |
| 186 | } | |
| 187 | ||
| 188 | # Boolean/PushButton handler | |
| 189 | button() | |
| 190 | {
| |
| 191 | [ "$WT" != "b" ] && return | |
| 192 | case $J in 20) echo "break" ; return ;; | |
| 193 | 21) echo "break" ; return ;; | |
| 194 | 22) echo "break" ; return ;; | |
| 195 | esac | |
| 196 | #case $_KEY in ${NL}) return ;; esac
| |
| 197 | #case "$STR" in y*|Y*) STR="no " ;; *) STR="yes" ;; esac | |
| 198 | #eval SP=\$WS$J; eval $SP="$STR" | |
| 199 | #echo "printat $y $xo '${STR}'"
| |
| 200 | } | |
| 201 | ||
| 202 | # Open the tinyirc wrapper script and read lines until one starts with tinyirc. | |
| 203 | IRC=/usr/local/bin/irc | |
| 204 | if [ -r $IRC ] ; then | |
| 205 | exec 3<$IRC | |
| 206 | # Find SERV NICK PORT | |
| 207 | while read line <&3 | |
| 208 | do | |
| 209 | if [ "${line%% *}" = "tinyirc" ] ; then
| |
| 210 | # Tries to remove the first word | |
| 211 | CFG="${line#tinyirc }"
| |
| 212 | # Check if we removed anything | |
| 213 | if [ "$CFG" != "$line" ] ; then | |
| 214 | for ARG in $CFG | |
| 215 | do | |
| 216 | case $ARG in | |
| 217 | */*|*:*|*.*) SERV="$ARG" ;; | |
| 218 | -i) ID="yes" ;; | |
| 219 | -*) ARGS="$ARGS $ARG" ;; | |
| 220 | ''|*[!0-9]*) NICK="$ARG" ;; | |
| 221 | *) PORT="$ARG" ;; | |
| 222 | esac | |
| 223 | done | |
| 224 | fi | |
| 225 | fi | |
| 226 | done | |
| 227 | exec 3</dev/null | |
| 228 | fi | |
| 229 | ||
| 230 | # Remove irc:// from SERV | |
| 231 | case $SERV in | |
| 232 | *://*) SERV=${SERV#*://} ;;
| |
| 233 | esac | |
| 234 | # Split SERV at first / | |
| 235 | case $SERV in | |
| 236 | */*) CHAN=${SERV#*/} ;;
| |
| 237 | *) CHAN="" ;; | |
| 238 | esac | |
| 239 | SERV=${SERV%%/*}
| |
| 240 | # Split SERV at first : | |
| 241 | case $SERV in | |
| 242 | *:*) PORT=${SERV#*:} ; SERV=${SERV%%:*} ;;
| |
| 243 | esac | |
| 244 | ||
| 245 | # Get the channels | |
| 246 | J=1; while [ $J -lt 5 ] | |
| 247 | do | |
| 248 | CH=${CHAN%%/*}
| |
| 249 | case $CHAN in | |
| 250 | */*) CHAN=${CHAN#*/} ;;
| |
| 251 | *) CHAN="" ;; | |
| 252 | esac | |
| 253 | case $CH in | |
| 254 | *[\?\&,]*) OPTS=${CH#*[[\?\&,]} ; CH=${CH%%[\?\&,]*} ;;
| |
| 255 | *) OPTS="" ;; | |
| 256 | esac | |
| 257 | echo "$J CH=<$CH> OPTS=<$OPTS>" | |
| 258 | if [ -n "$CH" ] ; then | |
| 259 | eval CH$J=$CH ; eval OPTS$J=$OPTS ; | |
| 260 | case $OPTS in | |
| 261 | *key=*) CK=${OPTS#key=} ; CK=${CK#*[[\?\&,]} ; eval KEY$J=$CK ;;
| |
| 262 | *needkey*) eval NK$J="yes" ;; | |
| 263 | esac | |
| 264 | J=`expr $J + 1` ; | |
| 265 | elif [ -z "$OPTS" ] ; then | |
| 266 | J=`expr $J + 1` ; | |
| 267 | else # We got some server opts (no channel) | |
| 268 | SOPT="$SOPT,$OPTS" | |
| 269 | fi | |
| 270 | case $OPTS in | |
| 271 | *identify=*) IPAS=${OPTS#identify=} ; IPAS=${IPAS#*[[\?\&,]} ;;
| |
| 272 | esac | |
| 273 | case $OPTS in | |
| 274 | *pass=*) PASS=${OPTS#pass=} ; PASS=${PASS#*[[\?\&,]} ;;
| |
| 275 | *needpass*) NPAS="yes" ;; | |
| 276 | esac | |
| 277 | done | |
| 278 | ||
| 279 | # Check if various passwords are needed | |
| 280 | if [ -n "$ID" ] ; then ID="yes" ; | |
| 281 | elif [ -n "$IPAS" ] ; then ID="yes" ; | |
| 282 | - | ################## Now draw and run the GUI. |
| 282 | + | |
| 283 | - | ShowGUI |
| 283 | + | |
| 284 | if [ -n "$NPAS" ] ; then NPAS="yes" ; | |
| 285 | elif [ -n "$PASS" ] ; then NPAS="yes" ; | |
| 286 | else NPAS="no" ; | |
| 287 | fi | |
| 288 | ||
| 289 | if [ -n "$NK1" ] ; then NK1="yes" ; | |
| 290 | elif [ -n "$KEY1" ] ; then NK1="yes" ; | |
| 291 | else NK1="no" ; | |
| 292 | fi | |
| 293 | if [ -n "$NK2" ] ; then NK2="yes" ; | |
| 294 | elif [ -n "$KEY2" ] ; then NK2="yes" ; | |
| 295 | else NK2="no" ; | |
| 296 | fi | |
| 297 | if [ -n "$NK3" ] ; then NK3="yes" ; | |
| 298 | elif [ -n "$KEY4" ] ; then NK3="yes" ; | |
| 299 | - | ${NL})printat 1 24 "key=[NL]"
|
| 299 | + | |
| 300 | - | #_KEY=$J |
| 300 | + | |
| 301 | - | eval SP=\$WS$J |
| 301 | + | |
| 302 | - | eval $SP=$STR |
| 302 | + | |
| 303 | else NK4="no" ; | |
| 304 | - | ;; "${ESC}"|${NL}) break
|
| 304 | + | |
| 305 | ||
| 306 | ||
| 307 | ################## Now draw and run the TUI. | |
| 308 | ShowTUI | |
| 309 | ||
| 310 | - | [ "$J" -ne 11 ] && [ "$J" -ne 15 ] && J=$(($J + 1)) |
| 310 | + | |
| 311 | J=1 | |
| 312 | - | [ "$J" -eq 19 ] && J=0 |
| 312 | + | |
| 313 | - | [ "$J" -gt 7 ] && J=$(($J + 4)) |
| 313 | + | |
| 314 | - | [ "$J" -gt 19 ] && J=$(($J - 11)) |
| 314 | + | |
| 315 | - | [ "$J" -le 7 ] && J=$(($J + 1)) |
| 315 | + | |
| 316 | WT=s | |
| 317 | - | [ $x -gt $xo ] && x=$(($x - 1)) |
| 317 | + | |
| 318 | # Run main dialog box until ESC | |
| 319 | - | [ $x -lt $((${#STR} + $xo)) ] && x=$(($x + 1))
|
| 319 | + | |
| 320 | do | |
| 321 | printat $y $x | |
| 322 | get_key | |
| 323 | MV=0 # Handle widget traversal (UP,DN,TAB). | |
| 324 | case $_KEY in | |
| 325 | " ")printat 1 24 "key=[SP]" ; eval $(button) | |
| 326 | ;; ${NL})printat 1 24 "key=[NL]" ; eval $(button)
| |
| 327 | - | [ $x -gt $xo ] && {
|
| 327 | + | eval SP=\$WS$J; eval $SP="$STR" |
| 328 | x=$xo | |
| 329 | ;; "${ESC}") MV=$J #break
| |
| 330 | ;; '[A')printat 1 24 "key=[UP]" ; MV=$J | |
| 331 | - | printat $y $x |
| 331 | + | |
| 332 | [ "$J" -eq 16 ] && J=8 | |
| 333 | [ "$J" -gt 19 ] && J=12 | |
| 334 | J=$(($J - 1)) | |
| 335 | - | sreplace $(($x - $xo)) "${_KEY}"
|
| 335 | + | |
| 336 | - | printat $y $xo $STR |
| 336 | + | [ "$J" -eq 11 ] && J=20 |
| 337 | - | x=$(($x + 1)) |
| 337 | + | [ "$J" -eq 15 ] && J=20 |
| 338 | - | printat $y $x |
| 338 | + | [ "$J" -le 19 ] && J=$(($J + 1)) |
| 339 | ;; "${TAB}")printat 1 24 "key=[TB]" ; MV=$J
| |
| 340 | case $J in | |
| 341 | 22) J=1 ;; | |
| 342 | [89]|1[0-5]) J=$(($J + 4)) ;; | |
| 343 | 1[6-8]) J=$(($J - 7)) ;; | |
| 344 | *) J=$(($J + 1)) ;; | |
| 345 | - | eval WL=\$WL$MV |
| 345 | + | esac |
| 346 | - | printat $y $xo; printf "%-${WL}s"
|
| 346 | + | |
| 347 | ;; '[6~')printat 1 24 "key=[V-]" | |
| 348 | ;; '[1~')printat 1 24 "key=[HM]" | |
| 349 | - | eval printat $y $xo $STR |
| 349 | + | |
| 350 | - | # Should erase from xo+$(#STR) to widgetlength. |
| 350 | + | |
| 351 | [ "$WT" != "b" ] && [ $x -lt $((${#STR} + $xo)) ] && x=$(($x + 1))
| |
| 352 | - | elif [ "$J" -gt 19 ] ; then J=19 |
| 352 | + | [ "$WT" = "b" ] && [ $J -ge 12 ] && [ $J -le 15 ] && {
|
| 353 | MV=$J ; J=$(($J + 4)) | |
| 354 | } | |
| 355 | [ "$WT" = "b" ] && [ $J -ge 20 ] && [ $J -le 22 ] && {
| |
| 356 | MV=$J ; J=$(($J + 1)) | |
| 357 | } | |
| 358 | ;; '[D')printat 1 24 "key=[<<]" | |
| 359 | [ "$WT" != "b" ] && [ $x -gt $xo ] && x=$(($x - 1)) | |
| 360 | [ "$WT" = "b" ] && [ $J -ge 12 ] && [ $J -le 15 ] && {
| |
| 361 | MV=$J ; J=$(($J - 4)) | |
| 362 | } | |
| 363 | - | eval printat $y $xo $STR |
| 363 | + | [ "$WT" = "b" ] && [ $J -gt 20 ] && {
|
| 364 | MV=$J ; J=$(($J - 1)) | |
| 365 | } | |
| 366 | ;; "${C_D}")printat 1 24 "key=[^D]"
| |
| 367 | ;; "${C_H}")printat 1 24 "key=[^H]"
| |
| 368 | ;; "${BS}")printat 1 24 "key=[BS]"
| |
| 369 | [ "$WT" != "b" ] && [ $x -gt $xo ] && {
| |
| 370 | sreplace $(($x - $xo)) | |
| 371 | x=$(($x - 1)) | |
| 372 | printat $y $xo "$STR " | |
| 373 | } | |
| 374 | ;; [[:cntrl:]]) printat 1 24 "key=[CTL]" | |
| 375 | ;; [[:graph:]]) printat 1 24 "key=[${_KEY}]"
| |
| 376 | case $_KEY in .|-|_) ;; [[:punct:]]) continue ;; esac | |
| 377 | [ "$WT" = "i" ] && { case $_KEY in [0-9]) ;; *) continue ;; esac }
| |
| 378 | [ "$WT" != "b" ] && {
| |
| 379 | sreplace $(($x - $xo)) "${_KEY}"
| |
| 380 | printat $y $xo $STR | |
| 381 | x=$(($x + 1)) | |
| 382 | } | |
| 383 | [ "$WT" = "b" ] && [ $J -le 19 ] && {
| |
| 384 | case $_KEY in y|Y) STR="yes" ;; *) STR="no " ;; esac | |
| 385 | printat $y $xo "${STR}"
| |
| 386 | eval SP=\$WS$J; eval $SP="$STR" | |
| 387 | } | |
| 388 | ;; *)printat 1 24 "key=[HUH]" | |
| 389 | ;; | |
| 390 | esac | |
| 391 | ||
| 392 | # Set x and y if traversing between widgets | |
| 393 | if [ $MV -ne 0 ] ; then | |
| 394 | # Clear and restore old widget to STR before moving on. | |
| 395 | eval WE=\$WE$MV | |
| 396 | eval SP=\$WS$MV | |
| 397 | eval STR=\$"$SP" | |
| 398 | echo "${WE}${STR}"
| |
| 399 | # Traverse | |
| 400 | if [ "$J" -lt 1 ] ; then J=1 | |
| 401 | elif [ "$J" -gt 22 ] ; then J=22 | |
| 402 | fi | |
| 403 | if [ "$J" -lt 4 ] ; then y=$(($J + 1)) ; x=13 | |
| 404 | elif [ "$J" -lt 8 ] ; then y=$(($J + 2)) ; x=13 | |
| 405 | elif [ "$J" -lt 12 ] ; then y=$(($J + 3)) ; x=3 | |
| 406 | elif [ "$J" -lt 16 ] ; then y=$(($J - 1)) ; x=32 | |
| 407 | elif [ "$J" -lt 20 ] ; then y=$(($J - 5)) ; x=37 | |
| 408 | elif [ "$J" -eq 20 ] ; then y=17; x=8 | |
| 409 | elif [ "$J" -eq 21 ] ; then y=17; x=25 | |
| 410 | elif [ "$J" -eq 22 ] ; then y=17; x=43 | |
| 411 | fi | |
| 412 | xo=$x | |
| 413 | eval SP=\$WS$J | |
| 414 | eval STR=\$"$SP" | |
| 415 | printat $y $xo $STR | |
| 416 | eval WT=\$WT$J | |
| 417 | fi | |
| 418 | done | |
| 419 | ||
| 420 | # Goto top left corner (1,1), set normal text, fix tty, turn on the cursor. | |
| 421 | printat 1 1 $N | |
| 422 | stty sane | |
| 423 | clear | |
| 424 | cursor 1 | |
| 425 | ||
| 426 | ### Construct a tinyirc command line to save. | |
| 427 | CMD="tinyirc $NICK $PORT ${SERV:-$DSRV}"
| |
| 428 | ||
| 429 | OPS="" | |
| 430 | OP=\? | |
| 431 | case "$ID" in y*|Y*) OPS="${OP}identify=$IPAS"; OP=\& ;; esac
| |
| 432 | if [ -n "$PASS" ] ; then | |
| 433 | OPS="${OPS}${OP}pass=${PASS}";
| |
| 434 | else case "$NPAS" in | |
| 435 | y*|Y*) OPS="${OPS}${OP}needpass" ;; esac
| |
| 436 | fi | |
| 437 | [ -n "$OPS" ] && CMD="${CMD}/$OPS"
| |
| 438 | ||
| 439 | for J in 1 2 3 4 | |
| 440 | do | |
| 441 | eval CH="\$CH$J"; eval NK="\$NK$J"; eval KEY="\$KEY$J" | |
| 442 | [ -n "$CH" ] && {
| |
| 443 | CMD="${CMD}/$CH"
| |
| 444 | if [ -n "$KEY" ] ; then | |
| 445 | CMD="${CMD},key=${KEY}"
| |
| 446 | else case "$NK" in | |
| 447 | y*|Y*) CMD="${CMD},needkey" ;; esac
| |
| 448 | fi | |
| 449 | } | |
| 450 | done | |
| 451 | ||
| 452 | echo $CMD |