forked from endorphant/ttbp
fixes #3
adding an index shift to the paginator allows correct selection of menu items. also, while i'm at it, removed a bug that was displaying rainbowmenu incorrectly, and also added pagination to neighbor view.master
parent
90b8828ba5
commit
07a995afae
32
bin/_ttbp.py
32
bin/_ttbp.py
|
@ -107,8 +107,8 @@ def menu_handler(options, prompt, pagify=10, rainbow=False, top=""):
|
|||
total = total - 1
|
||||
|
||||
if total < 2:
|
||||
print_menu(options, rainbow)
|
||||
return list_select(options, prompt)
|
||||
util.print_menu(options, rainbow)
|
||||
return util.list_select(options, prompt)
|
||||
|
||||
else:
|
||||
return page_helper(options, prompt, pagify, rainbow, page, total, top)
|
||||
|
@ -117,6 +117,11 @@ def menu_handler(options, prompt, pagify=10, rainbow=False, top=""):
|
|||
def page_helper(options, prompt, pagify, rainbow, page, total, top):
|
||||
'''
|
||||
A helper to process pagination.
|
||||
|
||||
'pagify' is the number of entries per page of display
|
||||
'page' is the current page number
|
||||
'total' is the total number of pages
|
||||
'top' is displyed after the banner redraw
|
||||
'''
|
||||
|
||||
## make short list
|
||||
|
@ -144,6 +149,13 @@ def page_helper(options, prompt, pagify, rainbow, page, total, top):
|
|||
redraw(error+top)
|
||||
return page_helper(options, prompt, pagify, rainbow, page, total, top)
|
||||
|
||||
elif ans is False:
|
||||
return ans
|
||||
|
||||
else:
|
||||
# shift answer to refer to index from original list
|
||||
ans = ans + page * pagify
|
||||
|
||||
return ans
|
||||
|
||||
def redraw(leftover=""):
|
||||
|
@ -454,8 +466,9 @@ def main_menu():
|
|||
view_feels(USER)
|
||||
elif choice == '2':
|
||||
users = core.find_ttbps()
|
||||
redraw("the following "+p.no("user", len(users))+" "+p.plural("is", len(users))+" recording feels on ttbp:")
|
||||
view_neighbors(users)
|
||||
prompt = "the following "+p.no("user", len(users))+" "+p.plural("is", len(users))+" recording feels on ttbp:"
|
||||
redraw(prompt)
|
||||
view_neighbors(users, prompt)
|
||||
elif choice == '3':
|
||||
redraw("most recent global entries")
|
||||
view_feed()
|
||||
|
@ -539,7 +552,7 @@ def review_menu(intro=""):
|
|||
redraw(intro)
|
||||
return review_menu()
|
||||
|
||||
def view_neighbors(users):
|
||||
def view_neighbors(users, prompt):
|
||||
'''
|
||||
generates list of all users on ttbp, sorted by most recent post
|
||||
|
||||
|
@ -594,15 +607,12 @@ def view_neighbors(users):
|
|||
sortedUsers.append(user[0])
|
||||
userIndex.append(user[2])
|
||||
|
||||
util.print_menu(sortedUsers, RAINBOW)
|
||||
|
||||
#raw_input("\n\npress <enter> to go back home.\n\n")
|
||||
choice = util.list_select(sortedUsers, "pick a townie to browse their feels, or type 'back' or 'q' to go home: ")
|
||||
choice = menu_handler(sortedUsers, "pick a townie to browse their feels, or type 'back' or 'q' to go home: ", 15, RAINBOW, prompt)
|
||||
|
||||
if choice is not False:
|
||||
redraw("~"+userIndex[choice]+"'s recorded feels, listed by date: \n")
|
||||
view_feels(userIndex[choice])
|
||||
view_neighbors(users)
|
||||
view_neighbors(users, prompt)
|
||||
else:
|
||||
redraw()
|
||||
return
|
||||
|
@ -1121,6 +1131,8 @@ ver 0.9.1 features:
|
|||
print("""
|
||||
ver 0.9.2 features:
|
||||
* paginated entry view
|
||||
* improved entry listing performance so it should
|
||||
be less sluggish (for now)
|
||||
* expanded menu for viewing your own feels (further
|
||||
features to be implemented)
|
||||
""")
|
||||
|
|
34
bin/ttbp.py
34
bin/ttbp.py
|
@ -107,8 +107,8 @@ def menu_handler(options, prompt, pagify=10, rainbow=False, top=""):
|
|||
total = total - 1
|
||||
|
||||
if total < 2:
|
||||
print_menu(options, rainbow)
|
||||
return list_select(options, prompt)
|
||||
util.print_menu(options, RAINBOW)
|
||||
return util.list_select(options, prompt)
|
||||
|
||||
else:
|
||||
return page_helper(options, prompt, pagify, rainbow, page, total, top)
|
||||
|
@ -117,6 +117,11 @@ def menu_handler(options, prompt, pagify=10, rainbow=False, top=""):
|
|||
def page_helper(options, prompt, pagify, rainbow, page, total, top):
|
||||
'''
|
||||
A helper to process pagination.
|
||||
|
||||
'pagify' is the number of entries per page of display
|
||||
'page' is the current page number
|
||||
'total' is the total number of pages
|
||||
'top' is displyed after the banner redraw
|
||||
'''
|
||||
|
||||
## make short list
|
||||
|
@ -124,7 +129,7 @@ def page_helper(options, prompt, pagify, rainbow, page, total, top):
|
|||
y = x + pagify
|
||||
optPage = options[x:y]
|
||||
|
||||
util.print_menu(optPage, prompt)
|
||||
util.print_menu(optPage, RAINBOW)
|
||||
print("\n\t( page {page} of {total}; type 'u' or 'd' to scroll up and down )").format(page=page+1, total=total+1)
|
||||
|
||||
ans = util.list_select(optPage, prompt)
|
||||
|
@ -144,6 +149,13 @@ def page_helper(options, prompt, pagify, rainbow, page, total, top):
|
|||
redraw(error+top)
|
||||
return page_helper(options, prompt, pagify, rainbow, page, total, top)
|
||||
|
||||
elif ans is False:
|
||||
return ans
|
||||
|
||||
else:
|
||||
# shift answer to refer to index from original list
|
||||
ans = ans + page * pagify
|
||||
|
||||
return ans
|
||||
|
||||
def redraw(leftover=""):
|
||||
|
@ -453,8 +465,9 @@ def main_menu():
|
|||
view_feels(USER)
|
||||
elif choice == '2':
|
||||
users = core.find_ttbps()
|
||||
redraw("the following "+p.no("user", len(users))+" "+p.plural("is", len(users))+" recording feels on ttbp:")
|
||||
view_neighbors(users)
|
||||
prompt = "the following "+p.no("user", len(users))+" "+p.plural("is", len(users))+" recording feels on ttbp:"
|
||||
redraw(prompt)
|
||||
view_neighbors(users, prompt)
|
||||
elif choice == '3':
|
||||
redraw("most recent global entries")
|
||||
view_feed()
|
||||
|
@ -538,7 +551,7 @@ def review_menu(intro=""):
|
|||
redraw(intro)
|
||||
return review_menu()
|
||||
|
||||
def view_neighbors(users):
|
||||
def view_neighbors(users, prompt):
|
||||
'''
|
||||
generates list of all users on ttbp, sorted by most recent post
|
||||
|
||||
|
@ -593,15 +606,12 @@ def view_neighbors(users):
|
|||
sortedUsers.append(user[0])
|
||||
userIndex.append(user[2])
|
||||
|
||||
util.print_menu(sortedUsers, RAINBOW)
|
||||
|
||||
#raw_input("\n\npress <enter> to go back home.\n\n")
|
||||
choice = util.list_select(sortedUsers, "pick a townie to browse their feels, or type 'back' or 'q' to go home: ")
|
||||
choice = menu_handler(sortedUsers, "pick a townie to browse their feels, or type 'back' or 'q' to go home: ", 15, RAINBOW, prompt)
|
||||
|
||||
if choice is not False:
|
||||
redraw("~"+userIndex[choice]+"'s recorded feels, listed by date: \n")
|
||||
view_feels(userIndex[choice])
|
||||
view_neighbors(users)
|
||||
view_neighbors(users, prompt)
|
||||
else:
|
||||
redraw()
|
||||
return
|
||||
|
@ -1120,6 +1130,8 @@ ver 0.9.1 features:
|
|||
print("""
|
||||
ver 0.9.2 features:
|
||||
* paginated entry view
|
||||
* improved entry listing performance so it should
|
||||
be less sluggish (for now)
|
||||
* expanded menu for viewing your own feels (further
|
||||
features to be implemented)
|
||||
""")
|
||||
|
|
|
@ -158,7 +158,7 @@ def print_menu(menu, rainbow=False):
|
|||
i = 0
|
||||
for x in menu:
|
||||
line = []
|
||||
if rainbow:
|
||||
if rainbow is not False:
|
||||
line.append(attach_rainbow())
|
||||
line.append("\t[ ")
|
||||
if i < 10:
|
||||
|
|
Loading…
Reference in New Issue