connectors/PYRO/dialog.py
author |
Andrey Skvortsov <andrej.skvortzov@gmail.com> |
|
Tue, 05 Mar 2019 11:19:36 +0300 |
changeset 2519 |
27955f010b23 |
parent 2182 |
eeca1aff0691
|
permissions |
-rw-r--r-- |
Fix crash if LD input contact isn't connected
Traceback (most recent call last):
File "/home/developer/WorkData/PLC/beremiz/beremiz/BeremizIDE.py", line 339, in OnMethod
obj.CTR.CallMethod('_'+meth)
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 1996, in CallMethod
getattr(self, method)()
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 1134, in _Build
IECGenRes = self._Generate_SoftPLC()
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 746, in _Generate_SoftPLC
if self._Generate_PLC_ST():
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 763, in _Generate_PLC_ST
self._getIECgeneratedcodepath())
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCControler.py", line 456, in GenerateProgram
self.ProgramChunks = GenerateCurrentProgram(self, self.Project, errors, warnings)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1762, in GenerateCurrentProgram
generator.GenerateProgram()
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 478, in GenerateProgram
self.GeneratePouProgram(pou_name)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 260, in GeneratePouProgram
program = pou_program.GenerateProgram(pou)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1718, in GenerateProgram
self.ComputeProgram(pou)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1028, in ComputeProgram
self.GenerateBlock(instance, block_infos, body, None)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1144, in GenerateBlock
expression = self.ComputeExpression(body, connections, executionOrderId > 0)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1373, in ComputeExpression
paths = self.GeneratePaths(connections, body, order, to_inout)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1344, in GeneratePaths
elif isinstance(result[0], list):
IndexError: list index out of range
Close #70
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Copyright (C) 2018: Smarteh
#
# See COPYING file for copyrights details.
from __future__ import absolute_import
from __future__ import print_function
import wx
from zope.interface import implementer
from controls.UriLocationEditor import IConnectorPanel
URITypes = ["LOCAL", "PYRO", "PYROS"]
def PYRO_connector_dialog(confnodesroot):
[ID_IPTEXT, ID_PORTTEXT] = [wx.NewId() for _init_ctrls in range(2)]
@implementer(IConnectorPanel)
class PYROConnectorPanel(wx.Panel):
def __init__(self, typeConnector, parrent, *args, **kwargs):
self.type = typeConnector
self.parrent = parrent
wx.Panel.__init__(self, parrent, *args, **kwargs)
self._init_ctrls()
self._init_sizers()
self.uri = None
def _init_ctrls(self):
self.IpText = wx.TextCtrl(parent=self, id=ID_IPTEXT, size=wx.Size(200, -1))
self.PortText = wx.TextCtrl(parent=self, id=ID_PORTTEXT, size=wx.Size(200, -1))
def _init_sizers(self):
self.mainSizer = wx.FlexGridSizer(cols=2, hgap=10, rows=5, vgap=10)
self.mainSizer.AddWindow(wx.StaticText(self, label=_("URI host:")),
flag=wx.ALIGN_CENTER_VERTICAL)
self.mainSizer.AddWindow(self.IpText, flag=wx.GROW)
self.mainSizer.AddWindow(wx.StaticText(self, label=_("URI port:")),
flag=wx.ALIGN_CENTER_VERTICAL)
self.mainSizer.AddWindow(self.PortText, flag=wx.GROW)
self.SetSizer(self.mainSizer)
def SetURI(self, uri):
self.uri = uri
uri_list = uri.strip().split(":")
length = len(uri_list)
if length == 3:
self.IpText.SetValue(uri_list[1].strip("/"))
self.PortText.SetValue(uri_list[2])
elif length == 2:
self.IpText.SetValue(uri_list[1].strip("/"))
def GetURI(self):
self.uri = self.type+"://"+self.IpText.GetValue()+":"+self.PortText.GetValue()
return self.uri
return PYROConnectorPanel("PYRO", confnodesroot)