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: |