Beremiz.py
changeset 701 166db2cb630b
parent 692 8b1ed486f374
child 702 01f5e6356859
equal deleted inserted replaced
700:b0a7abd50b09 701:166db2cb630b
   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):
  1741     finally:
  1742     finally:
  1742         dlg.Destroy()
  1743         dlg.Destroy()
  1743 
  1744 
  1744     return res
  1745     return res
  1745 
  1746 
  1746 def Display_Error_Dialog(e_value):
       
  1747     message = wxMessageDialog(None, str(e_value), _("Error"), wxOK|wxICON_ERROR)
       
  1748     message.ShowModal()
       
  1749     message.Destroy()
       
  1750 
       
  1751 def get_last_traceback(tb):
  1747 def get_last_traceback(tb):
  1752     while tb.tb_next:
  1748     while tb.tb_next:
  1753         tb = tb.tb_next
  1749         tb = tb.tb_next
  1754     return tb
  1750     return tb
  1755 
  1751 
  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)