1058 |
1058 |
1059 if self.TagName.split("::")[0] == "A": |
1059 if self.TagName.split("::")[0] == "A": |
1060 self.AddDataConsumer("%s.Q" % self.InstancePath.upper(), self) |
1060 self.AddDataConsumer("%s.Q" % self.InstancePath.upper(), self) |
1061 |
1061 |
1062 if self.ToolTipElement is not None: |
1062 if self.ToolTipElement is not None: |
1063 self.ToolTipElement.ClearToolTip() |
1063 self.ToolTipElement.DestroyToolTip() |
1064 self.ToolTipElement = None |
1064 self.ToolTipElement = None |
1065 |
1065 |
1066 self.Inhibit(True) |
1066 self.Inhibit(True) |
1067 self.current_id = 0 |
1067 self.current_id = 0 |
1068 # Start by reseting Viewer |
1068 # Start by reseting Viewer |
1642 def OnViewerMouseEvent(self, event): |
1642 def OnViewerMouseEvent(self, event): |
1643 if not event.Entering(): |
1643 if not event.Entering(): |
1644 self.ResetBuffer() |
1644 self.ResetBuffer() |
1645 element = None |
1645 element = None |
1646 if not event.Leaving() and not event.LeftUp() and not event.LeftDClick(): |
1646 if not event.Leaving() and not event.LeftUp() and not event.LeftDClick(): |
1647 element = self.FindElement(event, True, False) |
1647 dc = self.GetLogicalDC() |
|
1648 pos = event.GetLogicalPosition(dc) |
|
1649 element = self.FindBlockConnector(pos) |
|
1650 if element is None: |
|
1651 element = self.FindElement(event, True, False) |
1648 if self.ToolTipElement is not None: |
1652 if self.ToolTipElement is not None: |
1649 self.ToolTipElement.ClearToolTip() |
1653 self.ToolTipElement.DestroyToolTip() |
1650 self.ToolTipElement = element |
1654 self.ToolTipElement = element |
1651 if self.ToolTipElement is not None: |
1655 if self.ToolTipElement is not None: |
1652 tooltip_pos = self.Editor.ClientToScreen(event.GetPosition()) |
1656 tooltip_pos = self.Editor.ClientToScreen(event.GetPosition()) |
1653 tooltip_pos.x += 10 |
1657 tooltip_pos.x += 10 |
1654 tooltip_pos.y += 10 |
1658 tooltip_pos.y += 10 |
1655 self.ToolTipElement.CreateToolTip(tooltip_pos) |
1659 self.ToolTipElement.DisplayToolTip(tooltip_pos) |
1656 event.Skip() |
1660 event.Skip() |
1657 |
1661 |
1658 def OnViewerLeftDown(self, event): |
1662 def OnViewerLeftDown(self, event): |
1659 self.Editor.CaptureMouse() |
1663 self.Editor.CaptureMouse() |
1660 if self.Mode == MODE_SELECTION: |
1664 if self.Mode == MODE_SELECTION: |
1887 if self.Editor.HasCapture(): |
1891 if self.Editor.HasCapture(): |
1888 self.Editor.ReleaseMouse() |
1892 self.Editor.ReleaseMouse() |
1889 event.Skip() |
1893 event.Skip() |
1890 |
1894 |
1891 def OnViewerLeftDClick(self, event): |
1895 def OnViewerLeftDClick(self, event): |
1892 element = self.FindElement(event, connectors=False) |
1896 element = self.FindElement(event) |
1893 if self.Mode == MODE_SELECTION and element is not None: |
1897 if self.Mode == MODE_SELECTION and element is not None: |
1894 if self.SelectedElement is not None and self.SelectedElement != element: |
1898 if self.SelectedElement is not None and self.SelectedElement != element: |
1895 self.SelectedElement.SetSelected(False) |
1899 self.SelectedElement.SetSelected(False) |
1896 if self.HighlightedElement is not None and self.HighlightedElement != element: |
1900 if self.HighlightedElement is not None and self.HighlightedElement != element: |
1897 self.HighlightedElement.SetHighlighted(False) |
1901 self.HighlightedElement.SetHighlighted(False) |
1900 self.HighlightedElement = element |
1904 self.HighlightedElement = element |
1901 self.SelectedElement.SetHighlighted(True) |
1905 self.SelectedElement.SetHighlighted(True) |
1902 |
1906 |
1903 if self.Debug: |
1907 if self.Debug: |
1904 if isinstance(self.SelectedElement, FBD_Block): |
1908 if isinstance(self.SelectedElement, FBD_Block): |
1905 instance_type = self.SelectedElement.GetType() |
1909 dc = self.GetLogicalDC() |
1906 pou_type = { |
1910 pos = event.GetLogicalPosition(dc) |
1907 "program": ITEM_PROGRAM, |
1911 connector = self.SelectedElement.TestConnector(pos, EAST) |
1908 "functionBlock": ITEM_FUNCTIONBLOCK, |
1912 if connector is not None and len(connector.GetWires()) == 0: |
1909 }.get(self.Controler.GetPouType(instance_type)) |
1913 iec_path = self.GetElementIECPath(connector) |
1910 if pou_type is not None and instance_type in self.Controler.GetProjectPouNames(self.Debug): |
1914 if iec_path is not None: |
1911 self.ParentWindow.OpenDebugViewer(pou_type, |
1915 self.ParentWindow.OpenDebugViewer( |
1912 "%s.%s"%(self.GetInstancePath(True), self.SelectedElement.GetName()), |
1916 ITEM_VAR_LOCAL, iec_path, connector.GetType()) |
1913 self.Controler.ComputePouName(instance_type)) |
1917 else: |
|
1918 instance_type = self.SelectedElement.GetType() |
|
1919 pou_type = { |
|
1920 "program": ITEM_PROGRAM, |
|
1921 "functionBlock": ITEM_FUNCTIONBLOCK, |
|
1922 }.get(self.Controler.GetPouType(instance_type)) |
|
1923 if pou_type is not None and instance_type in self.Controler.GetProjectPouNames(self.Debug): |
|
1924 self.ParentWindow.OpenDebugViewer(pou_type, |
|
1925 "%s.%s"%(self.GetInstancePath(True), self.SelectedElement.GetName()), |
|
1926 self.Controler.ComputePouName(instance_type)) |
1914 else: |
1927 else: |
1915 iec_path = self.GetElementIECPath(self.SelectedElement) |
1928 iec_path = self.GetElementIECPath(self.SelectedElement) |
1916 if iec_path is not None: |
1929 if iec_path is not None: |
1917 if isinstance(self.SelectedElement, Wire): |
1930 if isinstance(self.SelectedElement, Wire): |
1918 if self.SelectedElement.EndConnected is not None: |
1931 if self.SelectedElement.EndConnected is not None: |
1991 self.RefreshRect(self.GetScrolledRect(self.SelectedElement.GetRedrawRect(movex, movey)), False) |
2004 self.RefreshRect(self.GetScrolledRect(self.SelectedElement.GetRedrawRect(movex, movey)), False) |
1992 self.RefreshVisibleElements() |
2005 self.RefreshVisibleElements() |
1993 elif self.Debug and self.StartMousePos is not None and event.Dragging(): |
2006 elif self.Debug and self.StartMousePos is not None and event.Dragging(): |
1994 pos = event.GetPosition() |
2007 pos = event.GetPosition() |
1995 if abs(self.StartMousePos.x - pos.x) > 5 or abs(self.StartMousePos.y - pos.y) > 5: |
2008 if abs(self.StartMousePos.x - pos.x) > 5 or abs(self.StartMousePos.y - pos.y) > 5: |
1996 iec_path = self.GetElementIECPath(self.SelectedElement) |
2009 element = self.SelectedElement |
|
2010 if isinstance(self.SelectedElement, FBD_Block): |
|
2011 dc = self.GetLogicalDC() |
|
2012 connector = self.SelectedElement.TestConnector( |
|
2013 wx.Point(dc.DeviceToLogicalX(self.StartMousePos.x), |
|
2014 dc.DeviceToLogicalY(self.StartMousePos.y))) |
|
2015 if connector is not None: |
|
2016 element = connector |
|
2017 iec_path = self.GetElementIECPath(element) |
1997 if iec_path is not None: |
2018 if iec_path is not None: |
1998 self.StartMousePos = None |
2019 self.StartMousePos = None |
1999 if self.HighlightedElement is not None: |
2020 if self.HighlightedElement is not None: |
2000 self.HighlightedElement.SetHighlighted(False) |
2021 self.HighlightedElement.SetHighlighted(False) |
2001 self.HighlightedElement = None |
2022 self.HighlightedElement = None |