--- a/LPCManager.py Wed Apr 05 13:03:42 2017 +0200
+++ b/LPCManager.py Wed Apr 05 13:20:35 2017 +0200
@@ -15,6 +15,7 @@
_lpcmanager_path = os.path.split(__file__)[0]
_dist_folder = os.path.split(sys.path[0])[0]
_beremiz_folder = os.path.join(_dist_folder, "beremiz")
sys.path.append(_beremiz_folder)
if __name__ == '__main__':
@@ -139,8 +140,33 @@
from editors.ProjectNodeEditor import ProjectNodeEditor
from editors.CodeFileEditor import VariablesTable
from editors.CodeFileEditor import VariablesEditor
+from editors.TextViewer import TextViewer, EditorPanel +from controls.CustomStyledTextCtrl import GetCursorPos from WampOptionsEditor import WampOptionsEditor
from VariableExporter import VariableWriter
+from PLCControler import PLCControler +def GetFunctionBlockTypes(self, tagname="", debug=False): + project = self.GetProject(debug) + words = tagname.split("::") + if project is not None and words[0] in ["P", "T", "A"]: + for blocks in self.TotalTypesDict.itervalues(): + for sectioname, block in blocks: + if block["type"] == "functionBlock": + blocktypes.append(block["name"]) + if project is not None: + blocktypes.extend([pou.getname() for pou in project.getpous(name, ["functionBlock"]) if (name is None or len(self.GetInstanceList(pou, name, debug)) == 0)]) + blocktypes.extend([pou.getname() for pou in project.getpous(name, ["functionBlock"])]) +PLCControler.GetFunctionBlockTypes = GetFunctionBlockTypes def LeftClick(self, event):
if event.GetCol() == self.grid.GetNumberCols()-1:
@@ -166,6 +192,56 @@
VariablesTable.LeftClick = LeftClick
+def RefreshView(self, variablepanel=True): + EditorPanel.RefreshView(self, variablepanel) + if self.Controler is not None: + self.DisableEvents = True + old_cursor_pos = self.GetCurrentPos() + line = self.Editor.GetFirstVisibleLine() + column = self.Editor.GetXOffset() + old_text = self.GetText() + new_text = self.Controler.GetEditedElementText(self.TagName, self.Debug) + if old_text != new_text: + new_cursor_pos = GetCursorPos(old_text, new_text) + self.Editor.LineScroll(column, line) + if new_cursor_pos != None: + self.Editor.GotoPos(new_cursor_pos) + self.Editor.GotoPos(old_cursor_pos) + self.Editor.EmptyUndoBuffer() + self.DisableEvents = False + self.RefreshVariableTree() + self.TypeNames = [typename.upper() for typename in self.Controler.GetDataTypes(self.TagName, True, self.Debug)] + self.EnumeratedValues = [value.upper() for value in self.Controler.GetEnumeratedDataValues()] + for category in self.Controler.GetBlockTypes(self.TagName, self.Debug): + for blocktype in category["list"]: + blockname = blocktype["name"].upper() + if blocktype["type"] == "function" and blockname not in self.Keywords and blockname not in self.Variables.keys(): + interface = dict([(name, {}) for name, type, modifier in blocktype["inputs"] + blocktype["outputs"] if name != '']) + for param in ["EN", "ENO"]: + if not interface.has_key(param): + if self.Functions.has_key(blockname): + self.Functions[blockname]["interface"].update(interface) + self.Functions[blockname]["extensible"] |= blocktype["extensible"] + self.Functions[blockname] = {"interface": interface, + "extensible": blocktype["extensible"]} +TextViewer.RefreshView = RefreshView def VariablesEditorSetCollSize(self):
ColSizes = [20, 150] + [130] * (len(self.VariablesDefaultValue) - 2) + [300]
for col in range(self.Table.GetNumberCols()):
@@ -245,6 +321,7 @@
WINDOW_COLOUR = wx.Colour(240, 240, 240)
TITLE_COLOUR = wx.Colour(200, 200, 220)
CHANGED_TITLE_COLOUR = wx.Colour(220, 200, 220)
@@ -1342,6 +1419,14 @@
+ checker = str(config.Read("Checker")) + config.Write("Checker", '0') AppendMenu(parent, help='', id=wx.ID_SAVE,
kind=wx.ITEM_NORMAL, text=_(u'Save\tCTRL+S'))
AppendMenu(parent, help='', id=wx.ID_CLOSE,
@@ -1357,6 +1442,9 @@
AppendMenu(parent, help='', id=ID_EXPORT,
kind=wx.ITEM_NORMAL, text=_(u'Export'))
+ parent.AppendCheckItem(ID_CHECK, u'Disable checking') + if (export or checker): AppendMenu(parent, help='', id=wx.ID_EXIT,
kind=wx.ITEM_NORMAL, text=_(u'Quit\tCTRL+Q'))
@@ -1368,6 +1456,7 @@
self.Bind(wx.EVT_MENU, self.OnPrintMenu, id=wx.ID_PRINT)
self.Bind(wx.EVT_MENU, lambda event: VariableWriter(self, event, self.CTR.ProjectPath), id=ID_EXPORT)
+ self.Bind(wx.EVT_MENU, lambda event: self.CheckEnabler(event), id=ID_CHECK) self.Bind(wx.EVT_MENU, self.OnQuitMenu, id=wx.ID_EXIT)
self.AddToMenuToolBar([(wx.ID_SAVE, "save", _(u'Save'), None),
@@ -1386,6 +1475,15 @@
+ def CheckEnabler(self, event): + if event.Selection == 1: def OnCloseFrame(self, event):