controls/CustomGrid.py
changeset 1735 c02818d7e29f
parent 1571 486f94a8032c
child 1736 7e61baa047f0
equal deleted inserted replaced
1734:750eeb7230a1 1735:c02818d7e29f
    24 
    24 
    25 import wx
    25 import wx
    26 import wx.grid
    26 import wx.grid
    27 
    27 
    28 class CustomGrid(wx.grid.Grid):
    28 class CustomGrid(wx.grid.Grid):
    29     
    29 
    30     def __init__(self, *args, **kwargs):
    30     def __init__(self, *args, **kwargs):
    31         wx.grid.Grid.__init__(self, *args, **kwargs)
    31         wx.grid.Grid.__init__(self, *args, **kwargs)
    32         
    32 
    33         self.Editable = True
    33         self.Editable = True
    34         
    34 
    35         self.AddButton = None
    35         self.AddButton = None
    36         self.DeleteButton = None
    36         self.DeleteButton = None
    37         self.UpButton = None
    37         self.UpButton = None
    38         self.DownButton = None
    38         self.DownButton = None
    39         
    39 
    40         self.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.NORMAL, False, 'Sans'))
    40         self.SetFont(wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.NORMAL, False, 'Sans'))
    41         self.SetLabelFont(wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.NORMAL, False, 'Sans'))
    41         self.SetLabelFont(wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.NORMAL, False, 'Sans'))
    42         self.SetSelectionBackground(wx.WHITE)
    42         self.SetSelectionBackground(wx.WHITE)
    43         self.SetSelectionForeground(wx.BLACK)
    43         self.SetSelectionForeground(wx.BLACK)
    44         self.DisableDragRowSize()
    44         self.DisableDragRowSize()
    45         
    45 
    46         self.Bind(wx.grid.EVT_GRID_SELECT_CELL, self.OnSelectCell)
    46         self.Bind(wx.grid.EVT_GRID_SELECT_CELL, self.OnSelectCell)
    47         self.Bind(wx.grid.EVT_GRID_EDITOR_HIDDEN, self.OnEditorHidden)
    47         self.Bind(wx.grid.EVT_GRID_EDITOR_HIDDEN, self.OnEditorHidden)
    48         self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
    48         self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
    49     
    49 
    50     def SetFocus(self):
    50     def SetFocus(self):
    51         if self:
    51         if self:
    52             wx.grid.Grid.SetFocus(self)
    52             wx.grid.Grid.SetFocus(self)
    53     
    53 
    54     def SetDefaultValue(self, default_value):
    54     def SetDefaultValue(self, default_value):
    55         self.DefaultValue = default_value
    55         self.DefaultValue = default_value
    56     
    56 
    57     def SetEditable(self, editable=True):
    57     def SetEditable(self, editable=True):
    58         self.Editable = editable
    58         self.Editable = editable
    59         self.RefreshButtons()
    59         self.RefreshButtons()
    60         
    60 
    61     def SetButtons(self, buttons):
    61     def SetButtons(self, buttons):
    62         for name in ["Add", "Delete", "Up", "Down"]:
    62         for name in ["Add", "Delete", "Up", "Down"]:
    63             button = buttons.get(name, None)
    63             button = buttons.get(name, None)
    64             setattr(self, "%sButton" % name, button)
    64             setattr(self, "%sButton" % name, button)
    65             if button is not None:
    65             if button is not None:
    66                 button.Bind(wx.EVT_BUTTON, getattr(self, "On%sButton" % name))
    66                 button.Bind(wx.EVT_BUTTON, getattr(self, "On%sButton" % name))
    67     
    67 
    68     def RefreshButtons(self):
    68     def RefreshButtons(self):
    69         if self:
    69         if self:
    70             rows = self.Table.GetNumberRows()
    70             rows = self.Table.GetNumberRows()
    71             row = self.GetGridCursorRow()
    71             row = self.GetGridCursorRow()
    72             if self.AddButton is not None:
    72             if self.AddButton is not None:
    75                 self.DeleteButton.Enable(self.Editable and rows > 0)
    75                 self.DeleteButton.Enable(self.Editable and rows > 0)
    76             if self.UpButton is not None:
    76             if self.UpButton is not None:
    77                 self.UpButton.Enable(self.Editable and row > 0)
    77                 self.UpButton.Enable(self.Editable and row > 0)
    78             if self.DownButton is not None:
    78             if self.DownButton is not None:
    79                 self.DownButton.Enable(self.Editable and 0 <= row < rows - 1)
    79                 self.DownButton.Enable(self.Editable and 0 <= row < rows - 1)
    80     
    80 
    81     def CloseEditControl(self):
    81     def CloseEditControl(self):
    82         row, col = self.GetGridCursorRow(), self.GetGridCursorCol()
    82         row, col = self.GetGridCursorRow(), self.GetGridCursorCol()
    83         if row != -1 and col != -1:
    83         if row != -1 and col != -1:
    84             self.SetGridCursor(row, col)
    84             self.SetGridCursor(row, col)
    85 
    85 
   117             new_row = self.Table.MoveRow(row, move)
   117             new_row = self.Table.MoveRow(row, move)
   118             if new_row != row:
   118             if new_row != row:
   119                 self.Table.ResetView(self)
   119                 self.Table.ResetView(self)
   120         if new_row != row:
   120         if new_row != row:
   121             self.SetSelectedCell(new_row, col)
   121             self.SetSelectedCell(new_row, col)
   122     
   122 
   123     def SetSelectedCell(self, row, col):
   123     def SetSelectedCell(self, row, col):
   124         self.SetGridCursor(row, col)
   124         self.SetGridCursor(row, col)
   125         self.MakeCellVisible(row, col)
   125         self.MakeCellVisible(row, col)
   126         self.RefreshButtons()
   126         self.RefreshButtons()
   127         
   127 
   128     def OnAddButton(self, event):
   128     def OnAddButton(self, event):
   129         self.AddRow()
   129         self.AddRow()
   130         self.SetFocus()
   130         self.SetFocus()
   131         event.Skip()
   131         event.Skip()
   132         
   132 
   133     def OnDeleteButton(self, event):
   133     def OnDeleteButton(self, event):
   134         self.DeleteRow()
   134         self.DeleteRow()
   135         self.SetFocus()
   135         self.SetFocus()
   136         event.Skip()
   136         event.Skip()
   137         
   137 
   138     def OnUpButton(self, event):
   138     def OnUpButton(self, event):
   139         self.MoveRow(self.GetGridCursorRow(), -1)
   139         self.MoveRow(self.GetGridCursorRow(), -1)
   140         self.SetFocus()
   140         self.SetFocus()
   141         event.Skip()
   141         event.Skip()
   142         
   142 
   143     def OnDownButton(self, event):
   143     def OnDownButton(self, event):
   144         self.MoveRow(self.GetGridCursorRow(), 1)
   144         self.MoveRow(self.GetGridCursorRow(), 1)
   145         self.SetFocus()
   145         self.SetFocus()
   146         event.Skip()
   146         event.Skip()
   147 
   147