From cf8575152eb204396a53334282428f870b5e91fc Mon Sep 17 00:00:00 2001 From: Andrey Golovizin Date: Thu, 21 Aug 2014 23:24:07 +0200 Subject: [PATCH] Display glyph images in the glyph editor. --- pixelocr/gui/glypheditor.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/pixelocr/gui/glypheditor.py b/pixelocr/gui/glypheditor.py index 2380e24..16bcd5d 100644 --- a/pixelocr/gui/glypheditor.py +++ b/pixelocr/gui/glypheditor.py @@ -15,6 +15,7 @@ import sys +from collections import defaultdict from PyQt4.QtCore import ( Qt, @@ -27,6 +28,7 @@ from PyQt4.QtGui import ( ) from ..glyphdb import GlyphDB +from ..image import Image class GlyphDBModel(QAbstractTableModel): @@ -34,6 +36,7 @@ class GlyphDBModel(QAbstractTableModel): super().__init__(parent) self.glyphdb = glyphdb self.keys = list(glyphdb.keys()) + self.images = {} def rowCount(self, parent): return len(self.keys) @@ -41,10 +44,25 @@ class GlyphDBModel(QAbstractTableModel): def columnCount(self, parent): return 1 + def _deserialize_image(self, key): + elevation_, serialized_image = key + return Image.deserialize(serialized_image).toqimage() + + def get_image(self, key): + try: + image = self.images[key] + except KeyError: + image = self._deserialize_image(key) + self.images[key] = image + return image + def data(self, index, role): if index.column() == 0: + key = self.keys[index.row()] if role == Qt.DisplayRole: - return self.glyphdb[self.keys[index.row()]] + return self.glyphdb[key] + elif role == Qt.DecorationRole: + return self.get_image(key) def main(argv):