forked from Deepshift/DeepCreamPy
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprogressWindow.py
More file actions
155 lines (127 loc) · 5.67 KB
/
progressWindow.py
File metadata and controls
155 lines (127 loc) · 5.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# 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 PySide6
from PySide6.QtWidgets import (
QWidget, QHBoxLayout, QVBoxLayout, QGridLayout, QGroupBox,
QApplication, QMessageBox, QRadioButton, QPushButton,
QTextEdit, QLabel, QSizePolicy, QMainWindow, QProgressBar
)
from PySide6.QtGui import QAction, QGuiApplication
# 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()
self.center()
self.setWindowTitle("DeepCreamPy v2.2.0 Decensoring...")
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
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)
progress_Label_1 = QLabel(self)
progress_Label_1.move(50, 270)
progress_Label_1.setText("Decensor progress of all images")
progress_Label_1.resize(progress_Label_1.sizeHint())
progress_Label_2 = QLabel(self)
progress_Label_2.move(50, 300 + 50)
progress_Label_2.setText("Decensor progress of current image")
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()
def center(self):
qr = self.frameGeometry()
cp = QGuiApplication.primaryScreen().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
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)
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)
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)
def signal_ProgressBar_update_MAX_VALUE(self, msg, max):
# print msg for debugging
print(msg)
self.signal_image_decensor_ProgressBar.setMaximum(max)
def signal_ProgressBar_update_VALUE(self, msg, val):
# print msg for debugging
print(msg)
self.signal_image_decensor_ProgressBar.setValue(val)
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
# print("start run")
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 PySide6
pyqt = os.path.dirname(PySide6.__file__)
QApplication.addLibraryPath(os.path.join(pyqt, "plugins"))
app = QApplication(sys.argv)
ex = ProgressWindow(1, 1, debug = True)
ex.show()
sys.exit( app.exec() )