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