Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
 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