Pass Document to GlyphEdit columns.

This commit is contained in:
Andrey Golovizin 2014-09-19 23:31:35 +02:00
parent 8cec21191f
commit 45ef8dc691

View file

@ -39,7 +39,8 @@ class Column(object):
to_display = str
to_value = str
def __init__(self, header, field_name):
def __init__(self, document, header, field_name):
self.document = document
self.header = header
self.field_name = field_name
@ -103,45 +104,47 @@ class ColorColumn(Column):
class GlyphDBModel(QAbstractTableModel):
COLUMNS = [
TextColumn('Text', 'text'),
IntColumn('Elevation', 'elevation'),
CheckBoxColumn('B', 'bold'),
CheckBoxColumn('I', 'italic'),
ColorColumn('Color', 'color'),
DateColumn('Date added', 'date_added'),
]
def __init__(self, document, parent=None):
super().__init__(parent)
self.document = document
self.glyphdb = document.glyphdb
self.sortColumn = len(self.COLUMNS) - 1 # date_add ed
self.columns = self.createColumns()
self.sortColumn = len(self.columns) - 1 # date_add ed
self.sortOrder = Qt.DescendingOrder
self.values = list(self.glyphdb.values())
self.updateData()
def createColumns(self):
return [
TextColumn(self.document, 'Text', 'text'),
IntColumn(self.document, 'Elevation', 'elevation'),
CheckBoxColumn(self.document, 'B', 'bold'),
CheckBoxColumn(self.document, 'I', 'italic'),
ColorColumn(self.document, 'Color', 'color'),
DateColumn(self.document, 'Date added', 'date_added'),
]
def flags(self, index):
column = self.COLUMNS[index.column()]
column = self.columns[index.column()]
return super().flags(index) | column.flags
def rowCount(self, parent):
return len(self.values)
def columnCount(self, parent):
return len(self.COLUMNS)
return len(self.columns)
def headerData(self, section, orientation, role):
if orientation == Qt.Horizontal and role == Qt.DisplayRole:
return self.COLUMNS[section].header
return self.columns[section].header
def data(self, index, role):
column = self.COLUMNS[index.column()]
column = self.columns[index.column()]
glyph_data = self.values[index.row()]
return column.data(glyph_data, role)
def setData(self, index, value, role):
column = self.COLUMNS[index.column()]
column = self.columns[index.column()]
glyph_data = self.values[index.row()]
self.glyphdb.remove(glyph_data)
column.setData(glyph_data, value, role)
@ -167,7 +170,7 @@ class GlyphDBModel(QAbstractTableModel):
def updateData(self):
self.layoutAboutToBeChanged.emit()
column = self.COLUMNS[self.sortColumn]
column = self.columns[self.sortColumn]
reverse = self.sortOrder == Qt.DescendingOrder
if len(self.values) != len(self.glyphdb.values()):
self.values = self.glyphdb.values()