From 08ed304f8e4c64b7537f188c6e2014e78438976c Mon Sep 17 00:00:00 2001
From: Paweł Jastrzębski
Date: Sat, 14 Oct 2017 17:57:00 +0200
Subject: Allow metadata editor to embed directories
---
kindlecomicconverter/KCC_gui.py | 53 +++++++++++++++++++++++++---------------
kindlecomicconverter/KCC_ui.py | 1 +
kindlecomicconverter/metadata.py | 4 +--
3 files changed, 36 insertions(+), 22 deletions(-)
(limited to 'kindlecomicconverter')
diff --git a/kindlecomicconverter/KCC_gui.py b/kindlecomicconverter/KCC_gui.py
index 9191a49..a98585a 100644
--- a/kindlecomicconverter/KCC_gui.py
+++ b/kindlecomicconverter/KCC_gui.py
@@ -500,28 +500,38 @@ class KCCGUI(KCC_ui.Ui_mainWindow):
GUI.jobList.scrollToBottom()
def selectFileMetaEditor(self):
- if self.UnRAR:
- if self.sevenza:
- fname = QtWidgets.QFileDialog.getOpenFileName(MW, 'Select file', self.lastPath,
- 'Comic (*.cbz *.cbr *.cb7)')
- else:
- fname = QtWidgets.QFileDialog.getOpenFileName(MW, 'Select file', self.lastPath,
- 'Comic (*.cbz *.cbr)')
+ sname = ''
+ if QtWidgets.QApplication.keyboardModifiers() == QtCore.Qt.ShiftModifier:
+ dname = QtWidgets.QFileDialog.getExistingDirectory(MW, 'Select directory', self.lastPath)
+ if dname != '':
+ sname = os.path.join(dname, 'ComicInfo.xml')
+ if sys.platform.startswith('win'):
+ sname = sname.replace('/', '\\')
+ self.lastPath = os.path.abspath(sname)
else:
- if self.sevenza:
- fname = QtWidgets.QFileDialog.getOpenFileName(MW, 'Select file', self.lastPath,
- 'Comic (*.cbz *.cb7)')
- else:
- fname = QtWidgets.QFileDialog.getOpenFileName(MW, 'Select file', self.lastPath,
- 'Comic (*.cbz)')
- if fname[0] != '':
- if sys.platform.startswith('win'):
- fname = fname[0].replace('/', '\\')
+ if self.UnRAR:
+ if self.sevenza:
+ fname = QtWidgets.QFileDialog.getOpenFileName(MW, 'Select file', self.lastPath,
+ 'Comic (*.cbz *.cbr *.cb7)')
+ else:
+ fname = QtWidgets.QFileDialog.getOpenFileName(MW, 'Select file', self.lastPath,
+ 'Comic (*.cbz *.cbr)')
else:
- fname = fname[0]
- self.lastPath = os.path.abspath(os.path.join(fname, os.pardir))
+ if self.sevenza:
+ fname = QtWidgets.QFileDialog.getOpenFileName(MW, 'Select file', self.lastPath,
+ 'Comic (*.cbz *.cb7)')
+ else:
+ fname = QtWidgets.QFileDialog.getOpenFileName(MW, 'Select file', self.lastPath,
+ 'Comic (*.cbz)')
+ if fname[0] != '':
+ if sys.platform.startswith('win'):
+ sname = fname[0].replace('/', '\\')
+ else:
+ sname = fname[0]
+ self.lastPath = os.path.abspath(os.path.join(sname, os.pardir))
+ if sname != '':
try:
- self.editor.loadData(fname)
+ self.editor.loadData(sname)
except Exception as err:
_, _, traceback = sys.exc_info()
GUI.sentry.captureException()
@@ -1109,7 +1119,10 @@ class KCCGUI_MetaEditor(KCC_ui_editor.Ui_editorDialog):
for field in (self.writerLine, self.pencillerLine, self.inkerLine, self.coloristLine):
field.setText(', '.join(self.parser.data[field.objectName().capitalize()[:-4] + 's']))
if self.seriesLine.text() == '':
- self.seriesLine.setText(file.split('\\')[-1].split('/')[-1].split('.')[0])
+ if file.endswith('.xml'):
+ self.seriesLine.setText(file.split('\\')[-2])
+ else:
+ self.seriesLine.setText(file.split('\\')[-1].split('/')[-1].split('.')[0])
def saveData(self):
for field in (self.volumeLine, self.numberLine, self.muidLine):
diff --git a/kindlecomicconverter/KCC_ui.py b/kindlecomicconverter/KCC_ui.py
index ef8fcbf..b70f3ef 100644
--- a/kindlecomicconverter/KCC_ui.py
+++ b/kindlecomicconverter/KCC_ui.py
@@ -258,6 +258,7 @@ class Ui_mainWindow(object):
self.colorBox.setText(_translate("mainWindow", "Color mode"))
self.gammaLabel.setText(_translate("mainWindow", "Gamma: Auto"))
self.editorButton.setText(_translate("mainWindow", "Editor"))
+ self.editorButton.setToolTip(_translate("mainWindow", "
Shift+Click to edit directory.
"))
self.wikiButton.setText(_translate("mainWindow", "Wiki"))
self.directoryButton.setToolTip(_translate("mainWindow", "Add directory containing JPG, PNG or GIF files to queue.
CBR, CBZ and CB7 files inside will not be processed!
"))
self.directoryButton.setText(_translate("mainWindow", "Add directory"))
diff --git a/kindlecomicconverter/metadata.py b/kindlecomicconverter/metadata.py
index f2cf488..714dcd1 100644
--- a/kindlecomicconverter/metadata.py
+++ b/kindlecomicconverter/metadata.py
@@ -43,10 +43,10 @@ class MetadataParser:
'Bookmarks': []}
self.rawdata = None
self.compressor = None
- if self.source.endswith('.xml'):
+ if self.source.endswith('.xml') and os.path.exists(self.source):
self.rawdata = parse(self.source)
self.parseXML()
- else:
+ elif not self.source.endswith('.xml'):
if is_zipfile(self.source):
self.compressor = 'zip'
with ZipFile(self.source) as zip_file:
--
cgit 1.4.1