@@ -593,11 +615,14 @@
-
- <html><head/><body><p>Write Title from ComicInfo.xml or other embedded metadata.</p></body></html>
+ <html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - Don't use metadata Title<br/></span>Write default title.</p><p><span style=" font-weight:600; text-decoration: underline;">Indeterminate - Add metadata Title to the default schema<br/></span>Write default title with Title from ComicInfo.xml or other embedded metadata.</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - Use metadata Title only<br/></span>Write Title from ComicInfo.xml or other embedded metadata.</p></body></html>
Metadata Title
+
+ true
+
-
diff --git a/kindlecomicconverter/KCC_gui.py b/kindlecomicconverter/KCC_gui.py
index 717478a..a19cddb 100644
--- a/kindlecomicconverter/KCC_gui.py
+++ b/kindlecomicconverter/KCC_gui.py
@@ -321,8 +321,10 @@ class WorkerThread(QThread):
options.maximizestrips = True
if GUI.disableProcessingBox.isChecked():
options.noprocessing = True
- if GUI.metadataTitleBox.isChecked():
- options.metadatatitle = True
+ if GUI.metadataTitleBox.checkState() == Qt.CheckState.PartiallyChecked:
+ options.metadatatitle = 1
+ elif GUI.metadataTitleBox.checkState() == Qt.CheckState.Checked:
+ options.metadatatitle = 2
if GUI.deleteBox.isChecked():
options.delete = True
if GUI.spreadShiftBox.isChecked():
@@ -344,6 +346,8 @@ class WorkerThread(QThread):
options.customheight = str(GUI.heightBox.value())
if GUI.targetDirectory != '':
options.output = GUI.targetDirectory
+ if GUI.titleEdit.text():
+ options.title = str(GUI.titleEdit.text())
if GUI.authorEdit.text():
options.author = str(GUI.authorEdit.text())
if GUI.chunkSizeCheckBox.isChecked():
@@ -367,6 +371,11 @@ class WorkerThread(QThread):
except Exception as e:
print('Fusion Failed. ' + str(e))
MW.addMessage.emit('Fusion Failed. ' + str(e), 'error', True)
+ elif len(currentJobs) > 1 and options.title != 'defaulttitle':
+ currentJobs.clear()
+ error_message = 'Process Failed. Custom title can\'t be set when processing more than 1 source.\nDid you forget to check fusion?'
+ print(error_message)
+ MW.addMessage.emit(error_message, 'error', True)
for job in currentJobs:
sleep(0.5)
if not self.conversionAlive:
@@ -743,6 +752,21 @@ class KCCGUI(KCC_ui.Ui_mainWindow):
def togglechunkSizeCheckBox(self, value):
GUI.chunkSizeWidget.setVisible(value)
+ def toggletitleEdit(self, value):
+ if value:
+ self.metadataTitleBox.setChecked(False)
+
+ def togglefileFusionBox(self, value):
+ if value:
+ GUI.metadataTitleBox.setChecked(False)
+ GUI.metadataTitleBox.setEnabled(False)
+ else:
+ GUI.metadataTitleBox.setEnabled(True)
+
+ def togglemetadataTitleBox(self, value):
+ if value:
+ GUI.titleEdit.setText(None)
+
def changeGamma(self, value):
valueRaw = int(5 * round(float(value) / 5))
value = '%.2f' % (float(valueRaw) / 100)
@@ -1255,6 +1279,9 @@ class KCCGUI(KCC_ui.Ui_mainWindow):
GUI.chunkSizeCheckBox.stateChanged.connect(self.togglechunkSizeCheckBox)
GUI.deviceBox.activated.connect(self.changeDevice)
GUI.formatBox.activated.connect(self.changeFormat)
+ GUI.titleEdit.textChanged.connect(self.toggletitleEdit)
+ GUI.fileFusionBox.stateChanged.connect(self.togglefileFusionBox)
+ GUI.metadataTitleBox.stateChanged.connect(self.togglemetadataTitleBox)
MW.progressBarTick.connect(self.updateProgressbar)
MW.modeConvert.connect(self.modeConvert)
MW.addMessage.connect(self.addMessage)
diff --git a/kindlecomicconverter/KCC_ui.py b/kindlecomicconverter/KCC_ui.py
index ba94511..7db3e4f 100644
--- a/kindlecomicconverter/KCC_ui.py
+++ b/kindlecomicconverter/KCC_ui.py
@@ -3,7 +3,7 @@
################################################################################
## Form generated from reading UI file 'KCC.ui'
##
-## Created by: Qt User Interface Compiler version 6.9.1
+## Created by: Qt User Interface Compiler version 6.9.3
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
@@ -289,7 +289,16 @@ class Ui_mainWindow(object):
self.authorEdit.setFocusPolicy(Qt.FocusPolicy.ClickFocus)
self.authorEdit.setClearButtonEnabled(False)
- self.gridLayout_2.addWidget(self.authorEdit, 0, 0, 1, 1)
+ self.gridLayout_2.addWidget(self.authorEdit, 0, 1, 1, 1)
+
+ self.titleEdit = QLineEdit(self.optionWidget)
+ self.titleEdit.setObjectName(u"titleEdit")
+ sizePolicy3.setHeightForWidth(self.titleEdit.sizePolicy().hasHeightForWidth())
+ self.titleEdit.setSizePolicy(sizePolicy3)
+ self.titleEdit.setFocusPolicy(Qt.FocusPolicy.ClickFocus)
+ self.titleEdit.setClearButtonEnabled(False)
+
+ self.gridLayout_2.addWidget(self.titleEdit, 0, 0, 1, 1)
self.rotateFirstBox = QCheckBox(self.optionWidget)
self.rotateFirstBox.setObjectName(u"rotateFirstBox")
@@ -319,6 +328,7 @@ class Ui_mainWindow(object):
self.metadataTitleBox = QCheckBox(self.optionWidget)
self.metadataTitleBox.setObjectName(u"metadataTitleBox")
+ self.metadataTitleBox.setTristate(True)
self.gridLayout_2.addWidget(self.metadataTitleBox, 7, 0, 1, 1)
@@ -562,6 +572,10 @@ class Ui_mainWindow(object):
self.authorEdit.setToolTip(QCoreApplication.translate("mainWindow", u"Default Author is KCC", None))
#endif // QT_CONFIG(tooltip)
self.authorEdit.setPlaceholderText(QCoreApplication.translate("mainWindow", u"Default Author", None))
+#if QT_CONFIG(tooltip)
+ self.titleEdit.setToolTip(QCoreApplication.translate("mainWindow", u"Default Title is based on filename, directory name or metadata", None))
+#endif // QT_CONFIG(tooltip)
+ self.titleEdit.setPlaceholderText(QCoreApplication.translate("mainWindow", u"Default Title", None))
#if QT_CONFIG(tooltip)
self.rotateFirstBox.setToolTip(QCoreApplication.translate("mainWindow", u"
When the spread splitter option is partially checked,
Unchecked - Rotate Last
Put the rotated 2 page spread after the split spreads.
Checked - Rotate First
Put the rotated 2 page spread before the split spreads.
", None))
#endif // QT_CONFIG(tooltip)
@@ -583,7 +597,7 @@ class Ui_mainWindow(object):
#endif // QT_CONFIG(tooltip)
self.outputSplit.setText(QCoreApplication.translate("mainWindow", u"Output split", None))
#if QT_CONFIG(tooltip)
- self.metadataTitleBox.setToolTip(QCoreApplication.translate("mainWindow", u"Write Title from ComicInfo.xml or other embedded metadata.
", None))
+ self.metadataTitleBox.setToolTip(QCoreApplication.translate("mainWindow", u"Unchecked - Don't use metadata Title
Write default title.
Indeterminate - Add metadata Title to the default schema
Write default title with Title from ComicInfo.xml or other embedded metadata.
Checked - Use metadata Title only
Write Title from ComicInfo.xml or other embedded metadata.
", None))
#endif // QT_CONFIG(tooltip)
self.metadataTitleBox.setText(QCoreApplication.translate("mainWindow", u"Metadata Title", None))
#if QT_CONFIG(tooltip)
diff --git a/kindlecomicconverter/comic2ebook.py b/kindlecomicconverter/comic2ebook.py
index b528676..662f09e 100755
--- a/kindlecomicconverter/comic2ebook.py
+++ b/kindlecomicconverter/comic2ebook.py
@@ -958,7 +958,7 @@ def getMetadata(path, originalpath):
except Exception:
os.remove(xmlPath)
return
- if options.metadatatitle:
+ if options.metadatatitle == 2:
options.title = xml.data['Title']
elif defaultTitle:
if xml.data['Series']:
@@ -967,6 +967,8 @@ def getMetadata(path, originalpath):
titleSuffix += ' Vol. ' + xml.data['Volume'].zfill(2)
if xml.data['Number']:
titleSuffix += ' #' + xml.data['Number'].zfill(3)
+ if options.metadatatitle == 1 and xml.data['Title']:
+ titleSuffix += ': ' + xml.data['Title']
options.title += titleSuffix
if defaultAuthor:
options.authors = []
@@ -1290,8 +1292,9 @@ def makeParser():
help="Output generated file to specified directory or file")
output_options.add_argument("-t", "--title", action="store", dest="title", default="defaulttitle",
help="Comic title [Default=filename or directory name]")
- output_options.add_argument("--metadatatitle", action="store_true", dest="metadatatitle", default=False,
- help="Write Title from ComicInfo.xml or other embedded metadata")
+ output_options.add_argument("--metadatatitle", type=int, dest="metadatatitle", default=0,
+ help="Write title using ComicInfo.xml or other embedded metadata. 1: Combine Title with default schema "
+ "2: Use Title only")
output_options.add_argument("-a", "--author", action="store", dest="author", default="defaultauthor",
help="Author name [Default=KCC]")
output_options.add_argument("-f", "--format", action="store", dest="format", default="Auto",