diff -r 2a70d5240300 -r 21164625b393 controls/VariablePanel.py --- a/controls/VariablePanel.py Fri Nov 23 11:01:20 2018 +0100 +++ b/controls/VariablePanel.py Fri Nov 23 12:13:24 2018 +0100 @@ -24,12 +24,15 @@ from __future__ import absolute_import +from __future__ import division import re -from types import TupleType, StringType, UnicodeType +from builtins import str as text import wx import wx.grid import wx.lib.buttons +from six import string_types +from six.moves import xrange from plcopen.structures import LOCATIONDATATYPES, TestIdentifier, IEC_KEYWORDS, DefaultType from plcopen.VariableInfoCollector import _VariableInfos @@ -98,8 +101,8 @@ "External": lambda x: {"Constant": "Constant"}.get(x, "") } -LOCATION_MODEL = re.compile("((?:%[IQM](?:\*|(?:[XBWLD]?[0-9]+(?:\.[0-9]+)*)))?)$") -LOCATION_MODEL_SET = re.compile("((?:%[IQM](?:[XBWLD]?[0-9]+(?:\.[0-9]+)*))?)$") +LOCATION_MODEL = re.compile(r"((?:%[IQM](?:\*|(?:[XBWLD]?[0-9]+(?:\.[0-9]+)*)))?)$") +LOCATION_MODEL_SET = re.compile(r"((?:%[IQM](?:[XBWLD]?[0-9]+(?:\.[0-9]+)*))?)$") # ------------------------------------------------------------------------------- @@ -137,10 +140,10 @@ if colname == "Initial Value": colname = "InitialValue" value = getattr(self.data[row], colname, "") - if colname == "Type" and isinstance(value, TupleType): + if colname == "Type" and isinstance(value, tuple): if value[0] == "array": return "ARRAY [%s] OF %s" % (",".join(map("..".join, value[2])), value[1]) - if not isinstance(value, (StringType, UnicodeType)): + if not isinstance(value, string_types): value = str(value) if colname in ["Class", "Option"]: return _(value) @@ -277,7 +280,7 @@ except Exception: message = _("Invalid value \"%s\" for variable grid element") % data values = None - if not isinstance(values, TupleType): + if not isinstance(values, tuple): message = _("Invalid value \"%s\" for variable grid element") % data values = None if values is not None: @@ -603,10 +606,10 @@ # increment location address if row_content.Location != "" and LOCATION_MODEL_SET.match(row_content.Location): old_location = row_content.Location - model = re.compile("%[IQM][XBWLD]?(.*\.|)") + model = re.compile(r"%[IQM][XBWLD]?(.*\.|)") prefix = model.match(old_location).group(0) addr = int(re.split(model, old_location)[-1]) + 1 - row_content.Location = prefix + unicode(addr) + row_content.Location = prefix + text(addr) if not row_content.Class: row_content.Class = self.DefaultTypes.get(self.Filter, self.Filter) @@ -682,7 +685,7 @@ self.VariablesGrid.SetColAttr(col, attr) self.VariablesGrid.SetColMinimalWidth(col, self.ColSettings["size"][col]) if (panel_width > self.PanelWidthMin) and not self.ColSettings["fixed_size"][col]: - self.VariablesGrid.SetColSize(col, int((float(self.ColSettings["size"][col])/stretch_cols_sum)*stretch_cols_width)) + self.VariablesGrid.SetColSize(col, int((self.ColSettings["size"][col]/stretch_cols_sum)*stretch_cols_width)) else: self.VariablesGrid.SetColSize(col, self.ColSettings["size"][col]) @@ -697,7 +700,7 @@ return self.TagName def IsFunctionBlockType(self, name): - if isinstance(name, TupleType) or \ + if isinstance(name, tuple) or \ self.ElementType != "function" and self.BodyType in ["ST", "IL"]: return False else: @@ -985,7 +988,7 @@ event.Skip() def AddVariableHighlight(self, infos, highlight_type): - if isinstance(infos[0], TupleType): + if isinstance(infos[0], tuple): for i in xrange(*infos[0]): self.Table.AddHighlight((i,) + infos[1:], highlight_type) cell_visible = infos[0][0] @@ -997,7 +1000,7 @@ self.RefreshHighlightsTimer.Start(int(REFRESH_HIGHLIGHT_PERIOD * 1000), oneShot=True) def RemoveVariableHighlight(self, infos, highlight_type): - if isinstance(infos[0], TupleType): + if isinstance(infos[0], tuple): for i in xrange(*infos[0]): self.Table.RemoveHighlight((i,) + infos[1:], highlight_type) else: