mirror of
https://github.com/ciromattia/kcc
synced 2025-12-13 01:36:27 +00:00
Add native Apple Silicon support by upgrading qt5 to qt6 (#523)
* initial upgrade * fix epub icon * pyside6 * fix tray icon * add spaces * add comment back * change exec * edit shared * Add CheckState enums * add mozJpeg * fix batch * import CheckedState * remove references to qt5 * add mozJpeg warning * Update package-linux.yml * Update package-linux.yml * Update Dockerfile-base * Update README.md * Update package-linux.yml * Update README.md * Update README.md * add mozjpeg to gitignore * add warning text * fix state issue * use same settings save location as qt5 * remove space * remove mozJpeg * update Dockerfile-base file version * use getattr instead of eval * undo readme changes * undo conda * undo gitignore --------- Co-authored-by: Alexander Xu <alexanderx@qualtrics.com> Co-authored-by: darodi <4682830+darodi@users.noreply.github.com>
This commit is contained in:
4
.github/workflows/package-linux.yml
vendored
4
.github/workflows/package-linux.yml
vendored
@@ -34,8 +34,8 @@ jobs:
|
|||||||
- name: Install python dependencies
|
- name: Install python dependencies
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y libpng-dev libjpeg-dev p7zip-full p7zip-rar python3-pyqt5 python3-pip squashfs-tools libfuse2
|
sudo apt-get install -y libpng-dev libjpeg-dev p7zip-full p7zip-rar python3-pip squashfs-tools libfuse2
|
||||||
python -m pip install --upgrade pip setuptools wheel certifi pyinstaller PyQt6 --no-binary pyinstaller
|
python -m pip install --upgrade pip setuptools wheel certifi pyinstaller --no-binary pyinstaller
|
||||||
python -m pip install -r requirements.txt
|
python -m pip install -r requirements.txt
|
||||||
- name: build binary
|
- name: build binary
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# Select final stage based on TARGETARCH ARG
|
# Select final stage based on TARGETARCH ARG
|
||||||
FROM ghcr.io/ciromattia/kcc:docker-base-20230514
|
FROM ghcr.io/ciromattia/kcc:docker-base-20230809
|
||||||
LABEL com.kcc.name="Kindle Comic Converter"
|
LABEL com.kcc.name="Kindle Comic Converter"
|
||||||
LABEL com.kcc.author="Ciro Mattia Gonano, Paweł Jastrzębski and Darodi"
|
LABEL com.kcc.author="Ciro Mattia Gonano, Paweł Jastrzębski and Darodi"
|
||||||
LABEL org.opencontainers.image.description='Kindle Comic Converter'
|
LABEL org.opencontainers.image.description='Kindle Comic Converter'
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ RUN echo "I'm building for $TARGETOS/$TARGETARCH/$TARGETVARIANT"
|
|||||||
COPY requirements.txt /opt/kcc/
|
COPY requirements.txt /opt/kcc/
|
||||||
ENV PATH="/opt/venv/bin:$PATH"
|
ENV PATH="/opt/venv/bin:$PATH"
|
||||||
RUN DEBIAN_FRONTEND=noninteractive apt-get update -y && apt-get -yq upgrade && \
|
RUN DEBIAN_FRONTEND=noninteractive apt-get update -y && apt-get -yq upgrade && \
|
||||||
apt-get install -y libpng-dev libjpeg-dev p7zip-full unrar-free libgl1 python3-pyqt5 && \
|
apt-get install -y libpng-dev libjpeg-dev p7zip-full unrar-free libgl1 && \
|
||||||
python -m pip install --upgrade pip && \
|
python -m pip install --upgrade pip && \
|
||||||
python -m venv /opt/venv && \
|
python -m venv /opt/venv && \
|
||||||
python -m pip install -r /opt/kcc/requirements.txt
|
python -m pip install -r /opt/kcc/requirements.txt
|
||||||
@@ -55,7 +55,6 @@ RUN set -x && \
|
|||||||
KEPT_PACKAGES+=(p7zip-full) && \
|
KEPT_PACKAGES+=(p7zip-full) && \
|
||||||
KEPT_PACKAGES+=(python3) && \
|
KEPT_PACKAGES+=(python3) && \
|
||||||
KEPT_PACKAGES+=(python3-pip) && \
|
KEPT_PACKAGES+=(python3-pip) && \
|
||||||
KEPT_PACKAGES+=(python3-pyqt5) && \
|
|
||||||
KEPT_PACKAGES+=(unrar-free) && \
|
KEPT_PACKAGES+=(unrar-free) && \
|
||||||
# Install packages
|
# Install packages
|
||||||
DEBIAN_FRONTEND=noninteractive apt-get update -y && apt-get -yq upgrade && \
|
DEBIAN_FRONTEND=noninteractive apt-get update -y && apt-get -yq upgrade && \
|
||||||
@@ -112,7 +111,6 @@ RUN set -x && \
|
|||||||
KEPT_PACKAGES+=(p7zip-full) && \
|
KEPT_PACKAGES+=(p7zip-full) && \
|
||||||
KEPT_PACKAGES+=(python3) && \
|
KEPT_PACKAGES+=(python3) && \
|
||||||
KEPT_PACKAGES+=(python3-pip) && \
|
KEPT_PACKAGES+=(python3-pip) && \
|
||||||
KEPT_PACKAGES+=(python3-pyqt5) && \
|
|
||||||
KEPT_PACKAGES+=(unrar-free) && \
|
KEPT_PACKAGES+=(unrar-free) && \
|
||||||
# Install packages
|
# Install packages
|
||||||
DEBIAN_FRONTEND=noninteractive apt-get update -y && apt-get -yq upgrade && \
|
DEBIAN_FRONTEND=noninteractive apt-get update -y && apt-get -yq upgrade && \
|
||||||
@@ -158,5 +156,5 @@ WORKDIR /app
|
|||||||
RUN DEBIAN_FRONTEND=noninteractive apt-get update -y && apt-get -yq upgrade && \
|
RUN DEBIAN_FRONTEND=noninteractive apt-get update -y && apt-get -yq upgrade && \
|
||||||
apt-get install -y p7zip-full unrar-free && \
|
apt-get install -y p7zip-full unrar-free && \
|
||||||
ln -s /app/kindlegen /bin/kindlegen && \
|
ln -s /app/kindlegen /bin/kindlegen && \
|
||||||
echo docker-base-20230514 > /IMAGE_VERSION
|
echo docker-base-20230809 > /IMAGE_VERSION
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,3 @@
|
|||||||
|
pyside6-uic gui/KCC.ui > kindlecomicconverter/KCC_ui.py
|
||||||
REM install qt creator
|
pyside6-uic gui/MetaEditor.ui > kindlecomicconverter/KCC_ui_editor.py
|
||||||
REM conda create -n qtenv python=3.7
|
pyside6-rcc gui/KCC.qrc > kindlecomicconverter/KCC_rc.py
|
||||||
REM conda activate qtenv
|
|
||||||
REM pip install PyQt5
|
|
||||||
|
|
||||||
pyuic5 gui/KCC.ui > kindlecomicconverter/KCC_ui.py
|
|
||||||
|
|
||||||
pyuic5 gui/MetaEditor.ui > kindlecomicconverter/KCC_ui_editor.py
|
|
||||||
|
|
||||||
pyrcc5 gui/KCC.qrc > kindlecomicconverter/KCC_rc.py
|
|
||||||
|
|||||||
@@ -1,10 +1,5 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# PREPARE PYTHON ENV
|
pyside6-uic gui/KCC.ui --from-imports > kindlecomicconverter/KCC_ui.py
|
||||||
# conda create -n pyqt5 python=3.7
|
pyside6-uic gui/MetaEditor.ui --from-imports > kindlecomicconverter/KCC_ui_editor.py
|
||||||
# source activate pyqt5
|
pyside6-rcc gui/KCC.qrc > kindlecomicconverter/KCC_rc.py
|
||||||
# pip install pyqt5
|
|
||||||
|
|
||||||
pyuic5 gui/KCC.ui --from-imports > kindlecomicconverter/KCC_ui.py
|
|
||||||
pyuic5 gui/MetaEditor.ui --from-imports > kindlecomicconverter/KCC_ui_editor.py
|
|
||||||
pyrcc5 gui/KCC.qrc > kindlecomicconverter/KCC_rc.py
|
|
||||||
|
|||||||
@@ -27,14 +27,16 @@ from subprocess import STDOUT, PIPE
|
|||||||
|
|
||||||
import requests
|
import requests
|
||||||
# noinspection PyUnresolvedReferences
|
# noinspection PyUnresolvedReferences
|
||||||
from PyQt5 import QtGui, QtCore, QtWidgets, QtNetwork
|
from PySide6 import QtGui, QtCore, QtWidgets, QtNetwork
|
||||||
|
from PySide6.QtCore import Qt
|
||||||
from xml.sax.saxutils import escape
|
from xml.sax.saxutils import escape
|
||||||
from psutil import Process
|
from psutil import Process
|
||||||
from copy import copy
|
from copy import copy
|
||||||
from distutils.version import StrictVersion
|
from distutils.version import StrictVersion
|
||||||
from raven import Client
|
from raven import Client
|
||||||
from tempfile import gettempdir
|
from tempfile import gettempdir
|
||||||
from .shared import md5Checksum, HTMLStripper, sanitizeTrace, walkLevel, subprocess_run_silent
|
|
||||||
|
from .shared import HTMLStripper, sanitizeTrace, walkLevel, subprocess_run_silent
|
||||||
from . import __version__
|
from . import __version__
|
||||||
from . import comic2ebook
|
from . import comic2ebook
|
||||||
from . import metadata
|
from . import metadata
|
||||||
@@ -44,7 +46,7 @@ from . import KCC_ui_editor
|
|||||||
|
|
||||||
|
|
||||||
class QApplicationMessaging(QtWidgets.QApplication):
|
class QApplicationMessaging(QtWidgets.QApplication):
|
||||||
messageFromOtherInstance = QtCore.pyqtSignal(bytes)
|
messageFromOtherInstance = QtCore.Signal(bytes)
|
||||||
|
|
||||||
def __init__(self, argv):
|
def __init__(self, argv):
|
||||||
QtWidgets.QApplication.__init__(self, argv)
|
QtWidgets.QApplication.__init__(self, argv)
|
||||||
@@ -52,7 +54,7 @@ class QApplicationMessaging(QtWidgets.QApplication):
|
|||||||
self._timeout = 1000
|
self._timeout = 1000
|
||||||
self._locked = False
|
self._locked = False
|
||||||
socket = QtNetwork.QLocalSocket(self)
|
socket = QtNetwork.QLocalSocket(self)
|
||||||
socket.connectToServer(self._key, QtCore.QIODevice.WriteOnly)
|
socket.connectToServer(self._key, QtCore.QIODeviceBase.OpenModeFlag.WriteOnly)
|
||||||
if not socket.waitForConnected(self._timeout):
|
if not socket.waitForConnected(self._timeout):
|
||||||
self._server = QtNetwork.QLocalServer(self)
|
self._server = QtNetwork.QLocalServer(self)
|
||||||
self._server.newConnection.connect(self.handleMessage)
|
self._server.newConnection.connect(self.handleMessage)
|
||||||
@@ -66,7 +68,7 @@ class QApplicationMessaging(QtWidgets.QApplication):
|
|||||||
self._server.close()
|
self._server.close()
|
||||||
|
|
||||||
def event(self, e):
|
def event(self, e):
|
||||||
if e.type() == QtCore.QEvent.FileOpen:
|
if e.type() == QtCore.QEvent.Type.FileOpen:
|
||||||
self.messageFromOtherInstance.emit(bytes(e.file(), 'UTF-8'))
|
self.messageFromOtherInstance.emit(bytes(e.file(), 'UTF-8'))
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
@@ -82,7 +84,7 @@ class QApplicationMessaging(QtWidgets.QApplication):
|
|||||||
|
|
||||||
def sendMessage(self, message):
|
def sendMessage(self, message):
|
||||||
socket = QtNetwork.QLocalSocket(self)
|
socket = QtNetwork.QLocalSocket(self)
|
||||||
socket.connectToServer(self._key, QtCore.QIODevice.WriteOnly)
|
socket.connectToServer(self._key, QtCore.QIODeviceBase.OpenModeFlag.WriteOnly)
|
||||||
socket.waitForConnected(self._timeout)
|
socket.waitForConnected(self._timeout)
|
||||||
socket.write(bytes(message, 'UTF-8'))
|
socket.write(bytes(message, 'UTF-8'))
|
||||||
socket.waitForBytesWritten(self._timeout)
|
socket.waitForBytesWritten(self._timeout)
|
||||||
@@ -90,40 +92,40 @@ class QApplicationMessaging(QtWidgets.QApplication):
|
|||||||
|
|
||||||
|
|
||||||
class QMainWindowKCC(QtWidgets.QMainWindow):
|
class QMainWindowKCC(QtWidgets.QMainWindow):
|
||||||
progressBarTick = QtCore.pyqtSignal(str)
|
progressBarTick = QtCore.Signal(str)
|
||||||
modeConvert = QtCore.pyqtSignal(int)
|
modeConvert = QtCore.Signal(int)
|
||||||
addMessage = QtCore.pyqtSignal(str, str, bool)
|
addMessage = QtCore.Signal(str, str, bool)
|
||||||
addTrayMessage = QtCore.pyqtSignal(str, str)
|
addTrayMessage = QtCore.Signal(str, str)
|
||||||
showDialog = QtCore.pyqtSignal(str, str)
|
showDialog = QtCore.Signal(str, str)
|
||||||
hideProgressBar = QtCore.pyqtSignal()
|
hideProgressBar = QtCore.Signal()
|
||||||
forceShutdown = QtCore.pyqtSignal()
|
forceShutdown = QtCore.Signal()
|
||||||
|
|
||||||
|
|
||||||
class Icons:
|
class Icons:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.deviceKindle = QtGui.QIcon()
|
self.deviceKindle = QtGui.QIcon()
|
||||||
self.deviceKindle.addPixmap(QtGui.QPixmap(":/Devices/icons/Kindle.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
self.deviceKindle.addPixmap(QtGui.QPixmap(":/Devices/icons/Kindle.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
|
||||||
self.deviceKobo = QtGui.QIcon()
|
self.deviceKobo = QtGui.QIcon()
|
||||||
self.deviceKobo.addPixmap(QtGui.QPixmap(":/Devices/icons/Kobo.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
self.deviceKobo.addPixmap(QtGui.QPixmap(":/Devices/icons/Kobo.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
|
||||||
self.deviceOther = QtGui.QIcon()
|
self.deviceOther = QtGui.QIcon()
|
||||||
self.deviceOther.addPixmap(QtGui.QPixmap(":/Devices/icons/Other.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
self.deviceOther.addPixmap(QtGui.QPixmap(":/Devices/icons/Other.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
|
||||||
|
|
||||||
self.MOBIFormat = QtGui.QIcon()
|
self.MOBIFormat = QtGui.QIcon()
|
||||||
self.MOBIFormat.addPixmap(QtGui.QPixmap(":/Formats/icons/MOBI.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
self.MOBIFormat.addPixmap(QtGui.QPixmap(":/Formats/icons/MOBI.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
|
||||||
self.CBZFormat = QtGui.QIcon()
|
self.CBZFormat = QtGui.QIcon()
|
||||||
self.CBZFormat.addPixmap(QtGui.QPixmap(":/Formats/icons/CBZ.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
self.CBZFormat.addPixmap(QtGui.QPixmap(":/Formats/icons/CBZ.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
|
||||||
self.EPUBFormat = QtGui.QIcon()
|
self.EPUBFormat = QtGui.QIcon()
|
||||||
self.EPUBFormat.addPixmap(QtGui.QPixmap(":/Formats/icons/EPUB.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
self.EPUBFormat.addPixmap(QtGui.QPixmap(":/Formats/icons/EPUB.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
|
||||||
|
|
||||||
self.info = QtGui.QIcon()
|
self.info = QtGui.QIcon()
|
||||||
self.info.addPixmap(QtGui.QPixmap(":/Status/icons/info.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
self.info.addPixmap(QtGui.QPixmap(":/Status/icons/info.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
|
||||||
self.warning = QtGui.QIcon()
|
self.warning = QtGui.QIcon()
|
||||||
self.warning.addPixmap(QtGui.QPixmap(":/Status/icons/warning.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
self.warning.addPixmap(QtGui.QPixmap(":/Status/icons/warning.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
|
||||||
self.error = QtGui.QIcon()
|
self.error = QtGui.QIcon()
|
||||||
self.error.addPixmap(QtGui.QPixmap(":/Status/icons/error.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
self.error.addPixmap(QtGui.QPixmap(":/Status/icons/error.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
|
||||||
|
|
||||||
self.programIcon = QtGui.QIcon()
|
self.programIcon = QtGui.QIcon()
|
||||||
self.programIcon.addPixmap(QtGui.QPixmap(":/Icon/icons/comic2ebook.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
self.programIcon.addPixmap(QtGui.QPixmap(":/Icon/icons/comic2ebook.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
|
||||||
|
|
||||||
|
|
||||||
class VersionThread(QtCore.QThread):
|
class VersionThread(QtCore.QThread):
|
||||||
@@ -220,28 +222,28 @@ class WorkerThread(QtCore.QThread):
|
|||||||
options.format = gui_current_format
|
options.format = gui_current_format
|
||||||
if GUI.mangaBox.isChecked():
|
if GUI.mangaBox.isChecked():
|
||||||
options.righttoleft = True
|
options.righttoleft = True
|
||||||
if GUI.rotateBox.checkState() == 1:
|
if GUI.rotateBox.checkState() == Qt.CheckState.PartiallyChecked:
|
||||||
options.splitter = 2
|
options.splitter = 2
|
||||||
elif GUI.rotateBox.checkState() == 2:
|
elif GUI.rotateBox.checkState() == Qt.CheckState.Checked:
|
||||||
options.splitter = 1
|
options.splitter = 1
|
||||||
if GUI.qualityBox.checkState() == 1:
|
if GUI.qualityBox.checkState() == Qt.CheckState.PartiallyChecked:
|
||||||
options.autoscale = True
|
options.autoscale = True
|
||||||
elif GUI.qualityBox.checkState() == 2:
|
elif GUI.qualityBox.checkState() == Qt.CheckState.Checked:
|
||||||
options.hq = True
|
options.hq = True
|
||||||
if GUI.webtoonBox.isChecked():
|
if GUI.webtoonBox.isChecked():
|
||||||
options.webtoon = True
|
options.webtoon = True
|
||||||
if GUI.upscaleBox.checkState() == 1:
|
if GUI.upscaleBox.checkState() == Qt.CheckState.PartiallyChecked:
|
||||||
options.stretch = True
|
options.stretch = True
|
||||||
elif GUI.upscaleBox.checkState() == 2:
|
elif GUI.upscaleBox.checkState() == Qt.CheckState.Checked:
|
||||||
options.upscale = True
|
options.upscale = True
|
||||||
if GUI.gammaBox.isChecked() and float(GUI.gammaValue) > 0.09:
|
if GUI.gammaBox.isChecked() and float(GUI.gammaValue) > 0.09:
|
||||||
options.gamma = float(GUI.gammaValue)
|
options.gamma = float(GUI.gammaValue)
|
||||||
options.cropping = GUI.croppingBox.checkState()
|
options.cropping = GUI.croppingBox.checkState().value
|
||||||
if GUI.croppingBox.checkState() >= 1:
|
if GUI.croppingBox.checkState() != Qt.CheckState.Unchecked:
|
||||||
options.croppingp = float(GUI.croppingPowerValue)
|
options.croppingp = float(GUI.croppingPowerValue)
|
||||||
if GUI.borderBox.checkState() == 1:
|
if GUI.borderBox.checkState() == Qt.CheckState.PartiallyChecked:
|
||||||
options.white_borders = True
|
options.white_borders = True
|
||||||
elif GUI.borderBox.checkState() == 2:
|
elif GUI.borderBox.checkState() == Qt.CheckState.Checked:
|
||||||
options.black_borders = True
|
options.black_borders = True
|
||||||
if GUI.outputSplit.isChecked():
|
if GUI.outputSplit.isChecked():
|
||||||
options.batchsplit = 2
|
options.batchsplit = 2
|
||||||
@@ -253,9 +255,9 @@ class WorkerThread(QtCore.QThread):
|
|||||||
options.noprocessing = True
|
options.noprocessing = True
|
||||||
if GUI.deleteBox.isChecked():
|
if GUI.deleteBox.isChecked():
|
||||||
options.delete = True
|
options.delete = True
|
||||||
if GUI.mozJpegBox.checkState() == 1:
|
if GUI.mozJpegBox.checkState() == Qt.CheckState.PartiallyChecked:
|
||||||
options.forcepng = True
|
options.forcepng = True
|
||||||
elif GUI.mozJpegBox.checkState() == 2:
|
elif GUI.mozJpegBox.checkState() == Qt.CheckState.Checked:
|
||||||
options.mozjpeg = True
|
options.mozjpeg = True
|
||||||
if GUI.currentMode > 2:
|
if GUI.currentMode > 2:
|
||||||
options.customwidth = str(GUI.widthBox.value())
|
options.customwidth = str(GUI.widthBox.value())
|
||||||
@@ -430,7 +432,7 @@ class SystemTrayIcon(QtWidgets.QSystemTrayIcon):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
if self.isSystemTrayAvailable():
|
if self.isSystemTrayAvailable():
|
||||||
QtWidgets.QSystemTrayIcon.__init__(self, GUI.icons.programIcon, MW)
|
self.setIcon(GUI.icons.programIcon)
|
||||||
self.activated.connect(self.catchClicks)
|
self.activated.connect(self.catchClicks)
|
||||||
|
|
||||||
def catchClicks(self):
|
def catchClicks(self):
|
||||||
@@ -439,7 +441,7 @@ class SystemTrayIcon(QtWidgets.QSystemTrayIcon):
|
|||||||
MW.activateWindow()
|
MW.activateWindow()
|
||||||
|
|
||||||
def addTrayMessage(self, message, icon):
|
def addTrayMessage(self, message, icon):
|
||||||
icon = eval('QtWidgets.QSystemTrayIcon.' + icon)
|
icon = getattr(QtWidgets.QSystemTrayIcon.MessageIcon, icon)
|
||||||
if self.supportsMessages() and not MW.isActiveWindow():
|
if self.supportsMessages() and not MW.isActiveWindow():
|
||||||
self.showMessage('Kindle Comic Converter', message, icon)
|
self.showMessage('Kindle Comic Converter', message, icon)
|
||||||
|
|
||||||
@@ -549,7 +551,7 @@ class KCCGUI(KCC_ui.Ui_mainWindow):
|
|||||||
self.conversionAlive = False
|
self.conversionAlive = False
|
||||||
self.worker.sync()
|
self.worker.sync()
|
||||||
icon = QtGui.QIcon()
|
icon = QtGui.QIcon()
|
||||||
icon.addPixmap(QtGui.QPixmap(":/Other/icons/convert.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
icon.addPixmap(QtGui.QPixmap(":/Other/icons/convert.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
|
||||||
GUI.convertButton.setIcon(icon)
|
GUI.convertButton.setIcon(icon)
|
||||||
GUI.convertButton.setText('Convert')
|
GUI.convertButton.setText('Convert')
|
||||||
GUI.centralWidget.setAcceptDrops(True)
|
GUI.centralWidget.setAcceptDrops(True)
|
||||||
@@ -557,7 +559,7 @@ class KCCGUI(KCC_ui.Ui_mainWindow):
|
|||||||
self.conversionAlive = True
|
self.conversionAlive = True
|
||||||
self.worker.sync()
|
self.worker.sync()
|
||||||
icon = QtGui.QIcon()
|
icon = QtGui.QIcon()
|
||||||
icon.addPixmap(QtGui.QPixmap(":/Other/icons/clear.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
icon.addPixmap(QtGui.QPixmap(":/Other/icons/clear.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
|
||||||
GUI.convertButton.setIcon(icon)
|
GUI.convertButton.setIcon(icon)
|
||||||
GUI.convertButton.setText('Abort')
|
GUI.convertButton.setText('Abort')
|
||||||
GUI.centralWidget.setAcceptDrops(False)
|
GUI.centralWidget.setAcceptDrops(False)
|
||||||
@@ -671,7 +673,7 @@ class KCCGUI(KCC_ui.Ui_mainWindow):
|
|||||||
|
|
||||||
def addMessage(self, message, icon, replace=False):
|
def addMessage(self, message, icon, replace=False):
|
||||||
if icon != '':
|
if icon != '':
|
||||||
icon = eval('self.icons.' + icon)
|
icon = getattr(self.icons, icon)
|
||||||
item = QtWidgets.QListWidgetItem(icon, ' ' + self.stripTags(message))
|
item = QtWidgets.QListWidgetItem(icon, ' ' + self.stripTags(message))
|
||||||
else:
|
else:
|
||||||
item = QtWidgets.QListWidgetItem(' ' + self.stripTags(message))
|
item = QtWidgets.QListWidgetItem(' ' + self.stripTags(message))
|
||||||
@@ -689,7 +691,7 @@ class KCCGUI(KCC_ui.Ui_mainWindow):
|
|||||||
|
|
||||||
def showDialog(self, message, kind):
|
def showDialog(self, message, kind):
|
||||||
if kind == 'error':
|
if kind == 'error':
|
||||||
QtWidgets.QMessageBox.critical(MW, 'KCC - Error', message, QtWidgets.QMessageBox.Ok)
|
QtWidgets.QMessageBox.critical(MW, 'KCC - Error', message, QtWidgets.QMessageBox.StandardButton.Ok)
|
||||||
elif kind == 'question':
|
elif kind == 'question':
|
||||||
GUI.versionCheck.setAnswer(QtWidgets.QMessageBox.question(MW, 'KCC - Question', message,
|
GUI.versionCheck.setAnswer(QtWidgets.QMessageBox.question(MW, 'KCC - Question', message,
|
||||||
QtWidgets.QMessageBox.Yes,
|
QtWidgets.QMessageBox.Yes,
|
||||||
@@ -717,7 +719,7 @@ class KCCGUI(KCC_ui.Ui_mainWindow):
|
|||||||
self.conversionAlive = False
|
self.conversionAlive = False
|
||||||
self.worker.sync()
|
self.worker.sync()
|
||||||
else:
|
else:
|
||||||
if QtWidgets.QApplication.keyboardModifiers() == QtCore.Qt.ShiftModifier:
|
if QtWidgets.QApplication.keyboardModifiers() == QtCore.Qt.KeyboardModifier.ShiftModifier:
|
||||||
dname = QtWidgets.QFileDialog.getExistingDirectory(MW, 'Select output directory', self.lastPath)
|
dname = QtWidgets.QFileDialog.getExistingDirectory(MW, 'Select output directory', self.lastPath)
|
||||||
if dname != '':
|
if dname != '':
|
||||||
if sys.platform.startswith('win'):
|
if sys.platform.startswith('win'):
|
||||||
@@ -770,23 +772,23 @@ class KCCGUI(KCC_ui.Ui_mainWindow):
|
|||||||
self.settings.setValue('currentFormat', GUI.formatBox.currentIndex())
|
self.settings.setValue('currentFormat', GUI.formatBox.currentIndex())
|
||||||
self.settings.setValue('startNumber', self.startNumber + 1)
|
self.settings.setValue('startNumber', self.startNumber + 1)
|
||||||
self.settings.setValue('windowSize', str(MW.size().width()) + 'x' + str(MW.size().height()))
|
self.settings.setValue('windowSize', str(MW.size().width()) + 'x' + str(MW.size().height()))
|
||||||
self.settings.setValue('options', {'mangaBox': GUI.mangaBox.checkState(),
|
self.settings.setValue('options', {'mangaBox': GUI.mangaBox.checkState().value,
|
||||||
'rotateBox': GUI.rotateBox.checkState(),
|
'rotateBox': GUI.rotateBox.checkState().value,
|
||||||
'qualityBox': GUI.qualityBox.checkState(),
|
'qualityBox': GUI.qualityBox.checkState().value,
|
||||||
'gammaBox': GUI.gammaBox.checkState(),
|
'gammaBox': GUI.gammaBox.checkState().value,
|
||||||
'croppingBox': GUI.croppingBox.checkState(),
|
'croppingBox': GUI.croppingBox.checkState().value,
|
||||||
'croppingPowerSlider': float(self.croppingPowerValue) * 100,
|
'croppingPowerSlider': float(self.croppingPowerValue) * 100,
|
||||||
'upscaleBox': GUI.upscaleBox.checkState(),
|
'upscaleBox': GUI.upscaleBox.checkState().value,
|
||||||
'borderBox': GUI.borderBox.checkState(),
|
'borderBox': GUI.borderBox.checkState().value,
|
||||||
'webtoonBox': GUI.webtoonBox.checkState(),
|
'webtoonBox': GUI.webtoonBox.checkState().value,
|
||||||
'outputSplit': GUI.outputSplit.checkState(),
|
'outputSplit': GUI.outputSplit.checkState().value,
|
||||||
'colorBox': GUI.colorBox.checkState(),
|
'colorBox': GUI.colorBox.checkState().value,
|
||||||
'disableProcessingBox': GUI.disableProcessingBox.checkState(),
|
'disableProcessingBox': GUI.disableProcessingBox.checkState().value,
|
||||||
'mozJpegBox': GUI.mozJpegBox.checkState(),
|
'mozJpegBox': GUI.mozJpegBox.checkState().value,
|
||||||
'widthBox': GUI.widthBox.value(),
|
'widthBox': GUI.widthBox.value(),
|
||||||
'heightBox': GUI.heightBox.value(),
|
'heightBox': GUI.heightBox.value(),
|
||||||
'deleteBox': GUI.deleteBox.checkState(),
|
'deleteBox': GUI.deleteBox.checkState().value,
|
||||||
'maximizeStrips': GUI.maximizeStrips.checkState(),
|
'maximizeStrips': GUI.maximizeStrips.checkState().value,
|
||||||
'gammaSlider': float(self.gammaValue) * 100})
|
'gammaSlider': float(self.gammaValue) * 100})
|
||||||
self.settings.sync()
|
self.settings.sync()
|
||||||
self.tray.hide()
|
self.tray.hide()
|
||||||
@@ -894,10 +896,10 @@ class KCCGUI(KCC_ui.Ui_mainWindow):
|
|||||||
elif sys.platform.startswith('darwin'):
|
elif sys.platform.startswith('darwin'):
|
||||||
for element in ['editorButton', 'wikiButton', 'directoryButton', 'clearButton', 'fileButton', 'deviceBox',
|
for element in ['editorButton', 'wikiButton', 'directoryButton', 'clearButton', 'fileButton', 'deviceBox',
|
||||||
'convertButton', 'formatBox']:
|
'convertButton', 'formatBox']:
|
||||||
eval('GUI.' + element).setMinimumSize(QtCore.QSize(0, 0))
|
getattr(GUI, element).setMinimumSize(QtCore.QSize(0, 0))
|
||||||
GUI.gridLayout.setContentsMargins(-1, -1, -1, -1)
|
GUI.gridLayout.setContentsMargins(-1, -1, -1, -1)
|
||||||
for element in ['gridLayout_2', 'gridLayout_3', 'gridLayout_4', 'horizontalLayout', 'horizontalLayout_2']:
|
for element in ['gridLayout_2', 'gridLayout_3', 'gridLayout_4', 'horizontalLayout', 'horizontalLayout_2']:
|
||||||
eval('GUI.' + element).setContentsMargins(-1, 0, -1, 0)
|
getattr(GUI, element).setContentsMargins(-1, 0, -1, 0)
|
||||||
if self.windowSize == '0x0':
|
if self.windowSize == '0x0':
|
||||||
MW.resize(500, 500)
|
MW.resize(500, 500)
|
||||||
|
|
||||||
@@ -1017,7 +1019,7 @@ class KCCGUI(KCC_ui.Ui_mainWindow):
|
|||||||
'com/ciromattia/kcc/blob/master/README.md#issues--new-features--donations">DO'
|
'com/ciromattia/kcc/blob/master/README.md#issues--new-features--donations">DO'
|
||||||
'NATE</a> - <a href="http://www.mobileread.com/forums/showthread.php?t=207461'
|
'NATE</a> - <a href="http://www.mobileread.com/forums/showthread.php?t=207461'
|
||||||
'">FORUM</a></b>')
|
'">FORUM</a></b>')
|
||||||
statusBarLabel.setAlignment(QtCore.Qt.AlignCenter)
|
statusBarLabel.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
|
||||||
statusBarLabel.setOpenExternalLinks(True)
|
statusBarLabel.setOpenExternalLinks(True)
|
||||||
GUI.statusBar.addPermanentWidget(statusBarLabel, 1)
|
GUI.statusBar.addPermanentWidget(statusBarLabel, 1)
|
||||||
|
|
||||||
@@ -1075,7 +1077,7 @@ class KCCGUI(KCC_ui.Ui_mainWindow):
|
|||||||
else:
|
else:
|
||||||
GUI.deviceBox.addItem(self.icons.deviceKindle, profile)
|
GUI.deviceBox.addItem(self.icons.deviceKindle, profile)
|
||||||
for f in self.formats:
|
for f in self.formats:
|
||||||
GUI.formatBox.addItem(eval('self.icons.' + self.formats[f]['icon'] + 'Format'), f)
|
GUI.formatBox.addItem(getattr(self.icons, self.formats[f]['icon'] + 'Format'), f)
|
||||||
if self.lastDevice > GUI.deviceBox.count():
|
if self.lastDevice > GUI.deviceBox.count():
|
||||||
self.lastDevice = 0
|
self.lastDevice = 0
|
||||||
if profilesGUI[self.lastDevice] == "Separator":
|
if profilesGUI[self.lastDevice] == "Separator":
|
||||||
@@ -1101,8 +1103,8 @@ class KCCGUI(KCC_ui.Ui_mainWindow):
|
|||||||
self.changeCroppingPower(int(self.options[option]))
|
self.changeCroppingPower(int(self.options[option]))
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
if eval('GUI.' + str(option)).isEnabled():
|
if getattr(GUI, option).isEnabled():
|
||||||
eval('GUI.' + str(option)).setCheckState(self.options[option])
|
getattr(GUI, option).setCheckState(Qt.CheckState(self.options[option]))
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
pass
|
pass
|
||||||
self.worker.sync()
|
self.worker.sync()
|
||||||
@@ -1176,7 +1178,7 @@ class KCCGUI_MetaEditor(KCC_ui_editor.Ui_editorDialog):
|
|||||||
self.ui = QtWidgets.QDialog()
|
self.ui = QtWidgets.QDialog()
|
||||||
self.parser = None
|
self.parser = None
|
||||||
self.setupUi(self.ui)
|
self.setupUi(self.ui)
|
||||||
self.ui.setWindowFlags(self.ui.windowFlags() & ~QtCore.Qt.WindowContextHelpButtonHint)
|
self.ui.setWindowFlags(self.ui.windowFlags() & ~QtCore.Qt.WindowType.WindowContextHelpButtonHint)
|
||||||
self.okButton.clicked.connect(self.saveData)
|
self.okButton.clicked.connect(self.saveData)
|
||||||
self.cancelButton.clicked.connect(self.ui.close)
|
self.cancelButton.clicked.connect(self.ui.close)
|
||||||
if sys.platform.startswith('linux'):
|
if sys.platform.startswith('linux'):
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,321 +1,454 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
# Form implementation generated from reading ui file 'gui/KCC.ui'
|
################################################################################
|
||||||
#
|
## Form generated from reading UI file 'KCC.ui'
|
||||||
# Created by: PyQt5 UI code generator 5.15.7
|
##
|
||||||
#
|
## Created by: Qt User Interface Compiler version 6.5.1
|
||||||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
|
##
|
||||||
# run again. Do not edit this file unless you know what you are doing.
|
## WARNING! All changes made in this file will be lost when recompiling UI file!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
|
||||||
|
|
||||||
|
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
|
||||||
|
QMetaObject, QObject, QPoint, QRect,
|
||||||
|
QSize, QTime, QUrl, Qt)
|
||||||
|
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
|
||||||
|
QFont, QFontDatabase, QGradient, QIcon,
|
||||||
|
QImage, QKeySequence, QLinearGradient, QPainter,
|
||||||
|
QPalette, QPixmap, QRadialGradient, QTransform)
|
||||||
|
from PySide6.QtWidgets import (QAbstractItemView, QApplication, QCheckBox, QComboBox,
|
||||||
|
QGridLayout, QHBoxLayout, QLabel, QListWidget,
|
||||||
|
QListWidgetItem, QMainWindow, QProgressBar, QPushButton,
|
||||||
|
QSizePolicy, QSlider, QSpinBox, QStatusBar,
|
||||||
|
QWidget)
|
||||||
|
from . import KCC_rc
|
||||||
|
|
||||||
class Ui_mainWindow(object):
|
class Ui_mainWindow(object):
|
||||||
def setupUi(self, mainWindow):
|
def setupUi(self, mainWindow):
|
||||||
mainWindow.setObjectName("mainWindow")
|
if not mainWindow.objectName():
|
||||||
|
mainWindow.setObjectName(u"mainWindow")
|
||||||
mainWindow.resize(450, 400)
|
mainWindow.resize(450, 400)
|
||||||
icon = QtGui.QIcon()
|
icon = QIcon()
|
||||||
icon.addPixmap(QtGui.QPixmap(":/Icon/icons/comic2ebook.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
icon.addFile(u":/Icon/icons/comic2ebook.png", QSize(), QIcon.Normal, QIcon.Off)
|
||||||
mainWindow.setWindowIcon(icon)
|
mainWindow.setWindowIcon(icon)
|
||||||
self.centralWidget = QtWidgets.QWidget(mainWindow)
|
self.centralWidget = QWidget(mainWindow)
|
||||||
self.centralWidget.setObjectName("centralWidget")
|
self.centralWidget.setObjectName(u"centralWidget")
|
||||||
self.gridLayout = QtWidgets.QGridLayout(self.centralWidget)
|
self.gridLayout = QGridLayout(self.centralWidget)
|
||||||
|
self.gridLayout.setObjectName(u"gridLayout")
|
||||||
self.gridLayout.setContentsMargins(-1, -1, -1, 5)
|
self.gridLayout.setContentsMargins(-1, -1, -1, 5)
|
||||||
self.gridLayout.setObjectName("gridLayout")
|
self.optionWidget = QWidget(self.centralWidget)
|
||||||
self.optionWidget = QtWidgets.QWidget(self.centralWidget)
|
self.optionWidget.setObjectName(u"optionWidget")
|
||||||
self.optionWidget.setObjectName("optionWidget")
|
self.gridLayout_2 = QGridLayout(self.optionWidget)
|
||||||
self.gridLayout_2 = QtWidgets.QGridLayout(self.optionWidget)
|
self.gridLayout_2.setObjectName(u"gridLayout_2")
|
||||||
self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
|
self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
|
||||||
self.gridLayout_2.setObjectName("gridLayout_2")
|
self.upscaleBox = QCheckBox(self.optionWidget)
|
||||||
self.upscaleBox = QtWidgets.QCheckBox(self.optionWidget)
|
self.upscaleBox.setObjectName(u"upscaleBox")
|
||||||
self.upscaleBox.setTristate(True)
|
self.upscaleBox.setTristate(True)
|
||||||
self.upscaleBox.setObjectName("upscaleBox")
|
|
||||||
self.gridLayout_2.addWidget(self.upscaleBox, 1, 1, 1, 1)
|
self.gridLayout_2.addWidget(self.upscaleBox, 1, 1, 1, 1)
|
||||||
self.rotateBox = QtWidgets.QCheckBox(self.optionWidget)
|
|
||||||
|
self.rotateBox = QCheckBox(self.optionWidget)
|
||||||
|
self.rotateBox.setObjectName(u"rotateBox")
|
||||||
self.rotateBox.setTristate(True)
|
self.rotateBox.setTristate(True)
|
||||||
self.rotateBox.setObjectName("rotateBox")
|
|
||||||
self.gridLayout_2.addWidget(self.rotateBox, 0, 1, 1, 1)
|
self.gridLayout_2.addWidget(self.rotateBox, 0, 1, 1, 1)
|
||||||
self.outputSplit = QtWidgets.QCheckBox(self.optionWidget)
|
|
||||||
self.outputSplit.setObjectName("outputSplit")
|
self.outputSplit = QCheckBox(self.optionWidget)
|
||||||
|
self.outputSplit.setObjectName(u"outputSplit")
|
||||||
|
|
||||||
self.gridLayout_2.addWidget(self.outputSplit, 2, 1, 1, 1)
|
self.gridLayout_2.addWidget(self.outputSplit, 2, 1, 1, 1)
|
||||||
self.webtoonBox = QtWidgets.QCheckBox(self.optionWidget)
|
|
||||||
self.webtoonBox.setObjectName("webtoonBox")
|
self.webtoonBox = QCheckBox(self.optionWidget)
|
||||||
|
self.webtoonBox.setObjectName(u"webtoonBox")
|
||||||
|
|
||||||
self.gridLayout_2.addWidget(self.webtoonBox, 1, 0, 1, 1)
|
self.gridLayout_2.addWidget(self.webtoonBox, 1, 0, 1, 1)
|
||||||
self.colorBox = QtWidgets.QCheckBox(self.optionWidget)
|
|
||||||
self.colorBox.setObjectName("colorBox")
|
self.colorBox = QCheckBox(self.optionWidget)
|
||||||
|
self.colorBox.setObjectName(u"colorBox")
|
||||||
|
|
||||||
self.gridLayout_2.addWidget(self.colorBox, 2, 2, 1, 1)
|
self.gridLayout_2.addWidget(self.colorBox, 2, 2, 1, 1)
|
||||||
self.gammaBox = QtWidgets.QCheckBox(self.optionWidget)
|
|
||||||
self.gammaBox.setObjectName("gammaBox")
|
self.gammaBox = QCheckBox(self.optionWidget)
|
||||||
|
self.gammaBox.setObjectName(u"gammaBox")
|
||||||
|
|
||||||
self.gridLayout_2.addWidget(self.gammaBox, 1, 2, 1, 1)
|
self.gridLayout_2.addWidget(self.gammaBox, 1, 2, 1, 1)
|
||||||
self.borderBox = QtWidgets.QCheckBox(self.optionWidget)
|
|
||||||
|
self.borderBox = QCheckBox(self.optionWidget)
|
||||||
|
self.borderBox.setObjectName(u"borderBox")
|
||||||
self.borderBox.setTristate(True)
|
self.borderBox.setTristate(True)
|
||||||
self.borderBox.setObjectName("borderBox")
|
|
||||||
self.gridLayout_2.addWidget(self.borderBox, 2, 0, 1, 1)
|
self.gridLayout_2.addWidget(self.borderBox, 2, 0, 1, 1)
|
||||||
self.mangaBox = QtWidgets.QCheckBox(self.optionWidget)
|
|
||||||
self.mangaBox.setObjectName("mangaBox")
|
self.mangaBox = QCheckBox(self.optionWidget)
|
||||||
|
self.mangaBox.setObjectName(u"mangaBox")
|
||||||
|
|
||||||
self.gridLayout_2.addWidget(self.mangaBox, 0, 0, 1, 1)
|
self.gridLayout_2.addWidget(self.mangaBox, 0, 0, 1, 1)
|
||||||
self.qualityBox = QtWidgets.QCheckBox(self.optionWidget)
|
|
||||||
|
self.qualityBox = QCheckBox(self.optionWidget)
|
||||||
|
self.qualityBox.setObjectName(u"qualityBox")
|
||||||
self.qualityBox.setTristate(True)
|
self.qualityBox.setTristate(True)
|
||||||
self.qualityBox.setObjectName("qualityBox")
|
|
||||||
self.gridLayout_2.addWidget(self.qualityBox, 0, 2, 1, 1)
|
self.gridLayout_2.addWidget(self.qualityBox, 0, 2, 1, 1)
|
||||||
self.mozJpegBox = QtWidgets.QCheckBox(self.optionWidget)
|
|
||||||
|
self.mozJpegBox = QCheckBox(self.optionWidget)
|
||||||
|
self.mozJpegBox.setObjectName(u"mozJpegBox")
|
||||||
self.mozJpegBox.setTristate(True)
|
self.mozJpegBox.setTristate(True)
|
||||||
self.mozJpegBox.setObjectName("mozJpegBox")
|
|
||||||
self.gridLayout_2.addWidget(self.mozJpegBox, 3, 0, 1, 1)
|
self.gridLayout_2.addWidget(self.mozJpegBox, 3, 0, 1, 1)
|
||||||
self.maximizeStrips = QtWidgets.QCheckBox(self.optionWidget)
|
|
||||||
self.maximizeStrips.setObjectName("maximizeStrips")
|
self.maximizeStrips = QCheckBox(self.optionWidget)
|
||||||
|
self.maximizeStrips.setObjectName(u"maximizeStrips")
|
||||||
|
|
||||||
self.gridLayout_2.addWidget(self.maximizeStrips, 3, 1, 1, 1)
|
self.gridLayout_2.addWidget(self.maximizeStrips, 3, 1, 1, 1)
|
||||||
self.croppingBox = QtWidgets.QCheckBox(self.optionWidget)
|
|
||||||
|
self.croppingBox = QCheckBox(self.optionWidget)
|
||||||
|
self.croppingBox.setObjectName(u"croppingBox")
|
||||||
self.croppingBox.setTristate(True)
|
self.croppingBox.setTristate(True)
|
||||||
self.croppingBox.setObjectName("croppingBox")
|
|
||||||
self.gridLayout_2.addWidget(self.croppingBox, 3, 2, 1, 1)
|
self.gridLayout_2.addWidget(self.croppingBox, 3, 2, 1, 1)
|
||||||
self.deleteBox = QtWidgets.QCheckBox(self.optionWidget)
|
|
||||||
self.deleteBox.setObjectName("deleteBox")
|
self.deleteBox = QCheckBox(self.optionWidget)
|
||||||
|
self.deleteBox.setObjectName(u"deleteBox")
|
||||||
|
|
||||||
self.gridLayout_2.addWidget(self.deleteBox, 4, 1, 1, 1)
|
self.gridLayout_2.addWidget(self.deleteBox, 4, 1, 1, 1)
|
||||||
self.disableProcessingBox = QtWidgets.QCheckBox(self.optionWidget)
|
|
||||||
self.disableProcessingBox.setObjectName("disableProcessingBox")
|
self.disableProcessingBox = QCheckBox(self.optionWidget)
|
||||||
|
self.disableProcessingBox.setObjectName(u"disableProcessingBox")
|
||||||
|
|
||||||
self.gridLayout_2.addWidget(self.disableProcessingBox, 4, 2, 1, 1)
|
self.gridLayout_2.addWidget(self.disableProcessingBox, 4, 2, 1, 1)
|
||||||
|
|
||||||
|
|
||||||
self.gridLayout.addWidget(self.optionWidget, 5, 0, 1, 2)
|
self.gridLayout.addWidget(self.optionWidget, 5, 0, 1, 2)
|
||||||
self.gammaWidget = QtWidgets.QWidget(self.centralWidget)
|
|
||||||
|
self.gammaWidget = QWidget(self.centralWidget)
|
||||||
|
self.gammaWidget.setObjectName(u"gammaWidget")
|
||||||
self.gammaWidget.setVisible(False)
|
self.gammaWidget.setVisible(False)
|
||||||
self.gammaWidget.setObjectName("gammaWidget")
|
self.horizontalLayout_2 = QHBoxLayout(self.gammaWidget)
|
||||||
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.gammaWidget)
|
self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
|
||||||
self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
|
self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
|
||||||
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
|
self.gammaLabel = QLabel(self.gammaWidget)
|
||||||
self.gammaLabel = QtWidgets.QLabel(self.gammaWidget)
|
self.gammaLabel.setObjectName(u"gammaLabel")
|
||||||
self.gammaLabel.setObjectName("gammaLabel")
|
|
||||||
self.horizontalLayout_2.addWidget(self.gammaLabel)
|
self.horizontalLayout_2.addWidget(self.gammaLabel)
|
||||||
self.gammaSlider = QtWidgets.QSlider(self.gammaWidget)
|
|
||||||
|
self.gammaSlider = QSlider(self.gammaWidget)
|
||||||
|
self.gammaSlider.setObjectName(u"gammaSlider")
|
||||||
self.gammaSlider.setMaximum(250)
|
self.gammaSlider.setMaximum(250)
|
||||||
self.gammaSlider.setSingleStep(5)
|
self.gammaSlider.setSingleStep(5)
|
||||||
self.gammaSlider.setOrientation(QtCore.Qt.Horizontal)
|
self.gammaSlider.setOrientation(Qt.Horizontal)
|
||||||
self.gammaSlider.setObjectName("gammaSlider")
|
|
||||||
self.horizontalLayout_2.addWidget(self.gammaSlider)
|
self.horizontalLayout_2.addWidget(self.gammaSlider)
|
||||||
|
|
||||||
|
|
||||||
self.gridLayout.addWidget(self.gammaWidget, 6, 0, 1, 2)
|
self.gridLayout.addWidget(self.gammaWidget, 6, 0, 1, 2)
|
||||||
self.croppingWidget = QtWidgets.QWidget(self.centralWidget)
|
|
||||||
|
self.croppingWidget = QWidget(self.centralWidget)
|
||||||
|
self.croppingWidget.setObjectName(u"croppingWidget")
|
||||||
self.croppingWidget.setVisible(False)
|
self.croppingWidget.setVisible(False)
|
||||||
self.croppingWidget.setObjectName("croppingWidget")
|
self.horizontalLayout_3 = QHBoxLayout(self.croppingWidget)
|
||||||
self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.croppingWidget)
|
self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
|
||||||
self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0)
|
self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0)
|
||||||
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
|
self.croppingPowerLabel = QLabel(self.croppingWidget)
|
||||||
self.croppingPowerLabel = QtWidgets.QLabel(self.croppingWidget)
|
self.croppingPowerLabel.setObjectName(u"croppingPowerLabel")
|
||||||
self.croppingPowerLabel.setObjectName("croppingPowerLabel")
|
|
||||||
self.horizontalLayout_3.addWidget(self.croppingPowerLabel)
|
self.horizontalLayout_3.addWidget(self.croppingPowerLabel)
|
||||||
self.croppingPowerSlider = QtWidgets.QSlider(self.croppingWidget)
|
|
||||||
|
self.croppingPowerSlider = QSlider(self.croppingWidget)
|
||||||
|
self.croppingPowerSlider.setObjectName(u"croppingPowerSlider")
|
||||||
self.croppingPowerSlider.setMaximum(200)
|
self.croppingPowerSlider.setMaximum(200)
|
||||||
self.croppingPowerSlider.setSingleStep(1)
|
self.croppingPowerSlider.setSingleStep(1)
|
||||||
self.croppingPowerSlider.setOrientation(QtCore.Qt.Horizontal)
|
self.croppingPowerSlider.setOrientation(Qt.Horizontal)
|
||||||
self.croppingPowerSlider.setObjectName("croppingPowerSlider")
|
|
||||||
self.horizontalLayout_3.addWidget(self.croppingPowerSlider)
|
self.horizontalLayout_3.addWidget(self.croppingPowerSlider)
|
||||||
|
|
||||||
|
|
||||||
self.gridLayout.addWidget(self.croppingWidget, 8, 0, 1, 2)
|
self.gridLayout.addWidget(self.croppingWidget, 8, 0, 1, 2)
|
||||||
self.buttonWidget = QtWidgets.QWidget(self.centralWidget)
|
|
||||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
|
self.buttonWidget = QWidget(self.centralWidget)
|
||||||
|
self.buttonWidget.setObjectName(u"buttonWidget")
|
||||||
|
sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed)
|
||||||
sizePolicy.setHorizontalStretch(0)
|
sizePolicy.setHorizontalStretch(0)
|
||||||
sizePolicy.setVerticalStretch(0)
|
sizePolicy.setVerticalStretch(0)
|
||||||
sizePolicy.setHeightForWidth(self.buttonWidget.sizePolicy().hasHeightForWidth())
|
sizePolicy.setHeightForWidth(self.buttonWidget.sizePolicy().hasHeightForWidth())
|
||||||
self.buttonWidget.setSizePolicy(sizePolicy)
|
self.buttonWidget.setSizePolicy(sizePolicy)
|
||||||
self.buttonWidget.setObjectName("buttonWidget")
|
self.gridLayout_4 = QGridLayout(self.buttonWidget)
|
||||||
self.gridLayout_4 = QtWidgets.QGridLayout(self.buttonWidget)
|
self.gridLayout_4.setObjectName(u"gridLayout_4")
|
||||||
self.gridLayout_4.setContentsMargins(0, 0, 0, 0)
|
self.gridLayout_4.setContentsMargins(0, 0, 0, 0)
|
||||||
self.gridLayout_4.setObjectName("gridLayout_4")
|
self.directoryButton = QPushButton(self.buttonWidget)
|
||||||
self.directoryButton = QtWidgets.QPushButton(self.buttonWidget)
|
self.directoryButton.setObjectName(u"directoryButton")
|
||||||
self.directoryButton.setMinimumSize(QtCore.QSize(0, 30))
|
self.directoryButton.setMinimumSize(QSize(0, 30))
|
||||||
icon1 = QtGui.QIcon()
|
icon1 = QIcon()
|
||||||
icon1.addPixmap(QtGui.QPixmap(":/Other/icons/folder_new.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
icon1.addFile(u":/Other/icons/folder_new.png", QSize(), QIcon.Normal, QIcon.Off)
|
||||||
self.directoryButton.setIcon(icon1)
|
self.directoryButton.setIcon(icon1)
|
||||||
self.directoryButton.setObjectName("directoryButton")
|
|
||||||
self.gridLayout_4.addWidget(self.directoryButton, 0, 0, 1, 1)
|
self.gridLayout_4.addWidget(self.directoryButton, 0, 0, 1, 1)
|
||||||
self.fileButton = QtWidgets.QPushButton(self.buttonWidget)
|
|
||||||
self.fileButton.setMinimumSize(QtCore.QSize(0, 30))
|
self.fileButton = QPushButton(self.buttonWidget)
|
||||||
icon2 = QtGui.QIcon()
|
self.fileButton.setObjectName(u"fileButton")
|
||||||
icon2.addPixmap(QtGui.QPixmap(":/Other/icons/document_new.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
self.fileButton.setMinimumSize(QSize(0, 30))
|
||||||
|
icon2 = QIcon()
|
||||||
|
icon2.addFile(u":/Other/icons/document_new.png", QSize(), QIcon.Normal, QIcon.Off)
|
||||||
self.fileButton.setIcon(icon2)
|
self.fileButton.setIcon(icon2)
|
||||||
self.fileButton.setObjectName("fileButton")
|
|
||||||
self.gridLayout_4.addWidget(self.fileButton, 0, 3, 1, 1)
|
self.gridLayout_4.addWidget(self.fileButton, 0, 3, 1, 1)
|
||||||
self.deviceBox = QtWidgets.QComboBox(self.buttonWidget)
|
|
||||||
self.deviceBox.setMinimumSize(QtCore.QSize(0, 28))
|
self.deviceBox = QComboBox(self.buttonWidget)
|
||||||
self.deviceBox.setObjectName("deviceBox")
|
self.deviceBox.setObjectName(u"deviceBox")
|
||||||
|
self.deviceBox.setMinimumSize(QSize(0, 28))
|
||||||
|
|
||||||
self.gridLayout_4.addWidget(self.deviceBox, 1, 0, 1, 1)
|
self.gridLayout_4.addWidget(self.deviceBox, 1, 0, 1, 1)
|
||||||
self.formatBox = QtWidgets.QComboBox(self.buttonWidget)
|
|
||||||
self.formatBox.setMinimumSize(QtCore.QSize(0, 28))
|
self.formatBox = QComboBox(self.buttonWidget)
|
||||||
self.formatBox.setObjectName("formatBox")
|
self.formatBox.setObjectName(u"formatBox")
|
||||||
|
self.formatBox.setMinimumSize(QSize(0, 28))
|
||||||
|
|
||||||
self.gridLayout_4.addWidget(self.formatBox, 1, 3, 1, 1)
|
self.gridLayout_4.addWidget(self.formatBox, 1, 3, 1, 1)
|
||||||
self.convertButton = QtWidgets.QPushButton(self.buttonWidget)
|
|
||||||
self.convertButton.setMinimumSize(QtCore.QSize(0, 30))
|
self.convertButton = QPushButton(self.buttonWidget)
|
||||||
font = QtGui.QFont()
|
self.convertButton.setObjectName(u"convertButton")
|
||||||
|
self.convertButton.setMinimumSize(QSize(0, 30))
|
||||||
|
font = QFont()
|
||||||
font.setBold(True)
|
font.setBold(True)
|
||||||
self.convertButton.setFont(font)
|
self.convertButton.setFont(font)
|
||||||
icon3 = QtGui.QIcon()
|
icon3 = QIcon()
|
||||||
icon3.addPixmap(QtGui.QPixmap(":/Other/icons/convert.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
icon3.addFile(u":/Other/icons/convert.png", QSize(), QIcon.Normal, QIcon.Off)
|
||||||
self.convertButton.setIcon(icon3)
|
self.convertButton.setIcon(icon3)
|
||||||
self.convertButton.setObjectName("convertButton")
|
|
||||||
self.gridLayout_4.addWidget(self.convertButton, 1, 2, 1, 1)
|
self.gridLayout_4.addWidget(self.convertButton, 1, 2, 1, 1)
|
||||||
self.clearButton = QtWidgets.QPushButton(self.buttonWidget)
|
|
||||||
self.clearButton.setMinimumSize(QtCore.QSize(0, 30))
|
self.clearButton = QPushButton(self.buttonWidget)
|
||||||
icon4 = QtGui.QIcon()
|
self.clearButton.setObjectName(u"clearButton")
|
||||||
icon4.addPixmap(QtGui.QPixmap(":/Other/icons/clear.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
self.clearButton.setMinimumSize(QSize(0, 30))
|
||||||
|
icon4 = QIcon()
|
||||||
|
icon4.addFile(u":/Other/icons/clear.png", QSize(), QIcon.Normal, QIcon.Off)
|
||||||
self.clearButton.setIcon(icon4)
|
self.clearButton.setIcon(icon4)
|
||||||
self.clearButton.setObjectName("clearButton")
|
|
||||||
self.gridLayout_4.addWidget(self.clearButton, 0, 2, 1, 1)
|
self.gridLayout_4.addWidget(self.clearButton, 0, 2, 1, 1)
|
||||||
|
|
||||||
self.directoryButton.raise_()
|
self.directoryButton.raise_()
|
||||||
self.clearButton.raise_()
|
self.clearButton.raise_()
|
||||||
self.fileButton.raise_()
|
self.fileButton.raise_()
|
||||||
self.deviceBox.raise_()
|
self.deviceBox.raise_()
|
||||||
self.convertButton.raise_()
|
self.convertButton.raise_()
|
||||||
self.formatBox.raise_()
|
self.formatBox.raise_()
|
||||||
|
|
||||||
self.gridLayout.addWidget(self.buttonWidget, 3, 0, 1, 2)
|
self.gridLayout.addWidget(self.buttonWidget, 3, 0, 1, 2)
|
||||||
self.toolWidget = QtWidgets.QWidget(self.centralWidget)
|
|
||||||
self.toolWidget.setObjectName("toolWidget")
|
self.toolWidget = QWidget(self.centralWidget)
|
||||||
self.horizontalLayout = QtWidgets.QHBoxLayout(self.toolWidget)
|
self.toolWidget.setObjectName(u"toolWidget")
|
||||||
|
self.horizontalLayout = QHBoxLayout(self.toolWidget)
|
||||||
|
self.horizontalLayout.setObjectName(u"horizontalLayout")
|
||||||
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
|
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
|
||||||
self.horizontalLayout.setObjectName("horizontalLayout")
|
self.editorButton = QPushButton(self.toolWidget)
|
||||||
self.editorButton = QtWidgets.QPushButton(self.toolWidget)
|
self.editorButton.setObjectName(u"editorButton")
|
||||||
self.editorButton.setMinimumSize(QtCore.QSize(0, 30))
|
self.editorButton.setMinimumSize(QSize(0, 30))
|
||||||
icon5 = QtGui.QIcon()
|
icon5 = QIcon()
|
||||||
icon5.addPixmap(QtGui.QPixmap(":/Other/icons/editor.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
icon5.addFile(u":/Other/icons/editor.png", QSize(), QIcon.Normal, QIcon.Off)
|
||||||
self.editorButton.setIcon(icon5)
|
self.editorButton.setIcon(icon5)
|
||||||
self.editorButton.setObjectName("editorButton")
|
|
||||||
self.horizontalLayout.addWidget(self.editorButton)
|
self.horizontalLayout.addWidget(self.editorButton)
|
||||||
self.wikiButton = QtWidgets.QPushButton(self.toolWidget)
|
|
||||||
self.wikiButton.setMinimumSize(QtCore.QSize(0, 30))
|
self.wikiButton = QPushButton(self.toolWidget)
|
||||||
icon6 = QtGui.QIcon()
|
self.wikiButton.setObjectName(u"wikiButton")
|
||||||
icon6.addPixmap(QtGui.QPixmap(":/Other/icons/wiki.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
self.wikiButton.setMinimumSize(QSize(0, 30))
|
||||||
|
icon6 = QIcon()
|
||||||
|
icon6.addFile(u":/Other/icons/wiki.png", QSize(), QIcon.Normal, QIcon.Off)
|
||||||
self.wikiButton.setIcon(icon6)
|
self.wikiButton.setIcon(icon6)
|
||||||
self.wikiButton.setObjectName("wikiButton")
|
|
||||||
self.horizontalLayout.addWidget(self.wikiButton)
|
self.horizontalLayout.addWidget(self.wikiButton)
|
||||||
|
|
||||||
|
|
||||||
self.gridLayout.addWidget(self.toolWidget, 0, 0, 1, 2)
|
self.gridLayout.addWidget(self.toolWidget, 0, 0, 1, 2)
|
||||||
self.jobList = QtWidgets.QListWidget(self.centralWidget)
|
|
||||||
self.jobList.setStyleSheet("QListWidget#jobList {background:#ffffff;background-image:url(:/Other/icons/list_background.png);background-position:center center;background-repeat:no-repeat;color:rgb(0,0,0);}")
|
self.jobList = QListWidget(self.centralWidget)
|
||||||
self.jobList.setSelectionMode(QtWidgets.QAbstractItemView.NoSelection)
|
self.jobList.setObjectName(u"jobList")
|
||||||
self.jobList.setVerticalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel)
|
self.jobList.setStyleSheet(u"QListWidget#jobList {background:#ffffff;background-image:url(:/Other/icons/list_background.png);background-position:center center;background-repeat:no-repeat;color:rgb(0,0,0);}")
|
||||||
self.jobList.setHorizontalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel)
|
self.jobList.setSelectionMode(QAbstractItemView.NoSelection)
|
||||||
self.jobList.setObjectName("jobList")
|
self.jobList.setVerticalScrollMode(QAbstractItemView.ScrollPerPixel)
|
||||||
|
self.jobList.setHorizontalScrollMode(QAbstractItemView.ScrollPerPixel)
|
||||||
|
|
||||||
self.gridLayout.addWidget(self.jobList, 2, 0, 1, 2)
|
self.gridLayout.addWidget(self.jobList, 2, 0, 1, 2)
|
||||||
self.progressBar = QtWidgets.QProgressBar(self.centralWidget)
|
|
||||||
self.progressBar.setMinimumSize(QtCore.QSize(0, 30))
|
self.progressBar = QProgressBar(self.centralWidget)
|
||||||
font = QtGui.QFont()
|
self.progressBar.setObjectName(u"progressBar")
|
||||||
font.setBold(True)
|
self.progressBar.setMinimumSize(QSize(0, 30))
|
||||||
self.progressBar.setFont(font)
|
self.progressBar.setFont(font)
|
||||||
self.progressBar.setVisible(False)
|
self.progressBar.setVisible(False)
|
||||||
self.progressBar.setAlignment(QtCore.Qt.AlignJustify|QtCore.Qt.AlignVCenter)
|
self.progressBar.setAlignment(Qt.AlignJustify|Qt.AlignVCenter)
|
||||||
self.progressBar.setObjectName("progressBar")
|
|
||||||
self.gridLayout.addWidget(self.progressBar, 1, 0, 1, 2)
|
self.gridLayout.addWidget(self.progressBar, 1, 0, 1, 2)
|
||||||
self.customWidget = QtWidgets.QWidget(self.centralWidget)
|
|
||||||
|
self.customWidget = QWidget(self.centralWidget)
|
||||||
|
self.customWidget.setObjectName(u"customWidget")
|
||||||
self.customWidget.setVisible(False)
|
self.customWidget.setVisible(False)
|
||||||
self.customWidget.setObjectName("customWidget")
|
self.gridLayout_3 = QGridLayout(self.customWidget)
|
||||||
self.gridLayout_3 = QtWidgets.QGridLayout(self.customWidget)
|
self.gridLayout_3.setObjectName(u"gridLayout_3")
|
||||||
self.gridLayout_3.setContentsMargins(0, 0, 0, 0)
|
self.gridLayout_3.setContentsMargins(0, 0, 0, 0)
|
||||||
self.gridLayout_3.setObjectName("gridLayout_3")
|
self.hLabel = QLabel(self.customWidget)
|
||||||
self.hLabel = QtWidgets.QLabel(self.customWidget)
|
self.hLabel.setObjectName(u"hLabel")
|
||||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred)
|
sizePolicy1 = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Preferred)
|
||||||
sizePolicy.setHorizontalStretch(0)
|
sizePolicy1.setHorizontalStretch(0)
|
||||||
sizePolicy.setVerticalStretch(0)
|
sizePolicy1.setVerticalStretch(0)
|
||||||
sizePolicy.setHeightForWidth(self.hLabel.sizePolicy().hasHeightForWidth())
|
sizePolicy1.setHeightForWidth(self.hLabel.sizePolicy().hasHeightForWidth())
|
||||||
self.hLabel.setSizePolicy(sizePolicy)
|
self.hLabel.setSizePolicy(sizePolicy1)
|
||||||
self.hLabel.setObjectName("hLabel")
|
|
||||||
self.gridLayout_3.addWidget(self.hLabel, 0, 2, 1, 1)
|
self.gridLayout_3.addWidget(self.hLabel, 0, 2, 1, 1)
|
||||||
self.widthBox = QtWidgets.QSpinBox(self.customWidget)
|
|
||||||
|
self.widthBox = QSpinBox(self.customWidget)
|
||||||
|
self.widthBox.setObjectName(u"widthBox")
|
||||||
self.widthBox.setMaximum(2160)
|
self.widthBox.setMaximum(2160)
|
||||||
self.widthBox.setObjectName("widthBox")
|
|
||||||
self.gridLayout_3.addWidget(self.widthBox, 0, 1, 1, 1)
|
self.gridLayout_3.addWidget(self.widthBox, 0, 1, 1, 1)
|
||||||
self.wLabel = QtWidgets.QLabel(self.customWidget)
|
|
||||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred)
|
self.wLabel = QLabel(self.customWidget)
|
||||||
sizePolicy.setHorizontalStretch(0)
|
self.wLabel.setObjectName(u"wLabel")
|
||||||
sizePolicy.setVerticalStretch(0)
|
sizePolicy1.setHeightForWidth(self.wLabel.sizePolicy().hasHeightForWidth())
|
||||||
sizePolicy.setHeightForWidth(self.wLabel.sizePolicy().hasHeightForWidth())
|
self.wLabel.setSizePolicy(sizePolicy1)
|
||||||
self.wLabel.setSizePolicy(sizePolicy)
|
|
||||||
self.wLabel.setObjectName("wLabel")
|
|
||||||
self.gridLayout_3.addWidget(self.wLabel, 0, 0, 1, 1)
|
self.gridLayout_3.addWidget(self.wLabel, 0, 0, 1, 1)
|
||||||
self.heightBox = QtWidgets.QSpinBox(self.customWidget)
|
|
||||||
|
self.heightBox = QSpinBox(self.customWidget)
|
||||||
|
self.heightBox.setObjectName(u"heightBox")
|
||||||
self.heightBox.setMaximum(3840)
|
self.heightBox.setMaximum(3840)
|
||||||
self.heightBox.setObjectName("heightBox")
|
|
||||||
self.gridLayout_3.addWidget(self.heightBox, 0, 3, 1, 1)
|
self.gridLayout_3.addWidget(self.heightBox, 0, 3, 1, 1)
|
||||||
|
|
||||||
|
|
||||||
self.gridLayout.addWidget(self.customWidget, 7, 0, 1, 2)
|
self.gridLayout.addWidget(self.customWidget, 7, 0, 1, 2)
|
||||||
|
|
||||||
mainWindow.setCentralWidget(self.centralWidget)
|
mainWindow.setCentralWidget(self.centralWidget)
|
||||||
self.statusBar = QtWidgets.QStatusBar(mainWindow)
|
self.statusBar = QStatusBar(mainWindow)
|
||||||
|
self.statusBar.setObjectName(u"statusBar")
|
||||||
self.statusBar.setSizeGripEnabled(False)
|
self.statusBar.setSizeGripEnabled(False)
|
||||||
self.statusBar.setObjectName("statusBar")
|
|
||||||
mainWindow.setStatusBar(self.statusBar)
|
mainWindow.setStatusBar(self.statusBar)
|
||||||
|
QWidget.setTabOrder(self.convertButton, self.clearButton)
|
||||||
|
QWidget.setTabOrder(self.clearButton, self.directoryButton)
|
||||||
|
QWidget.setTabOrder(self.directoryButton, self.fileButton)
|
||||||
|
QWidget.setTabOrder(self.fileButton, self.deviceBox)
|
||||||
|
QWidget.setTabOrder(self.deviceBox, self.formatBox)
|
||||||
|
QWidget.setTabOrder(self.formatBox, self.mangaBox)
|
||||||
|
QWidget.setTabOrder(self.mangaBox, self.rotateBox)
|
||||||
|
QWidget.setTabOrder(self.rotateBox, self.qualityBox)
|
||||||
|
QWidget.setTabOrder(self.qualityBox, self.webtoonBox)
|
||||||
|
QWidget.setTabOrder(self.webtoonBox, self.upscaleBox)
|
||||||
|
QWidget.setTabOrder(self.upscaleBox, self.gammaBox)
|
||||||
|
QWidget.setTabOrder(self.gammaBox, self.borderBox)
|
||||||
|
QWidget.setTabOrder(self.borderBox, self.outputSplit)
|
||||||
|
QWidget.setTabOrder(self.outputSplit, self.colorBox)
|
||||||
|
QWidget.setTabOrder(self.colorBox, self.croppingBox)
|
||||||
|
QWidget.setTabOrder(self.croppingBox, self.mozJpegBox)
|
||||||
|
QWidget.setTabOrder(self.mozJpegBox, self.maximizeStrips)
|
||||||
|
QWidget.setTabOrder(self.maximizeStrips, self.deleteBox)
|
||||||
|
QWidget.setTabOrder(self.deleteBox, self.disableProcessingBox)
|
||||||
|
QWidget.setTabOrder(self.disableProcessingBox, self.editorButton)
|
||||||
|
QWidget.setTabOrder(self.editorButton, self.wikiButton)
|
||||||
|
QWidget.setTabOrder(self.wikiButton, self.jobList)
|
||||||
|
QWidget.setTabOrder(self.jobList, self.gammaSlider)
|
||||||
|
QWidget.setTabOrder(self.gammaSlider, self.widthBox)
|
||||||
|
QWidget.setTabOrder(self.widthBox, self.heightBox)
|
||||||
|
QWidget.setTabOrder(self.heightBox, self.croppingPowerSlider)
|
||||||
|
|
||||||
self.retranslateUi(mainWindow)
|
self.retranslateUi(mainWindow)
|
||||||
QtCore.QMetaObject.connectSlotsByName(mainWindow)
|
|
||||||
mainWindow.setTabOrder(self.convertButton, self.clearButton)
|
QMetaObject.connectSlotsByName(mainWindow)
|
||||||
mainWindow.setTabOrder(self.clearButton, self.directoryButton)
|
# setupUi
|
||||||
mainWindow.setTabOrder(self.directoryButton, self.fileButton)
|
|
||||||
mainWindow.setTabOrder(self.fileButton, self.deviceBox)
|
|
||||||
mainWindow.setTabOrder(self.deviceBox, self.formatBox)
|
|
||||||
mainWindow.setTabOrder(self.formatBox, self.mangaBox)
|
|
||||||
mainWindow.setTabOrder(self.mangaBox, self.rotateBox)
|
|
||||||
mainWindow.setTabOrder(self.rotateBox, self.qualityBox)
|
|
||||||
mainWindow.setTabOrder(self.qualityBox, self.webtoonBox)
|
|
||||||
mainWindow.setTabOrder(self.webtoonBox, self.upscaleBox)
|
|
||||||
mainWindow.setTabOrder(self.upscaleBox, self.gammaBox)
|
|
||||||
mainWindow.setTabOrder(self.gammaBox, self.borderBox)
|
|
||||||
mainWindow.setTabOrder(self.borderBox, self.outputSplit)
|
|
||||||
mainWindow.setTabOrder(self.outputSplit, self.colorBox)
|
|
||||||
mainWindow.setTabOrder(self.colorBox, self.croppingBox)
|
|
||||||
mainWindow.setTabOrder(self.croppingBox, self.mozJpegBox)
|
|
||||||
mainWindow.setTabOrder(self.mozJpegBox, self.maximizeStrips)
|
|
||||||
mainWindow.setTabOrder(self.maximizeStrips, self.deleteBox)
|
|
||||||
mainWindow.setTabOrder(self.deleteBox, self.disableProcessingBox)
|
|
||||||
mainWindow.setTabOrder(self.disableProcessingBox, self.editorButton)
|
|
||||||
mainWindow.setTabOrder(self.editorButton, self.wikiButton)
|
|
||||||
mainWindow.setTabOrder(self.wikiButton, self.jobList)
|
|
||||||
mainWindow.setTabOrder(self.jobList, self.gammaSlider)
|
|
||||||
mainWindow.setTabOrder(self.gammaSlider, self.widthBox)
|
|
||||||
mainWindow.setTabOrder(self.widthBox, self.heightBox)
|
|
||||||
mainWindow.setTabOrder(self.heightBox, self.croppingPowerSlider)
|
|
||||||
|
|
||||||
def retranslateUi(self, mainWindow):
|
def retranslateUi(self, mainWindow):
|
||||||
_translate = QtCore.QCoreApplication.translate
|
mainWindow.setWindowTitle(QCoreApplication.translate("mainWindow", u"Kindle Comic Converter", None))
|
||||||
mainWindow.setWindowTitle(_translate("mainWindow", "Kindle Comic Converter"))
|
#if QT_CONFIG(tooltip)
|
||||||
self.upscaleBox.setToolTip(_translate("mainWindow", "<html><head/><body><p><span style=\" font-weight:600; text-decoration: underline;\">Unchecked - Nothing<br/></span>Images smaller than device resolution will not be resized.</p><p><span style=\" font-weight:600; text-decoration: underline;\">Indeterminate - Stretching<br/></span>Images smaller than device resolution will be resized. Aspect ratio will be not preserved.</p><p><span style=\" font-weight:600; text-decoration: underline;\">Checked - Upscaling<br/></span>Images smaller than device resolution will be resized. Aspect ratio will be preserved.</p></body></html>"))
|
self.upscaleBox.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p><span style=\" font-weight:600; text-decoration: underline;\">Unchecked - Nothing<br/></span>Images smaller than device resolution will not be resized.</p><p><span style=\" font-weight:600; text-decoration: underline;\">Indeterminate - Stretching<br/></span>Images smaller than device resolution will be resized. Aspect ratio will be not preserved.</p><p><span style=\" font-weight:600; text-decoration: underline;\">Checked - Upscaling<br/></span>Images smaller than device resolution will be resized. Aspect ratio will be preserved.</p></body></html>", None))
|
||||||
self.upscaleBox.setText(_translate("mainWindow", "Stretch/Upscale"))
|
#endif // QT_CONFIG(tooltip)
|
||||||
self.rotateBox.setToolTip(_translate("mainWindow", "<html><head/><body><p><span style=\" font-weight:600; text-decoration: underline;\">Unchecked - Split<br/></span>Double page spreads will be cut into two separate pages.</p><p><span style=\" font-weight:600; text-decoration: underline;\">Indeterminate - Rotate and split<br/></span>Double page spreads will be displayed twice. First rotated and then split. </p><p><span style=\" font-weight:600; text-decoration: underline;\">Checked - Rotate<br/></span>Double page spreads will be rotated.</p></body></html>"))
|
self.upscaleBox.setText(QCoreApplication.translate("mainWindow", u"Stretch/Upscale", None))
|
||||||
self.rotateBox.setText(_translate("mainWindow", "Spread splitter"))
|
#if QT_CONFIG(tooltip)
|
||||||
self.outputSplit.setToolTip(_translate("mainWindow", "<html><head/><body><p style=\'white-space:pre\'><span style=\" font-weight:600; text-decoration: underline;\">Unchecked - Automatic mode<br/></span>The output will be split automatically.</p><p style=\'white-space:pre\'><span style=\" font-weight:600; text-decoration: underline;\">Checked - Volume mode<br/></span>Every subdirectory will be considered as a separate volume.</p></body></html>"))
|
self.rotateBox.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p><span style=\" font-weight:600; text-decoration: underline;\">Unchecked - Split<br/></span>Double page spreads will be cut into two separate pages.</p><p><span style=\" font-weight:600; text-decoration: underline;\">Indeterminate - Rotate and split<br/></span>Double page spreads will be displayed twice. First rotated and then split. </p><p><span style=\" font-weight:600; text-decoration: underline;\">Checked - Rotate<br/></span>Double page spreads will be rotated.</p></body></html>", None))
|
||||||
self.outputSplit.setText(_translate("mainWindow", "Output split"))
|
#endif // QT_CONFIG(tooltip)
|
||||||
self.webtoonBox.setToolTip(_translate("mainWindow", "<html><head/><body><p style=\'white-space:pre\'>Enable special parsing mode for Korean Webtoons.</p></body></html>"))
|
self.rotateBox.setText(QCoreApplication.translate("mainWindow", u"Spread splitter", None))
|
||||||
self.webtoonBox.setText(_translate("mainWindow", "Webtoon mode"))
|
#if QT_CONFIG(tooltip)
|
||||||
self.colorBox.setToolTip(_translate("mainWindow", "<html><head/><body><p style=\'white-space:pre\'>Disable conversion to grayscale.</p></body></html>"))
|
self.outputSplit.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p style='white-space:pre'><span style=\" font-weight:600; text-decoration: underline;\">Unchecked - Automatic mode<br/></span>The output will be split automatically.</p><p style='white-space:pre'><span style=\" font-weight:600; text-decoration: underline;\">Checked - Volume mode<br/></span>Every subdirectory will be considered as a separate volume.</p></body></html>", None))
|
||||||
self.colorBox.setText(_translate("mainWindow", "Color mode"))
|
#endif // QT_CONFIG(tooltip)
|
||||||
self.gammaBox.setToolTip(_translate("mainWindow", "<html><head/><body><p style=\'white-space:pre\'>Disable automatic gamma correction.</p></body></html>"))
|
self.outputSplit.setText(QCoreApplication.translate("mainWindow", u"Output split", None))
|
||||||
self.gammaBox.setText(_translate("mainWindow", "Custom gamma"))
|
#if QT_CONFIG(tooltip)
|
||||||
self.borderBox.setToolTip(_translate("mainWindow", "<html><head/><body><p><span style=\" font-weight:600; text-decoration: underline;\">Unchecked - Autodetection<br/></span>The color of margins fill will be detected automatically.</p><p><span style=\" font-weight:600; text-decoration: underline;\">Indeterminate - White<br/></span>Margins will be filled with white color.</p><p><span style=\" font-weight:600; text-decoration: underline;\">Checked - Black<br/></span>Margins will be filled with black color.</p></body></html>"))
|
self.webtoonBox.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p style='white-space:pre'>Enable special parsing mode for Korean Webtoons.</p></body></html>", None))
|
||||||
self.borderBox.setText(_translate("mainWindow", "W/B margins"))
|
#endif // QT_CONFIG(tooltip)
|
||||||
self.mangaBox.setToolTip(_translate("mainWindow", "<html><head/><body><p style=\'white-space:pre\'>Enable right-to-left reading.</p></body></html>"))
|
self.webtoonBox.setText(QCoreApplication.translate("mainWindow", u"Webtoon mode", None))
|
||||||
self.mangaBox.setText(_translate("mainWindow", "Manga mode"))
|
#if QT_CONFIG(tooltip)
|
||||||
self.qualityBox.setToolTip(_translate("mainWindow", "<html><head/><body><p style=\'white-space:pre\'><span style=\" font-weight:600; text-decoration: underline;\">Unchecked - 4 panels<br/></span>Zoom each corner separately.</p><p style=\'white-space:pre\'><span style=\" font-weight:600; text-decoration: underline;\">Indeterminate - 2 panels<br/></span>Zoom only the top and bottom of the page.</p><p><span style=\" font-weight:600; text-decoration: underline;\">Checked - 4 high-quality panels<br/></span>Zoom each corner separately. Try to increase the quality of magnification. Check wiki for more details.</p></body></html>"))
|
self.colorBox.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p style='white-space:pre'>Disable conversion to grayscale.</p></body></html>", None))
|
||||||
self.qualityBox.setText(_translate("mainWindow", "Panel View 4/2/HQ"))
|
#endif // QT_CONFIG(tooltip)
|
||||||
self.mozJpegBox.setToolTip(_translate("mainWindow", "<html><head/><body><p><span style=\" font-weight:600; text-decoration: underline;\">Unchecked - JPEG<br/></span>Use JPEG files</p><p><span style=\" font-weight:600; text-decoration: underline;\">Indeterminate - force PNG<br/></span>Create PNG files instead JPEG</p><p><span style=\" font-weight:600; text-decoration: underline;\">Checked - mozJpeg<br/></span>10-20% smaller JPEG file, with the same image quality, but processing time multiplied by 2</p></body></html>"))
|
self.colorBox.setText(QCoreApplication.translate("mainWindow", u"Color mode", None))
|
||||||
self.mozJpegBox.setText(_translate("mainWindow", "JPEG/PNG/mozJpeg"))
|
#if QT_CONFIG(tooltip)
|
||||||
self.maximizeStrips.setToolTip(_translate("mainWindow", "<html><head/><body><p><span style=\" font-weight:600; text-decoration: underline;\">Unchecked - 1x4<br/></span>Keep format 1x4 panels strips.</p><p><span style=\" font-weight:600; text-decoration: underline;\">Checked - 2x2<br/></span>Turn 1x4 strips to 2x2 to maximize screen usage.</p></body></html>"))
|
self.gammaBox.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p style='white-space:pre'>Disable automatic gamma correction.</p></body></html>", None))
|
||||||
self.maximizeStrips.setText(_translate("mainWindow", "1x4 to 2x2 strips"))
|
#endif // QT_CONFIG(tooltip)
|
||||||
self.croppingBox.setToolTip(_translate("mainWindow", "<html><head/><body><p><span style=\" font-weight:600; text-decoration: underline;\">Unchecked - Disabled</span></p><p>Disabled</p><p><span style=\" font-weight:600; text-decoration: underline;\">Indeterminate - Margins<br/></span>Margins</p><p><span style=\" font-weight:600; text-decoration: underline;\">Checked - Margins + page numbers<br/></span>Margins +page numbers</p></body></html>"))
|
self.gammaBox.setText(QCoreApplication.translate("mainWindow", u"Custom gamma", None))
|
||||||
self.croppingBox.setText(_translate("mainWindow", "Cropping mode"))
|
#if QT_CONFIG(tooltip)
|
||||||
self.deleteBox.setToolTip(_translate("mainWindow", "Delete input file(s) or directory. It\'s not recoverable!"))
|
self.borderBox.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p><span style=\" font-weight:600; text-decoration: underline;\">Unchecked - Autodetection<br/></span>The color of margins fill will be detected automatically.</p><p><span style=\" font-weight:600; text-decoration: underline;\">Indeterminate - White<br/></span>Margins will be filled with white color.</p><p><span style=\" font-weight:600; text-decoration: underline;\">Checked - Black<br/></span>Margins will be filled with black color.</p></body></html>", None))
|
||||||
self.deleteBox.setText(_translate("mainWindow", "Delete input"))
|
#endif // QT_CONFIG(tooltip)
|
||||||
self.disableProcessingBox.setToolTip(_translate("mainWindow", "<html><head/><body><pre style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Do not process any image, ignore profile and processing options</pre></body></html>"))
|
self.borderBox.setText(QCoreApplication.translate("mainWindow", u"W/B margins", None))
|
||||||
self.disableProcessingBox.setText(_translate("mainWindow", "Disable processing"))
|
#if QT_CONFIG(tooltip)
|
||||||
self.gammaLabel.setText(_translate("mainWindow", "Gamma: Auto"))
|
self.mangaBox.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p style='white-space:pre'>Enable right-to-left reading.</p></body></html>", None))
|
||||||
self.croppingPowerLabel.setText(_translate("mainWindow", "Cropping power:"))
|
#endif // QT_CONFIG(tooltip)
|
||||||
self.directoryButton.setToolTip(_translate("mainWindow", "<html><head/><body><p style=\'white-space:pre\'>Add directory containing JPG, PNG or GIF files to queue.<br/><span style=\" font-weight:600;\">CBR, CBZ and CB7 files inside will not be processed!</span></p></body></html>"))
|
self.mangaBox.setText(QCoreApplication.translate("mainWindow", u"Manga mode", None))
|
||||||
self.directoryButton.setText(_translate("mainWindow", "Add directory"))
|
#if QT_CONFIG(tooltip)
|
||||||
self.fileButton.setToolTip(_translate("mainWindow", "<html><head/><body><p style=\'white-space:pre\'>Add CBR, CBZ, CB7 or PDF file to queue.</p></body></html>"))
|
self.qualityBox.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p style='white-space:pre'><span style=\" font-weight:600; text-decoration: underline;\">Unchecked - 4 panels<br/></span>Zoom each corner separately.</p><p style='white-space:pre'><span style=\" font-weight:600; text-decoration: underline;\">Indeterminate - 2 panels<br/></span>Zoom only the top and bottom of the page.</p><p><span style=\" font-weight:600; text-decoration: underline;\">Checked - 4 high-quality panels<br/></span>Zoom each corner separately. Try to increase the quality of magnification. Check wiki for more details.</p></body></html>", None))
|
||||||
self.fileButton.setText(_translate("mainWindow", "Add file"))
|
#endif // QT_CONFIG(tooltip)
|
||||||
self.deviceBox.setToolTip(_translate("mainWindow", "<html><head/><body><p style=\'white-space:pre\'>Target device.</p></body></html>"))
|
self.qualityBox.setText(QCoreApplication.translate("mainWindow", u"Panel View 4/2/HQ", None))
|
||||||
self.formatBox.setToolTip(_translate("mainWindow", "<html><head/><body><p style=\'white-space:pre\'>Output format.</p></body></html>"))
|
#if QT_CONFIG(tooltip)
|
||||||
self.convertButton.setToolTip(_translate("mainWindow", "<html><head/><body><p style=\'white-space:pre\'>Shift+Click to select the output directory.</p></body></html>"))
|
self.mozJpegBox.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p><span style=\" font-weight:600; text-decoration: underline;\">Unchecked - JPEG<br/></span>Use JPEG files</p><p><span style=\" font-weight:600; text-decoration: underline;\">Indeterminate - force PNG<br/></span>Create PNG files instead JPEG</p><p><span style=\" font-weight:600; text-decoration: underline;\">Checked - mozJpeg<br/></span>10-20% smaller JPEG file, with the same image quality, but processing time multiplied by 2</p></body></html>", None))
|
||||||
self.convertButton.setText(_translate("mainWindow", "Convert"))
|
#endif // QT_CONFIG(tooltip)
|
||||||
self.clearButton.setText(_translate("mainWindow", "Clear list"))
|
self.mozJpegBox.setText(QCoreApplication.translate("mainWindow", u"JPEG/PNG/mozJpeg", None))
|
||||||
self.editorButton.setToolTip(_translate("mainWindow", "<html><head/><body><p style=\'white-space:pre\'>Shift+Click to edit directory.</p></body></html>"))
|
#if QT_CONFIG(tooltip)
|
||||||
self.editorButton.setText(_translate("mainWindow", "Editor"))
|
self.maximizeStrips.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p><span style=\" font-weight:600; text-decoration: underline;\">Unchecked - 1x4<br/></span>Keep format 1x4 panels strips.</p><p><span style=\" font-weight:600; text-decoration: underline;\">Checked - 2x2<br/></span>Turn 1x4 strips to 2x2 to maximize screen usage.</p></body></html>", None))
|
||||||
self.wikiButton.setText(_translate("mainWindow", "Wiki"))
|
#endif // QT_CONFIG(tooltip)
|
||||||
self.hLabel.setToolTip(_translate("mainWindow", "<html><head/><body><p style=\'white-space:pre\'>Resolution of the target device.</p></body></html>"))
|
self.maximizeStrips.setText(QCoreApplication.translate("mainWindow", u"1x4 to 2x2 strips", None))
|
||||||
self.hLabel.setText(_translate("mainWindow", "Custom height:"))
|
#if QT_CONFIG(tooltip)
|
||||||
self.widthBox.setToolTip(_translate("mainWindow", "<html><head/><body><p style=\'white-space:pre\'>Resolution of the target device.</p></body></html>"))
|
self.croppingBox.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p><span style=\" font-weight:600; text-decoration: underline;\">Unchecked - Disabled</span></p><p>Disabled</p><p><span style=\" font-weight:600; text-decoration: underline;\">Indeterminate - Margins<br/></span>Margins</p><p><span style=\" font-weight:600; text-decoration: underline;\">Checked - Margins + page numbers<br/></span>Margins +page numbers</p></body></html>", None))
|
||||||
self.wLabel.setToolTip(_translate("mainWindow", "<html><head/><body><p style=\'white-space:pre\'>Resolution of the target device.</p></body></html>"))
|
#endif // QT_CONFIG(tooltip)
|
||||||
self.wLabel.setText(_translate("mainWindow", "Custom width:"))
|
self.croppingBox.setText(QCoreApplication.translate("mainWindow", u"Cropping mode", None))
|
||||||
self.heightBox.setToolTip(_translate("mainWindow", "<html><head/><body><p style=\'white-space:pre\'>Resolution of the target device.</p></body></html>"))
|
#if QT_CONFIG(tooltip)
|
||||||
from . import KCC_rc
|
self.deleteBox.setToolTip(QCoreApplication.translate("mainWindow", u"Delete input file(s) or directory. It's not recoverable!", None))
|
||||||
|
#endif // QT_CONFIG(tooltip)
|
||||||
|
self.deleteBox.setText(QCoreApplication.translate("mainWindow", u"Delete input", None))
|
||||||
|
#if QT_CONFIG(tooltip)
|
||||||
|
self.disableProcessingBox.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><pre style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Do not process any image, ignore profile and processing options</pre></body></html>", None))
|
||||||
|
#endif // QT_CONFIG(tooltip)
|
||||||
|
self.disableProcessingBox.setText(QCoreApplication.translate("mainWindow", u"Disable processing", None))
|
||||||
|
self.gammaLabel.setText(QCoreApplication.translate("mainWindow", u"Gamma: Auto", None))
|
||||||
|
self.croppingPowerLabel.setText(QCoreApplication.translate("mainWindow", u"Cropping power:", None))
|
||||||
|
#if QT_CONFIG(tooltip)
|
||||||
|
self.directoryButton.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p style='white-space:pre'>Add directory containing JPG, PNG or GIF files to queue.<br/><span style=\" font-weight:600;\">CBR, CBZ and CB7 files inside will not be processed!</span></p></body></html>", None))
|
||||||
|
#endif // QT_CONFIG(tooltip)
|
||||||
|
self.directoryButton.setText(QCoreApplication.translate("mainWindow", u"Add directory", None))
|
||||||
|
#if QT_CONFIG(tooltip)
|
||||||
|
self.fileButton.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p style='white-space:pre'>Add CBR, CBZ, CB7 or PDF file to queue.</p></body></html>", None))
|
||||||
|
#endif // QT_CONFIG(tooltip)
|
||||||
|
self.fileButton.setText(QCoreApplication.translate("mainWindow", u"Add file", None))
|
||||||
|
#if QT_CONFIG(tooltip)
|
||||||
|
self.deviceBox.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p style='white-space:pre'>Target device.</p></body></html>", None))
|
||||||
|
#endif // QT_CONFIG(tooltip)
|
||||||
|
#if QT_CONFIG(tooltip)
|
||||||
|
self.formatBox.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p style='white-space:pre'>Output format.</p></body></html>", None))
|
||||||
|
#endif // QT_CONFIG(tooltip)
|
||||||
|
#if QT_CONFIG(tooltip)
|
||||||
|
self.convertButton.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p style='white-space:pre'>Shift+Click to select the output directory.</p></body></html>", None))
|
||||||
|
#endif // QT_CONFIG(tooltip)
|
||||||
|
self.convertButton.setText(QCoreApplication.translate("mainWindow", u"Convert", None))
|
||||||
|
self.clearButton.setText(QCoreApplication.translate("mainWindow", u"Clear list", None))
|
||||||
|
#if QT_CONFIG(tooltip)
|
||||||
|
self.editorButton.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p style='white-space:pre'>Shift+Click to edit directory.</p></body></html>", None))
|
||||||
|
#endif // QT_CONFIG(tooltip)
|
||||||
|
self.editorButton.setText(QCoreApplication.translate("mainWindow", u"Editor", None))
|
||||||
|
self.wikiButton.setText(QCoreApplication.translate("mainWindow", u"Wiki", None))
|
||||||
|
#if QT_CONFIG(tooltip)
|
||||||
|
self.hLabel.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p style='white-space:pre'>Resolution of the target device.</p></body></html>", None))
|
||||||
|
#endif // QT_CONFIG(tooltip)
|
||||||
|
self.hLabel.setText(QCoreApplication.translate("mainWindow", u"Custom height:", None))
|
||||||
|
#if QT_CONFIG(tooltip)
|
||||||
|
self.widthBox.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p style='white-space:pre'>Resolution of the target device.</p></body></html>", None))
|
||||||
|
#endif // QT_CONFIG(tooltip)
|
||||||
|
#if QT_CONFIG(tooltip)
|
||||||
|
self.wLabel.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p style='white-space:pre'>Resolution of the target device.</p></body></html>", None))
|
||||||
|
#endif // QT_CONFIG(tooltip)
|
||||||
|
self.wLabel.setText(QCoreApplication.translate("mainWindow", u"Custom width:", None))
|
||||||
|
#if QT_CONFIG(tooltip)
|
||||||
|
self.heightBox.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p style='white-space:pre'>Resolution of the target device.</p></body></html>", None))
|
||||||
|
#endif // QT_CONFIG(tooltip)
|
||||||
|
# retranslateUi
|
||||||
|
|
||||||
|
|||||||
@@ -1,118 +1,168 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
# Form implementation generated from reading ui file 'gui/MetaEditor.ui'
|
################################################################################
|
||||||
#
|
## Form generated from reading UI file 'MetaEditor.ui'
|
||||||
# Created by: PyQt5 UI code generator 5.15.2
|
##
|
||||||
#
|
## Created by: Qt User Interface Compiler version 6.5.1
|
||||||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
|
##
|
||||||
# run again. Do not edit this file unless you know what you are doing.
|
## WARNING! All changes made in this file will be lost when recompiling UI file!
|
||||||
|
################################################################################
|
||||||
|
|
||||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
|
||||||
|
|
||||||
|
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
|
||||||
|
QMetaObject, QObject, QPoint, QRect,
|
||||||
|
QSize, QTime, QUrl, Qt)
|
||||||
|
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
|
||||||
|
QFont, QFontDatabase, QGradient, QIcon,
|
||||||
|
QImage, QKeySequence, QLinearGradient, QPainter,
|
||||||
|
QPalette, QPixmap, QRadialGradient, QTransform)
|
||||||
|
from PySide6.QtWidgets import (QApplication, QDialog, QGridLayout, QHBoxLayout,
|
||||||
|
QLabel, QLineEdit, QPushButton, QSizePolicy,
|
||||||
|
QVBoxLayout, QWidget)
|
||||||
|
from . import KCC_rc
|
||||||
|
|
||||||
class Ui_editorDialog(object):
|
class Ui_editorDialog(object):
|
||||||
def setupUi(self, editorDialog):
|
def setupUi(self, editorDialog):
|
||||||
editorDialog.setObjectName("editorDialog")
|
if not editorDialog.objectName():
|
||||||
|
editorDialog.setObjectName(u"editorDialog")
|
||||||
editorDialog.resize(400, 260)
|
editorDialog.resize(400, 260)
|
||||||
editorDialog.setMinimumSize(QtCore.QSize(400, 260))
|
editorDialog.setMinimumSize(QSize(400, 260))
|
||||||
icon = QtGui.QIcon()
|
icon = QIcon()
|
||||||
icon.addPixmap(QtGui.QPixmap(":/Icon/icons/comic2ebook.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
icon.addFile(u":/Icon/icons/comic2ebook.png", QSize(), QIcon.Normal, QIcon.Off)
|
||||||
editorDialog.setWindowIcon(icon)
|
editorDialog.setWindowIcon(icon)
|
||||||
self.verticalLayout = QtWidgets.QVBoxLayout(editorDialog)
|
self.verticalLayout = QVBoxLayout(editorDialog)
|
||||||
|
self.verticalLayout.setObjectName(u"verticalLayout")
|
||||||
self.verticalLayout.setContentsMargins(-1, -1, -1, 5)
|
self.verticalLayout.setContentsMargins(-1, -1, -1, 5)
|
||||||
self.verticalLayout.setObjectName("verticalLayout")
|
self.editorWidget = QWidget(editorDialog)
|
||||||
self.editorWidget = QtWidgets.QWidget(editorDialog)
|
self.editorWidget.setObjectName(u"editorWidget")
|
||||||
self.editorWidget.setObjectName("editorWidget")
|
self.gridLayout = QGridLayout(self.editorWidget)
|
||||||
self.gridLayout = QtWidgets.QGridLayout(self.editorWidget)
|
self.gridLayout.setObjectName(u"gridLayout")
|
||||||
self.gridLayout.setContentsMargins(0, 0, 0, 0)
|
self.gridLayout.setContentsMargins(0, 0, 0, 0)
|
||||||
self.gridLayout.setObjectName("gridLayout")
|
self.label_1 = QLabel(self.editorWidget)
|
||||||
self.label_1 = QtWidgets.QLabel(self.editorWidget)
|
self.label_1.setObjectName(u"label_1")
|
||||||
self.label_1.setObjectName("label_1")
|
|
||||||
self.gridLayout.addWidget(self.label_1, 0, 0, 1, 1)
|
self.gridLayout.addWidget(self.label_1, 0, 0, 1, 1)
|
||||||
self.seriesLine = QtWidgets.QLineEdit(self.editorWidget)
|
|
||||||
self.seriesLine.setObjectName("seriesLine")
|
self.seriesLine = QLineEdit(self.editorWidget)
|
||||||
|
self.seriesLine.setObjectName(u"seriesLine")
|
||||||
|
|
||||||
self.gridLayout.addWidget(self.seriesLine, 0, 1, 1, 1)
|
self.gridLayout.addWidget(self.seriesLine, 0, 1, 1, 1)
|
||||||
self.label_2 = QtWidgets.QLabel(self.editorWidget)
|
|
||||||
self.label_2.setObjectName("label_2")
|
self.label_2 = QLabel(self.editorWidget)
|
||||||
|
self.label_2.setObjectName(u"label_2")
|
||||||
|
|
||||||
self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
|
self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
|
||||||
self.volumeLine = QtWidgets.QLineEdit(self.editorWidget)
|
|
||||||
self.volumeLine.setObjectName("volumeLine")
|
self.volumeLine = QLineEdit(self.editorWidget)
|
||||||
|
self.volumeLine.setObjectName(u"volumeLine")
|
||||||
|
|
||||||
self.gridLayout.addWidget(self.volumeLine, 1, 1, 1, 1)
|
self.gridLayout.addWidget(self.volumeLine, 1, 1, 1, 1)
|
||||||
self.label_3 = QtWidgets.QLabel(self.editorWidget)
|
|
||||||
self.label_3.setObjectName("label_3")
|
self.label_3 = QLabel(self.editorWidget)
|
||||||
|
self.label_3.setObjectName(u"label_3")
|
||||||
|
|
||||||
self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1)
|
self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1)
|
||||||
self.numberLine = QtWidgets.QLineEdit(self.editorWidget)
|
|
||||||
self.numberLine.setObjectName("numberLine")
|
self.numberLine = QLineEdit(self.editorWidget)
|
||||||
|
self.numberLine.setObjectName(u"numberLine")
|
||||||
|
|
||||||
self.gridLayout.addWidget(self.numberLine, 2, 1, 1, 1)
|
self.gridLayout.addWidget(self.numberLine, 2, 1, 1, 1)
|
||||||
self.label_4 = QtWidgets.QLabel(self.editorWidget)
|
|
||||||
self.label_4.setObjectName("label_4")
|
self.label_4 = QLabel(self.editorWidget)
|
||||||
|
self.label_4.setObjectName(u"label_4")
|
||||||
|
|
||||||
self.gridLayout.addWidget(self.label_4, 3, 0, 1, 1)
|
self.gridLayout.addWidget(self.label_4, 3, 0, 1, 1)
|
||||||
self.writerLine = QtWidgets.QLineEdit(self.editorWidget)
|
|
||||||
self.writerLine.setObjectName("writerLine")
|
self.writerLine = QLineEdit(self.editorWidget)
|
||||||
|
self.writerLine.setObjectName(u"writerLine")
|
||||||
|
|
||||||
self.gridLayout.addWidget(self.writerLine, 3, 1, 1, 1)
|
self.gridLayout.addWidget(self.writerLine, 3, 1, 1, 1)
|
||||||
self.label_5 = QtWidgets.QLabel(self.editorWidget)
|
|
||||||
self.label_5.setObjectName("label_5")
|
self.label_5 = QLabel(self.editorWidget)
|
||||||
|
self.label_5.setObjectName(u"label_5")
|
||||||
|
|
||||||
self.gridLayout.addWidget(self.label_5, 4, 0, 1, 1)
|
self.gridLayout.addWidget(self.label_5, 4, 0, 1, 1)
|
||||||
self.pencillerLine = QtWidgets.QLineEdit(self.editorWidget)
|
|
||||||
self.pencillerLine.setObjectName("pencillerLine")
|
self.pencillerLine = QLineEdit(self.editorWidget)
|
||||||
|
self.pencillerLine.setObjectName(u"pencillerLine")
|
||||||
|
|
||||||
self.gridLayout.addWidget(self.pencillerLine, 4, 1, 1, 1)
|
self.gridLayout.addWidget(self.pencillerLine, 4, 1, 1, 1)
|
||||||
self.label_6 = QtWidgets.QLabel(self.editorWidget)
|
|
||||||
self.label_6.setObjectName("label_6")
|
self.label_6 = QLabel(self.editorWidget)
|
||||||
|
self.label_6.setObjectName(u"label_6")
|
||||||
|
|
||||||
self.gridLayout.addWidget(self.label_6, 5, 0, 1, 1)
|
self.gridLayout.addWidget(self.label_6, 5, 0, 1, 1)
|
||||||
self.inkerLine = QtWidgets.QLineEdit(self.editorWidget)
|
|
||||||
self.inkerLine.setObjectName("inkerLine")
|
self.inkerLine = QLineEdit(self.editorWidget)
|
||||||
|
self.inkerLine.setObjectName(u"inkerLine")
|
||||||
|
|
||||||
self.gridLayout.addWidget(self.inkerLine, 5, 1, 1, 1)
|
self.gridLayout.addWidget(self.inkerLine, 5, 1, 1, 1)
|
||||||
self.label_7 = QtWidgets.QLabel(self.editorWidget)
|
|
||||||
self.label_7.setObjectName("label_7")
|
self.label_7 = QLabel(self.editorWidget)
|
||||||
|
self.label_7.setObjectName(u"label_7")
|
||||||
|
|
||||||
self.gridLayout.addWidget(self.label_7, 6, 0, 1, 1)
|
self.gridLayout.addWidget(self.label_7, 6, 0, 1, 1)
|
||||||
self.coloristLine = QtWidgets.QLineEdit(self.editorWidget)
|
|
||||||
self.coloristLine.setObjectName("coloristLine")
|
self.coloristLine = QLineEdit(self.editorWidget)
|
||||||
|
self.coloristLine.setObjectName(u"coloristLine")
|
||||||
|
|
||||||
self.gridLayout.addWidget(self.coloristLine, 6, 1, 1, 1)
|
self.gridLayout.addWidget(self.coloristLine, 6, 1, 1, 1)
|
||||||
|
|
||||||
|
|
||||||
self.verticalLayout.addWidget(self.editorWidget)
|
self.verticalLayout.addWidget(self.editorWidget)
|
||||||
self.optionWidget = QtWidgets.QWidget(editorDialog)
|
|
||||||
self.optionWidget.setObjectName("optionWidget")
|
self.optionWidget = QWidget(editorDialog)
|
||||||
self.horizontalLayout = QtWidgets.QHBoxLayout(self.optionWidget)
|
self.optionWidget.setObjectName(u"optionWidget")
|
||||||
|
self.horizontalLayout = QHBoxLayout(self.optionWidget)
|
||||||
|
self.horizontalLayout.setObjectName(u"horizontalLayout")
|
||||||
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
|
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
|
||||||
self.horizontalLayout.setObjectName("horizontalLayout")
|
self.statusLabel = QLabel(self.optionWidget)
|
||||||
self.statusLabel = QtWidgets.QLabel(self.optionWidget)
|
self.statusLabel.setObjectName(u"statusLabel")
|
||||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.MinimumExpanding)
|
sizePolicy = QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding)
|
||||||
sizePolicy.setHorizontalStretch(0)
|
sizePolicy.setHorizontalStretch(0)
|
||||||
sizePolicy.setVerticalStretch(0)
|
sizePolicy.setVerticalStretch(0)
|
||||||
sizePolicy.setHeightForWidth(self.statusLabel.sizePolicy().hasHeightForWidth())
|
sizePolicy.setHeightForWidth(self.statusLabel.sizePolicy().hasHeightForWidth())
|
||||||
self.statusLabel.setSizePolicy(sizePolicy)
|
self.statusLabel.setSizePolicy(sizePolicy)
|
||||||
self.statusLabel.setText("")
|
|
||||||
self.statusLabel.setObjectName("statusLabel")
|
|
||||||
self.horizontalLayout.addWidget(self.statusLabel)
|
self.horizontalLayout.addWidget(self.statusLabel)
|
||||||
self.okButton = QtWidgets.QPushButton(self.optionWidget)
|
|
||||||
self.okButton.setMinimumSize(QtCore.QSize(0, 30))
|
self.okButton = QPushButton(self.optionWidget)
|
||||||
icon1 = QtGui.QIcon()
|
self.okButton.setObjectName(u"okButton")
|
||||||
icon1.addPixmap(QtGui.QPixmap(":/Other/icons/convert.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
self.okButton.setMinimumSize(QSize(0, 30))
|
||||||
|
icon1 = QIcon()
|
||||||
|
icon1.addFile(u":/Other/icons/convert.png", QSize(), QIcon.Normal, QIcon.Off)
|
||||||
self.okButton.setIcon(icon1)
|
self.okButton.setIcon(icon1)
|
||||||
self.okButton.setObjectName("okButton")
|
|
||||||
self.horizontalLayout.addWidget(self.okButton)
|
self.horizontalLayout.addWidget(self.okButton)
|
||||||
self.cancelButton = QtWidgets.QPushButton(self.optionWidget)
|
|
||||||
self.cancelButton.setMinimumSize(QtCore.QSize(0, 30))
|
self.cancelButton = QPushButton(self.optionWidget)
|
||||||
icon2 = QtGui.QIcon()
|
self.cancelButton.setObjectName(u"cancelButton")
|
||||||
icon2.addPixmap(QtGui.QPixmap(":/Other/icons/clear.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
self.cancelButton.setMinimumSize(QSize(0, 30))
|
||||||
|
icon2 = QIcon()
|
||||||
|
icon2.addFile(u":/Other/icons/clear.png", QSize(), QIcon.Normal, QIcon.Off)
|
||||||
self.cancelButton.setIcon(icon2)
|
self.cancelButton.setIcon(icon2)
|
||||||
self.cancelButton.setObjectName("cancelButton")
|
|
||||||
self.horizontalLayout.addWidget(self.cancelButton)
|
self.horizontalLayout.addWidget(self.cancelButton)
|
||||||
|
|
||||||
|
|
||||||
self.verticalLayout.addWidget(self.optionWidget)
|
self.verticalLayout.addWidget(self.optionWidget)
|
||||||
|
|
||||||
|
|
||||||
self.retranslateUi(editorDialog)
|
self.retranslateUi(editorDialog)
|
||||||
QtCore.QMetaObject.connectSlotsByName(editorDialog)
|
|
||||||
|
QMetaObject.connectSlotsByName(editorDialog)
|
||||||
|
# setupUi
|
||||||
|
|
||||||
def retranslateUi(self, editorDialog):
|
def retranslateUi(self, editorDialog):
|
||||||
_translate = QtCore.QCoreApplication.translate
|
editorDialog.setWindowTitle(QCoreApplication.translate("editorDialog", u"Metadata editor", None))
|
||||||
editorDialog.setWindowTitle(_translate("editorDialog", "Metadata editor"))
|
self.label_1.setText(QCoreApplication.translate("editorDialog", u"Series:", None))
|
||||||
self.label_1.setText(_translate("editorDialog", "Series:"))
|
self.label_2.setText(QCoreApplication.translate("editorDialog", u"Volume:", None))
|
||||||
self.label_2.setText(_translate("editorDialog", "Volume:"))
|
self.label_3.setText(QCoreApplication.translate("editorDialog", u"Number:", None))
|
||||||
self.label_3.setText(_translate("editorDialog", "Number:"))
|
self.label_4.setText(QCoreApplication.translate("editorDialog", u"Writer:", None))
|
||||||
self.label_4.setText(_translate("editorDialog", "Writer:"))
|
self.label_5.setText(QCoreApplication.translate("editorDialog", u"Penciller:", None))
|
||||||
self.label_5.setText(_translate("editorDialog", "Penciller:"))
|
self.label_6.setText(QCoreApplication.translate("editorDialog", u"Inker:", None))
|
||||||
self.label_6.setText(_translate("editorDialog", "Inker:"))
|
self.label_7.setText(QCoreApplication.translate("editorDialog", u"Colorist:", None))
|
||||||
self.label_7.setText(_translate("editorDialog", "Colorist:"))
|
self.statusLabel.setText("")
|
||||||
self.okButton.setText(_translate("editorDialog", "Save"))
|
self.okButton.setText(QCoreApplication.translate("editorDialog", u"Save", None))
|
||||||
self.cancelButton.setText(_translate("editorDialog", "Cancel"))
|
self.cancelButton.setText(QCoreApplication.translate("editorDialog", u"Cancel", None))
|
||||||
from . import KCC_rc
|
# retranslateUi
|
||||||
|
|
||||||
|
|||||||
@@ -40,10 +40,7 @@ from PIL import Image
|
|||||||
from subprocess import STDOUT, PIPE
|
from subprocess import STDOUT, PIPE
|
||||||
from psutil import virtual_memory, disk_usage
|
from psutil import virtual_memory, disk_usage
|
||||||
from html import escape as hescape
|
from html import escape as hescape
|
||||||
try:
|
|
||||||
from PyQt5 import QtCore
|
|
||||||
except ImportError:
|
|
||||||
QtCore = None
|
|
||||||
from .shared import md5Checksum, getImageFileName, walkSort, walkLevel, sanitizeTrace, subprocess_run_silent
|
from .shared import md5Checksum, getImageFileName, walkSort, walkLevel, sanitizeTrace, subprocess_run_silent
|
||||||
from . import comic2panel
|
from . import comic2panel
|
||||||
from . import image
|
from . import image
|
||||||
|
|||||||
@@ -25,10 +25,6 @@ from shutil import rmtree, copytree, move
|
|||||||
from multiprocessing import Pool
|
from multiprocessing import Pool
|
||||||
from PIL import Image, ImageChops, ImageOps, ImageDraw
|
from PIL import Image, ImageChops, ImageOps, ImageDraw
|
||||||
from .shared import getImageFileName, walkLevel, walkSort, sanitizeTrace
|
from .shared import getImageFileName, walkLevel, walkSort, sanitizeTrace
|
||||||
try:
|
|
||||||
from PyQt5 import QtCore
|
|
||||||
except ImportError:
|
|
||||||
QtCore = None
|
|
||||||
|
|
||||||
|
|
||||||
def mergeDirectoryTick(output):
|
def mergeDirectoryTick(output):
|
||||||
|
|||||||
@@ -102,11 +102,11 @@ def dependencyCheck(level):
|
|||||||
missing = []
|
missing = []
|
||||||
if level > 2:
|
if level > 2:
|
||||||
try:
|
try:
|
||||||
from PyQt5.QtCore import qVersion as qtVersion
|
from PySide6.QtCore import qVersion as qtVersion
|
||||||
if StrictVersion('5.6.0') > StrictVersion(qtVersion()):
|
if StrictVersion('6.5.1') > StrictVersion(qtVersion()):
|
||||||
missing.append('PyQt 5.6.0+')
|
missing.append('PySide 6.5.1+')
|
||||||
except ImportError:
|
except ImportError:
|
||||||
missing.append('PyQt 5.6.0+')
|
missing.append('PySide 6.5.1+')
|
||||||
try:
|
try:
|
||||||
import raven
|
import raven
|
||||||
except ImportError:
|
except ImportError:
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
PyQt5>=5.6.0
|
PySide6>=6.5.1
|
||||||
Pillow>=5.2.0
|
Pillow>=5.2.0
|
||||||
psutil>=5.0.0
|
psutil>=5.9.5
|
||||||
requests>=2.31.0
|
requests>=2.31.0
|
||||||
python-slugify>=1.2.1
|
python-slugify>=1.2.1
|
||||||
raven>=6.0.0
|
raven>=6.0.0
|
||||||
# PyQt5-tools
|
|
||||||
mozjpeg-lossless-optimization>=1.1.2
|
mozjpeg-lossless-optimization>=1.1.2
|
||||||
natsort[fast]>=8.4.0
|
natsort[fast]>=8.4.0
|
||||||
distro
|
distro
|
||||||
|
|||||||
4
setup.py
4
setup.py
@@ -75,9 +75,9 @@ setuptools.setup(
|
|||||||
},
|
},
|
||||||
packages=['kindlecomicconverter'],
|
packages=['kindlecomicconverter'],
|
||||||
install_requires=[
|
install_requires=[
|
||||||
'PyQt5>=5.6.0',
|
'pyside6>=6.5.1',
|
||||||
'Pillow>=5.2.0',
|
'Pillow>=5.2.0',
|
||||||
'psutil>=5.0.0',
|
'psutil>=5.9.5',
|
||||||
'python-slugify>=1.2.1,<9.0.0',
|
'python-slugify>=1.2.1,<9.0.0',
|
||||||
'raven>=6.0.0',
|
'raven>=6.0.0',
|
||||||
'requests>=2.31.0',
|
'requests>=2.31.0',
|
||||||
|
|||||||
Reference in New Issue
Block a user