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