editors/Viewer.py
changeset 1170 074e46cdedbc
parent 1166 2ed9675be08d
child 1176 f4b434672204
equal deleted inserted replaced
1169:53e4a2b775a7 1170:074e46cdedbc
  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