finish filtering

This commit is contained in:
MeaTLoTioN 2022-05-23 20:31:29 +01:00
parent 5db9695406
commit f0deae9e4d

View File

@ -168,11 +168,20 @@ def footer():
write(cRESET) write(cRESET)
def getBBS(o, s): def getBBS(o, s):
global barOffset global barOffset, filter, fDictSortedLen
selectedBBS = "" selectedBBS = ""
count = 0 count = 0
tmpDict = sorted(dictNodelist, reverse=False) tmpDict = sorted(dictNodelist, reverse=False)
fDict = {}
for BBS in tmpDict: for BBS in tmpDict:
if filter.upper() in BBS.upper():
fDict[BBS] = {}
fDictSorted = sorted(fDict, reverse=False)
fDictSortedLen = len(fDictSorted)
for BBS in fDictSorted:
count += 1 count += 1
if count == o+s: if count == o+s:
selectedBBS = BBS selectedBBS = BBS
@ -182,42 +191,50 @@ def showList(offset = 0):
global barOffset global barOffset
global highlightedBBS global highlightedBBS
global filter global filter
global fDictSortedLen
#gotoxy(68,24); write("|19|11"+str(len(filter))+" ") #gotoxy(68,24); write("|19|11"+str(len(filter))+" ")
gotoxy(10,1); write("|19|11["+str(fDictSortedLen).ljust(4)+"]")
R = 1 R = 1
count = 0 count = 0
gotoxy(1,2) gotoxy(1,2)
write("|16|07") write("|16|07")
tmpDict = sorted(dictNodelist, reverse=False) tmpDict = sorted(dictNodelist, reverse=False)
fDict = {}
for BBS in tmpDict: for BBS in tmpDict:
if not BBS.upper().startswith(filter): if filter.upper() in BBS.upper():
fDict[BBS] = {}
fDictSorted = sorted(fDict, reverse=False)
fDictSortedLen = len(fDictSorted)
for BBS in fDictSorted:
count += 1
if count < offset+1:
pass pass
else: else:
count += 1 R += 1
if count < offset+1: if R < screenDepth:
pass if barOffset+1 == R:
else: gotoxy(1,R)
R += 1 write('|21|15')
if R < screenDepth: C1 = BBS.replace('_',' ').ljust(22)[:22]
if barOffset+1 == R: C2 = dictNodelist[BBS]["SYSOP"].replace('_',' ').ljust(15)[:15]
gotoxy(1,R) C3 = dictNodelist[BBS]["LOCATION"].replace('_',' ').ljust(15)[:15]
write('|21|15') C4 = dictNodelist[BBS]["SOFTWARE"].ljust(15)[:15]
C1 = BBS.replace('_',' ').ljust(22)[:22] if "n/a" in C4:
C2 = dictNodelist[BBS]["SYSOP"].replace('_',' ').ljust(15)[:15] SPC = "|08"
C3 = dictNodelist[BBS]["LOCATION"].replace('_',' ').ljust(15)[:15] else:
C4 = dictNodelist[BBS]["SOFTWARE"].ljust(15)[:15] SPC = ""
if "n/a" in C4: try:
SPC = "|08" C5 = ratingsDB[BBS]
else: except:
SPC = "" C5 = 0
try: thisLine = C1+" "+C2+" "+C3+" "+SPC+C4+" "+"|10"+(chr(254)*C5).rjust(7)
C5 = ratingsDB[BBS] pad = " "*(79-len(stripmci(thisLine)))
except: writeln(thisLine.ljust(79)+pad+"|16|07")
C5 = 0
thisLine = C1+" "+C2+" "+C3+" "+SPC+C4+" "+"|10"+(chr(254)*C5).rjust(7)
pad = " "*(79-len(stripmci(thisLine)))
writeln(thisLine.ljust(79)+pad+"|16|07")
if count < screenDepth-1: if count < screenDepth-1:
for i in range(count, screenDepth): for i in range(count+2, screenDepth):
gotoxy(1,i); write("|[K") gotoxy(1,i); write("|[K")
gotoxy(1,24); write("|19|11"+filter.ljust(18)[:18]+"|16|07") gotoxy(1,24); write("|19|11"+filter.ljust(18)[:18]+"|16|07")
@ -331,7 +348,7 @@ def showDetail(BBS):
write("|RS") write("|RS")
def mainMenu(): def mainMenu():
global barOffset, offset, highlightedBBS, filter global barOffset, offset, highlightedBBS, filter, fDictSortedLen
maxOffset = len(dictNodelist)-screenDepth-1 maxOffset = len(dictNodelist)-screenDepth-1
finished = "no" finished = "no"
highlightedBBS = getBBS(barOffset, offset) highlightedBBS = getBBS(barOffset, offset)
@ -347,11 +364,12 @@ def mainMenu():
offset -= 1 offset -= 1
highlightedBBS = getBBS(barOffset, offset) highlightedBBS = getBBS(barOffset, offset)
if char == KEY_DOWN: if char == KEY_DOWN:
if barOffset < screenDepth-2: if barOffset < fDictSortedLen:
barOffset += 1 if barOffset < screenDepth-2:
elif barOffset > screenDepth-3: barOffset += 1
if offset < maxOffset: elif barOffset > screenDepth-3:
offset += 1 if offset < maxOffset:
offset += 1
highlightedBBS = getBBS(barOffset, offset) highlightedBBS = getBBS(barOffset, offset)
if char == KEY_LEFT or char == KEY_PGUP: if char == KEY_LEFT or char == KEY_PGUP:
if offset > screenDepth-3: if offset > screenDepth-3:
@ -362,7 +380,9 @@ def mainMenu():
barOffset = 1 barOffset = 1
highlightedBBS = getBBS(barOffset, offset) highlightedBBS = getBBS(barOffset, offset)
if char == KEY_RIGHT or char == KEY_PGDN: if char == KEY_RIGHT or char == KEY_PGDN:
if offset < maxOffset - (screenDepth-3): if fDictSortedLen < screenDepth-2:
barOffset = fDictSortedLen
elif offset < maxOffset - (screenDepth-3):
offset += screenDepth-3 offset += screenDepth-3
else: else:
offset = maxOffset offset = maxOffset
@ -373,21 +393,25 @@ def mainMenu():
barOffset = 1 barOffset = 1
offset = 0 offset = 0
if char == KEY_END: if char == KEY_END:
barOffset = screenDepth-2 if fDictSortedLen < screenDepth-2:
offset = maxOffset barOffset = fDictSortedLen-1
else:
barOffset = screenDepth-2
offset = maxOffset
else: else:
if char == KEY_ENTER: if char == KEY_ENTER:
showDetail(highlightedBBS) showDetail(highlightedBBS)
if char == KEY_ESCAPE: elif char == KEY_ESCAPE:
finished = "yes" finished = "yes"
if char == KEY_QMARK: elif char == KEY_QMARK:
showHelp() showHelp()
#if char == KEY_BSPACE: elif char == KEY_BSPACE:
# if len(filter) > 0: if len(filter) > 0:
# filter = filter[:-1] filter = filter[:-1]
#if char.isalnum() or char.isspace(): else:
# if len(filter) < 18: if char.isalnum() or char.isspace():
# filter = filter+char.upper() if len(filter) < 18:
filter = filter+char.upper().replace(' ', '_')
return finished return finished
menucmd('NA','sIftIng fOr gOld') menucmd('NA','sIftIng fOr gOld')