diff --git a/kindlecomicconverter/KCC_gui.py b/kindlecomicconverter/KCC_gui.py index 0990fcb..c8a6ecc 100644 --- a/kindlecomicconverter/KCC_gui.py +++ b/kindlecomicconverter/KCC_gui.py @@ -16,6 +16,8 @@ # OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER # TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. + +import itertools from pathlib import Path from PySide6.QtCore import (QSize, QUrl, Qt, Signal, QIODeviceBase, QEvent, QThread, QSettings) from PySide6.QtGui import (QColor, QIcon, QPixmap, QDesktopServices) @@ -490,13 +492,24 @@ class SystemTrayIcon(QSystemTrayIcon): class KCCGUI(KCC_ui.Ui_mainWindow): def selectDefaultOutputFolder(self): dname = QFileDialog.getExistingDirectory(MW, 'Select default output folder', self.defaultOutputFolder) + if self.is_directory_on_kindle(dname): + return if dname != '': if sys.platform.startswith('win'): dname = dname.replace('/', '\\') GUI.defaultOutputFolder = dname + def is_directory_on_kindle(self, dname): + path = Path(dname) + for parent in itertools.chain([path], path.parents): + if parent.name == 'documents' and parent.parent.joinpath('system').joinpath('thumbnails').is_dir(): + self.addMessage("Cannot select Kindle as output directory", 'error') + return True + def selectOutputFolder(self): dname = QFileDialog.getExistingDirectory(MW, 'Select output directory', self.lastPath) + if self.is_directory_on_kindle(dname): + return if dname != '': if sys.platform.startswith('win'): dname = dname.replace('/', '\\')