From da67db6dff2ef275a1a55de548c2ed41f12bba33 Mon Sep 17 00:00:00 2001 From: Andrey Golovizin Date: Mon, 1 Sep 2014 18:51:03 +0200 Subject: [PATCH] Update GlyphDBEdit when new glyphs are added. --- pixelocr/gui/glyphdbedit.py | 24 ++++++++++++++++++------ pixelocr/gui/window.py | 7 ++++--- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/pixelocr/gui/glyphdbedit.py b/pixelocr/gui/glyphdbedit.py index ea6e5ad..e39a32c 100644 --- a/pixelocr/gui/glyphdbedit.py +++ b/pixelocr/gui/glyphdbedit.py @@ -73,8 +73,9 @@ class GlyphDBModel(QAbstractTableModel): def __init__(self, glyphdb, parent=None): super().__init__(parent) self.glyphdb = glyphdb - self.values = list(glyphdb.values()) - self.values.reverse() + self.sortKey = None + self.reverse = None + self.updateData() def rowCount(self, parent): return len(self.values) @@ -107,10 +108,18 @@ class GlyphDBModel(QAbstractTableModel): def sort(self, column_index, order): column = self.COLUMNS[column_index] - if column.sortKey is not None: - self.layoutAboutToBeChanged.emit() - self.values.sort(key=column.sortKey, reverse = (order == Qt.DescendingOrder)) - self.layoutChanged.emit() + self.sortKey = column.sortKey + self.reverse = (order == Qt.DescendingOrder) + 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) + self.layoutChanged.emit() class GlyphTableView(QTableView): @@ -135,6 +144,9 @@ class GlyphDBEdit(GlyphTableView): def sizeHint(self): return QSize(640, 480) + def updateData(self): + self.model().updateData() + def main(argv): dirname = argv[1] diff --git a/pixelocr/gui/window.py b/pixelocr/gui/window.py index e6cca25..c505217 100644 --- a/pixelocr/gui/window.py +++ b/pixelocr/gui/window.py @@ -54,8 +54,11 @@ class MainWindow(QMainWindow): self.page = PageView(self.pageScene, centralWidget) self.glyphEdit = GlyphEdit(centralWidget) self.glyphEdit.setEnabled(False) + self.glyphDBEdit = GlyphDBEdit(self.ocr.glyphdb) + self.glyphEdit.glyphEntered.connect(self.unknownGlyphEntered) self.glyphEdit.glyphEntered.connect(self.pageScene.clearHighlight) + self.glyphEdit.glyphEntered.connect(self.glyphDBEdit.updateData) ocr.pageChanged.connect(self.pageScene.setPage) ocr.pageChanged.connect(self.showPageTitle) ocr.unknownGlyph.connect(self.unknownGlyph) @@ -111,9 +114,7 @@ class MainWindow(QMainWindow): self.glyphEntered.emit(text, bold, italic) def showGlyphDBEdit(self): - if self.dbedit is None: - self.dbedit = GlyphDBEdit(self.ocr.glyphdb) - self.dbedit.show() + self.glyphDBEdit.show() def setDocumentTitle(self, title): if title: