def input_string(msg=[], pattern="^[a-zA-Z0-9]$", default="", spell=True): voice.menu(msg) s = default while True: e = pygame.event.poll() if e.type == QUIT: sys.exit() elif e.type == KEYDOWN: pygame.event.clear() if e.key in [K_LSHIFT, K_RSHIFT]: continue if e.key in (K_RETURN, K_KP_ENTER): voice.item([s]) return s elif e.key == K_ESCAPE: return None elif e.key == K_BACKSPACE: s = s[:-1] voice.item(string_to_msg(s, spell)) elif re.match(pattern, e.unicode) != None: try: c = e.unicode.encode("ascii") # telnetlib doesn't like unicode s += c voice.item(string_to_msg(c) + [9999] + string_to_msg(s, spell)) except: warning("error reading character from keyboard") voice.item([1003, 9999] + string_to_msg(s, spell)) else: voice.item([1003, 9999] + string_to_msg(s, spell)) elif e.type == USEREVENT: voice.update() voice.update() # XXX useful for SAPI
def _try_to_get_choice(self, e): if e.type == QUIT: sys.exit() if e.type == USEREVENT: voice.update() elif e.type == KEYDOWN: self._process_keydown(e) voice.update() # XXX useful for SAPI
def loop(self): self.end_loop = False while not self.end_loop: self._process_available_server_lines() # to avoid empty menus self.step() if self.auto: if self.auto[0].run(self): del self.auto[0] voice.update() # for voice.info() time.sleep(.01)
def loop(self): debug("%s loop...", self.__class__.__name__) self.end_loop = False while not self.end_loop: self.server_is_done = False while not self.server_is_done: # avoid menus with no choices self._process_server() if self.end_loop: debug("break loop because end_loop") break # when "quit" is received self.step() voice.update() # for voice.info() time.sleep(.01) debug("...end %s loop", self.__class__.__name__)