Viewer.py
changeset 634 cc3335911c01
parent 633 3536f4469cde
child 641 e9295622ce9b
equal deleted inserted replaced
633:3536f4469cde 634:cc3335911c01
   497         self.CurrentLanguage = "FBD"
   497         self.CurrentLanguage = "FBD"
   498         
   498         
   499         if not self.Debug:
   499         if not self.Debug:
   500             self.Editor.SetDropTarget(ViewerDropTarget(self))
   500             self.Editor.SetDropTarget(ViewerDropTarget(self))
   501         
   501         
   502         self.NewDataRefreshRect = None
   502         self.ElementRefreshList = []
   503         self.NewDataRefreshRect_lock = Lock()
   503         self.ElementRefreshList_lock = Lock()
   504         
   504         
   505         dc = wx.ClientDC(self.Editor)
   505         dc = wx.ClientDC(self.Editor)
   506         font = wx.Font(faces["size"], wx.SWISS, wx.NORMAL, wx.NORMAL, faceName = faces["mono"])
   506         font = wx.Font(faces["size"], wx.SWISS, wx.NORMAL, wx.NORMAL, faceName = faces["mono"])
   507         dc.SetFont(font)
   507         dc.SetFont(font)
   508         width, height = dc.GetTextExtent("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
   508         width, height = dc.GetTextExtent("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
   883         
   883         
   884 #-------------------------------------------------------------------------------
   884 #-------------------------------------------------------------------------------
   885 #                          Refresh functions
   885 #                          Refresh functions
   886 #-------------------------------------------------------------------------------
   886 #-------------------------------------------------------------------------------
   887 
   887 
   888     def UpdateRefreshRect(self, refresh_rect):
   888     def ElementNeedRefresh(self, element):
   889         self.NewDataRefreshRect_lock.acquire()
   889         self.ElementRefreshList_lock.acquire()
   890         if self.NewDataRefreshRect is None:
   890         self.ElementRefreshList.append(element)
   891             self.NewDataRefreshRect = refresh_rect
   891         self.ElementRefreshList_lock.release()
   892         else:
       
   893             self.NewDataRefreshRect.Union(refresh_rect)
       
   894         self.NewDataRefreshRect_lock.release()
       
   895         
   892         
   896     def RefreshNewData(self):
   893     def RefreshNewData(self):
   897         if self.NewDataRefreshRect is not None:
   894         refresh_rect = None
   898             self.NewDataRefreshRect_lock.acquire()
   895         self.ElementRefreshList_lock.acquire()
   899             refresh_rect, self.NewDataRefreshRect = self.NewDataRefreshRect, None
   896         for element in self.ElementRefreshList:
   900             self.NewDataRefreshRect_lock.release()
   897             if refresh_rect is None:
       
   898                 refresh_rect = element.GetRedrawRect()
       
   899             else:
       
   900                 refresh_rect.Union(element.GetRedrawRect())
       
   901         self.ElementRefreshList = []
       
   902         self.ElementRefreshList_lock.release()
       
   903         
       
   904         if refresh_rect is not None:
   901             self.RefreshRect(self.GetScrolledRect(refresh_rect), False)
   905             self.RefreshRect(self.GetScrolledRect(refresh_rect), False)
   902         else:
   906         else:
   903             DebugViewer.RefreshNewData(self)
   907             DebugViewer.RefreshNewData(self)
   904         
   908         
   905     # Refresh Viewer elements
   909     # Refresh Viewer elements