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