예제 #1
0
파일: mterm.py 프로젝트: sofiakarb/exareme
                        emsgsplit = emsg.split(u':')
                        print Fore.RED + Style.BRIGHT + emsgsplit[0] + u':' + Style.RESET_ALL + u':'.join(emsgsplit[1:])
                    else:
                        print e
                except:
                    print e

            continue
        except Exception, e:
            trlines = []

            for i in reversed(traceback.format_exc(limit=sys.getrecursionlimit()).splitlines()):
                trlines.append(i)
                if i.strip().startswith('File'):
                    break

            msg = Fore.RED + Style.BRIGHT + "Unknown error:" + Style.RESET_ALL + "\nTraceback is:\n" + '\n'.join(
                reversed(trlines))
            if pipedinput:
                exitwitherror(functions.mstr(msg))
            else:
                print msg

        finally:
            colorama.deinit()
            try:
                cursor.close()
            except:
                # print "Not proper clean-up"
                pass
            if pipedinput:
                exitwitherror(functions.mstr(emsg))
            try:
                if u'Error:' in emsg:
                    emsgsplit=emsg.split(u':')
                    print Fore.RED+Style.BRIGHT+ emsgsplit[0] +u':'+Style.RESET_ALL+ u':'.join(emsgsplit[1:])
                else:
                    print e
            except:
                print e
            continue
        except Exception, e:
            trlines = []
            for i in reversed(traceback.format_exc().splitlines()):
                trlines.append(i)
                if i.strip().startswith('File'):
                    break
            msg=Fore.RED+Style.BRIGHT+"Unknown error:" + Style.RESET_ALL + "\nTraceback is:\n" + '\n'.join(reversed(trlines))
            if pipedinput:
                exitwitherror(functions.mstr(msg))
            print msg

        finally:
            colorama.deinit()
            try:
                cursor.close()
            except:
                #print "Not proper clean-up"
                pass

예제 #3
0
 def activate(self):
     thread = None
     ''' Like ``FrameVisualizer``, ``AsciiVisualizer`` won't start
     on init - if you want to see the output, you have to invoke this
     method. '''
     colorama.init()
     _clear()
     self._help()
     self.prev_frame = None
     print(Fore.MAGENTA + Style.BRIGHT + 'Press Any Key to begin...')
     self._detect_arrow(getch())
     self._print_frame_diff(0)
     self.nextc = False
     self.prevspec = False
     try:
         while True:
             (key, arrow) = self._read_key()
             self.stop = True
             if arrow is None and key is None:
                 continue
             if arrow == 'H':
                 self._print_frame_diff(0)
             elif arrow == 'E':
                 self._print_frame_diff(len(self.game_controller.jury_states) - 1)
             elif arrow == 'N':
                 self._print_frame_diff(
                     min(
                         len(self.game_controller.jury_states) - 1,
                         self.frame_number +
                             ceil(len(self.game_controller.jury_states) / 20)
                     )
                 )
             elif arrow == 'U':
                 self._print_frame_diff(
                     max(0, self.frame_number -
                         ceil(len(self.game_controller.jury_states) / 20))
                 )
             elif arrow == 'C' or arrow is None and key in self.key_sets['next']:  # next
                 if self.frame_number < self._jury_state_count() - 1:
                     if name == 'posix':
                         self._print_frame_diff(self.frame_number + 1)
                     else:
                         self._print_frame_diff(self.frame_number + 1)
                 else:
                     self._print_frame_diff(self.frame_number)
                     self._error('this is the last frame.')
             elif arrow == 'D' or arrow is None and key in self.key_sets['prev']:  # prev
                 if self.frame_number > 0:
                     self._print_frame_diff(self.frame_number - 1)
                 else:
                     self._print_frame_diff(self.frame_number)
                     self._error('this is the first frame.')
             elif arrow == 'A' or arrow is None and key in self.key_sets['auto']:
                 while True:
                     reply = self._prompt(
                         'Enter FPS and, optionally, the frame to stop on (separated by a space)')
                     if reply:
                         cmd = reply.split()
                         try:
                             speed = float(cmd[0])
                         except ValueError:
                             speed = 0
                         if speed:
                             jscount = self._jury_state_count()
                             if speed >= 0:
                                 addv = 1
                                 time = 1 / speed
                             else:
                                 addv = -1
                                 time = -1 / speed
                             if len(cmd) > 1 and cmd[1].isnumeric():
                                 endframe = int(cmd[1]) - 1
                             else:
                                 endframe = jscount
                             try:
                                 if not thread or not thread.is_alive():
                                     self.stop = False
                                     self.prev_frame = None
                                     thread = Thread(target=self.auto,
                                                     args=(addv, time, jscount, endframe, name))
                                     thread.start()
                             except KeyboardInterrupt:
                                 _clear()
                                 self._print_frame(self.frame_number)
                             break
                     self._error('The speed must be a real nonzero number')
             elif arrow is None and key in self.key_sets['quit']:
                 print('Quit')
                 return None
             elif arrow == 'B' or arrow is None and key in self.key_sets['jump']:
                 while True:
                     frame = self._prompt('Enter frame number')
                     # Add some fool-protection...
                     if frame.isnumeric():
                         number = int(frame) - 1
                         if number >= 0 and number < self._jury_state_count():
                             self._print_frame(number)
                             break
                         else:
                             if number < 0:
                                 self._error('Enter a positive integer.')
                             else:
                                 self._error('No such frame.')
                     else:
                         self._error('Enter a positive integer.')
             else:
                 self._print_frame(self.frame_number)
                 self._help()
                 self.prev_frame = None
     finally:
         _clear()
         colorama.deinit()