316 else: |
316 else: |
317 self.LastRefreshTimer = Timer(REFRESH_PERIOD, wx.CallAfter, [self._write]) |
317 self.LastRefreshTimer = Timer(REFRESH_PERIOD, wx.CallAfter, [self._write]) |
318 self.LastRefreshTimer.start() |
318 self.LastRefreshTimer.start() |
319 |
319 |
320 def _write(self): |
320 def _write(self): |
321 self.output.Freeze(); |
321 if self.output : |
322 self.lock.acquire() |
322 self.output.Freeze(); |
323 for s, style in self.stack: |
323 self.lock.acquire() |
324 if style is None : style=self.black_white |
324 for s, style in self.stack: |
325 if self.default_style != style: |
325 if style is None : style=self.black_white |
326 self.output.SetDefaultStyle(style) |
326 if self.default_style != style: |
327 self.default_style = style |
327 self.output.SetDefaultStyle(style) |
328 self.output.AppendText(s) |
328 self.default_style = style |
329 self.output.ScrollLines(s.count('\n')+1) |
329 self.output.AppendText(s) |
330 self.stack = [] |
330 self.output.ScrollLines(s.count('\n')+1) |
331 self.lock.release() |
331 self.stack = [] |
332 self.output.ShowPosition(self.output.GetLastPosition()) |
332 self.lock.release() |
333 self.output.Thaw() |
333 self.output.ShowPosition(self.output.GetLastPosition()) |
334 self.LastRefreshTime = gettime() |
334 self.output.Thaw() |
335 try: |
335 self.LastRefreshTime = gettime() |
336 self.RefreshLock.release() |
336 try: |
337 except: |
337 self.RefreshLock.release() |
338 pass |
338 except: |
339 newtime = time.time() |
339 pass |
340 if newtime - self.rising_timer > 1: |
340 newtime = time.time() |
341 self.risecall() |
341 if newtime - self.rising_timer > 1: |
342 self.rising_timer = newtime |
342 self.risecall() |
|
343 self.rising_timer = newtime |
343 |
344 |
344 def write_warning(self, s): |
345 def write_warning(self, s): |
345 self.write(s,self.red_white) |
346 self.write(s,self.red_white) |
346 |
347 |
347 def write_error(self, s): |
348 def write_error(self, s): |
1764 |
1760 |
1765 def handle_exception(e_type, e_value, e_traceback): |
1761 def handle_exception(e_type, e_value, e_traceback): |
1766 traceback.print_exception(e_type, e_value, e_traceback) # this is very helpful when there's an exception in the rest of this func |
1762 traceback.print_exception(e_type, e_value, e_traceback) # this is very helpful when there's an exception in the rest of this func |
1767 last_tb = get_last_traceback(e_traceback) |
1763 last_tb = get_last_traceback(e_traceback) |
1768 ex = (last_tb.tb_frame.f_code.co_filename, last_tb.tb_frame.f_lineno) |
1764 ex = (last_tb.tb_frame.f_code.co_filename, last_tb.tb_frame.f_lineno) |
1769 if str(e_value).startswith("!!!"): |
1765 if ex not in ignored_exceptions: |
1770 Display_Error_Dialog(e_value) |
|
1771 elif ex not in ignored_exceptions: |
|
1772 date = time.ctime() |
1766 date = time.ctime() |
1773 bug_report_path = path+os.sep+"bug_report_"+date.replace(':','-').replace(' ','_')+".txt" |
1767 bug_report_path = path+os.sep+"bug_report_"+date.replace(':','-').replace(' ','_')+".txt" |
1774 result = Display_Exception_Dialog(e_type,e_value,e_traceback,bug_report_path) |
1768 result = Display_Exception_Dialog(e_type,e_value,e_traceback,bug_report_path) |
1775 if result: |
1769 if result: |
1776 ignored_exceptions.append(ex) |
1770 ignored_exceptions.append(ex) |