From 34f58f0471b5f6cb8f25b91878a121f14f0a2fb0 Mon Sep 17 00:00:00 2001 From: Andrey Golovizin Date: Mon, 25 Aug 2014 13:12:36 +0200 Subject: [PATCH] Plug glyph db editor into the main menu. --- pixelocr/gui/__init__.py | 10 ++++------ pixelocr/gui/glypheditor.py | 18 +++++++++++++----- pixelocr/gui/window.py | 19 ++++++++++++++++++- 3 files changed, 35 insertions(+), 12 deletions(-) diff --git a/pixelocr/gui/__init__.py b/pixelocr/gui/__init__.py index f4994b5..339a681 100644 --- a/pixelocr/gui/__init__.py +++ b/pixelocr/gui/__init__.py @@ -39,14 +39,12 @@ def main(): QApplication.setOrganizationName("PixelOCR"); QApplication.setApplicationName("PixelOCR"); - win = MainWindow() - win.show() - ocr = OCREngine(sys.argv[1]) - ocr.pageChanged.connect(win.pageScene.setPage) - ocr.unknownGlyph.connect(win.unknownGlyph) - win.glyphEntered.connect(ocr.give_help) app.aboutToQuit.connect(ocr.save_glyphdb) + + win = MainWindow(ocr) + win.glyphEntered.connect(ocr.give_help) + win.show() ocr.start() signal.signal(signal.SIGINT, signal.SIG_DFL) diff --git a/pixelocr/gui/glypheditor.py b/pixelocr/gui/glypheditor.py index 3a641c9..00e3771 100644 --- a/pixelocr/gui/glypheditor.py +++ b/pixelocr/gui/glypheditor.py @@ -20,6 +20,7 @@ from collections import defaultdict from PyQt4.QtCore import ( Qt, QAbstractTableModel, + QSize, ) from PyQt4.QtGui import ( @@ -101,16 +102,23 @@ class GlyphTableView(QTableView): return super().keyPressEvent(event) +class GlyphDBEdit(GlyphTableView): + def __init__(self, glyphdb, *args, **kwargs): + super().__init__(*args, **kwargs) + model = GlyphDBModel(glyphdb, parent=self) + self.setModel(model) + + def sizeHint(self): + return QSize(640, 480) + + def main(argv): dirname = argv[1] app = QApplication(argv) glyphdb = GlyphDB(dirname) - view = GlyphTableView() - model = GlyphDBModel(glyphdb, parent=view) - view.setModel(model) - view.resize(640, 480) - view.show() + win = GlyphDBEdit(glyphdb) + win.show() sys.exit(app.exec_()) diff --git a/pixelocr/gui/window.py b/pixelocr/gui/window.py index 4048c62..bc61025 100644 --- a/pixelocr/gui/window.py +++ b/pixelocr/gui/window.py @@ -34,15 +34,20 @@ from PyQt4.QtGui import ( from .pageview import PageScene, PageView from .glyphedit import GlyphEdit +from .glypheditor import GlyphDBEdit class MainWindow(QMainWindow): + dbedit = None + glyphEntered = signal([str]) - def __init__(self): + def __init__(self, ocr): super().__init__() self.setWindowTitle('PixelOCR') + self.ocr = ocr + centralWidget = QWidget(self) self.setCentralWidget(centralWidget) self.pageScene = PageScene(self) @@ -50,6 +55,8 @@ class MainWindow(QMainWindow): self.glyphEdit = GlyphEdit(centralWidget) self.glyphEdit.glyphEntered.connect(self.glyphEntered) self.glyphEdit.glyphEntered.connect(self.pageScene.clearHighlight) + ocr.pageChanged.connect(self.pageScene.setPage) + ocr.unknownGlyph.connect(self.unknownGlyph) layout = QVBoxLayout(centralWidget) layout.setSpacing(0) @@ -68,6 +75,11 @@ class MainWindow(QMainWindow): quit.triggered.connect(qApp.closeAllWindows) fileMenu.addAction(quit) + fileMenu = self.menuBar().addMenu('&Tools') + glyphDBEdit = QAction('Edit glyph database', self) + glyphDBEdit.triggered.connect(self.showGlyphDBEdit) + fileMenu.addAction(glyphDBEdit) + def sizeHint(self): return QSize(800, 600) @@ -90,3 +102,8 @@ class MainWindow(QMainWindow): self.glyphEdit.setEnabled(True) self.glyphEdit.text.clear() self.glyphEdit.text.setFocus() + + def showGlyphDBEdit(self): + if self.dbedit is None: + self.dbedit = GlyphDBEdit(self.ocr.glyphdb) + self.dbedit.show()