Пример #1
0
    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
Пример #2
0
    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 ""
Пример #3
0
 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]
Пример #4
0
    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
Пример #5
0
 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
Пример #6
0
    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
Пример #7
0
    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
Пример #8
0
    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
Пример #9
0
 def double_click(self, index):
     column = Column.get(index.row())
     gui.ColChange.instance.set(column) if column else None
Пример #10
0
 def column(self):
     return Column.get(self.column_id)