Viewer.py
changeset 269 34eff05909b0
parent 267 a95bfb76a1eb
child 272 3a9db28bc6b5
equal deleted inserted replaced
268:5508af39d1f7 269:34eff05909b0
   779                 negated = False
   779                 negated = False
   780             if instance["storage"]:
   780             if instance["storage"]:
   781                 storage = instance["storage"]
   781                 storage = instance["storage"]
   782             else:
   782             else:
   783                 storage = "none"
   783                 storage = "none"
   784             if negated and storage == "none":
   784             if instance["edge"]:
       
   785                 edge = instance["edge"]
       
   786             else:
       
   787                 edge = "none"
       
   788             if negated and storage == "none" and edge == "none":
   785                 coil_type = COIL_REVERSE
   789                 coil_type = COIL_REVERSE
   786             elif not negated and storage == "set":
   790             elif not negated and edge == "none" and storage == "set":
   787                 coil_type = COIL_SET
   791                 coil_type = COIL_SET
   788             elif not negated and storage == "reset":
   792             elif not negated and edge == "none" and storage == "reset":
   789                 coil_type = COIL_RESET
   793                 coil_type = COIL_RESET
       
   794             elif not negated and storage == "none" and edge == "rising":
       
   795                 coil_type = COIL_RISING
       
   796             elif not negated and storage == "none" and edge == "falling":
       
   797                 coil_type = COIL_FALLING
   790             else:
   798             else:
   791                 coil_type = COIL_NORMAL
   799                 coil_type = COIL_NORMAL
   792             coil = LD_Coil(self, coil_type, instance["name"], instance["id"])
   800             coil = LD_Coil(self, coil_type, instance["name"], instance["id"])
   793             coil.SetPosition(instance["x"], instance["y"])
   801             coil.SetPosition(instance["x"], instance["y"])
   794             coil.SetSize(instance["width"], instance["height"])
   802             coil.SetSize(instance["width"], instance["height"])
   869             connector = actionBlock.GetConnector()
   877             connector = actionBlock.GetConnector()
   870             connector.SetPosition(wx.Point(*instance["connector"]["position"]))
   878             connector.SetPosition(wx.Point(*instance["connector"]["position"]))
   871             self.CreateWires(connector, instance["connector"]["links"], ids)
   879             self.CreateWires(connector, instance["connector"]["links"], ids)
   872         else:
   880         else:
   873             connectors = {"inputs" : [], "outputs" : []}
   881             connectors = {"inputs" : [], "outputs" : []}
       
   882             executionControl = False
   874             for input in instance["connectors"]["inputs"]:
   883             for input in instance["connectors"]["inputs"]:
   875                 if input["negated"]:
   884                 if input["negated"]:
   876                     connectors["inputs"].append((input["name"], None, "negated"))
   885                     connectors["inputs"].append((input["name"], None, "negated"))
   877                 elif input["edge"]:
   886                 elif input["edge"]:
   878                     connectors["inputs"].append((input["name"], None, input["edge"]))
   887                     connectors["inputs"].append((input["name"], None, input["edge"]))
   883                     connectors["outputs"].append((output["name"], None, "negated"))
   892                     connectors["outputs"].append((output["name"], None, "negated"))
   884                 elif output["edge"]:
   893                 elif output["edge"]:
   885                     connectors["outputs"].append((output["name"], None, output["edge"]))
   894                     connectors["outputs"].append((output["name"], None, output["edge"]))
   886                 else:
   895                 else:
   887                     connectors["outputs"].append((output["name"], None, "none"))
   896                     connectors["outputs"].append((output["name"], None, "none"))
   888             if instance["name"] != None:
   897             if connectors["inputs"][0][0] == "EN" and connectors["outputs"][0][0] == "ENO":
   889                 block = FBD_Block(self, instance["type"], instance["name"], instance["id"], len(instance["connectors"]["inputs"]), connectors=connectors, executionOrder=instance["executionOrder"])
   898                 connectors["inputs"].pop(0)
   890             else:
   899                 connectors["outputs"].pop(0)
   891                 block = FBD_Block(self, instance["type"], "", instance["id"], len(instance["connectors"]["inputs"]), connectors=connectors, executionOrder=instance["executionOrder"])
   900                 executionControl = True
       
   901             if instance["name"] is None:
       
   902                 instance["name"] = ""
       
   903             block = FBD_Block(self, instance["type"], instance["name"], 
       
   904                     instance["id"], len(connectors["inputs"]), 
       
   905                     connectors=connectors, executionControl=executionControl, 
       
   906                     executionOrder=instance["executionOrder"])
   892             block.SetPosition(instance["x"], instance["y"])
   907             block.SetPosition(instance["x"], instance["y"])
   893             block.SetSize(instance["width"], instance["height"])
   908             block.SetSize(instance["width"], instance["height"])
   894             self.AddBlock(block)
   909             self.AddBlock(block)
   895             connectors = block.GetConnectors()
   910             connectors = block.GetConnectors()
   896             for i, input_connector in enumerate(instance["connectors"]["inputs"]):
   911             for i, input_connector in enumerate(instance["connectors"]["inputs"]):
  1561         dialog.SetPouElementNames(self.Controler.GetEditedElementVariables(self.TagName, self.Debug))
  1576         dialog.SetPouElementNames(self.Controler.GetEditedElementVariables(self.TagName, self.Debug))
  1562         dialog.SetMinBlockSize((bbox.width, bbox.height))
  1577         dialog.SetMinBlockSize((bbox.width, bbox.height))
  1563         if dialog.ShowModal() == wx.ID_OK:
  1578         if dialog.ShowModal() == wx.ID_OK:
  1564             id = self.GetNewId()
  1579             id = self.GetNewId()
  1565             values = dialog.GetValues()
  1580             values = dialog.GetValues()
  1566             if "name" in values:
  1581             values.setdefault("name", "")
  1567                 block = FBD_Block(self, values["type"], values["name"], id, values["extension"], values["inputs"])
  1582             block = FBD_Block(self, values["type"], values["name"], id, 
  1568             else:
  1583                     values["extension"], values["inputs"], 
  1569                 block = FBD_Block(self, values["type"], "", id, values["extension"], values["inputs"])
  1584                     executionControl = values["executionControl"],
       
  1585                     executionOrder = values["executionOrder"])
  1570             block.SetPosition(bbox.x, bbox.y)
  1586             block.SetPosition(bbox.x, bbox.y)
  1571             block.SetSize(*self.GetScaledSize(values["width"], values["height"]))
  1587             block.SetSize(*self.GetScaledSize(values["width"], values["height"]))
  1572             self.AddBlock(block)
  1588             self.AddBlock(block)
  1573             self.Controler.AddEditedElementBlock(self.TagName, id, values["type"], values.get("name", None))
  1589             self.Controler.AddEditedElementBlock(self.TagName, id, values["type"], values.get("name", None))
  1574             self.RefreshBlockModel(block)
  1590             self.RefreshBlockModel(block)
  1859         variable_names = self.Controler.GetEditedElementVariables(self.TagName, self.Debug)
  1875         variable_names = self.Controler.GetEditedElementVariables(self.TagName, self.Debug)
  1860         if block.GetName() != "":
  1876         if block.GetName() != "":
  1861             variable_names.remove(block.GetName())
  1877             variable_names.remove(block.GetName())
  1862         dialog.SetPouElementNames(variable_names)
  1878         dialog.SetPouElementNames(variable_names)
  1863         dialog.SetMinBlockSize(block.GetSize())
  1879         dialog.SetMinBlockSize(block.GetSize())
  1864         old_values = {"name" : block.GetName(), "type" : block.GetType(), "inputs" : block.GetInputTypes(), 
  1880         old_values = {"name" : block.GetName(), 
  1865             "executionOrder" : block.GetExecutionOrder(), "extension" : block.GetExtension()}
  1881                       "type" : block.GetType(), 
       
  1882                       "extension" : block.GetExtension(), 
       
  1883                       "inputs" : block.GetInputTypes(), 
       
  1884                       "executionControl" : block.GetExecutionControl(), 
       
  1885                       "executionOrder" : block.GetExecutionOrder()}
  1866         dialog.SetValues(old_values)
  1886         dialog.SetValues(old_values)
  1867         if dialog.ShowModal() == wx.ID_OK:
  1887         if dialog.ShowModal() == wx.ID_OK:
  1868             new_values = dialog.GetValues()
  1888             new_values = dialog.GetValues()
  1869             rect = block.GetRedrawRect(1, 1)
  1889             rect = block.GetRedrawRect(1, 1)
  1870             if "name" in new_values:
  1890             if "name" in new_values:
  1871                 block.SetName(new_values["name"])
  1891                 block.SetName(new_values["name"])
  1872             else:
  1892             else:
  1873                 block.SetName("")
  1893                 block.SetName("")
  1874             block.SetSize(*self.GetScaledSize(new_values["width"], new_values["height"]))
  1894             block.SetSize(*self.GetScaledSize(new_values["width"], new_values["height"]))
  1875             block.SetType(new_values["type"], new_values["extension"])
  1895             block.SetType(new_values["type"], new_values["extension"], executionControl = new_values["executionControl"])
  1876             block.SetExecutionOrder(new_values["executionOrder"])
  1896             block.SetExecutionOrder(new_values["executionOrder"])
  1877             rect = rect.Union(block.GetRedrawRect())
  1897             rect = rect.Union(block.GetRedrawRect())
  1878             self.RefreshBlockModel(block)
  1898             self.RefreshBlockModel(block)
  1879             if old_values["executionOrder"] != new_values["executionOrder"]:
       
  1880                 self.RefreshView()
       
  1881             self.RefreshBuffer()
  1899             self.RefreshBuffer()
  1882             self.RefreshScrollBars()
  1900             self.RefreshScrollBars()
  1883             self.RefreshVisibleElements()
  1901             self.RefreshVisibleElements()
  1884             self.ParentWindow.RefreshVariablePanel(self.TagName)
  1902             self.ParentWindow.RefreshVariablePanel(self.TagName)
  1885             self.ParentWindow.RefreshInstancesTree()
  1903             self.ParentWindow.RefreshInstancesTree()
  1886             block.Refresh(rect)
  1904             if old_values["executionOrder"] != new_values["executionOrder"]:
       
  1905                 self.RefreshView()
       
  1906             else:
       
  1907                 block.Refresh(rect)
  1887         dialog.Destroy()
  1908         dialog.Destroy()
  1888 
  1909 
  1889     def EditVariableContent(self, variable):
  1910     def EditVariableContent(self, variable):
  1890         words = self.TagName.split("::")
  1911         words = self.TagName.split("::")
  1891         if words[0] == "T":
  1912         if words[0] == "T":