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 |