def update_grid(self): view = self.GetView() view.BeginBatch() for start, end, newLen in self.table.items.changes: oldLen = end - start if newLen == oldLen: view.ProcessTableMessage( wxGrid.GridTableMessage( self, wxGrid.GRIDTABLE_REQUEST_VIEW_GET_VALUES, start, oldLen)) elif newLen > oldLen: if oldLen > 0: view.ProcessTableMessage( wxGrid.GridTableMessage( self, wxGrid.GRIDTABLE_REQUEST_VIEW_GET_VALUES, start, oldLen)) view.ProcessTableMessage( wxGrid.GridTableMessage( self, wxGrid.GRIDTABLE_NOTIFY_ROWS_INSERTED, start + oldLen, newLen - oldLen)) else: view.ProcessTableMessage( wxGrid.GridTableMessage( self, wxGrid.GRIDTABLE_NOTIFY_ROWS_DELETED, start + newLen, oldLen - newLen)) if newLen > 0: view.ProcessTableMessage( wxGrid.GridTableMessage( self, wxGrid.GRIDTABLE_REQUEST_VIEW_GET_VALUES, start, newLen)) for key in self.table.observer.changes: row, col = key if row < len(self.table.model): view.ProcessTableMessage( wxGrid.GridTableMessage( self, wxGrid.GRIDTABLE_REQUEST_VIEW_GET_VALUES, row, 1)) view.EndBatch() for row in view.GetSelectedRows(): index = self.RowToIndex(row) if not self.table.items[index] in self.table.selection: trellis.on_commit(view.DeselectRow, row) for index, item in enumerate(self.table.items): row = self.IndexToRow(index) if item in self.table.selection: trellis.on_commit(view.SelectRow, row, True)
def update_grid(self): view = self.GetView() view.BeginBatch() for start, end, newLen in self.table.items.changes: oldLen = end - start if newLen == oldLen: view.ProcessTableMessage(wxGrid.GridTableMessage(self, wxGrid.GRIDTABLE_REQUEST_VIEW_GET_VALUES, start, oldLen)) elif newLen > oldLen: if oldLen > 0: view.ProcessTableMessage(wxGrid.GridTableMessage(self, wxGrid.GRIDTABLE_REQUEST_VIEW_GET_VALUES, start, oldLen)) view.ProcessTableMessage(wxGrid.GridTableMessage(self, wxGrid.GRIDTABLE_NOTIFY_ROWS_INSERTED, start + oldLen, newLen - oldLen)) else: view.ProcessTableMessage(wxGrid.GridTableMessage(self, wxGrid.GRIDTABLE_NOTIFY_ROWS_DELETED, start + newLen, oldLen - newLen)) if newLen > 0: view.ProcessTableMessage(wxGrid.GridTableMessage(self, wxGrid.GRIDTABLE_REQUEST_VIEW_GET_VALUES, start, newLen)) for key in self.table.observer.changes: row, col = key if row < len(self.table.model): view.ProcessTableMessage(wxGrid.GridTableMessage(self, wxGrid.GRIDTABLE_REQUEST_VIEW_GET_VALUES, row, 1)) view.EndBatch() for row in view.GetSelectedRows(): index = self.RowToIndex(row) if not self.table.items[index] in self.table.selection: trellis.on_commit(view.DeselectRow, row) for index, item in enumerate(self.table.items): row = self.IndexToRow(index) if item in self.table.selection: trellis.on_commit(view.SelectRow, row, True)
def dirty(self): if not self._scheduled: trellis.change_attr(self, '_scheduled', True) trellis.on_commit(self._loop.call, trellis.atomically, self.do_run) return False