diff --git a/ui/designer/components/ocrQueue.ui b/ui/designer/components/ocrQueue.ui
index 2c1e9de..7164a48 100644
--- a/ui/designer/components/ocrQueue.ui
+++ b/ui/designer/components/ocrQueue.ui
@@ -22,39 +22,6 @@
queue.title
- -
-
-
- iccOptionsGroupBox
-
-
-
-
-
-
- icc.useQt
-
-
-
- -
-
-
- icc.usePIL
-
-
- true
-
-
-
- -
-
-
- icc.tryFix
-
-
-
-
-
-
-
@@ -95,6 +62,13 @@
+ -
+
+
+ queue.optionsButton
+
+
+
-
diff --git a/ui/designer/components/ocrQueueOptionsDialog.ui b/ui/designer/components/ocrQueueOptionsDialog.ui
new file mode 100644
index 0000000..1c1d847
--- /dev/null
+++ b/ui/designer/components/ocrQueueOptionsDialog.ui
@@ -0,0 +1,140 @@
+
+
+ OcrQueueOptionsDialog
+
+
+
+ 0
+ 0
+ 331
+ 157
+
+
+
+ OCR Options
+
+
+
-
+
+
-
+
+
+ iccOptionsGroupBox
+
+
+
-
+
+
+ icc.useQt
+
+
+
+ -
+
+
+ icc.usePIL
+
+
+ true
+
+
+
+ -
+
+
+ icc.tryFix
+
+
+
+
+
+
+ -
+
+
+ dateOptionsGroupBox
+
+
+
-
+
+
+ false
+
+
+ date.readFromExif
+
+
+ true
+
+
+
+ -
+
+
+ date.useCreationDate
+
+
+ true
+
+
+
+ -
+
+
+ date.useModifyDate
+
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QDialogButtonBox::Cancel|QDialogButtonBox::Ok
+
+
+
+
+
+
+
+
+ buttonBox
+ accepted()
+ OcrQueueOptionsDialog
+ accept()
+
+
+ 248
+ 254
+
+
+ 157
+ 274
+
+
+
+
+ buttonBox
+ rejected()
+ OcrQueueOptionsDialog
+ reject()
+
+
+ 316
+ 260
+
+
+ 286
+ 274
+
+
+
+
+
diff --git a/ui/designer/components/ocrQueueOptionsDialog_ui.py b/ui/designer/components/ocrQueueOptionsDialog_ui.py
new file mode 100644
index 0000000..2c58972
--- /dev/null
+++ b/ui/designer/components/ocrQueueOptionsDialog_ui.py
@@ -0,0 +1,107 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'ocrQueueOptionsDialog.ui'
+##
+## Created by: Qt User Interface Compiler version 6.5.2
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
+ QFont, QFontDatabase, QGradient, QIcon,
+ QImage, QKeySequence, QLinearGradient, QPainter,
+ QPalette, QPixmap, QRadialGradient, QTransform)
+from PySide6.QtWidgets import (QAbstractButton, QApplication, QCheckBox, QDialog,
+ QDialogButtonBox, QGroupBox, QHBoxLayout, QRadioButton,
+ QSizePolicy, QVBoxLayout, QWidget)
+
+class Ui_OcrQueueOptionsDialog(object):
+ def setupUi(self, OcrQueueOptionsDialog):
+ if not OcrQueueOptionsDialog.objectName():
+ OcrQueueOptionsDialog.setObjectName(u"OcrQueueOptionsDialog")
+ OcrQueueOptionsDialog.resize(331, 157)
+ self.verticalLayout = QVBoxLayout(OcrQueueOptionsDialog)
+ self.verticalLayout.setObjectName(u"verticalLayout")
+ self.horizontalLayout = QHBoxLayout()
+ self.horizontalLayout.setObjectName(u"horizontalLayout")
+ self.groupBox = QGroupBox(OcrQueueOptionsDialog)
+ self.groupBox.setObjectName(u"groupBox")
+ self.verticalLayout_2 = QVBoxLayout(self.groupBox)
+ self.verticalLayout_2.setObjectName(u"verticalLayout_2")
+ self.iccUseQtRadioButton = QRadioButton(self.groupBox)
+ self.iccUseQtRadioButton.setObjectName(u"iccUseQtRadioButton")
+
+ self.verticalLayout_2.addWidget(self.iccUseQtRadioButton)
+
+ self.iccUsePILRadioButton = QRadioButton(self.groupBox)
+ self.iccUsePILRadioButton.setObjectName(u"iccUsePILRadioButton")
+ self.iccUsePILRadioButton.setChecked(True)
+
+ self.verticalLayout_2.addWidget(self.iccUsePILRadioButton)
+
+ self.iccTryFixRadioButton = QRadioButton(self.groupBox)
+ self.iccTryFixRadioButton.setObjectName(u"iccTryFixRadioButton")
+
+ self.verticalLayout_2.addWidget(self.iccTryFixRadioButton)
+
+
+ self.horizontalLayout.addWidget(self.groupBox)
+
+ self.groupBox_2 = QGroupBox(OcrQueueOptionsDialog)
+ self.groupBox_2.setObjectName(u"groupBox_2")
+ self.verticalLayout_3 = QVBoxLayout(self.groupBox_2)
+ self.verticalLayout_3.setObjectName(u"verticalLayout_3")
+ self.dateReadFromExifCheckbox = QCheckBox(self.groupBox_2)
+ self.dateReadFromExifCheckbox.setObjectName(u"dateReadFromExifCheckbox")
+ self.dateReadFromExifCheckbox.setEnabled(False)
+ self.dateReadFromExifCheckbox.setChecked(True)
+
+ self.verticalLayout_3.addWidget(self.dateReadFromExifCheckbox)
+
+ self.dateUseCreationDateRadioButton = QRadioButton(self.groupBox_2)
+ self.dateUseCreationDateRadioButton.setObjectName(u"dateUseCreationDateRadioButton")
+ self.dateUseCreationDateRadioButton.setChecked(True)
+
+ self.verticalLayout_3.addWidget(self.dateUseCreationDateRadioButton)
+
+ self.dateUseModifyDateRadioButton = QRadioButton(self.groupBox_2)
+ self.dateUseModifyDateRadioButton.setObjectName(u"dateUseModifyDateRadioButton")
+
+ self.verticalLayout_3.addWidget(self.dateUseModifyDateRadioButton)
+
+
+ self.horizontalLayout.addWidget(self.groupBox_2)
+
+
+ self.verticalLayout.addLayout(self.horizontalLayout)
+
+ self.buttonBox = QDialogButtonBox(OcrQueueOptionsDialog)
+ self.buttonBox.setObjectName(u"buttonBox")
+ self.buttonBox.setOrientation(Qt.Horizontal)
+ self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel|QDialogButtonBox.Ok)
+
+ self.verticalLayout.addWidget(self.buttonBox)
+
+
+ self.retranslateUi(OcrQueueOptionsDialog)
+ self.buttonBox.accepted.connect(OcrQueueOptionsDialog.accept)
+ self.buttonBox.rejected.connect(OcrQueueOptionsDialog.reject)
+
+ QMetaObject.connectSlotsByName(OcrQueueOptionsDialog)
+ # setupUi
+
+ def retranslateUi(self, OcrQueueOptionsDialog):
+ OcrQueueOptionsDialog.setWindowTitle(QCoreApplication.translate("OcrQueueOptionsDialog", u"OCR Options", None))
+ self.groupBox.setTitle(QCoreApplication.translate("OcrQueueOptionsDialog", u"iccOptionsGroupBox", None))
+ self.iccUseQtRadioButton.setText(QCoreApplication.translate("OcrQueueOptionsDialog", u"icc.useQt", None))
+ self.iccUsePILRadioButton.setText(QCoreApplication.translate("OcrQueueOptionsDialog", u"icc.usePIL", None))
+ self.iccTryFixRadioButton.setText(QCoreApplication.translate("OcrQueueOptionsDialog", u"icc.tryFix", None))
+ self.groupBox_2.setTitle(QCoreApplication.translate("OcrQueueOptionsDialog", u"dateOptionsGroupBox", None))
+ self.dateReadFromExifCheckbox.setText(QCoreApplication.translate("OcrQueueOptionsDialog", u"date.readFromExif", None))
+ self.dateUseCreationDateRadioButton.setText(QCoreApplication.translate("OcrQueueOptionsDialog", u"date.useCreationDate", None))
+ self.dateUseModifyDateRadioButton.setText(QCoreApplication.translate("OcrQueueOptionsDialog", u"date.useModifyDate", None))
+ # retranslateUi
diff --git a/ui/designer/components/ocrQueue_ui.py b/ui/designer/components/ocrQueue_ui.py
index 238e98d..2de0728 100644
--- a/ui/designer/components/ocrQueue_ui.py
+++ b/ui/designer/components/ocrQueue_ui.py
@@ -17,8 +17,8 @@ from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QAbstractItemView, QApplication, QCheckBox, QGroupBox,
QHBoxLayout, QHeaderView, QLabel, QProgressBar,
- QPushButton, QRadioButton, QSizePolicy, QSpacerItem,
- QTableView, QVBoxLayout, QWidget)
+ QPushButton, QSizePolicy, QSpacerItem, QTableView,
+ QVBoxLayout, QWidget)
class Ui_OcrQueue(object):
def setupUi(self, OcrQueue):
@@ -34,29 +34,6 @@ class Ui_OcrQueue(object):
self.groupBox_3.setObjectName(u"groupBox_3")
self.verticalLayout_2 = QVBoxLayout(self.groupBox_3)
self.verticalLayout_2.setObjectName(u"verticalLayout_2")
- self.groupBox = QGroupBox(self.groupBox_3)
- self.groupBox.setObjectName(u"groupBox")
- self.verticalLayout = QVBoxLayout(self.groupBox)
- self.verticalLayout.setObjectName(u"verticalLayout")
- self.iccUseQtRadioButton = QRadioButton(self.groupBox)
- self.iccUseQtRadioButton.setObjectName(u"iccUseQtRadioButton")
-
- self.verticalLayout.addWidget(self.iccUseQtRadioButton)
-
- self.iccUsePILRadioButton = QRadioButton(self.groupBox)
- self.iccUsePILRadioButton.setObjectName(u"iccUsePILRadioButton")
- self.iccUsePILRadioButton.setChecked(True)
-
- self.verticalLayout.addWidget(self.iccUsePILRadioButton)
-
- self.iccTryFixRadioButton = QRadioButton(self.groupBox)
- self.iccTryFixRadioButton.setObjectName(u"iccTryFixRadioButton")
-
- self.verticalLayout.addWidget(self.iccTryFixRadioButton)
-
-
- self.verticalLayout_2.addWidget(self.groupBox)
-
self.ocr_addImageButton = QPushButton(self.groupBox_3)
self.ocr_addImageButton.setObjectName(u"ocr_addImageButton")
@@ -78,6 +55,11 @@ class Ui_OcrQueue(object):
self.verticalLayout_2.addItem(self.verticalSpacer)
+ self.optionsDialogButton = QPushButton(self.groupBox_3)
+ self.optionsDialogButton.setObjectName(u"optionsDialogButton")
+
+ self.verticalLayout_2.addWidget(self.optionsDialogButton)
+
self.ocr_startButton = QPushButton(self.groupBox_3)
self.ocr_startButton.setObjectName(u"ocr_startButton")
@@ -154,13 +136,10 @@ class Ui_OcrQueue(object):
def retranslateUi(self, OcrQueue):
self.groupBox_3.setTitle(QCoreApplication.translate("OcrQueue", u"queue.title", None))
- self.groupBox.setTitle(QCoreApplication.translate("OcrQueue", u"iccOptionsGroupBox", None))
- self.iccUseQtRadioButton.setText(QCoreApplication.translate("OcrQueue", u"icc.useQt", None))
- self.iccUsePILRadioButton.setText(QCoreApplication.translate("OcrQueue", u"icc.usePIL", None))
- self.iccTryFixRadioButton.setText(QCoreApplication.translate("OcrQueue", u"icc.tryFix", None))
self.ocr_addImageButton.setText(QCoreApplication.translate("OcrQueue", u"queue.addImageButton", None))
self.ocr_removeSelectedButton.setText(QCoreApplication.translate("OcrQueue", u"queue.removeSelected", None))
self.ocr_removeAllButton.setText(QCoreApplication.translate("OcrQueue", u"queue.removeAll", None))
+ self.optionsDialogButton.setText(QCoreApplication.translate("OcrQueue", u"queue.optionsButton", None))
self.ocr_startButton.setText(QCoreApplication.translate("OcrQueue", u"queue.startOcrButton", None))
self.groupBox_5.setTitle(QCoreApplication.translate("OcrQueue", u"results", None))
self.ocr_acceptSelectedButton.setText(QCoreApplication.translate("OcrQueue", u"results.acceptSelectedButton", None))
@@ -169,4 +148,3 @@ class Ui_OcrQueue(object):
self.statusLabel.setText("")
pass
# retranslateUi
-
diff --git a/ui/extends/components/ocrQueue.py b/ui/extends/components/ocrQueue.py
index efcc404..61c6e6c 100644
--- a/ui/extends/components/ocrQueue.py
+++ b/ui/extends/components/ocrQueue.py
@@ -150,6 +150,7 @@ class OcrQueueModel(QAbstractListModel):
@iccOption.setter
def iccOption(self, opt: IccOption):
+ logger.debug(f"ICC option changed to {opt}")
self.__iccOption = opt
@overload
@@ -344,8 +345,12 @@ class OcrQueueTableProxyModel(QAbstractTableModel):
def retranslateHeaders(self):
self.__horizontalHeaders = [
# fmt: off
- QCoreApplication.translate("OcrTableModel", "horizontalHeader.title.select"),
- QCoreApplication.translate("OcrTableModel", "horizontalHeader.title.imagePreview"),
+ QCoreApplication.translate(
+ "OcrTableModel", "horizontalHeader.title.select"
+ ),
+ QCoreApplication.translate(
+ "OcrTableModel", "horizontalHeader.title.imagePreview"
+ ),
QCoreApplication.translate("OcrTableModel", "horizontalHeader.title.chart"),
QCoreApplication.translate("OcrTableModel", "horizontalHeader.title.score"),
# fmt: on
diff --git a/ui/extends/shared/settings.py b/ui/extends/shared/settings.py
index 9316fdb..8c645de 100644
--- a/ui/extends/shared/settings.py
+++ b/ui/extends/shared/settings.py
@@ -10,6 +10,7 @@ __all__ = [
"KNN_MODEL_FILE",
"B30_KNN_MODEL_FILE",
"PHASH_DATABASE_FILE",
+ "SCORE_DATE_SOURCE",
"ANDREAL_FOLDER",
"ANDREAL_EXECUTABLE",
"Settings",
@@ -23,6 +24,7 @@ DATABASE_URL = "DatabaseUrl"
KNN_MODEL_FILE = "Ocr/KnnModelFile"
B30_KNN_MODEL_FILE = "Ocr/B30KnnModelFile"
PHASH_DATABASE_FILE = "Ocr/PHashDatabaseFile"
+SCORE_DATE_SOURCE = "Ocr/DateSource"
ANDREAL_FOLDER = "Andreal/AndrealFolder"
ANDREAL_EXECUTABLE = "Andreal/AndrealExecutable"
@@ -92,6 +94,15 @@ class Settings(QSettings, metaclass=QObjectSingleton):
def resetPHashDatabaseFile(self):
self._resetStrItem(PHASH_DATABASE_FILE)
+ def scoreDateSource(self):
+ return self._strItem(SCORE_DATE_SOURCE)
+
+ def setScoreDateSource(self, value: str):
+ self._setStrItem(SCORE_DATE_SOURCE, value)
+
+ def resetScoreDateSource(self):
+ self._resetStrItem(SCORE_DATE_SOURCE)
+
def andrealFolder(self):
return self._strItem(ANDREAL_FOLDER)
diff --git a/ui/extends/tabs/tabOcr/tabOcr_Device.py b/ui/extends/tabs/tabOcr/tabOcr_Device.py
index a1ec4dc..1287fab 100644
--- a/ui/extends/tabs/tabOcr/tabOcr_Device.py
+++ b/ui/extends/tabs/tabOcr/tabOcr_Device.py
@@ -21,6 +21,7 @@ from PySide6.QtCore import QDateTime, QFileInfo
from ui.extends.components.ocrQueue import OcrRunnable
from ui.extends.shared.data import Data
+from ui.extends.shared.settings import Settings
logger = logging.getLogger(__name__)
@@ -67,8 +68,14 @@ def getImageDate(imagePath: str) -> QDateTime:
if exifImage.has_exif and exifImage.get("datetime_original"):
datetimeStr = exifImage.get("datetime_original")
datetime = QDateTime.fromString(datetimeStr, "yyyy:MM:dd hh:mm:ss")
+
if not isinstance(datetime, QDateTime):
- datetime = QFileInfo(imagePath).birthTime()
+ dateSource = Settings().scoreDateSource()
+ if dateSource == "lastModified":
+ datetime = QFileInfo(imagePath).lastModified()
+ else:
+ datetime = QFileInfo(imagePath).birthTime()
+
return datetime
diff --git a/ui/implements/components/ocrQueue.py b/ui/implements/components/ocrQueue.py
index d917afd..e14ed44 100644
--- a/ui/implements/components/ocrQueue.py
+++ b/ui/implements/components/ocrQueue.py
@@ -2,7 +2,7 @@ from typing import Optional
from PySide6.QtCore import Qt, QTimer, Slot
from PySide6.QtGui import QColor, QPalette
-from PySide6.QtWidgets import QButtonGroup, QWidget
+from PySide6.QtWidgets import QWidget
from ui.designer.components.ocrQueue_ui import Ui_OcrQueue
from ui.extends.components.ocrQueue import (
@@ -13,6 +13,7 @@ from ui.extends.components.ocrQueue import (
OcrScoreDelegate,
)
from ui.extends.shared.language import LanguageChangeEventFilter
+from ui.implements.components.ocrQueueOptionsDialog import OcrQueueOptionsDialog
class OcrQueue(Ui_OcrQueue, QWidget):
@@ -26,6 +27,9 @@ class OcrQueue(Ui_OcrQueue, QWidget):
self.__model: Optional[OcrQueueModel] = None
self.__tableProxyModel: Optional[OcrQueueTableProxyModel] = None
+ self.optionsDialog = OcrQueueOptionsDialog(self)
+ self.optionsDialog.iccOptionsChanged.connect(self.setIccOption)
+
self.__firstResizeDone = False
self.resizeTimer = QTimer(self)
self.resizeTimer.timeout.connect(self.tableView.resizeRowsToContents)
@@ -41,13 +45,6 @@ class OcrQueue(Ui_OcrQueue, QWidget):
tableViewPalette.setColor(QPalette.ColorRole.Highlight, highlightColor)
self.tableView.setPalette(tableViewPalette)
- self.iccOptionButtonGroup = QButtonGroup(self)
- self.iccOptionButtonGroup.buttonToggled.connect(self.updateIccOption)
- self.iccOptionButtonGroup.addButton(self.iccUseQtRadioButton, 0)
- self.iccOptionButtonGroup.addButton(self.iccUsePILRadioButton, 1)
- self.iccOptionButtonGroup.addButton(self.iccTryFixRadioButton, 2)
- self.updateIccOption()
-
self.statusLabelClearTimer = QTimer(self)
self.statusLabelClearTimer.setSingleShot(True)
self.statusLabelClearTimer.timeout.connect(self.clearStatusMessage)
@@ -93,9 +90,10 @@ class OcrQueue(Ui_OcrQueue, QWidget):
self.ocr_acceptAllButton.setEnabled(__bool)
self.ocr_ignoreValidateCheckBox.setEnabled(__bool)
- def updateIccOption(self):
+ @Slot(int)
+ def setIccOption(self, option):
if self.model():
- self.model().iccOption = self.iccOptionButtonGroup.checkedId()
+ self.model().iccOption = option
def showStatusMessage(self, message: str):
self.statusLabel.setText(message)
@@ -131,6 +129,10 @@ class OcrQueue(Ui_OcrQueue, QWidget):
def modelReseted(self):
self.progressBar.setMaximum(0)
+ @Slot()
+ def on_optionsDialogButton_clicked(self):
+ self.optionsDialog.exec()
+
@Slot()
def on_ocr_removeSelectedButton_clicked(self):
if self.model():
diff --git a/ui/implements/components/ocrQueueOptionsDialog.py b/ui/implements/components/ocrQueueOptionsDialog.py
new file mode 100644
index 0000000..dcb1b6a
--- /dev/null
+++ b/ui/implements/components/ocrQueueOptionsDialog.py
@@ -0,0 +1,48 @@
+from PySide6.QtCore import Signal
+from PySide6.QtWidgets import QButtonGroup, QDialog
+
+from ui.designer.components.ocrQueueOptionsDialog_ui import Ui_OcrQueueOptionsDialog
+from ui.extends.shared.settings import Settings
+
+
+class OcrQueueOptionsDialog(QDialog, Ui_OcrQueueOptionsDialog):
+ iccOptionsChanged = Signal(int)
+
+ def __init__(self, parent=None):
+ super(OcrQueueOptionsDialog, self).__init__(parent)
+ self.setupUi(self)
+
+ self.iccOptionButtonGroup = QButtonGroup(self)
+ self.iccOptionButtonGroup.buttonToggled.connect(
+ lambda: self.iccOptionsChanged.emit(self.iccOptionButtonGroup.checkedId())
+ )
+ self.iccOptionButtonGroup.addButton(self.iccUseQtRadioButton, 0)
+ self.iccOptionButtonGroup.addButton(self.iccUsePILRadioButton, 1)
+ self.iccOptionButtonGroup.addButton(self.iccTryFixRadioButton, 2)
+
+ self.scoreDateSourceButtonGroup = QButtonGroup(self)
+ self.scoreDateSourceButtonGroup.addButton(
+ self.dateUseCreationDateRadioButton, 0
+ )
+ self.scoreDateSourceButtonGroup.addButton(self.dateUseModifyDateRadioButton, 1)
+ self.scoreDateSourceButtonGroup.buttonClicked.connect(
+ self.on_scoreDateSourceButtonGroup_buttonClicked
+ )
+
+ self.settings = Settings()
+ self.settings.updated.connect(self.syncCheckboxesFromSettings)
+ self.syncCheckboxesFromSettings()
+
+ def syncCheckboxesFromSettings(self):
+ scoreDateSource = self.settings.scoreDateSource()
+ if scoreDateSource == "lastModified":
+ self.dateUseModifyDateRadioButton.setChecked(True)
+ else:
+ self.dateUseCreationDateRadioButton.setChecked(True)
+
+ def on_scoreDateSourceButtonGroup_buttonClicked(self, button):
+ buttonId = self.scoreDateSourceButtonGroup.id(button)
+ if buttonId == 1:
+ self.settings.setScoreDateSource("lastModified")
+ else:
+ self.settings.setScoreDateSource("birthTime")
diff --git a/ui/resources/lang/en_US.ts b/ui/resources/lang/en_US.ts
index 0840599..d44cdd9 100644
--- a/ui/resources/lang/en_US.ts
+++ b/ui/resources/lang/en_US.ts
@@ -70,12 +70,12 @@
Continue
-
+
dialog.tryInitExistingDatabase
The existing database doesn't seem to be initialized properly, try initialize again?
-
+
dialog.confirmNewDatabase
Database file does not exist. Create now?
@@ -224,85 +224,118 @@
- iccOptionsGroupBox
- ICC Profile Options
-
-
-
- icc.useQt
- Use Qt
-
-
-
- icc.usePIL
- Use PIL
-
-
-
- icc.tryFix
- Try fix
-
-
-
queue.addImageButton
Add Image
-
+
queue.removeSelected
Remove Selected
-
+
queue.removeAll
Remove All
-
+
+ queue.optionsButton
+ Options
+
+
+
queue.startOcrButton
Start OCR
-
+
results
Results
-
+
results.acceptSelectedButton
Accept Selected
-
+
results.acceptAllButton
Accept All
-
+
results.ignoreValidate
Ignore
validation
+
+ OcrQueueOptionsDialog
+
+
+ OCR Options
+ OCR Options
+
+
+
+ iccOptionsGroupBox
+ ICC Profile Options
+
+
+
+ icc.useQt
+ Use Qt
+
+
+
+ icc.usePIL
+ Use PIL
+
+
+
+ icc.tryFix
+ Try fix
+
+
+
+ dateOptionsGroupBox
+ Date Source
+
+
+
+ date.readFromExif
+ Read from image EXIF
+
+
+
+ date.useCreationDate
+ File creation time
+
+
+
+ date.useModifyDate
+ File last modification time
+
+
OcrTableModel
-
+
horizontalHeader.title.select
Select
-
+
horizontalHeader.title.imagePreview
Image Preview
-
+
horizontalHeader.title.chart
Chart
-
+
horizontalHeader.title.score
Score
diff --git a/ui/resources/lang/zh_CN.ts b/ui/resources/lang/zh_CN.ts
index cfc4ad9..ef9df92 100644
--- a/ui/resources/lang/zh_CN.ts
+++ b/ui/resources/lang/zh_CN.ts
@@ -70,12 +70,12 @@
继续
-
+
dialog.tryInitExistingDatabase
现有的数据库似乎没有正确初始化,是否尝试再次初始化?
-
+
dialog.confirmNewDatabase
数据库文件不存在,是否创建?
@@ -224,84 +224,117 @@
- iccOptionsGroupBox
- ICC 文件选项
-
-
-
- icc.useQt
- 使用 Qt
-
-
-
- icc.usePIL
- 使用 PIL
-
-
-
- icc.tryFix
- 尝试修复
-
-
-
queue.addImageButton
添加图像文件
-
+
queue.removeSelected
移除选中
-
+
queue.removeAll
移除所有
-
+
+ queue.optionsButton
+ 选项
+
+
+
queue.startOcrButton
开始 OCR
-
+
results
结果
-
+
results.acceptSelectedButton
提交选中
-
+
results.acceptAllButton
提交所有
-
+
results.ignoreValidate
忽略验证
+
+ OcrQueueOptionsDialog
+
+
+ OCR Options
+ OCR 选项
+
+
+
+ iccOptionsGroupBox
+ ICC 文件选项
+
+
+
+ icc.useQt
+ 使用 Qt
+
+
+
+ icc.usePIL
+ 使用 PIL
+
+
+
+ icc.tryFix
+ 尝试修复
+
+
+
+ dateOptionsGroupBox
+ 日期来源
+
+
+
+ date.readFromExif
+ 从 EXIF 读取
+
+
+
+ date.useCreationDate
+ 文件创建时间
+
+
+
+ date.useModifyDate
+ 文件最后修改时间
+
+
OcrTableModel
-
+
horizontalHeader.title.select
选择
-
+
horizontalHeader.title.imagePreview
图像预览
-
+
horizontalHeader.title.chart
谱面
-
+
horizontalHeader.title.score
分数