2019-10-21 08:07:23 +00:00
|
|
|
# window for showing progress while decensoring
|
|
|
|
# spliting windows by main to check Censor Types, Variations, ect will be better for
|
|
|
|
# understanding flow of code
|
|
|
|
|
|
|
|
import sys
|
|
|
|
import PySide2
|
2019-10-31 21:22:10 +00:00
|
|
|
from PySide2.QtWidgets import (QApplication, QMainWindow, QDesktopWidget, QPushButton,
|
2019-10-21 08:07:23 +00:00
|
|
|
QToolTip, QLabel, QProgressBar, QAction, qApp)
|
|
|
|
# from PyQt5.QtCore import QThread
|
|
|
|
from signals import Signals
|
|
|
|
import threading
|
|
|
|
import time
|
|
|
|
|
|
|
|
class ProgressWindow(QMainWindow):
|
|
|
|
# debug for setting UI
|
|
|
|
def __init__(self, MainWindow, decensor, debug = False):
|
|
|
|
super().__init__()
|
|
|
|
self.width = 700
|
|
|
|
self.height = 500
|
|
|
|
self.resize(self.width, self.height)
|
|
|
|
self.initUI()
|
|
|
|
|
|
|
|
# signal class that could share update progress ui from decensor class (Decensor)
|
|
|
|
self.setSignals()
|
2019-10-31 21:22:10 +00:00
|
|
|
|
|
|
|
self.center()
|
|
|
|
self.setWindowTitle("DeepCreamPy v2.2.0 Decensoring...")
|
2019-10-21 08:07:23 +00:00
|
|
|
self.show()
|
|
|
|
|
|
|
|
if not debug:
|
|
|
|
print("not debug")
|
|
|
|
# decensor class initialized with options selected from MainWindow
|
|
|
|
self.decensor = decensor
|
|
|
|
self.decensor.signals = self.signals
|
|
|
|
|
|
|
|
# to go back to MainWindow after finshed decensoring
|
|
|
|
self.mainWindow = MainWindow
|
|
|
|
|
|
|
|
self.runDecensor()
|
|
|
|
|
|
|
|
|
|
|
|
def initUI(self):
|
|
|
|
'''
|
|
|
|
Must Todo UI:
|
|
|
|
1. add goto decensored file button
|
|
|
|
2. Two progress bars
|
|
|
|
2-1. total images to decenesor (images in ./decensor_input)
|
|
|
|
2-2. current decensoring image's censored area (example marmaid image in DCPv2, 2 / 17)
|
|
|
|
3. go back to main button
|
|
|
|
|
|
|
|
Could Do UI:
|
|
|
|
1. showing live image decensoring (decensored one by one)
|
|
|
|
'''
|
|
|
|
# progress bar showing images left to be decensored
|
|
|
|
def setProgressBar():
|
|
|
|
bar_X = 50
|
|
|
|
bar_Y = 300
|
|
|
|
bar_width = 600
|
|
|
|
bar_height = 30
|
|
|
|
|
|
|
|
# images waiting to be decensored
|
|
|
|
self.total_images_ProgressBar = QProgressBar(self)
|
|
|
|
# setGeometry(left top x cordinate, left top y cordinate, width, height)
|
|
|
|
self.total_images_ProgressBar.setGeometry(bar_X, bar_Y, bar_width,bar_height )
|
|
|
|
self.total_images_ProgressBar.setMaximum(100)
|
|
|
|
self.total_images_ProgressBar.setValue(0)
|
|
|
|
|
|
|
|
# showing progress of decensored area
|
2019-10-31 21:22:10 +00:00
|
|
|
self.signal_image_decensor_ProgressBar = QProgressBar(self)
|
|
|
|
self.signal_image_decensor_ProgressBar.setGeometry(bar_X, bar_Y+80, bar_width,bar_height )
|
|
|
|
self.signal_image_decensor_ProgressBar.setMaximum(100)
|
|
|
|
self.signal_image_decensor_ProgressBar.setValue(0)
|
2019-10-21 08:07:23 +00:00
|
|
|
|
|
|
|
progress_Label_1 = QLabel(self)
|
|
|
|
progress_Label_1.move(50, 270)
|
2019-10-31 21:22:10 +00:00
|
|
|
progress_Label_1.setText("Decensor progress of all images")
|
2019-10-21 08:07:23 +00:00
|
|
|
progress_Label_1.resize(progress_Label_1.sizeHint())
|
|
|
|
|
|
|
|
progress_Label_2 = QLabel(self)
|
|
|
|
progress_Label_2.move(50, 300 + 50)
|
2019-10-31 21:22:10 +00:00
|
|
|
progress_Label_2.setText("Decensor progress of current image")
|
2019-10-21 08:07:23 +00:00
|
|
|
progress_Label_2.resize(progress_Label_2.sizeHint())
|
|
|
|
|
|
|
|
self.progress_status_LABEL = QLabel(self)
|
|
|
|
self.progress_status_LABEL.move(100, 100)
|
|
|
|
self.progress_status_LABEL.setText("Decensoring...")
|
|
|
|
self.progress_status_LABEL.resize(self.progress_status_LABEL.sizeHint())
|
|
|
|
|
|
|
|
setProgressBar()
|
|
|
|
|
2019-10-31 21:22:10 +00:00
|
|
|
def center(self):
|
|
|
|
qr = self.frameGeometry()
|
|
|
|
cp = QDesktopWidget().availableGeometry().center()
|
|
|
|
qr.moveCenter(cp)
|
|
|
|
self.move(qr.topLeft())
|
|
|
|
|
2019-10-21 08:07:23 +00:00
|
|
|
def setSignals(self):
|
|
|
|
self.signals = Signals()
|
|
|
|
# set signal variable name same as method name preventing confusion
|
|
|
|
self.signals.total_ProgressBar_update_MAX_VALUE.connect(self.total_ProgressBar_update_MAX_VALUE)
|
|
|
|
self.signals.total_ProgressBar_update_VALUE.connect(self.total_ProgressBar_update_VALUE)
|
2019-10-31 21:22:10 +00:00
|
|
|
self.signals.signal_ProgressBar_update_MAX_VALUE.connect(self.signal_ProgressBar_update_MAX_VALUE)
|
|
|
|
self.signals.signal_ProgressBar_update_VALUE.connect(self.signal_ProgressBar_update_VALUE)
|
2019-10-21 08:07:23 +00:00
|
|
|
self.signals.update_progress_LABEL.connect(self.update_progress_LABEL)
|
|
|
|
|
|
|
|
# total_images_to_decensor_ProgressBar
|
|
|
|
def total_ProgressBar_update_MAX_VALUE(self, msg, max):
|
|
|
|
# print msg for debugging
|
|
|
|
print(msg)
|
|
|
|
self.total_images_ProgressBar.setMaximum(max)
|
|
|
|
|
|
|
|
def total_ProgressBar_update_VALUE(self, msg, val):
|
|
|
|
# print msg for debugging
|
|
|
|
print(msg)
|
|
|
|
self.total_images_ProgressBar.setValue(val)
|
|
|
|
|
2019-10-31 21:22:10 +00:00
|
|
|
def signal_ProgressBar_update_MAX_VALUE(self, msg, max):
|
2019-10-21 08:07:23 +00:00
|
|
|
# print msg for debugging
|
|
|
|
print(msg)
|
2019-10-31 21:22:10 +00:00
|
|
|
self.signal_image_decensor_ProgressBar.setMaximum(max)
|
2019-10-21 08:07:23 +00:00
|
|
|
|
2019-10-31 21:22:10 +00:00
|
|
|
def signal_ProgressBar_update_VALUE(self, msg, val):
|
2019-10-21 08:07:23 +00:00
|
|
|
# print msg for debugging
|
|
|
|
print(msg)
|
2019-10-31 21:22:10 +00:00
|
|
|
self.signal_image_decensor_ProgressBar.setValue(val)
|
2019-10-21 08:07:23 +00:00
|
|
|
|
|
|
|
def update_progress_LABEL(self, msg, status):
|
|
|
|
print(msg)
|
|
|
|
self.progress_status_LABEL.setText(status)
|
|
|
|
self.progress_status_LABEL.resize(self.progress_status_LABEL.sizeHint())
|
|
|
|
|
|
|
|
def runDecensor(self):
|
|
|
|
# start decensor in other thread, preventing UI Freezing
|
2019-10-31 21:22:10 +00:00
|
|
|
# print("start run")
|
2019-10-21 08:07:23 +00:00
|
|
|
self.decensor.start()
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
# only use for debuging window
|
|
|
|
|
|
|
|
import os
|
|
|
|
# you could remove this if statement if there's no error without this
|
|
|
|
if os.name == 'nt':
|
|
|
|
import PySide2
|
|
|
|
pyqt = os.path.dirname(PySide2.__file__)
|
|
|
|
QApplication.addLibraryPath(os.path.join(pyqt, "plugins"))
|
|
|
|
app = QApplication(sys.argv)
|
|
|
|
ex = ProgressWindow(1, 1, debug = True)
|
|
|
|
ex.show()
|
|
|
|
sys.exit( app.exec_() )
|