4def ChooseOptionFromList(sTitle,sMessage,sPrompt,sChoiceList,iPlusMinus,bPlusMinus,optionDict):
5
6 print ("")
7 print (sTitle)
8
9 if bPlusMinus is False:
10 for index,s in enumerate(sChoiceList):
11 print ("%3d : %-20s" % (index+iPlusMinus,s))
12 else:
13 for index,s in enumerate(sChoiceList):
14 print ("%3d/%3d : %-20s" % (index+iPlusMinus,-index,s))
15
16
17 sMenu=""
18 for s,v in optionDict:
19 sMenu=sMenu+s+" "+v+" "
20 if sMenu!="":
21 print ("\n"+sMenu)
22
23 bValidResponse=False
24 while bValidResponse is False:
25
26 print (" .. "+sPrompt+" > ", end='')
27 tty = open("/dev/tty", "r+")
28 rep=tty.readline()
29 rep=rep.strip()
30
31
32 for s,v in optionDict:
33 if rep==s:
34 return rep
35
36
37 try:
38 iResponse=int(rep)
39
40
41 if bPlusMinus is False:
42 if iResponse in range(iPlusMinus, len(sChoiceList)+iPlusMinus):
43 return iResponse
44
45
46 if bPlusMinus is True:
47 if iResponse in range(iPlusMinus, len(sChoiceList)+iPlusMinus+1):
48 return iResponse
49 if iResponse in range(-len(sChoiceList)+iPlusMinus,iPlusMinus-1):
50 return iResponse
51
52 print ("WARNING : response out of range")
53
54 except Exception:
55 print ("???")
56
57