def headerData(self, id, orientation, role=None): if orientation == Qt.Horizontal: if role == Qt.ItemDataRole: return str(id) elif role == Qt.DisplayRole: column = Column.get(id) return column.name if column else "var" elif role == Qt.SizeHintRole: return CellModel.ColumnSize else: if role == Qt.ItemDataRole: return str(id) elif role == Qt.DisplayRole: return str(id + 1) elif role == Qt.TextAlignmentRole: return Qt.AlignCenter elif role == Qt.SizeHintRole: return CellModel.RowSize elif role == Qt.BackgroundRole: if Selection().is_selected(id): return CellModel.SelectedRowColor else: return CellModel.UnSelectedRowColor
def where(self): if self.query.input: where = deepcopy(self.query.input) for item in self.query.scanner.data: col, reg = item['col'], item['re'] if reg: where = re.sub('(?:%s)' % Column.get(col).name, 'd{}'.format(col), where) return models.Query.Where.format(where=where) else: return ""
def data(self, index, role=None): row, col = index.row(), index.column() if role == Qt.DisplayRole: column = Column.get(row) if column: return ColumnListModel.item_data[col](column) else: logger.debug("Column not found. column_id={}".format(row)) if role == Qt.SizeHintRole: return QtCore.QSize(ColumnListModel.item_size[col], 15) if role == Qt.TextAlignmentRole: return ColumnListModel.item_alignment[col]
def select(self): if self.query.select: select = deepcopy(self.query.select) for item in self.query.select_scanner.data: col, reg = item['col'], item['re'] if reg: select = re.sub('(?:%s)' % Column.get(col).name, 'd{}'.format(col), select) return models.Query.ComputeSelect.format(select=select) else: return models.Query.Select
def scan(self, input): logger.debug('scanning query. query={}'.format(self.query)) for col in Column.array: self.data.append({ 'col': col, 're': re.search('(?:%s)' % Column.get(col).name, input)}) cols = [item['col'] for item in self.data if item['re']] for column in cols: logger.debug(column) if not cols: self.query.error = models.Query.NoColumnError self.query.status = models.Query.Scanned self._cols = cols
def __init__(self, parent): super(ColChange, self).__init__(parent) self.column = Column.get(0) self.general_attributes = ColGeneralAttributes(self) self.values = ColValues(self) self.missing = ColMissing(self) self.vbox = QtWidgets.QVBoxLayout(self) # self.vbox.setContentsMargins(0, 0, 0, 0) self.vbox.addWidget(self.general_attributes, QtCore.Qt.AlignTop) self.vbox.addWidget(self.values, QtCore.Qt.AlignTop) self.vbox.addWidget(self.missing, QtCore.Qt.AlignTop) # self.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum) self.set(self.column) ColChange.instance = self
def data(self, index, role=None): # logger.debug("index={}, role={}".format(QModelIndex, role)) row, column = index.row(), index.column() if role == Qt.DisplayRole: cell = Cell.get(row, column) return cell.data if cell else None if role == Qt.EditRole: cell = Cell.get(row, column) return str(cell.data) if cell else None if role == Qt.SizeHintRole: return CellModel.CellSize if role == Qt.TextAlignmentRole: column = Column.get(column) if column: if column.type.type == DataType.Numeric: return CellModel.NumericCellAlign
def __init__(self, row, column, data=None): self.id = len(Cell.array) self.row_id = row self.column_id = column self._data = data column_obj = Column.get(column) row_obj = Row.get(row) if not self.column: self.column = Column(column) else: self.column = column_obj if not self.row: self.row = Row(row) else: self.row = row_obj Cell.array[(row, column)] = self
def double_click(self, index): column = Column.get(index.row()) gui.ColChange.instance.set(column) if column else None
def column(self): return Column.get(self.column_id)