editors/Viewer.py
changeset 1224 30e72bc7d21b
parent 1208 d22fcdfae8d0
child 1225 ed8a89171a6c
equal deleted inserted replaced
1223:d51cea72baa7 1224:30e72bc7d21b
    22 #License along with this library; if not, write to the Free Software
    22 #License along with this library; if not, write to the Free Software
    23 #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    23 #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    24 
    24 
    25 import re
    25 import re
    26 import math
    26 import math
    27 import time
    27 from time import time as gettime
    28 from types import TupleType
    28 from types import TupleType
    29 from threading import Lock
    29 from threading import Lock
    30 
    30 
    31 import wx
    31 import wx
    32 
    32 
    33 from plcopen.structures import *
    33 from plcopen.structures import *
    34 from PLCControler import ITEM_VAR_LOCAL, ITEM_POU, ITEM_PROGRAM, ITEM_FUNCTIONBLOCK
    34 from PLCControler import ITEM_VAR_LOCAL, ITEM_POU, ITEM_PROGRAM, ITEM_FUNCTIONBLOCK
    35 
    35 
    36 from dialogs import *
    36 from dialogs import *
    37 from graphics import *
    37 from graphics import *
    38 from editors.DebugViewer import DebugViewer
    38 from editors.DebugViewer import DebugViewer, REFRESH_PERIOD
    39 from EditorPanel import EditorPanel
    39 from EditorPanel import EditorPanel
    40 
    40 
    41 SCROLLBAR_UNIT = 10
    41 SCROLLBAR_UNIT = 10
    42 WINDOW_BORDER = 10
    42 WINDOW_BORDER = 10
    43 SCROLL_ZONE = 10
    43 SCROLL_ZONE = 10
   576         self.SearchResults = None
   576         self.SearchResults = None
   577         self.CurrentFindHighlight = None
   577         self.CurrentFindHighlight = None
   578         self.InstancePath = instancepath
   578         self.InstancePath = instancepath
   579         self.StartMousePos = None
   579         self.StartMousePos = None
   580         self.StartScreenPos = None
   580         self.StartScreenPos = None
       
   581         
       
   582         # Prevent search for highlighted element to be called too often
       
   583         self.LastHighlightCheckTime = gettime()
       
   584         # Prevent search for element producing tooltip to be called too often
       
   585         self.LastToolTipCheckTime = gettime()
       
   586         
   581         self.Buffering = False
   587         self.Buffering = False
   582         
   588         
   583         # Initialize Cursors
   589         # Initialize Cursors
   584         ResetCursors()
   590         ResetCursors()
   585         self.CurrentCursor = 0
   591         self.CurrentCursor = 0
  1645 #-------------------------------------------------------------------------------
  1651 #-------------------------------------------------------------------------------
  1646 #                          Mouse event functions
  1652 #                          Mouse event functions
  1647 #-------------------------------------------------------------------------------
  1653 #-------------------------------------------------------------------------------
  1648 
  1654 
  1649     def OnViewerMouseEvent(self, event):
  1655     def OnViewerMouseEvent(self, event):
  1650         if not event.Entering():
  1656         self.ResetBuffer()
  1651             self.ResetBuffer()
  1657         if self.ToolTipElement is not None:
       
  1658             self.ToolTipElement.DestroyToolTip()
       
  1659         if (not event.Entering() and
       
  1660             gettime() - self.LastToolTipCheckTime > REFRESH_PERIOD):
       
  1661             self.LastToolTipCheckTime = gettime()
  1652             element = None
  1662             element = None
  1653             if not event.Leaving() and not event.LeftUp() and not event.LeftDClick():
  1663             if not event.Leaving() and not event.LeftUp() and not event.LeftDClick():
  1654                 dc = self.GetLogicalDC()
  1664                 dc = self.GetLogicalDC()
  1655                 pos = event.GetLogicalPosition(dc)
  1665                 pos = event.GetLogicalPosition(dc)
  1656                 element = self.FindBlockConnector(pos)
  1666                 element = self.FindBlockConnector(pos)
  1657                 if element is None:
  1667                 if element is None or len(element.GetWires()) > 0:
  1658                     element = self.FindElement(event, True, False)
  1668                     element = self.FindElement(event, True, False)
  1659             if self.ToolTipElement is not None:
       
  1660                 self.ToolTipElement.DestroyToolTip()
       
  1661             self.ToolTipElement = element
  1669             self.ToolTipElement = element
  1662             if self.ToolTipElement is not None:
  1670             if self.ToolTipElement is not None:
  1663                 tooltip_pos = self.Editor.ClientToScreen(event.GetPosition())
  1671                 tooltip_pos = self.Editor.ClientToScreen(event.GetPosition())
  1664                 tooltip_pos.x += 10
  1672                 tooltip_pos.x += 10
  1665                 tooltip_pos.y += 10
  1673                 tooltip_pos.y += 10
  1979                 else:
  1987                 else:
  1980                     self.Scroll(scrollx, scrolly)
  1988                     self.Scroll(scrollx, scrolly)
  1981                     self.RefreshScrollBars()
  1989                     self.RefreshScrollBars()
  1982                 self.RefreshVisibleElements()
  1990                 self.RefreshVisibleElements()
  1983         else:
  1991         else:
  1984             if not event.Dragging():
  1992             if (not event.Dragging() and
       
  1993                 gettime() - self.LastHighlightCheckTime > REFRESH_PERIOD):
       
  1994                 self.LastHighlightCheckTime = gettime()
  1985                 highlighted = self.FindElement(event, connectors=False) 
  1995                 highlighted = self.FindElement(event, connectors=False) 
  1986                 if self.HighlightedElement is not None and self.HighlightedElement != highlighted:
  1996                 if self.HighlightedElement is not None and self.HighlightedElement != highlighted:
  1987                     self.HighlightedElement.SetHighlighted(False)
  1997                     self.HighlightedElement.SetHighlighted(False)
  1988                     self.HighlightedElement = None
  1998                     self.HighlightedElement = None
  1989                 if highlighted is not None:
  1999                 if highlighted is not None: