diff -r 31e63e25b4cc -r 64beb9e9c749 controls/LocationCellEditor.py --- a/controls/LocationCellEditor.py Mon Aug 21 20:17:19 2017 +0000 +++ b/controls/LocationCellEditor.py Mon Aug 21 23:22:58 2017 +0300 @@ -26,32 +26,33 @@ from dialogs.BrowseLocationsDialog import BrowseLocationsDialog + class LocationCellControl(wx.PyControl): - + ''' Custom cell editor control with a text box and a button that launches the BrowseLocationsDialog. ''' def __init__(self, parent): wx.Control.__init__(self, parent) - + main_sizer = wx.FlexGridSizer(cols=2, hgap=0, rows=1, vgap=0) main_sizer.AddGrowableCol(0) main_sizer.AddGrowableRow(0) - + # create location text control - self.Location = wx.TextCtrl(self, size=wx.Size(0, -1), - style=wx.TE_PROCESS_ENTER) + self.Location = wx.TextCtrl(self, size=wx.Size(0, -1), + style=wx.TE_PROCESS_ENTER) self.Location.Bind(wx.EVT_KEY_DOWN, self.OnLocationChar) main_sizer.AddWindow(self.Location, flag=wx.GROW) - + # create browse button self.BrowseButton = wx.Button(self, label='...', size=wx.Size(30, -1)) self.BrowseButton.Bind(wx.EVT_BUTTON, self.OnBrowseButtonClick) main_sizer.AddWindow(self.BrowseButton, flag=wx.GROW) - + self.Bind(wx.EVT_SIZE, self.OnSize) - + self.SetSizer(main_sizer) self.Controller = None @@ -73,7 +74,7 @@ def SetValue(self, value): self.Default = value self.Location.SetValue(value) - + def GetValue(self): return self.Location.GetValue() @@ -88,15 +89,17 @@ else: infos = None dialog.Destroy() - + if infos is not None: location = infos["location"] # set the location if not infos["location"].startswith("%"): - dialog = wx.SingleChoiceDialog(self, - _("Select a variable class:"), _("Variable class"), - [_("Input"), _("Output"), _("Memory")], - wx.DEFAULT_DIALOG_STYLE|wx.OK|wx.CANCEL) + dialog = wx.SingleChoiceDialog( + self, + _("Select a variable class:"), + _("Variable class"), + [_("Input"), _("Output"), _("Memory")], + wx.DEFAULT_DIALOG_STYLE | wx.OK | wx.CANCEL) if dialog.ShowModal() == wx.ID_OK: selected = dialog.GetSelection() else: @@ -111,7 +114,7 @@ location = "%Q" + location else: location = "%M" + location - + self.Location.SetValue(location) self.VarType = infos["IEC_type"] @@ -129,24 +132,25 @@ def SetInsertionPoint(self, i): self.Location.SetInsertionPoint(i) - + def SetFocus(self): self.Location.SetFocus() + class LocationCellEditor(wx.grid.PyGridCellEditor): ''' Grid cell editor that uses LocationCellControl to display a browse button. ''' def __init__(self, table, controller): wx.grid.PyGridCellEditor.__init__(self) - + self.Table = table self.Controller = controller def __del__(self): self.CellControl = None self.Controller = None - + def Create(self, parent, id, evt_handler): self.CellControl = LocationCellControl(parent) self.SetControl(self.CellControl) @@ -169,20 +173,19 @@ self.Table.SetValueByName(row, 'Type', self.CellControl.GetVarType()) self.CellControl.Disable() return changed - + if wx.VERSION >= (3, 0, 0): def EndEdit(self, row, col, grid, oldval): return self.EndEditInternal(row, col, grid, oldval) else: def EndEdit(self, row, col, grid): - old_loc = self.Table.GetValueByName(row, 'Location') + old_loc = self.Table.GetValueByName(row, 'Location') return self.EndEditInternal(row, col, grid, old_loc) - + def SetSize(self, rect): self.CellControl.SetDimensions(rect.x + 1, rect.y, - rect.width, rect.height, - wx.SIZE_ALLOW_MINUS_ONE) + rect.width, rect.height, + wx.SIZE_ALLOW_MINUS_ONE) def Clone(self): return LocationCellEditor(self.Table, self.Controller) -