Add 'Date added' column to GlyphDBEdit.
This commit is contained in:
parent
f31a74df60
commit
af351617d8
1 changed files with 19 additions and 15 deletions
|
|
@ -34,7 +34,8 @@ from ..image import Image
|
|||
|
||||
class Column(object):
|
||||
flags = Qt.ItemIsEditable
|
||||
data_type = str
|
||||
to_display = str
|
||||
to_value = str
|
||||
|
||||
def __init__(self, header, field_name, image_field_name=None):
|
||||
self.header = header
|
||||
|
|
@ -43,25 +44,29 @@ class Column(object):
|
|||
|
||||
def data(self, glyph_data, role):
|
||||
if role in [Qt.DisplayRole, Qt.EditRole]:
|
||||
return self.data_type(getattr(glyph_data, self.field_name))
|
||||
return self.to_display(getattr(glyph_data, self.field_name))
|
||||
elif role == Qt.DecorationRole and self.image_field_name:
|
||||
return getattr(glyph_data, self.image_field_name).qimage
|
||||
|
||||
def setData(self, glyph_data, value, role):
|
||||
if role == Qt.EditRole:
|
||||
setattr(glyph_data, self.field_name, self.data_type(value))
|
||||
setattr(glyph_data, self.field_name, self.to_value(value))
|
||||
|
||||
def sortKey(self, glyph_data):
|
||||
return getattr(glyph_data, self.field_name)
|
||||
|
||||
|
||||
class IntColumn(Column):
|
||||
data_type = int
|
||||
to_display = int
|
||||
to_value = int
|
||||
|
||||
|
||||
class DateColumn(Column):
|
||||
flags = 0
|
||||
|
||||
|
||||
class CheckBoxColumn(Column):
|
||||
flags = Qt.ItemIsUserCheckable
|
||||
data_type = bool
|
||||
|
||||
def data(self, glyph_data, role):
|
||||
if role == Qt.CheckStateRole:
|
||||
|
|
@ -79,13 +84,14 @@ class GlyphDBModel(QAbstractTableModel):
|
|||
IntColumn('Elevation', 'elevation'),
|
||||
CheckBoxColumn('Bold', 'bold'),
|
||||
CheckBoxColumn('Italic', 'italic'),
|
||||
DateColumn('Date added', 'date_added'),
|
||||
]
|
||||
|
||||
def __init__(self, glyphdb, parent=None):
|
||||
super().__init__(parent)
|
||||
self.glyphdb = glyphdb
|
||||
self.sortKey = None
|
||||
self.reverse = None
|
||||
self.sortColumn = len(self.COLUMNS) - 1 # date_add ed
|
||||
self.sortOrder = Qt.DescendingOrder
|
||||
self.updateData()
|
||||
|
||||
def flags(self, index):
|
||||
|
|
@ -128,18 +134,15 @@ class GlyphDBModel(QAbstractTableModel):
|
|||
return True
|
||||
|
||||
def sort(self, column_index, order):
|
||||
column = self.COLUMNS[column_index]
|
||||
self.sortKey = column.sortKey
|
||||
self.reverse = (order == Qt.DescendingOrder)
|
||||
self.sortColumn = column_index
|
||||
self.sortOrder = order
|
||||
self.updateData()
|
||||
|
||||
def updateData(self):
|
||||
self.layoutAboutToBeChanged.emit()
|
||||
if self.sortKey is None:
|
||||
self.values = list(self.glyphdb.values())
|
||||
self.values.reverse()
|
||||
else:
|
||||
self.values = sorted(self.glyphdb.values(), key=self.sortKey, reverse=self.reverse)
|
||||
column = self.COLUMNS[self.sortColumn]
|
||||
reverse = self.sortOrder == Qt.DescendingOrder
|
||||
self.values = sorted(self.glyphdb.values(), key=column.sortKey, reverse=reverse)
|
||||
self.layoutChanged.emit()
|
||||
|
||||
|
||||
|
|
@ -160,6 +163,7 @@ class GlyphDBEdit(GlyphTableView):
|
|||
def __init__(self, glyphdb, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
model = GlyphDBModel(glyphdb, parent=self)
|
||||
self.horizontalHeader().setSortIndicator(model.sortColumn, model.sortOrder)
|
||||
self.setModel(model)
|
||||
|
||||
def sizeHint(self):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue