122 lines
2.4 KiB
Bash
Executable File
122 lines
2.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
. ~/cshenv/lib/vulgar.sh
|
|
|
|
echo '[?25l'
|
|
echo '[?25h'
|
|
echo '[?25l'
|
|
|
|
erase_block 1 1 15 34
|
|
build_box 1 1 15 34
|
|
fill_block_attributes 1 1 15 34 47 30
|
|
write_string "Terminal Color Picker" 2 7 47 30
|
|
|
|
create_button Red 12 3 Red 1
|
|
#build_box 12 2 14 8
|
|
#write_string "Red" 13 4
|
|
#fill_block_attributes 12 2 14 8 41
|
|
|
|
create_button Green 12 13 Green 2
|
|
#build_box 12 12 14 20
|
|
#write_string "Green" 13 14
|
|
|
|
create_button Blue 12 25 Blue 4
|
|
#build_box 12 24 14 31
|
|
#write_string "Blue" 13 26
|
|
|
|
highlight_button Red
|
|
|
|
# TODO: Add color picker
|
|
# TODO: Negative colors support specials:
|
|
# -1 is background
|
|
# -2 is foreground
|
|
# -3 is cursor
|
|
color=12
|
|
|
|
write_string "Index:" 4 3 47 30
|
|
erase_block 4 10 4 12
|
|
color_padded=" ${color}"
|
|
write_string "${color_padded:-3}" 4 10
|
|
|
|
write_string "Code:" 4 14 47 30
|
|
erase_block 4 20 4 25
|
|
get_color_hex ${color} red green blue
|
|
write_string "${red}${green}${blue}" 4 20
|
|
|
|
|
|
build_box 6 9 9 25
|
|
fill_block_attributes 7 10 8 24 44
|
|
#erase_block 4 13 4 21
|
|
|
|
Controls=()
|
|
|
|
Buttons=("Red" "Green" "Blue")
|
|
Index=0
|
|
|
|
Colors=( $((0x${red})) $((0x${green})) $((0x${blue})) )
|
|
|
|
|
|
tmp=`stty -g`
|
|
stty -echo
|
|
|
|
update_color()
|
|
{
|
|
_color=${1}
|
|
echo -n "]4;${_color};#$(hexbyte ${Colors[0]})$(hexbyte ${Colors[1]})$(hexbyte ${Colors[2]})"
|
|
write_string "$(hexbyte ${Colors[0]})$(hexbyte ${Colors[1]})$(hexbyte ${Colors[2]})" 4 20
|
|
}
|
|
|
|
while true
|
|
do
|
|
read_key codes
|
|
sym=`translate_key ${codes}`
|
|
|
|
OldIndex=${Index}
|
|
|
|
if [ "${sym}" == "Right" ]
|
|
then
|
|
if (( ${Index} < $(( ${#Buttons} - 1 )) ))
|
|
then
|
|
Index=$(( ${Index} + 1 ))
|
|
|
|
unhighlight_button ${Buttons[${OldIndex}]}
|
|
highlight_button ${Buttons[${Index}]}
|
|
fi
|
|
elif [ "${sym}" == "Left" ]
|
|
then
|
|
if (( ${Index} > 0 ))
|
|
then
|
|
Index=$(( ${Index} - 1 ))
|
|
|
|
unhighlight_button ${Buttons[${OldIndex}]}
|
|
highlight_button ${Buttons[${Index}]}
|
|
fi
|
|
elif [ "${sym}" == "Up" ]
|
|
then
|
|
#echo "${Colors[${Index}]}:$(hexbyte ${Colors[${Index}]} )"
|
|
if (( ${Colors[${Index}]} < 255 ))
|
|
then
|
|
Colors[${Index}]=$(( ${Colors[${Index}]} + 1 ))
|
|
fi
|
|
update_color ${color}
|
|
elif [ "${sym}" == "Down" ]
|
|
then
|
|
#echo "${Colors[${Index}]}:$(hexbyte ${Colors[${Index}]} )"
|
|
if (( ${Colors[${Index}]} > 0 ))
|
|
then
|
|
Colors[${Index}]=$(( ${Colors[${Index}]} - 1 ))
|
|
fi
|
|
update_color ${color}
|
|
elif [ "${sym}" == "Escape" ]
|
|
then
|
|
break
|
|
elif [ "${sym}" == "0" ]
|
|
then
|
|
Colors[${Index}]=0
|
|
update_color ${color}
|
|
fi
|
|
done
|
|
|
|
stty ${tmp}
|
|
#sleep 0.10
|
|
echo -n '[?25h'
|