Exemple #1
0
 def select_rows(self, identifiers, using_ids=True, change_current=True,
         scroll=True):
     '''
     Select rows identified by identifiers. identifiers can be a set of ids,
     row numbers or QModelIndexes.
     '''
     rows = set([x.row() if hasattr(x, 'row') else x for x in
         identifiers])
     if using_ids:
         rows = set([])
         identifiers = set(identifiers)
         m = self.model()
         for row in xrange(m.rowCount(QModelIndex())):
             if m.id(row) in identifiers:
                 rows.add(row)
     rows = list(sorted(rows))
     if rows:
         row = rows[0]
         if change_current:
             self.set_current_row(row, select=False)
         if scroll:
             self.scroll_to_row(row)
     sm = self.selectionModel()
     sel = QItemSelection()
     m = self.model()
     max_col = m.columnCount(QModelIndex()) - 1
     # Create a range based selector for each set of contiguous rows
     # as supplying selectors for each individual row causes very poor
     # performance if a large number of rows has to be selected.
     for k, g in itertools.groupby(enumerate(rows), lambda (i,x):i-x):
         group = list(map(operator.itemgetter(1), g))
         sel.merge(QItemSelection(m.index(min(group), 0),
             m.index(max(group), max_col)), sm.Select)
Exemple #2
0
 def select_rows(self, identifiers, using_ids=True, change_current=True,
         scroll=True):
     '''
     Select rows identified by identifiers. identifiers can be a set of ids,
     row numbers or QModelIndexes.
     '''
     rows = set([x.row() if hasattr(x, 'row') else x for x in
         identifiers])
     if using_ids:
         rows = set([])
         identifiers = set(identifiers)
         m = self.model()
         for row in xrange(m.rowCount(QModelIndex())):
             if m.id(row) in identifiers:
                 rows.add(row)
     rows = list(sorted(rows))
     if rows:
         row = rows[0]
         if change_current:
             self.set_current_row(row, select=False)
         if scroll:
             self.scroll_to_row(row)
     sm = self.selectionModel()
     sel = QItemSelection()
     m = self.model()
     max_col = m.columnCount(QModelIndex()) - 1
     # Create a range based selector for each set of contiguous rows
     # as supplying selectors for each individual row causes very poor
     # performance if a large number of rows has to be selected.
     for k, g in itertools.groupby(enumerate(rows), lambda (i,x):i-x):
         group = list(map(operator.itemgetter(1), g))
         sel.merge(QItemSelection(m.index(min(group), 0),
             m.index(max(group), max_col)), sm.Select)
Exemple #3
0
 def select_rows(self, rows):
     sel = QItemSelection()
     sm = self.selectionModel()
     m = self.model()
     # Create a range based selector for each set of contiguous rows
     # as supplying selectors for each individual row causes very poor
     # performance if a large number of rows has to be selected.
     for k, g in itertools.groupby(enumerate(rows), lambda (i,x):i-x):
         group = list(map(operator.itemgetter(1), g))
         sel.merge(QItemSelection(m.index(min(group), 0), m.index(max(group), 0)), sm.Select)
Exemple #4
0
 def select_rows(self, rows):
     sel = QItemSelection()
     sm = self.selectionModel()
     m = self.model()
     # Create a range based selector for each set of contiguous rows
     # as supplying selectors for each individual row causes very poor
     # performance if a large number of rows has to be selected.
     for k, g in itertools.groupby(enumerate(rows), lambda (i,x):i-x):
         group = list(map(operator.itemgetter(1), g))
         sel.merge(QItemSelection(m.index(min(group), 0), m.index(max(group), 0)), sm.Select)