You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					68 lines
				
				1.4 KiB
			
		
		
			
		
	
	
					68 lines
				
				1.4 KiB
			| 
								 
											6 years ago
										 
									 | 
							
								#!/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("\x1Bc")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    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
							 |