From 5dcdc493fe38a705bda1debd513016e53425513a Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Thu, 22 Jun 2006 06:51:55 +0000 Subject: Encapsulate emerge's spinner into an object. svn path=/main/trunk/; revision=3591 --- bin/emerge | 110 ++++++++++++++++++++++++++++++++----------------------------- 1 file changed, 57 insertions(+), 53 deletions(-) (limited to 'bin') diff --git a/bin/emerge b/bin/emerge index 704ebfe3d..489576b48 100755 --- a/bin/emerge +++ b/bin/emerge @@ -25,60 +25,64 @@ from portage_const import PROFILE_PATH portage.global_updates( portage.settings, portage.db, portage.mtimedb["updates"]) -spinner_msgs = ["Gentoo Rocks ("+os.uname()[0]+")", - "Thank you for using Gentoo. :)", - "Are you actually trying to read this?", - "How many times have you stared at this?", - "We are generating the cache right now", - "You are paying too much attention.", - "A theory is better than its explanation.", - "Phasers locked on target, Captain.", - "Thrashing is just virtual crashing.", - "To be is to program.", - "Real Users hate Real Programmers.", - "When all else fails, read the instructions.", - "Functionality breeds Contempt.", - "The future lies ahead.", - "3.1415926535897932384626433832795028841971694", - "Sometimes insanity is the only alternative.", - "Inaccuracy saves a world of explanation.", - ] - - -def update_basic_spinner(): - global spinner, spinpos - spinpos = (spinpos+1) % 500 - if (spinpos % 100) == 0: - if spinpos == 0: - sys.stdout.write(". ") - else: - sys.stdout.write(".") - sys.stdout.flush() +class stdout_spinner(object): + scroll_msgs = [ + "Gentoo Rocks ("+os.uname()[0]+")", + "Thank you for using Gentoo. :)", + "Are you actually trying to read this?", + "How many times have you stared at this?", + "We are generating the cache right now", + "You are paying too much attention.", + "A theory is better than its explanation.", + "Phasers locked on target, Captain.", + "Thrashing is just virtual crashing.", + "To be is to program.", + "Real Users hate Real Programmers.", + "When all else fails, read the instructions.", + "Functionality breeds Contempt.", + "The future lies ahead.", + "3.1415926535897932384626433832795028841971694", + "Sometimes insanity is the only alternative.", + "Inaccuracy saves a world of explanation.", + ] + + twirl_sequence = "/-\\|/-\\|/-\\|/-\\|\\-/|\\-/|\\-/|\\-/|" -def update_scroll_spinner(): - global spinner, spinpos - if(spinpos >= len(spinner)): - sys.stdout.write(darkgreen(" \b\b\b"+spinner[len(spinner)-1-(spinpos%len(spinner))])) - else: - sys.stdout.write(green("\b "+spinner[spinpos])) - sys.stdout.flush() - spinpos = (spinpos+1) % (2*len(spinner)) + def __init__(self): + self.spinpos = 0 + self.update = self.update_twirl + self.scroll_sequence = self.scroll_msgs[ + int(time.time() * 100) % len(self.scroll_msgs)] + + def update_basic(self): + self.spinpos = (self.spinpos + 1) % 500 + if (self.spinpos % 100) == 0: + if self.spinpos == 0: + sys.stdout.write(". ") + else: + sys.stdout.write(".") + sys.stdout.flush() -def update_twirl_spinner(): - global spinner, spinpos - spinpos = (spinpos+1) % len(spinner) - sys.stdout.write("\b\b "+spinner[spinpos]) - sys.stdout.flush() + def update_scroll(self): + if(self.spinpos >= len(self.scroll_sequence)): + sys.stdout.write(darkgreen(" \b\b\b" + self.scroll_sequence[ + len(self.scroll_sequence) - 1 - (self.spinpos % len(self.scroll_sequence))])) + else: + sys.stdout.write(green("\b " + self.scroll_sequence[self.spinpos])) + sys.stdout.flush() + self.spinpos = (self.spinpos + 1) % (2 * len(self.scroll_sequence)) + + def update_twirl(self): + self.spinpos = (self.spinpos + 1) % len(self.twirl_sequence) + sys.stdout.write("\b\b " + self.twirl_sequence[self.spinpos]) + sys.stdout.flush() -def update_quiet_spinner(): - return + def update_quiet(self): + return -spinpos = 0 -spinner = "/-\\|/-\\|/-\\|/-\\|\\-/|\\-/|\\-/|\\-/|" -update_spinner = update_twirl_spinner +spinner = stdout_spinner() if "candy" in portage.settings.features: - spinner = spinner_msgs[int(time.time()*100)%len(spinner_msgs)] - update_spinner = update_scroll_spinner + spinner.update = spinner.update_scroll # To enhance usability, make some vars case insensitive by forcing them to # lower case. @@ -343,7 +347,7 @@ if ("--tree" in myopts) and ("--columns" in myopts): sys.exit(1) if ("--quiet" in myopts): - update_spinner = update_quiet_spinner + spinner.update = spinner.update_quiet portage_util.noiselimit = -1 portage.settings.unlock() portage.settings["PORTAGE_QUIET"]="1" @@ -445,7 +449,7 @@ portage.settings["NOCOLOR"] in ("yes","true"): if not ("--quiet" in myopts): if not sys.stdout.isatty() or ("--nospinner" in myopts): - update_spinner = update_basic_spinner + spinner.update = spinner.update_basic CLEAN_DELAY = 5 EMERGE_WARNING_DELAY = 10 @@ -714,7 +718,7 @@ class search: self.searchkey=re.sub("\+\+","\+\+",self.searchkey) self.searchre=re.compile(self.searchkey.lower(),re.I) for package in portage.portdb.cp_all(): - update_spinner() + spinner.update() if match_category: match_string = package[:] @@ -931,7 +935,7 @@ class depgraph: #this conditional is needed to prevent infinite recursion on already-processed deps return 1 - update_spinner() + spinner.update() mytype,myroot,mykey=mybigkey # select the correct /var database that we'll be checking against -- cgit v1.2.3-1-g7c22