PLCOpenEditor.py
changeset 70 0e48629c1e6d
parent 68 66308e07402c
child 71 0578bc212c20
equal deleted inserted replaced
69:8fbff50141f8 70:0e48629c1e6d
   412             self.Controler.OpenXMLFile(fileOpen)
   412             self.Controler.OpenXMLFile(fileOpen)
   413             self.RefreshProjectTree()
   413             self.RefreshProjectTree()
   414         
   414         
   415         self.CurrentToolBar = []
   415         self.CurrentToolBar = []
   416         self.CurrentLanguage = ""
   416         self.CurrentLanguage = ""
   417         self.DrawingMode = FREEDRAWING_MODE
   417         #self.DrawingMode = FREEDRAWING_MODE
   418         #self.DrawingMode = DRIVENDRAWING_MODE
   418         self.DrawingMode = DRIVENDRAWING_MODE
   419         
   419         
   420         self.RefreshFileMenu()
   420         self.RefreshFileMenu()
   421         self.RefreshEditMenu()
   421         self.RefreshEditMenu()
   422         self.RefreshTitle()
   422         self.RefreshTitle()
   423         self.RefreshToolBar()
   423         self.RefreshToolBar()
   827                 item = event.GetItem()
   827                 item = event.GetItem()
   828                 itemtype = self.ProjectTree.GetPyData(item)
   828                 itemtype = self.ProjectTree.GetPyData(item)
   829                 if itemtype == ITEM_PROJECT:
   829                 if itemtype == ITEM_PROJECT:
   830                     self.Controler.SetProjectProperties(name = new_name)
   830                     self.Controler.SetProjectProperties(name = new_name)
   831                 elif itemtype == ITEM_POU:
   831                 elif itemtype == ITEM_POU:
   832                     if new_name.upper() in self.Controler.GetProjectPouNames():
   832                     if new_name.upper() in [name.upper() for name in self.Controler.GetProjectPouNames()]:
   833                         message = "\"%s\" pou already exists!"%new_name
   833                         message = "\"%s\" pou already exists!"%new_name
   834                         abort = True
   834                         abort = True
   835                     elif new_name.upper() in self.Controler.GetProjectPouVariables():
   835                     elif new_name.upper() in [name.upper() for name in self.Controler.GetProjectPouVariables()]:
   836                         messageDialog = wx.MessageDialog(self, "A variable is defined with \"%s\" as name. It can generate a conflict. Do you wish to continue?"%new_name, "Error", wx.YES_NO|wx.ICON_QUESTION)
   836                         messageDialog = wx.MessageDialog(self, "A variable is defined with \"%s\" as name. It can generate a conflict. Do you wish to continue?"%new_name, "Error", wx.YES_NO|wx.ICON_QUESTION)
   837                         if messageDialog.ShowModal() == wx.ID_NO:
   837                         if messageDialog.ShowModal() == wx.ID_NO:
   838                             abort = True
   838                             abort = True
   839                         messageDialog.Destroy()
   839                         messageDialog.Destroy()
   840                     if not abort:
   840                     if not abort:
   843                         self.RefreshTabsOpenedTitles()
   843                         self.RefreshTabsOpenedTitles()
   844                 elif itemtype == ITEM_TRANSITION:
   844                 elif itemtype == ITEM_TRANSITION:
   845                     category = self.ProjectTree.GetItemParent(item)
   845                     category = self.ProjectTree.GetItemParent(item)
   846                     pou = self.ProjectTree.GetItemParent(category)
   846                     pou = self.ProjectTree.GetItemParent(category)
   847                     pou_name = self.ProjectTree.GetItemText(pou)
   847                     pou_name = self.ProjectTree.GetItemText(pou)
   848                     if new_name.upper() in self.Controler.GetProjectPouNames():
   848                     if new_name.upper() in [name.upper() for name in self.Controler.GetProjectPouNames()]:
   849                         message = "A pou with \"%s\" as name exists!"%new_name
   849                         message = "A pou with \"%s\" as name exists!"%new_name
   850                     elif new_name.upper() in self.Controler.GetProjectPouVariables(pou_name):
   850                     elif new_name.upper() in [name.upper() for name in self.Controler.GetProjectPouVariables(pou_name)]:
   851                         message = "A variable with \"%s\" as name already exists in this pou!"%new_name
   851                         message = "A variable with \"%s\" as name already exists in this pou!"%new_name
   852                     else:
   852                     else:
   853                         old_name = self.ProjectTree.GetItemText(item)
   853                         old_name = self.ProjectTree.GetItemText(item)
   854                         self.Controler.ChangePouTransitionName(pou_name, old_name, new_name)
   854                         self.Controler.ChangePouTransitionName(pou_name, old_name, new_name)
   855                         self.RefreshTabsOpenedTitles()
   855                         self.RefreshTabsOpenedTitles()
   856                 elif itemtype == ITEM_ACTION:
   856                 elif itemtype == ITEM_ACTION:
   857                     category = self.ProjectTree.GetItemParent(item)
   857                     category = self.ProjectTree.GetItemParent(item)
   858                     pou = self.ProjectTree.GetItemParent(category)
   858                     pou = self.ProjectTree.GetItemParent(category)
   859                     pou_name = self.ProjectTree.GetItemText(pou)
   859                     pou_name = self.ProjectTree.GetItemText(pou)
   860                     if new_name.upper() in self.Controler.GetProjectPouNames():
   860                     if new_name.upper() in [name.upper() for name in self.Controler.GetProjectPouNames()]:
   861                         message = "A pou with \"%s\" as name exists!"%new_name
   861                         message = "A pou with \"%s\" as name exists!"%new_name
   862                     elif new_name.upper() in self.Controler.GetProjectPouVariables(pou_name):
   862                     elif new_name.upper() in [name.upper() for name in self.Controler.GetProjectPouVariables(pou_name)]:
   863                         message = "A variable with \"%s\" as name already exists in this pou!"%new_name
   863                         message = "A variable with \"%s\" as name already exists in this pou!"%new_name
   864                     else:
   864                     else:
   865                         old_name = self.ProjectTree.GetItemText(item)
   865                         old_name = self.ProjectTree.GetItemText(item)
   866                         self.Controler.ChangePouActionName(pou_name, old_name, new_name)
   866                         self.Controler.ChangePouActionName(pou_name, old_name, new_name)
   867                         self.RefreshTabsOpenedTitles()
       
   868                 elif itemtype == ITEM_VARIABLE:
       
   869                     category = self.ProjectTree.GetItemParent(item)
       
   870                     if self.ProjectTree.GetItemText(category) != 'Global':
       
   871                         category = self.ProjectTree.GetItemParent(category)
       
   872                     pou = self.ProjectTree.GetItemParent(category)
       
   873                     pou_name = self.ProjectTree.GetItemText(pou)
       
   874                     if new_name.upper() in self.Controler.GetProjectPouNames():
       
   875                         message = "A pou with \"%s\" as name exists!"%new_name
       
   876                     elif new_name.upper() in self.Controler.GetProjectPouVariables(pou_name):
       
   877                         message = "A variable with \"%s\" as name already exists in this pou!"%new_name
       
   878                     else:
       
   879                         old_name = self.ProjectTree.GetItemText(item)
       
   880                         self.Controler.ChangePouVariableName(pou_name, old_name, new_name)
       
   881                         self.RefreshTabsOpenedTitles()
   867                         self.RefreshTabsOpenedTitles()
   882             if message or abort:
   868             if message or abort:
   883                 if message:
   869                 if message:
   884                     messageDialog = wx.MessageDialog(self, message, "Error", wx.OK|wx.ICON_ERROR)
   870                     messageDialog = wx.MessageDialog(self, message, "Error", wx.OK|wx.ICON_ERROR)
   885                     messageDialog.ShowModal()
   871                     messageDialog.ShowModal()
  1120         event.Skip()
  1106         event.Skip()
  1121     
  1107     
  1122     def OnAddPouMenu(self, event):
  1108     def OnAddPouMenu(self, event):
  1123         dialog = PouDialog(self)
  1109         dialog = PouDialog(self)
  1124         dialog.SetPouNames(self.Controler.GetProjectPouNames())
  1110         dialog.SetPouNames(self.Controler.GetProjectPouNames())
       
  1111         dialog.SetPouElementNames(self.Controler.GetProjectPouVariables())
  1125         if dialog.ShowModal() == wx.ID_OK:
  1112         if dialog.ShowModal() == wx.ID_OK:
  1126             values = dialog.GetValues()
  1113             values = dialog.GetValues()
  1127             self.Controler.ProjectAddPou(values["pouName"], values["pouType"], values["language"])
  1114             self.Controler.ProjectAddPou(values["pouName"], values["pouType"], values["language"])
  1128             self.RefreshProjectTree()
  1115             self.RefreshProjectTree()
  1129         dialog.Destroy()
  1116         dialog.Destroy()
  1172         selected = self.ProjectTree.GetSelection()
  1159         selected = self.ProjectTree.GetSelection()
  1173         if self.ProjectTree.GetPyData(selected) == ITEM_POU:
  1160         if self.ProjectTree.GetPyData(selected) == ITEM_POU:
  1174             pouname = self.ProjectTree.GetItemText(selected)
  1161             pouname = self.ProjectTree.GetItemText(selected)
  1175             if self.Controler.GetPouBodyType(pouname) == "SFC":
  1162             if self.Controler.GetPouBodyType(pouname) == "SFC":
  1176                 dialog = PouTransitionDialog(self)
  1163                 dialog = PouTransitionDialog(self)
       
  1164                 dialog.SetPouNames(self.Controler.GetProjectPouNames())
       
  1165                 dialog.SetPouElementNames(self.Controler.GetProjectPouVariables(pouname))
  1177                 if dialog.ShowModal() == wx.ID_OK: 
  1166                 if dialog.ShowModal() == wx.ID_OK: 
  1178                     values = dialog.GetValues()
  1167                     values = dialog.GetValues()
  1179                     self.Controler.ProjectAddPouTransition(pouname, values["transitionName"], values["language"])
  1168                     self.Controler.ProjectAddPouTransition(pouname, values["transitionName"], values["language"])
  1180                     self.RefreshProjectTree()
  1169                     self.RefreshProjectTree()
  1181                 dialog.Destroy()
  1170                 dialog.Destroy()
  1199         selected = self.ProjectTree.GetSelection()
  1188         selected = self.ProjectTree.GetSelection()
  1200         if self.ProjectTree.GetPyData(selected) == ITEM_POU:
  1189         if self.ProjectTree.GetPyData(selected) == ITEM_POU:
  1201             pouname = self.ProjectTree.GetItemText(selected)
  1190             pouname = self.ProjectTree.GetItemText(selected)
  1202             if self.Controler.GetPouBodyType(pouname) == "SFC":
  1191             if self.Controler.GetPouBodyType(pouname) == "SFC":
  1203                 dialog = PouActionDialog(self)
  1192                 dialog = PouActionDialog(self)
       
  1193                 dialog.SetPouNames(self.Controler.GetProjectPouNames())
       
  1194                 dialog.SetPouElementNames(self.Controler.GetProjectPouVariables(pouname))
  1204                 if dialog.ShowModal() == wx.ID_OK:
  1195                 if dialog.ShowModal() == wx.ID_OK:
  1205                     values = dialog.GetValues()
  1196                     values = dialog.GetValues()
  1206                     self.Controler.ProjectAddPouAction(pouname, values["actionName"], values["language"])
  1197                     self.Controler.ProjectAddPouAction(pouname, values["actionName"], values["language"])
  1207                     self.RefreshProjectTree()
  1198                     self.RefreshProjectTree()
  1208                 dialog.Destroy()
  1199                 dialog.Destroy()
  1529         for option in ["function","functionBlock","program"]:
  1520         for option in ["function","functionBlock","program"]:
  1530             self.PouType.Append(option)
  1521             self.PouType.Append(option)
  1531         self.RefreshLanguage()
  1522         self.RefreshLanguage()
  1532 
  1523 
  1533         self.PouNames = []
  1524         self.PouNames = []
       
  1525         self.PouElementNames = []
  1534 
  1526 
  1535     def OnOK(self, event):
  1527     def OnOK(self, event):
  1536         error = []
  1528         error = []
  1537         pou_name = self.PouName.GetValue()
  1529         pou_name = self.PouName.GetValue()
  1538         if pou_name == "":
  1530         if pou_name == "":
  1563             message.Destroy()
  1555             message.Destroy()
  1564         elif pou_name.upper() in self.PouNames:
  1556         elif pou_name.upper() in self.PouNames:
  1565             message = wx.MessageDialog(self, "\"%s\" pou already exists!"%pou_name, "Error", wx.OK|wx.ICON_ERROR)
  1557             message = wx.MessageDialog(self, "\"%s\" pou already exists!"%pou_name, "Error", wx.OK|wx.ICON_ERROR)
  1566             message.ShowModal()
  1558             message.ShowModal()
  1567             message.Destroy()
  1559             message.Destroy()
       
  1560         elif pou_name.upper() in self.PouElementNames:
       
  1561             message = wx.MessageDialog(self, "A pou has an element with \"%s\" for name. It can generate a conflict. Do you wish to continue?"%pou_name, "Warning", wx.YES_NO|wx.ICON_EXCLAMATION)
       
  1562             result = message.ShowModal()
       
  1563             message.Destroy()
       
  1564             if result == wx.ID_YES:
       
  1565                 self.EndModal(wx.ID_OK)
  1568         else:
  1566         else:
  1569             self.EndModal(wx.ID_OK)
  1567             self.EndModal(wx.ID_OK)
  1570 
  1568 
  1571     def RefreshLanguage(self):
  1569     def RefreshLanguage(self):
  1572         selection = self.Language.GetStringSelection()
  1570         selection = self.Language.GetStringSelection()
  1581         self.RefreshLanguage()
  1579         self.RefreshLanguage()
  1582         event.Skip()
  1580         event.Skip()
  1583 
  1581 
  1584     def SetPouNames(self, pou_names):
  1582     def SetPouNames(self, pou_names):
  1585         self.PouNames = [pou_name.upper() for pou_name in pou_names]
  1583         self.PouNames = [pou_name.upper() for pou_name in pou_names]
       
  1584 
       
  1585     def SetPouElementNames(self, element_names):
       
  1586         self.PouElementNames = [element_name.upper() for element_name in element_names]
  1586 
  1587 
  1587     def SetValues(self, values):
  1588     def SetValues(self, values):
  1588         for item, value in values.items():
  1589         for item, value in values.items():
  1589             if item == "pouName":
  1590             if item == "pouName":
  1590                 self.PouName.SetValue(value)
  1591                 self.PouName.SetValue(value)
  1670     def __init__(self, parent):
  1671     def __init__(self, parent):
  1671         self._init_ctrls(parent)
  1672         self._init_ctrls(parent)
  1672         
  1673         
  1673         for option in ["IL","ST","LD","FBD"]:
  1674         for option in ["IL","ST","LD","FBD"]:
  1674             self.Language.Append(option)
  1675             self.Language.Append(option)
       
  1676             
       
  1677         self.PouNames = []
       
  1678         self.PouElementNames = []
  1675         
  1679         
  1676     def OnOK(self, event):
  1680     def OnOK(self, event):
  1677         error = []
  1681         error = []
       
  1682         transition_name = self.TransitionName.GetValue()
  1678         if self.TransitionName.GetValue() == "":
  1683         if self.TransitionName.GetValue() == "":
  1679             error.append("Transition Name")
  1684             error.append("Transition Name")
  1680         if self.Language.GetStringSelection() == "":
  1685         if self.Language.GetStringSelection() == "":
  1681             error.append("Language")
  1686             error.append("Language")
  1682         if len(error) > 0:
  1687         if len(error) > 0:
  1689                 else:
  1694                 else:
  1690                     text += ", %s"%item 
  1695                     text += ", %s"%item 
  1691             message = wx.MessageDialog(self, "Form isn't complete. %s must be filled!"%text, "Error", wx.OK|wx.ICON_ERROR)
  1696             message = wx.MessageDialog(self, "Form isn't complete. %s must be filled!"%text, "Error", wx.OK|wx.ICON_ERROR)
  1692             message.ShowModal()
  1697             message.ShowModal()
  1693             message.Destroy()
  1698             message.Destroy()
       
  1699         elif not TestIdentifier(transition_name):
       
  1700             message = wx.MessageDialog(self, "\"%s\" is not a valid identifier!"%transition_name, "Error", wx.OK|wx.ICON_ERROR)
       
  1701             message.ShowModal()
       
  1702             message.Destroy()
       
  1703         elif transition_name.upper() in IEC_KEYWORDS:
       
  1704             message = wx.MessageDialog(self, "\"%s\" is a keyword. It can't be used!"%transition_name, "Error", wx.OK|wx.ICON_ERROR)
       
  1705             message.ShowModal()
       
  1706             message.Destroy()
       
  1707         elif transition_name.upper() in self.PouNames:
       
  1708             message = wx.MessageDialog(self, "A pou with \"%s\" for name exists!"%transition_name, "Error", wx.OK|wx.ICON_ERROR)
       
  1709             message.ShowModal()
       
  1710             message.Destroy()
       
  1711         elif transition_name.upper() in self.PouElementNames:
       
  1712             message = wx.MessageDialog(self, "\"%s\" element for this pou already exists!"%transition_name, "Error", wx.OK|wx.ICON_ERROR)
       
  1713             message.ShowModal()
       
  1714             message.Destroy()
  1694         else:
  1715         else:
  1695             self.EndModal(wx.ID_OK)
  1716             self.EndModal(wx.ID_OK)
  1696 
  1717     
       
  1718     def SetPouNames(self, pou_names):
       
  1719         self.PouNames = [pou_name.upper() for pou_name in pou_names]
       
  1720     
       
  1721     def SetPouElementNames(self, pou_names):
       
  1722         self.PouElementNames = [pou_name.upper() for pou_name in pou_names]
       
  1723     
  1697     def SetValues(self, values):
  1724     def SetValues(self, values):
  1698         for item, value in values.items():
  1725         for item, value in values.items():
  1699             if item == "transitionName":
  1726             if item == "transitionName":
  1700                 self.TransitionName.SetValue(value)
  1727                 self.TransitionName.SetValue(value)
  1701             elif item == "language":
  1728             elif item == "language":
  1777         self._init_ctrls(parent)
  1804         self._init_ctrls(parent)
  1778         
  1805         
  1779         for option in ["IL","ST","LD","FBD"]:
  1806         for option in ["IL","ST","LD","FBD"]:
  1780             self.Language.Append(option)
  1807             self.Language.Append(option)
  1781         
  1808         
       
  1809         self.PouNames = []
       
  1810         self.PouElementNames = []
       
  1811     
  1782     def OnOK(self, event):
  1812     def OnOK(self, event):
  1783         error = []
  1813         error = []
  1784         if self.ActionName.GetValue() == "":
  1814         action_name = self.ActionName.GetValue()
       
  1815         if action_name == "":
  1785             error.append("Action Name")
  1816             error.append("Action Name")
  1786         if self.Language.GetStringSelection() == "":
  1817         if self.Language.GetStringSelection() == "":
  1787             error.append("Language")
  1818             error.append("Language")
  1788         if len(error) > 0:
  1819         if len(error) > 0:
  1789             text = ""
  1820             text = ""
  1795                 else:
  1826                 else:
  1796                     text += ", %s"%item 
  1827                     text += ", %s"%item 
  1797             message = wx.MessageDialog(self, "Form isn't complete. %s must be filled!"%text, "Error", wx.OK|wx.ICON_ERROR)
  1828             message = wx.MessageDialog(self, "Form isn't complete. %s must be filled!"%text, "Error", wx.OK|wx.ICON_ERROR)
  1798             message.ShowModal()
  1829             message.ShowModal()
  1799             message.Destroy()
  1830             message.Destroy()
       
  1831         elif not TestIdentifier(action_name):
       
  1832             message = wx.MessageDialog(self, "\"%s\" is not a valid identifier!"%action_name, "Error", wx.OK|wx.ICON_ERROR)
       
  1833             message.ShowModal()
       
  1834             message.Destroy()
       
  1835         elif action_name.upper() in IEC_KEYWORDS:
       
  1836             message = wx.MessageDialog(self, "\"%s\" is a keyword. It can't be used!"%action_name, "Error", wx.OK|wx.ICON_ERROR)
       
  1837             message.ShowModal()
       
  1838             message.Destroy()
       
  1839         elif action_name.upper() in self.PouNames:
       
  1840             message = wx.MessageDialog(self, "A pou with \"%s\" for name exists!"%action_name, "Error", wx.OK|wx.ICON_ERROR)
       
  1841             message.ShowModal()
       
  1842             message.Destroy()
       
  1843         elif action_name.upper() in self.PouElementNames:
       
  1844             message = wx.MessageDialog(self, "\"%s\" element for this pou already exists!"%action_name, "Error", wx.OK|wx.ICON_ERROR)
       
  1845             message.ShowModal()
       
  1846             message.Destroy()
  1800         else:
  1847         else:
  1801             self.EndModal(wx.ID_OK)
  1848             self.EndModal(wx.ID_OK)
  1802 
  1849     
       
  1850     def SetPouNames(self, pou_names):
       
  1851         self.PouNames = [pou_name.upper() for pou_name in pou_names]
       
  1852         
       
  1853     def SetPouElementNames(self, element_names):
       
  1854         self.PouElementNames = [element_name.upper() for element_name in element_names]
       
  1855         
  1803     def SetValues(self, values):
  1856     def SetValues(self, values):
  1804         for item, value in values.items():
  1857         for item, value in values.items():
  1805             if item == "actionName":
  1858             if item == "actionName":
  1806                 self.ActionName.SetValue(value)
  1859                 self.ActionName.SetValue(value)
  1807             elif item == "language":
  1860             elif item == "language":
  2202             self.DefaultValue = {"Name" : "", "Class" : "", "Type" : "INT", "Location" : "", "Initial Value" : "", "Retain" : "No", "Constant" : "No", "Edit" : "True"}
  2255             self.DefaultValue = {"Name" : "", "Class" : "", "Type" : "INT", "Location" : "", "Initial Value" : "", "Retain" : "No", "Constant" : "No", "Edit" : "True"}
  2203         else:
  2256         else:
  2204             self.DefaultTypes = {"All" : "Local", "Interface" : "Input", "Variables" : "Local"}
  2257             self.DefaultTypes = {"All" : "Local", "Interface" : "Input", "Variables" : "Local"}
  2205             self.DefaultValue = {"Name" : "", "Class" : "", "Type" : "INT", "Location" : "", "Initial Value" : "", "Retain" : "No", "Constant" : "No", "Edit" : "True"}
  2258             self.DefaultValue = {"Name" : "", "Class" : "", "Type" : "INT", "Location" : "", "Initial Value" : "", "Retain" : "No", "Constant" : "No", "Edit" : "True"}
  2206         if pou_type in ["config", "resource"] or pou_type == "program":
  2259         if pou_type in ["config", "resource"] or pou_type == "program":
  2207             self.Table = VariableTable(self, [], ["#", "Name", "Class", "Type", "Location", "Initial Value", "Retain", "Constant", "Edit"])
  2260             self.Table = VariableTable(self, [], ["#", "Name", "Class", "Type", "Location", "Initial Value", "Retain", "Constant"])
  2208             if pou_type not in ["config", "resource"]:
  2261             if pou_type not in ["config", "resource"]:
  2209                 self.FilterChoices = ["All","Interface","   Input","   Output","   InOut","   External","Variables","   Local","   Temp","Global","Access"]
  2262                 self.FilterChoices = ["All","Interface","   Input","   Output","   InOut","   External","Variables","   Local","   Temp","Global","Access"]
  2210             else:
  2263             else:
  2211                 self.FilterChoices = ["All","Global","Access"]
  2264                 self.FilterChoices = ["All","Global","Access"]
  2212             self.ColSizes = [40, 80, 70, 80, 80, 80, 60, 70, 50]
  2265             self.ColSizes = [40, 80, 70, 80, 80, 80, 60, 70]
  2213             self.ColAlignements = [wx.ALIGN_CENTER, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_CENTER, wx.ALIGN_CENTER, wx.ALIGN_LEFT]
  2266             self.ColAlignements = [wx.ALIGN_CENTER, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_CENTER, wx.ALIGN_CENTER]
  2214         else:
  2267         else:
  2215             self.Table = VariableTable(self, [], ["#", "Name", "Class", "Type", "Initial Value", "Retain", "Constant", "Edit"])
  2268             self.Table = VariableTable(self, [], ["#", "Name", "Class", "Type", "Initial Value", "Retain", "Constant"])
  2216             self.FilterChoices = ["All","Interface","   Input","   Output","   InOut","   External","Variables","   Local","   Temp"]
  2269             self.FilterChoices = ["All","Interface","   Input","   Output","   InOut","   External","Variables","   Local","   Temp"]
  2217             self.ColSizes = [40, 120, 70, 80, 120, 60, 70, 50]
  2270             self.ColSizes = [40, 120, 70, 80, 120, 60, 70]
  2218             self.ColAlignements = [wx.ALIGN_CENTER, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_CENTER, wx.ALIGN_CENTER, wx.ALIGN_LEFT]
  2271             self.ColAlignements = [wx.ALIGN_CENTER, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_CENTER, wx.ALIGN_CENTER]
  2219         for choice in self.FilterChoices:
  2272         for choice in self.FilterChoices:
  2220             self.ClassFilter.Append(choice)
  2273             self.ClassFilter.Append(choice)
  2221         reverse_transfer = {}
  2274         reverse_transfer = {}
  2222         for filter, choice in self.FilterChoiceTransfer.items():
  2275         for filter, choice in self.FilterChoiceTransfer.items():
  2223             reverse_transfer[choice] = filter
  2276             reverse_transfer[choice] = filter