#!/usr/bin/env python3
"""
This tool can be used to quickly changes the values in a JSON file used for tuning
Keys like in vim :
- h : decrease by 0.05
- l : increase by 0.05
- k : move pointer up
- j : move pointer down
"""
import tty
import sys
import json
import termios
from collections import OrderedDict
FILENAME = ' /data/tuning.json '
def read_tuning ( ) :
while True :
try :
return json . loads ( open ( FILENAME ) . read ( ) )
except :
pass
def main ( ) :
dat = json . loads ( open ( FILENAME , ' r ' ) . read ( ) )
dat = OrderedDict ( sorted ( dat . items ( ) , key = lambda i : i [ 0 ] ) )
cur = 0
while True :
sys . stdout . write ( " \x1B c " )
for i , ( k , v ) in enumerate ( dat . items ( ) ) :
prefix = " > " if cur == i else " "
print ( ( prefix + k ) . ljust ( 20 ) + " %.2f " % v )
key = sys . stdin . read ( 1 ) [ 0 ]
write = False
if key == " k " :
cur = max ( 0 , cur - 1 )
elif key == " j " :
cur = min ( len ( dat . keys ( ) ) - 1 , cur + 1 )
elif key == " l " :
dat [ dat . keys ( ) [ cur ] ] + = 0.05
write = True
elif key == " h " :
dat [ dat . keys ( ) [ cur ] ] - = 0.05
write = True
elif key == " q " :
break
if write :
open ( FILENAME , ' w ' ) . write ( json . dumps ( dat ) )
if __name__ == " __main__ " :
orig_settings = termios . tcgetattr ( sys . stdin )
tty . setcbreak ( sys . stdin )
try :
main ( )
termios . tcsetattr ( sys . stdin , termios . TCSADRAIN , orig_settings )
except :
termios . tcsetattr ( sys . stdin , termios . TCSADRAIN , orig_settings )
raise