Add Bool and Italic columns to GlyphDBEdit.

This commit is contained in:
Andrey Golovizin 2014-09-01 22:35:18 +02:00
parent 4ab9bd44dd
commit 215d814777

View file

@ -44,6 +44,9 @@ class Column(object):
def image(self, glyph_data):
return None
def checkState(self, glyph_data):
return None
def sortKey(self, glyph_data):
return self.data(glyph_data)
@ -74,10 +77,38 @@ class ElevationColumn(Column):
glyph_data.elevation = value
class BoldColumn(Column):
header = 'Bold'
def sortKey(self, glyph_data):
return glyph_data.bold
def checkState(self, glyph_data):
return Qt.Checked if glyph_data.bold else Qt.Unchecked
def setData(self, glyph_data, value):
glyph_data.bold = value
class ItalicColumn(Column):
header = 'Italic'
def sortKey(self, glyph_data):
return glyph_data.italic
def checkState(self, glyph_data):
return Qt.Checked if glyph_data.italic else Qt.Unchecked
def setData(self, glyph_data, value):
glyph_data.italic = value
class GlyphDBModel(QAbstractTableModel):
COLUMNS = [
TextColumn(),
ElevationColumn(),
BoldColumn(),
ItalicColumn(),
]
def __init__(self, glyphdb, parent=None):
@ -88,7 +119,7 @@ class GlyphDBModel(QAbstractTableModel):
self.updateData()
def flags(self, index):
return super().flags(index) | Qt.ItemIsEditable
return super().flags(index) | Qt.ItemIsEditable | Qt.ItemIsUserCheckable
def rowCount(self, parent):
return len(self.values)
@ -109,12 +140,16 @@ class GlyphDBModel(QAbstractTableModel):
return column.image(data)
elif role == Qt.EditRole:
return column.data(data)
elif role == Qt.CheckStateRole:
return column.checkState(data)
def setData(self, index, value, role):
glyph_data = self.values[index.row()]
column = self.COLUMNS[index.column()]
if role == Qt.EditRole:
column.setData(glyph_data, value)
if role == Qt.CheckStateRole:
column.setData(glyph_data, value == Qt.Checked)
self.dataChanged.emit(index, index)
return True