adding rainbow menus, closes #25

master
Vincent Zeng 2018-01-02 01:21:48 -05:00
parent e8ebe2da6d
commit f2e50bf78c
2 changed files with 72 additions and 23 deletions

View File

@ -82,7 +82,7 @@ __________________________________________________________
| ____ ____ ____ _ ____ ____ _ _ ____ _ _ _ ____ |
| |___ |___ |___ | [__ |___ |\ | | __ | |\ | |___ |
| | |___ |___ |___ ___] |___ | \| |__] | | \| |___ |
| ver 0.10.2 |
| ver 0.10.3 (rainbows) |
|__________________________________________________________|
'''.lstrip()
@ -130,4 +130,10 @@ version 0.9.3 features:
* ~login created centralfeels, which is an opt-in collection of
html-published feels; create a blank file called '.centralfeels' in
your home directory if you'd like to be included!""",
"0.10.3": """
~[version 0.10.3 update]~
* rainbow menus are now an option! please message ~endorphant (with
screencaps, if possible) if rainbow menus are unreadable with your
terminal settings, so adjustments can be made for future updates"""
}

View File

@ -49,7 +49,7 @@ from . import chatter
from . import gopher
from . import util
__version__ = "0.10.2"
__version__ = "0.10.3"
__author__ = "endorphant <endorphant@tilde.town)"
p = inflect.engine()
@ -70,7 +70,8 @@ DEFAULT_SETTINGS = {
"editor": "nano",
"publish dir": None,
"gopher": False,
"publishing": False
"publishing": False,
"rainbows": False,
}
## user globals
@ -78,7 +79,8 @@ SETTINGS = {
"editor": "nano",
"publish dir": None,
"gopher": False,
"publishing": False
"publishing": False,
"rainbows": False
}
@ -102,7 +104,7 @@ def menu_handler(options, prompt, pagify=10, rainbow=False, top=""):
total = total - 1
if total < 2:
util.print_menu(options, RAINBOW)
util.print_menu(options, SETTINGS.get("rainbows", False))
return util.list_select(options, prompt)
else:
@ -124,7 +126,7 @@ def page_helper(options, prompt, pagify, rainbow, page, total, top):
y = x + pagify
optPage = options[x:y]
util.print_menu(optPage, RAINBOW)
util.print_menu(optPage, SETTINGS.get("rainbows", False))
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)
@ -227,10 +229,10 @@ def check_init():
user=config.USER))
## ttbp env validation
if not valid_setup():
if not user_up_to_date():
update_user_version()
elif not valid_setup():
setup_repair()
elif not updated():
update_version()
else:
raw_input("press <enter> to explore your feels.\n\n")
@ -378,11 +380,14 @@ def setup_repair():
print("\nyour ttbp configuration doesn't look right. let me try to fix it....\n\n")
time.sleep(1)
settings_map = {
"editor": select_editor,
"publishing": select_publishing,
"publish dir": select_publish_dir,
"gopher": gopher.select_gopher
"gopher": gopher.select_gopher,
"rainbows": toggle_rainbows
}
for option in iter(settings_map):
@ -417,7 +422,7 @@ def setup():
for setting in settingList:
menuOptions.append(setting + ": \t" + str(SETTINGS.get(setting)))
util.print_menu(menuOptions, RAINBOW)
util.print_menu(menuOptions, SETTINGS.get("rainbows", False))
try:
choice = raw_input("\npick a setting to change (or type 'q' to exit): ")
@ -468,6 +473,13 @@ def setup():
save_settings()
return setup()
# rainbow menu selection
elif settingList[int(choice)] == "rainbows":
SETTINGS.update({"rainbows": toggle_rainbows()})
redraw("rainbow menus set to {rainbow}".format(rainbow=SETTINGS.get("rainbows")))
save_settings()
return setup()
raw_input("\nyou're all good to go, {friend}! hit <enter> to continue.\n\n".format(friend=chatter.say("friend")))
redraw()
@ -501,7 +513,7 @@ def main_menu():
"read documentation"]
print("you're at ttbp home. remember, you can always press <ctrl-c> to come back here.\n")
util.print_menu(menuOptions, RAINBOW)
util.print_menu(menuOptions, SETTINGS.get("rainbows", False))
try:
choice = raw_input("\ntell me about your feels (or type 'q' to exit): ")
@ -563,7 +575,7 @@ def feedback_menu():
* calls feedback writing function
'''
util.print_menu(SUBJECTS, RAINBOW)
util.print_menu(SUBJECTS, SETTINGS.get("rainbows", False))
choice = raw_input("\npick a category for your feedback: ")
cat = ""
@ -592,7 +604,7 @@ def review_menu(intro=""):
"modify feels publishing"
]
util.print_menu(menuOptions, RAINBOW)
util.print_menu(menuOptions, SETTINGS.get("rainbows", False))
choice = util.list_select(menuOptions, "what would you like to do with your feels? (or 'back' to return home) ")
@ -666,7 +678,7 @@ def view_neighbors(users, prompt):
sortedUsers.append(user[0])
userIndex.append(user[2])
choice = menu_handler(sortedUsers, "pick a townie to browse their feels, or type 'back' or 'q' to go home: ", 15, RAINBOW, prompt)
choice = menu_handler(sortedUsers, "pick a townie to browse their feels, or type 'back' or 'q' to go home: ", 15, SETTINGS.get("rainbows", False), prompt)
if choice is not False:
redraw("~{user}'s recorded feels, listed by date: \n".format(user=userIndex[choice]))
@ -835,7 +847,7 @@ def list_entries(metas, entries, prompt):
displays a list of entries for reading selection
'''
choice = menu_handler(entries, "pick an entry from the list, or type 'q' to go back: ", 10, RAINBOW, prompt)
choice = menu_handler(entries, "pick an entry from the list, or type 'q' to go back: ", 10, SETTINGS.get("rainbows", False), prompt)
if choice is not False:
@ -932,6 +944,26 @@ your changes by exiting without saving.
## misc helpers
def toggle_rainbows():
"""setup helper for rainbow toggling
"""
if SETTINGS.get("rainbows", False) is True:
status = "enabled"
else:
status = "disabled"
print("\nRAINBOW MENU TOGGLING")
print("rainbow menus are currently {status}".format(status=status))
publish = util.input_yn("""\
would you like to have rainbow menus?
please enter\
""")
return publish
def select_editor():
'''
@ -940,7 +972,7 @@ def select_editor():
print("\nTEXT EDITOR SELECTION")
print("your current editor is: "+SETTINGS.get("editor"))
util.print_menu(EDITORS, RAINBOW)
util.print_menu(EDITORS, SETTINGS.get("rainbows", False))
choice = util.list_select(EDITORS, "pick your favorite text editor, or type 'q' to go back: ")
if choice is False:
@ -1084,7 +1116,7 @@ def update_gopher():
##### PATCHING UTILITIES
def updated():
def user_up_to_date():
'''
checks to see if current user is up to the same version as system
'''
@ -1100,7 +1132,7 @@ def updated():
return False
def update_version():
def update_user_version():
'''
updates user to current version, printing relevant release notes and
stepping through new features.
@ -1119,9 +1151,10 @@ def update_version():
time.sleep(1)
userVersion = ""
(x, y, z) = [0, 0, 0]
if not os.path.isfile(versionFile):
# from 0.8.5 to 0.8.6:
# updates from 0.8.5 to 0.8.6, before versionfile existed
# change style.css location
if core.publishing():
@ -1156,6 +1189,7 @@ def update_version():
else: # version at least 0.8.6
userVersion = open(versionFile, "r").read().rstrip()
x, y, z = [int(num) for num in userVersion.split(".")]
# from 0.8.6
if userVersion == "0.8.6":
@ -1168,7 +1202,7 @@ def update_version():
# from earlier than 0.10.1
if int(userVersion.split(".")[1]) < 10:
if y < 10:
# select gopher
print("[ NEW FEATURE ]")
print("""
@ -1184,19 +1218,28 @@ def update_version():
else:
print("okay, passing on gopher for now. this option is available in settings if you change\nyour mind!")
if z < 3 or y < 10:
# set rainbow menu for 0.10.3
print("[ NEW FEATURE ]")
SETTINGS.update({"rainbows": toggle_rainbows()})
print("""
you're all good to go, """+chatter.say("friend")+"""! please contact ~endorphant if
something strange happened to you during this update.
""")
if int(userVersion.split(".")[1]) < 10:
if z < 1 or y < 10:
# version 0.10.1 patch notes
print(config.UPDATES["0.10.1"])
if int(userVersion.split(".")[2]) < 2:
if z < 2 or y < 10:
# version 0.10.2 patch notes
print(config.UPDATES["0.10.2"])
if z < 3 or y < 10:
# version 0.10.2 patch notes
print(config.UPDATES["0.10.3"])
confirm = ""
while confirm not in ("x", "<x>", "X", "<X>"):