diff --git a/pixelocr/gui/glyphdbedit.py b/pixelocr/gui/glyphdbedit.py index 44ccf39..a91a94c 100644 --- a/pixelocr/gui/glyphdbedit.py +++ b/pixelocr/gui/glyphdbedit.py @@ -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()