X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ec873c943d71f0d5f13e3398557071448cda6c23..a4027e74873007e3430af3bd77019bcab76f6c04:/wxPython/demo/GridDragable.py?ds=sidebyside diff --git a/wxPython/demo/GridDragable.py b/wxPython/demo/GridDragable.py deleted file mode 100644 index 8f375b8eb7..0000000000 --- a/wxPython/demo/GridDragable.py +++ /dev/null @@ -1,205 +0,0 @@ - -import wx -import wx.grid as gridlib -import wx.lib.gridmovers as gridmovers - -#--------------------------------------------------------------------------- - -class CustomDataTable(gridlib.PyGridTableBase): - def __init__(self, log): - gridlib.PyGridTableBase.__init__(self) - self.log = log - - self.identifiers = ['id','ds','sv','pr','pl','op','fx','ts'] - - self.rowLabels = ['Row1','Row2','Row3'] - - self.colLabels = {'id':'ID','ds':'Description','sv':'Severity', - 'pr':'Priority','pl':'Platform','op':'Opened?', - 'fx':'Fixed?','ts':'Tested?'} - - self.data = [{'id':1010, - 'ds':"The foo doesn't bar", - 'sv':"major", - 'pr':1, - 'pl':'MSW', - 'op':1, - 'fx':1, - 'ts':1 - }, - {'id':1011, - 'ds':"I've got a wicket in my wocket", - 'sv':"wish list", - 'pr':2, - 'pl':'other', - 'op':0, - 'fx':0, - 'ts':0 - }, - {'id':1012, - 'ds':"Rectangle() returns a triangle", - 'sv':"critical", - 'pr':5, - 'pl':'all', - 'op':0, - 'fx':0, - 'ts':0 - } - ] - - #-------------------------------------------------- - # required methods for the wxPyGridTableBase interface - - def GetNumberRows(self): - return len(self.data) - - def GetNumberCols(self): - return len(self.identifiers) - - def IsEmptyCell(self, row, col): - id = self.identifiers[col] - return not self.data[row][id] - - def GetValue(self, row, col): - id = self.identifiers[col] - return self.data[row][id] - - def SetValue(self, row, col, value): - id = self.identifiers[col] - self.data[row][id] = value - - #-------------------------------------------------- - # Some optional methods - - # Called when the grid needs to display column labels - def GetColLabelValue(self, col): - id = self.identifiers[col] - return self.colLabels[id] - - # Called when the grid needs to display row labels - def GetRowLabelValue(self,row): - return self.rowLabels[row] - - #-------------------------------------------------- - # Methods added for demo purposes. - - # The physical moving of the cols/rows is left to the implementer. - # Because of the dynamic nature of a wxGrid the physical moving of - # columns differs from implementation to implementation - - # Move the column - def MoveColumn(self,frm,to): - grid = self.GetView() - - if grid: - # Move the identifiers - old = self.identifiers[frm] - del self.identifiers[frm] - - if to > frm: - self.identifiers.insert(to-1,old) - else: - self.identifiers.insert(to,old) - - # Notify the grid - grid.BeginBatch() - msg = gridlib.GridTableMessage( - self, gridlib.GRIDTABLE_NOTIFY_COLS_DELETED, frm, 1 - ) - - grid.ProcessTableMessage(msg) - - msg = gridlib.GridTableMessage( - self, gridlib.GRIDTABLE_NOTIFY_COLS_INSERTED, to, 1 - ) - - grid.ProcessTableMessage(msg) - grid.EndBatch() - - # Move the row - def MoveRow(self,frm,to): - grid = self.GetView() - - if grid: - # Move the rowLabels and data rows - oldLabel = self.rowLabels[frm] - oldData = self.data[frm] - del self.rowLabels[frm] - del self.data[frm] - - if to > frm: - self.rowLabels.insert(to-1,oldLabel) - self.data.insert(to-1,oldData) - else: - self.rowLabels.insert(to,oldLabel) - self.data.insert(to,oldData) - - # Notify the grid - grid.BeginBatch() - - msg = gridlib.GridTableMessage( - self, gridlib.GRIDTABLE_NOTIFY_ROWS_DELETED, frm, 1 - ) - - grid.ProcessTableMessage(msg) - - msg = gridlib.GridTableMessage( - self, gridlib.GRIDTABLE_NOTIFY_ROWS_INSERTED, to, 1 - ) - - grid.ProcessTableMessage(msg) - grid.EndBatch() - - -#--------------------------------------------------------------------------- - - -class DragableGrid(gridlib.Grid): - def __init__(self, parent, log): - gridlib.Grid.__init__(self, parent, -1) - - table = CustomDataTable(log) - - # The second parameter means that the grid is to take ownership of the - # table and will destroy it when done. Otherwise you would need to keep - # a reference to it and call it's Destroy method later. - self.SetTable(table, True) - - # Enable Column moving - gridmovers.GridColMover(self) - self.Bind(gridmovers.EVT_GRID_COL_MOVE, self.OnColMove, self) - - # Enable Row moving - gridmovers.GridRowMover(self) - self.Bind(gridmovers.EVT_GRID_ROW_MOVE, self.OnRowMove, self) - - # Event method called when a column move needs to take place - def OnColMove(self,evt): - frm = evt.GetMoveColumn() # Column being moved - to = evt.GetBeforeColumn() # Before which column to insert - self.GetTable().MoveColumn(frm,to) - - # Event method called when a row move needs to take place - def OnRowMove(self,evt): - frm = evt.GetMoveRow() # Row being moved - to = evt.GetBeforeRow() # Before which row to insert - self.GetTable().MoveRow(frm,to) - -#--------------------------------------------------------------------------- - -class TestFrame(wx.Frame): - def __init__(self, parent, log): - wx.Frame.__init__(self, parent, -1, "Custom Table, data driven Grid Demo", size=(640,480)) - grid = DragableGrid(self, log) - - -#--------------------------------------------------------------------------- - -if __name__ == '__main__': - import sys - app = wx.PySimpleApp() - frame = TestFrame(None, sys.stdout) - frame.Show(True) - app.MainLoop() - -#---------------------------------------------------------------------------