9q Emprovements for favorites and terminal

This commit is contained in:
shrlnm 2019-11-09 10:45:10 +03:00
parent 0e2a6f9f29
commit 7c56018259
4 changed files with 70 additions and 37 deletions

View File

@ -491,8 +491,10 @@ class ECU:
c = kb.getch()
if len(c)!=1: continue
if path[:3] == 'FAV':
if ord(c) == 13:
if ord(c) == 13 or ord(c) == 10:
kb.set_normal_term()
self.add_favourite()
kb.set_getch_term()
else:
if mod_globals.opt_csv and (c in mod_globals.opt_usrkey):
csvline += ";" + c
@ -521,31 +523,40 @@ class ECU:
def add_favourite(self):
H = 25
if len(favouriteScreen.datarefs) < H:
userData = raw_input("\nEnter parameter/state that you want to monitor: ").upper()
if userData[:2] == 'PR':
for pr in self.Parameters.keys():
if self.Parameters[pr].agcdRef == userData:
if not any(pr == dr.name for dr in favouriteScreen.datarefs):
favouriteScreen.datarefs.append(ecu_screen_dataref("",pr,"Parameter"))
else:
for dr in favouriteScreen.datarefs:
if pr == dr.name:
favouriteScreen.datarefs.remove(dr)
elif userData[:2] == 'ET':
for st in self.States.keys():
if self.States[st].agcdRef == userData:
if not any(st == dr.name for dr in favouriteScreen.datarefs):
favouriteScreen.datarefs.append(ecu_screen_dataref("",st,"State"))
else:
for dr in favouriteScreen.datarefs:
if st == dr.name:
favouriteScreen.datarefs.remove(dr)
userDataStr = raw_input("\nEnter parameter/state that you want to monitor: ").upper()
for userData in userDataStr.split(','):
userData = userData.strip()
if userData[:2] == 'PR':
for pr in self.Parameters.keys():
if self.Parameters[pr].agcdRef == userData:
if not any(pr == dr.name for dr in favouriteScreen.datarefs):
favouriteScreen.datarefs.append(ecu_screen_dataref("",pr,"Parameter"))
else:
for dr in favouriteScreen.datarefs:
if pr == dr.name:
favouriteScreen.datarefs.remove(dr)
elif userData[:2] == 'ET':
for st in self.States.keys():
if self.States[st].agcdRef == userData:
if not any(st == dr.name for dr in favouriteScreen.datarefs):
favouriteScreen.datarefs.append(ecu_screen_dataref("",st,"State"))
else:
for dr in favouriteScreen.datarefs:
if st == dr.name:
favouriteScreen.datarefs.remove(dr)
clearScreen()
def loadFavList(self):
fl = open("./cache/favlist.txt", "r").readlines()
fn = "./cache/favlist_"+self.ecudata['ecuname']+".txt"
if not os.path.isfile(fn):
favlistfile = open( fn, "wb" )
favlistfile.close()
fl = open(fn, "r").readlines()
if len(fl) > 1:
if(fl[-1] != self.ecudata['ecuname']): return False
for drname in fl:
drname = drname.strip().replace('\n','')
if drname[:1] == "P":
@ -554,6 +565,7 @@ class ECU:
favouriteScreen.datarefs.append(ecu_screen_dataref("", drname,"State"))
else:
return drname
return True
else:
return False
@ -763,10 +775,9 @@ class ECU:
menu.append("<Up>")
choice = Choice(menu, "Choose :")
if choice[0]=="<Up>":
fl = open("./cache/favlist.txt", "w")
fl = open("./cache/favlist_"+self.ecudata['ecuname']+".txt", "w")
for dr in favouriteScreen.datarefs:
fl.write(dr.name + "\n")
fl.write(self.ecudata['ecuname'])
fl.close()
favouriteScreen.datarefs = []
return
@ -795,16 +806,20 @@ class ECU:
gc.collect ()
continue
fav_sc = self.screens[int(choice[1]) - 1]
if choice[0][:3] == "FAV":
for sc in self.screens:
if sc.name.startswith('FAV'):
fav_sc = sc
if not favouriteScreen.datarefs:
if self.loadFavList():
self.show_screen(self.screens[int(choice[1])-1])
self.show_screen(fav_sc)
else:
self.add_favourite()
else:
self.show_screen(self.screens[int(choice[1])-1])
self.show_screen(fav_sc)
else:
self.show_screen(self.screens[int(choice[1])-1])
self.show_screen(fav_sc)
def getLanguageMap(self):

View File

@ -549,6 +549,10 @@ def proc_line( l, elm ):
l = l.strip()
if l.startswith(':'):
print l
return
if len(l) == 0:
print
return
@ -616,6 +620,9 @@ def proc_line( l, elm ):
bit_cmd( l.lower()[7:], elm, fnc='exit_if' )
return
if len(l_parts) > 0 and l_parts[0] in ['go','goto']:
print l
return l_parts[1]
if l.lower().startswith('_'):
print elm.send_raw(l[1:])
@ -672,7 +679,7 @@ def main():
if auto_macro in macro.keys():
play_macro( auto_macro, elm )
else:
print 'Error: unknown macro mane:', auto_macro
print 'Error: unknown macro name:', auto_macro
while True:
@ -688,7 +695,16 @@ def main():
l = "# end of command file"
print l
proc_line( l, elm )
goto = proc_line( l, elm )
if goto and len(cmd_lines):
c_str = 0
for c in cmd_lines:
if c.startswith(':'):
if goto == c[1:].strip():
cmd_ref = c_str
break
c_str += 1
if __name__ == '__main__':
main()

View File

@ -39,6 +39,9 @@ else:
class KBHit:
def __init__(self):
self.set_getch_term()
def set_getch_term(self):
'''Creates a KBHit object that you can call to do various keyboard things.
'''
@ -274,7 +277,7 @@ def clearScreen():
def upScreen():
sys.stdout.write(chr(27)+"[;H")
def hex_VIN_plus_CRC( VIN ):
def hex_VIN_plus_CRC( VIN, plusCRC=True):
'''The VIN must be composed of 17 alphanumeric characters apart from "I" and "O"'''
#VIN ='VF1LM1B0H11111111'
@ -306,7 +309,10 @@ def hex_VIN_plus_CRC( VIN ):
sCRC = '0'*(4-len(sCRC))+sCRC
# result
return hexVIN+sCRC
if plusCRC:
return hexVIN+sCRC
else:
return hexVIN
# Test
if __name__ == "__main__":

View File

@ -306,10 +306,6 @@ def main():
ecu = ECU(choosen_ecu, lang.dict ) #loading original data for chosen ECU
pickle.dump( ecu, open( ecucashfile, "wb" ) ) #and save cache
if not os.path.isfile("./cache/favlist.txt"):
favlistfile = open( "./cache/favlist.txt", "wb" )
favlistfile.close()
ecu.initELM( elm ) #init ELM for chosen ECU
if mod_globals.opt_demo: