forked from endorphant/ttbp
		
	adding rainbow menus, closes #25
This commit is contained in:
		
							parent
							
								
									e8ebe2da6d
								
							
						
					
					
						commit
						f2e50bf78c
					
				| @ -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""" | ||||||
|         } |         } | ||||||
|  | |||||||
							
								
								
									
										87
									
								
								ttbp/ttbp.py
									
									
									
									
									
								
							
							
						
						
									
										87
									
								
								ttbp/ttbp.py
									
									
									
									
									
								
							| @ -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>"): | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user