PLCOpenEditor.py
changeset 51 47c72c77590a
parent 49 1762276019fb
child 52 35b54852c533
equal deleted inserted replaced
50:4610aafc884e 51:47c72c77590a
  1200         event.Skip()
  1200         event.Skip()
  1201     
  1201     
  1202     def OnCutMenu(self, event):
  1202     def OnCutMenu(self, event):
  1203         selected = self.TabsOpened.GetSelection()
  1203         selected = self.TabsOpened.GetSelection()
  1204         if selected != -1:
  1204         if selected != -1:
  1205             self.TabsOpened.GetPage(selected).Cut()
  1205             try:
       
  1206                 self.TabsOpened.GetPage(selected).Viewer.Cut()
       
  1207             except:
       
  1208                 pass
  1206         event.Skip()
  1209         event.Skip()
  1207     
  1210     
  1208     def OnCopyMenu(self, event):
  1211     def OnCopyMenu(self, event):
  1209         selected = self.TabsOpened.GetSelection()
  1212         selected = self.TabsOpened.GetSelection()
  1210         if selected != -1:
  1213         if selected != -1:
  1211             self.TabsOpened.GetPage(selected).Copy()
  1214             try:
       
  1215                 self.TabsOpened.GetPage(selected).Viewer.Copy()
       
  1216             except:
       
  1217                 pass
  1212         event.Skip()
  1218         event.Skip()
  1213     
  1219     
  1214     def OnPasteMenu(self, event):
  1220     def OnPasteMenu(self, event):
  1215         selected = self.TabsOpened.GetSelection()
  1221         selected = self.TabsOpened.GetSelection()
  1216         if selected != -1:
  1222         if selected != -1:
  1217             self.TabsOpened.GetPage(selected).Paste()
  1223             try:
       
  1224                 self.TabsOpened.GetPage(selected).Viewer.Paste()
       
  1225             except:
       
  1226                 pass
  1218         event.Skip()
  1227         event.Skip()
  1219     
  1228     
  1220     def OnAddPouMenu(self, event):
  1229     def OnAddPouMenu(self, event):
  1221         dialog = PouDialog(self)
  1230         dialog = PouDialog(self)
  1222         dialog.SetPouNames(self.Controler.GetProjectPouNames())
  1231         dialog.SetPouNames(self.Controler.GetProjectPouNames())
  1898         return row
  1907         return row
  1899 
  1908 
  1900     def GetValue(self, row, col):
  1909     def GetValue(self, row, col):
  1901         if row < self.GetNumberRows():
  1910         if row < self.GetNumberRows():
  1902             if col == 0:
  1911             if col == 0:
  1903                 return self.Parent.Values.index(self.data[row]) + 1
  1912                 return "d"
  1904             name = str(self.data[row].get(self.GetColLabelValue(col), ""))
  1913             name = str(self.data[row].get(self.GetColLabelValue(col), ""))
  1905             return name
  1914             return name
  1906     
  1915     
  1907     def GetValueByName(self, row, colname):
  1916     def GetValueByName(self, row, colname):
  1908         return self.data[row].get(colname)
  1917         return self.data[row].get(colname)
  1965             for col in range(self.GetNumberCols()):
  1974             for col in range(self.GetNumberCols()):
  1966                 editor = None
  1975                 editor = None
  1967                 renderer = None
  1976                 renderer = None
  1968                 colname = self.GetColLabelValue(col)
  1977                 colname = self.GetColLabelValue(col)
  1969                 grid.SetReadOnly(row, col, False)
  1978                 grid.SetReadOnly(row, col, False)
  1970                 if col == 0:
  1979                 if colname == "Drag":
  1971                     grid.SetReadOnly(row, col, True)
  1980                     grid.SetReadOnly(row, col, True)
  1972                 elif colname == "Name":
  1981                 elif colname == "Name":
  1973                     if self.Parent.PouIsUsed and self.GetValueByName(row, "Class") in ["Input", "Output", "InOut"]:
  1982                     if self.Parent.PouIsUsed and self.GetValueByName(row, "Class") in ["Input", "Output", "InOut"]:
  1974                         grid.SetReadOnly(row, col, True)
  1983                         grid.SetReadOnly(row, col, True)
  1975                     else:
  1984                     else:
  2075 
  2084 
  2076     def _init_coll_ChoicePanelSizer_Items(self, parent):
  2085     def _init_coll_ChoicePanelSizer_Items(self, parent):
  2077         # generated method, don't edit
  2086         # generated method, don't edit
  2078 
  2087 
  2079         parent.AddWindow(self.staticText1, 0, border=0, flag=wxALIGN_BOTTOM)
  2088         parent.AddWindow(self.staticText1, 0, border=0, flag=wxALIGN_BOTTOM)
       
  2089         parent.AddWindow(self.staticText2, 0, border=0, flag=wxALIGN_BOTTOM)
  2080         parent.AddWindow(self.ReturnType, 0, border=0, flag=0)
  2090         parent.AddWindow(self.ReturnType, 0, border=0, flag=0)
  2081         parent.AddWindow(self.staticText2, 0, border=0, flag=wxALIGN_BOTTOM)
       
  2082         parent.AddWindow(self.ClassFilter, 0, border=0, flag=0)
  2091         parent.AddWindow(self.ClassFilter, 0, border=0, flag=0)
  2083 
  2092 
  2084     def _init_coll_ButtonPanelSizer_Items(self, parent):
  2093     def _init_coll_ButtonPanelSizer_Items(self, parent):
  2085         # generated method, don't edit
  2094         # generated method, don't edit
  2086 
  2095 
       
  2096         parent.AddWindow(self.AddButton, 0, border=0, flag=0)
       
  2097         parent.AddWindow(self.DeleteButton, 0, border=0, flag=0)
  2087         parent.AddWindow(self.UpButton, 0, border=0, flag=0)
  2098         parent.AddWindow(self.UpButton, 0, border=0, flag=0)
  2088         parent.AddWindow(self.AddButton, 0, border=0, flag=0)
       
  2089         parent.AddWindow(self.DownButton, 0, border=0, flag=0)
  2099         parent.AddWindow(self.DownButton, 0, border=0, flag=0)
  2090         parent.AddWindow(self.DeleteButton, 0, border=0, flag=0)
  2100 
  2091         
       
  2092     def _init_coll_ButtonPanelSizer_Growables(self, parent):
  2101     def _init_coll_ButtonPanelSizer_Growables(self, parent):
  2093         # generated method, don't edit
  2102         # generated method, don't edit
  2094 
  2103 
  2095         parent.AddGrowableCol(0)
  2104         parent.AddGrowableCol(0)
  2096         parent.AddGrowableCol(1)
  2105         parent.AddGrowableCol(1)
  2102         # generated method, don't edit
  2111         # generated method, don't edit
  2103         self.MainPanelSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
  2112         self.MainPanelSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
  2104         
  2113         
  2105         self.VariablePanelSizer = wx.FlexGridSizer(cols=2, hgap=10, rows=1, vgap=0)
  2114         self.VariablePanelSizer = wx.FlexGridSizer(cols=2, hgap=10, rows=1, vgap=0)
  2106         
  2115         
  2107         self.ControlPanelSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
  2116         self.ControlPanelSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
  2108         
  2117         
  2109         self.ChoicePanelSizer = wx.GridSizer(cols=1, hgap=5, rows=4, vgap=5)
  2118         self.ChoicePanelSizer = wx.GridSizer(cols=2, hgap=5, rows=2, vgap=5)
  2110         
  2119         
  2111         self.ButtonPanelSizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=0)
  2120         self.ButtonPanelSizer = wx.FlexGridSizer(cols=4, hgap=5, rows=1, vgap=0)
  2112         
  2121         
  2113         self._init_coll_MainPanelSizer_Items(self.MainPanelSizer)
  2122         self._init_coll_MainPanelSizer_Items(self.MainPanelSizer)
  2114         self._init_coll_MainPanelSizer_Growables(self.MainPanelSizer)
  2123         self._init_coll_MainPanelSizer_Growables(self.MainPanelSizer)
  2115         self._init_coll_VariablePanelSizer_Items(self.VariablePanelSizer)
  2124         self._init_coll_VariablePanelSizer_Items(self.VariablePanelSizer)
  2116         self._init_coll_VariablePanelSizer_Growables(self.VariablePanelSizer)
  2125         self._init_coll_VariablePanelSizer_Growables(self.VariablePanelSizer)
  2152               label='Return Type:', name='staticText1', parent=self,
  2161               label='Return Type:', name='staticText1', parent=self,
  2153               pos=wx.Point(0, 0), size=wx.Size(95, 17), style=0)
  2162               pos=wx.Point(0, 0), size=wx.Size(95, 17), style=0)
  2154 
  2163 
  2155         self.ReturnType = wx.Choice(id=wxID_POUEDITORPANELRETURNTYPE,
  2164         self.ReturnType = wx.Choice(id=wxID_POUEDITORPANELRETURNTYPE,
  2156               name='ReturnType', parent=self, pos=wx.Point(0, 0),
  2165               name='ReturnType', parent=self, pos=wx.Point(0, 0),
  2157               size=wx.Size(145, 24), style=0)
  2166               size=wx.Size(95, 24), style=0)
  2158 
  2167 
  2159         self.staticText2 = wx.StaticText(id=wxID_POUEDITORPANELSTATICTEXT2,
  2168         self.staticText2 = wx.StaticText(id=wxID_POUEDITORPANELSTATICTEXT2,
  2160               label='Class Filter:', name='staticText2', parent=self,
  2169               label='Class Filter:', name='staticText2', parent=self,
  2161               pos=wx.Point(0, 0), size=wx.Size(95, 17), style=0)
  2170               pos=wx.Point(0, 0), size=wx.Size(95, 17), style=0)
  2162 
  2171 
  2163         self.ClassFilter = wx.Choice(id=wxID_POUEDITORPANELCLASSFILTER,
  2172         self.ClassFilter = wx.Choice(id=wxID_POUEDITORPANELCLASSFILTER,
  2164               name='ClassFilter', parent=self, pos=wx.Point(0, 0),
  2173               name='ClassFilter', parent=self, pos=wx.Point(0, 0),
  2165               size=wx.Size(145, 24), style=0)
  2174               size=wx.Size(95, 24), style=0)
  2166         EVT_CHOICE(self, wxID_POUEDITORPANELCLASSFILTER, self.OnClassFilter)
  2175         EVT_CHOICE(self, wxID_POUEDITORPANELCLASSFILTER, self.OnClassFilter)
  2167 
  2176 
  2168         self.VariablesGrid = wx.grid.Grid(id=wxID_POUEDITORPANELVARIABLESGRID,
  2177         self.VariablesGrid = wx.grid.Grid(id=wxID_POUEDITORPANELVARIABLESGRID,
  2169               name='VariablesGrid', parent=self, pos=wx.Point(0, 0), 
  2178               name='VariablesGrid', parent=self, pos=wx.Point(0, 0), 
  2170               size=wx.Size(0, 150), style=wxVSCROLL)
  2179               size=wx.Size(-1, 150), style=wxVSCROLL|wxHSCROLL)
  2171         self.VariablesGrid.SetFont(wx.Font(12, 77, wx.NORMAL, wx.NORMAL, False,
  2180         self.VariablesGrid.SetFont(wx.Font(12, 77, wx.NORMAL, wx.NORMAL, False,
  2172               'Sans'))
  2181               'Sans'))
  2173         self.VariablesGrid.SetLabelFont(wx.Font(10, 77, wx.NORMAL, wx.NORMAL,
  2182         self.VariablesGrid.SetLabelFont(wx.Font(10, 77, wx.NORMAL, wx.NORMAL,
  2174               False, 'Sans'))
  2183               False, 'Sans'))
  2175         self.VariablesGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnVariablesGridCellChange)
  2184         self.VariablesGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnVariablesGridCellChange)
  2235             self.DefaultValue = {"Name" : "", "Class" : "", "Type" : "INT", "Location" : "", "Initial Value" : "", "Retain" : "No", "Constant" : "No"}
  2244             self.DefaultValue = {"Name" : "", "Class" : "", "Type" : "INT", "Location" : "", "Initial Value" : "", "Retain" : "No", "Constant" : "No"}
  2236         else:
  2245         else:
  2237             self.DefaultTypes = {"All" : "Local", "Interface" : "Input", "Variables" : "Local"}
  2246             self.DefaultTypes = {"All" : "Local", "Interface" : "Input", "Variables" : "Local"}
  2238             self.DefaultValue = {"Name" : "", "Class" : "", "Type" : "INT", "Location" : "", "Initial Value" : "", "Retain" : "No", "Constant" : "No"}
  2247             self.DefaultValue = {"Name" : "", "Class" : "", "Type" : "INT", "Location" : "", "Initial Value" : "", "Retain" : "No", "Constant" : "No"}
  2239         if pou_type in ["config", "resource"] or pou_type == "program":
  2248         if pou_type in ["config", "resource"] or pou_type == "program":
  2240             self.Table = VariableTable(self, [], ["#", "Name", "Class", "Type", "Location", "Initial Value", "Retain", "Constant"])
  2249             self.Table = VariableTable(self, [], ["Drag", "Name", "Class", "Type", "Location", "Initial Value", "Retain", "Constant"])
  2241             if pou_type not in ["config", "resource"]:
  2250             if pou_type not in ["config", "resource"]:
  2242                 self.FilterChoices = ["All","Interface","   Input","   Output","   InOut","   External","Variables","   Local","   Temp","Global","Access"]
  2251                 self.FilterChoices = ["All","Interface","   Input","   Output","   InOut","   External","Variables","   Local","   Temp","Global","Access"]
  2243             else:
  2252             else:
  2244                 self.FilterChoices = ["All","Global","Access"]
  2253                 self.FilterChoices = ["All","Global","Access"]
  2245             self.ColSizes = [40, 80, 70, 80, 80, 80, 60, 70]
  2254             self.ColSizes = [40, 80, 70, 80, 80, 80, 60, 70]
  2246             self.ColAlignements = [wxALIGN_CENTER, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_CENTER, wxALIGN_CENTER]
  2255             self.ColAlignements = [wxALIGN_CENTER, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_CENTER, wxALIGN_CENTER]
  2247         else:
  2256         else:
  2248             self.Table = VariableTable(self, [], ["#", "Name", "Class", "Type", "Initial Value", "Retain", "Constant"])
  2257             self.Table = VariableTable(self, [], ["Drag", "Name", "Class", "Type", "Initial Value", "Retain", "Constant"])
  2249             self.FilterChoices = ["All","Interface","   Input","   Output","   InOut","   External","Variables","   Local","   Temp"]
  2258             self.FilterChoices = ["All","Interface","   Input","   Output","   InOut","   External","Variables","   Local","   Temp"]
  2250             self.ColSizes = [40, 120, 70, 80, 120, 60, 70]
  2259             self.ColSizes = [40, 120, 70, 80, 120, 60, 70]
  2251             self.ColAlignements = [wxALIGN_CENTER, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_CENTER, wxALIGN_CENTER]
  2260             self.ColAlignements = [wxALIGN_CENTER, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_CENTER, wxALIGN_CENTER]
  2252         for choice in self.FilterChoices:
  2261         for choice in self.FilterChoices:
  2253             self.ClassFilter.Append(choice)
  2262             self.ClassFilter.Append(choice)