diff --git a/manuskript/ui/exporters/exporter.py b/manuskript/ui/exporters/exporter.py index e54b7f05..698c5821 100644 --- a/manuskript/ui/exporters/exporter.py +++ b/manuskript/ui/exporters/exporter.py @@ -24,6 +24,18 @@ class exporterDialog(QWidget, Ui_exporter): self.settingsWidget = None self.previewWidget = None + self.populateExportList() + + self.btnManageExporters.clicked.connect(self.openManager) + + self.cmbExporters.currentIndexChanged.connect(self.updateUi) + self.cmbExporters.setCurrentIndex(1) + + self.btnPreview.clicked.connect(self.preview) + self.btnExport.clicked.connect(self.export) + + def populateExportList(self): + # Populates list self.cmbExporters.clear() for E in exporter.exporters: @@ -45,14 +57,6 @@ class exporterDialog(QWidget, Ui_exporter): name = f.name if f.implemented else self.tr("{} (not implemented yet)").format(f.name) self.cmbExporters.addItem(QIcon.fromTheme(f.icon), name, E.name) - self.btnManageExporters.clicked.connect(self.openManager) - - self.cmbExporters.currentIndexChanged.connect(self.updateUi) - self.cmbExporters.setCurrentIndex(1) - - self.btnPreview.clicked.connect(self.preview) - self.btnExport.clicked.connect(self.export) - def updateUi(self, index): E, F = self.getSelectedExporter() @@ -123,6 +127,8 @@ class exporterDialog(QWidget, Ui_exporter): r2 = self.geometry() self.dialog.move(r2.center() - r.center()) + self.dialog.exportersMightHaveChanged.connect(self.populateExportList) + def setGroupWidget(self, group, widget): """Sets the given widget as main widget for QGroupBox group.""" diff --git a/manuskript/ui/exporters/exportersManager.py b/manuskript/ui/exporters/exportersManager.py index 2e9efe7f..20f3cf94 100644 --- a/manuskript/ui/exporters/exportersManager.py +++ b/manuskript/ui/exporters/exportersManager.py @@ -4,7 +4,7 @@ import os from collections import OrderedDict from PyQt5.QtCore import QSize -from PyQt5.QtCore import Qt +from PyQt5.QtCore import Qt, pyqtSignal from PyQt5.QtGui import QIcon from PyQt5.QtWidgets import QWidget, QListWidgetItem, QFileDialog @@ -12,6 +12,9 @@ from manuskript import exporter from manuskript.ui.exporters.exportersManager_ui import Ui_ExportersManager class exportersManager(QWidget, Ui_ExportersManager): + + exportersMightHaveChanged = pyqtSignal() + def __init__(self, parent=None): QWidget.__init__(self, parent) self.setupUi(self) @@ -139,4 +142,5 @@ class exportersManager(QWidget, Ui_ExportersManager): self.txtPath.setText(E.customPath) self.updateUi(E.name) + self.exportersMightHaveChanged.emit() diff --git a/manuskript/ui/exporters/manuskript/plainTextSettings.py b/manuskript/ui/exporters/manuskript/plainTextSettings.py index 45227e26..e43f1b4e 100644 --- a/manuskript/ui/exporters/manuskript/plainTextSettings.py +++ b/manuskript/ui/exporters/manuskript/plainTextSettings.py @@ -157,9 +157,15 @@ class exporterSettings(QWidget, Ui_exporterSettings): else: nLevel = len(s["FolderTitle"]) for i in range(nLevel): - self.tblContent.item(i + 2, 1).setCheckState(Qt.Checked if s["FolderTitle"][i] else Qt.Unchecked) - self.tblContent.item(i + 2 + nLevel, 1).setCheckState(Qt.Checked if s["TextTitle"][i] else Qt.Unchecked) - self.tblContent.item(i + 2 + nLevel, 2).setCheckState(Qt.Checked if s["TextText"][i] else Qt.Unchecked) + item = self.tblContent.item(i + 2, 1) + if item: + item.setCheckState(Qt.Checked if s["FolderTitle"][i] else Qt.Unchecked) + item = self.tblContent.item(i + 2 + nLevel, 1) + if item: + item.setCheckState(Qt.Checked if s["TextTitle"][i] else Qt.Unchecked) + item = self.tblContent.item(i + 2 + nLevel, 2) + if item: + item.setCheckState(Qt.Checked if s["TextText"][i] else Qt.Unchecked) self.chkContentIgnoreCompile.setChecked(s["IgnoreCompile"]) self.chkContentParent.setChecked(s["Parent"])