213 self.setLayout(QVBoxLayout())
214 self.setWindowTitle(i18n(
"Export Settings"))
215 buttons = QDialogButtonBox(QDialogButtonBox.StandardButton.Ok | QDialogButtonBox.StandardButton.Cancel)
219 mainWidget = QTabWidget()
220 self.layout().addWidget(mainWidget)
221 self.layout().addWidget(buttons)
225 mainExportSettings = QWidget()
226 mainExportSettings.setLayout(QVBoxLayout())
227 groupExportCrop = QGroupBox(i18n(
"Crop Settings"))
228 formCrop = QFormLayout()
229 groupExportCrop.setLayout(formCrop)
232 self.
chk_toOutmostGuides.setToolTip(i18n(
"This will crop to the outmost guides if possible and otherwise use the underlying crop settings."))
234 btn_fromSelection = QPushButton(i18n(
"Set Margins from Active Selection"))
237 formCrop.addRow(
"", btn_fromSelection)
254 groupExportLayers = QGroupBox(i18n(
"Layers"))
255 formLayers = QFormLayout()
256 groupExportLayers.setLayout(formLayers)
260 self.
ln_text_layer_name.setToolTip(i18n(
"These are keywords that can be used to identify text layers. A layer only needs to contain the keyword to be recognized. Keywords should be comma separated."))
262 self.
ln_panel_layer_name.setToolTip(i18n(
"These are keywords that can be used to identify panel layers. A layer only needs to contain the keyword to be recognized. Keywords should be comma separated."))
266 mainExportSettings.layout().addWidget(groupExportCrop)
267 mainExportSettings.layout().addWidget(groupExportLayers)
268 mainWidget.addTab(mainExportSettings, i18n(
"General"))
271 CBZexportSettings = QWidget()
272 CBZexportSettings.setLayout(QVBoxLayout())
274 CBZexportSettings.layout().addWidget(self.
CBZactive)
278 CBZgroupMeta = QGroupBox(i18n(
"Metadata to Add"))
280 CBZgroupMeta.setLayout(QFormLayout())
282 mainWidget.addTab(CBZexportSettings, i18n(
"CBZ"))
285 ACBFExportSettings = QWidget()
286 ACBFform = QFormLayout()
287 ACBFExportSettings.setLayout(QVBoxLayout())
288 ACBFdocInfo = QGroupBox()
289 ACBFdocInfo.setTitle(i18n(
"ACBF Document Info"))
290 ACBFdocInfo.setLayout(ACBFform)
292 self.
lnACBFID.setToolTip(i18n(
"By default this will be filled with a generated universal unique identifier. The ID by itself is merely so that comic book library management programs can figure out if this particular comic is already in their database and whether it has been rated. Of course, the UUID can be changed into something else by manually changing the JSON, but this is advanced usage."))
295 acbfHistoryList = QListView()
297 btn_add_history = QPushButton(i18n(
"Add History Entry"))
301 self.
chkIncludeTranslatorComments.setToolTip(i18n(
"A PO file can contain translator's comments. If this is checked, the translations comments will be added as references into the ACBF file."))
304 ACBFform.addRow(i18n(
"ACBF UID:"), self.
lnACBFID)
306 ACBFform.addRow(i18n(
"Version history:"), acbfHistoryList)
307 ACBFform.addRow(
"", btn_add_history)
311 ACBFAuthorInfo = QWidget()
312 acbfAVbox = QVBoxLayout(ACBFAuthorInfo)
313 infoLabel = QLabel(i18n(
"The people responsible for the generation of the CBZ/ACBF files."))
314 infoLabel.setWordWrap(
True)
315 ACBFAuthorInfo.layout().addWidget(infoLabel)
317 labels = [i18n(
"Nick Name"), i18n(
"Given Name"), i18n(
"Middle Name"), i18n(
"Family Name"), i18n(
"Email"), i18n(
"Homepage")]
326 AuthorButtons = QHBoxLayout()
327 btn_add_author = QPushButton(i18n(
"Add Author"))
329 AuthorButtons.addWidget(btn_add_author)
330 btn_remove_author = QPushButton(i18n(
"Remove Author"))
332 AuthorButtons.addWidget(btn_remove_author)
333 acbfAVbox.addLayout(AuthorButtons)
335 ACBFStyle = QWidget()
336 ACBFStyle.setLayout(QHBoxLayout())
341 ACBFStyleEdit = QWidget()
342 ACBFStyleEditVB = QVBoxLayout(ACBFStyleEdit)
358 self.
ACBFdefaultFont.addItems([
"sans-serif",
"serif",
"monospace",
"cursive",
"fantasy"])
359 acbfFontButtons = QHBoxLayout()
369 colorWidget = QGroupBox(self)
370 colorWidget.setTitle(i18n(
"Text Colors"))
371 colorWidget.setLayout(QVBoxLayout())
380 ACBFStyleEditVB.addWidget(colorWidget)
383 ACBFStyleEditVB.addLayout(acbfFontButtons)
385 ACBFStyleEditVB.addWidget(self.
ACBFBold)
386 ACBFStyleEditVB.addWidget(self.
ACBFItal)
387 ACBFStyleEditVB.addStretch()
388 ACBFStyle.layout().addWidget(ACBFStyleEdit)
390 ACBFTabwidget = QTabWidget()
391 ACBFTabwidget.addTab(ACBFdocInfo, i18n(
"Document Info"))
392 ACBFTabwidget.addTab(ACBFAuthorInfo, i18n(
"Author Info"))
393 ACBFTabwidget.addTab(ACBFStyle, i18n(
"Style Sheet"))
394 ACBFExportSettings.layout().addWidget(ACBFTabwidget)
395 mainWidget.addTab(ACBFExportSettings, i18n(
"ACBF"))
398 EPUBexportSettings = QWidget()
399 EPUBexportSettings.setLayout(QVBoxLayout())
401 EPUBexportSettings.layout().addWidget(self.
EPUBactive)
405 mainWidget.addTab(EPUBexportSettings, i18n(
"EPUB"))
408 TIFFExportSettings = QWidget()
409 TIFFExportSettings.setLayout(QVBoxLayout())
411 TIFFExportSettings.layout().addWidget(self.
TIFFactive)
415 mainWidget.addTab(TIFFExportSettings, i18n(
"TIFF"))
572 if "cropToGuides" in config.keys():
574 if "cropLeft" in config.keys():
576 if "cropTop" in config.keys():
578 if "cropRight" in config.keys():
580 if "cropBottom" in config.keys():
582 if "labelsToRemove" in config.keys():
584 if "textLayerNames" in config.keys():
588 if "panelLayerNames" in config.keys():
593 if "CBZactive" in config.keys():
594 self.
CBZactive.setChecked(config[
"CBZactive"])
596 if "EPUBactive" in config.keys():
597 self.
EPUBactive.setChecked(config[
"EPUBactive"])
599 if "TIFFactive" in config.keys():
600 self.
TIFFactive.setChecked(config[
"TIFFactive"])
602 if "acbfAuthor" in config.keys():
603 if isinstance(config[
"acbfAuthor"], list):
604 for author
in config[
"acbfAuthor"]:
606 listItems.append(QStandardItem(author.get(
"nickname",
"")))
607 listItems.append(QStandardItem(author.get(
"first-name",
"")))
608 listItems.append(QStandardItem(author.get(
"initials",
"")))
609 listItems.append(QStandardItem(author.get(
"last-name",
"")))
610 listItems.append(QStandardItem(author.get(
"email",
"")))
611 listItems.append(QStandardItem(author.get(
"homepage",
"")))
616 listItems.append(QStandardItem(config[
"acbfAuthor"]))
617 for i
in range(0, 5):
618 listItems.append(QStandardItem())
621 if "uuid" in config.keys():
622 self.
lnACBFID.setText(config[
"uuid"])
623 elif "acbfID" in config.keys():
624 self.
lnACBFID.setText(config[
"acbfID"])
626 config[
"uuid"] = QUuid.createUuid().toString()
627 self.
lnACBFID.setText(config[
"uuid"])
628 if "acbfVersion" in config.keys():
630 if "acbfHistory" in config.keys():
631 for h
in config[
"acbfHistory"]:
632 item = QStandardItem()
635 if "acbfStyles" in config.keys():
636 styleDict = config.get(
"acbfStyles", {})
638 keyDict = styleDict.get(key, {})
639 style = QStandardItem(key.title())
640 style.setCheckable(
True)
641 if key
in styleDict.keys():
642 style.setCheckState(Qt.CheckState.Checked)
644 style.setCheckState(Qt.CheckState.Unchecked)
646 if "font" in keyDict.keys()
or "genericfont" in keyDict.keys():
648 style.setData(fontOn, role=styleEnum.FONT)
649 if "font" in keyDict:
650 fontlist = keyDict[
"font"]
651 if isinstance(fontlist, list):
652 font = keyDict.get(
"font", QFont().family())
653 style.setData(font, role=styleEnum.FONTLIST)
655 style.setData([fontlist], role=styleEnum.FONTLIST)
657 style.setData([QFont().family()], role=styleEnum.FONTLIST)
658 style.setData(keyDict.get(
"genericfont",
"sans-serif"), role=styleEnum.FONTGENERIC)
659 style.setData(keyDict.get(
"bold",
False), role=styleEnum.BOLD)
660 style.setData(keyDict.get(
"ital",
False), role=styleEnum.ITALIC)
662 keyDict = styleDict.get(
"general", {})
663 self.
regularColor.setCurrentColor(QColor(keyDict.get(
"color",
"#000000")))
664 square = QPixmap(32, 32)
667 keyDict = styleDict.get(
"inverted", {})
668 self.
invertedColor.setCurrentColor(QColor(keyDict.get(
"color",
"#FFFFFF")))
673 style = QStandardItem(key.title())
674 style.setCheckable(
True)
675 style.setCheckState(Qt.CheckState.Unchecked)
676 style.setData(
False, role=styleEnum.FONT)
677 style.setData(QFont().family(), role=styleEnum.FONTLIST)
678 style.setData(
"sans-serif", role=styleEnum.FONTGENERIC)
679 style.setData(
False, role=styleEnum.BOLD)
680 style.setData(
False, role=styleEnum.ITALIC)